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?

Using sccache to speedup Rust builds in Docker

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.

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.

Vendoring dependencies

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. While is approach is quite comfortable (just add a package) and boosted productivity, this creates quite a large risk as well: If your dependency provider goes down, or someone deletes a package half of the ecosystem relies on, building your application can go from “yarn build” to “pretty much impossible”.

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.

Event Sourcing mit Python

In einem vorherigen Beitrag habe ich bereits über das Thema Event Sourcing geschrieben. Heute möchte ich eine konkrete mögliche Implementierung zeigen. Der Fokus dieser Implementierung liegt dabei auf starke Typisierung sowie hohe Code-Qualität. Hierbei verwende ich sowohl Linter, als auch Unit Tests. Der vollständige Quellcode der hier beschriebenen Bibliothek ist über das Code-Repository für diesen Blogpost herunterladbar. Anforderungen Es gibt eine schöne Lehre aus der Software-Entwicklung: “Weeks of coding can save you hours of planning.

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. Why should you run one? In the past this could be done in browser using extensions like uBlock Origin, but nowadays a lot of internet access is done outside of classic browsers:

Event Sourcing: Eine kurze Einleitung

Für ein größeres Kunden-Projekt beschäftige ich mich momentan sehr viel mit dem Konzept des Event Sourcing / der Event-driven Architecture. Dieses Konzept beschreibt einen Ansatz, wie man Änderungen an Daten in einem (meist verteilten1) Computersystem aufzeichnen und verarbeiten kann. Ich schreibe diesen Artikel primär als Übung und Vertiefung, da man ein Thema erst wirklich dann versteht, wenn man es auch selbst erklären kann. Referenzen Direkt am Anfang möchte ich bereits auf die Quellen verlinken, welche eine große Hilfe für das Verständnis der Materie waren, und einen guten Einstieg in die Thematik bieten.