Updated: Jul 2011
Published: Aug 2009

Web design and software portfolio


Here's a short list of some of the projects I've undertaken over the years. If you've got some work that you think I might be interested in, by all means get in touch . You can find my CV here.

See the following pages for examples of past projects. I specialise in...

See the following portfolio pages for screenshots and comments on some past projects

GIY Green It Yourself

GIY Green It Yourself is a site devoted to helping people save energy and reduce waste in their everyday lives. Most of its content is in the form of instructional videos and accompanying text, but it also has a blog and newsletter subscription.

I built this site in Drupal, based on a graphic design supplied as mockup images. This is the first site I've done since the Australian Cyclist system where I've worked with an external graphic designer. This involved a degree of "going with the flow" on my part when deriving the user interaction design, but I think the result is good - and the client is happy too!

Flying Furniture Cycles

Flying Furniture Cycles was an online retailer of recumbent bikes, trikes and other specialist cycling products. For this site I used Drupal and Ubercart, Drupal's widely used e-commerce module.

In order to simplify the store owner's task of updating stock levels and prices, I developed a Drupal module that allows the stock data to be exported to comma-separated values files, manipulated with a spreadsheet, then imported back into the store. I've subsequently contributed this module to the Ubercart contributed modules repository, where it seems to have been quite well received.

While Ubercart provides a fairly comprehensive shopping cart system, many of the high-value products in this store are ordered from the manufacturer or distributor on demand, so I developed a product inquiry system for these cases. Any stock that isn't marked as "active" has its "add to cart" button replaced by an inquiry form that requests the customers contact details. Those details, along with the customer's product option selections and price information are saved as a product-inquiry webform and emailed to the store owner for further action.

XY Online

XY online is a pro-feminist website focused on men, masculinities, and gender politics.

They wanted an easily maintainable and flexible website with a distinctive new look to replace an existing static site that was falling into disrepair.

I used Drupal as the content management system and designed the theme and the new logo using Inkscape. The web page background has a top-to-bottom as well as left-to-right gradient that scales to arbitrarily large window sizes without using any large background images.

Drupal is a very good content management system. It's written in PHP, which means it can be hosted under most hosting plans.

Tango Social club of Canberra

The Tango Social club of Canberra wanted a website (now replaced) to replace their static html site, so I designed a Joomla theme and reworked their existing logo for this site. I also incorporated an image of Tango dancers into the banner, made by compositing several images from a photo shoot I'd done for them some months before.

Joomla is a pretty good CMS for most uses, but I think Drupal has the edge.

National Computational Infrastructure

For the National Computational Infrastructure I used Plone as the CMS. I designed the logo and artwork around the orange spiral (on the right above) which was the dominant feature of NCI's predecessor's logo.

The banner occupies the entire width of the browser window, with the thick part of the curved orange underline extending as required. The image on the left of the page is an upturned Alpha CPU.

NCI provides high-performance scientific computing resources trough its National Facility. I adapted the NCI artwork for the National Facility web pages, which are a mixture of static, PHP and Python generated pages.

Plone is probably the best engineered CMSs, but its hosting requirements are greater than those of Drupal and Joomla, and the learning curve for theme developers is steeper.

Australian Cyclist

Before the days of good open-source content management systems, I wrote one from scratch for Australian Cyclist magazine. In this case the graphic design for the public pages was done by Michelle French. At the time (2003), the closest thing to an open-source CMS that was available was phpnuke, and it became fairly clear to me that it would be more work to adapt phpnuke than it would be to write a CMS from scratch.

The system had a number of unique features, but probably the most notable was the authentication system. Like many CMSs, this one used MySQL as its database, but instead of storing the database password in a configuration file on the web server (like most CMSs do), I invented a better system. I set up 2 database users. The first was for anonymous read-only access, and was used when people browsed the site. The other was the read-write password to be used by content editors. Each content editor had their own username and password, and this information was kept in a "users" table. The trick here was that the value stored in the password field was actually the database read-write password encrypted by a hash of the editor's password. To log in, an editor entered their username and password, and the system would look up the user using the read-only database password, and attempt to decrypt the read-write password using the typed password. If the decryption was successful, the user was allowed access to the editors' interface - all without storing a plaintext database password anywhere. The decrypted read-write password was then re-encrypted using session-specific random data and stored in a browser cookie.

PBS job table

This is something I wrote in my day job at the NCI National Facility. It displays the layout of jobs (computing tasks) running on a supercomputer cluster, and uses AJAX techniques to allow the user to inspect the performance of individual jobs.

This system is written in Python, using bindings to the PBS batch system API, and uses the Mochikit AJAX toolkit. It requires no per-cluster configuration, and uses RESTful URLs to specify the cluster of interest.

When a user clicks on a job, a request is sent to the web server, which then sends a job query request to the PBS server. The PBS server responds to the web server, the web server reformulates the response into JSON format and sends it back to the browser. Javascript functions in the browser convert the JSON into DOM nodes that display a "balloon" under the job cell.