Mostly code, with travel, long walks, games and the odd bad decision in between. Written from London.
Latest
Keeping Obsidian and My Git Repos in Sync
How I made folders from my code repos show up in my Obsidian vault, on the Mac and on the iPhone, and the options I tried and rejected on the way.
500 Hours at FoodCycle
Last Saturday I reached 500 volunteering hours at FoodCycle. A look back at the hubs, the people, the chaos, and the beetroot.
Silent Hill 2 Remake
I finally played the Silent Hill 2 remake, right before it left PS Plus. A dark, heavy story and a soundtrack I've had on repeat for twenty years.
Every other post
2026(26 posts)
September
- Inside LCY3: A Tour of Europe's Biggest Fulfillment Center
- git-branch-switcher: A CLI Tool to Manage Git Branches
- TreeApp
- Jailbreaking My Old Kindle
- Getting Back to Inbox Zero, and Finding a New Read It Later App
- Final Fantasy XVI
August
- umami-digest: Bringing Email Recaps Back to Umami
- Southeast Asia: Northern Thailand and Laos, Solo
- Southeast Asia: Thailand, Malaysia, and Indonesia
- The Joy (and Despair) of Servicing My Own Bike
- Be My Eyes
July
May
April
- Brighton to Hastings on Foot
- Accessibility in React Native: Beyond the Checklist
- Asset Format Strategy for React Native Apps
- Storybook in Expo Router Without Replacing Your App
- Offline-First Mutations in React Native with Apollo Client
- The Right Tool for the Job: Replacing XState with Zustand
- Upgrading Through Three Major Expo Versions (and Getting to Zero Warnings)
- A Year Building a React Native App with Expo