Hi there! I'm a software engineer based in London, working remotely, with a passion for pure functional programming and heaps of frontend web experience.

Quality is pride of workmanship. — W. Edwards Deming

I've been writing code professionally for over a decade now. If you'd like to see the code I can share and hear me talk me 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 Haskell, Rust, PHP (a lifetime ago!), and more. I'm taking an increased interest in accessibility and developer experience.

Over time I've developed a passion for pure functional programming and strong, static typing, and enjoy modelling domains such that they're correct by construction. I'm a fan of the "functional core, imperative shell" methodology.

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.

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

I play an architectural role in Unsplash's web team. The frontend is a large, decade-old React application, offering unique challenges for maintenance in a changing technical landscape whilst we continue to develop new features.

I've introduced a monorepo with more robust and performant build tooling, implemented a new data fetching architecture that's radically improved developer velocity, containerised our deployments, and formalised our browser support targets. Beyond my team I've introduced Nix to our development environments and driven the adoption of OpenAPI.

The most fun I've had was writing intlc, a compiler written in Haskell, that compiles ICU messages to type-safe code without any frontend performance penalty. I've also written Mercury in Rust, a conscientious choice on the basis that other teams find it more approachable.

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

I designed and implemented the frontend of the majority of Perspective's websites, and rewrote the backend of the internal company CMS in PHP backed by MySQL, converging dozens of legacy systems into a single unified experience. Prior to leaving I lobbied for a change from manual FTP uploads to VCS-backed CI deployments.

References available upon request.