Blog

Blog Post

An Introduction to TLA+ and Its Use in Parties

TLA+ is a system for modeling all possible states of a system. On this model, you can then verify certain properties of this system. Smart people can use this to check that their thread scheduling runs all threads equally, or that their work queue will never overflow. In this article, we’ll try and verify the fraught process of ordering pizza for a pizza party as a small introduction to the concepts and syntax of TLA+.

Blog Post

Property-based Testing with “fast-check”

It isn’t exactly news that developers have to write not only code but also tests. Nevertheless, many find this to be burdensome and monotonous work. Plus, it is far from guaranteed that unit tests actually cover all the border and non-border cases. A modern approach is property-based testing, which consists of specifying an abstract condition that is then automatically checked by the test framework.

Blog Post

How to Encrypt a File on the JVM

Blog Post

Creating data products with Terraform on AWS

Have you heard of data mesh? Are you intrigued by its potential but uncertain how to get started building data mesh and data products? If so, this article outlines a potential approach and delves into the key concepts behind it!

Blog Post

Automated code maintenance with OpenRewrite (Part 2)

In part 1 of this series, I showed how OpenRewrite can be used to automate code maintenance tasks for software development projects in your organisation. In this post, I will demonstrate how to write your own OpenRewrite refactoring recipe. This will not only help you to perform refactoring tasks for which no recipe is publicly available, but will also deepen your knowledge and understanding of how OpenRewrite works under the hood.

Blog Post

Modules – Microservices – Monoliths

Back to the architectural guidelines

Blog Post

Automated code maintenance with OpenRewrite (Part 1)

With the large number of software development projects in most organisations, keeping these projects up to date with the latest security patches and framework updates can be quite a task. OpenRewrite is a library that provides an automated solution to this problem. Using recipes written in Java, it can perform large-scale source code refactoring during the build process, preserving as much of the original code as possible. In this blog post, I will explain how OpenRewrite works and how you can use it to refactor your code base.

Blog Post

Kustomize Enhancement with KRM Functions

For a while, Kustomize has offered the possibility to extend its functionality with plugins that can be implemented in different ways. A new way is to use KRM functions that are not proprietary and can also work with other tools.

Blog Post

Round-robin coding

Code handover in mere seconds with the mob tool

Blog Post

How to use Apple Shortcuts to integrate GPT-4o in macOS and iOS

Apple Shortcuts is a powerful app that lets you create custom workflows with multiple steps using your apps and content. You can also use it to interact with web services and APIs, such as OpenAI’s Chat Completions API for GPT-4o, which can generate text completions for any prompt or task. Yup, the thing that’s behind ChatGPT.

Blog Post

Blueprints

JavaScript’s approach to object orientation is different from other languages. This hasn’t been changed by the introduction of classes, even if it looks that way at first glance. Read on to learn how this unusual system works.

Blog Post

What is Sustainable Software?

Blog Post

Shortcomings of ISO 25010

Published in 2011, the ISO 25010 standard on software product quality lacks pragmatism and practical applicability. Terms like scalability, deployability, energy efficiency, safety, or code quality are missing. This article explains these shortcomings and shows that even the (draft) update from 2022 still needs polishing…

Blog Post

How to use and build your own distroless images

Security and efficiency are key goals in production systems. This begins when we build our application images and look for a suitable base image. So what are good base images and how do distroless images fit into this picture?

Blog Post

How AI will replace my job

I started using ChatGPT for my work. Here is what it taught me and what AI might hold for the future of software development and consulting

Blog Post

How to prepare a (not only technical) talk

As I want to improve on giving valuable (conference) talks this year, I like to introduce my current four-phase approach to preparing these. Because when you intend to improve things, it is always a good idea to start with summarizing the current state. From there you can find out what is already good and where there is room for improvement. I would love to hear / read about your tricks and ideas!

Blog Post

Custom Elements are NOT for Templating

Custom elements are a main technology included in the Web Components Browser specification. They provide a set of APIs for adding custom behavior and interactions to an HTML element – and they do this very well. However, they often are unfairly compared with JavaScript component frameworks. Custom elements were never intended to be a drop-in replacement for a JavaScript framework. This article focuses on what custom elements are, what they do well, and, most importantly, what they do not do.

Blog Post

Behaviour over structure

Blog Post

Frontend integration options

The integration of data and functionality in the frontend is a powerful topic that is still rarely discussed. This article aims to try and show established patterns of frontend integration and briefly name possible advantages and disadvantages.

Blog Post

Processing medical study data with Data Mesh technologies

Together with our customer CluePoints, we evaluated new technologies, tools and standards for data storage, data processing, data versioning, and data lineage. These might become useful for refactoring their self-serve data platform.

Blog Post

Logging in Java

Introduction to the logging jungle

Blog Post

Direnv: Automatic environment care

We all know how it goes – every environment needs its own configuration. Environment variables must be set, a proxy must be used, important scripts must be contained in the path. This is often done with other scripts, but you have to think about how they’re designed.

Blog Post

Documenting software architecture with arc42

arc42 is a template for architecture communication and documentation. It is a proven, practical and highly pragmatic approach and takes the pain out of documentation.

Blog Post

How I regained concentration and focus

From distraction to concentration in a few simple steps

Blog Post

Offline with redux

We’ve been writing a web application that supports users being offline without using a service worker. We’d love to share how we’ve done that and what we think are the advantages.