- What do you currently do?
- How did you get started in Mac and/or iOS programming?
Around second grade, I took a summer class at the elementary school where I learned BASIC on the Apple II. In middle school, I took an after-school class in Mac programming using Pascal and System 6. Then I read a book by Dave Mark about programming Macs with C. I was very interested in Macs at the time, but I was not fond of the old Mac toolbox APIs and didn’t think I wanted to be a professional programmer. My high school didn’t offer computer science, but the local college let me take some courses, and I found that the field was much deeper and more interesting than I had thought. I learned C++ and the PowerPlant framework. Then Apple bought NeXT, and I was excited to learn about Objective-C and the APIs that became Cocoa. In college, I majored in computer science. The programming assignments were mostly in Java and Scheme, but on the side I was reading the Mac OS X programmer mailing lists and the Apple documentation.
- What was the first app you created and what did it do?
The first app that I released publicly was DropDMG. Mac software is distributed on disk images (.dmg files), and at the time there was no easy way to create them. You had to type a series of commands into Terminal. I wanted something simpler, an app where I could just drag and drop a folder and it would create the .dmg file in one step.
- Where did you get the idea for the app?
Aside from needing disk images to distribute the apps I planned to write, I was also using disk images for all sorts of archiving and backup purposes. On the classic Mac OS, there was a great app called ShrinkWrap for creating .img disk images. But for Mac OS X, there were only a few scripts and basic apps, none of which were as easy to use or reliable as I wanted. So I decided to build my own app.
- What went well? What could have gone better?
The initial development process went smoothly. The app did what it was supposed to do reliably, and it was even AppleScriptable so that it could be part of an automated workflow. People seemed to like it, and some even paid the shareware fee.
The original icon that I designed myself was pretty bad. The app didn’t have very many features. The progress bar couldn’t estimate the time remaining. But in retrospect, I’m glad that I shipped the 1.0 that I did, and I was able to keep improving it from there.
- What is your favorite among the apps you’ve developed?
None in particular. I use each of them every day, and each is special in different ways.
- What advice do you have for young people who want to make apps?
There’s certainly something to be said for getting the Hillegass book and just diving in and experimenting with what interests you. You don’t need to ask anyone’s permission or even buy a compiler these days.
However, I’ve also found that programming became much more fun and productive after I’d taken some college computer science classes. More academic study–via classes or books that don’t mention any operating systems or APIs in the title–is an efficient way to learn the theory behind what you’re doing. That will give you a structure for how to think about things and teach you some “unknown unknowns” so that you can avoid making certain kinds of mistakes.
Keep practicing and trying to get better. You will get stuck from time to time. Don’t give up.
Also, study the apps that you use and try to figure out what you like and don’t like about them. What does the user interface do well, and how would you improve it? Try to imagine, either in terms of interface or APIs, how you would build an app to solve the same problem. Which areas do you expect would be the hard parts? Think about what the tricky cases would be and then see how well the app handles them.
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.