Front-end engineer specialising in complex web applications.

I work mostly with TypeScript and React. I enjoy the awkward engineering problems, particularly figuring out how all the moving parts should fit together, whether I'm building something new or working with what's already there.

Available for freelance and contract work.

Get in touch

Interfaces and workflows

I build interfaces where there's a lot going on behind the scenes: complicated interactions, business rules and systems that need to work together.

Existing codebases

I'm quite happy getting stuck into code I didn't write. I like figuring out what's worth keeping, what needs improving and when it's better to start again.

Architecture and performance

I like getting to the bottom of difficult problems, whether that's an application that's become hard to maintain, an architecture that's getting in the way, or something that simply isn't performing as it should.

I led front-end engineering for Kraken's phone system, used by agents during live customer calls.

I designed and built a Flux-inspired approach to keeping call state consistent across multiple CRM browser tabs in real time.

Reusable classifier library

Zooniverse / University of Oxford

I started Zooniverse's reusable React classifier library, building its initial viewers, state stores and tests. I later worked on its layouts and viewer selection, and integrated it into the main application.

Source commit

Configurable classification feedback

Zooniverse / University of Oxford

Some Zooniverse projects needed to give volunteers feedback on their answers. I built a configurable system that let project teams define their own rules, rather than needing custom code for each project.

Pull request

I started out in journalism before finding my way into software. I still like asking questions, understanding how things work and getting the details right.

I'm based in Oxfordshire, UK.