Roll with the changes

Let’s see, where was I? Oh, yes:

My feeling is that the LinkedIn and Instagram examples are special cases that have more to do with tribal warfare among social media companies than with a true crackdown on third-party clients.

20-25% of tweets come from third-party clients… I think that’s a big enough number to make Twitter hold off on lowering the boom on Echophon and HootSuite and their kin.

You’d think Twitter could allow a decent interval to pass before making me look like an idiot.

Rather than trying to write a narrative of Twitter’s latest API announcement and the ensuing storm1 of criticism, I’ll just list a few links :

The immediate reaction among the Twitterati was best summed up by Mike Monteiro:

Dick Costolo about to address the protestors outside Twitter headquarters. #twitpocalypse



  — Mike Monteiro (@Mike_FTW) Thu Aug 16 2012 8:00 PM

Paul Haddad of Tapbots, who has a lot more at stake than the “sky is falling” pundits and bloggers, had this to say:

There’s been a lot of fear, uncertainty and doubt generated by Twitter’s latest announcement. I wanted to let everyone know that the world isn’t ending, Tweetbot for Mac is coming out soon, Tweetbot for iOS isn’t going anywhere.

I don’t know whether this is a sober assessment, spin, or whistling in the dark. One thing I wouldn’t be surprised to learn is that third party apps sell briskly over the next few days, as users decide to finally buy that app they’ve been hearing about before Twitter’s cap shuts them off. Stephen Fry recommended that this morning:

Better get #twitterific #tweetbot or #tweetdeck NOW. @twitterapi being slammed shut. thenextweb.com/twitter/2012/0… Bad show.
  — Stephen Fry (@stephenfry) Fri Aug 17 2012 4:22 AM

Overall, I’d say reports of the death of third party Twitter clients are premature, but Twitter has certainly been clear that it doesn’t like them and doesn’t want to see any more crop up.2 My bigger worry is that third party clients will live on, but because of the new Design Requirements, they’ll end up looking so much alike, and so much like Twitter’s own offerings, that they won’t be interesting anymore.

As for my own single-user client, Dr. Twoot, I’m not especially concerned about its survival. It works fine now and, because it uses OAuth for all its API calls, it will continue to work after unauthorized calls are banned. Dr. Twoot doesn’t comply with the Design Requirements and never will, but it’s orders of magnitude too small for Twitter to bother with. Even if, by some strange set of circumstances, Twitter decides to revoke its API privileges, I’ll move on to something else. I certainly prefer Dr. Twoot to the other desktop Twitter clients I’ve used, but I’m flexible.

More concerning to me is what happens to Blackbirdpy, the set of scripts I use to embed and display tweets here on ANIAT. Last night, I rewrote the Python script (which I forked from Jeff Miller’s original) to use authentication, so it will continue to work, but the styleTweets JavaScript/jQuery function, which accesses the API to grab the tweeter’s avatar, background image, and color scheme doesn’t use authentication, and I don’t think I have the JS chops to get it to do so. And even if I did, the API would be queried with every visit; a popular post with 2-3 tweets would exhaust the rate limits.

As best I can tell, the only two ways to get around this problem and still display embedded tweets with the style I want are:

  1. Copy the images to my server when I write the post and serve them from there. This, I suspect, would not be looked upon favorably by Twitter, even if it’s not explicitly barred, and I’m not sure I want to start storing other people’s images.
  2. Use Twitter’s official method for embedding tweets. This is certainly the path of least resistance, but I don’t like the way the tweet is rendered and I don’t like the possibility of my readers being tracked by Twitter just because I chose to embed a tweet.

So sometime in the next few months I’ll go into the blog template and remove the lines that import and run styleTweets. The result won’t be as fun, but it’ll look OK, similar to how embedded tweets currently look if you read ANIAT via RSS. Here’s a screenshot of the Monteiro tweet as rendered without styleTweets:

Monteiro tweet

Of course, Twitter won’t be happy with this because it violates several of the Display Requirements for individual tweets:

On the positive side, the timestamp is displayed just the way Twitter wants.

Twitter can’t stop me from displaying tweets this way, but it can stop me from using its API to do so. Again, I’m way too small a fish for Twitter to bother with, but if they do revoke the authentication credentials I use with Blackbirdpy, I can always gather the same information through screen scraping.

You might argue that screen scraping is a terrible way to get the information because Twitter can change the layout of a tweet anytime it wants.

Yep, just like the API.


  1. Alternate title for this post: “Ridin’ the Storm Out.” “Keep Pushin’” would’ve worked, too. It’s REO and dropped gs all the way down. 

  2. Twitter made this point explicitly last year, which leads me to question Tapbots’ decision to develop a Mac version of Tweetbot in this hostile environment. Maybe they think Mac users are so desperate for a good Twitter client (one that doesn’t blend in mentions and direct messages like Twitterific) that they’ll clamor to buy Tweetbot despite its questionable longevity. And if Twitter does pull the plug soon, Tapbots will no ongoing support costs. Crazy like a fox, maybe. 

  3. Of all the design requirements, this is the one that irritates me the most. An individual tweet embedded in a web page is a quotation, and quotations are traditionally printed with the attribution after the quote itself.