Field Notes
from Production
Random thoughts, occasional insights, and lessons from breaking things where the stakes were real. 42 pieces; probably a few should have been tweets.
Multi-market apps: the central vs. local paradox
How to run a multi-market app with one shared codebase, local deployments, clear decision rights, and room for real market differences.
AI made building easy. Knowing what to build just got expensive.
AI can make execution cheaper, but it also exposes weak decisions faster. The valuable skill is defining work clearly enough to test whether it matters.
The app consolidation playbook
Large app portfolios grow through local decisions, acquisitions, and separate teams. Consolidation works when one owner can remove duplication while keeping the local differences customers need.
AI isn't coming for your team. It's coming for their busywork.
AI's immediate value is removing repetitive work from experienced people. Leaders should start with one workflow, not a headcount target.
Build the API layer before replacing the billing system.
Do not make digital delivery wait for a full OSS/BSS transformation. Put a stable API contract between new demand and the legacy systems already running.
The laundry list trap: why much of your roadmap doesn't matter
We analyzed engagement across an entire app feature set. Over 40% of the candidate scope generated less than 2% of measured engagement. I use that evidence to decide what deserves a place on the roadmap.
Your telco app should be more than a service channel.
I watched European telco apps move from self-service into sales and retention. These three phases explain what changed and where the programs became stuck.
How I built this site with Claude Code.
Three weeks, end to end: PHP backend, vanilla JS, a CSS design system I built by hand, the lot. Claude did most of the typing. The speed is the obvious story. The one worth telling is which decisions I'd still own and which I'd hand back.
Claude Code and the context window on bigger projects
My website is close to a thousand files. I keep Claude Code useful by giving each session one task, naming the files involved, and keeping the project instructions current.
Claude Code permissions: what to allow and what to block
Claude Code can change real files and run commands. Check the permission mode, protect secrets, review the diff, test the result, and keep a restore path.
Fixing bugs with Claude Code (without losing your mind)
Something broke. Describe what you expected, show what happened, let Claude investigate, then test the proposed fix.
What is vibe coding, and when should you use it?
Vibe coding is useful for disposable experiments where failure is cheap. Software you intend to keep needs review, tests, version control, and an owner.