2026
CannyCart
A shared shopping-list app for web and mobile, built on one Amplify Gen 2 backend.
Software engineer
2026
A shared shopping-list app for web and mobile, built on one Amplify Gen 2 backend.
2026
An open-source library of distilled, reusable engineering practice for AWS Amplify, Next.js and Expo.
2025
A from-scratch drag-and-drop form engine — authoring, schema storage and a runtime renderer.
6 min read
Clearing the Done section felt like losing your history — but the record already existed as soft-deleted rows nothing read. One timestamp, three time semantics, and a documented exception to a house convention turned clearing into archiving.
6 min read
A currency symbol is a user property masquerading as a constant. Unwinding one hardcoded £ touched state architecture (two kinds of readers, two stores, one setter), onboarding (guess, then confirm), and product honesty (relabel is never convert).
7 min read
No price API exists, but after weeks of receipt scanning the user owns a dataset nobody sells. Three screens built on it — and the honesty gates, living in selectors not UI, that stop derived numbers from lying.