September 6, 2025

The Linux setup | Part 1 - An Investment for Life

I’ve been a Linux user for about 15 years, and I owe a lot of that journey to my first job at Capgemini Deutschland GmbH. It was a classic corporate setup-developers used Windows, but all the servers ran on Linux. That’s where I finally got to learn the essentials: Bash scripting, maintaining on-premise servers for testing environments, and all that fun in-house stuff.

I was working there part-time while studying computer science, so it wasn’t long before I started using Linux for personal projects, too. I kept my gaming PC on Windows, though, because back in 2012, gaming on Linux was basically impossible. Read more

December 8, 2024

Replace Buf Remote Plugins with local vendored plugins

Buf is the best tool to manage protobufs. One of the biggest pain points of protobuf is the management of protoc plugins. You need to manage them, and make them available to other engineers working on the same repository/project. Versions need to be centrally managed, code generation must produce the same result, no matter if it happens on an engineer A or B’s machine, or in CI.

This becomes even more challenging, as protoc plugins are written in different programming languages. Go protoc plugins are written in Go, and are therefore compiling to a single binary without dependencies. Easy. However, other plugins are more difficult to manage. Typescript plugins like protoc-gen-es are written in Typescript, and therefore do not compile to a single binary. Read more

September 3, 2020

Increasing Azure AD Access Token Lifetimes

By default, Azure AD Access Tokens have a lifetime of 1hour. Especially for single page apps, it’s very inconvenient. Users have to re-login every hour. Ideally, it’s just one redirect to the login of Azure AD, and there they still are within their session, and AD redirects them back to your app. However this can still be very painful, e.g. if the user does something within your app, and gets pretty much logged out because all API calls fail due to an expired token. My experience is, that 1 hour is too short. It has security benefits of course, but the complexity in the app increases significantly if you start dealing with expired tokens, saving state to local storage, and transmitting data after a successful re-login for example. Read more

July 10, 2020

Managing multiple DNS zones with Terraform and Google Cloud DNS

Google Cloud DNS is a convenient way to manage DNS Zones. With Terraform, it’s possible to manage these Zones as code, usually by committing the terraform files to version control. However, setting up sub-zones has always been a bit tricky. I’ll use this blog post to document how to manage zones and sub-zones with CloudDNS and terraform.

To manage a zone, the resource google_dns_managed_zone can be used:

To add a sub-zone: Read more

June 28, 2020

Updating an AUR package

Archlinux’ documentation is good, but somehow i struggled to find simple instructions how to update a package. The kafka CLI i’m maintaining, kaf, has been available for some time in the AUR. At some point i have been passed the ownership of the AUR package, but i had no idea how to do a release.

For more complex cases there’s probably more to do, however in my simple case:

  1. Clone repo: Read more