Archive: 2026

Considerations on cognitive load and organisational structure in sociotechnical systems.

Posted on by  
Martijn Ras

In this article we present our rule of thumb for the sizing of solutions based on what an organisation can handle. Our primary goal is to make you aware of cognitive load theory and sociological considerations on organisational structure. Be aware that these are somewhat fuzzy theories, which are still debated and do not provide us with definitive answers. We are still convinced that taking these ideas into consideration helps in making organisations more effective. With our rule of thumb we hope to provide organisations a tool for conversation around how to effectively organize flows of work, without overloading and burning down teams.

Continue reading →

Nushell Niceties: Sorting Version Values With Semver Ordering

Posted on by  
Hubert Klein Ikkink

The semver Nushell plugin can be used to work with string values as semver type as you can see in a previous post. You can use the semver sort command to sort string values with ordering rules for semantic versions. With natural ordering of string values a value of 10.0.1 is placed before 2.1.0, but if you use semver sort the ordering will be correct. The command will look at all the parts of the semver type. So a major version of 2 is placed before 10. If the major version part is the same than the minor part is used for ordering and so on. To sort in descending order you can use the option --reverse or the short option -r.

Continue reading →

Lazygit

Posted on by  
Ronald Koster

Arguably the most popular version control system is Git. Many developers use the command-line version alongside a Git plugin in their favorite IDE. Now those work just fine, but did you know there is also a very nice TUI (Text-based User Interface, alternately Terminal User Interface) for Git called Lazygit. It is a very cool tool. Read on for more information.

Continue reading →

PKI in a Nutshell

Posted on by  
Ronald Koster

This blog briefly describes theoretically how Public Key Infrastructure (PKI) works. It also introduces the key concepts used in PKI. This is done by describing encryption, decryption, hashing, signing, and authentication using mathematical notations.

Continue reading →

Nushell Niceties: Bumping Semantic Version

Posted on by  
Hubert Klein Ikkink

In a previous blogpost you can learn about the semver command in Nushell to transform a string value into a semver type. With the semver bump command you can increase one of the components of the semver type. For example to increase the major version part you can use semver bump major. This command will also update the minor and patch parts if needed. The result is a semver type and you can use into value to transform it to a string type.

Continue reading →

Nushell Niceties: Transform Values Into Semver Types

Posted on by  
Hubert Klein Ikkink

Nushell can be extended with plugins to have more functionality or types that are not part of standard Nushell. If you want to work with string values that are actually semantic version values (https://semver.org) you can use the Nushell SemVer plugin. The plugin must be added to Nushell by using the command plugin add <location of plugin>. You can check with plugin list command if the plugin is available. This command also shows commands that the plugin adds to Nushell.

The command into semver can be used to convert string values into a semver type. The semver type has 5 properties: major, minor, patch, pre and build. You can use dot notation to get the values for these properties or use the get command. In the following command a string value is transformed to a semver type: let v = '4.0.2' | into semver. And with $v.major you can extract the major part of the semver value and it returns 4.
Records with the keys major, minor, patch, pre and build can be transformed to a semver string with the semver from-record command. And to transform a semver type to a record you can use the command semver into-record.

Continue reading →

Battle-testing Temporal - Part 3

Posted on by  
Robbert van Waveren

In part 3 of this series about Temporal it is finally time to explore cross-workflow creation, communication & orchestration. Upgrading the poker use-case from single-table to supporting multi-table tournaments of arbitrary size.

Diving into:

  1. How to spawn child workflows and their intended behavior

  2. Using signals to communicate between workflows

  3. Set up a Tournament workflow orchestrating Table workflows

Continue reading →

Battle-testing Temporal - Part 1

Posted on by  
Robbert van Waveren

Temporal is gaining traction spearheading a new generation of Workflow tools/frameworks. Namely Durable Execution frameworks. Unlike most Workflow tools/frameworks, Durable Execution frameworks take a code-centric approach (no external models) meant to assist the developer in building complex Workflows (Sagas) that can take anywhere from seconds to months. There is no limit. Promising out-of-the-box support for (re)starting Workflows from exactly where they were (upon failure) based on managed event-sourced state management. Said to support a wide-range of use-cases from multistep financial processes to ML-pipelines in the wild.

From a 1000-feet view it seems like a Durable Execution framework like Temporal could indeed be the first developer-friendly generation of Workflow engines to assist a wide variety of long-running processes.

So join me on this journey and let’s find out if it is truly possible to write production-grade long-running processes in a non-evasive developer-friendly manner by asking my favorite architecture question…​

Will it Poker?

Continue reading →

OAuth 2.0 and OIDC Explained with UML

Posted on by  
Ronald Koster

The purpose of Open Authorization 2.0 (OAuth 2.0) is to give an application (the "Client") limited access to your data at another service (the "Resource Server"), without having to give your password to that application. When OIDC is added Single Sign-On (SSO) is supported as well. The flow of these protocols can nicely be shown in a UML Sequence Diagram.

Continue reading →

Flyway the Right Way

Posted on by  
Ronald Koster

Sometimes when you upgrade your application the new version does not work correctly, and you need to downgrade. When you are unlucky you did some changes in your database that cannot be undone. In that case you need to restore the database from a backup, which is usually quite cumbersome and time-consuming. How nice would it be if you could just run an undo script which is much more light weight. This blog describes how you can do that using Flyway.

Continue reading →

shadow-left