On Programming, Software Architecture, and Sociotechnical Systems

Various content on event-driven architecture, microworkflows, reactive systems, software architecture in general, engineering management, and anything else related to developing software.

To never miss an update, follow me on Mastodon, Bluesky or LinkedIn, or subscribe to the RSS feed.

Blog Posts

Not All Commands Are Equal (And Neither Are Events)

30 November 2024

Usually, in an event-driven architecture, events are emitted by one service and listened to by many (1:n). But what if it's the other way around? If one service needs to listen to events from many other services?

The Dual Nature of Events in Event-Driven Architecture

31 October 2024

Given that events play such a central role in event-driven architecture, there’s an astonishing lack of agreement on what should be contained in an event. This may be rooted in the fact that, depending on your perspective, events fulfill different purposes.

Five Common Misconceptions About Event-Driven Architecture

30 September 2024

An opportunity for everyone to make a little self-test. Do you believe any of these five statements? If so, don't worry, you're not the only one, I've come across them many times. I'm very convinced they're untrue, though. This is my little attempt to better a shared understanding of some properties of event-driven architecture.

Event-Driven Core, Request-Response Shell

31 August 2024

There’s much uncertainty and doubt (and maybe even fear?) around event-driven architecture. One example is the belief that it’s irrelevant for REST APIs, as using HTTP verbs is quite clearly not event-driven. But behold - you don’t always have to go all-in to win.

What Kind of Asynchronous is Right For You?

15 June 2023

There are a few ways for services to communicate that can be rightfully classified as asynchronous. But they have very different characteristics. Let's have a look at them and their impact on the overall system structure.

Flix For Java Programmers

24 June 2022

The Java Virtual Machine is not limited to running programs written in the Java programming language. There are many other compilers that output Java bytecode. Some of these languages have so far remained exotic. Others have found a large following, for example Groovy, Clojure, Scala and Kotlin. Now, with Flix, another language, that brings some fresh approaches to the JVM, has entered the scene.

Java Concurrency: An Introduction to Project Loom

17 June 2022

Project Loom is an experimental version of the JDK. It extends Java with virtual threads that allow lightweight concurrency.

Event Collaboration And Event Sourcing

09 June 2022

“Events! Events everywhere!” - or so it seems. This isn’t a bad thing, not at all: Event-driven Architecture can help to make microservice architectures scalable and resilient. But there are different patterns at play that we need to distinguish. And not everything is an event. An attempt for clarification.

Don't Use Await.result!

19 February 2019

Almost regularly I see Scala code where people program in a sequential, synchronous style and integrate an asynchronous I/O call by waiting for its completion with Await.result. But you really shouldn’t.

Java, Scala, Kotlin and .. Skiing

21 May 2017

Java is skiing. Scala is snowboarding. Kotlin is carving skis.

10 More Scala Features Most* Java Developers Love

07 February 2017

In my first blog post, '10 Scala Features Most Java Developers Love', I assembled a top 10 list of Scala features I wouldn't want to miss, and that I found more or less universally liked in conversations with other Java developers. Here are 10 more that would have deserved to also be on the list.

Things I Wish I Knew When I Started Building Reactive Systems

31 January 2017

When you attempt to build reactive systems coming from the world of Java web and enterprise development, you’ll stumble across some fundamental differences and might wish someone had told you earlier. Unless you read this blog post, of course, because I’m going to let you in on four things you should know.

10 Scala Features Most* Java Developers Love

22 November 2015

Some Java developers seem to be intimidated by Scala. They get hung up on some possibly rather obscure feature, and from that conclude that the language must be a complicated maze you can only get lost in. There are so many features in Scala, though, that are so easily accessible, and that really just make the developer’s life easier. This is my list of 10 features that are easy to understand and use, yet very powerful.