Who are you and what do you do?

I’m Nathan Spindel, an iOS developer at Square in San Francisco, California.

I’ve been obsessed with Apple since I was young, cutting my teeth on a Mac IIcx (System 6, HyperCard, what what?). After dabbling in Cocoa during college, I was hooked. I then worked at Apple from 2005 to 2010 on Mac OS X, helping ship Leopard through Lion. I learned a ton about software development and made some good friends. I feel privileged to have been there during such an amazing time for the company.

In Summer 2010 I left Apple to join Square. We’re focused on completely redesigning the experience of paying and getting paid, from swiping credit cards on an iPhone to paying with your name with Card Case. We have an incredible team of engineers and designers with experience building great apps for both iOS and Android.

What is your computer and workspace setup while developing?

Lately I’ve been using an 11-inch MacBook Air. For me it’s the first tiny laptop that’s powerful enough for coding apps. When I’m at my desk, I plug it into a 27" display with keyboard, mouse, and headphones. But I often use it while sitting on couches (Square has many comfy seating options), where it shines.

Most of the Square iOS team uses 15“ MacBook Pros w/ SSDs, and we have some maxed-out Mac Pros for when it gets real (”12-core Mac Pro is the only way I’ll use Xcode and Instruments," says @eharris).

But really, my favourite devices are the iPhone and iPad. I’m looking forward to the day when computers as we know them fade away.

What are your favourite Apple iOS API's to use within apps you develop?

Coming from an AppKit background, UIKit is a joy to work with. Gone are crusty APIs of 1980s NeXT heritage (NSCell, NSDocument, NSWindow, etc.), replaced by a cleaner paradigm of views, view controllers, and easily customizable controls. Combined with Core Animation, UIKit is a tremendously elegant and powerful framework.

Core Location’s recent geofencing capabilities opened up doors for Square, enabling us to build automatic tabs in Card Case. You should try it out on your iPhone.

Recently I’ve been really into Objective-C blocks. They’re a beautiful construct for many situations where notifications and delegates were used in the past. Hats off to Bertrand for pushing hard to get them built into our tools before he left Apple.

What is some software that you use outside of Xcode for development?

For bug and task tracking we use a combination of Pivotal Tracker and JIRA. I’m thinking about building a better bug tracker.

For source control we use Git and GitHub. The pull request workflow is great, much better than Subversion dances of the past. I like Kaleidoscope for viewing side-by-side diffs, one of the only features that GitHub lacks.

What do you do to stay up to date on new iOS features, frameworks and SDK's?

I’m fortunate to work with a large team of well-connected iOS developers, so news travels fast about the latest and greatest. There’s also the vibrant geek communities on Twitter.

From a developers perspective, what are your hopes for the next major iOS update?

Here’s my wishlist:

  1. Apps will automatically update

  2. Installing free apps won’t require a password

  3. Siri is available to third parties (easier said than done)

  4. More mature APIs for communicating between apps

Finally, what is your favourite app?

Square Card Case, naturally! I spend much of my time in Mail, Safari, Reeder, and Twitter.