Tuesday, 15 November 2011

Starting a New Project

Introduction
I'm starting a new project which is hardly revolutionary in what it is, a dynamically generated web site powered by a relational database with Latex being used to generated formatted PDFs. That's as much as I'm going to write about the project for now.

The problem is that this is a low capital out of hours project and this means my toolkit is considerably different to what I'd use at work. If I were planning this using any tools I wanted I'd most likely be using Microsoft SQL Server as the database, Windows 2008R2 as the operating system and a mix of C# and ASP.Net all developed in Visual Studio 2010.

There is a slight problem with this, two in fact. One: I can't afford to licence all that software for home use, two: I'm not going to use any work equipment or software. As annoyances best come in threes I'm also deciding to make sure I don't use any technologies used by my employers as this creates a complete separation between the two pieces of work.

What I'm Going to Use
Database
I'm not expecting massive traffic and coming from a relational database background I have no real interest in trying a noSQL solution just for the sake of it. This leaves two real contenders in the running MySQL and PostgreSQL, after a complete lack of careful consideration I went with PostgreSQL for the following reasons.
  1. MySQL has traditionally been a bit of a lightweight database (although now much better), PostgreSQL has more of a reputation as a serious database
  2. I like the PostgreSQL documentation style more than that of MySQL
  3. PostgreSQL has better ACID compliance
Language
This was the hardest choice as coming from Java and then moving into COBOL and then to C# I had a whole host of languages all needing something more expensive than a cheap hosting package.
The obvious choice was PHP which for small projects seems to be the de-facto language of web development. I don't yet have a deep hatred of PHP as I've not needed to use it for more than trivial applications, but research seemed to suggest that after any amount of time using it I would grow to hate it. This left (as far as I was concerned) Perl and Python and given a choice between line noise and copious amounts of white space I decided on Python. This should be interesting as I've never actually done anything serious in Python.

Framework
While I could do the entire thing without a framework it'd feel very odd. Mere minutes of research pushed me to Django as it looks like it will do the job.

Development Environment
As I no longer own a Linux box (something which must be rectified) I'm going to be using an iMac running Mac OS X Lion. I've got XCode, Emacs and a good terminal emulator; as soon as I get code completion working in Emacs everything should be sorted.