Blog
Notes on architecture, engineering decisions, and things I learn building.
Consistency over intensity: a roadmap for learning to program
You don't learn to code in one heroic weekend. The real roadmap is almost boring: a little, every day, applied and repeated. A story about the 12-hour tutorial that taught me nothing.
Stepping away from the keyboard is part of the work
Some problems don't get solved by typing harder. Real rest — a walk, some air, a coffee away from the screen — is a debugging tool, not wasted time.
Before you write code: plan, ship an MVP, don't chase perfect
The most important decisions on a project happen before the first commit. A short field guide: plan, pick boring tech, ship small, and test in the real world.
Great MacBooks, rough tools: the Android emulator story
Apple Silicon laptops are excellent. The problem is rarely the machine — it's tools that don't account for it. A concrete example from Android Studio.
Why Linux beats Windows for development
Not nostalgia — practicality. Configuration that actually works, native Docker, Unix tooling, and raw speed. A working developer's case for Linux.
Designing BillParty offline-first: constraints as features
BillParty has no backend, no accounts, no cloud — on purpose. How a hard constraint (works on a plane, lives on one phone) became the product's best feature.