Several years ago, whilst I was studying at University, I setup a small hosting business specifically aimed at students on my course and in the University campus. As a side-project to build some funds during my studies, the business was great. Over time, I built up quite a large portfolio of hosting customers.
However, there was always something that bugged me: trying to keep track of when customers' hosting accounts were due to renew, and when I should bill them. As the number of customers increased, so too did this administrative headache.
Roll Your Own
I tried the obvious solutions - setting reminders in iCal; a spreadsheet listing all the renewal dates, even pen and paper! All these just ended up becoming out of date very quickly, and none did a good job of reminding me when to send bills to customers.
With a shiny new Mac, I was eager to try out the Objective-C/Cocoa platform and it seemed I'd found a perfect opportunity. I wrote a very simple application - HostManager - that listed each of my customers' domains and hosting renewal dates. It then automatically synchronised these with iCal.
The original HostManager interface (circa 2006).
I released the first builds back in 2005. As people began to download and use HostManager, it became increasingly obvious I wasn't the only hosting business with this problem! I listened to feedback and requests from people, and slowly HostManager grew into a sizable application for keeping track of domains and hosting, as well as clients. Almost by accident, I'd built a small CRM application!
After a few point releases, the HostManager code was becoming bloated and buggy. With feedback pouring in, and a better knowledge of Cocoa and software design than when I had started, I decided to build HostManager 2.0 from scratch. After several false starts, though, the project slowly moved into the realms of vapourware.
I'd never really felt at ease with Cocoa or Objective-C. It always seemed to be an uphill struggle to do even the simplest of tasks, and with Apple's user interfaces constantly changing (and people's expectations changing with them), I found myself spending more time trying to code custom NSTableViews than actually writing the business logic code. I gradually came to the conclusion Cocoa wasn't for me.
By now, I'd graduated from University and had setup business as a freelance developer. I'd been writing web applications in PHP, and software-as-a-service (SASS) was becoming the latest buzzword. I'd also been hearing a lot about something called Ruby on Rails.
Having moved from Apple to Ubuntu (a dying MacBook Pro being the final nail in the coffin for me and Apple), I decided to give Rails a try. I'd been using symfony for PHP, and had learned to appreciate the benefits a framework brought to building web applications.
It wasn't long before I was hooked. PHP was fast becoming a distant memory as I coded in a language that just seemed so much more intuitive than Objective-C or PHP could ever be. Driven to learn Rails, I quickly became a lot more confident coding in Ruby.
It was now 2009 and whilst I was comfortable with Ruby on Rails, I needed a big project to really get to grips with it. I'd always wanted to finish HostManager 2.0 - I was still getting regular emails and feedback from people - and so my choice of what to build was almost made for me. In 2009, HostManager 2.0 - codenamed Amberleaf after an Autumn-evening walk home - was born.
Spending many evenings working on Amberleaf, I finally had something ready to release in 2009. I emailed the list of existing HostManager users to let them know that Amberleaf was replacing HostManager, and they were all invited to private beta. This was great for getting early feedback and direction into how Amberleaf should develop.
The original HostManager software was designed to do one thing: tell me when to bill my hosting customers, and how much to charge. The growth of Amberleaf from this simple beginning has been astounding - it now does far more than I ever thought it would! Rather than continuing to add features, though, it's important that I take the time to simplify Amberleaf.
Amberleaf was launched a couple of months ago now. Since it launched, it's had a complete makeover to clean up legacy screens and improve the overall experience. Amberleaf currently manages almost 500 domains and 200 hosting accounts.
Building Amberleaf has been a great experience. I don't doubt that the lessons I've learned so far will be useful for this and every other project I work on. Starting an software business can be frustrating - but is also incredibly exciting, educational and rewarding.