Back in September 2008, my wife decided it was time for her to get an iPhone. Being a software developer, I welcomed the decision. Earlier that summer, Apple introduced the iTunes App Store and along with it, the opportunity for a little bit of supplemental income. I figured the iPhone would be a write-off on our taxes, as would the Mac I'd need in order to do the development.
One of the guys I used to work with, who runs Open Stack, Inc., had been earning a couple of hundred dollars a day on his slow days. That was a nice incentive for me. Knowing what he developed (and actually paying for it), I know that it is going to take a lot of apps to make that kind of money for myself but even if I can earn 10 or 20 bucks a day, I'd be money ahead; my internet connection and cell phone bill would be covered. Fortunately, my wife is a genius when it comes to marketing and she could probably sell snow to a polar bear. She's got a lot of great ideas for apps which, when I put them together, may produce a decent income stream for us.
Thus, it was decided. We formed an LLC for our activities, at a cost of $160 in Minnesota. We paid Apple the mandatory $105.69 after sales tax for a developer account. I spent $7 on a domain name, 3dogsandacatsoftware.com. I already had a server running Apache, and installing Drupal on it for content was no big deal. I bought a used Mac off of eBay for $350 or so with Leopard already on it. All in all, for under $1000, we got the business side of things off the ground. If I manage to make 10 bucks a day, that venture capital from myself will be paid back in a little over 3 months. It would certainly be nice to turn a profit this year.
The Learning Curve
Being a Windows and Linux guy, I'd never done any sort of development in a Mac environment before. And although I'm very adept at C, C++, and C# programming, I'd never looked at Objective C. I knew there would be a learning curve for this. So I figured the best thing to do to get a feel for the overall environment was going to be to write something simple. If I could sell it, great. If not, oh well; I could write the time off to education.
My first great masterpiece was going to be a simple stopwatch. A couple of UI buttons, a text field or two, changing the button text depending on whether the stopwatch was running or not. It should have been simple stuff. Then I remembered Ares' first law of computing: "Should" is the biggest 6-letter word in the English language".
With a large background in Windows development, I've found that Microsoft's tools are incredibly simple to use. I could have cranked out this stopwatch in about an hour using C# and Windows Forms. Why? Because when you put a button on your form in Windows, and subsequently double click that button, it takes you to the event handler in the code for a single click of the button. If that handler doesn't exist, one is created.
XCode doesn't work that way, and the Apple Developer documentation for it isn't all that helpful in that department. After you've created the UI in Interface Builder, you go over to your Controller class file, and create methods for the buttons tagged with the IBAction #define'd keyword, along with IBOutlet's for putting data back to the screen. After that, you link the IBActions and IBOutlets to the individual components using the properties sheets in Interface Builder. Its not the world's most intuitive interface for creating apps, and honestly, the Microsoft development tools are far easier than the Apple development tools, but it works, and once you get used to it, its just fine.
After about 3 hours of reading and coding example programs to see how its done, and 5 hours of coding on my app, I finished the first incarnation of my simple stop watch. It was a very simple stopwatch, a start/stop button, a reset button, and a time display. I figured if I made 20 paid downloads on it, I'd have an extra 14 bucks that I wouldn't have otherwise had.
An actual product with features
Then I got the brainy idea to put in a lap timer. Most electronic stop watches have some sort of split button, usually co-located on the reset button so that when the stopwatch is running, it times individual laps. This wasn't going to be just any lap timer though. Given the physical user interface of the phone with the touch screen, I could put a scrollable table with a history of all the lap times for the particular "run" of the stopwatch. Five hours of reading and coding later, I had the table in place and working very well in the iPhone simulator.
Unfortunately, it was at this point where I had to take a break from my new side business. The semester was coming to a close, and I had final projects to complete and exams to study for.
After returning to my code, there was one last feature I wanted to implement before turning the app loose on the world. I wanted the stopwatch to continue to act like it was running in the background, even though it really wasn't. A few more hours of coding and debugging, and not only was the app saving the fact that it was running and how long it had been running, but it was saving the lap splits as well. I was starting to feel really really good about this thing. Maybe, just maybe, I'd actually have an app that someone would pay for, not just the people who will buy anything when its new.
An Art Lesson
I am not an artist.
Never have been. Never will be. There's a reason I use a content management system for my web sites rather than design them entirely myself.
I bring this up because after the technical aspects of my application were complete, it dawned on me, in much the same manner that it dawned on Clark Griswold in Christmas Vacation that he'd forgotten a saw when foraging for a Christmas tree, that I needed an icon for my app. I figured I could easily do a simple analog stopwatch with a couple of buttons and traditional hands. I opened up Windows Paint. I produced a pixelated piece of garbage, even when zoomed out to normal size. Then I came across Creating iPhone App Style Logos - GIMP. I successfully produced, in a matter of a few hours, a multi-layer GIMP project with the look and feel of an iPhone icon, complete with the requisite highlight across it. Oh yeah, and the curves were anti-aliased and transparent as well.
Alas, the highlight made the icon look like a periscope view which was half below water, so I eliminated it form the final version of the icon. Since I did the icon in layers in the GIMP, it was a matter of clicking a check box to turn off the highlight. I tweaked the project settings so that the phone wouldn't put it in either. In the future, I know this is an automatic thing, and I can eliminate that particular layer from my template.
In addition our oldest daughter is a very talented artist, having taken first place in the district for the 2009 Congressional Art competition. When she's done with high school this month, I've got a corporate logo, as well as a "professional" looking icon coming from her, for which she'll be paid assuming the app and company make any money.
My wife, ever the marketer, decided that "Stopwatch" wasn't a good name for an app, and I couldn't argue with it. We came up with iCoach, with plans for even more features in the future.
Getting the app onto the phone
Actually deploying the app is not the most intuitive thing one can do. After being approved into the developer program, there's a long drawn-out process of getting certificates, and provisioning profiles from Apple, sacrificing a lamb, and other such ceremonies in an effort to get the app into the phone. If its all done correctly, the deployment works and you have a fully functioning app in your phone. After about four hours of fidgeting with it, I got my app and phone provisioned for one another, and my app is now on my phone.
Time Breakdown
Activity | Time Spent |
---|---|
Education | 4 hours |
Coding | 13 hours |
Artwork | 4 hours |
Provisioning | 4 hours |
Web site setup | 2 hours |
Total time spent on iCoach: | 27 hours |
The Payout
Given that we're just in the process of uploading the app to the app store, we don't have any results yet. This morning I noticed one bug I want to fix before we release the app (if the stopwatch isn't running when the app exits, the existing split data isn't retained). Even if we don't sell any copies of it, I've learned an awful lot about the whole development process for the iPhone, and with less than a single work-week worth of development time put in on the project, I've got a great footing for future apps that I have in mind; apps that might actually make us some viable money. In fact the next app I've got on my plate has one other app with this particular feature set available. With iPhone OS 3.0 on the horizon, its feature set will greatly enhance this idea. W00T!
I'll update this page as we get some sales numbers so we can see exactly what the payout is!
At 6:18pm on Thursday afternoon, 11 June 2009, I received an email from Apple stating that my iCoach was approved for sale. I was surprised, and pleased. I changed the availability date to the following day, so that it would appear in the new apps. Over the course of the next 3 days I had a total of 13 downloads from customers in 6 different countries, 7 from the US, 2 from the UK, and 1 each from France, Israel, Australia, and the Czech Republic. I wasn't expecting the drop to one download on Sunday, but it kind of makes sense, as it was after all, a Sunday.
We'll see how the report goes for today's downloads tomorrow morning with an update to follow. It may or may not be time to drop the price to free in advance of the next iPhone release this Friday, just to get the download count up there.
Still, after factoring in exchange rates, I'm $8.70 richer than I was on Thursday afternoon. Not bad for an app that was only intended to be an educational tool so I could learn the environment.
Now to get the Mac updated to OS X 10.5.7 in anticipation of the iPhone 3.0 SDK.
Blog comments