I’m Raul Torres, Creator of Everblog, This Is How I Made the Application

I’ve been wanting to do a blog post on how I created Everblog.  This will be a high level overview, I’ll elaborate on some points in other blog posts.  Let’s get started!

My Machine

I use an Amazon EC2 Windows instance for most of my work.  I use the Large instance, which costs $0.460 an hour, which isn’t too bad.  Most of the real costs comes from hard drive space, which is $0.10 per GB-month.  I end up spending $10 – $20 depending on how much development I do during the month.  The VM has about 8 Gb of RAM and an Intel Xeon E5507 @ 2.27GHz processor.  Not super beefy, but that’s a bit under the specs of my work laptop.  I’m still on the fence if using a cloud instance to work is worth it in the long term.  An equivalent laptop would be  $300 – $500, but I’d have to carry that with me all the time. I think the ability to use any thin client (even my iPad) offsets some of the costs, however needing a connection to your box to get work done can be a bother sometimes.

Software / Tools

I use MRemoteNG to log into the Amazon EC2 instance.  MRemoteNG is a great tool to manage logging into multiple machines.  I’ve got Visual Studio 2010 installed with ReSharper.  I’ve heard many developers mention that if you are not using ReSharper you are doing your clients a disservice.  After using it for over a year at work I completely agree.  It really has changed the way I code.  If you’ve never used it and are a .Net developer you should check it out.  I am using Git as my source control.  I’ve opted to use BitBucket over GitHub because of the private repos.  Eventually I’d like to make Everblog open source, but I’ll stick with my private repo for now.  I was using Trello to organize my tasks, but that fell to the wayside.  I need to get that up to date again.  I also use CodeSmith Insight to do some error reporting.  It’s super helpful and should be part of all .Net developers tool set.  Since I don’t have a QA team I can prioritize what bugs to fix based on “user input” (as in my users have found the bug) rather than wondering what works and what doesn’t.

Hosting / Deployment

I use AppHarbor to host this site and Everblog.  I’ve always been very interested in cloud computing.  I did some preliminary research to Azure and EC2 and didn’t like the price models to host a site. Paying hourly for the smallest instance on both providers seemed a bit high.  I may need to revisit this based on some updates that Azure has released, but I have yet to hear a success story  about Azure from any of my peers.  I decided to go with AppHarbor because they give you one free thread for each project.  This makes it is ideal to make a quick prototype and having running in little to no time.  Adding an additional thread is about the same amount of hosting on an Azure or EC2 instance (the last time I looked at it).
I have two applications for each project, a development and production instance. The code is all from the same repo.  I have auto deploys on for dev, and have to actively deploy for prod.  App Harbor will also run any unit tests you have and won’t deploy the build if they fail.  It’s not as robust as TeamCity, but it gets the job done.  I don’t have any regression tests yet.  One of my goals this year is to learn more about Selenium and WebDriver.  There are a few things I’d like to improve on for this set up, like being able to deploy a certain branch and a better testing strategy.