Portfolio

This page showcases some of the projects I've worked on.

2025

Top-down tactical game

A top-down turn-based tactical game built in Godot

A top-down turn-based tactical game built in Godot. The high-level mechanics are inspired by Counter-Strike: players can throw smokes to obscure vision, move quietly to avoid detection, and position around a map with tactical intent.

Turning real-time mechanics into a turn-based format while keeping them feel meaningful is the core design challenge. The game is multiplayer from the ground up, with a custom vision system that accounts for smoke, flashes, and line of sight so each player only sees what their units can see.

The project is built in Godot and is currently in active development.

2024

EvoDeck

Hardware-agnostic controller software for key matrix devices

EvoDeck is a controller software for key matrix devices like the Stream Deck. The goal is to be hardware-agnostic: any device that exposes a key matrix should work.

The focus is on extensibility through a plugin system, where each plugin can define its own keys, layouts, and behaviour. On top of that, EvoDeck supports features that go beyond what most Stream Deck software offers: animations, multi-key widgets that span several keys, and virtual game controller mapping for use in simulators and games.

The project is written in Python and is currently in active development.

2023

Online IDE Construction Kit

Online IDE Construction Kit

Online platform for programming exercises using modern IDE.

This is my award winning Bachelor Thesis 😁. I'm not kidding, I got the "Regional Siemens Excellence Award 2023" for this work.

The thesis was all about developing a platform for online programming exercises. The goal was to create a simple and practical online platform while at the same time providing a complete and modern development environment.

The frontend is built using Theia, making it a fully fledged IDE that looks almost identical to VS Code. Thanks to Theia supporting VS Code extensions, it can be used for almost any combination of programming language, framework, build system, etc.

When a student accesses an exercise, they get their own instance of the IDE along with a copy of the exercise's project files. To accomodate different types of exercises, the environment in which the IDE runs can be customized for each exercise.

These environments are Docker images that are generated dynamically from a configuration file. The config defines a set of packages (from the package manager) and VS Code Extensions that are installed in the environment.

Unfortunately, the thesis has not been made public yet but I will provide a link here as soon as it is.

strack

strack

A command line tool for time tracking

strack is a simple command line tool to track the time spent on different tasks. I created the first version a few years ago during an internship. I had to write a weekly report about what I had worked on so I wrote this tool to simplify the task. The current version is a complete rewrite I wrote because I wanted to know how much time I spent on each module at Uni.

The way it works is quite simple, you create projects and then use the start & stop commands to track sessions. The collected data is stored in a JSON file and can be visualized using the report or cal commands.

Available on GitHub

2019

ghclone

A command line tool to quickly clone GitHub repository

I found myself often having to copy the name of a repository from a guide or tutorial then manually writing git clone https://github.com/ before pasting the repository's name.

To fix this very real and important problem, I wrote this tool. Once started, a search prompt can be typed. When enter is pressed, the GitHub API is used to retrieve a list of possible matches. The <C-J> and <C-K> combinations can then be used to choose the repository and <C-L> will clone the repository into the current directory.

Is it essential? No, but I have been using it on occasion ever since I made it.

Available on GitHub

The Reactive Programming Language

My own interpreted programming language

This is a programming language I developed as part of a school project in the last year of my apprenticeship.

I started by writing the specification for the language. The language is what I called "reactive". What that means is that an expression does not get evaluated when assigned to a variable. Instead, the expression itself is assigned to the variable. This results in some interesting behaviour because the value of a variable can depend on the value of other variables.

See Specification

I also wrote an interpreter that implements the specification. It is written in C++ and uses GNU Bison and GNU Flex to generate the parser. The interpreter can be run as a REPL or run a program from a file.

See Interpreted

2018

Flocking: Boid Simulation

An implementation of Craig Reynolds' 1986 paper "Flocks, Herds, and Schools: A Distributed Behavioral Model"
SnakeGA

SnakeGA

A genetic algorithm that learns to play snake.

2012

A game made in Blender

A game made in Blender

A game I made when I was 11.

This the earliest project I could find. I don't remember exactly but I must have followed a tutorial, I doubt I had the skills necessary to do any of it on my own back then.

The game is made using Blender (Yes, Blender used to have a built-in game engine). The game is quite simple, the player controls a ball in a maze and an computer controlled ball tries to catch the player.