Cocoa Controls: Who are you? What do you do?
Jonathan Penn: I am Jonathan Penn, solver of problems, pusher of bits. My clients like me enough to keep asking me back and I have the usual suspects of side projects to keep me busy. I’m quite proud of my new book, Test iOS Apps With UI Automation, which is now in beta through the Pragmatic Programmers. I also write regularly at The Cocoa Manifest, where I research and comment on iOS and OS X development. Aside from all this technical fluff, I’m a father, lover, and musician who celebrates the unpretentious boring-ness of the midwest US.
CC: What’s on your iPhone’s home screen? (feel free to include a screenshot if you’d like)
JP: In normal left-to-right-top-to-bottom order:
- Safari – Because internet.
- Phone – I have no idea why this is here. I never make phone calls, except to my mom.
- Messages – This is the social network for my closest circle.
- ReadMore – An app that motivates me to read challenging stuff…written by yours truly.
- Clock – For alarms & world time.
- Forecast.io – The most stunning web app for iOS. Aspire to this!
- Fantastical – Beats the pants off the built in calendar.
- DropVox – One touch voice note recording that uploads to Dropbox. Must have for the chronically eureka’d.
- Lose It! – Everyone needs a diet app on their home screen to impress their friends.
- Wind-Up – My wind up timer. I love wind up timers.
- Notesy – Dropbox sync’d text notes editor.
- 1Password – If you haven’t heard of this, you don’t care about security.
- Pastebot – Oldie, but a goodie. Fastest way to get data from my Mac to my Phone.
- PCalc – I started using a calculator in college and never looked back.
- Instapaper – My gee-I’m-never-gonna-read-that-some-day queue manager.
- Google Maps – Google has a best transit routes for Ohio.
- Things – Oh, don’t worry…I own OmniFocus, too.
- Settings – This must remain on my home screen until Apple gives us the ability to quickly flip stuff, like VPN access, from some nifty settings bar like Android.
- Photos – For those nostalgic moments.
- Launch Center – Like Alfred for iOS. Great way to capture and route data into different places.
I keep email and twitter off my home screen because they suck more time out of me than shaving a yak on a deadline.
CC: How, why, and when did you become an iOS developer?
JP: I was mesmerized by the iPhone like everyone else and jumped in as soon as the SDK was released. I noodled around on several app ideas of my own and released two to the App Store. I decided to get serious about iOS development when ReadMore got featured by Apple in the US and UK App Stores back in June of 2010. It’s been quite a ride ever since and has led to wonderful friendships. Serendipity FTW!
CC: What’s one mistake you’ve made that you won’t make again?
JP: Committing to implementing iCloud + Core Data for customers. That’s all I have to say about that.
CC: What’s the best decision you’ve ever made with your software development career?
JP: Stepping out on my own—-both for my own projects and for consulting with clients. It’s a great way to learn about customers, businesses, communication, and perseverance. I’m excited to see where it leads me next.
CC: What’s your favorite open source component? Why?
JP: CocoaPods. It’s been criticized lately due to fear that it encourages a mindless “kitchen sink” mentality burdening apps with foolish dependencies. I say phooey. We can’t be that concerned about beginners stabbing themselves with too many complexities…I mean, we’re teaching them Objective C!
I love CocoaPods because it lets me experiment and rule out components much faster than manually pasting in code files or following a long list of steps to link components in with my apps. Try them out and toss them if you don’t want them. It saves a lot of time and is run by a great team.
A+++ WILL USE AGAIN
(And of course, Cocoa Controls is a great way to browse them.)
CC: Allow to say it again, congratulations on the forthcoming book! I bought a beta copy of the ebook the same day I heard about it, and I think it’s fantastic, especially given how UIAutomation exists at this odd nexus of being wildly underserved, hard to use, and incredibly powerful. I know you’ve been working with UIAutomation for a while, now. How did the book deal with Pragmatic Programmers come together? Did you reach out to them, or them to you?
JP: Thanks! It’s been a wild ride. Andy Hunt saw me speak at a regional conference in Chicago a while back. It wasn’t even on this topic, but he encouraged me to submit a proposal to them. Anyone can submit, but I’m sure that obviously helped. :)
When I proposed the testing book idea I pointed out the talks and blog posts I’ve written about it. That helped them gauge my writing style and knowledge of iOS. From there I had to defend my idea and go through a couple rounds of discussions about it. It helped, too, that I talked to Bill Dudney and Daniel Steinberg, both who have authored books with Pragmatic. They gave me some first-time-author pointers.
CC: Having never attempted to write a book before, I’m sure there are innumerable challenges with it that haven’t even crossed my mind. What’s been the most challenging aspect of the work for you? What’s surprised you most about the process? And, how long have you been working on it?
JP: Write every day. Don’t edit while you’re writing. Spend no time on transitions between thoughts until you get all the thoughts down. Throw your first draft away and write the whole thing again. I violated all these rules and I have scars as a result. Caveat Author. :)
In the end, I’m really proud of how it came out—the tone and focus. I originally had lofty goals to tackle ALL testing topics and tools like Frank, Calabash, Appium, UI Automation, Kiwi…obviously that didn’t happen. In the end, I realized that focusing on just using UI Automation from my own experiences comes across as much more honest. I wouldn’t hesitate to recommend it to anyone. While the Prag’s did ask me to style it in a way that’s compatible with them, it really is my book and covers my concerns.
CC: How long have you been an indie developer, now? If you had to go through the same process again, what would you do differently, knowing what you know now?
JP: It’s been off and on since 2007. I did client/server web development for a while, then joined a startup in Cleveland before jumping out to do iOS development. Then I spent a year with Designing Interactive in Cleveland to help them transition to a new phase before I went out on my own again while I finished my book. No matter where I go I always try leave everything better than when I found it. :)
I love working on my own projects, but I know that product development is an art in itself and it’s one of my biggest weaknesses. I’m great at building out an idea, but doing actual product development is next on my bucket list of things to learn.
I think a lot of the “I’m gonna be an app maker” mentality in the iOS community is a little naive. Not that it’s a bad idea at all to do personal projects—we learn so much from that. But, as a one-man show I tend to pick projects that I can achieve by myself. That’s inherently limiting. It seems to be a major mode among the dev community, too. I mean, how many weather apps are out there now!?!? :)
So, as I look to the future, I’m keeping my eye out for opportunities to do things that are larger than I can achieve on my own. I’m not sure if that means growing a company or staying indie or not. That’s part of the fun of finding out. :)
CC: Also, I’ve noticed that you seem to spend a lot of time on the Cocoa conference circuit. How did you get into this, and do you have any suggestions for getting into it for folks who may want to do the same?
JP: That’s a great question. I’ve been speaking every chance I get at local user groups and small regional conferences. That’s fun practice and gets my name out there a bit. It’s been a deliberate slow-building snowball on my part. I don’t take it personally when a talk proposal is turned down—I use that as an opportunity to try new talk ideas and such. Also, it helps keep me on my toes. I don’t just want to be a “traveling speaker”. I want to have interesting things to speak about and meet new people. Every rejection is an opportunity to reflect.
CC: What else should we know about you?
JP: I have a masters of arts in religion, which means I am uniquely positioned to analyze the religious wars between platforms, languages, and ideologies in the software development industry today. Study history, my friends. It will make you a better programmer. Web scale was reached long before we invented Node.js.
CC: And, I hate to do this, but…given that you mentioned “religious wars,” vi or Emacs?
JP: I’ll do better than that: the path to enlightenment is paved with vi, QWERTY, Ruby, zsh, and CocoaPods. Flame on!
Have a suggestion for whom we should interview next? Let us know at [email protected].