How to design software architecture pragmatically

I’ve run numerous workshops in recent years. It’s intriguing to see different ways people solve the same problem. Some start from general… | Continue reading


@event-driven.io | 1 year ago

Is the Strategy Pattern an ultimate solution for low coupling?

Having a single source of truth and data point is a sweet spot for running business logic. We check the data from one place and update it… | Continue reading


@event-driven.io | 1 year ago

Oops I did it again, or how to update past data in Event Sourcing

One team win is a loss for the other. For some people, money loss is a gain for others. In the same way, the challenging parts of Event… | Continue reading


@event-driven.io | 1 year ago

Architecture Weekly became the Substack Bestseller!

Boom, I got this week such a nice picture from the Substack. My Architecture Weekly newsletter appears to have become the Substack… | Continue reading


@event-driven.io | 1 year ago

My journey from Aggregates to Functional Composition

I was recently asked what drove me to mostly use immutable data and methods rather than the Aggregate Pattern in my samples and videos. I… | Continue reading


@event-driven.io | 1 year ago

Event transformations, a tool to keep our processes loosely coupled

One of the biggest pains in traditional software design is accidental complexity. We want to understand and reflect on the business process… | Continue reading


@event-driven.io | 1 year ago

Prototyping, an underestimated design skill

Coding is an underestimated part of the design. When we think about the design, we immediately fall to whiteboard diagrams, sticky notes, or… | Continue reading


@event-driven.io | 1 year ago

Behaviour-Driven Design is more than tests

Why did I name the testing library Ogooreck? Between my friends, I’m well known for my lame jokes. Ogooreck is one of them. Ogooreck is a… | Continue reading


@event-driven.io | 1 year ago

Could you help me by filling a short survey about an online course?

I realised that I could do more to help you and other folks. I’ve been sharing online content for free in the last few years on this blog… | Continue reading


@event-driven.io | 1 year ago

A simple way to configure integration tests pipeline

Continuing an effort to explain DevOps scenarios, today I’d like to show you a simple way to set up integration tests that I’m using in my… | Continue reading


@event-driven.io | 1 year ago

How to scale out Marten

If you’re not a new reader of this blog, you probably know already that I’m not so fond of the Will it scale? question. I believe that, too… | Continue reading


@event-driven.io | 1 year ago

How to set global setting for XUnit tests

XUnit is not my favourite testing tool; I already mentioned that in How to set up a test matrix in XUnit?. To be fair, none of the .NET test… | Continue reading


@event-driven.io | 1 year ago

Vertical Slices in practice

I’m a preacher for the CQRS, Vertical Slices, and Feature Folders. I won’t hide that, and I won’t even try. I believe that structuring code… | Continue reading


@event-driven.io | 1 year ago

How to create Docker image for Marten application

Containerisation is something that pushed our industry much further. Generating immutable artefacts is a foundational aspect of the DevOps… | Continue reading


@event-driven.io | 1 year ago

Vertical Slices in practice

I’m a preacher for the CQRS, Vertical Slices, and Feature Folders. I won’t hide that, and I won’t even try. I believe that structuring code… | Continue reading


@event-driven.io | 1 year ago

Follow the money to get a better design

I noticed that we, developers, struggle to follow the money. And that’s impacting our design in the wrong way. Of course, we’re pretty good… | Continue reading


@event-driven.io | 1 year ago

Removability over Maintainability

A diverse system with multiple pathways and redundancies is more stable and less vulnerable to external shock than a uniform system with… | Continue reading


@event-driven.io | 1 year ago

Relation from Event Sourcing Live 2023

InfoQ claims that it’s in the late majority adoption phase. That means that if you haven’t started to use it, you better start doing it, as… | Continue reading


@event-driven.io | 1 year ago

A few words on communication

cover I got a surprising question during my workshop this week: It seems that communication with the business is critical to make Event… | Continue reading


@event-driven.io | 1 year ago

The Holy Graal syndrome

_ Our industry is harmed by the disease of “There has to be something more!” also called “The Holy Graal syndrome”.** Instead of trying to… | Continue reading


@event-driven.io | 1 year ago

Anti-patterns in event modelling - I'll just add one more field

Programming origins are in mathematics. Scientists like John Von Neumann and Alan Turing built the foundations for today’s computers. That… | Continue reading


@event-driven.io | 1 year ago

Is the audit log a proper architecture driver for Event Sourcing?

Usually, one of the main drivers for Event Sourcing is the audit log capability. Indeed event stores are append-only logs, theoretically, we… | Continue reading


@event-driven.io | 1 year ago

Is the audit log a proper architecture driver for Event Sourcing?

cover Usually, one of the main drivers for Event Sourcing is the audit log capability. Indeed event stores are append-only logs… | Continue reading


@event-driven.io | 1 year ago

A few notes on running open source project after Marten v6 release

A few notes on running the open source project after the Marten v6 release. Last week we released the next major Marten release, and I’d… | Continue reading


@event-driven.io | 1 year ago

How to test event-driven projections

Projections in an event-driven world are a way to interpret registered events. We can take a sequence of events and build from them read… | Continue reading


@event-driven.io | 1 year ago

Publishing read model changes from Marten

Integrations have different names, shades and colours, but only one adjective: challenging. Trying to glue systems together requires… | Continue reading


@event-driven.io | 1 year ago

Postgres Superpowers in Practice

Look! Up in the sky! It’s a bird! It’s a plane! It’s Superman!. I have such a thought quite often while working with Postgres. Why? Let’s… | Continue reading


@event-driven.io | 1 year ago

Event stores are key-value databases, and why that matters

Event stores are the foundational building block of Event Sourcing. They’re also one of the biggest sources of confusion. They are databases… | Continue reading


@event-driven.io | 1 year ago

ChatGPT, revolution or not?

I started my career when StackOverflow didn’t exist. That’s how I quite often introduce myself. I’m that old. That’s, of course, nothing… | Continue reading


@event-driven.io | 1 year ago

Ensuring uniqueness in Marten event store

Unique constraint validation is one of those things that looks simple but is not always easy. I explained already that, in Event Sourcing… | Continue reading


@event-driven.io | 1 year ago

Projecting Marten events to Elasticsearch

I told you already that Projections are an Event Sourcing killer feature, and today I’d like to repeat that. In Marten, we embraced that and… | Continue reading


@event-driven.io | 1 year ago

How to handle multiple commands in the same transaction

Let’s say that we’re starting a new project. It’s a small tool for internal needs, maybe even some sort of shadow IT project. It may also be… | Continue reading


@event-driven.io | 1 year ago

Fun with serial JSON

JSON serialisation is so much fun. We can make jokes and curse, but we must live with it. Surprisingly, that’s not getting simpler if we use… | Continue reading


@event-driven.io | 1 year ago

Don't let Event-Driven Architecture buzzwords fool you

I see a lot of new terms like Command-Event, Event-Based Compute, etc., presented around Event-Driven Architecture. Let me clear that up… | Continue reading


@event-driven.io | 1 year ago

Set up OpenTelemetry with Event Sourcing and Marten

If I had to select the Distributed Systems Song, I’d choose Land of Confusion. This is the world we live in. And these are the hands we’re… | Continue reading


@event-driven.io | 1 year ago

Event-driven projections in Marten explained

Projections are a neverending story. One does not simply write a single guide. One needs to write more examples of more advanced cases. That… | Continue reading


@event-driven.io | 1 year ago

Explicit validation in C# just got simpler

Validation is a thriving concept. It enables incredible creativity in developers implementing it in various ways. I explained my general… | Continue reading


@event-driven.io | 1 year ago

Stacking the bricks in the software development process

We, developers, are searching for Holy Grail, one pattern to rule them all. There’s no such. In his excellent book “Atomic Habits”, James… | Continue reading


@event-driven.io | 1 year ago

Guide to Projections and Read Models in Event Driven Architecture

If I had to choose the killer feature of Event Sourcing, I’d select projections. Why? I’ll explain that in detail in this article. Events… | Continue reading


@event-driven.io | 1 year ago

How to validate business logic

cover Fox Mulder used to say: “trust no one”. I’m claiming that each software developer should define their level of paranoia. The thing… | Continue reading


@event-driven.io | 1 year ago

Let's build event store in one hour!

**Last year, I completed two items from my speaker bucket list NDC Oslo and Domain-Driven Design Europe. I’m proud and happy, as those… | Continue reading


@event-driven.io | 2 years ago

Don't be like Ebenezer Scrooge. A few words about workaholism.

There is a cult of workaholism in our industry. Just like the guys from the gym brag about how much they pulled on the chest or did in the… | Continue reading


@event-driven.io | 2 years ago

Explicit events serialisation in Event Sourcing

Events serialisation is an intriguing topic. On the one hand, it’s part of the campfire spooky tales, so (in)famous events versioning. On… | Continue reading


@event-driven.io | 2 years ago

The magic is that there is no magic. Or how to understand design patterns.

The magic is that there is no magic. Many patterns perceived as complicated appear to be simple or even simplistic under the cover. Take… | Continue reading


@event-driven.io | 2 years ago

Share your story on Event Sourcing Live 2023

Event Sourcing is a concept that helps to build the bridge between business and technical implementation. It’s a storage pattern that takes… | Continue reading


@event-driven.io | 2 years ago

Testing asynchronous processes with a little help from .NET Channels

Let’s say that you have an event-driven application. It has an event bus that listens for events from asynchronous processes (e.g. Kafka… | Continue reading


@event-driven.io | 2 years ago

Mapping event type by convention

Events are an essential block of Event-Driven Architecture. They represent business facts that happened in our system. We can use them to… | Continue reading


@event-driven.io | 2 years ago

Mapping event type by convention

Events are an essential block of Event-Driven Architecture. They represent business facts that happened in our system. We can use them to… | Continue reading


@event-driven.io | 2 years ago