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 now. If you'd like to see the code I can share and hear me talk about that which I cannot, check out the links above.

Programming

I've spent the bulk of my career on the frontend with TypeScript and React, however I've also worked professionally with Node.js, Rust, Haskell, and more. I care deeply about designing systems that are robust and easy to evolve.

I consider it my ethical responsibility to write code that's accessible, maintainable, and doesn't merely chase technical trends. My quote above references quality—to that end I'm pragmatic and, regardless of my preferences, will opt for the right tool for the job.

I'm currently experimenting with LLMs and AI agents. My experience so far is that the same aforementioned principles that aid human programmers likewise unlock productivity gains via these new tools.

Workplace

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

I currently run macOS however this changes with my life circumstances. The freedom to work within my own technology stack is important to me.

If you're interested, here's the current configuration of my machine(s).

Career

Unsplash

August 2021 - Present

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

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

The most fun I've had was writing intlc, a compiler written in Haskell, that compiles ICU messages to type-safe code without any performance penalty. I've also written 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. After joining I gradually migrated the codebase to strict TypeScript and introduced property-based testing and integration testing, and broadly pushed for best practices with respect to reliability.

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 designed and implemented the frontend of the majority of Perspective's websites, and 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.