2008-09-07

Baby steps with Google App Engine

You know that mythical personal web site I have been talking about for months? Well, today I finally started work on actually implementing www.DrBrett.ca (warning: it's ugly until I get around to doing some CSS for it). I figured I might as well blog about how this entire process goes to help others out and to keep track of stuff.

First of all, I am deploying on Google App Engine under Django. I using GAE as I am not a sysadmin and I do not want to have to worry about keeping my web server up any more. There is also the side benefit of preparing me for my internship with the team come November (I don't know what I am working on so don't bother asking or making requests for features). I am using Django because I love the community that has built up around the project. Plus the team leads are all really nice fellows.

Because I am using Django under GAE, I watched Guido's Google I/O talk on Django and GAE. That made me realize I really wanted to use the GAE Helper for Django. Knowing all of this I downloaded the OS X SDK, the docs, the GAE Helper for Django, and got to it.

The GAE Helper for Django makes starting a Django project REALLY simple. Because the Helper doesn't support Django 1.0 from the download and I am starting out small, I just used the version of Django included with GAE. I then went about to creating a dumb little app that does nothing more than directly return a rendered template for my index.html so that I can play with the site look to start.

I also registered my domain with Google Apps. That allowed me to deploy my app on my domain. The only drawback is that GAE doesn't support a naked domain (e.g., drbrett.ca), so I had to explicitly set my site to www.drbrett.ca. Not a huge deal, but still, it would be nice to be able to forward from the naked domain to www.drbrett.ca (my DNS host service doesn't seem to have the support itself).

At the moment I have nothing more than a Django site with a single app that does nothing more than return render_to_response("home.html") for my index page, that's HTML 4.01 Strict compatible and is under revision control with Hg. But it still feels good to have the darn thing moving forward.

At this point my plan is to use the site for content that I want to have written down somewhere and that I don't have any problems sharing publicly. I don't expect the site to be of any huge interest to most folks, but I am looking forward to learning how to do a proper web app.

Next step, figuring out how to do unit tests before I move on to something that is in any way complicated.