Portfolio and (non-Minecraft) project history
There is a lot of stuff still missing from here. I'm trying to update this page when I finish a project, but when is something finished right?

Bachelors Thesis

Android on iMX6ul

My bachelors thesis is with E.D.&A., the details are not publicly available but it's about running Android on OEM embedded platform powered by an iMX6ul.

The Beer Archive

I've become a hobby brewer with a website!

The website was made as part of a school project, its a Docker composition with

  • Nginx
  • PostgreSQL
  • LetsEncrypt (although that's not running in production since I have a wildcard cert)
  • Flask (python 3)

The site is meant to be easily forkable and near instant deployable.

It features a full user management system, markdown enabled posts, email notifications, ...

Every beer/brew/batch is its own little micro-blog, with a main page and posts. This allows for follow-up that's easily visible. There are also separate pages, such as the ToS or the homepage.

The website. Source on Github.

KUL To iCal

Properly export your KU Loket roster to an iCal file.

I made this page because the existing tools became useless after the KU Loket roster layout changed. All the existing tools used HTML parsing to figure out the roster, and thus the slightest changes rendered them useless.

My version uses an (internal) json API to retrieve data, that you then paste in a textbox. (Due to cross site scripting protection I can't pull it directly, security is important!)

The script is entirely in JavaScript in the client browser, and thus no data is ever send to the server. (Another thing I disliked about the existing pages.)

KUL To iCal


A simple, private, expendable url shortener service.

I needed dynamic QR codes. The existing solutions are sometimes rather expensive or limited, so I made my own. It is a simple, PHP-MySQL bases system with an HTTP/REST API.

The "users" (or rather API keys) are just added by hand via PhpMyAdmin.


ESP8266 Breakouts v2

Front of PCB
Back of PCB

The full schema.

Based on an existing ESP Altium library and custom parts, all available on Github.

This PCB includes:

  • Space for the ESP-12-E. (ESP-12, ESP-12-F, or ESP-14 should also work)
  • Breadboard friendly spaced headers for all 'usefull' pins.
  • Headers (on top) for UART.
  • Headers (on top) for Flash Quad-SPI.
  • All the required pull resistors and filter capacitors. (smd or through-hole elcos)
  • reset switch.
  • programming switch (GPIO 0), also has an extra LED.
  • WS2812 RGB LED (GPIO15), with Dout pin also broken out. (Pick between 5v and 3v3.)
  • 5v to 3v3 regulator.
  • 7 x 5 Prototype area with GND, 5V, and 3v3 rails and GPIO4, 5, 12, 13, and 14 pins.
  • Silkscreen for all of it.
  • Solder bridge for GPIO16 and reset. (For MicroPython's Deep Sleep)

Digital Systems 2: FPGA-Z

An FPGA based Z-Machine implementation, written in VHDL, made for Basys3.

The Z-Machine is a virtual machine for text based adventure games.

Too much work to finish for the school project, and lack of interest to finish. I ended up reusing a lot of the code for a mini-casino (it just has roulette and high-low) and it was more then enough to get a good grade.

All source material is on Github.

Project 2: SmartAlarmClock

A Raspberry Pi Zero based 'smart' alarm clock.

Image of the prototype

It uses your Google Calendar to get your earliest appointment and your preferences to pick an ideal wake up time. We learned a lot about Python and Linux Kernel Modules.

This project ended up taking more time then we had, our PCB's arrived 2 days after the presentation (due to some issues with DHL), so we never assembled the final version. The presentation used the prototype shown above.

The accompanying report (in Dutch) is available here.

All source material and more pictures for this project are on Github.

There is also a (Dutch) website we made (it was a requirement for the course), available here.

Project 1: ModernMasterMind

A clone of the game Mastermind that uses a 96 RGB LED display to display the board.

Image of RIOT board and my own PCB side by side

It runs on a combination of an ATMega128A and a Beck IPC SC12. The SC12 provides the (Ethernet based) web-interface and game logic. The ATMega drives the WS2812 LEDs and LCD. They communicate via shared Dual Port RAM.

This setup is based on a development board called RIOT made by MGM and [dp]. The hardware largely remained the same, though I did redesign the PCB.

One of the hardest things about this project was the old hardware. The SC12 was more then 15 years old when I started. Since its a 16 bit DOS like system, most compilers for it run on 16 bit DOS systems. 64 bit Windows doesn't support 16 bit apps anymore. I tried a few things, including DOSBOX but ended up making a build script that uploads my code to my old Linux server, compiles it via an SSH session, and then uploads the result to the SC12 via FTP, then it reboots the SC12 via Telnet.

The accompanying report (in Dutch) is available here.

All source material and more pictures for this project are on Github.

There is also a (Dutch) website I made for my HTML+CSS+JS course, available here.


An assembler/IDE for 8051 asm files, written in Java.

It can compile and decompile to and from hex files, while showing you the steps in between to allow easy debugging.

I made this program because there are no programs with a modern, not cluttered, interface that met my needs. I needed the assembler to flawlessly read files written for Rigel51, as many of the files used in my school where written with that program.

The entire project, including a .jar release is available on GitHub.

This project also can upload the compiled hex files to the XC888 via serial (or usb-serial) cross platform.