Mitch's Blog

Leveling up as Software Engineer

IT Career

In this post I'd like to reflect over some things I've learned in my 10+ years working in Information Technology, and the things that helped me becoming the (DevOps) engineer I am today.

Python: Split up iterable into evenly-sized chunks

Python Code

In a recent tool I developed, I had the need to split up a list (or any iterable) into equal-sized lists of values. In this post, I document the process on how I reached my goal, what steps it took and the decisions behind them.

Implementing the Argo CD GitOps Flow

Kubernetes DevOps Argo CD Bash

In this post, I'd like to document the approach I've developed for a highly automated application development and deploment process, based on various online sources and self-built bash glue.

Tales from by LinkedIn inbox (part 2)

Rants

Last year I wrote a bit about my frustation with tech recruiters. Around September 2020 I started looking for new jobs again (as my team was falling apart), so I changed my status to "Open for Work" again.

While I quickly found a new position, but still had quite a share of weird and annoying requests again.

I've been employed again for nearly a year now, and yet the stream of LinkedIn messages and requests seems to never run dry.

Here's my best-of from the last 1.5 years:

IT-Sicherheit - Made in Germany

IT-Security Rants

Dieser Post ist ein Rant.

Vor einigen Monaten habe ich mit einem Kollegen länger geplaudert, dessen Fokus in der IT-Sicherheit liegt. Wir haben Geschichen darüber ausgetauscht, wie traurig und fast unlösbar kaputt der allgemeine Zustand der Sicherheit unserer Branche ist. In diesem und (vielleicht irgendwann) folgenden Beiträge möchte ich verschiedene Beispiele zeigen, die ich in der Praxis in Unternehmen gesehen habe.

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

Blog

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

E-Mail

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.