Pinned Tweet
Your tables keep the last write. Event sourcing keeps every change, but it always looked like a big-platform thing.
So I built Bounda, event sourcing and CQRS in TypeScript for the apps most of us build. Open source.
Rewind a night at a theatre: demo.bounda.dev
"Software factory" is the new buzzword.
It's an agent pipeline pointed at building software. Nothing more.
We built one at work. It decides product, not code.
The hard part is the same as in any factory: saying exactly what you want, and checking you got it.
1
36
The usual definition: agents plan, code, review and ship with little to no human in the loop.
Even there, people still pick the work and say what done means. The spec and the check again.
This piece looks at how far most teams are: rdworldonline.com/jellyfish-…
1
15
Ideas in a meeting are cheap. With agents, a working prototype is almost as cheap.
So I stopped asking my team for proposals. Build it, then we talk.
Arguing over something that runs is a lot shorter than arguing over a slide.
24
Event sourcing keeps every fact forever. The GDPR lets anyone ask to be erased.
Both can be true. I wrote up how, and what it still misses:
bounda.dev/blog/right-to-be-…
1
1
53
The trick is crypto-shredding: one key per person, their fields encrypted with it, forgetting = deleting the key.
The part I care about most: a forgotten field reads as `null` in the types, so the compiler finds every place that assumed it was there.
1
61
It shipped in Bounda 0.3.0, with idempotent commands and snapshots that know when they're stale.
Forget a buyer in the live demo: demo.bounda.dev/?scene=forge…
29
Code comes out in milliseconds now.
The expensive part moved: reading it and knowing what it just did.
So before any code, I ask for the plan in a doc and we argue about that.
28
Not every "no" is an event.
If the business needs to remember it, or someone else reacts to it, it's an event.
If it's just an answer to whoever asked, it's an error. Don't store it.
1
95
Since agents, everyone shares how much more they ship.
Almost nobody shares how much more breaks, or how much gets redone a week later.
Speed without the failure rate is half a number.
49
Beñat Espiña retweeted
I love this. It’s the reason I’m on Twitter. What it means to build product has changed but being user obsessed still pays dividends.
A command is one file. Its place and its name are the declaration, and bounda generate infers every type.
github.com/bounda-dev/bounda
67
Agents made starting free. Finishing still costs what it did.
So you can spend a whole day busy and ship nothing.
One merged beats fifty in review.
There’s 100% a kind of mania you can get into with coding agents, where it feels like you’re getting a lot done and working all the time but nothing is really happening.
I think it's often a form of avoidance of something else in life.
62
In most teams I've worked with, event sourcing never got past the whiteboard. Fear of the unknown.
Oskar Dudycz's answer: don't start with the core domain. Start with something real but forgiving.
One learning curve at a time.
1
67





