
Research into how packet loss on the IEEE 802.11p control channel affects the scheduling of mmWave links between vehicles, where sub-6 GHz carries the control traffic. A Python simulator in which an analytical 802.11p model replaces the fixed delivery ratio shows that lost control messages increase completion delay and cause conflicting reservations, with aggregate throughput 3.8% to 14.1% lower than in the ideal case.

ROS2 perception and control pipeline for a small robot that tracks a green ball in real time. An OpenCV detection node and a setpoint generator run on Linux and feed a loop controller running as a firm real-time task on a Xenomai core. That controller drives the motors through an FPGA, and safety layers bound the PWM and stop the robot when tracking is lost.

Command-line tool for restructuring and splitting large LaTeX projects. Intended for collaborative writing, sharing or reorganizing complex LaTeX documents.

Course project reproducing the SIGCOMM 2021 study on hypergiants' off-net infrastructure using our own Internet-wide measurements.

KOReader plugin that adds WireGuard VPN support to e-readers, letting me reach my home Calibre library from anywhere without exposing it to the internet.

Mechanical keyboard modified to house an extracted Apple Touch ID sensor. The original sensor and Lightning charging connector stay accessible, so it works without custom firmware.

Self-hosted ICS proxy that makes university calendar feeds usable in a normal calendar app, moving event details into the fields clients actually read and splitting lectures, exams and practicals into separate subscriptions. Built in ASP.NET Core, containerized with Docker and deployed with Ansible.

Fleet of personal servers running Dockerized services, deployed and managed from a single Ansible repository with Traefik for routing and Gatus for monitoring.

Full-stack application for looking up and displaying Dutch vehicle information by licence plate.

Custom programming language with multithreading, synchronization primitives and shared memory, compiled to machine instructions for the Sprockell processor, a simple educational CPU. The compiler covers parsing, type checking and code generation, then runs its output in the accompanying simulator.

Server-side rendered Angular site with project pages, English and Dutch versions and an on-demand Typst CV generator that shares its data with the site.

Cross-platform mobile app for real-time audio visualization, with a spectrogram, a scrolling waveform and tools for recording and playing back clips.

Python service that periodically downloads webcam images from Comune di Genova.

Reusable GitHub Actions workflows for building and pushing multi-architecture Docker images and triggering a Watchtower update afterwards.

Games running on a Raspberry Pi and played through a web app, with WebSocket updates and switching between games at runtime.

Web-based application for planning train routes and visualizing disruptions on a map, integrating real-time data from the NS API.

Docker Swarm infrastructure for deploying and managing containerized services, with monitoring, logging and authentication.