Fluent: Python, PHP, Java (J2SE & J2EE), SQL, HTML, CSS, Javascript, Bash
Intermediate: Go
Beginner: C, C++, Perl, Prolog, Actionscript 3.0, Applescript, Objective-C, Swift
Database Systems
MongoDB, MySQL, PostgreSQL (PostGIS and pgRouting), Oracle 11g, Apache Solr and LDAP
Operating Systems
Debian, NetBSD/FreeBSD, Mac OS X, Windows
Web frameworks
Flask, Django, Pylons, PHP Zend Framework, Silverstripe Sapphire; Spring Framework and Hibernate
Marquees clearly
Backbone.js, Handlebars.js, JQuery
Leaflet, TileStache, GEOS/GDAL, Google Maps API v3, OpenStreetMap data
django-celery, django-tastypie, django-south, django-pipeline
Servers and Applications
Nginx, Gunicorn, Apache, WebSphere Application Server 7, Tomcat 6
Heroku and Amazon EC2
Hadoop, Gearman, Supervisord
Google App Engine for Python
Eclipse, JUnit, Ant build scripts, ActiveMQ
Subversion, Git
JIRA, Redmine, Unfuddle issue tracking systems

Work Experience

Employer Lyft - San Francisco, California
Position Software Engineer
Date May, 2013 - Current
  • Driver Onboarding
  • Enterprise
  • Identity

Employer Datacom - Wellington, New Zealand
Position Senior Software Developer
Date July, 2012 - May, 2013
  • Currently working on a web-based mapping tool that allows easy importing and visualisation of real-time geographic datasets (csv's, shapefiles, etc) on choropleth maps.
  • The back-end is written in GeoDjango with PostGIS. I wrote a REST API (using django-tastypie) to manage the geographic datasets. I extended a library called django-dynamo that allows the ability to generate GeoDjango models at runtime.
  • The front-end is written in Backbone.js, Backbone.Marionette.js, Handlebars.js for templating, and Leaflet.js for client-side mapping.
  • I wrote a Django app for serving GeoJSON tiles (on PyPI), and a Leaflet.js library to render GeoJSON tiles (here).

Employer Trulia Inc - San Francisco, California
Position Software Engineer
Date June, 2011 - June, 2012
  • Wrote GeoJSON data tile and WMS image tile APIs for school, crime and commute heatmaps, using Django and PostGIS.
  • Managed the import over 30 million crimes, 10 million census blocks and other census shapefiles for the US.
  • Managed API deployment to staging and production: wrote automated deployment script in Fabric; configured supervisord, gunicorn and nginx servers; configured PostgreSQL with streaming replication.
  • Participated in product planning meetings, daily scrums and retrospective meetings.

Employer Datacom - Wellington, New Zealand
Position Java Developer
Date March, 2010 - June, 2011
  • Development of an application for Telecom New Zealand, which facilitated B2B communication between Chorus and Service Companies in a J2EE environment, using JAX-WS web services. The application was written in Spring Framework 2.5 and Hibernate on IBM WebSphere Application Server 7 and Oracle 11g. The web UI was written in JSP with Apache Tiles and JQuery. I was involved in the project from the requirements gathering phase to go-live.
  • Developed a heat map web application prototype for Chorus using the Google Maps API V3 for Javascript. A screenshot of a map with dummy test data can be seen here.
    I wrote two overlays: a weather overlay, which used JSONP to retrieve weather data; and a statistics overlay, which displayed real-time Chorus business statistics for New Zealand regions. The regions were made up of two sets of polygons at different zoom levels, coloured based on a predefined metric. The colours faded in real-time using statistics from a JSON feed.
    The prototype allowed Chorus to visualize their region based data across New Zealand and make decisions proactively. The heat map gained funding to turn into a final product as I was leaving, so I wrote a developer guide to ensure continued development went smoothly.
  • Set up automated ANT builds and continuous integration using Hudson.
  • Configured server clusters in UNIX environment.
  • Wrote release notes and deployment instructions for staging and production environments.
  • Worked in a small team of developers, testers, business analysts and project managers.

Employer Independent Contractor
Date March, 2008 - March, 2009
  • Worked on This involved basic PHP programming with a MySQL database. I transitioned the website to use the Silverstripe Sapphire framework, so network members were able to update site content independently
  • Designed and wrote object-oriented scraper system in PHP for a job website to scrape jobs from a range of third-party sources
  • Developed website in PHP with a MySQL database, Flash Actionscript 3.0, which also included a backend to update upcoming events and photo galleries

Employer Weta Digital Ltd - Wellington, New Zealand
Position Python Developer
Date November, 2009 - February, 2010
  • Developed web application to display diagnostic information about a selected shot within a scene of a film. This helped artists to see an overview of lighting, camera and other assets used within a shot. The initial development involved writing regular expressions to parse custom file metadata, and HTML/CSS/Javascript/JQuery to display the information.
  • Rewrote a web application to allow artists to submit requests for show reels, and administrators to approve and generate the show reels. I simplified the existing web application by allowing the request process to take place using one screen, which replaced the existing 5-screen request process, making it easier for the artists to submit requests. Both web applications were developed in the Pylons framework for Python, with a RESTful web service architecture.
  • Converted Perl CLI scripts to Python and upgrading the scripts to access an Apache Solr database, which resulted in a simple API for Solr access that other developers could reuse.

Employer Career Group Ltd : Wellington, New Zealand
Position PHP Developer
Date July, 2008 - October, 2009
  • Maintained the website, which involved learning the PHP Zend Framework and the Model-View-Controller pattern quickly
  • Worked with an external customer on a white label solution by transforming the codebase to suit their requirements. This improved my ability to communicate with non-technical people


Institution Victoria University, Wellington
Attendance 2006 – 2010
Degree Bachelor of Information Technology (1st class Hons)
Honours Report Improving Automatic Query Expansion

Conference papers

“Improving AbraQ: an Automatic Query Expansion algorithm”
Glen Robertson and Xiaoying Gao - 2010 IEEE/WIC/ACM Conferences on Web Intelligence and Intelligent Agent Technology


Available on request