Work

I'm a senior engineer that strives to craft simple, robust software. I work closely with product managers and designers, leading small teams to produce high-quality products that people love to use.

I'm a good communicator with an easy-going personality. I'm attentive to detail, focused, and pragmatic.

My technical background is varied, and in recent years I've specialised in building high-traffic, distributed web systems, primarily built with Ruby on Rails, AWS, Docker, and Unix-like operating systems.

My other technical interests include Clojure, Python and React. Some examples can be found on my GitHub profile.

Spot

  • Senior Software Engineer (2016—)

Spot recommends places according to the friends and experts you trust. I'm working on the backend systems that support the mobile app, including:

  • the API that powers the app and public website. This is a Node.js (Restify) app, backed by Postgres and Elasticsearch. It exposes a GraphQL-like interface to enable flexible and batch-efficient fetching of multiple (possibly nested) resources in a single request.
  • the content ingestion pipeline. This is also a Node.js system, running on AWS, that discovers venue data and expert reviews by crawling and parsing the web.

99designs

  • Senior Software Engineer (2013—2016)
  • Software Engineer (2012—2013)

99designs is the world's largest online graphic design marketplace, with a community of over a million registered designers.

I was the lead software engineer in 99designs' Oakland, CA office. The team focused on the design- and designer-oriented parts of the platform. Some of the things we built include:

  • Discover — showcases designs from the community and provides design inspiration for potential customers. This is a Rails app, running via Docker on AWS, and backed by hosted Elasticsearch.
  • Profiles — individual designer portfolios. Designers can curate their cover images, crop and rearrange their designs, and offer fixed-price design services to potential clients.

I was previously the lead developer of Projects, a 1-to-1 design collaboration platform that has grown into a significant revenue generator for 99designs.

I've also written various articles for 99designs' engineering blog, and open-sourced several internal libraries.

Rubicon Water

  • Software Engineer (2009—2012)

Rubicon Water builds fully automated irrigation networks, including remotely-operated control gates, demand management systems, and online ordering for water consumers.

At Rubicon I built J2EE desktop and web applications for water authorities and consumers in regional Australia. I was the lead engineer of a JSF web interface to the SCADAConnect system, which provided monitoring and control of remote hardware. I also built desktop-based reporting tools for the Demand Management System, which gives water authorities high-level insight into irrigation needs.

DWS Advanced Business Solutions

  • Software Consultant (2007—2009)

DWS is a Melbourne-based consultancy, providing software development services for various companies including major telecommunications and infrastructure providers.

I worked in many different roles for various clients, including:

  • Maintenance of Perl- and Oracle-based ETL pipelines for the data warehouse of a major telecommunications provider.
  • Development of a J2EE web-based frontend to a complex workflow for a metropolitan electricity supplier.
  • Provisioning and administration of Linux-based production environments.

Future Medium

  • Web Developer (2004—2007)

Future Medium was a web agency based in Hobart, Tasmania, focused mainly on building brochure sites for local private businesses and state government departments.

I built websites using the in-house Java-based (initially Perl-based) CMS, converting complex visual designs into standards-based HTML and CSS.

I was also subcontracted to Squiz for about a year, performing similar work in their PHP-based CMS.