Dominik Tornow's Avatar

Dominik Tornow

@dominiktornow

Founder Resonate HQ | Distributed Async Await | Thinking in Distributed Systems | https://dtornow.substack.com

2,965
Followers
39
Following
614
Posts
27.10.2024
Joined
Posts Following

Latest posts by Dominik Tornow @dominiktornow

Systems engineering rests on accurate and concise mental models. Libraries, frameworks, or platforms come and go, but principles are forever

Join me at Monster Scale Summit

11.02.2026 18:08 ๐Ÿ‘ 5 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0
Preview
Quint Executable specs for reliable systems

Quint is the specification language you've been looking for

quint-lang.org

29.01.2026 10:05 ๐Ÿ‘ 4 ๐Ÿ” 1 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0
Post image

I am wondering if Claude Code excels if a specification includes exhaustive pre and post conditions. Without stating how to implement a function, we can still rigorously specify what the function does
(example in Dafny)

25.01.2026 11:35 ๐Ÿ‘ 3 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0
Post image

My current mental model of coding with agents:

Human attention moves to the edges

11.01.2026 18:52 ๐Ÿ‘ 5 ๐Ÿ” 1 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

This diagram captures the core thesis of A Note on Distributed Computing:

Distributed and non-distributed executions are fundamentally different beasts

Distribution fragments execution

10.01.2026 15:00 ๐Ÿ‘ 7 ๐Ÿ” 2 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0
Post image

Distributed System โ‰  Distributed Execution

A distributed system is a collection of concurrent components that communicate by exchanging messages

A distributed execution is an execution that is distributed across those components

The dist sys is the stage for the dist exe

10.01.2026 11:30 ๐Ÿ‘ 6 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 1
Post image

My advice for software engineers in 2026

Get into formal methods

Not to prove your system correct but to prove your thinking correct

01.01.2026 17:15 ๐Ÿ‘ 7 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

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

31.12.2025 21:20 ๐Ÿ‘ 2 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

No-op in respect to state, the system can still generate a response. For example Stripe returns the same response as on the first application IIRC

30.12.2025 20:38 ๐Ÿ‘ 0 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

Here you go

bsky.app/profile/domi...

30.12.2025 18:05 ๐Ÿ‘ 2 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

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

30.12.2025 17:00 ๐Ÿ‘ 10 ๐Ÿ” 2 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 2

Will post a follow up in a bit. Iโ€™ll ping you

30.12.2025 14:06 ๐Ÿ‘ 2 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0
Post image

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

30.12.2025 12:55 ๐Ÿ‘ 5 ๐Ÿ” 1 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 1
Post image

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

28.12.2025 19:43 ๐Ÿ‘ 9 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

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

22.12.2025 21:10 ๐Ÿ‘ 4 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

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

21.12.2025 16:00 ๐Ÿ‘ 3 ๐Ÿ” 1 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0
Post image

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

18.12.2025 17:55 ๐Ÿ‘ 1 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

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

14.12.2025 11:30 ๐Ÿ‘ 1 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0
Post image

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

12.12.2025 10:05 ๐Ÿ‘ 2 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

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...

03.12.2025 15:35 ๐Ÿ‘ 2 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

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

03.12.2025 15:05 ๐Ÿ‘ 1 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0
Post image

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

03.12.2025 10:35 ๐Ÿ‘ 2 ๐Ÿ” 1 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 1

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

02.12.2025 08:20 ๐Ÿ‘ 7 ๐Ÿ” 1 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 0

Resonate's Distributed Async Await doesn't add events, event types, event logs, or complex replay machinery.

Resonate makes promises durable. That's it.

01.12.2025 16:50 ๐Ÿ‘ 0 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0
Post image

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

01.12.2025 11:45 ๐Ÿ‘ 1 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 1

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...

28.11.2025 10:20 ๐Ÿ‘ 2 ๐Ÿ” 1 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0

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

26.11.2025 13:12 ๐Ÿ‘ 1 ๐Ÿ” 0 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0
Post image

Today's GoTo is Event-Driven Architecture

(Read first. Yell later)

25.11.2025 14:32 ๐Ÿ‘ 1 ๐Ÿ” 0 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 1
Post image

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-...

24.11.2025 15:00 ๐Ÿ‘ 2 ๐Ÿ” 1 ๐Ÿ’ฌ 0 ๐Ÿ“Œ 0
Post image

๐Ÿ“ 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/

20.11.2025 14:12 ๐Ÿ‘ 35 ๐Ÿ” 9 ๐Ÿ’ฌ 1 ๐Ÿ“Œ 3