Dave is an engineer at Panic, Inc.
- What do you currently do?
I’m an engineer at Panic, a small independent developer in Portland, Oregon. Panic has been making Mac apps since the apple had rainbow stripes, and they hired me almost 12 years ago, right when OS X was taking its first wobbly steps.
- How did you get started in Mac and/or iOS programming?
Before Panic I mostly wrote server-side code for Linux. On my first Panic project I was writing C code in a POSIX environment on Windows while Steven Frank was hacking Carbon on OS X and Cabel Sasser was testing and designing on OS 9. It was kind of a mess, really, and we probably bit off more than we could chew. Eventually Cabel and Steve decided we needed to have another paying product out there instead of putting our energy into it, so we switched to making a 2.0 version of Transmit and I learned Objective-C as I went.
- What was the first app you created and what did it do?
I tried making Mac apps on OS 9 in CodeWarrior but C++ is just impossible to learn if you’ve been exposed to Java. Thank goodness for OS X—Objective-C is such a joy to work in. (Xcode itself, I have a love/hate relationship with. We’ll see how that balance shifts with Xcode 5.) So after getting up to speed with Objective-C in Transmit 2, I built Unison, our usenet client. The first iOS app I made was Prompt, an SSH terminal client with a clean and simple UI.
- Where did you get the idea for the app?
Prompt happened because we’d ported the code from Coda’s Terminal tab to iOS to use in Diet Coda. But we had that working almost a year before the rest of Diet Coda, so we decided to spin it off into its own app.
- What went well? What could have gone better?
Releasing a piece of Diet Coda as a separate app was a great way to get it in front of users early and to shake out bugs that would have marred the launch of Diet Coda. They didn’t know it, but Prompt users were exercising the text system that we were building for Diet Coda, helping us spot performance issues. Of course we try our best to ship bug-free apps, but every once in a while something falls through the cracks. Doing a phased release of the code in this way really helped reduce the impact of those bugs.
And there’s something to be said for just getting off your butt and shipping something. We can always think of so many great features to add we’d never finish the app. If a small part of your feature set is useful on its on, especially if you’re getting burnt out on feature creep and slogging through bugs, focus on just that part, polish it up and send it out into the world. The feedback (and possibly income) you get from that will recharge you for the bigger fight.
- What is your favorite among the apps you’ve developed?
I love all our apps equally! But my favorite code I’ve written was Diet Coda’s totally gratuitous but fun OpenGL ES effects: the flipping page animation when you edit site info, and the “Super Loupe” magnifying glass for text selection. For years I’ve been going to the OpenGL sessions at WWDC for no reason other than they have really cool demos. Apparently enough information rubbed off that when we were looking at putting the spit and polish on Diet Coda I knew how to do fancy shader effects.
- What advice do you have for young people who want to make apps?
Drop out of school.
No! Just kidding! Stay in school, kids! But educate yourself outside of school, too: learn how to learn on your own. The problem-solving skills you develop by tackling a project by yourself are completely different from what can be taught in school and are absolutely fundamental to app development. (As are the math and reading and writing you learn in school.) Every time you start a new project you’ve got tons of new frameworks to play with, and if you don’t know how to learn them on your own you won’t be able to use them well.
On the other hand, unless you’re one of those rare Gus Mueller types, you won’t be able to do everything on your own, and that’s okay. There are tons of designers out there who need programmers, and tons of coders who suffer from Engineer’s UI Syndrome. Connect online, go to meetups. Ask questions (answer them, too!) on stackoverflow.com and put your code on github. Put yourself out there. Say yes.
Help more girls learn software development. Contribute to the App Camp For Girls Indiegogo fundraiser, get a cool perk, and enjoy the feeling of having helped the next generation of software developers.