ChangeLog #1: hacking, branding, and EC2
Total earnings as of February 1, 2010: $0
I’ve been busy the last few weeks working on many of the things it takes to turn Every Single Shot from an idea into an actual product.
The last few weeks of work have been really, really fun. Not only have I been coding Every Single Shot, I’ve also worked on branding and setting up hosting. Every day is a different job and I’m really digging the variety. Here’s what I’ve been working on lately…
Development
Where would a web app be without code, right? I’ve spent a fair amount of time in my IDE hacking away to get a basic app up and running (ESS is written in Groovy and Grails). Here’s what I’ve got so far:
- Public facing marketing site: home page, tour, sign up, contact us
- App pages: photo browser, photo uploader, account settings, and a few others
I’ve still got lots of functionality and features to add in – lots. Security is going to be a big one coming up. Another is integration with Amazon’s S3 (more on that below). Oh, and I also need to remember to add in actual features that users care about as well.
Here’s the current LOC (Lines of Code) count for ESS (from running grails stats):
+----------------------+-------+-------+ | Name | Files | LOC | +----------------------+-------+-------+ | Controllers | 14 | 803 | | Domain Classes | 15 | 266 | | Jobs | 2 | 59 | | Services | 3 | 105 | | Tag Libraries | 4 | 205 | | Groovy Helpers | 3 | 116 | | Java Helpers | 3 | 81 | | Unit Tests | 29 | 374 | | Integration Tests | 1 | 40 | +----------------------+-------+-------+ | Totals | 74 | 2049 | +----------------------+-------+-------+
ESS’s code base is surprisingly small right now – that’s part of the beauty of Grails.
Branding with a graphic designer
This marks the first time that I’ve paid someone to help me with my business, and I couldn’t be happier with the job Christine did (and is still doing). And it was fun. Really, really fun. To see an idea go from floating around in my head to something real was a very rewarding experience. I’m so glad I decided to pony up the money and pay a professional to help with the branding and UI – I can guarantee that any design I would have come up with would have scared away any potential customers.
Given my target market (young fiancés), I knew the design for ESS needed to look good. Mission accomplished!
Here’s the final logo for ESS that Christine created:
See if you can figure out why I didn’t want to do the graphic design myself from the example below.
I needed to put up one page at www.everysingleshot.com just to collect email addresses for my mailing list. It needed to be simple, quick, and get the job done. Here’s my take (click images for full size screenshots):
And here’s the version I made after some help from Christine:
But Christine didn’t just whip up some nice graphics, she also did great work with helping me define and focus ESS’s brand and marketing message. As a developer first and a marketer last, I can’t understate how important it was to have a creative branding person helping me with this aspect of ESS. I’ve been doing a lot of reading on branding and marketing and I recognize their importance in creating a successful product, so I’m really thankful that Christine was able to help me so much with them.
Contact me (jon at juliesoft dot com) if you’re interested in having Christine do some work for you (I don’t want to plaster her email address on here) – I’ll forward your contact info to her.
Hosting on Amazon’s cloud
I used a combination of cloud (Amazon’s EC2) and traditional (eApps) hosting platforms for SendAlong. It worked well enough, but I didn’t like having to manage the two different environments. Plus, the apps on the different platforms needed to talk to each other, and getting them to communicate reliably all the time was kind of difficult.
This time I decided that I wanted to keep the hosting platform homogenous. I also decided that there were at least a couple of different “cloud” services that ESS was going to use such as storage (like Amazon’s S3) and a CDN (like Amazon’s CloudFront). I researched a few different cloud hosting providers including Amazon EC2, Slicehost, Rackspace, and Joyent. I also found a great performance comparison of some cloud hosting providers.
Amazon and Joyent were the front runners, but I decided to go with Amazon mainly because they’re stable, they’ve been around the block a few times, they’ve got good documentation, they’re fairly easy to use, the nice integration between all of their services…the list goes on. I’m not saying Amazon’s services are right for everyone, but they suit my needs for Every Single Shot really well.
After choosing a hosting provider, I needed to get a server set up. That’s where the real fun came in. (If you didn’t know I was a geek, the last two sentences are all the proof you need.)
I’ve dabbled in Linux and the bulk of my command line experience has been in MS-DOS. I’ve had a Mac for the last year and have gotten a little more comfortable with using a real command line, but all of that experience was nothing when stacked up to what I learned in the last two weeks while trying to build out a server with all the goodies ESS would need on EC2. I wouldn’t have said that I was a command line n00b before two weeks ago, but now I think I can back it up. Where have pipes, grep, and shell scripts been all of my life?
While I was working on configuring an Amazon EC2 AMI to my liking (Apache, Tomcat, MySQL, etc.) I came across a fantastic EC2 resource. If you’re running Ubuntu on EC2, or are trying to figure out what OS to use for your EC2 set up, have a long look at Eric Hammond’s alestic site. Not only has Eric provided some top notch Ubuntu server AMIs, but the Canonical team (the people behind Ubuntu) has really embraced Amazon EC2 and provides several “official” Ubuntu AMIs to get started with. I feel completely comfortable using these things in production – it’s obvious that the Canonical team has put in a lot of work on their Ubuntu AMIs.
The coolest thing about these Ubuntu images (I’m using ami-1515f67c on an EC2 small instance, btw) is that you don’t have to rebundle your own AMI on top of them (if you’ve worked with EC2 in the past you know what I’m talking about, and if you haven’t, then just trust me that this is a good thing). This is where I learned about the wonderful world of apt-get, which handles installing a lot of common software for you. Having used Windows most of my life, I’m still not used to this, but package managers are one of the best things about the Linux platform. Need to install Apache2? sudo apt-get install apache2. Need to install Tomcat6? sudo apt-get install tomcat6. Of course you’ll need to customize the installs sometimes, but that’s just a matter of writing a shell script.
Since there’s no need to rebundle your own AMI, there must be a way to configure the base AMI easily, right? Indeed, and of course Eric Hammond has already taken care of that for me. With literally one command, I can launch an EC2 instance (for test or prod), attach a static IP address to it, attach a persistent EBS volume to it (for storing MySQL data), install every software package I need (Apache, Tomcat, MySQL, etc), check out ESS from source control and build it, and have it up in running in about 5 to 10 minutes. This means that when I’m ready to test a new version of ESS, I can issue a command to do all of the above, plus run through all of my automated tests. As long as testing takes me less than 60 minutes, total cost out of pocket is 10 cents.
Yes, I’ve heard that Amazon’s EC2 isn’t as fast as some of its competitors. I’m willing to live with that for now, especially considering that I can run a new server with 10 times the RAM and CPU power with a single command if I need to.
(I’m going to write another post about EC2 and the other Amazon web services in the future that will have lots more helpful information – so remember to subscribe to my blog if you haven’t already.)
Timeline and goals
I need to get a beta out soon. I’ve been developing in a vacuum for too long. My goal is for a February 15th beta release, then rapid iterations based on user feedback (sign up if you want to help), and then a 1.0 release on April 1st. That should give ESS some time to get a bit of marketing traction before the heavy wedding season starts in May.
I’ve got big plans for ESS, so I’ve set some stretch goals.
- Goal #1: 10% of income will go straight to charitable causes (that’s pre-tax, pre-expense income)
- Goal #2: 100 new paying customers per month by July 1st, 2010
Do you have a suggestion on how I can improve these goals? Leave a comment and help me out!
See you next week!
Entrepreneur and geek - a dangerous combination! I'm living my dream - running my own software business and working on its second app - 








Recent Comments