Technical Notes
This is for the gritty details about how the website was put together.
I decided to use Django as an application framework for several reasons.
- I like Python. Django is written in Python, and Django programming is Python programming. But that's not the only reason.
- I also like how the framework uses a Model-View-Controller paradigm (although some authors prefer to express it as "Model-Template-View"). The database schemas are written in one place, HTML templates go somewhere else; both are independent from the URL scheme the web designer wants to use. This is a good thing. Loose coupling gives me freedom to experiment with one component without worrying about "breaking" something else. In addition, I'm not forced into producing crufty URLs.
- Finally, I appreciate how the designers have given a lot of thought to security. The modelling part of the Django framework generates all the raw SQL for me, and auto-escapes input unless not asked. This protects against SQL injection attacks.
These points are also reasons why I decided not to use PHP. It's easy to write PHP, but it's hard to write clean, SQL-injection free, PHP. I don't have any objection to learning the language, but not right now. So no PHP here.
The drawback with Django is that there aren't that many cheap hosting services that support it. Fortunately, they exist, and there even exists a site called Djangofriendly that lists them. The hosting service with the highest number of votes was WebFaction, so I chose them to host this site. It's not that the the prices were that low from an Australian perspective; it's that WebFaction permits a lot of flexibility for such a low figure. Down here, $9.50 US a month will generally get you a couple of 100MB of memory, and a MySQL database if you're lucky.
I've got a rough LAMP software bundle going - for a given value of "LAMP". I have the Linux OS (CentOS 5.2 to be precise), and Apache for a webserver. However, I've opted for PostgreSQL instead of the standard MySql database, as Webfaction supported it. The P stands for Python (and Django), of course.
I am planning to get roughly the same setup - Apache, PostgreSQL and Python/Django - working on my home machine (WinXP SP3), so I can check URL dependencies on my PC before loading them to the server.
The domain "downandoutofsaigon.net" is registered through MelbourneIT.