Mattt Thompson Developer & Designer at Heroku
Who are you and what do you do?
My name is Mattt (yes with 3 t’s, it’s a long story). I work at Heroku in San Francisco, where I’m a designer and developer. Recently, I’ve been on a Mac development kick, working on Postgres.app and Induction.app, but in the next couple months, I’ll be looking at how Heroku can revolutionize the way mobile applications are developed. I also maintain a number of open-source libraries, including AFNetworking, TTTAttributedLabel, and FormatterKit.
How did you get started in iOS development?
My first job out of college was a Rails developer position at a startup out of Tokyo called iKnow, which at the time was positioning itself as a learning platform / social network under the name Smart.fm. A few months after I started there, we began development on an iOS client. Having attempted to get into Mac development a few years earlier with Aaron Hillegass’ “Cocoa Programming For Mac OS X”, I was the only one in the office with any real experience. With iOS, I was effectively starting over again, though (I don’t know where I’d be without the Peepcode screencasts). It was a grueling couple of months of development, but by the time we shipped, I was hooked.
Around that time, I was also hooked on an iPhone app called “Gowalla”, created by Alamofire—a company I had followed for years, from IconBuffet to Packrat (this is the AF in AFNetworking). I cold-called Scott Raymond, the co-founder and CTO, and wound up with my dream job as an iOS developer for Gowalla in Austin, Texas the next month.
What does your computer and workspace setup look like while developing?
I love my office setup: 27" Apple Cinema display as a secondary for my 13" MacBook Air, mounted on an mStand by Raindrop Design; Apple wireless trackpad and keyboard (Japanese layout, which is actually _really_ nice for Objective-C programming); a pair of Bose Quiet Comfort 15 headphones on my ears, and a Kensington Solemate under my feet. When I'm at home, I'll code on my couch with my feet up, in a position that will probably necessitate years of physical therapy at some point.
AFNetworking has been a great resource for so many developers. How do you feel about the state that it's in right now?
AFNetworking has never been better. I'm slowly moving towards 1.0, which with its switch to ARC and iOS 5, has more to do with waiting for everyone to be on board with the latest Xcode tools than developing new features, although there are a couple of those that are being worked on.
It's incredibly humbling to see how many people use AFNetworking, and the amazing things they make with it. In just a year or so, it has become one of the most popular open-source Objective-C frameworks. All of the energy and new ideas that people bring to the project motivate me to do my best to maintain it.
There are many great backend services like Heroku, Pusher, and Parse providing different, but useful services for mobile developers. What do you think is missing right now as a service out there to help streamline and assist developers in providing great experiences for users?
One of the most interesting things to me about mobile development is how small the teams are. Most of the time, we’re talking about lone developers, or a handful at most. Even in large companies with flagship mobile apps, they’re still likely to be outnumbered.
The most important thing is the app: every second that they have to spend writing web services is less time to make an insanely great experience on the client. And creating APIs is particularly difficult for small teams and individuals, who may not have the most experience on the server side of the equation.
Therefore, the most significant gains that can be made in terms of productivity come down to minimizing the amount of work needed to get the app communicated with the server. I’ve already made some some exciting progress with AFIncrementalStore and Rack::CoreData. AFIncrementalStore significantly reduces the amount of networking code needed to write to sync Core Data to an external web service, while Rack::CoreData generates a scaffold web service from your Core Data model. Together, they form a kind of holy grail of client-server development.
Semi-relatedly, I also created Cupertino, an exceptionally handy tool that automates interactions with the Apple Developer Center website, so administrative tasks that would otherwise take minutes can be done in a single command in just a few seconds.
I want Heroku to revolutionize the way we develop mobile applications, just as it did for the web, and what I described is just the start. We have some exceptionally cool things coming soon, so stay tuned.
Finally, what is your favourite app?
Carcassonne by The Coding Monkeys is by far my favorite app, especially on the iPad. It may very well be the most thoughtfully-designed app I’ve ever used (seriously, the narrated tutorial should win a Nobel Peace Prize, or something). It took an exceptional game and found a way to improve it. I can’t wait to see what they do for their upcoming title, Lost Cities.
Editor's Note: Since Mattt wrote up this interview he's been working away at Heroku mobile, but on top of that has even more projects on the go that I wanted to share as well: