Dominik Tornow
dominiktornow.bsky.social
Dominik Tornow
@dominiktornow.bsky.social
Founder Resonate HQ | Distributed Async Await | Thinking in Distributed Systems | https://dtornow.substack.com
Pinned
From the terminal to the cloud, from prototype to production

Learn how agents scale beyond a single machine and master identity, coordination, and recovery

Build a recursive, distributed Deep Research Agent with @resonatehqio.bsky.social + OpenAI—in under 120 lines

Chapter 3 is live
My advice for software engineers in 2026

Get into formal methods

Not to prove your system correct but to prove your thinking correct
January 1, 2026 at 5:15 PM
One more condition (j < i + k) gives us bounded idempotence.

Think Kafka retention: a request is idempotent only as long as the system remembers the request
December 31, 2025 at 9:20 PM
Systems don't pause between retries

If action a was applied at step i, then replaying a at any future step j is a no-op

Idempotence is a property of traces
December 30, 2025 at 5:00 PM
The mathematical definition of idempotence will fail you in production

Not this

Applying a request n times has no effect beyond the first application

But that

Applying a request n times, regardless of how the state has evolved in between applications, has no effect beyond the first application
December 30, 2025 at 12:55 PM
Fun with Types: The Shape of Durable Executions

Haskell's type system is a great vehicle for formalizing
@resonatehqio.bsky.social 's core execution model, execute_until_blocked

The shape of the conversation between User Program, Worker, and Server just fell out of the type system
December 28, 2025 at 7:43 PM
Property-based Testing and Deterministic Simulation Testing change how you think about invariants:

First you defend the invariants your system has. Then you design the invariants your system should have

Invariants become aspirational, not just defensive
December 22, 2025 at 9:10 PM
Event-driven. One of the most used terms in software engineering but with no formal definition

I've looked. I've found nothing

Please drop papers
December 21, 2025 at 4:00 PM
Vibe coding forces the question: Where do guarantees come from?!

Platform

Property P is certain. All valid programs have P

Think memory-safe Rust program

Application

Property P is possible. Some valid programs have P

Think memory-safe C program
December 18, 2025 at 5:55 PM
Deterministic Simulation Testing turns vibe coding into verified coding

LLMs are great at writing code, but just like their human counterparts, they miss edge cases

DST doesn't

DST is the fitness function your coding agent needs to maximize
December 14, 2025 at 11:30 AM
The @resonatehqio.bsky.social server is responsible for

• Coordination (incl scheduling)
• Supervision (incl recovery)

That is, the server is responsible for scheduling a distributed execution onto a distributed system and reschedule parts of the execution when parts of the system fail
December 12, 2025 at 10:05 AM
Durable Executions, defined

A crash? An interruption.
A sleep? An interruption.

Same suspension. Same resumption. Same solution.

The full definition: 12 words.
The minimal implementation: 50 lines.

journal.resonatehq.io/p/durable-ex...
December 3, 2025 at 3:35 PM
See the Write Last, Read First rule in action, in Lisbon, today at 6:00pm

Join Matklad and me for an evening of systems engineering

luma.com/7d47f4et
December 3, 2025 at 3:05 PM
Durable Executions, defined

Every durable execution framework: write normal code, get fault tolerance. Yet nobody defines what normal code or fault tolerance are

The alternative: a rigorous definition, grounded in first principles, and a minimal implementation

Dropping today
December 3, 2025 at 10:35 AM
In distributed systems, you can never know "what is", you can only know "what was"

Even in consensus, you never know the current value, you only know the value at an offset in the log

Every decision is made on a stale understanding of the world
December 2, 2025 at 8:20 AM
Resonate's Distributed Async Await doesn't add events, event types, event logs, or complex replay machinery.

Resonate makes promises durable. That's it.
Distributed Async Await, @resonatehqio.bsky.social Durable Executions framework, rests on one mechanic:

skip-when-done

- Checkpoint before the function starts
- Checkpoint after the function returns
- On restart, skip what's done

Everything else follows from there

Dead simple
December 1, 2025 at 4:50 PM
Distributed Async Await, @resonatehqio.bsky.social Durable Executions framework, rests on one mechanic:

skip-when-done

- Checkpoint before the function starts
- Checkpoint after the function returns
- On restart, skip what's done

Everything else follows from there

Dead simple
December 1, 2025 at 11:45 AM
Join Matklad and me in Lisbon next week for an evening of systems engineering with @tigerbeetle.com and @resonatehqio.bsky.social

I will talk about Write Last, Read First: How to keep systems consistent without transactions

bsky.app/profile/tige...
November 28, 2025 at 10:20 AM
Dijkstra argued against unconstrained goto, not goto itself:

The unbridled use of goto statements makes it terribly hard to find a meaningful set of coordinates in which to describe the process progress

Unconstrained Event-Driven Architecture is distributed goto
Today's GoTo is Event-Driven Architecture

(Read first. Yell later)
November 26, 2025 at 1:12 PM
Today's GoTo is Event-Driven Architecture

(Read first. Yell later)
November 25, 2025 at 2:32 PM
Why your code should crash more

Assertions seem extreme: they don't throw exceptions, they crash the process. Yet continuing after a violation is worse than crashing.

Shut it down. Enable assertions in production

dtornow.substack.com/p/assert-in-...
November 24, 2025 at 3:00 PM
Reposted by Dominik Tornow
📝 Blogged: "Building a Durable Execution Engine With SQLite"

Exploring the fundamentals of DE, based on a minimal engine built from scratch, using #SQLite as an execution log, and modern #Java (👋 virtual threads).

👉https://www.morling.dev/blog/building-durable-execution-engine-with-sqlite/
November 20, 2025 at 2:12 PM
The Distributed Async Await protocol builds on two (abstract) primitives:

Execute until Blocked

Make progress by taking one incremental step

Send

Communicate by sending one message

Enabling any durability model on any transport
November 16, 2025 at 3:00 PM
When durable and ephemeral timelines collide

What happens when your agent crashes while the LLM is streaming tokens to the user?!

Chapter 4: Lifetime Management in Agentic Systems
[New Book Alert]

Systems Engineering for Agentic Applications

A guide for turning AI-powered prototypes into production-ready agentic applications

Released monthly, chapter by chapter.

If 100 people sign up, we are doing this

agenticapplications.substack.com/about
November 15, 2025 at 12:45 PM
Mastering Continuations = Mastering Control Flow

A good starting point to understand continuations and programming with continuations is

Control structures in programming languages: from goto to algebraic effects

by Xavier Leroy
November 12, 2025 at 9:01 PM
Orchestration vs Choreography

Forget the clumsy analogies

Orchestration

The platform manages the continuation

Choreography

The application manages the continuation

Everything else is noise
November 12, 2025 at 4:35 PM