Profile avatar
dominiktornow.bsky.social
286 posts 1,939 followers 35 following
Prolific Poster

One of my favorite examples of fragile mental models is synchronous vs asynchronous communication in distributed systems. Something blocking? Something messages?! Something queues?! What is your mental model?! bsky.app/profile/domi...

In software engineering, mental models are commonly fragile, shallow, ambiguous, and worst, inconsistent At first glance, they appear adequate, but when we dig deeper, they unravel Never stop digging

The FOSSASIA Summit 2025 is only two weeks away Please join my talk on Distributed Simulation Testing. Let’s connect and chat about testing concurrent and distributed systems bsky.app/profile/domi...

My favorite part of any model of async await: How does the model encode suspension & resumption The model splits suspension into • Await-Continue (if the awaited task is completed) • Await (otherwise) and folds resumption into • Async-Return bsky.app/profile/did:...

The async await programming model allows developers to write code that looks synchronous yet executes asynchronously Pause ’n’ Play: Formalizing Asynchronous C# explores the theory of async await in C# and .NET 🎓 gavinbierman.github.io/assets/pdf/e...

To address the challenges of distributed coordination, Resonate adopts a formal system model and defines two protocols: The Distributed Coordination Protocol operating on top of the Distributed Recovery Protocol Both designed to be dead simple bsky.app/profile/domi...

The Monster Scale Summit agenda features many great authors like @martin.kleppmann.com @chris.blue @gwenshap.bsky.social @dominiktornow.bsky.social @cynthiadunlop.bsky.social @penberg.org @sarna.dev @squarecog.bsky.social. Check out a preview of their books here > www.scylladb.com/2025/02/18/s...

Relying on partial knowledge makes coordination far more challenging than having total knowledge. @martin.kleppmann.com’s How To Do Distributed Locking provides an insightful illustration why this is the case A must-read for distributed systems engineers bsky.app/profile/domi...

The difference? Total knowledge vs. partial knowledge Concurrency requires coordination and coordination requires knowledge about the state of the system 🧵 1/3 bsky.app/profile/domi...

Distributed Concurrency is fundamentally different from Non-Distributed Concurrency For once, the reason is not (only) partial failure. What do you think makes all the difference?!

I am super excited to return to fossasia summit, Bangkok, Thailand March 13-15 Please join my talk on Deterministic Simulation Testing and say hello-Looking forward to meeting people in person

AnyCast with preference is ideal to handle distributed callbacks: Route to the registering process if available or any other equivalent process if not. Callbacks are handled correctly, even if the system topology changes bsky.app/profile/did:...

AnyCast with preference allows message routing with transparent rerouting in case of failure: Route to the best process in the group if available, route to any process in the group if not Resonate's fault-tolerance begins on the transport layer bsky.app/profile/domi...

Illustration of redundancy (duplication & coordination) to increase scalability and reliability The hard part? Coordination! Understanding duplicated components takes only one glance, but understanding coordinating interactions takes tracing the lines bsky.app/profile/did:...

Putting the final touches on my talk The Mechanics of Scale for @scylladb.com Monster Scale Summit—just in time for tomorrow's recording bsky.app/profile/domi...

The Send primitive supports two semantics: 1️⃣ Unicast Deliver to one process 2️⃣ Anycast (with preference) Deliver to one process of a group Preference allows to specify a preferred recipient, while still targeting the group-perfect for failover bsky.app/profile/domi...

One of the most fascinating aspects of Resonate? The message-passing protocol Everything in Distributed Async Await distills to a single Send primitive One abstract primitive powers the entire programming model—everything else is built on top

After 3 years of The Weekend Read, December 2024 marked the final chapter I’m thinking of continuing with a new name and with a flexible rhythm Maybe a discussion of coordination is a good start for Scattered Thoughts Would you be interested?! bsky.app/profile/domi...

Coordination Avoidance in Database Systems If we distinguish coordinated and coordinating, then Coordination Avoidance is about being coordinated while minimally coordinating. I quite like this mental model bsky.app/profile/domi...

Coordination Avoidance in Database Systems If we distinguish coordinated and coordinating, then Coordination Avoidance is about being coordinated while minimally coordinating. I quite like this mental model bsky.app/profile/domi...

Coordinated The term Coordinated refers to constraints on the result of concurrent executions Coordinating The term Coordinating refers to constraints on the structure of concurrent executions bsky.app/profile/domi...

Ready to master the art of simulation??! Join Joran and me in the deterministic dojo for an exploration of Deterministic Simulation Testing Starting in 1.5 hours, 9 am PT Signup link below Bring your questions and curiosity bsky.app/profile/domi...

Subtleties of Systems Engineering In distributed & database systems we talk a lot about coordination, but there is a difference between coordinated and coordinating Ideally, your system is coordinated without coordinating

Just got off a brief prep call. Joran's insights (on Deterministic Simulation Testing) are next level. Join us tomorrow at 9am PT to experience Joran's unique perspective yourself. Level up your testing game. bsky.app/profile/domi...

One of the best articulations where to draw boundaries between the application and the environment is found in Engineering a Safer World by Nancy G Leveson: There is no universal answer—where you delineate depends entirely on your requirements bsky.app/profile/domi...

A key consideration in deterministic simulation testing: where do we draw the boundary between environment and application The environment will be replaced by the simulator. So how do we decide where to draw the boundaries?! What do you think?! bsky.app/profile/domi...

At Brussels Airport, heading home from @fosdem.bsky.social 2025. Thank you everyone for a great event ❤️

Both coordination and contention ultimately manifest as waiting on a synchronization barrier. The difference is that coordination is cooperative and contention is competitive-but both result in waiting time Both are bad news for a system's scalability bsky.app/profile/domi...

Great chat on #Swift’s implementation of async await, structured concurrency, and cancelation with @kto.so at fosdem 2025. After meeting virtually before, happy to meet irl ♥️

Chapter 8 Distributed Transactions of my book Think Distributed Systems was just released We’ll discuss Distributed Transactions and the 2 Phase Commit protocol, one of the most well-known protocols in distsys Now available on MEAP (Manning Early Access Program) www.manning.com/books/think-...

With Joran on a live stream, we do not scratch the surface—we go to the bottom. Join us when we venture beyond the basics and explore the ins and outs of Deterministic Simulation Testing Sign up on www.resonatehq.io/webinars bsky.app/profile/domi...

The 6 C's of Scalability A system's scalability has one antagonist: Constraints on Concurrency-essentially anything that requires your system to wait: • Coordination, a constraint rooted in Cooperation • Contention, a constraint rooted in Competition Cool, no?!

FOSDEM 2025 is just 2 days away 🗓️ Come join my talk on Deterministic Simulation Testing and find out how to squash the Heisenbug Safe travels, see you in Brussels bsky.app/profile/domi...

An elegant mental model to reason about abstraction layers: An abstraction layer is a triple (L₁, M, L₂) where program M imports interface L₁ and exports interface L₂ M acts as a transformation, translating any program P importing L₂ into an equivalent program M(P) on L₁

If you want to chat about Deterministic Simulation Testing, come hang out with me in Resonate's Discord resonatehq.io/discord bsky.app/profile/did:...

Deterministic Simulation Testing creates the certainty needed to develop and operate your applications with confidence Join Joran Dirk Greef, CEO of TigerBeetleDB and me Thursday Feb 6th, 9am PST for our livestream discussing the ins and outs of DST

The author of this paper, Koen Claessen, is also author of A poor man’s concurrency monad, which can be considered the origin of async await Expressing the concurrent structure of a computation, coordinating (suspending & resuming) through continuations bsky.app/profile/domi...

The next paper highlights location as a core concept of distributed programming models: Spawn local and spawn dist express the distributed structure of a computation @resonatehqio has local function call & remote function call. Different name, same idea bsky.app/profile/domi...

The defining characteristic of a distributed programming model is the concept of a location its core semantics Where parts of a program execute is elevated to a first-class citizen bsky.app/profile/domi...

Async await, actors, and communicating sequential processes (e.g. golang) are concurrent programming models, not distributed programming models. So, what is the defining characteristic of distributed programming models?! Share your thoughts

I had the pleasure of meeting Alex Kladov a.k.a matklad of Rust, Zig, and TigerBeetleDB fame in Lisbon today Good times, fun conversations, raising the question: How about a Systems Meetup in Lisbon? Would you be interested?! Let us know

Just one week to go to FOSDEM 2025 Join my talk on Deterministic Simulation Testing. Let’s squash that Heisenbug together bsky.app/profile/domi...