Welcome to my home page
This is the place where I publish articles about my findings and progress in the awesome world of technology and beyond! Also, check out my projects or get in touch.
My latest articles //
Digital tool efficiency – how to maximize your computer productivity at work and at home
This guides provides ideas and techniques for using your digital (software) tools more efficiently (via keyboard shortcuts) and effectively (by discovering useful features). I present a 3-step process that starts with collecting the digital tools you use, then researching efficiency/effectivity tricks, and finally adopting them in daily life. Introduction Knowledge work today makes heavy use of digital tools. No matter…
Synchronize two Outlook calendars with Microsoft Power Automate
Having multiple calendars that are not synchronized often causes scheduling issues. To solve this problem, this post offers a Microsoft Power Automate flow to synchronize two Outlook calendars, as well as pseudo code of the synchronization algorithm. I explain the approach, and how it evolved from previous iterations (including their shortcomings). Introduction Managing your calendar events and availability at work…
Docker image analysis and diffing: what, how and why
In this article I present two tools that help you with a Docker image diff or Docker image analysis: “dive” and the slim.ai Docker Desktop extension. I explain use cases for which you need these tools, and I show screen shots that illustrate their usage. Introduction Docker images (or more generally: OCI images) have become a standard packaging format for…
Go vs. Python: an introduction to Go for senior (Python) developers
In this article I compare the programming languages Go vs. Python. I highlight 3 similarities and 12 differences. This comparison is written for senior developers, but it is not exclusively limited to Python developers: everyone with a OOP-language background (like Java or C++) will benefit. I also provide tips regarding learning resources you should start with. Introduction I recently learned…
Docker build cache: debug techniques
The Docker build cache avoids rebuilding those parts of a Docker image that were already built. Unfortunately, cache misses are hard to debug. In this article I explain three frequent yet unexpected reasons for cache misses, with solutions. One of them is that COPY or ADD statements are rebuilt, because files have changed. To diagnose the exact files, I present…
Infrastructure testing for Ansible playbooks and roles: an introductory guide
This article demonstrates how you can do infrastructure testing for Ansible roles and playbooks. I explain how the tools Vagrant and Molecule+Docker let you easily provision temporary VMs or Docker containers in which you can experimentally run your Ansible roles/playbooks, or even run unit testing in Continuous Integration. Introduction to infrastructure testing Ansible is a CLI tool that provisions other…
Ansible introduction: the definitive guide to provisioning with Ansible
This Ansible introduction explains what Ansible is and how it works. I explain the most important concepts and demonstrate them by example. I go into common pitfalls, such as installing Ansible, handling secrets, or getting reproducible projects. Ansible introduction Ansible is a CLI tool that provisions other machines. Here, provisioning refers to installing and configuring software on other machines. A…
Container-based development environments
In this article I discuss container-based development, where you not only run but also develop and debug software inside a locally-running Docker container. I explain the advantages and disadvantages of this approach, and look at VS Code’s development container feature, various features of IntelliJ-based IDEs, and how to implement an IDE-independent approach. Introduction to container-based development For many years, developers…
Book recommendation: Designing Data-Intensive Applications
In this book recommendation, I review the book Designing Data-Intensive Applications by Martin Kleppmann, released in 2017. I also offer my 46 page summary of the book as free download. What are data-intensive applications? This book targets software engineers and architects interested in building distributed systems. In contrast to compute-intensive applications, where CPU cycles are the primary concern, the term data-intensive applications…
Google Docs for code: the best collaborative code editors in 2022
Collaborative code editors let developers write code together in real time, just like Google Docs. This article compares Microsoft Live Share, Code with me, and CodeTogether. I clearly demonstrate the limitations and benefits of each tool, including how it integrates into existing IDEs, end-to-end encryption and pricing. I’ll conclude with recommendations for different use cases, such as coding interviews, or…