An Amazing Ride

April 9, 2010

Once upon a time I wanted a better Twitter app for my iPhone, so I wrote one.  My goal was to make something simple, beautiful, and intuitive.  It’s been a wild ride since 1.0, and over the last year and a half Tweetie has gone from a no-name app from a little known software company to an app hailed as one of the best mobile experiences around.  It’s been featured in TIME and Wired, won the Apple Design Award, and I’ve had the privilege of working with the folks at Twitter from the outside as their service evolved.

Now I’ll be working with them on the inside. I’m happy to say that as of today Twitter is the proud owner of Tweetie - and I’m joining their mobile team and starting work on turning into, for iPhone and iPad.

Some amazing stuff will soon be possible, both in terms of simplifying the Twitter experience and in allowing people to use Twitter any place they might be.  I’m really looking forward to the next generation of mobile clients, and hopefully the next time you hear from me it’ll be on the Twitter blog!

Tweetie Reloaded

November 11, 2009

An interview with yours truly on gestures and the refresh mechanism in Tweetie 2:

Tweetie 2 for iPhone

October 12, 2009

It’s out!

I’m floored by the response - thanks to everyone who picked up a copy.  As much as I’d like to curl up and sleep for a few weeks, there is much still to do!

First, despite the fact that it says 2.0 on the box, Tweetie 2 is a 1.0 at heart (it really is a complete rewrite).  From what I’ve gathered it seems to be mostly solid, but like any 1.0 app there are always those  niggles that crop up at the last minute and make you want to kick yourself.  They’ll be fixed soon.

Second, there are a ton of cool new features getting turned on soon on Twitter’s end.  I built Tweetie 2 to take advantage of them, so I’m hoping to “flip the switch” for the next update.  New style Retweets, per-tweet geotagging, and of course, Lists.

Finally, once things settle down a bit I’d like to share some of the stuff I wrote that helped get Tweetie 2 off the ground.  Code, ideas, and a few new projects.

Oh, and I haven’t been all Tweetie all the time, there is this other thing… stay tuned.

Bigbird Redux

September 28, 2009

You might be wondering where I’ve been for the past four months. Counting my cash on a beach surrounded by bikini-clad women?

Naah. Actually, I’ve been in my batcave slaving away on something really, really cool. It’s Tweetie 2. And it’s coming - first for iPhone, then for Mac.

A bit of history. About ten months ago I was a big shot with 20 Twitter followers. In my spare time I wrote this app called Tweetie because I wasn’t satisfied with the current state of Twitter clients. A few people bought it. Then a few more bought it. Then I realized this App Store thing was actually pretty popular, and ($2.99 - 30%) x enough people = a living.

I had no idea it would become so successful. I think it had something to do with the fact that it embraced the iPhone interface philosophy. Many other apps “invented their own wheel”, Tweetie did it the Apple way. I gave a talk at Stanford about it. And I won something that I had dreamed about since the day I learned Cocoa so many years ago (thanks James). I’m beyond honored.

At the same time I knew that Tweetie 1.x could only go so far. Like the original Mac OS, it blended an intuitiveness with a well rounded set of features. But the “core” needed to be replaced. Not one to rest on my laurels, I started Project Bigbird, which was a new Twitter “core” meant to last.

Tweetie for Mac was the first app powered by Bigbird. Like Mac OS X 10.0, it was missing some features that would make you scratch your head when you’re already accustomed to OS 9. But if you used it you couldn’t deny the feeling that there was something special behind the scenes.

Since the launch of Tweetie for Mac, I have been bringing Bigbird down to the iPhone. In the process, it’s become faster, slimmer, and much more powerful. The great news is that all these changes will trickle back up to the Mac. But more about that later. Today I’d like to talk about Bigbird on the iPhone: Tweetie 2.



I seeded what I hope to be the final beta of Tweetie 2 for iPhone last night. If all goes well, I will submit to Apple this week and from there… well, you know the drill.

It’s been a long process, but it will be worth it. Once I sync the codebase for Tweetie for Mac and Tweetie for iPhone, expect an explosion in functionality. I will be able to explore new features in Tweetie for Mac, pushing out updates there instantly, and once I’m confident that changes are stable, push updates to the iPhone.

What exactly is it?

Making a “2.0” could have been easy. I could have changed the version number, added video tweeting and called it a day. Other apps call that “2.0” - I think it’s lame.

Tweetie 1 set a new standard for Twitter clients and iPhone apps in general. It proved that you didn’t have to sacrifice intuitiveness for functionality. Today we have iPhone OS 3.0, 3GS, and new Twitter APIs. Tweetie 2 is built from the ground up to take advantage of these fantastic new technologies.

First, Tweetie 2 is OS 3.0+ only. If you haven’t updated, now’s the time. It leverages everything, from the fun things like video recording (of course you can video tweet), to the downright awesome things like UISearchDisplayController so you live-filter your tweet stream, just like Mail.

It contains a metric ton of new stuff. There is full persistence - not just caching tweets for offline reading, but remembering where you are in the app. You could be viewing a conversation of a tweet of a recent mention of one of your followers, quit the app (or get a phone call), and when you come back, the entire UI stack is restored. Speaking of offline reading, there is also a fantastic offline mode. You can favorite, follow, block, add to Instapaper and more all while offline. Next time you connect, all of those actions will be synced back up.

There’s a drafts manager, you can even use it to compose tweets and DMs while you’re on the subway, and blast them out simultaneously as soon as you get out. (And if you’re a fan of Birdhouse, you can now send drafts to it from Tweetie).

You can link up Twitter users to contacts in your iPhone Address Book. Forget just adding notes, you can link up with email addresses, phone numbers, and more - and even better, all of that linkage information is backed up when you sync your phone.

Threaded conversations are there, just like the Mac version, as are nice tab bar notifications so you can see at a glance if you have new items. “Nearby” has been revamped to take advantage of MapKit (it’s even cooler than you can imagine), and Tweetie 2 already supports the new geotagging metadata coming soon from Twitter.

Saved searches now sync with and the upcoming Tweetie 2 for Mac. There is deep, native integration with other services, including, Tweet Blocker, and Follow cost.

The compose screen design has been completely overhauled, with a @people picker, recent hashtags, multiple attachments manager, and a “peek” gesture when replying to a tweet.

Plus: full landscape support (configurable, of course), edit your Twitter profile, custom API roots on a per-account basis, vastly improved gesture shortcuts, in-app rich-text email, new-style retweet support, refresh-all on launch, TextExpander, Read it Later integration (in addition to Instapaper), autocomplete recent searches, autocomplete go-to-user, improved avatar caching, inline Twitlonger, reply chain list view, preview short urls, tweet translation, block+follow from multiple accounts at once, and that’s just the stuff I can think of off the top of my head.

And here’s the beauty of this: just as Tweetie 1 proved that you didn’t have to sacrifice usability for functionality, Tweetie 2 proves it again. Every single one of these features fits naturally into the user interface, none adds unnecessary complexity. It’s arguably even simpler than Tweetie 1, all while being vastly more powerful.

After all, what good is a feature if you can’t figure out how to use it?

What’s the deal?

Tweetie 2 for Mac will be a completely free upgrade. (So if you haven’t already grabbed a license, feel free to do so). On the other hand, Tweetie 2 for iPhone will be a whole new app. And while it’s arguably worth a lot more, I’m keeping the price exactly the same: $2.99.

I’ll keep the world posted on the status from @atebits and @tweetie, as well as post screenshots, screencasts, and some other sneak peeks that are sure to whet your appetite until the App Store Gods deem Tweetie 2 worthy.

Can’t wait for you to try it out. Thanks for waiting - I think it will be worth it.


September 26, 2009

I just moved the blog over to Tumblr.  Be sure to update your RSS feed.  (Old links to will still work, but there won’t be any new posts).

Also: big news coming on Monday.  Stay tuned.


April 7, 2009

Chances are you’re reading this on the stunning redesign of Thanks to Tim Van Damme of Made by Elephant for his brilliant work.

This redesign is in celebration of the imminent release of a new app, Tweetie for Mac. In many ways it is the bigger cousin of the iPhone version (hence the codename: “Bigbird”). Tweetie for Mac is more than a port – in fact, it’s a complete rewrite. The new core is faster, more stable, and more extensible than its predecessor. Not only will it form the foundation of the Mac version, but also the foundation of the next generation of Tweetie 2.0 for iPhone.

I will posting more details, screenshots, and maybe even some screencasts of Tweetie for Mac later this week. Be sure to follow @atebits and @tweetie for up-to-the-minute info on the imminent release.

Not Your Average iPhone Screencast

March 11, 2009

So you finished your amazing new iPhone app, it scrolls like butter, now you need to show the world. You could make a screencast by clicking around in the iPhone Simulator, but that has a tendency to look like you just clicked around in the iPhone Simulator.

I’m starting to put together some screencasts for Tweetie, and a number of developers asked how I made them look so awesome. Today I’m happy to share. The trick is a little app I wrote called SimFinger. It’s not a screencapture tool, rather it’s a bundle of little tricks to make a screencapture of the iPhone Simulator suck less.


First, download a copy of SimFinger. If you launch it, you’ll end up with something that looks like the shot below. SimFinger itself is composed of two parts. One is a fake “frame” that sits ontop of the simulator. It adds some shine and gives it an iPhone 3G-look. Clicking anywhere on it will just click-through to whatever is below. The other part is a little nub that follows around your cursor. It “indents” when you press down with your mouse, indicating what would be a “touch” on the phone.

The idea is to position iPhone Simulator below this facade and do a screencapture of just this area. You’ll need a good screencapture tool - I use (and recommend) Snapz Pro X. It has an option to capture just some sub-region of your screen, and also the option to not capture the mouse pointer (which you should use, unless you want to ruin the illusion).

That alone is great, but SimFinger has some more tricks up its sleeve. Normally when you launch iPhone Simulator you get something rather lame, a few builtin apps and something that looks like:

We want it to look like an iPhone. With SimFinger running, go to the Control menu and select “Set Fake Carrier Text…”. Enter the text “ATT” then, relaunch the iPhone Simulator. You’ll notice the (dead-givaway) “Carrier” is replaced by “ATT”. Do the same for the “Fake Time Text”. Apple typically uses “9:42 AM”, I do the same for my screencasts.

The last step to the puzzle is to give your app some friends. SimFinger comes bundled with “Fake Apps” that mimic Apple’s built-in apps. In SimFinger, goto Control - Install Fake Apps…, then restart the iPhone Simulator one more time. You’ll see a ton of stuff was installed, but it’s probably in the wrong order. Go ahead and re-order the icons to match the screenshot below (the “official” order). Yes, be anal - there is a really nice visual balance to the “Apple-defined” order of the icons. If you’re feeling pompous, go ahead and put your app in the dock. I don’t.

If you haven’t already figured it out, these “Fake Apps” are more than just pretty icons. They are capable of one thing - setting their own badge number. Launching them will give you a list, selecting any number (besides 0) will set a badge icon on the home screen. You don’t have to do this, but it adds a little something to the illusion. Don’t go crazy either – only do it for apps where it makes sense (yes, every fake app is capable of setting a badge number).

You might wonder why there is so much extra whitespace around the simulator. The answer is that the SimFinger “facade” is composed of two layers, one below the mouse-pointer “nub” (which displays the actual body of the iPhone) and one above the “nub”, which is a fuzzy while outline that serves to “fade away” the nub as it reaches the edges of the capture area (see screenshot below). This is particularly handy when compositing the captured area on a larger canvas - you’ll never have to deal with the nub hitting a harsh edge.

The last step is a bit of a doosy. Once you have your captured video, you’ll want to add titles, animate and sexify the video. SimFinger doesn’t do that. I love After Effects, but I’m sure there are some other apps that can do the basics. (Someone let me know if you have any cheaper suggestions – I’d be happy to list a few here).

Some notes: you probably want to hide your Dock. SimFinger currently locks itself to the lower-left of the screen. If you launch SimFinger with iPhone Simulator already running, it will automatically reposition the iPhone Simulator. If they ever get out of whack, just go to Control - Reposition iPhone Simulator Window (you’ll need Accessibility enabled in the System Preferences for this to work).

Almost Free

SimFinger is free. Sort-of. I’m trying my hand at this donationware thing. If you like and use SimFinger, and think it saved you a few hours of work, feel free to drop me a few bucks. I’d be happy to post the source on github so we can build something *really* amazing together. If you’d like to see it open-sourced, go ahead and “vote”… by clicking below :)

Update: SimFinger is now up on github!

Tweetie 1.3

March 2, 2009

I submitted Tweetie 1.3 to Apple a little while ago. Here’s the current (off the top of my head) list of fixes and fancy schmancy new features.

  • Post pictures with Mobypicture and yfrog (in addition to TwitPic)
  • New “Link” button to Add to Instapaper faster, and repost individual links
  • View full-size profile images
  • Dark theme
  • integration
  • Tweetshrink integration
  • Twitlonger integration
  • German localization
  • Russian localization
  • Allow DMs up to 255 characters
  • Many UI tweaks
  • Play back links
  • Option to use “RT” syntax
  • Better feedback for posting a Map link
  • Improved international date formatting
  • Detect invalid profile images
  • Fixed account sorting
  • Fixed profile image URL decoding
  • Fixed links with # anchors
  • Fixed “(null)” problem when using bookmarklet
  • Fixed problem with @ character in password field

Look for the update soon!

Great Things

February 27, 2009

1. Tweetie is featured on iTunes! Woohooo!

2. Less awesome, but makes-me-happy: Apple has started pulling Emoji-enablers from the App Store. About time. Hacks are bad.

Replying to Multiple Users

February 21, 2009

I’m astonished that many people don’t know this. Say @atebits wanted to send a tweet to a bunch of users, he might try something like this:

@user1 @user2 @user3 let's all go to a party.

Looks good, right?


First, some background on how replies in Twitter work (as of Feb 2, 2009 – they are updating all the time).

Twitter provides two ways to reply to someone. The first is to simply prefix a username at the start of a tweet. So for example, @user1 could type in: “@atebits man, I would *love* to go to a party with you.“, and @atebits would see it as a reply to him. Awesome.

The other way to reply is to reply to a specific tweet. You can do this on by clicking the little gray reply arrow next to a tweet. You can also do it in a client (that support it) by clicking the reply button when viewing a specific tweet. This does two things, first: it automatically prefixes a “@username” at the beginning of the tweet. Second: it sets the in_reply_to_status_id flag when posting to Twitter.

This last point is particularly cool – it’s a way for you to reply to a specific tweet. When people view this tweet on, there will be a small link at the end of the tweet that says something like “in reply to atebits“. When you click it, it will take you to the specific tweet that user was replying to. In a client that supports following reply chains (like Tweetie), you can tap a button to see the tweet that someone was replying to.

Now, back to the original point. You wanted to invite @user1, @user2 and @user3 to a party. But @user1 was the only person to get back to you. You could conclude that @user2 and @user3 think you smell and would never go to a party with you, or you could learn a little more about how Twitter replies work.

The truth is, @user1 is the only one who saw that message in their Replies. @user2 and @user3 didn’t see it in their Replies at all. This is because Twitter only considers the first username as the person you’d like to reply to… it has no concept of multiple replies.

Today, if you want to send a reply to three people, you have to send three separate tweets.

I agree that it would be nice if you could include a few different @usernames in a tweet, and every username mentioned in it would get it as a reply. But that’s not how it works today, so you should keep it in mind. If you want it to change, well, I’m the wrong person to talk to – you could ask Twitter here and see what happens.

As a side note: this is one of the reasons why Tweetie doesn’t include a Twitter “friend address book” in the Compose screen. A lot of people have requested it so they can reply to multiple people… to them I say: please read this blog post. There is a second reason why Tweetie doesn’t have that feature, but it’s more technical and probably deserves another blog post (short version: it would be a hack, and if you see it in any other Twitter client today, I can pretty much guarantee that it’s a half-assed implementation).

Update: If you find yourself wanting to send a tweet to multiple users often, you might want to read Twitter Groups (Type 1) and check out, a very cool looking service.

Update 2: Twitter replaced the concept of “Replies” with “Mentions”, effectively making replying to multiple users possible. Tweetie will be updated to reflect this change.