Last week a another change to Twitter caused me problems with my personal project TwitBlock. For the impatient, see my Google groups post about it. (It didn’t go down very well).
If you’re a Twitter user, you’re probably familiar with this image:
It is/was the default profile image for users that have not uploaded a custom avatar. You may also have noticed last week that Twitter has introduced a new version. Actually they they made seven of them in different colours:
At least I think they made seven; I can’t find any more, but I can’t find any official document stating how many are out there either.
So what?
So … TwitBlock crawls Twitter for duplicate profile pics to help identify spam accounts. The app needs to know what images are the default ones, because otherwise it will penalize people heavily for having what appears to be the same image as thousands of other people.
This relies rather delicately on factors that are liable to change and that aren’t strictly a part of the developer API, so I have to keep a close eye on things. I concede this is not a very robust solution, and I certainly wouldn’t base a commercial product around such weak “technology”. In fact I’m not sure I’d base a commercial product around Twitter at all.
I get a lot of emails and DMs from people telling me that they’ve received errors using TwitBlock. Almost always this is due to the Twitter API failing to respond – either timing out or sending back some HTTP error. It’s quite embarrassing, and I can only imagine how much worse this would be if people were paying for a Twitter-based service.
A Twitter app doesn’t just rely on the API, it relies on everything that makes up the Twitter service. This includes its full feature set and its hardware infrastructure. I am of the opinion that the above-described profile image change was significant enough that Twitter should have documented the change in advance. Facebook do a good job of addressing the community far in advance of changes, and I think this is yet another indicator that Twitter is out of its depth.