All Posts

gigabit WAN

Vodafone was successful in upselling a faster connection to me. Now we have 1Gbps downstream and 50Mbps upstream. Just yesterday, the modem came by mail.

It’s a CGA6444VF.

Read more ...

setup.cfg –> pyproject.toml

Read more ...


DuckDB just released 1.0.0. I bet on DuckDB. Let’s see what the future holds.

Read more ...

Playing with llm


Read more ...

Public PostgreSQL?

I want a tool that can easily ingest arbitrary data that I can use for personal data science.

At first I was thinking of running Postgres publicly - of course with TLS enabled and strict access control.

Read more ...

Caddy Compression and Caching

This blog is built with Sphinx and served by Caddy.

Unfortunately says that is slow on mobile. Let’s do something about that.

Read more ...

TIL: Pycharm: Remember Database Query Results

As the docs state:

By default, PyCharm updates the same tab with results each time you run a new query after the previous one. You can change this behavior and create a tab each time you run a new query.

Read more ...

TIL: KeepassXC never ask

The KeepassXC-Browser extension asks if a domain is allowed to access credentials. I want to skip this dialog, as I always save passwords with a concrete domain. Here’s how (via):

Tools > Settings > Browser Integration > Advanced tab

Read more ...

KeepassXC Keeshare

Suppose you have a database called meins and want to synchronize the gaming database.

Read more ...

LVM Snapshot Create / Merge / Rollback

Example use-case: Snapshot Gitlab VM disk before running an upgrade.

Check volume groups and logical volumes:

Read more ...

Git Sign Commits With SSH

First, make sure that your pubkey is present in Gitlab.

Read more ...

TIL: inxi system information

I was looking through the packages supplied by the Tuxedo apt repo:

That’s when I came across inxi.

Read more ...

TIL: Gitlab CI: The needs Keyword

Gitlab CI has the needs keyword since 2021. It allows building stageless pipelines, but has many uses.

Sometimes we run different test suites in parallel (e.g. unit-tests and integration tests), but want aggregated coverage results. This results in a pipeline like this:

Read more ...

TIL: Vim Last Opened Files

Vim can show a list of recently opened files:


Read more ...

TIL: Pycharm Open All Modified Files

Pycharm can open all modified files in new tabs.

Open the “Commit” tool window (Alt+0) and hit F4 on “Changes”:

Read more ...

TIL: Dockerfile Heredocs

I did not even know that Docker has support for heredocs until today.

Then I read the official blog post from 2021. In my defense: Using this depends on buildkit, which only became default in Docker Engine v23 released in 2023.

Read more ...

git bisect

Given that HEAD is a bad commit and v2.6.13-rc2 is good, start the bisect process:

Next, choose either one of:

Read more ...

OpenWrt on Linksys EA7300 V2

OpenWrt Table of Hardware Record

Linksys firmware download

Read more ...

Neovim Spell Checking for Multiple Languages


To enable spelling globally, run

Read more ...

Brooks’ Law

There is an image in The Bluffer’s Guide to The Mythical Man-Month that fits my mental model of one aspect of Brooks’ Law perfectly.

By increasing the number of people you increase the number of communication channels exponentially.

Read more ...

Static Sites as Gitlab Review Apps with Caddy

For our book’s page at Grundkurs agiles Software-Engineering we use Sphinx with myst-parser as a static site generator and Gitlab CI to build and deploy.

We use GitLab Review apps to deploy the site on a subdomain, e.g.

Read more ...


Allow writing to a directory for an unprivileged user using linux acl (setfacl).

Allow the user gitlab-runner to write to /var/www/

Read more ...

Words Written This Year

The year is coming to an end. I promised myself to write more, so now would be a good time to count things, that is: words. Let’s count words!

I tried a top-down approach a while ago, but it did not work out, because I got side-tracked with technicalities. Let’s try a bottom-up approach this time.

Read more ...

TIL: Postgres Replication Slots

Replica liest WAL-Segmente. Primary räumt WAL-Segmente auf:

the server might recycle old WAL segments before the standby has received them [1]

Read more ...

TIL: Monitoring Docker Memory with Limits on Prometheus

One of our CI jobs failed seemingly without any reason. When a Celery job established a new HTTP connection, then its container stopped working. Later on I noticed the following message from docker-compose:

The exit code 137 means that a process was out of memory (OOM). In this case, the celery container had a limit of 2GiB and docker killed it when it went over that. Here is how we define the memory limit in our docker-compose.yml:

Read more ...

TIL: Thunderbird Keyboard Shortcuts


Thunderbird > Addons: Search “tbkeys”

Read more ...


A window switcher, application launcher and dmenu replacement

I am still on Ubuntu 20.04, so I only get version 1.5.4

Read more ...

TIL: vim docker-compose.yml completion using vim-coc


Read more ...

TIL: Systemd Journald Cannot Clear the Logs of a Specific Unit

Some logs of my Docker containers got out of hand, so I tried Docker’s Journald logging driver. It did not take long for the log of the service to grow again, but no problem. Here’s the plan:

reconfigure service to be less verbose

Read more ...

Tuxedo Akku Aufgebläht

Stolz habe ich von meinem Tuxedo InfinityBook S 14 - Gen6 berichtet, nachdem wir es vor knapp 1,5 Jahren am 20.09.2021 gekauft hatten.

Vorgestern ist mir dann aufgefallen, dass sich der Akku aufgebläht hat:

Read more ...

Letsencrypt Wildcard With Hetzner DNS

Example domain:

Read more ...

TIL: Grafana Dashboard Link Time Range

If you want to link from one dashboard to another, simply use

For example:

Read more ...

Python Ellipsis

You can use the ellipsis literal ... to show the general structure of some code while keeping it valid Python, e.g.:


Read more ...

TIL: Loki LogQL Pattern Matching for uWSGI Logs

Suppose you have log lines like this as uWSGI generates them:

First, let’s show the logs in a “Logs” view and filter them:

Read more ...

TIL: Prometheus file_sd_configs to Organize Static Scrape Configs

Changes to all defined files are detected via disk watches and applied immediately.

Read more ...

TIL: git restore by “meh”


Read more ...


Ich bin seit vielen Jahren Kunde bei Vodafone - sogar noch seit der Zeit als Kabel Deutschland noch eine eigenständige GmbH (KDG) war. Da habe ich gerade gelernt, dass Kabel Deutschland aus der Telekom ausgegliedert wurde.

Fast alle Internetanbieter haben spezielle Angebote für Neukunden. Warum sollte ich als Bestandskunde, der dem Anbieter treu ist, mehr zahlen als ein Neukunde?

Read more ...

BMW E90: Rücklicht wechseln am 325i Stufenheck

Vorgeschichte: akustische Warnung mit dauerhaftem gelben Glühbirnensymbol in der Armatur. Aha, hinten links ist das Licht kaputt.

Für die Heckleuchte brauchen wir eine P21W mit 12V. Die ist so Standard, die gibt’s sogar bei OBI.

Read more ...

Bose Soundsport Return

The microphone of my Bose Soundsport Wireless headphones went dead today.

So I went to the Support Page. The chat was unavailable [1], so used Whatsapp. You can find the complete chat log below [2]. The input style of using numbers to select answers reminded me of old text adventure games and interfaces of the DOS-era.

Read more ...