Curt Clifton Developer at The Omni Group
Curt Clifton is a software engineer for The Omni Group. Before joining Omni he was a tenured associate professor of Computer Science and Software Engineering at Rose-Hulman Institute of Technology. Curt has a Ph.D. in Computer Science from Iowa State where he helped develop the MultiJava programming language and proved things about aspect-oriented programming. If you go back far enough you’ll discover that Curt was once responsible for the people and systems that made all the Scope mouthwash in the world. Minty fresh, my friends.
At Omni, Curt works primarily on OmniOutliner. He’s done some work on the iPad version, but is primarily focused on making the next major release of OmniOutliner for Mac a reality.
Curt occasionally posts to his blog. You can also find his collection of scripts for OmniFocus there. Curt rants or cracks wise on Twitter as @curtclifton.
What is your computer and workspace setup while developing?
I really like the office environment at Omni. Most everyone has a private office with a desk, couch, Aeron chair - the usual tech office furnishings. The walls along the hallways are all glass. Each office has a sliding patio-style door. This gives the feel of an open plan office, but an individual can close their door if they need to really dig into something without being distracted. Omni is big enough now that even with the glass walls, we’re spread out. To help everyone work together we use a bunch of Jabber chat rooms for different product teams and disciplines like engineering, testing, and support.
My main development machine is a maxed-out Mac Pro with a 30-inch Cinema Display. The main drive is an SSD with several partitions for different version of the OS. I also have spinning rust for my iTunes library and backups. I use a Magic Trackpad and a Macally IceKey keyboard (with Caps Lock remapped to Control), but keep an Apple keyboard and Magic Mouse connected for pair programming.
I use a 15-inch MacBook Pro for development from home or while travelling. It has 8 GB of RAM, which I love, but no SSD. I’ll probably replace the drive in that machine this summer unless Apple ships a 15-inch Air. That would prompt me to dig deeper into my bank account.
What are your favourite Apple Cocoa Frameworks to use within apps you develop?
I think developers tend to have love-hate relationships with every framework we use. Different frameworks fall at different places on the love-hate spectrum. It’s hard to name a favorite framework. You choose the right framework for the job, then get the job done. Lately I’ve been enjoying working with AVFoundation on the Mac. I really like the long-term trend towards clean Objective-C frameworks that are available on iOS and OS X.
What is some software that you use outside of Xcode for development?
My workhorse for years, really since starting my PhD thesis, is BBEdit. I do almost all my writing in BBEdit, using Markdown, LaTeX, or Pages for making the results pretty if necessary. I use BBEdit’s Scratchpad window to keep notes for the bug or feature that I’m currently attacking. I pipe most terminal commands to BBEdit so I can easily search through the results. I’ve tried other text editors (and was an emacs fiend in the long ago), but always come back to BBEdit for its power features and raw speed. I love how version 10 can sync settings via Dropbox. My Scratchpad window is always the same on both my machines.
At Omni, we use Subversion for our primary source control repository, though Tim Wood periodically pushes our open source frameworks to GitHub. I also use GitHub for some personal projects, though so far I haven’t posted anything there that anyone outside of Rose-Hulman would be interested in. For the most part, I use the command-line for interacting with version control these days.
I use OmniGraffle quite a bit in my development work, both for wireframing and for throwing together quick UML diagrams when I’m trying to wrap my head around a new framework. I’m a very visual learner, so drawing a picture of a group of interacting objects or sketching the control flow in a dynamic protocol is really helpful to me. OmniGraffle has a really cool feature where it will generate a class diagram of a program or framework. All you have to do is drop the .xcodeproj file onto the OmniGraffle icon.
I also enjoy using Acorn for manipulating images. Luckily for our customers, I don’t do much with images in my work at Omni—we have a great bunch of designers who take care of that—but I do enjoy playing with the graphics on my side projects.
Another tool that I couldn’t live without is my Moleskine notebook and a fat Cross pen. When I’m coding, I find that if I jot down ideas and questions on paper I’m less likely to lose my train of thought than if I type those things. A notebook is also handy when I’m the navigator for pair programming or for taking a question to a co-worker’s office.
What do you do to stay up to date on new Mac OSX features, frameworks and SDK's?
That’s really a never ending battle. I subscribe to several of Apple’s mailing lists and read the release notes, developer documentation, and header files. I follow lots of Mac and iOS developers on Twitter, which is a great way to keep a finger on the pulse of the developer community. One of the great things about working at Omni is that we have lots of developers working on lots of apps, including several engineers who’ve been developing in Objective-C since the NeXT days. When I’m really stumped on something, it's great to be able to get pointers from people who’ve been battling in these trenches for years.
From a developers perspective, what are your hopes for the next major Mac OSX update?
This isn’t precisely tied to the the next OS X update, but I’m really looking forward to the continued improvement of Xcode. I’m a huge believer in the importance of tools in letting developers be more efficient and creative. Apple had some growing pains moving to Xcode 4, but I think it’s a solid foundation. The devtools engineers at Apple have been making steady progress and I’m sure that will continue.
As far as Mountain Lion is concerned, as a developer, I’m looking forward to refinement of the iCloud API and more clarity around application sandboxing in OS X. It’s obvious that Apple is committed to iCloud and security, both of those are smart choices, so I’m sure we’ll see improvement over time.
Finally, what is your favourite app?
In terms of hours of use, it’s probably a toss-up between BBEdit and NetHack. But seriously, if you ask me what was one app I couldn’t do without, I’d have to say OmniFocus. I was an OmniFocus user from the earliest public betas, well before I joined Omni. It works exactly like I want a personal task manager to work. The sync between Mac, iPad, and iPhone versions is just brilliant. Sync is a very hard problem, and OmniFocus makes it look easy.