This is a rare case.  Without going in to gory details of caching and the
horrors that lie within, suffice to say that looking at a very very heavily
trafficked timeline will show different behavior than less heavily
trafficked ones.

  ---Mark

http://twitter.com/mccv


On Wed, Mar 17, 2010 at 12:31 PM, MaDeuce <k...@east.fm> wrote:

> Mark, thanks for the reply.  I understand it from the aspect of
> convenience, however, I still don't understand it in terms of actual
> behavior.
>
> I performed an experiment with with a fairly active timeline.  I
> grabbed 20 recent (less than one week old) status entries and 20 older
> (about 11 months old) status entries from the timeline.  A python/
> tweepy code snippet and the resulting output is at the bottom of this
> post.
>
> In the recent status entries, the user data is invariant, as I would
> expect from your original response in this thread.  However, the user
> data is different in almost all of the older status entries.  In the
> latter case, for example, the statuses_count, followers_count, and
> friends_count all increase monotonically.
>
> This leads me to conclude that, at one time, the user information
> associated with a status entry was the user information which was
> current at the time of the creation of that entry.  I assume that, at
> some point, the implementation changed to the behavior you describe,
> namely that the current user information is always returned for
> statuses created after the change in the implementation.
>
> I also conclude that the behavior I see w.r.t. the older statuses is
> actually a bug.  Is that correct?
>
> Sorry to be so picky about this, but this behavior is relevant to an
> application that I'm working on.
>
> Thanks for your help,
> Kenneth
>
> def info(status) :
>    dfmt = '%Y%m%d:%H%M%S'
>    s    = status
>    u    = status.user
>    i     = '%d, %s, <%.5s...>, ' % (s.id,
> s.created_at.strftime(dfmt), s.text)
>    i   += '%d, %d %s, %d, %d'   % (u.id, u.statuses_count,
> u.created_at.strftime(dfmt),
>                                    u.followers_count,
> u.friends_count)
>    return i
>
> uid  = 'aplusk'
> mids = ['1613771842', '10482537035']
> columns  = 'StatusID, StatusDate, StatusText'
> columns += ', UserID, UserStatusCount, UserDate, UserFllowersCount,
> UserFriendsCount'
> print columns
> for mid in mids :
>    for page in tweepy.Cursor(api.user_timeline, id=uid,
> max_id=mid).pages(1) :
>        for status in page :
>            print info(status)
>
>
> StatusID, StatusDate, StatusText, UserID, UserStatusCount, UserDate,
> UserFllowersCount, UserFriendsCount
> 1613771842, 20090425:164237, <@Heat...>, 19058681, 4910
> 20090116:074006, 4658089, 331
> 1613761492, 20090425:164103, <@DACh...>, 19058681, 4910
> 20090116:074006, 4658089, 331
> 1613685079, 20090425:162946, <I don...>, 19058681, 4910
> 20090116:074006, 4658089, 331
> 1613669960, 20090425:162730, <@alun...>, 19058681, 4910
> 20090116:074006, 4658089, 331
> 1613665415, 20090425:162651, <Need ...>, 19058681, 4910
> 20090116:074006, 4658089, 331
> 1613566238, 20090425:161154, <3,000...>, 19058681, 4910
> 20090116:074006, 4658089, 331
> 1613515652, 20090425:160421, <RT @b...>, 19058681, 4910
> 20090116:074006, 4658089, 331
> 1613440226, 20090425:155309, <@botn...>, 19058681, 4910
> 20090116:074006, 4658089, 331
> 1613413880, 20090425:154904, <@KJR1...>, 19058681, 4910
> 20090116:074006, 4658089, 331
> 1613360994, 20090425:154051, <We ca...>, 19058681, 4910
> 20090116:074006, 4658089, 331
> 1610749076, 20090425:050224, <a hot...>, 19058681, 4910
> 20090116:074006, 4658089, 331
> 1610687590, 20090425:045058, <Every...>, 19058681, 4910
> 20090116:074006, 4658089, 331
> 1610289051, 20090425:034332, <My da...>, 19058681, 4910
> 20090116:074006, 4658089, 331
> 1610187822, 20090425:032751, <Feeli...>, 19058681, 4910
> 20090116:074006, 4658089, 331
> 1606835090, 20090424:195513, <Have ...>, 19058681, 4910
> 20090116:074006, 4656357, 331
> 1606563785, 20090424:192317, <"send...>, 19058681, 4910
> 20090116:074006, 4657011, 331
> 1606167603, 20090424:183626, <way t...>, 19058681, 4910
> 20090116:074006, 4658089, 331
> 1604521571, 20090424:152440, <twitt...>, 19058681, 4910
> 20090116:074006, 4658089, 331
> 1604292683, 20090424:145837, <this ...>, 19058681, 4910
> 20090116:074006, 4658089, 331
> 1604224716, 20090424:145044, <@mimi...>, 19058681, 4910
> 20090116:074006, 4658089, 331
> 10482537035, 20100314:195924, <@usta...>, 19058681, 4884
> 20090116:074006, 4648824, 329
> 10482253077, 20100314:195136, <Just ...>, 19058681, 4883
> 20090116:074006, 4648825, 329
> 10481776533, 20100314:193841, <@ciar...>, 19058681, 4882
> 20090116:074006, 4648804, 329
> 10481646817, 20100314:193508, <looki...>, 19058681, 4881
> 20090116:074006, 4648804, 329
> 10480208987, 20100314:185739, <how i...>, 19058681, 4880
> 20090116:074006, 4648735, 329
> 10463774628, 20100314:093345, <Don't...>, 19058681, 4905
> 20090116:074006, 4653754, 330
> 10453515324, 20100314:035050, <ok th...>, 19058681, 4878
> 20090116:074006, 4646941, 329
> 10434802987, 20100313:192140, <This ...>, 19058681, 4878
> 20090116:074006, 4647352, 329
> 10432787211, 20100313:182511, <go #t...>, 19058681, 4876
> 20090116:074006, 4645494, 329
> 10410464418, 20100313:060546, <At th...>, 19058681, 4875
> 20090116:074006, 4644465, 329
> 10408735854, 20100313:051144, <@Will...>, 19058681, 4874
> 20090116:074006, 4644057, 329
> 10407563511, 20100313:043821, <doing...>, 19058681, 4873
> 20090116:074006, 4643987, 329
> 10403562181, 20100313:025442, <RT @k...>, 19058681, 4872
> 20090116:074006, 4643809, 329
> 10388019450, 20100312:201421, <hangi...>, 19058681, 4871
> 20090116:074006, 4642663, 329
> 10386006688, 20100312:192020, <Untit...>, 19058681, 4870
> 20090116:074006, 4642574, 329
> 10386002930, 20100312:192014, <Whist...>, 19058681, 4869
> 20090116:074006, 4642574, 329
> 10355922883, 20100312:041052, <Start...>, 19058681, 4868
> 20090116:074006, 4640695, 329
> 10355687408, 20100312:040432, <It ha...>, 19058681, 4867
> 20090116:074006, 4640693, 329
> 10342019314, 20100311:220818, <RT @k...>, 19058681, 4866
> 20090116:074006, 4639648, 327
> 10340671668, 20100311:213250, <got i...>, 19058681, 4865
> 20090116:074006, 4639556, 327
>
>
> On Mar 17, 12:27 pm, Mark McBride <mmcbr...@twitter.com> wrote:
> > The short answer is convenience for developers.  In most cases showing
> > information about a tweet isn't enough -- it needs to be augmented with
> user
> > data.  Rather than require a separate call to retrieve that user data (or
> > building a cache of user object data on the client side) we provide that
> > data inline for all statuses.
> >
> > In places like home_timeline and friends_timeline this inclusion of full
> > user objects is extremely useful, and from an efficiency standpoint
> probably
> > not too bad in the common case.  In the case of something like
> user_timeline
> > it is inefficient.  There are three solutions here
> >
> > 1) Never populate user objects
> > 2) Sometimes populate user objects
> > 3) Always populate user objects
> >
> > We've decided on 3 as the best blend of usefulness and efficiency for
> now.
> >  In the future we may revisit providing more compact forms of this data.
> >
> >   ---Mark
> >
> > http://twitter.com/mccv
> >
>

Reply via email to