EP1: The COP Theorem for Success (my answer to McKinsey)

McKinsey article on measuring individual software developer productivity ignited many souls in the software engineering world. This is my perspective as a long-standing software architect. If you haven’t heard yet about the McKinsey article “Yes, you can measure software developer productivity”, you must be living under a rock! In fact, it caused quite a stir […]
Domain-Driven Design Explained: Anemic Models

In this article, we explain the concept of anemic model which is extremely common in modern applications. We also try to identify why anemic models are so popular, as well as proposing solutions to mitigate this issue. What is an Anemic Model? A model is anemic when its objects have no behavior. At first sight […]
Domain Driven Design (DDD) Explained

DDD Explained Domain Driven Design (DDD) is one of the pillars of object oriented software development. You must understand it really well if you want to produce future proof code and designs. Despite it looks intimidating to most developers, the concepts of DDD are really straight-forward and to some extent based on some principles that […]
REST APIs Explained
In this article, we will explain what are REST APIs, also known are RESTful APIs, and how we can design them and implement them quickly. What is an API? First we need to define what an API is. An API is a contract between a provider and a user that allows them to exchange information. […]
Reduce the size of Docker images with few steps
One of the advantages of using Docker images is that they are portable. However, portability is directly related to the size. A mobile phone wouldn’t be really “mobile” if it weighed 10 Kg. The same applies to Docker images. We want our containers to be as slim as possible. In this tutorial, I show you […]
Immutable Kubernetes Pods
Immutable Kubernetes Pods are absolutely necessary if you are deploying your applications in a containerized environments and you want them to be secure. Despite this, most developers and teams do not use immutable pods. In this tutorial, I will explain in a simple manner what they are and why they are important. We will also […]
Install and Learn Kubernetes in 10 minutes
In this tutorial, I will show you how to install and learn the basics of Kubernetes in just 10 minutes. We will be using a super-lightweight certified distribution of Kubernetes: MicroK8s by Canonical. This distribution requires very little resources and can run on Linux, Windows and macOS. For the purpose of this tutorial, I will […]
Install Maven on Ubuntu 22.04
In this tutorial, we install the latest version of Maven on Ubuntu 22.04. Unfortunately, the Ubuntu repository ships an old version of Maven which is not compatible with the recent versions of the Java Development Kit (JDK). We will proceed with the manual installation. Apache Maven Logo Pre-requisites Before proceeding with the Maven installation, we […]
Install Java Temurin JDKs instead of OpenJDK on Ubuntu and Debian

As you may know, OpenJDK no longer provides official pre-built binaries or Docker images. Users who rely on readily available builds must migrate to other distributions to ensure they continue receiving feature updates and security patches. Eclipse Temurin, maintained by Adoptium, offers a reliable alternative with pre-built Java binaries and Docker images, making it an […]
Kubernetes CKAD CKA CKS Certification Exam Tips
Kubernetes is hands down the most disruptive technology that we have seen in the IT industry in recent years. It is loved by software developers, operators, and business owners. It is pure expression of what DevOps means from a technical perspective. Holding a Kubernetes certification is something I strongly advice to any serious IT practitioner. […]