Posts
All the articles I've posted.
-
The Right Tool for the Job: Replacing XState with Zustand
How we reduced state management code by 80% by recognising that a finite state machine was the wrong abstraction for what was fundamentally simple CRUD state.
-
Upgrading Through Three Major Expo Versions (and Getting to Zero Warnings)
What it takes to upgrade a production React Native app through Expo 53, 54, and 55 — the breaking changes, the dependency hell, the unmaintained packages, and the payoff.
-
A Year Building a React Native App with Expo
A retrospective on joining a React Native project, shaping its technical direction through ADRs, and shipping it to production — plus a series of deep-dive posts on the decisions that mattered most.
-
Commit Messages & PR Titles
A practical guide to writing clearer commits and PRs. What I arrived at after almost two decades of questioning whether I was doing it right.
-
Ode to ADRs
Why Architecture Decision Records are one of the most underrated tools in software engineering, and why I start every project with them.
-
One Year at FoodCycle
Reflections on my first year of volunteering with FoodCycle — cooking for the community, fighting food waste, and finding something that actually matters on a Saturday morning.
-
Quick Image Resizing with macOS Automator
Simple Automator Quick Actions to resize images to 25% or 50% directly from Finder's right-click menu.
-
My Default Apps at the End of 2024
Updated:List of the apps I use, updated at the end of 2024.
-
The Invariant Pattern - Cleaner TypeScript with Assertion Functions
How the invariant pattern can eliminate endless null checks and make your TypeScript code more readable and type-safe.
-
Managing Default Code Editors on macOS
A simple bash script to quickly switch default file associations when jumping between code editors like VSCode, Cursor, and Windsurf.