Essential Software Tools for Developing Operational Technologies

This article expands on a keynote that I gave at Reactive Summit 2018. An operational technology combines hardware and software to monitor and/or control the physical state of a system. Examples include systems used in power generation, manufacturing, connected vehicles, and appliances and devices in our homes. These systems…

Kubernetes Liveness and Readiness Probes: How to Avoid Shooting Yourself in the Foot

Kubernetes liveness and readiness probes can be used to make a service more robust and more resilient, by reducing operational issues and improving the quality of service. However, if these probes are not implemented carefully, they can severely degrade the overall operation of a service, to a point where you…

Backoff and Retry Error-Handling for Akka Streams

Services that incorporate streaming workloads often need to perform asynchronous requests to other services, or execute long-running, asynchronous operations. Examples include, inserting time-series data into a database, retrieving metadata for data enrichment, and executing complex business-workflows. Executing asynchronous operations in a streaming context, while maintaining backpressure in the stream, is…

Techniques for Improving Your Technical Writing

When I was in elementary and secondary school, I did not enjoy reading or writing. Both were a chore. This probably had a lot to do with the fact that the rote learning and clerical curriculum that is core to modern, institutional education, was just not right for me. I…

What Are Left-Hanging Releases and Why Should You Embrace Them?

You have probably had the experience of working tirelessly on a challenging, high-profile, business-critical project, for a significant period of time, chasing the satisfaction of completing the project successfully, only to have it be suddenly finished, completed with very little fanfare, or the gratifying catharsis that you were anticipating. You…

What Makes an Internship Successful?

I have never had an internship. In fact, while I was an undergraduate in university, I never even had a summer job related to engineering or software development. I worked at a living-history museum for three summers, giving guided tours, performing artillery demonstrations, and playing bagpipes all day. It was…

Partitioning Akka Streams for Scalability and High-Availability

In an earlier article, I detailed a number of techniques that can be used to maximize the throughput for individual Akka Streams. In a subsequent article, I also explored how an Akka Stream can be internally partitioned, in order to improve throughput. The techniques presented in these articles primarily involved…

Partitioning Akka Streams to Maximize Throughput

In an earlier article, I detailed a number of techniques that can be used to maximize the throughput for Akka Streams. The article focused on improving the throughput of individual streams and the techniques mainly involved, but were not limited to, maximizing concurrency. A topic that I did not explore…

From a Time-Series Database to a Key Operational Technology for the Enterprise: Part III

This three-part series expands on a talk that I gave at a conference focused on time-series data in 2018. This three-part series is focused on the challenges of elevating a time-series database from being just an IT application, used in the data center, to a critical operational technology, used throughout…

From a Time-Series Database to a Key Operational Technology for the Enterprise: Part II

This three-part series expands on a talk that I gave at a conference focused on time-series data in 2018. The first article in this series explored challenges related to time when elevating a time-series database from simply an information technology, to being an operational technology, used through the enterprise. In…