Skills

Languages
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
Libraries
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
Jenkins
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
Description
  • Driver Onboarding
  • Enterprise
  • Identity

Employer Datacom - Wellington, New Zealand
Position Senior Software Developer
Date July, 2012 - May, 2013
Description
  • 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
Description
  • 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
Description
  • 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
Description
  • Worked on psnetwork.org.nz. 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 jonnyandthedreamboats.com 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
Description
  • 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
Description
  • Maintained the www.jobs.co.nz 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 Jobs.co.nz codebase to suit their requirements. This improved my ability to communicate with non-technical people

Education

Tertiary
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
http://doi.ieeecomputersociety.org/10.1109/WI-IAT.2010.95

Referees

Available on request