December 21, 2025

Switching to NixOS

About a year ago I started out with NixOS. Why? Because this video by No Boilerplate had me intrigued. A huge package repository, the ability to summon development tools without hunting for packages or stuffing /usr/local with pre-built binaries and reproducibility all seemed really appealing. This article describes my experience having used NixOS as a daily driver since then. Nix, The Language The first thing I did was install the Nix package manager. Debian Unstable, which I had been using for 12 years prior to this, even had it packaged! Read more

September 12, 2025

The Vibe Coding Gambit

GenAI assistive programming tools are all the rage at the moment. There is this general notion of “adopt-or-die”, particularly among parties1 that have invested in their development. Enticed by shiny new toys and a bit of discomfort with fear-of-missing-out, I tried some of them myself, was left disappointed and ultimately gave up. End of my career as software engineer? No! I am not going to let me be tricked into FOMO any further for adopting these products. I will not be “left behind” and out of a job. This is because I believe that there are two likely scenarios for the coming future: Read more

February 20, 2023

Automating Versioning with CI

I host a portfolio of my software projects on GitHub. Some of these projects attracted users whom contribute new features and bug fixes. After I accept a change I tag a new version and push it to the respective package repository. Releasing however, was quite the chore: getting a list of git commits, filtering out the interesting bits to put in the changelog, figuring out where I kept the changelog for this particular project (In a CHANGELOG file? Or in annotated tags? Or in the GitHub Release?) and then committing and tagging with a new version number. Read more

October 23, 2022

10 years of reasoning about programming

In 2012 I started out with learning to program, an endeavour that would eventually grow into my career as a software engineer. In this profession there is a saying which states that if you do not find your past creations to be unreadable garbage, you have not learnt anything. In this post I will look back at some past projects to see what lessons they taught me. Structureless Spaghetti Java was my language of choice as I thought it would be really neat to be able to make mods for Minecraft. I followed a tutorial which used Swing components to make a 2D Space Invaders game. I extended this game to become an Asteroids-like game. In the following months I wrote more programs. Among these programs were even some real-world solutions for problems of the computer repair shop I worked at outside of school. Read more

January 29, 2021

CO2 Sensors Against COVID: yet another SHA2017 badge project

Infections of SARS-CoV-2, the virus better known as the dreaded Coronavirus, can take place by inhaling airborne aerosols. The risk can be reduced by ensuring a constant supply of fresh air by, for example, just opening some windows. We at Hackerspace Bitlair, for which I carry responsibility as board member, wanted to find a way to know when we need to start ventilating our indoor spaces. And there is a way to do this! If we take the following into account: Read more

January 2, 2019

I made MPD index SoundCloud, here's how I did it

Since I often work at my local Hackerspace alone, I can play whatever I want on the space’s music system, so I’ve taken up the habit of keeping up with a bunch of radio shows which I download from SoundCloud. The usual process of playing something on our music server is a bit cumbersome: I have to browse SoundCloud, download a track that seems interesting, upload it to the music server, let MPD index it, and then play it. Read more

August 28, 2018

7 Subtle Pitfalls in the Go Language

Introduction How well do you know the Go programming language? Have you written something in Go that does not quite does what you want it to do? Then you may find this article interesting. We explore some subtle ways one can introduce a bug in a Go program. The criteria is that the compiler gives no warning whatsoever and that the fault can be caused by either a typo or some detail that is easy to forget about. Read more

May 18, 2018

Compile Time Prevention of SQL-Injections in Rust

SQL injection vulnerabilities have been a plague ever since such databases have been combined with user facing applications. Such vulnerabilities arise when a SQL query string is naively combined with data that is controlled by an attacker. To mitigate, people should make use of placeholders and prepared statements provided by SQL client libraries. This separates the variable data from the actual query, ensuring that these two never mix. Pretty much all modern SQL client libraries offer this functionality, but of course, it’s still possible to mix variable data and SQL by means of string concatenation. Read more

February 17, 2018

Rendering OpenGL shaders to a LED-Cube

Last December, I attended the 34th Chaos Communication Congress in Leipzig, Germany. This is a large tech-conference with attendees bringing all kinds of awesome projects they have been working on. One thing that really impressed me was a cube comprised of bright LED-panels. Here’s a video I took: ..? It’s awesome and I just had to get one of my own. I showed the video to some friends, telling them I wanted to build this. Sebastius and Boekenwuurm were as impressed as I was and wanted to join in on building one each. Read more

November 25, 2017

SHA2017 Decoration Evaluation

In 2017 (and before that), I was among the people responsible for organising the largest (outdoor) hacker event in the Netherlands: Still Hacking Anyway 2017. My task was, along with one other Team Lead, the management of the Decoration Team and its budget planning. This article is based upon an evaluation we did after the event took place. It’s meant to be useful for anyone who is going to take upon themselves the challenge of decorating an event like this. Therefore, readers not familiar to the organisation or the event may lack some context which aides them to understand some parts. The projects section should be fine and a fun read if you attended SHA. Read more