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,
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.