A picture with the logos of three projects: The Golang gopher, the PostgreSQL elephant and the WoodpeckerCI woodpecker. The Golang gopher is pretty goofy looking, showing two large front teeth in a small mouth, tiny ears and two large eyes. The Postgres elephant is a stylized front view of an elephant, including tusks and a large trunk. finally, the WoodpeckerCI woodpecker is more of an outline of the namesake bird.

Smokeweb: Setting up Database Connections

After implementing a lot of helpers and basic infrastructure for my Smokeweb app (see here if you’re interested in what the project is about), I finally arrived at creating the database connection. In this post, I will give an overview of the Golang test helpers I implemented for tests which need a database, show you how I implemented some scripting for a Postgres database using Podman and then I will tell you how I implemented database tests in WoodpeckerCI. ...

May 1, 2026 · 18 min · Michael

Smokeweb: Setting up a CI with Go Caches in Woodpecker

In my $dayjob, I’m a build engineer in the CI team of a large company. So I’m reasonably confident that this is going to be only the first post in a long series on the CI setup for my Smoking project. I like CIs and the automated testing they come with. I think it was one of the better ideas the tech industry has come up with. I’m seeing its benefit every day at work. So I also have CIs for most of my private projects. ...

March 18, 2026 · 6 min · Michael

Mosquitto: Update to v2.1

As part of this weekend’s regular service update, I also came across Mosquitto’s new 2.1.2 release. This is my tale… I’m using Mosquitto as the MQTT broker for my IoT thermostats and smart plugs. If you’re interested, you can find more details on my setup in this and this post. The changelog of the new release contained a few interesting points: The acl_file option is deprecated in favour of the acl-file plugin, which is the same code but moved into a plugin. The acl_file option will be removed in 3.0. The password_file option is deprecated in favour of the password-file plugin, which is the same code but moved into a plugin. The password_file option will be removed in 3.0. I’m using both of these options, so because I was doing the update on a lazy Sunday morning instead of Friday evening after work, I decided to be a good sysadmin and replace the acl_file and password_file options now, instead of waiting for the update where they’re ultimately getting removed. ...

March 1, 2026 · 3 min · Michael

A Few Thoughts On Self-Hosting and its Viability as a Solution

Please allow me to ramble a bit about a Fediverse post I saw around this time last year, and a few blog posts discussing self-hosting as a solution to the dominance of big tech. It all started with this post scrolling through my timeline last year. Are there any guides on self hosting for complete beginners out there? Especially those that have choice paralysis and care about privacy. Ones that walk you through buying a domain name, setting the DNS or whatever it’s called for it, setting up a hosting server (and which to choose), what OS to use on it etc? Or are you just expected to know all this? ...

February 2, 2026 · 12 min · Michael

S3 Performance and Homelab Hardware Musings

Wherein I figure out why my Ceph S3 is so slow and think about potential hardware upgrades. As part of my goaccess post, I had to copy around almost 60 GB of logs, from my laptop to my desktop. I decided to do that via my Ceph S3. And it was very, very slow. There were 185 files to copy, with a total size just shy of 60 GiB. The majority of that size comes from two Traefik log files, both around 30 GiB in size. I used Rclone to sync the files to an empty directory on my desktop with this command: ...

January 8, 2026 · 11 min · Michael