Senior Engineer (RTDI Data 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
Principal Engineer (Staff Engineering)
- Staff Engineer contributing to key initiatives.
2016-2017 Neeve Research
- 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
- 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
- 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
- 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.
- 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.
- Part time position working within a small team to deliver PHP web applications using a custom internal framework.
Open Source Contributions
- 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
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.
- node — bug fix for the http module, feature tweak for the querystring module
- Mitter — several usability enhancements for the GTK front end
- Open Source Compiler Construction for the JVM [details]
- Open Source in Big Business: A Consulting Perspective [slides] [video]
- Open Source Compiler Construction for the JVM [slides] [video]
- Hugging Abstract Syntax Trees: A Pythonic Love Story [slides] [video]
- Open Source in Big Business: A Consulting Perspective [slides]
- On Scala (Or: Why Static Typing Doesn’t Have To Suck)
- 2003-2006 Bachelor of Information Technology, Queensland University of Technology