Blog
What shipping to real users teaches you.
Notes from shipping AI features and production mobile work — the failures that cost time, and what removed them.
- What a Flutter app actually costs to buildWhat a Flutter app costs, decomposed into the engineering weeks that produce it: scope, release and App Review, and the maintenance nobody puts in the estimate.9 min→
- The bug that lived between two codebasesSome bugs sit on the boundary between a mobile client and a backend service, where neither team can close them alone. How to find where one actually lives, and how to get it fixed without a fight.7 min→
- What an AI support bot has to refuseThe hard part of an in-app support bot is not the answering. It is the handover: which queries it must refuse, and how a user reaches a person without repeating themselves.8 min→
- Four engineers, four architecturesThe failure mode of a small mobile team is not people working slowly. It is several codebases drifting into several architectures, each defensible alone and none of them transferable.7 min→
- Getting a Flutter app through App ReviewThe rejections that actually stop Flutter apps shipping — guideline 3.1.1, 4.3, 5.1.1 and account deletion — and how to design around them before you submit.8 min→
- Where redundant API calls come from in a production Flutter appRebuilds that refetch, screens that reload on navigation, and duplicate in-flight requests: the three sources of wasted network traffic in Flutter, and the fixes.9 min→

