I have been an active web developer since 1999. I am proficient with dozens of languages but specialise in Python and PHP, and in a few different frameworks, namely Drupal and Django. I also enjoy the odd task in MIPS, MATLAB, C, or VHDL when required. I am a strong proponent of open source, web standards, and accessibility.

From the blog:

A strategy for static assets with Bower on Python/Django, Heroku and S3

Jan 09, 2015

We look at best practices for managing your static assets on Heroku and S3 using Bower.

How to containerize your Django application with Docker and compose on OSX

Dec 04, 2014

Docker has lots of documentation, but not much in the way of practical examples of moving your stack over to Docker. This post looks at setting up your development Docker environment from start to finish.

Generating a directory listing from an S3 bucket

Jun 11, 2014

Here’s a jQuery plugin to generate a quick and easy way to generate a directory listing from an S3 bucket.

Persisting the tab state in Bootstrap

Mar 04, 2014

A popular jQuery plugin to for deep-linking with Bootstrap tabs.

Bulk package tracking for Australia Post with Google Docs

Jun 15, 2012

We use Google Docs and the importXML function to effectively track Australia Post parcel delivery.

Getting up and running with virtualenv on Mac OSX Lion.

Nov 09, 2011

A quick walkthrough for using virtualenv on Mac OSX Lion.

Drupal meets geolocation with Quova

Sep 08, 2011

Quova - the worlds largest geolocation provider - has sponsored the development of a suite of Drupal modules to bring geolocation to Drupal.

With their suite of modules site developers can now easily create locale aware, geo-targeted compelling experiences in Drupal.

Interleaving numbers

Nov 25, 2010

interleave() allows you to quickly calculate the Morton Interleave of two numbers.

Better integration with Facebook for Django

Nov 18, 2010

I have released django-facebook which offers total and seamless integration with Facebook for your social apps.

Retrieve time from an NTP server

Feb 14, 2010

ntp_time() allows you to quickly retrieve the time from an NTP server as a unix timestamp.