Maximizing Throughput for Akka Streams

The Akka Streams API is fantastic for building scalable applications that involve streaming workloads. It provides high-level semantics that naturally describe these workloads, and it handles the dynamics inherent to these systems, resulting in applications that are reliable and resilient. If you are not familiar with the Akka Streams API,…

The Importance of Agency

Dan Pink's Drive is one of my favourite books. I also really like his RSA talk on the same subject. Pink argues that people are happy, engaged, productive, and creative when they are intrinsically motivated, as opposed to being motivated extrinsically by money, fear, punishment, or shame. He argues that…

Scala's Future.successful: Do Not Block Your Future Success

I want to raise awareness of a simple mistake that can be made with the successful method of a Scala Future. A Future is a placeholder object for a value that may not yet exist. It is used for performing operations concurrently, in a non-blocking manner, and it enables scaling…

Integrating Akka Streams and Akka Actors: Part IV

In the first article of this series, I demonstrated the most basic patterns for integrating Akka Actors and the Akka Streams API. In the second article, I began developing an example to show how actors compliment streams, providing fault-tolerance and life-cycle management. In the third article, I extended this example…

Reflections on Using Quality Views

When you work in engineering or operations, you become intimately familiar with the challenges of technical debt. It can be difficult, however, to communicate the full cost of technical debt to others in the organization, particularly to people who are non-technical. Communicating the latent risks for software systems that are…

Integrating Akka Streams and Akka Actors: Part III

In the first article of this series, I described the basic patterns for interfacing the Akka Streams API and Akka Actors. In the second article, I focused on how Akka Actors compliment the Akka Streams API with regard to the fault tolerance and life-cycle management of a stream. In this…

Integrating Akka Streams and Akka Actors: Part II

In part one of this series, I described the challenges of integrating the Akka Streams API with Akka Actors. I demonstrated the basic patterns for interfacing streams and actors, removing the discontinuity between the two. In this article, I will begin to explore more sophisticated ways to integrate actors and…

Reflections on Being a Team Lead

A year ago, I accepted a team lead position. As I wrote at the time, I have had a number of opportunities to be a team lead, but I have always declined them, choosing a more technical role, to become a better engineer. In this essay, I will reflect on…

Integrating Akka Streams and Akka Actors: Part I

Most people are attracted to Akka with the promise of the actor model providing a better abstraction for building scalable and resilient distributed systems. Since Akka attempts to solve such a challenging set of problems—from concurrency, to distributed computation, to fault tolerance—it takes some time to…

Patterns for Streaming Measurement Data with Akka Streams

I have spent my entire career building infrastructures for streaming data to support the monitoring and control of industrial applications. I have experience building distributed systems for data acquisition, durable message-queuing, publish-subscribe messaging, and the efficient storage and query of time-series data. I have developed systems on Unix, Linux, Windows,…