Experience

2021- Netflix

Senior Engineer (RTDI Data Platform)

  • Member of the team operating and maintaining Keystone and shipping the new Data Mesh platform.

2018-2021 New Relic

Principal Engineer (Staff Engineering)

  • Staff Engineer contributing to key initiatives, often stepping in to assist with high priority incidents involving our JVM services and/or Kafka clusters.
  • Built a custom Kubernetes operator in Go to run ZooKeeper safely in our AWS environments. We used kubebuilder for this operator.
  • Python scripts used for Kafka operations had deterioriated to a point where engineers were afraid to change them. Worked with the team to shore up the fundamentals, proper package management, integrated mypy and flake8. Eventually we were able to add critical new features and then ultimately port the scripts to Python 3 using tools like 2to3 and six.
  • Developed brand new automation for replacing Kafka brokers running on physical hardware under different Linux distributions (CentOS and CoreOS). These “broker swaps” drastically improved our ability to react to certain types of broker outage and enabled a rapid migration to CoreOS across the fleet. Took the opportunity to use TLA+ to model out a few key properties ensuring idempotence should broker swaps fail part-way through.
  • Built a Kafka consumer service for ingesting Prometheus remote write payloads. The service was stateful and we later needed to figure out how to migrate this state from one environment to another without any downtime. Worked with other Staff Engineers to sketch out a solid automatic state migration strategy made possible by the limited lifetime of the state involved. The service was written in Java using the core kafka-clients library.

2017-2018 InVision

Principal Engineer (Staff Engineering)

  • Staff Engineer contributing to key initiatives.

2016-2017 Neeve Research

Principal Architect

  • Member of the X Platform core team, working on an in-memory computing framework for stateful high throughput, low latency applications.

2011-2016 New Relic

Senior/Lead Engineer

  • Helped build and maintain critical parts of New Relic’s Kafka-backed data ingest pipeline.
  • A member of the small team that built the custom distributed analytics database backing Insights in Java.
  • Delivered the go-to-market version of the Android agent (Java bytecode instrumentation).
  • Maintenance & support of the Linux Server Monitor (written in C).
  • Delivered the go-to-market version of the Windows Server Monitor (written in C# and C). Ported SIGAR to 64-bit Windows.
  • The odd Gradle plugin.

1999-2011 Freelance Software Developer

Self-employed

  • Backend development of the web site for the 2005 Australian Children’s Film Festival using Ruby on Rails 1.0 and MySQL
  • Booking management system in C#/ASP.NET and MS SQL Server 2000 for MapInfo Australia’s training courses.
  • Web site and backend maintenance for a number of clients, primarily using PHP.

2007-2011 Shine Technologies

Senior Consultant

  • On-site consulting for large Australian corporate and government clients, including Sensis, NAB, Suncorp and the Victorian Department of Primary Industries.
  • Assisted with the development of a billing validation product for the energy industry.
  • Lead a small team of 3 developers on an intranet replatforming project for Sensis, porting a proprietary Java CMS to Joomla! 1.6.
  • Wrote a node.js template engine that compiled a custom HTML template language to JavaScript.
  • Java/J2EE, Ruby/Rails, Oracle, MySQL, Python, Bash and more.

2005-2007 Web Developer

SpeakOut Creative (aka Human)

  • Deliver custom content managed web sites using PHP (Drupal) and Ruby on Rails.
  • Integrate web sites and services with SpeakOut’s SMS gateway using PHP, Ruby and Python.
  • C /COM programming of a custom Microsoft Outlook add-in.
  • Assisted with the administration of a dedicated Linux server.

2004-2005 Programmer

MU Systems/NetOptions

  • Part time position working within a small team to deliver PHP web applications using a custom internal framework.

Open Source Contributions

Python

  • Implemented the try/except/finally syntax introduced in Python 2.5.
  • Credited with the implementation of PyObject-to-AST conversion and support for passing AST objects to the compile() function in Python 2.6/3.0.
  • Currently working towards an AST-level optimizer for Python 2.7/3.1
  • Various other minor patches

Debian

I maintain the Cap’n Proto and spin packages for the Debian project with my friend Tony Mancill.

Other Projects

Lesser bug fixes and code contributions to the various open source projects, including:

  • Rust - various minor bug fixes to the compiler + build system.
  • PostgreSQL — the track_active_query_size GUC.
  • PyGtkSourceView — an initial patch to allow mutable SourceTagStyles
  • Ruby on Rails — various fixes and a plugin to fix the screwy semantics of URLEncodedPairParser.
  • nodebug fix for the http module, feature tweak for the querystring module
  • Mitter — several usability enhancements for the GTK front end

Public Speaking

RubyConf 2012

OSCON 2012

OSCON Java 2011

  • Open Source Compiler Construction for the JVM [details]

Linux.conf.au 2011

Open Source Developer’s Conference 2010

  • Hugging Abstract Syntax Trees: A Pythonic Love Story [slides] [video]
  • Open Source in Big Business: A Consulting Perspective [slides]

Open Source Developer’s Conference 2009

  • On Scala (Or: Why Static Typing Doesn’t Have To Suck)

Open Source Developer’s Conference 2008

Skills

  • Java
  • Python
  • C/C++
  • Ruby
  • PHP
  • Bash

Education