// Product engineer with a PhD in distributed systems. Building reliable products end-to-end.
./work
7 entries-
Lead Software Engineer
@ Whimsical 2021 — 2026Collaborative visual workspace — boards, docs, and project management. Full-stack work across a Clojure/PostgreSQL backend on AWS and a ClojureScript/React frontend, in a small team where engineers and designers owned projects directly.
- Tasks & Projects Lead backend engineer on the project-management expansion, a Linear-style surface built to turn Whimsical from an occasional diagramming tool into part of users’ daily work. Designed the project data model — configurable statuses, custom fields, and a task filter language — and extended the backend with My Tasks and a file-attachment API.
- Entitlements & monetisation Built the feature-gating system that controls which capabilities each plan tier unlocks, from Free through Enterprise — the enforcement layer tying product features directly to revenue. Built the credit-based metering for the AI features, and added prompt caching after noticing Whimsical’s own demo prompts would exhaust a free user’s monthly credits on first use.
- Platform modernisation Instigated and drove the conversion of the backend web layer from asynchronous to synchronous — faster compiles, readable stack traces, fewer concurrency mistakes. A strangler-fig approach kept the migration transparent to ongoing delivery. The migrated surface handles several hundred thousand requests/week in production, with the busiest endpoint at p50 16ms / p95 70ms.
- Reliability infrastructure Built, on my own initiative, a watchdog service that pages the team when a recurring background job silently stalls, and a queue-based migration framework on which I ran tens of production data migrations.
--clojure--clojurescript--react--postgresql--aws -
Principal Software Engineer
@ BigPay 2019 — 2021Fintech challenger bank. Worked on personal loans and payments. Identified that the core monetary transaction flow, spanning multiple microservices, was too fragile to extend safely with new products, and redesigned it to be fault-tolerant with a clean API for new client services.
--java--kotlin--rust--kafka--postgresql--cockroachdb -
Self-Employed Contractor
@ Moss Oak Software 2015 — 2019Full-stack web contracting across a wide range of technologies, typically hired for breadth and to coach junior engineers. Projects included an IoT connectivity service (Go, RabbitMQ, React), a GIS data service (Node, PostgreSQL), and an OAuth2 client management service (Go, Ember).
--go--node-js--react--ember--postgresql -
Software Engineer / Team Lead
@ Listora 2014 — 2015Tech lead on a Clojure/Datomic event data (e.g. theatre show times) API. Built the Elasticsearch search, Redis-based rate limiting, and JWT authentication. Owned the team backlog, drove design consensus, and reviewed code.
--clojure--datomic--elasticsearch--redis -
Software Engineer
@ Red Gate Software 2010 — 2014Built multiple C# database-tooling products — SQL Scripts Manager, SQL Virtual Restore, SQL HyperBac, SQL Storage Compress. Implemented Azure web services for analytics event processing. Member of the engineering steering group; ran the internal Clojure user group.
--c#--clojure--azure--ruby -
Senior Software Engineer
@ Progress Software 2008 — 2010Core engineer on the Apama Complex Event Processing platform. Implemented green-thread scheduling with continuations to replace a native-thread model, and built a hierarchical logging system.
--c++--python--java--apama-cep -
Senior Engineer
@ Cambridge Consultants 2006 — 2008Designed and implemented a proprietary network element for a mobile operator with five-nines availability and soft real-time requirements. Implemented a Ruby DSL for generating C event-type structures. Administered a 20-server Solaris development environment.
--c--ruby--solaris--tcp-ip
> ./older — 4 entries
-
Software Developer, Internship
@ IBM Research 2004Middleware on the OSGi platform acting as an event aggregator at the edge of sensor networks.
--java--osgi -
Software Developer
@ Meridea Financial Software 2002 — 2003Eclipse IDE plug-ins for a proprietary configuration editor — analysis, design, implementation, and testing.
--java--eclipse -
R&D Engineer → Product Development Manager
@ First Hop 1999 — 2002Three progressive roles: R&D building distributed Java systems, Customer Care Team Leader, then Product Development Manager — introduced unit testing and requirements management.
--java--rmi -
Software Engineer
@ More Magic Software 1997 — 1998Implemented the prototype MProxy product as an Apache module in C.
--c--apache
./education
2 degreesPhD, Computer Science
University of Cambridge
Thesis on decentralised access control in multi-domain publish/subscribe systems. Six publications in ACM, IEEE, and Springer venues.
MSc, Computer Science
Helsinki University of Technology
Major in computer networks and security. Thesis on temporary and anonymous authorisation with XML-encoded SPKI certificates.
./projects
3 projectsagain
[STABLE]Clojure library for retrying operations with composable, data-driven backoff strategies.
rasp.surge.sh
[RUNNING]Gliding weather forecast app. Renders RASP (Regional Atmospheric Soaring Prediction) charts for UK and European sites.
xcdebrief
[WIP]Post-flight gap analysis for UK XC glider pilots. Compares actual flights against optimal routes to identify missed opportunities.