Hi there! I'm a senior software engineer based in London, working remotely, with heaps of frontend web experience and a penchant for system design, architectural leadership, and building software that lasts.

Quality is pride of workmanship. — W. Edwards Deming

I've been writing code professionally for well over a decade. Most of what I work on now is closed source, so reach out if you'd like to have a chat!

Engineering

I’ve spent most of my career building for the web with TypeScript, React, and Node.js, and my favourite projects have been the ones where I got to use Rust or Haskell. I design systems that are robust and easy to evolve for both humans and agents.

I feel a responsibility to the people who use what I build and to whoever has to maintain it next. I care about accessibility, and I think twice before asking a team to take on a new technology.

After some soul-searching I’m embracing agentic development, enjoying enormous speedups whilst being intentional about when I slow down to steer the architecture.

Workplace

I've been working remotely for most of my career. The flexibility suits me given my autodidacticism, neurodivergence, and golden retriever.

I used to have a very particular development setup, but with agentic development I'm finding nothing much matters besides the harness. I tend to run agents on the powerful machine I already have, though I am exploring the idea of devboxes and thin clients; it's nice being able to respond to an agent while I make my coffee!

Career

GitButler

April 2026 - Future

I'm leading the development of and strongly shaping a new product in GitButler's arsenal, targeting the next generation of developer tooling. I'm looking forward to sharing more soon.

Unsplash

August 2021 - April 2026

Over many years I steered Unsplash's frontend - a large, decade-old React application - through a changing technical landscape whilst we continued to ship new features.

I implemented a new data fetching architecture, containerised our deployments, and unified our large frontend into a monorepo. Organisationally I introduced Nix to our development environments, drove the adoption of OpenAPI as a lingua franca and source of truth, and helped shape strategic infrastructure decisions.

The most fun I had was writing intlc, a compiler written in Haskell, that compiles ICU messages to type-safe code without any performance penalty. I also wrote Mercury in Rust, a more flexible, secure alternative to the message dispatch service that preceded it.

Adaptavist

December 2018 - June 2021

I worked on Adaptavist's ScriptRunner, built upon a React frontend and Node.js serverless functions. I migrated the untyped codebase to strict TypeScript and introduced property-based testing and integration testing, and broadly pushed for best practices with respect to reliability. I also mentored colleagues on functional programming.

Oddschecker

February 2017 - December 2018

I spearheaded a greenfield B2B project for Oddschecker on a stack of TypeScript, React, Redux, D3, and Node.js, collaborating with product and QA to meet changing requirements.

Impero

December 2015 - February 2017

At Impero, an agency, I routinely built new websites from scratch for clients following complex, bespoke designs. Across projects I worked with just about every permutation of CSS pre- or post-processor.

Perspective Publishing

March 2014 - December 2015

After starting as an apprentice I implemented the frontend of Perspective's websites, often taking design initiative. I rewrote the backend of their internal CMS in PHP backed by MySQL, consolidating dozens of legacy systems into a single platform. I advocated for a change from manual file versioning and FTP uploads to Git and continuous integration.

References available upon request.