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 Apple.com 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.

Next?

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.

Who’s up?

ObjectiveSee

A few weeks ago I was invited to participate in ObjectiveSee, a project by Justin Watt that interviews Mac and iOS developers. If you’ve ever read The Setup, the format should be familiar. The site and my interview is now live, so give it a read. I subscribed to the feed and look forward to seeing who pops up on there next.

Justin Williams on ObjectiveSee

Friction

Here’s what happens when I download a new application from any app store.

  1. I launch the app and judge how long it takes to let me see content.
  2. I look at the user interface to gauge how I will respond to it.
  3. I tap around to see what functionality is in there.
  4. I create data.
  5. I delete newly created data.
  6. I invite my friends to join if it’s one of those new social networks and I like it.

If at any point in that process I see a crash, frustrating design decisions, confusing experiences or perceive a lack of functionality, I delete the app and go on with my day. Put more succinctly, if at any point in the first use experience I experience friction, it’s game over.

Friction is the catch-all term I use to describe anything related to an app that causes the software to get in my way. The best mobile apps are the ones that disappear in your hand as you use them. You didn’t notice you were using Tweetie because experience was frictionless. The same cannot be said for the latest version of Twitter for iPhone. Beyond the much slower performance compared to its predecessor (no app should ever take 5+ seconds to load on an iPhone 4S), the app is missing functionality, is unresponsive at times and overall lessens the enjoyment that Twitter brings me.

Expensify is another app I have recently started to use. The service they provide is fantastic, but I am blaming the two grey hairs I found the other morning on their iPhone app. It’s not that the app doesn’t perform the functionality it describes. It’s that it executes those functions so poorly that I can’t help but notice all the cut corners while using their mobile product.

Friction is also locking your app’s entire experience behind a signup barrier. Mixel, a recently released collaborative collage app, was panned in its initial AppStore reviews for showing a Facebook sign-in screen as the first thing a user saw. To actually see what sort of content creation you can do on Mixel, you had to hand over your Facebook credentials.

I have a Facebook account, but I still balk anytime a new service I have never heard of wants me to trade access to my account for access to their service. Part of offering a product or service is building trust and relationships with your customers. When you are a new, unknown entity that just appeared on the AppStore I don’t trust you and likely won’t give you the benefit of the doubt. If, however, you offer me an idea of what I can experience in your app in exchange for access to my personal information I am likely to be much more receptive if what you’re producing intrigues me.

If your job is to write software, don’t just write software. Write great software. Write frictionless software. Most customers may not be as picky as I am right now, but as they continue using A-grade apps designed by platform vendors as well as top tier third parties, they’ll be further conditioned to expect that experience from all the products on their mobile device.

A Biased Review of the Jack Spade Nylon Port Canvas Case

I was almost offered entry into the Young, White Males Writing About Technology Club, but they said I don’t write nearly enough about coffee and laptop bags. I’m not a coffee drinker so don’t expect much from me in that department, but I do enjoy a good gear bag.

Rather than waxing poetic about my favorite daily driver bag, I instead turn your attention to my favorite weekend accessory: the Jack Spade Nylon Canvas Port Case.

Jack Spade Nylon Port Canvas Case

I admit to being an unabashed Jack Spade fanboy. Their wallets and bags are fantastic and I am quick to recommend them to anyone that asks. I have been carrying the same Jack Spade messenger bag for five years and it looks as good today as it did on the day I purchased it back in college. I am on my second Jack Spade card case wallet in the same amount of time and it is so good that I bought a second one for when this one bites the dust.

My daily messenger bag and sometimes backpack are designed for carrying around quite a bit of gear that I need to perform my job as a Mac and iOS developer. Most weekdays I’ve got the following in the bag at a minimum:

  1. 13” MacBook Air
  2. MacBook Air AC Adapter
  3. A variety of white cables for plugging in iDevices
  4. Magic Mouse for when precision pointing is necessary
  5. iPad
  6. A dead tree edition of a magazine or two
  7. A few different Field Notes notebooks and pens with my current projects and ideas sketched out.

On weekends when I am out in the city or visiting friends, I don’t need the first four items on that list. You could make a case that I don’t need any of the items, but I do enjoy having my 3G-enabled iPad with me on the go for coffee shop web surfing. Keeping a notebook with me at all times is also beneficial for those times an idea pops in my head and I need to write it down. As digital as my life is, I can’t imagine ever fully replacing pen and paper for certain tasks like brainstorming and sketching.

Carrying around a backpack or messenger bag designed for a 13”-15” laptop is a bit of overkill when all you’ve got with you is a tiny notebook and an iPad. That’s why the Nylon Canvas Port Case is the perfect day bag1. It has just enough space inside to house the tablet, a few necessary cables and my notebooks. Even better? The bag is light enough that you hardly notice it on your shoulder as you are going about your day.

Jack Spade Nylon Port Canvas Case Pockets

The Nylon Canvas Port Case has seven pockets. I regularly put six of those to use. The main compartment is where I keep my iPad and any magazines I want to carry with me. The main compartment also has a zipped pocket along the back that I keep my wallet and keys tucked away in.

The secondary compartment has two pen holders and a second smaller pocket along the front of it that I stow two Field Notes notebooks inside of. Anything I may pick up during my day’s journey that is small enough to fit in the bag usually goes here as well.

Along the front of the bag are two zipped pockets. One keeps an iPad charger and 30-pin connector cables. The other, a small bottle of Advil, earbuds and my iPhone. The zippers are some of the sturdiest I have ever worked with. They have a great weight to them and I have never once felt like I was going to snap them off as I have with lesser bags.

The final pocket is along the back of the bag and is my least used. I tend to just throw receipts, boarding passes and other bits of paper I accumulate in there. Every once in a while I will sift through it and find stuff I had forgotten about.

Jack Spade Nylon Port Canvas Case Filled Up

I have had this bag for about a year and I love it just as much today as I did the day I purchased it. I recently enjoyed a weekend in San Francisco where I left my laptop back at home and just used my iPad the entire time I was there. As part of that laptop-less experiment, I also left my other larger bags at home and just carried this bag on the plane with me2. I had more leg room under the seat and none of the shoulder pain from lugging heavy computer equipment between terminals and around the city with me.

Jack Spade bags aren’t cheap in price or construction. They also aren’t bags tailored specifically to fit your specific hardware. If, however, you are someone like me who wants a good mix of form, function and style, my favorite weekend adventure bag is hard to beat. I highly recommend it.

  1. Some people may refer to it as a man purse. I am not one of those people.

  2. I always check my luggage. I am more than willing to pay $25 or whatever fee it is to not have to deal with what is or isn’t allowed by the TSA, size restrictions and just the burden of hauling more stuff through a crowded airport. In my perfect world, airlines would charge people to use overhead storage for their bags and allow checked bags for free. Having my departure delayed while my fellow passengers try to shove their oversized suitcase into the overhead bin is maddening.

The Social Networks

“Do I really need another social network?” is a frequent response whenever a new mobile app or web service is released. I have asked the question a few times, but more often than not I will try it out and see if I can find a fit for it in my life. Most of them don’t make enough of a dent to stay on my phone past the day, but more than a few have a permanent place on my phone today.

While many networks have feature overlap, I have carved out specific niches for each one that are targeted towards the specific audience I am aiming for on the service. Things I post on this site may not be appropriate to share on Twitter or Facebook, but may make sense on Google+. Similarly, some photos are taken for Flickr, while others for Instagram.

This is the system of social network separation that works for me. Maybe it will work for you too.

carpeaqua: I consider this site to be the landing ground for everything that I consider most important. I publish the content I care most about here because I own every pixel of the experience. It is also a great launchpad to push fine readers like yourself to other areas of the Internet that I frequent or want to share.

Twitter: I use Twitter as a smaller, creative outlet. I share links, write bad jokes and occasionally troll my followers for fun. I also obsessively delete replies after I am sure the person it is directed to has read it. When someone visits my Twitter profile for the first time I want them to decide whether to follow or not based on the content I produce, not the conversions I have with other users.

I am also trying to use the @carpeaqua account for more than just pushing out notices of new articles on this site. You’ll find shorter thoughts, live working out of ideas and a dash of my charm1 on there. A Twitter stream that just pushes out announcements is akin to shouting in a room of people willing to listen. I try to offer a bit more.

Facebook: Facebook is for personal communication with friends and family. If there was a network I could do without, it would be Facebook. I don’t enjoy the experience as much as I enjoy the people that are on it.

Google+: Google+ is the nerdier variant of Facebook. Things that are too long for Twitter, but not necessarily worth posting on this site go here. I also try to remember to post links to the articles I post on here to Google+ because it seems like a decent way to offer comments without letting you write them on this site. As I hate most Internet commenters, I may come to regret this decision.

Path: I never used the original version of Path, but I love using the new version as a way to give my closest friends and family members an inside look into my daily life.2 More than just sharing my own content, I enjoy seeing what my friends are sharing on it. Path is what I enjoyed most about Facebook before it turned into the Internet platform: a social network for your private, personal network.

Instagram: I post a mixture of life and “faux artsy” photos to Instagram to give a visual journal of my daily life. Viewing photos from my friends and through tags is also a great way to waste time when Twitter isn’t offering much.

Flickr: Flickr is my least used service right now, which is sad. The personal photos I used to share on Flickr now go to Facebook and I reserve Flickr for any “real” photography I may do. As I rarely get out with my camera these days, that usage is becoming less and less. Their lack of a great mobile experience also limits its glance-ability when I am on the go.

Stamped: Stamped has replaced Yelp as my to-do list for restaurants to try. Whenever a friend stamps a restaurant I have never been to, I tend to add it to my to-do list in the app. I also try to stamp anything I really enjoy in hopes that others will experience it as well. The experience is frictionless and easy compared to Yelp.

Tumblr: My Tumblr Dashboard is the closest thing I have to an RSS stream these days. I check it several times through the day to read up on news, look at photos and occasionally discover interesting new content. I use my own personal Tumblr for posting music that I am currently enjoying.

Foursquare: I don’t use Foursquare much when I am in my home base of Indianapolis. When I travel or visit a new city, however, I make an effort to check into every place I visit. I am terrible with names, so having a record of that great restaurant or store I visited in Denver is just a few taps away.

  1. Snark

  2. As boring as that may be.