Mitch's Blog

PlantUML tips and resources I found useful

Lately I've become quite a fan of PlantUML, a tool to automatically generate (technical) diagrams from text files. PlantUML takes care of the layout and allows putting your documents into version control like git. I even added support in my blog engine, to properly render and link PlantUML documents in posts (including their source code).

In this post, I'm collecting useful resources that have helped me writing PlantUML documents.

How to set up a TF2 server in 2022

Gaming Linux

This post shows how to setup a full dedicated TF2 multiplayer server on a modern Linux system (including process supervising and some privilege separation). Additionally we install some addons and plugins to increase the functionality and comfort.

Rebuilding my Blog from scratch


When I started this blog in 2017, I had to decide on a system to use. A long time ago I used Wordpress, but because of the high maintenance required, as well the constant security issues, I decided to go with a static site generator instead: Hugo.

IMAP Backup with Offlineimap


When it comes to email hosting, I'm quite old school. Instead of using cloud services like GMail, I like plain IMAP and SMTP. It allows me to take my emails anywhere, without being locked-in. This has served me quite well over the last 15 years.

But lately, one of my providers had quite often network issues, leaving me without access for sometimes hours. As this hoster is a small shop with just a few people running it, I've wondered: What happens if the service goes down, and never up again? What happens to my archive? Hosting my own email server is an absolute no-go, as I don't want to constantly fight against waves of spam or other providers discriminating against unknown IPs. Life is too short to fight too many battles at the same time.

I've been researching this topic for quite a while, and in this post I describe the middle ground I settled on: Run my own backups, and have them in a simple readable format, that allows to search and process them using basic tools.

Using sccache to speedup Rust builds in Docker

Software Development

Lately I've become quite a fan of Rust, a modern programming language with a focus on memory safety. I'm using it in different projects, mostly for it's great speed and low resource usage compared to e.g. Python or Node.

In contrast to scripting languages, all Rust applications have to be compiled before they can be executed. This is a process that takes some time, depending on the size of the app and the number of dependencies.

During development, this isn't an issue thanks to local caching and incremental compilation, which allows the compiler to only re-compile what has changed since the last run.

For my web applications, I use Kubernetes and Docker images for deployment, which means I have to build my applications using Docker as well. In this case, these tricks won't help us.

Building a Helm chart from scratch


Since starting at Zeppelin, I've been learning Kubernetes in detail. While there is great documentation about K8S and tons of video tutorials, I'm a practical person that wants to jump in and learn along the way.

There are multiple ways to deploy applications to Kubernetes: One is writing the necessary YAML files directly, which is easy to start with, as you can just copy-paste things out of the documentation and adapt it to your needs - but it's hard to make those files portable for multiple clusters or easily installable without further instructions. To solve this, Helm was created by the community.

Vendoring dependencies

Software Development

Nowadays, large software projects can have tons of dependencies. As customers require solutions faster than ever, the software development cycle got reduced from years (back when we used CDs) to hours: At my last job, we even deployed new versions of the software multiple times per day. Because of this, developers often have to integrate third-party (open source) libraries into their code.

Tales from by LinkedIn inbox


Since November 2020 I have profiles on both LinkedIn and Xing. As full-stack developer, you receive quite a lot of attention by recruiters, some very professional, some more or less clueless.

In this post, I present some messages I received with remarks of what I liked or not. I cropped all the senders and anonymized companies and links as well, as this isn't a post for shaming specific people or companies. Nonetheless, expect sarcasm (and a bit of hidden frustration / disappointment).

Event Sourcing mit Python

Software Development

In einem vorherigen Beitrag habe ich bereits über das Thema Event Sourcing geschrieben. Heute möchte ich eine konkrete mögliche Implementierung zeigen.

Using a Pi-hole for network and privacy protection


The Pi-hole is a useful project, which turns any Raspberry Pi into a DNS server with blocking capabilities, mostly against ads, unwanted analytics and malware.

I've been using it on a Raspberry Pi 1 for nearly a year now - and I'm quite happy with the results.

Mitch's local Pi-hole