About Me

I am a polyglot developer who likes simple solutions to difficult problems, living documentation, just-in-time design and the principles of software craftsmanship.

I believe I owe my success to a habit of ensuring I always have a deep understanding of the technologies I work with.

Before joining the tech industry my background was in music, and I have always felt that software engineering is an art too - fundamentally a creative and collaborative activity.

Experience

DAACI

Senior Frontend Software Engineer, 2022 - pres.

  • TypeScript
  • Node.js
  • React.js
  • Redux
  • Sass
  • PostgreSQL

DAACI creates composer-focused generative music composition systems using machine learning techniques informed by musicology.

I have been building out prototypes of an AI-assisted browser-based digital audio workstation, using TypeScript, React, Web Audio and Web MIDI, Next.js, Drizzle ORM and PostgreSQL.

I have also been supporting the frontend of a web-based registry for DAACI VST plugins, and UI design and implementation in the plugins using C++20 and the JUCE framework.

Triptease

Senior Software Engineer, 2021 - 2022

Software Engineer, 2020 - 2021

  • TypeScript
  • Node.js
  • Terraform
  • React.js
  • MongoDB

Worked on the Targeted Messages product, including the UI of the messages themselves, a rich content editor with live preview for message creation, content database and CDN, event tracking and analytics platform.

Previously, my team built a feed of hotel prices and scaled it from scratch to serving a million prices a day from over 1,000 hotels. The prices were sourced from user tracking, screen-scraping and algorithmic inference.

Triptease engineers work full-stack, including all development, ops and SRE, in small autonomous squads.

Codurance

Software Craftsman, 2019

Apprentice, 2018 - 2019

  • C++
  • Java
  • PostgreSQL

Worked in a team of consultants at a fintech, setting up CI pipelines, modernising existing C++ server-side infrastructure, and helping to build new Java microservices to replace PostgreSQL stored procedures.

As Apprentice, completed a three-month paid Academy program learning essential skills in software design, Extreme Programming practices, Clean Code, and Domain-Driven Design.

FilmLight

Software Developer, 2017 - 2018

Intern, 2016 - 2017

  • C
  • C++
  • *nix

Worked on button-mapping software for hardware interfaces on a film post-processing system. Worked across the full stack from usability testing and UI implementation down to optimising the display drivers. Also wrote an xUnit-style unit test framework for the in-house scripting language to aid in testing my code.

As an intern, built automated testing harnesses, helped maintain the FilmLight intranet, and built developer workstations.

Education

Open University

Mathematics modules, part-time, 2022-present

MST124 Essential Mathematics 1: Distinction (2021-22)

MST224 Mathematical Methods: WIP (2023-24)

University of Oxford

BA Music, 2013 - 2016

First-class honours; academic scholar, 2014-16.

Skills

Languages & Frameworks

JavaScript, TypeScript, Node.js, React, Java, Kotlin, C++, Python, Clojure

Databases

PostgreSQL, MongoDB, Google BigQuery, Elasticsearch

Infrastructure

Amazon Web Services, Google Cloud Platform, Terraform, Airflow

Methodologies

Extreme Programming, Software Craftsmanship, Continuous Discovery

Projects

This website!

Built with Astro and Tailwind CSS, based on the devfolio template by Ryan Fitzgerald

jq-tutorial

Interactive exercises for learning jq, a command-line JSON processor

WebStorm Golf

A golf-themed way of learning to use the JetBrains WebStorm IDE