Thanks for pointing this out Kevin. I've passed this onto the engineers for
review.

Best
@themattharris
Developer Advocate, Twitter
http://twitter.com/themattharris


On Fri, Dec 3, 2010 at 11:10 AM, Kevin Watters <kevinwatt...@gmail.com>wrote:

> Beware the natural order comparison code linked above.
> natcompare(10705970246197248, 9999625058521088) returns -1
> incorrectly. See https://gist.github.com/727383 for an example.
>
>
> On Nov 23, 12:26 pm, Matt Harris <thematthar...@twitter.com> wrote:
> > Hey everyone,
> >
> > You may remember a few weeks ago we launched Snowflake having encouraged
> you
> > all to check your code to make sure you were able to handle the larger
> > numbers it will generate. For those of you whose code couldn't handle the
> > longer numbers we created String versions of the IDs in our JSON
> responses,
> > identified by an "_str" at the end of their name - for example the Tweet
> ID
> > in the JSON response exists twice: once as a number (id) and once as a
> > string (id_str). For API requests which returned arrays of IDs we added
> the
> > parameter "stringify_ids" to force all IDs to Strings. For example:
> >
> https://api.twitter.com/1/followers/ids.json?cursor=-1&stringify_ids=1
> >
> > We're sending this reminder because at 2.14pm PDT (10.14pm UTC) this
> Sunday,
> > 28th November 2010 Snowflake IDs will reach 53bits.
> >
> > Only Tweet IDs are generated by Snowflake. This means only Tweets,
> Retweets,
> > Mentions and Replies are affected this weekend. Things like Saved
> Searches,
> > Users and Direct Messages are not Snowflaked.
> >
> > If you haven't converted your code to use the String version you should
> do
> > so immediately. Once the IDs reach 53bits Javascript, and some other
> > languages, misrepresent the numbers. As an example: 2**53 =
> 9007199254740992
> >
> > Representing this in Javascript gives....
> >
> > > (9007199254740992).toString()
> > "9007199254740992"
> > > (9007199254740993).toString()
> > "9007199254740992"
> > > (9007199254740994).toString()
> > "9007199254740994"
> > > (9007199254740995).toString()
> > "9007199254740996"
> > > (9007199254740999).toString()
> >
> > "9007199254741000"
> >
> > You can see in this example that the Tweet IDs are being misrepresented
> in
> > their converted state. We've provided String versions of all of our IDs,
> > even those which are not using Snowflake IDs. We've done this to make it
> > easier for you to convert your code. Even if your code can handle the
> longer
> > numbers you may want to convert to Strings anyway. Doing so will reduce
> the
> > risk of problems should you extend your code with a language or library
> that
> > doesn't support >53bit numbers.
> >
> > If you are using Javascript you may find the following code samples
> helpful.
> > They were put together by our web team as an example approach to the
> problem
> > of capturing the String version of the IDs, and sorting them.
> >
> > The first gist looks for the new *_str field and uses it if it's there.
>  If
> > it's missing, the original field is used but stringified first. This
> doesn't
> > make IDs >53bit safe for you but but does mean you can use String IDs for
> > all other attributes without having to check for them first.
> >
> > The second code sample using the library natcompare.js which performs
> > 'natural order' comparisons of strings in JavaScript. It was written by
> > Kristof Coomans of the SCK-CEN (Belgian Nucleair Research Centre).
> >    http://gist.github.com/637624
> >
> > There has been some great discussion about this in the developer forums,
> > including some questions and answers about the change. You can read more
> > here:
> >
> > http://groups.google.com/group/twitter-development-talk/browse_thread...
> >
> > Best,
> > @themattharris
> > Developer Advocate, Twitter
>
> --
> Twitter developer documentation and resources: http://dev.twitter.com/doc
> API updates via Twitter: http://twitter.com/twitterapi
> Issues/Enhancements Tracker:
> http://code.google.com/p/twitter-api/issues/list
> Change your membership to this group:
> http://groups.google.com/group/twitter-development-talk
>

-- 
Twitter developer documentation and resources: http://dev.twitter.com/doc
API updates via Twitter: http://twitter.com/twitterapi
Issues/Enhancements Tracker: http://code.google.com/p/twitter-api/issues/list
Change your membership to this group: 
http://groups.google.com/group/twitter-development-talk

Reply via email to