Container Fundamentals
Containers allow you to package applications and all their dependencies in a common format and ship it to your runtime environment. But what are the fundamental technologies containers are build on? And why do we need a Linux Kernel for that? The following post is a written summary of a lecture I gave as an introduction to Kubernetes. The code is based on the excellent talk and code of Liz Rice some years ago. ...
Basic In-Memory Cache in Go
I often tend to stumble upon a basic problem and then try to solve it with some external library. In this case I was thinking about caching some data in memory to spare some time and resources on an external API. This time I’ve decided to write something myself instead of using an external library. And with that you can even learn something from it. So let’s write a very basic in-memory cache in Go. ...
Sign your Git commits
I recently learned that you can simply sign your Git commits with your SSH key. With that there is no need for a (rather complex) PGP/GPG setup! Instead, just re-use the SSH key you are probably already using to interact with your git remote. This is already supported by GitHub 1 and GitLab 2, and you will see a green check mark or verified next to your commit message. ...
Buildpacks
At KubeCon 2023 Amsterdam I attended a talk about Buildpacks. This is not the first time I heard about Buildpacks, but the talk in the maintainer track was very entertaining and the features like advanced caching and reproducibility sounded very convincing. So in this post I’ll try to replace an existing build pipeline based on pure docker with Buildpacks. I’ll also go a bit in detail on how to use buildpacks and show differences in the resulting images. ...
Improve your Go code with Benchmarks
We often write code without thinking about how performant the code will be in the end. Often it is also not worth to sacrifice cleaner code in terms of readability and future maintainability for the sake of a few percents of performance, be it less CPU cycles needed to compute something or a smaller memory footprint. But as always even if you don’t need to save a few cycles or bytes, it is good to know what you could do to even get started in optimize for performance. This post will about how to use the tooling provided by the Go programming language. ...