Monday, October 13, 2008

Twitter Admits Defeat, And I Kinda Harsh Them On It

Because my circle of friends and need for self-expression does not fall neatly along the lines of brand silos like my blogging and Twitter, I created AutoPostBot. AuroPostBot is a programs that I have running on my print and storage server here (an old Fujistu subnotebook running Win2K) that monitors my Twitter feed and reposts it, almost live, to my personal blog.

Why? Because I wanted to see what would happen. It has been instructive, but I can discuss that later. Engineering-wise, I had a choice when I made the bot: how does AutoPostBot get my Twitter entries ('tweets')? Should it check my Twitter account for new entries every reasonable amount of time ('pull the tweets') or listen to some Twitter channel to be told when a new entry happens ('get tweets pushed')?

If I want my tweets to appear on my blog nearly simultaneous as they are published on Twitter, using pull would mean having to check the feed very often, and 99.9% of the checks would not show a new tweet, I Twitter once a day or so at most. It is pretty wasteful of network resources. And for AutoPostBot to get them pushed means AutoPostBot needs to find some channel to listen to that sends updates. Well, Twitter supposedly allows you to subscribe through IM, so AutoPostBot could implement some IM chat client, sign up to Twitter to be told about updates of my Twitter feed, and repost it. Seems pretty standard, robust. Many people have implemented chat bots that open IM channels and listen. This shouldn't be too hard.

Except that Twitter has never been able to maintain a reliable IM channel, either to send your tweets, or receive update from other Twitter users from. Never worked. Always had 'outages' or worse, when Twitter would send me an IM with tweet of someone I was following when I was not at my desk, my chat client would respond with 'I am not at my desk' (very common for chat clients to do) and Twitter would think that was an update from me and post that as my tweet. Which was just dumb, I'd have all these tweets basically saying I was not at my desk. Still, that IM was a communication channel was a major bullet point for Twitter, even if it never worked over AIM every time I tried for months and months and was spotty on Jabber. I therefore had no choice but code AutoPostBot to pull my Twitter feed every minute, and it is one of the reasons I didn't open AutoPostBot up for reposting tweets from other Twitters to their other blogs: if it had become somewhat successful, AutoPostBot could no longer have been a hobby project on my 900MHz CPU Win2K box because it would have had to pull too many things too often. I wanted IM, I wanted updates to be pushed to AutoPostBot, no more network traffic than necessary.

Well, Twitter has thrown in the towel on IM. This after their SMS support has already become spotty, or non-existent in many places outside the US. Twitter wants to be this exchange of tiny snippets of information, a dialog of clipped thoughts, and its success shows there is a place and need for that. But if Twitter keeps cutting down the ways it allows itself to be accessed or the information it generates to spread, it's just gonna be another silo site of subscribers, a destination instead of pervasive service. Right now almost every phone platform has a custom client to access Twitter with -- which means it has uniquely penetrated the cellphone market -- but that is still not as integrated into mobile and chat life as SMS and IM.

What I do not understand, and Twitter will not reveal, is why this whole IM thing is so damn hard. If sexbot cam spammers can IM me on MSN 20 times a day, and since I am not that special, therefore millions of other IM users are being targeted as well, why can't Twitter get its IM act together? Not even then on the closed AIM network, but even the open-source Jabber / GoogleTalk protocol then? True to its current communication strategy about its rickety platform, Twitter will, again, say nothing more than their standard verbiage of "It's hard", "What we originally built isn't ready to be actually used by you lot", "We know you want it", "It's hard and we don't have people".

I think this communication strategy by now is failing, for the simple reason that, in the lack of actual information about the engineering challenges, it is now just coming across as whiny. Yes, start-up systems are not up for full-on production, but that's why you replace them. Twitter is not running a complex financial modeling system, Twitter is not doing intense transcoding and rescaling for displaying video streams, no, Twitter is entering 140-character messages into a database and generating very simple pages and datastreams from them. Yes, for millions of users at the same time, I acknowledge that. I am not saying Twitter is simple, but I am saying that nothing Twitter is showing to the world right now is convincing as requiring huge creative breakthroughs, just solid management and engineering.

I don't want to believe that Twitter is anything less than the usual under-resourced in the computing industry. I know about having to do a lot with very little. It's just that that is becoming harder and harder to believe since Twitter is such a Silicon-Valley darling and yet continues to keep losing so much core functionality which, from what I can see here from outside, could be done by two mid-level software engineers with a good understanding of open source IM stacks and someone with a Ph.D. or experience equivalent in distributing workloads among CPUs, in 6 months tops -- and Twitter has had serious IM issues for longer than 6 months. Either Twitter tells us what the real problems are, or they look like morons.