Our Articles
Notes from shipping Flutter, living with Firebase, and putting AI next to the work instead of on top of it.
ReadThe Flutter jank wasn't Impeller. It was a setState in the wrong place.
We spent a week blaming the renderer on a mid-range Android phone. The dropped frames were coming from a parent widget that rebuilt the whole scaffold every time a status ticked.
ReadWe put the model on the happy path. Then a number appeared that wasn't real.
The demo felt like the future. In review, the model invented a lab value that was not in the notes. This is how we ship AI now: as a draft, with sources, never as the record.
ReadFirestore is a product decision, not a database religion.
We use Firestore on purpose: live status, offline agents, the picture three roles have to share right now. We also know the week we will walk away from it. This is that line.
ReadI stopped asking AI to write Flutter screens. I still let it do the boring work.
The model will happily emit a 400-line StatefulWidget. That is the problem. Here is the split we use now: what it is allowed to touch, and what I still type myself.