This is coming up soon! Join me on Monday for my Ted Talk at OpenValue in Munich:
https://www.meetup.com/openvaluemuenchen/events/315218662
And you can check out my event-sourced travel app at http://jittertravel.com/calendar
This is coming up soon! Join me on Monday for my Ted Talk at OpenValue in Munich:
https://www.meetup.com/openvaluemuenchen/events/315218662
And you can check out my event-sourced travel app at http://jittertravel.com/calendar
In part 11 of my event sourcing series, I discuss consistency and why we don't use aggregates or dynamic consistency boundaries to solve it:

In part eleven of this series on event sourcing, we make a small detour to discuss consistency boundaries. I never thought much about this aspect until recently, when I watched a couple of conference talks that all made a big fuss about domain-driven design's aggregates, and had a discussion with Sara Pellegrini about dynamic consistency...
A lot has happened since our last release post: eight minor releases for patchlevel/event-sourcing, from 3.12 to 3.19.
Instant retry command bus, subscription cleanup, auto initialized aggregates, PHP 8.5 and Symfony 8 support and much more.
Feel free to check it out!

A lot has happened since our last release post: eight minor releases for patchlevel/event-sourcing. We added an instant retry command bus, subscription cleanup, auto initialized aggregates, PHP 8.5 and Symfony 8 support and much more. Time to catch up on all the highlights from 3.12 to 3.19.
Curious about event sourcing but not sure where to start? 💭
Build a feature from the events up in this hands-on workshop with Ted M. Young at #dev2next and see how event sourcing works in practice.
🔗 https://www.dev2next.com/schedule
🎟️ Get tickets: https://dev2next.com
📅 October 12-15
Event sourcing is easy. Just store what happened to a thing as events, and when you need the thing's state, project the events. Unless it is not because there are misplaced or duplicated events in the event stream. In the tenth part of my event sourcing series, we'll look at why events can be misplaced and how to handle them.
https://www.planetgeek.ch/2026/06/16/event-sourcing-temporally-misplaced-or-duplicated-events/

Event sourcing is easy. Just store what happened to a thing as events, and when you need the thing's state, project the events. Unless it is not because there are misplaced or duplicated events in the event stream. In the tenth part of my event sourcing series, we'll look at why events can be misplaced...
Part nine in my event sourcing post series is about mixing bi-temporal and uni-temporal events in the same event stream. Why, how, and the trade-offs.
https://www.planetgeek.ch/2026/06/09/event-sourcing-non-bi-temporal-events-in-a-bi-temporal-stream/

In part nine of my event sourcing series, we revisit something I showed in part eight but didn't explain: events in a bi-temporal event stream that modify the projected data independently of the effective time axis. We called this behaviour perpetual modification (you know, naming is hard). It's simpler than it sounds - at least...
If you're following my ongoing blog post series on event sourcing and have any questions, feel free to ask here or in the post comments.
The question does not have to be about event sourcing. I'm especially happy to answer questions about the F# samples.