Blog
I try to follow something akin to POSSE, meaning I plan to post copies of things I published elsewhere here as well.
Nix State of the SBOM
A ‘Software Bill of Materials’ (SBOM) tells you the list of ‘ingredients’ of a software artifact. The idea is that you may need technology-specific tools to build this SBOM, and then can have technology-agnostic tools to analyze them. The canonical example is ‘vulnerability scanners’, that intend to give you an overview of which security advisories exist for the artifact.
In this post I give an overview of the current state of various available tools, with actual examples showing their output in action. My plan is to use this example to drive improving the tools, and updating this post as they improve. Do drop me a note if you see anything wrong or missing here!
Welcome to week 1 of 2026!
What, week 1 of 2026 is in 2025? Yes: the “first week of 2026” starts on the Monday of the first week that has at least 4 days that fall in 2026, AKA the week with the first Thursday of the year.
Since years don’t have an integer number of weeks, a year has either 52 or 53 weeks - so you can say we have ’leap weeks’ sometimes.
This is all laid out in ISO8601
Reproducing the NixOS 25.11 Minimal Installation ISO
Reproducible Builds are a great way to convince yourself the binary artifacts you (or others) publish online were not tampered with on the build infrastructure.
NixOS is a Linux distribution that provides a nice starting point for reproducible builds, because it is very precise about build inputs, and runs its builds in a sandbox (so build processes can’t download arbitrary stuff from the internet during the build). This in itself does not guarantee reproducibility: for example timestamps and build parallelism can still lead to all kinds nondeterminisms. Fixing those is a large, cross-distribution effort.
NixOS Tests
NixOS tests are pretty cool!
I’ve been fixing an issue where, if you do a deployment to a remote machine (with nixos-rebuild switch --target-host=foo), and the connection would get broken off during the ‘switch’, the switch would be aborted - worst-case leading to that connection not getting restored.

I initially tested this manually, with the Raspberry Pi I encountered this problem with, which was elaborate and painful (especially when I got something wrong and the connection was lost). What’s more, this would be useless to someone reviewing my code, as they don’t have my pi sitting on their desk.
Talking with Halla Rempt about the past and future of Krita
Krita celebrates its 25th birthday. For the occasion, I visited Halla Rempt, who is the lead maintainer of the Krita project and loves to talk about how the project grew and what the future looks like. During Software Freedom Day events, this video can be the occasion to discuss sustainable Free Software Development.
WiFi-router met aanhangsel
Om meer inzicht te krijgen in het boot-proces, en later aan de slag te gaan met custom firmware zoals OpenWrt en Liminix, wilden we graag toegang tot de seriele poort van deze WiFi-router:

Hiervoor hebben we eerst het doosje opengemaakt en zijn op zoek gegaan naar de juiste contacten. Dit was nog niet gedocumenteerd, maar de vier niet-aangesloten contacten op een rijtje waren een goede gok. Met de multimeter was goed te zien dat het tweede contact de GND was, de andere drie contacten allemaal zo rond de 3.3v zaten. Met de ‘frequency’-setting van de multimeter was goed te zien dat het laatste contact het meest ’noisy’ was, waaraan we afleidden dat dat waarschijnlijk de TX was. Het derde contact had een net iets zwakkere stroom dan de eerste, dus RX.
I Love Free Software Day 2024
“I Love Free Software Day” is een leuke positieve campagne van de Free Software Foundation Europe (FSFE) om op valentijnsdag de mensen te bedanken die vrije software mogelijk maken. Met vele bijeenkomsten is het ook een goede gelegenheid om gezellig samen te komen. In Nederland was er een workshop in Den Haag en een bijeenkomst bij Hack42.

De bijeenkomst begon met een rondleiding voor iedereen die nog niet in de hackerspace was geweest. Toen konden we echt beginnen. Eerst een voorstelronde onder het genot van stukken pizza. Iedereen vertelde over persoonlijk ervaringen met vrije software en over de software en mensen die een bedankje verdienden.
WiFi-repeater met Liminix
In een vorig blog hebben we een seriële aansluiting gesoldeerd aan een WiFi-router om het boot-proces te kunnen volgen en beinvloeden. Het uiteindelijke doel is Liminix te installeren op deze router. Gelukkig is deze router al goed ondersteund onder OpenWRT, dus dat is een mooi beginpunt.
OpenWRT-upgrade
Liminix is qua kernel gebaseerd op OpenWRT. Helaas zat Liminix nog op een oude OpenWRT-snapshot met Linux 5.15.71, waaronder deze router nog niet goed ondersteund wordt. Daarom hebben we eerst de OpenWRT in Liminix geupdate naar v23.05.2 met kernel 5.15.137.
NixNL meetup: Software Freedom Day
Op 21 September, Software Freedom Day, verwelkomden we de Nederlandse Nix Meetup (NixNL) bij Hack42: rond de 20 geïnteresseerden, zowel bekende gezichten uit de community als nieuwe.
Het formele programma bestond uit een presentatie van raboof over hoe Nix mooi samengaat met software freedom, en van Adriel Matei over zijn framework om een neovim-configuratie te genereren vanuit Nix.

Na de presentaties bleef het nog lang gezellig, en zijn er al allerlei plannen gesmeed voor de volgende meetup. We kijken ernaar uit!
Adventure in the Linux Kernel
When I started debugging this issue, I had no idea how far down the rabbithole would go!
A few months ago, I was writing an end-to-end test for the Nextcloud integration with OnlyOffice under NixOS, to be run in a QEMU virtual machine. Curiously, my test suffered from corrupt reads from a host folder that was mounted into the VM. That was the start of a journey that led me deep into the Linux Kernel.
Hack42 @ WHY2025
Al sinds 1989 wordt in Nederland iedere 4 jaar een grote hackersbijeenkomst georganiseerd, sinds de tweede editie in de vorm van een meerdaags kampeerevenement. Iedere editie vindt het evenement zichzelf opnieuw uit, inclusief nieuwe naam. HAR2009 gaf de start aan de eerste Nederlandse hackerspaces, waaronder Hack42. De nieuwste editie, WHY2025, was een paar weken geleden een groot succes – en Hack42 was weer goed vertegenwoordigd.

MCH2022: Reproducible Builds for Trustworthy Binaries
At the 2022 edition of the quadrennial large Dutch hacker camp, MCH2022, I had the pleasure of telling the story of how Reproducible Builds help software authors and distributors create trustworthy binaries:
J-Fall: Trace Deeper: Stack Unwinding
When you hit a failure (or breakpoint) in the Java Virtual Machine, it shows a stack trace of the Java code. You can do the same for C code with the gdb debugger. But what if you want to do both at the same time? This talks shows off a gdb plugin that will show you a trace combining the Java stack and the native stack inside the JVM:
Curry On: Strategies for Streaming
When designing a streaming system, you can generally use a ‘push’ or a ‘pull’ approach. In this talk I explain the trade-offs, and motivate the ‘pull-to-push’ model used in Pekko/Akka Streams
Strange Loop: CRDTs Illustrated
CRDTs are a distributed data structure. While conceptually simple, it can be tricky to get a good intuition for them at first. This talk, which I was honored to give at the amazing Strange Loop conference, might help:
The Man in the Middle
Transparante HTTPS-proxy op de firewall
Om gebruikers in bedrtjfsnetwerken te beschermen tegen de gevaren van het web, wordt meestal gebruik gemaakt van een firewall. Moderne firewalls zetten niet meer alleen poorten open en dicht, maar kijken ook naar de inhoud van pakketten: bijvoorbeeld om ‘goed’ HTTP-verkeer te onderscheiden van ‘slecht’ HTTP verkeer. Dit levert een uitdaging op bij versleutelde verbindingen, zoals bijvoorbeeld HTTPS. Door de firewall op te laten treden als Certificate Authority kan ook dit versleutelde verkeer op een verantwoorde manier worden gescreend. Wie regelmatis op het net surft kent de gevaren: louche sites proberen je ertoe te verleiden om virussen, dialers en andere malware te installeren. Thuis moeten gebruikers zichzelf tegen dit soort aanvallen wapenen met behulp van virusscanners en personal firewalls – vaak met wisselend succes. In een bedrijfssituatie is het de moeite waard om de werkplekken centrall te beschermen, bijvoorbeeld door gebruik te maken van een firewall op netwerkniveau. Een infectie in een bedrijf kost in het gunstigste geval alleen wat tijd, maar kan in het ergste geval leiden tot grote storingen of het uitlekken van vertrouwelijke informatie.