Articles

When You Don't Take the Shot
Wednesday, 10th December, 2025
I list the things I realized to improve my photos. There are the technical abilities (equipment, exposure, post processing, ...) and the surrounding conditions (time, location, ...). And sometimes, photography means letting the shutter rest.

The Photographer and her Camera
Saturday, 22nd November, 2025
I bought a new, bigger camera and want to be independent of it.

Forgejo Actions Notification Development
Thursday, 20th November, 2025
Some stories of how I work on Forgejo. How is a Go project structured? What's the point of Forgejo's layered architecture and what's that pub-sub pattern? Additionally, I exhaustively explain how to setup a development environment for Forgejo.

The History of Forgejo's Pub-Sub Pattern
Thursday, 30th October, 2025
I created a tool to visualize Forgejo's Pub-Sub pattern. Why not run that tool on all 24 thousand commits in Forgejo's history? What could possibly go wrong?

How my GitHub Pages got Hacked
Saturday, 18th October, 2025
A DNS forward is an expression of trust. GitHub broke my trust and someone else received control over my domain.

Why I love Open-Source
Saturday, 11th October, 2025
We all live in a world of immensely complex technology. The concept of Open-Source might seem radical at first but it's indispensable in our world. Regardless if you are a user, developer or simply interested in a healthy society, you benefit from Open-Source and we should fight for every bit of it. Open-Source is a quality mark, a form of democracy and ownership, capitalism at its best and thus the response to this world, a world in which software exists. This article gets to that conclusion without requiring any prior technical knowledge.

The Bitter Feeling of Technical Compromises
Thursday, 25th September, 2025
My very personal troubles dealing with compromises, explained at an example of docker_cron with Renovate. Sometimes you really don't have to worry as much and trust your previous, careful considerations.

Real-Time Linux on RISC-V
Friday, 27th June, 2025
Setting up Linux v6.12 on a StarFive VisionFive 2 with PREEMPT_RT. Also: How to setup your Linux laptop as a simple NAT router.

Guided Missiles in Minecraft
Friday, 6th June, 2025
I'm having a stab at designing an enitity seeking missile in Minecraft with the mc_missile mod. Or: How I blew up my brother.

Saving Time with Tests
Wednesday, 14th May, 2025
Using tests not to increase quality but to more quickly get things done. Or: How I started to enjoy writing tests.

Docker: Breathing Life into Decades old Fortran
Sunday, 6th April, 2025
Bringing decades old Fortran code to life with Docker and animating it with Python. Now you get to see Fig.3.5. from "Introduction to Conventional Transmission Electron Microscopy" by Prof. Marc De Graef at 30 frames a second.

Inject Fonts into Web SVGs with sed
Monday, 10th February, 2025
Add font-loading CSS to SVGs with a sed script.

grub-install --removable for buggy UEFI
Friday, 8th November, 2024
Install Debian on a device with a broken NVRAM.

LunarVim in Distrobox
Tuesday, 25th October, 2022
You're missing that one program that isn't available in your Linux distro? With Distrobox, the 'Linux Subsystem for Linux,' you can install it anyways. This article explains how to do that with the example of installing LunarVim on Red Hat.

Bodging MP3 Names in Bash
Wednesday, 12th October, 2022
Why do it complicated when a Bash one-liner does it too?

reveal.js your Presentation
Friday, 24th June, 2022
reveal.js is a PowerPoint alternative. With it you programmatically define your presentation via HTML. This article shows how you can use reveal.js for your own presentation.

Installing Gentoo To My Liking
Tuesday, 26th April, 2022
Gentoo is a Linux distribution that offers as many options as possible. This article leads you through the decisions I took to end up with a system that best suits my needs.

Maki, Atoms and Time Travel
Sunday, 6th February, 2022
Maki showcases how a program for interactive and programmatic animation development can be implemented. Its programmatic approach provides the precision technical concepts require, while its interactivity and real-time updates avoid a disconnect between input and output.