Birds, Ducks and Robots

When Apple shipped the original iPhone back in 2007, Steve Jobs famously said the company was offering a “sweet” solution for developers: web apps. The original iPhone didn’t have the App Store, but instead a web page on that listed the most popular web apps tailored for the iPhone.

Being an Apple platform developer, I spent time with my friend and designer Robert Andersen to build PocketTweets, one of the original (and popular) Twitter clients for the iPhone.

When Apple announced and delivered the AppStore, it was obvious to us that PocketTweets as a web app was no longer a viable solution for iPhone users. Even we no longer wanted to use it when there were native clients coming that performed better and integrated deeper into the platform. That’s when I switched to Twitterrific.

Twitterrific was an amazing demo of what was possible with the original iPhone SDK. It was one of the first apps that had all the fit and polish of an app out of Cupertino, but built by people I knew and respected on the outside. Unfortunately, I have never been a fan of Twitterrific’s unified timeline that mixes your timeline, mentions and direct messages all into a single stream.

Personally, the unified timeline wasn’t feasible for me with a common Twitter name of @justin as I was inundated with hundreds of misfired tweets a day. Professionally, I have always found the experience of having your direct messages integrated into the main timeline to be disorienting and confusing. I was always gun-shy sending and replying to direct messages in Twitterrific because I was always had that moment of panic where I wondered whether the message sent publicly or privately. When Buzz Andersen released Birdfeed, I instantly switched.

Birdfeed was the first, and only, Twitter client that truly clicked with how my brain works. It wasn’t the most feature packed client on the market, but it had a thoughtful interface, a navigation hierarchy that made sense, and (most importantly) I never noticed I was using it.

When Birdfeed was sold to Brizzly and subsequently murdered I was sad and again without a client that I could call my own. Luckily, Tweetie was there to be my rebound.

Whereas Birdfeed was the Pulp or Velvet Underground of iPhone Twitter clients, Tweetie was the Rolling Stones. It had the most users, was insanely popular and did a lot of great things. I never loved Tweetie like I loved Birdfeed, but I didn’t mind using it and came to mostly enjoy it.

After Tweetie was acquired by Twitter Inc. and rebranded as Twitter for iPhone I slowly stopped enjoying the app. First it was small things like removing power user things such as TextExpander touch support. Next it was putting more focus on things relevant to Twitter’s bottom line more than my use of the service: trending topics and top tweets. Next, the infamous #dickbar.

The final straw with Twitter for iPhone was the newly released redesign that doesn’t look or feel much like the Tweetie product that it started its life as. The new version of the Twitter app isn’t a terrible app, but it’s neither a great app, nor one that is designed with me in mind. The de-emphasis on direct messages and lists in favor of “Discovery” is a sure sign that the app isn’t for me. I visit Twitter to catch up on the news and happenings that are relevant to my friends I follow. Discover has never shown me anything I would consider relevant to my personal interests.

I tried to put aside my frustration with the changes in Twitter for iPhone and give it the benefit of the doubt, but I became more frustrated with the app as I continued using it over subsequent weeks. That’s when I finally relented and switched to Tweetbot.

Tweetbot is probably the most interesting of the Twitter clients on the market today. In terms of functionality, ease of use and thoughtfulness to the experience there isn’t a better offering. Where the app stirs controversy is with its heavy handed user interface design. Tapbots is known for having a unique design styling that spreads across all of their apps. In fact, it is a major part of their branding and signature.

Many people love the aesthetic stylings of Tweetbot. I am not one of them. I consider Tweetbot to be the best designed Android app available for iOS. The robotic theme feels heavy, animations feel off compared to the standard iOS provides ones and the experience just doesn’t disappear in your hands. I can never use Tweetbot without realizing that I am using Tweetbot, which is bad.

Whereas Tapbots’s signature style may work in smaller utility apps that are used quickly and infrequently such as a calculator or a global clipboard, it is incredibly hard to work with in such a text-heavy and long-term use app such as Twitter client.

I don’t dislike using Tweetbot, but I certainly don’t enjoy using it either. And that’s where the problem lies. I no longer feel like there is a perfect Twitter client available for me. Instead I feel like I am now using my Twitter client of choice solely for utility rather than enjoyment, which leads me to enjoy the overall Twitter experience much less than before. This is a prime example of the first world problems that haunt my daily life, friends.

Executing Perfection

There is a running gag in the Apple development community that a Twitter app is the new “Hello World”. For the non-programmers, “Hello World” is usually the first project you do as you are learning a new programming language. The goal is essentially to print out that specific phrase to your screen. I’m sure more than a handful of people have picked up an iOS development book solely to build something around Twitter’s API.

As a joke, the Hello World analogy holds true. In reality, however, building a 1.0 Twitter client is an incredibly hard task to undertake for even the most seasoned developers. When you start to break down all the different aspects of what is involved in order to compete it becomes even more daunting. Want to give it a shot? Here’s what you need:

  1. A great posting interface that supports photo and video uploading and location publishing at a minimum. Bonus points if you support username autocompletions and points of interests in your locations.
  2. A good looking profile view for each user account that also has information about their followers, who they follow, and specific timelines for their tweets, mentions, and favorites. Don’t forget you need to deal with caching and checking to see if they have an updated avatar periodically. Oh, and how about dealing with following and unfollowing that account.
  3. Every good Twitter client has a great timeline reading experience. It’s usually more than just parsing JSON into instances of UITableViewCell. You’ve got to handle refreshing and adding new tweets. What about instances when the network connection is wonky? There’s also all sorts of interaction design work and development around how to easily handle a user’s actions on a tweet (reply, favorite, retweet, etc).
  4. Each tweet needs a single tweet view with a variety of actions and metadata associated with it. Don’t forget you need to integrate maps here so you can view the location appended to the tweet and a photo/video viewer for any media.
  5. Mentions are their own separate timeline. Gotta have it.
  6. Favorites need a timeline too. This is a big 1.0, huh?
  7. Search is a major part of the Twitter experience. You’ll need a good interface to allow your user to search for both people and tweets with specific words and phrases.

I’m leaving out other aspects of the Twitter experience, but I think you get the point. This is a hard problem to solve and an even harder problem to solve in a way that provides an incredibly polished user experience. That’s why you’ve seen quite a few smaller clients come out with decent 1.0 starts, but missing key features and floundering shortly thereafter. Getting all the aspects of a Twitter app’s experience in sync is a full-time job and not an easy one.

Development difficulty aside, Twitter didn’t help the situation when they advised platform enthusiasts to no longer compete with them in the client space. It’s hard enough to be successful in a saturated market without having to compete against the platform provider who has posted a sign on the front door claiming you’re no longer welcome.

I firmly believe if Twitter had handled that situation with a bit more grace and tact, we’d still see more developers taking a swing at building quality clients for all the mobile platforms. Instead, those that were around or in development before Twitter’s client acquisitions remain while the rest of the development community focuses on building Dropbox syncing text editors.

Open Source

In the early days of Mac OS X there were quite a few different AOL Instant Messenger clients available. AOL of course had their official client, but others were out there such as Proteus, Fire, and of course Adium.

When Apple released iChat as part of Mac OS X Jaguar, they killed the third-party AIM client market for all intents and purposes. It’s incredibly difficult to compete with something that is free, bundled with every new Mac and is good enough for the majority of users.

While Proteus and Fire faded away, however, Adium remained. I have never been a regular Adium user, but I have an immense amount of respect for what it signifies. It is the power-users instant messaging client that not only goes beyond the service offerings iChat affords, but also the features.

Adium is software developed out of love and desire, more than solely for profit. What iOS needs is the Twitter equivalent to Adium: a well maintained, open source Twitter client that is targeted at the most hardcore and passionate users of both Twitter and the iOS platform.

That, of course, is easier typed than done. Many open source projects fail because of lack of vision or direction. Others fail because they are just badly engineered software that aims to shove every pet feature into a unified product. Projects like Adium succeed because there is an established hierarchy of managers, developers and contributors. Each release has a focus and direction much like a commercially produced project.

I would love to see the Adium model apply to a great Twitter app, but I remain pessimistic.


Where does that leave us? For many of you, you’re doing great. You have found a client for your device that works exactly how you want it to. Others like myself, however, will keep searching and hoping that someday someone will come forward and build that mythical perfect client.

Maybe someone else will build it. Maybe I will. Maybe we all will.

Whose up?

About Justin

Justin Williams is the Crew Chief of Second Gear. He writes about consumer technology, running a bootstrapped software business, and more from Denver, Colorado.

Follow @justin on Twitter or get new articles via @carpeaqua.