Vertical slices, their ownership and external dependencies
A few questions about Vertical Slices come up again and again, and they’re good ones. If a slice cuts through all the layers, do we get a…
Event-Driven by Oskar Dudycz
A few questions about Vertical Slices come up again and again, and they’re good ones. If a slice cuts through all the layers, do we get a…
Every system ends up with bad data. Some of it comes from integrations, some from users doing things nobody predicted, and a good part of it…
There is one question I keep getting about my event-sourced code: why don’t I use ? It usually comes after someone sees a decision throwing…
Work impacts how we live, and our lives impact how we do our work. My name is Oskar Dudycz, not Paulo Coelho, and today I’m not going to…
I want it all, and I want it now. This is not only a Freddie Mercury quote but also, too often, a general plan for our software product. The…
I just released something. It’s called Strictland. And it’s a contract testing library. Why did I do it? Before I go further, if you can’t…
Fork your dependencies, trim them to only your use case, never update unless it breaks for your users. I’ve been vocal about this for 1…
How soon is now? In PostgreSQL, it’s not always as soon as you’d think. I learned that the hard way recently, so you don’t have to. It took…
Many people believe there should be one, and only one, way to model software. I think differently, I like to mix different techniques. For…
I was toying with LLM-based domain research. It reminded me of the common mistake we make when we try to practice DDD: overreliance on what…
Hey, have a look at what I made during the weekend. I had some time, grabbed a beer, turned on the computer and tried to code this feature…
Try not. Do. Or do not. There is no try! I’m calling this the Yoda Principle. Master Yoda said that to Luke Skywalker a long time ago in a…
Have you ever heard phrases like. Just an update, the milk ran out. Someone finished it and put the empty carton back. Or So everyone is…
One of the first indications of getting old(er) is when people stop getting your movie or music references. Of course, based on this rule…
You may already know that I’m a GenAI sceptic. And a general sceptic. Do you know that scepticism comes from the Greek σκέπτομαι (skeptomai…
Be careful what you wish for, because your wish may come true. What LLMs revealed is how many people in our industry don’t like to code. It…
Last time, I shared with you how sneaky I was on transaction handling.. Today, the opposite: I’ll tell you how I fixed the issue when I…
We’re being told that software design is the art of making tradeoffs. But… Are we taught how to make them? Not that it’s easy to teach…
In the last article, I explained how to rebuild Event-Driven Read Models in a safe and resilient way. I asked readers to let me know if they…
Let’s make a soup today: a blog soup. We’ll mix multiple ingredients like: events (obviously), read models, inline and async projections…
There are several reasons why I’m blogging. The first one is that I forget, and writing helps me to remember and organise my findings. The…
Let’s start by asking you two questions. What Super Frog has to do with messaging? When was the last time you wrote if statements in SQL? If…
Did you know that you can build an event store in one hour? I even did it a few times on the conference stage. Actually, it took me usually…
I’m always saying that there’s a thin line between good and bad practice, and this thin line is named “Context”. That’s also true for the…
After the last article on Dealing with Race Conditions in Event-Driven Architecture with Read Models, I got such a question from Ben: You…
My events came out of order! What should I do?! Are you familiar with the term “phantom record” and its benefits? No? Let me explain it to…
I have always said that MongoDB is not the best choice for event storage, and guess what? I just released the stable version of the MongoDB…
“Is your command handling idempotent?” Sounds like a douchebag question to ask. Actually, that’s not a question but a statement that we want…
The leitmotif of this blog is the event-driven approach. I truly believe that it’s a way to keep our applications closer to business. By…
Have you heard someone say: “We’ll use this tool because it requires a long onboarding and lots of memorisation?” You could have seen the…
If you want to make God laugh, tell him about your plans. My plans were simple: recharge during summer, take a break in July, and then…
When you think upfront and want to make things right, there’s an interesting feedback loop. Quite often, things start to click, often in a…
I don’t feel like an authority or an expert. I prefer to think about myself as a practitioner. Our industry is filled with self-proclaimed…
Some time ago, I wrote about the dangers that come from the I’ll just add one more field” attitude. Have you heard about the Broken Window…
In the previous article, I told what happened when Emmett and Pongo walked into a bar. In other words, I announced that you can now do Event…
Last week, I announced Pongo - Mongo, but it was on PostgreSQL. So, the Node.js library allows using PostgreSQL as a document database…
Flexibility or Consistency? Why not have both? Wouldn’t it be great to have MongoDB flexible schema and PostgreSQL consistency? MongoDB is a…
Regular expressions are one of the classic examples of hate and hate relationships. Yes, it’s not a typo; hate and hate. Do you know anyone…
Developer experience is a phrase repeated in multiple ways. In our industry, we finally realised how important it is to reduce the cognitive…
“Just put the load balancer in front of it, and call it a day”. But is it really that simple? Was it ever “just do XYZ?“. I was preparing a…
Managing processes is non-trivial. I have written about it in multiple posts and told you the horror story of the case that should have…
Everyone likes to talk about best practices. I went the other way around and gathered all the worst practices on how to build the worst…
AsyncEnumerable is a sneaky abstraction. It allows simplified and performant usage for iterating on pull-based and push-based sources. “Pull…
Erik Shafer asked me on the Emmett Discord if I could provide a sample of how to run the WebApi application using Emmett. Of course, I said…
Last week, we covered the latest improvements to Java 22 around pattern matching and records. They enable explicit business logic modelling…
I like learning new things. It stimulates my creativity, helps me gain diverse perspectives, and helps me be humble. When you’re a notorious…
Testcontainers became a popular way of setting up dependencies for integration testing. They’re not ideal, as configuring them to run your…
Last week, we discussed an overused but applicable pattern: in-memory bus. This time, we’ll continue with the leitmotif and talk about…
I’m writing this article on Friday, and it’s about time to have some fun. As this is a programming blog, let’s have some fun coding. Let’s…
Have you heard about Passive Aggressive Events or CRUD sourcing? Or maybe about the Clickbait event? If you don’t, you better check the talk…