Building products end to end. Backend, AI, design, shipping. Moving everything off managed platforms onto my own server. Building in public, bugs included.
The usual fix, backoff with jitter, spreads the retries out. It doesn't cut them. Still 64.
What works: retry at one layer only, under 10% of requests (about 1.1× load instead of 64×), or a circuit breaker that fails fast.
Flip the switches: https://t.co/DvgGjG1HRu
Then the report stops. The retries don't.
Every query times out, including orders that never needed a retry. Every timeout sends more retries.
The load now keeps the database down on its own. It has a name: a metastable failure. It outlives its cause.
MCH-004: domain-driven design, as a machine you can run.
Order 42 has a 1,000 € limit. Its root checks every line: 950 € in, 1,050 € refused.
Flip one switch, add the line behind the root, and the same 1,050 € gets in. Nothing checks it.
https://t.co/cR5HvVO6wf
Two more switches on the page:
· save without a version: two buyers, two checks that pass, one order over its limit
· call Shipping before the commit: Shipping is mid-deploy, Sales loses the order
Built on Evans's purchase order and Vernon's aggregate rules.
The rule: the model doesn't get to invent arrows. Every arrow has to match a real import in the code, or the drawing goes back to the model.
Try it yourself: https://t.co/2sTrwqUmKG
Tuesday: I drew my 3rd architecture machine by hand.
Wednesday: Nightprint read its own repo and drew itself.
Thursday: it draws yours.
Reply with a public JS/TS repo, I'll send back its machine.
Then flip a switch:
· chain microtasks forever → the page freezes: no task, no click, no frame runs again
· chain timeouts forever → each round is a new task, the page stays alive
https://t.co/49wcPjRcUn
Machine #2 of Nightprint, built in public.
Quick quiz. What does this log?
console.log("A");
setTimeout(() => console.log("B"), 0);
Promise.resolve().then(() => console.log("C"));
console.log("D");
Reply before you watch. MCH-002 runs it through the browser's event loop, then freezes the page on purpose
A, D, C, B.
The script is one task, so A and D run first. C is a microtask: it runs as soon as the stack is empty. B is a new task: the 0 ms timer queues it, and it waits until every microtask is done.
@buildinpublic Live at https://t.co/OydSfff4RG
One machine a week, built in public.
Which concept should become MCH-003?
- Domain-driven design
- Offline-first sync
- CQRS + event sourcing
- Redis cache-aside
@buildinpublic Architecture diagrams show you the boxes. Never why they're there.
So I'm building Nightprint: software architecture as 3D machines you can run. Send a request through, flip a "what if" switch, watch the pattern hold or break.
First one: hexagonal architecture
Architecture diagrams show you the boxes. Never why they're there.
So I'm building Nightprint: software architecture as 3D machines you can run. Send a request through, flip a "what if" switch, watch the pattern hold or break.
First one: hexagonal architecture
My app's architecture, as a tiny city.
Browser → Next.js on a VPS → Neon.
Share cards: my isometric engine → SVG → PNG with resvg.
GitHub repos become buildings.
Drawn by Sidetown's own engine, encoded in the browser.
Want one for your stack? Reply with it.