This is the first in what I hope will be an enlightening series of posts tracking the development of my first Cocoa Mac application, Napkin. Getting to this point has been a long journey, and I can see there’s still a long way to go. But at this point, at least, I’m starting to write some code, and I’d like to have a way of documenting this very complicated process: share my forks in the road, and how I chose a particular way.As a first-time developer, what I write here may appear hopelessly naive to experienced developers. On the other hand, aspiring developers may find inspiration in discovering that someone as ignorant, wrong-headed and unqualified as myself could complete a Cocoa project!
So, let’s have some background to get ‘er started. Currently a 35-year-old resident of the sleepy bedroom community of Whitby, Ontario, I have a wife and 4-year-old daughter. In my day job, I run my own web development shop, which I’ve been doing successfully for over two years.
There’s not a lick of code that I was taught in school. In fact, I was an English major in University, and math was my weakest subject in high school. When I got to University, my big interest was my job at the school paper, first as production manager (in charge of all the Macs), then as Editor. So I picked up a master’s degree in Publishing, got a job helping run the Compaq.ca web site, moved to HP in a similar role, and got laid off.
Now, all this time, I’d been teaching myself PHP and MySQL development. I sure as hell wasn’t employing it at Compaq, but I was just fascinated with the whole notion of back-end application development. Over the years, I built up a freelance business in my off hours, so that by the time I was let go at HP, I was able to make a full time go of it.
Running my own business is a great gig. Not having a boss to answer to remains the number one reason for being self-employed, and I can’t fathom anyone subjugating themselves to the caprice of some thoughtless middle manager for the sake of a capped, mediocre salary. I work at home, with my wife and daughter flitting through the house during the day. I’m a part of their lives day-to-day, and they are a part of mine.
But the situation isn’t perfect yet. The most dangerous part of my work is the peaks and valleys of the money I earn. While my overhead expenses are extremely minimal, I still need to pay myself, and there isn’t always the cash in my account to do it. As it turns out, clients can be extremely reticent about paying their bills. Where you might expect 30 days to be a reasonable turnaround for bill payment, most of my clients don’t pay for 45, 60, 90, or even longer. There have been times when I haven’t had enough in my account to pay myself, but I’ve got $20,000 in my receivables that are overdue!
And of course, there’s the big fear: at any time my business could dry up and never come back. I can never tell you what I’ll be working on two months from now. But every time I think that, work always materializes and my life goes on. Still, there’s always this concern in the back of my head.
In light of all this, it would sure be nice to have a line of business that depended on only myself to put out a product — rather than a client to decide to hire me. And the revenue curve for the selling software is very different than the curve for selling my consulting services. They are quite complementary, in fact, and together could very nicely smooth my revenues.
When it came time to decide what product to make, it didn’t take long to come up with an answer. I’ve always wanted to learn to program the Macintosh, but every attempt had ended in failure. But now, I have ideas for applications that I’d like to sell, and I was feeling very motivated. In 2007, I attended the C4 conference in Chicago, where I met independent Mac developers like Mike Piatek-Jimenez, Manton Reece and Daniel Jalkut. These guys were very inspiring! I wanted to do what they were doing.
I already owned Aaron Hillegas’s book, Cocoa Programming for Mac OS X. This is the bible for beginning Mac developers, and I was working through it as often as I could. And frankly, that wasn’t often enough. Over the past two years that I’ve been giving this effort a prominent place in my mind, I really hadn’t accomplished much. I was certainly becoming familiar with the lexicon of Objective-C and Cocoa, but in a practical, acutally-use-the-damned-thing sense, I was a like a young black bear wandering out of the woods to cross Highway 11. A bad scene.
Next: The Choices