App: The Human Story – My Story

There is a Kickstarter project that was started recently for a film titled App: The Human Story. It “is the story of the cultural phenomenon that touches all our lives.” It is about the people who make apps. Many of them are people I follow on blogs, and listen to on podcasts, and look up to. I simply had to back the project, and I did.

The producers of the film, on their blog, have asked that others involved in apps write about their own stories. This is my story.

Even though the popular term “apps” has only been in widespread use since 2007, in some way, apps have been a part of my life for over 35 years. For me, it started in 1977, when my Dad bought an Apple ][+ and brought it home. Almost immediately, I found the BASIC manual that came with it and started going through it page by page. I finished it in two days. Back then apps were simply called “programs”.

Your first programs are always very simple. In BASIC, it was probably something like this:

Which would print HELLO forever until you typed Ctrl-C, causing the program to be aborted. Back then there was no lowercase available. That came later with the Apple //e and an 80-column card that extended the width of the screen from 40 to 80 characters.

I don’t know what it is about that simple program, but when you type it in and then type RUN, something magical happens when you do it for the first time. You realize that you are in control. You can make the computer do whatever you want. It opens up a whole new world.

That was the start of my story. From there, I probably spent most of my time learning Applesoft BASIC. I would read Nibble magazine and type in the listings of programs I was interested in. Listings were the source code of a program in BASIC. They were pages and pages long. It would take hours or days to type them in. Many times, you have a typo, or other error and you would have to track them down. That was my first experience with debugging. Sometimes the listings would have 6502 assembly programs. So I learned a little of that too.

I advanced and wrote my own programs or apps. One of my first was a program to keep track of all my little league baseball stats. For each game I played, I would enter my at bats, hits, as well as fielding chances and errors. I could then see what my batting average and fielding percentage was for the year so far. It was a menu driven app, which was the fashion back then. All your commands were executed by navigating through a set of menus.

In 1984, the Macintosh came out and shook up the world. Now programs were called “applications” and they had graphical user interfaces, or GUIs. A little later you could buy a mouse for the Apple //e. You could write programs that could use the mouse. I started to implement a menu bar on the Apple // in 6502 assembly. I got it partially working but never completed it.

In college, I bought myself a Macintosh SE with a 20MB hard drive. I used it to remotely dial into the University of Utah’s computer systems to do assignments and, of course, write my own applications. I had learned Pascal back in high school and used it to write a tennis ranking system for college tennis. I took the Artificial Intelligence series of classes and used Lisp for a whole year. I came in 4th in the rover competition. We wrote AI programs to control simulated rovers. I think this was the beginning of NASA researching how they might control a rover on Mars. This was about 1990.

Always, my dream was to start my own software company and make a living selling applications. I wrote a Numerology program for the Mac using THINK C and the THINK Class Library (TCL). I never tried to sell it though. Back then you had to go through a publisher and get it in the store. I really had no idea how to do that.

This was the 90s and Apple wasn’t doing so well. I couldn’t get a job writing Mac applications so I moved to the Windows world. I still followed Apple, and, of course, I followed NeXT, the company that Steve Jobs started when he left Apple.

The first time I saw a demo of Interface Builder, I was amazed. I had to get it and use it to write applications. Interface Builder was NeXT’s tool for creating GUIs. You simply dragged buttons and other components onto the screen and set their properties. You could even create instances of non-GUI objects and then connect GUI objects to non-GUI objects to actually do something. One of the demos even showed how to do something useful without writing any code. You could connect a text field to a slider and then as you moved the slider, the text field would get updated with the value of the slider. If you entered a value in the text field, the slider’s position would update.

I believe the term “app”, originated with NeXT. NeXT applications were actually folders, called bundles, that had an extension of .app. This told the operating system to treat this folder as an application. Long before “app” became a household word, the Apple and NeXT communities used the term “apps” or “app” as a shortcut for “application”.

I dove into learning all I could about NeXTSTEP, NeXT’s application framework or software for writing apps, and learning Objective-C, which was an object-oriented language that was used to write NeXT applications. In 1993, I went to NeXT World, and I get a free copy of NeXTSTEP for 386. It would run on PCs, but you had to have just the right configuration. Mine didn’t meet it. Before then NeXTSTEP only ran on very expensive NeXT machines that I couldn’t afford. So all I could do with NeXT development was read about it. I did however implement a simple version of the Objective-C runtime at my job. I recreated as much as I of the THINK Class Library and used it to write object-oriented programs at work in C. I even had others using it. It worked pretty well.

Finally, Apple bought NeXT, and Steve Jobs came back to Apple. When OS X came out for the Mac in 2000, I knew my time had come to finally get to develop using NeXTSTEP, or Cocoa as it was now called. I bought a Mac Powerbook and started to learn Cocoa development.

In 2003, I started infiniteNIL Software. I began writing Cocoa software full-time, writing my own apps and doing contract work.

The first Mac Cocoa app I wrote and sold was PhoneWord. With PhoneWord, you entered a telephone number and it would tell you all the phrases that you could make with that number. For example, the number 555-3865 could be turned into 555-DUNK. Each digit in a number has letters associated with it and you substitute a letter for a number and see if you can make a word.

Another app I wrote was Packrat, a desktop client for 37signals’ (now called Basecamp) Backpack web app. Backpack was a personal information system.

These apps I tried to sell on my website. I would upload them to MacUpdate and other download sites.

Apple became more and more popular again with the release of the iPod and people switching to Macs either because they liked the iPod and they wanted more products from Apple or because they were tired of all the problems with Microsoft Windows. More and more software developers, like myself, “went indie” to write their own software and sell it on the internet.

Then in 2007, everything changed again. Apple announced the iPhone. I bought it right away because I wanted to write apps for it and it was a very cool device. I remember be crazily excited during the announcement. It was pretty much everything once could imagine in a device. In 2008, when Apple announced Cocoa Touch, the SDK for the iPhone, we all were very excited. We could finally use the great Cocoa frameworks to write iPhone apps.

My first app, Numerology, was released when the App store opened for the first time. Earlier, I had written it for the Mac, and this time I brought it up to date for the iPhone. Over the years, Numerology has done way better than I ever expected. It started slow and at one point it got to the point where I completed lived off my Numerology earnings. That lasted until 2012. Since then it has decreased, but it still pays my mortgage.

Other apps I have released are:

  • PhoneWord, the iPhone version of the Mac app I wrote earlier
  • Numerology: Baby Namer, an app that used numerology to help you name your new baby.
  • Favors, an app that lets you give IOUs to people that they can add to their Passbook. Apple rejected this app, saying my IOUs didn’t meet the definition of coupons that could be added to the Passbook.
  • Pitching Radar, an app that tells you how fast a baseball pitch is and lets you record pitches, keep track of the average speed and pitch count, and generate a report. Pitching Radar is written with RubyMotion.

PhoneWord, Favors, and Baby Namer have all been discontinued. Favors was rejected by Apple, and the others just haven’t sold well. Pitching Radar shows promise, and Numerology is my best seller.

Even though I haven’t been a great success at selling apps, the dream lives on. I do more contracting work now and there is a thriving job market for iOS developers. I still have ideas for apps and hope to find that one app that will let me go completely “indie”, and forge my own destiny. It has always been my dream and probably always will be.

A New Start

If you haven’t noticed, my weblog has a new design and new content. I have switched from WordPress to Octopress and have used a new theme. So far, I like it. It’s nice to be able to use Markdown instead of some slow web tool to write my posts.

My old blog was mostly political commentary and I’ve decided to remove that. Some of my most popular posts were the posts about my sabbatical that I took in the summer of 2002. Those, I have preserved and ported over to the new system. I enjoyed reading them myself. You can find them in the Sabbatical category.

Going forward, I would like to focus more on technical articles. Occasionally, I might talk about some personal interests. I will avoid political commentary. There’s enough of that on the web and it really doesn’t accomplish anything or help anyone.

Rod