Writing
Notes on engineering, craft, and the occasional passing thought.
Prefetching on hover
Switching tabs flickered every time I first loaded the page. The fix was to stop waiting for the click — and start fetching on hover.
Reopening “cold cases” with AI agents
Everyone's using AI to build new things. I've found it's just as good at reopening the old bugs you patched but never really solved.
Implementing offset-based pagination with infinite scroll in React Router
A practical guide to implementing offset-based pagination with infinite scroll using React Router loaders and IntersectionObserver.
Reflections on LLMs and their impact on curiosity
A personal reflection on how the rise of LLMs is changing our habits as learners and developers — and what we lose when curiosity gives way to convenience.
Rotation in a web based design canvas
Adding rotation to a design canvas looked like a one-line transform — until collision detection and resizing stopped agreeing with what was on screen.
Test Data Factories and Builders: Smarter Ways to Set Up Your Tests
A practical look at test data factories and builders — what they are, how they reduce duplication, and when to use one over the other in your test.
Why I keep rebuilding my blog (but struggle to write)
Each year I find myself redesigning my blog with renewed energy — and each year, I realise how little I've written or created.
Building a notification system
Why I built a notification system from scratch instead of reaching for a library — and what writing it myself taught me.
Web accessibility commentary
A personal take on why building accessible web experiences means going beyond specs—and listening to real users who rely on assistive tech.