Articles

This is a collection of articles I wrote over the years, presently with a strong focus on building reactive systems with Akka.

Akka anti-patterns: using remoting

Published on 8 June 2017

Whilst I have always successfully discouraged my clients from using Akka Remoting in their application, I often get questions regarding remoting while talking about anti-patterns at conferences and user groups. Don’t get me wrong. I love Akka remoting. Especially the new Aeron-based Artery remoting version that is based on UDP rather than TCP. Whilst it – Read More

Tour de Lagom Part 1: Lagom and microservices

Published on 5 June 2017

Lagom is a framework for building reactive microservices in Scala or Java with an emphasis on developer productivity. I’ve had a chance to work with it for some time and would like to share my impressions about it. This is going to take a bit longer than just one post, so you’re reading part one – Read More

Akka anti-patterns overview

Published on 29 May 2017

Last updated on 20 March 2018 An overview of Akka anti-pattern articles. You can also watch a talk outlining some of them Basics Shared mutable state Blocking Flat actor hierarchies / Mixing businesss logic and failure handling Race conditions Performance Logging the wrong way Being out of touch with the hardware Overuse of ActorSelection Using – Read More

Akka Streams – What is NotUsed all about

Published on 22 May 2017

Akka Streams is a powerful implementation on top of the Reactive Streams SPI for non-blocking asynchronous communication with back-pressure on the JVM. This post is not about explaining what this means, nor what Akka Streams does. The purpose of this post is to explain what on earth the NotUsed type in type signatures of Akka – Read More

Akka anti-patterns: blocking

Published on 15 May 2017

This is probably one of the most frequent (and dangerous) anti-patterns when it comes to working with Akka. Let’s look at an adequate description of the mindset you must be in in order to use it: So maybe you didn’t actually want to see the world burn. Maybe you thought that this one time it – Read More

IntelliJ IDEA OS X Shortcuts on Ubuntu Gnome

Published on 10 April 2017

I recently got myself a new desktop computer with nice and fast hardware (more about this in another post) and am setting up Ubuntu Gnome on it. Since I’ll still be using my MacBook Pro for some time I don’t want to learn another set of keyboard shortcuts, so I set out to use IDEA’s – Read More

Akka anti-patterns: being out of touch with the hardware

Published on 21 November 2016

Choosing Akka as a tool is often – if not always – driven by the need for good performance. Surely, the actor model itself is appealing as a means for organizing and reasoning about code, but this isn’t in itself a good reason enough to use the Akka toolkit. If all you are concerned about – Read More

Akka anti-patterns: logging (the wrong way)

Published on 31 August 2016

Update: removed rogue toString call in the second code example, since it was unnecessary (and harmful). Debugging actor systems is no small feat, even when there is IDE support for it. In fact, debugging any asynchronous system for that matter is a rather complicated task. Which is why, especially during development, it is not entirely – Read More

Akka anti-patterns: too many actor systems

Published on 23 August 2016

Admittedly I’ve seen this one in use only one time, but it was one time too many. For some reason I keep seeing clients come up with this during design discussions and reviews though, therefore it makes it into the list of Akka anti-patterns. What I am talking about is this: Reasons I hear for – Read More