Six years shipping developer-facing products, mostly in TypeScript. I care about the parts nobody demos: build times, error messages, and the second week of using something.
Things I built, maintain, or broke and then fixed.
The design system three product teams actually share. Tokens, docs and a release process that stops everyone forking the same button.
Forty React components built on unstyled primitives. Accessible before it is pretty, and themeable without a prop for every pixel.
Six hundred icons drawn on one grid, so they sit on a line together. Shipped as plain SVGs and as a package that tree-shakes.
The short version. The full history is in the CV.
My CVLead the tooling team behind six internal products. Rebuilt the design token pipeline, cut the CI build from eleven minutes to under three, and wrote the migration guides nobody wanted to write.
Shipped the customer-facing dashboard and the component library under it. Introduced visual regression tests after the third accidental redesign.
Agency work: twenty-odd sites for clients who all wanted something slightly different. Learned more about browser quirks than I strictly wanted to.
Some notes, when I have the time.
All postsI started out doing frontend for agencies, which is a fast way to learn what breaks. These days I work on internal tooling, where the people using it sit two desks away and tell you exactly what is wrong with it.
Outside work I maintain a couple of small open source libraries, ride a very slow bicycle, and am steadily failing to learn the cello.
You can find me on LinkedIn or Email.