Web Developer / Based remote / Available for select work
I build interfaces that hold up under scrutiny.
Full-stack developer focused on performance, accessibility, and design systems that stay coherent as they grow. Currently taking on a small number of freelance projects.
Approach
Structure before style
The layout has to make sense with the CSS turned off. Everything after that is refinement, not rescue.
Fewer, sharper decisions
A constrained palette and a strict grid remove hundreds of small choices, so the ones that remain get real attention.
Fast by default
Performance is a design constraint, not a cleanup pass at the end. It shapes what gets built in the first place.
Legible under pressure
Code and interfaces both get read at 2am during an incident. Clarity is a feature, not a nicety.
Selected work
Ledger
A minimal invoicing tool built for freelancers who bill by the hour. Time tracking, PDF invoices, and a dashboard that reconciles unpaid work in seconds.
Studio Index
A lightweight publishing system for a small photography collective — built so five people with no technical background could ship new work without opening a code editor.
Northbound
A booking flow redesign for an independent walking-tour operator, cutting drop-off between 'select a date' and 'confirmed booking' by more than half.
Latest writing
Building this site's token system
A short walkthrough of the six-color, two-font system behind this site, and why constraints made the design decisions easier, not harder.
Notes on a faster critical rendering path
Most performance work is not clever. It's removing things the browser has to wait for before it can paint anything at all.
Why I still reach for plain CSS Grid
Utility classes are great for spacing and color. For the actual structure of a page, I still write the grid by hand.