David Keegan Indie Developer
Who are you and what do you do?
My name is David Keegan, I am a 26 year old software engineer living in California. I spend my days writing software for video game cinematics, and my nights designing and building Mac and iOS apps. My latest creation is Play by Play, the first Mac client for Dribbble which was recently featured by Apple on the Mac App Store!
I’m a big believer and contributor to open source, I’m quite active on Github on my own projects and other’s. I am also passionate about UI design and post a lot of my progress on Dribbble. I also tweet a bunch @_kgn.
What is your computer and workspace setup while developing?
I have a 2008 MacBook Pro connected to a 24" LED Display. The MacBook runs great but is starting to show it’s age. I’m gonna try to hold out for the new hotness as long as possible :) I also have a mac mini connected to my TV as a media center that I use to test my apps under Snow Leopard.
What are your favourite Apple API's to use within apps you develop?
My favorite thing is blocks, I know they aren’t an API but they are so awesome I think they are worth breaking the rules of this question :) In addition to Cocoa I’ve done a lot of javascript and jQuery which is all about closures. I think closures are so rad for asynchronous programming, perfect for networking! The core of Play by Play is an open source and block base library called Spectttator. In addition to asynchronous programming I have also started to replace my usage of selectors and delegates in custom classes with just blocks, blocks for everything! It’s hard for me to pick a favorite API, I love the entire system and structure of Cocoa. As a developer and designer I love how easy it is to customize views. The whole system is just so flexible and extensible with subclassing and delegate callbacks. The whole API, for the most part, is just so well structured and thought out. If I want to customize a view I just subclass it and write my own draw method, so easy! But if I had to pick one I’d say location services. I haven’t use it that much but just the ability for your app to know where the user is and automatically show relevant geo spacial data without the user having to enter a zip code or some other manual process is just a an amazingly cool thing for the world of possibilities it opens up for developers and the ease of use for users.
One of my favorite parts of developing for Cocoa is the community around it and the amazing open source projects and APIs that are available. I’d also like to include some of them as an answer to this question :) The biggest one for me is AFNetworking, this project is a great block based networking framework that just hit version 0.9. I’ve used this on the past three projects I’ve worked on and built several of my own open source frameworks around it. Another is DBPrefsWindowController by Dave Batton, this library provides an easy to use class for making tabbed preference windows on OSX. Last but not least is INAppStoreWindow by Indragie Karunaratne which provides an NSWindow subclass for creating a Mac App Store style titlebar with centred traffic lights. All of these projects where used for Play by Play and other apps I’ve recently worked on.
What is some software that you use outside of Xcode for development?
I design my apps as well as develop them so Photoshop is definitely the tool I use the most outside of Xcode. GitX for working with my git repositories, I use my own fork of brotherbard’s project where I’ve added fullscreen Lion support and change the commit hotkey to ⌘+enter. Other tools would be xScope for making sure my designs are pixel perfect. Mou for writing my Github Readme’s and other markdown files. AppViz 2 for tracking my apps, I also use App Annie but mostly just for the daily email reports. Sublime Text 2 for other programming languages. Espresso for building my app’s websites. Also Twitter for Mac, I use DMs a lot to ping other developers like @baden, @indragie, and @dimillian with quick programming questions.
What do you do to stay up to date on new features, frameworks and SDK's?
The best way I’ve found to stay up to date is to watch the keynotes and WWDC videos. Also I try to attend NSCoder as much as possible, nothing beats direct developer interaction and discussion. I also keep an ear to the ground by following Cocoa devs on Twitter and their blogs. Like the people I mentioned before and some others like @marcedwards, @drbarnard, @BigZaphod, and @mattgemmell just to name a few.
From a developers perspective, what are your hopes for the next major OS update?
The number one thing I’m hoping for is a retina iPad and Mac. The retina display is so enjoyable to use and design for I can’t wait to look at the insane number of pixels of a retina iPad and be blown away by the ridiculous number of pixels of a retina Mac! A Siri api is also very high on my list, I’d love an API to leverage the power of Siri and extend it. I like what Apple did with iOS5 and Twitter, I like that I have one place to add my Twitter accounts and manage which apps have access to them and post to Twitter from within an app without going through the hassle of getting an API key and linking to a third party library. I’d like to see this extended to other services and brought to the Mac. Also for the Mac I’d love an easy way to blur the background of a transparent window the way the dock menus and Terminal do. Lion brought a lot of awesome improvements like view based tables and NSJSONSerialization but Apple taunted us even further with blurred Terminal windows, there is still no way for developers to achieve this look in an official way.
Finally, what is your favourite app?
The apps on my iPhone home screen are Reeder, Instagram, Calcbot, TweetSpeaker, and the Dribbble website. The Dribbble website is still the best way to interact with Dribbble in my opinion until I finish the iPhone version of Play by Play of course :) I also have illuminate, my own rejected flashlight app that I wish Apple would make an exception for :) And the Twitter app, I decided to stick it out with the official Twitter app and it’s grown on me. I’m fond of the clean UI and like that I can see retweets, favorites, following, and responses all in one view in Connect. However Discover is worthless to me, I wish it was replaced with DMs.
On my iPad I really enjoy Apple’s Trailers app, it’s beautiful and the calendar view is just a fantastic view into what movies are coming out. I also use Noteshelf, Windosill and a lot of the apps I mentioned in my iPhone list.
On my Mac the dock contains Sparrow, very much looking forward to the iOS version! iA Writer, Kaleidoscope, and all the other apps I mentioned in the previous software question.