I love reading interviews with developers, finding out some of the behind-the-scenes information on the makings of their products — even more so when they’re my favorite products, the ones I use every day. Being able to put a personal face behind an end-user application puts a human story on the technology that I find fascinating. So, in the first of hopefully many such interviews, I caught up with Steve Gehrman, founder of CocoaTech, maker of the esteemed Path Finder application — a supercharged alternative to Apple’s own Finder.
TheAppleBlog: Path Finder is the answer for Mac power users, people who want to customize their file-browsing experience and do things that Apple’s Finder doesn’t let you. What was that one feature missing from Finder that initially made you make Path Finder? When was this, and what OS version was it for?
Steve Gehrman: I initially started writing Path Finder as a project to learn Cocoa. I had just been laid off from a dot-com in Los Angeles, and no one was hiring at that time. It was late 2000, when lots of companies were laying off people and the dot-com boom was crashing. I knew I had to get another job, but I didn’t want to get another job doing traditional PowerPlant/C++ Mac development. I wanted to learn the newest OS X Cocoa APIs and get a job doing that. Since OS X was just about to come out, I figured most of the jobs would be porting existing Mac apps over to OS X using Carbon. I didn’t want to do that. I wanted to write a new app that was 100% Cocoa. I remember waking up one Saturday morning and going out and buying a new G3 tower and a copy of Rhapsody Server. I came back, set it up, and started going though the Cocoa tutorials and learning Project Builder (the previous name of XCode). There wasn’t really a missing feature in the Finder that led me to write Path Finder. I just thought it would be a good project to learn Cocoa. Path Finder started off very simply. The initial versions were just a list view that displayed the hard drive contents. I figured that the Finder would remain simple to not confuse novice users, so I figured there was a niche for a more feature-rich file browser. Path Finder 1.0 shipped on 10.0.0 right when it was publicly released.
TAB: At that time, when Path Finder 1.0 was released, what was its main feature that Apple’s Finder didn’t have?
SG: I think the main feature of 1.0 was the Path Navigator — that bar on top that shows the path. I can’t remember what else was different about it, but that was the main feature if I remember correctly.
TAB: At what point did you then think, “Hey I could sell this?”
SG: After a few months of sending out resumes and not getting any offers, I just kept working on Path Finder, and it eventually became good enough to sell. The first version was pretty minimal, but I was lucky that at the beginning of OS X, there wasn’t much competition and people were willing to buy almost anything that was built exclusively for the new OS X. Kind of like the iPhone was at the beginning. Sales were slow at first, but they slowly increased to the point that it was paying the bills. Luckily, I had some savings to burn through for a few months to get things going.
TAB: According to cocoatech.com/about, CocoaTech comprises just yourself. Do you work on Path Finder full time, or is it an after-hours project that you work on between a normal day job?
SG: It’s been my full-time job since the beginning. I work on it every day, and for a while, I was working seven days a week til late at night. I worked at home originally, so I would wake up, work, go to bed, and repeat the next day for the first year or so. It was fun since I was learning a new OS and a new API. I’ve mellowed out a bit recently, but still put in way too many hours. I do have two support guys to handle email support and moderate the forums.
TAB: What does Apple think of Path Finder? It seems to go against Apple’s principle of “there’s one simple way to do something and we will make you do it that way.” How often do you have to deal with them?
SG: I haven’t heard anything from Apple. I have no idea what they think. I know people at Apple have purchased it and are using it, but no one has contacted me. The only time I deal with Apple is to report bugs in the OS that are causing problems.
TAB: How do you find Apple’s bug reporting system? Is it as effective and efficient as their end user products?
SG: It’s nothing special. It’s just a web form. It’s actually not that great as it’s not as easy as just sending an email. You can’t easily just paste in a screenshot for example. It’s also kind of slow and requires you to upload a system profiler report, and you have to fill in the OS X build number. I wish it was a client app that would just find that info on it’s own.
TAB: Path Finder utilizes some private APIs (such as Quick Look and Cover Flow), resulting in a much richer user experience. How much extra work does this require? When troubleshooting issues relating to private APIs, do you report these bugs to Apple, or ask them questions?
SG: Luckily, Quick Look and Cover Flow were pretty easy to figure out, and they worked well without having to hack around bugs or crashes. I try to avoid using private APIs, but in this case it was necessary. Quick Look is now a public API in Snow Leopard. I didn’t have to ask Apple about those two features. I did find a bug or two that I reported to them, but nothing that I couldn’t hack around.
TAB: I know that one of the biggest development tasks you had when developing Path Finder 5 was having to roll your own network discovery code (for SMB, AFP shares, etc). In Tiger, the OS did this for you, but in Leopard this was removed, and it was handled directly by Apple’s Finder. Can you clarify what was going on there?
SG: The AFP shares are handled by Bonjour, and it’s pretty simple, but finding the SMB shares was pretty tough. I’ve never understood the Unix philosophy, and SMB was written by these guys. All I wanted to do was get a list of shares, but I couldn’t find any documentation, and it took me weeks to finally get an answer from someone I had found online. I asked the same questions on IRC and email lists, and no one knew how to do something so basic. I even asked Apple’s Developer tech support and couldn’t get a working solution. Luckily, I found someone who told me the steps necessary to get it working. It involves calling these Unix tools and parsing the output and recalling the tools with other parameters. It’s a real mess to get it working properly.
TAB: Without violating your NDA, I’d like to quickly visit Snow Leopard. How ready is Path Finder for Snow Leopard? Are there any surprise changes such as the Tiger/Leopard network discovery? Will any of the new frameworks (such a Grand Central) have an impact on Path Finder performance?
SG: Path Finder is already compiling and running under 10.6, and I didn’t have to change much. As far as I know, there’s nothing new with network discovery, but I haven’t looked at it that closely. I haven’t had time to look into Grand Central or other new APIs yet. I’ve been too busy getting everything perfect on Leopard. Once Snow Leopard is released, I’ll be releasing a 10.6 only version that takes advantage of all the new APIs and I’ll investigate Grand Central and other new stuff.
TAB: You’ve been busy since the release of Path Finder 5, stabilizing issues reported and fixing bugs. Can you give us any hints on what else is being planned for the future, feature-wise? There are so many options that have been added; I couldn’t rattle any missing features off the top of my head. Is the wish list from users getting smaller?
SG: There are a few things on my list. One is a combined progress window and the ability to queue up copies and moves. Another is improving the desktop and icon view code to allow spacing adjustments. I’m also trying to think of new UIs I can create using Core Animation. The application launcher in Path Finder is my first Core Animated feature, but I want to think up new features. For example, I could do something like the Dock’s Stacks feature in Path Finder. The application launchers code was written to be reusable, so I basically have the code ready; I just need to figure out the best way of reusing it.
TAB: What about other products? Are there any other applications besides Path Finder simmering at CocoaTech that you can tell us about?
SG: Right now, there’s nothing else. I like working on Path Finder, and there’s still lots to do to make it even better.
TAB: You have an iPhone 3G; have you looked into iPhone development at all? Any plans for an app that integrates with Path Finder in some way?
SG: I did start a Path Finder for iPhone project and got it 90% done, but I haven’t released it. There were a few other apps that let you pass files to your iPhone and back, so I figured it would be hard to compete with those. Also, when the iPhone app store was opened I was 95% done with Path Finder 5 and had put down the iPhone project to get that finished first. I mainly started the iPhone project to learn how to develop on the iPhone. I’m very glad it’s similar to desktop development using Objective C. It’s my favorite language.
TAB: Apple has revolutionized mobile application development with the App Store. I read suggestions here and there on the blogosphere that Apple should create a Mac App Store, utilizing the same model. Do you think this a good idea? If there was, would PathFinder have trouble getting accepted? Besides its use of private APIs, it “Duplicates Existing Functionality of OS X.” Does Apple have too much control?
SG: I’ve been thinking the same thing. I don’t know why Apple doesn’t have an app store for the desktop Macs. I think it would be a great idea. I’m not sure if Apple would have a problem with Path Finder or not. Since I’ve been selling it for eight years already, I wouldn’t think they would reject it. I don’t think Apple minds if developers use private APIs in some cases. Sometimes an API works fine, but they don’t have time to finalize it and write the documentation so it’s kept private.
TAB: You claim you’ve never used Windows, apart from a few mouse clicks at a friend’s place. Is that true? How have you been able to avoid this your whole life? What about DOS?
SG: Yeah, I never used Windows and never used DOS. I used an Apple 2 in high school and at college used a Unix mainframe or a Mac to write software for class assignments. My first job out of college was at Alsoft which is a longtime Mac developer. I didn’t avoid Windows on purpose, but I just never needed to use it.
TAB: Your first Mac was a Macintosh IIcx; was this your first computer experience? What other platforms have you come across (such as Amiga, Acorn, Commodore 64) and used regularly?
SG: I used an Apple 2 briefly in high school just doing BASIC. After high school I did a little programming on Unix mainframes and then on Macs. I never used Amiga or anything else.
TAB: What was your path as a software developer? What was the first application you wrote? Did you do it just for fun? What language was it in?
SG: During high school I wrote some really simple BASIC applications. Nothing worth mentioning, and I had just enough knowledge to output text and simple graphics. My first real Mac app was for my senior year project at college. It was a data compression application, and I implemented a few compression algorithms. Stuffit was big back then, so I thought it would be cool to write a data compression engine. I think it was on Mac OS System 6. It didn’t work that great, but it was fun and educational.
After college I got a job at Alsoft. I went to college in Texas and Alsoft was one of the only Mac software developers in Texas, so I got pretty lucky landing that job. I didn’t know much about programming the Mac at that time, but learned a bunch between answering support questions over the phone. This was in 1991.
TAB: You said earlier Objective C is your favorite language. What about it distinguishes it from C++, Java and other OOP languages to you? Is it the language itself, or is it the design of the Cocoa framework that’s more important?
SG: The most important thing is that it’s simple and minimal. There’s not any weird obscure language features like C++ and no weird syntax. One thing I don’t like about C++ is they allow code in the .h file. It just seems unnecessary and just creates another place to look when trying to figure out the code. Another great thing about Obj-C is most programmers have a similar coding style. If I download Obj-C source online most of the time it’s written well or at least it’s easy to read and fix. That’s not true with C or C++, at least the stuff I’ve seen. There are also some Cocoa design patterns which are nice, like delegates and the new properties feature makes it much easier. Obj-C also doesn’t have multiple inheritance like C++ which is basically just one less feature that makes the code complex. Minimizing complexity is the key to software development, and Obj-C is less complex but has everything you need.
TAB: No interview is truly complete without some word association. What are the first thoughts that comes to your mind when you see the following words. Firstly, Steve Jobs.
SG: I have this negative reaction to celebrity and people worship. I don’t like to follow leaders or to put people above others. I don’t like hearing about the gossip and rumors. People should focus on their own lives rather than focusing on other people. None of that is Steve’s fault obviously, but any type of celebrity bothers me. I don’t know Steve and don’t follow all the stuff people say about him.
TAB: Windows 7
SG: I hope it’s good. It’s always good to have a competitor to Apple. The last thing I want is for Apple to become a monopoly and dominate the way MS does. Apple needs to lower their prices for one. Wouldn’t it be great if the OS was free like the old days of System 6? As a developer, it would be so much easier if all my users were on the most recent version of the OS.
SG: I’ve always hated phone companies with their impossible to understand bills and hidden extra charges. I’m hoping that someday WiMAX or some new wireless technology comes out and makes these guys obsolete. It’s stupid that, for example, I can’t use my iPhone when I travel to Japan. I don’t want my devices tied to a USA-only network with crazy roaming charges, etc.
TAB: Thanks for talking with us, Steve, I look forward to see where you take Path Finder in the coming years.
Steve’s personal blog can be found at freshcocoa.com.