Engelen Open Source


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!

read more...

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

read more...

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.

read more...

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.

The ‘deployer’ and ’target’ VM consoles in interactive mode

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.

read more...

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.

read more...

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:

TP-Link Archer AX23 with a serial-USB connector sticking out of it

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.

read more...

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.

Group picture of attendees (except for photographer)

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.

read more...

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.

read more...

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.

Een groep Nix-geinteresseerden in de lounge

Na de presentaties bleef het nog lang gezellig, en zijn er al allerlei plannen gesmeed voor de volgende meetup. We kijken ernaar uit!

read more...

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.

read more...

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.

The NixOS village on sunny WHY2025

read more...

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:

read more...

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:

read more...

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

read more...

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:

read more...

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.

read more...