go vs python

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 … Read more

Docker build cache debug techniques

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 … Read more

infrastructure testing for Ansible roles and playbooks feature

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 … Read more

ansible introduction feature

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 … Read more

container-based development environments feature

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 … Read more

designing data-intensive applications summary feature

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 … Read more

collaborative editor feature

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, … Read more

kubernetes development tools feature

Kubernetes Development tools – the best 10 tools to speed up your daily development

In this article I discuss three types of Kubernetes development tools that speed up your daily development and debugging tasks: tools like Tilt that speed up development iteration cycles, general approaches for remote debugging with a debugger, and tools like Inspektor Gadget that help you diagnose problems in production. Introduction The increasing complexity of Kubernetes … Read more

cluster introspection tools feature

Kubernetes cluster introspection – the 5 best tools to better understand your cluster

Cluster introspection tools help you better understand what is going on in your Kubernetes cluster, by presenting the workloads visually. In this article I present a taxonomy of available tools and briefly present the tools Lens, k9s, kubenav, Octant, Headlamp, Kubernetes dashboard, Skooner and Portainer. I conclude by giving general recommendations. Introduction A very common … Read more

local Kubernetes clusters feature

Local Kubernetes development clusters: the 5 best local cluster compared

If you develop software that runs on Kubernetes, a local development cluster can significantly speed up your development iteration speed, because everything happens locally. I discuss the pros and cons of local clusters and then present the tools Docker for Desktop, Rancher Desktop, kind, k3d and Minikube, and how they compare. I finish with details … Read more