

Capture the Flag for IT-Sec starters
Within an IT-Security internship I created a training CTF. This CTF is for beginners and helps to understand UNIX, the terminal, scripting, reverse engineering, SQL injections and web- authentication; web-scraping. The whole CTF is in a VM. To get the VM please contact me. Every task in the CTF has its own WebPage with a description which is done with NodeJS.
The code for the CTF creation is on my GitHub.
Run Fizz-Buzz as declarative Kubernetes recourses
A Kubernetes Operator written in Go that implements Fizz-Buzz in a declarative way. Create a instance.fizz-buzz.hegerdes.com resource and watch you pods get created following the fizz-buzz rules.
The operator was created using the operator-sdk and has a full CI setup for testing and releases.


A OpenGL FlappyBird clone
You gotta jump on the hype.
This is a simple FlappyBird clone written in Java using LWJGL. It uses OpenGL Shaders and Vertices for rendering. Just like the mobile version, this game is hard. But installation is easy.
Just clone the code and run maven on the pom file. Maven takes care of all dependencies.
GitLab CI/CD like GitHub Actions
GitLab CI/CD is an awesome automation tool.
But users are often limited to one predefined container, becomes quickly crowded and it lacks the modularity of GitHub Actions. I created a detailed comparisson in this post!
With a good set of GitLab Components and some CI snippets you can use GitLab CI/CD almost like GitHub Actions and have a much more clean and modular setup.


Scale Hetzner VM easily
A Terrafrom/OpenTofu module to easily create multiple Hetzner cloud VMs.
It can be used for any usecase, but I personally use it to quickly create Kubernetes clusters on Hetzner. It is featured on Hetzners awesome-hcloud list.
Sync your GitHub cheat-sheet with Joplin
Joplin is a Markdown based note-taking app, similar to obsidian, that lets you organize all your notes in one app. Joplin is extendable, so all features that are not built in can be added as a plug-in. Some time ago I created a plugin to sync GitHub Cheat-Sheets and other useful documents to Joplin. The plugin regularly updates the local version with the newest remote version of that note


Credentialless image pulls like EKS/AKS/GKE
Secrets in Kubernetes are namespaced. When using private registries you have to create a pull-secret in every namespace and reference it in each deployment. This is a poor developer experience.
The static credential provider plugin api for the kubelet changes that and allows to pull images from protected registries without having developers worry about it. It allows for seamless integration just like in EKS/AKS/GCE and their hosted registries.
Selfthosted Overleaf
LaTeX is an awesome typesetting system to create gorgeous documents. But getting started is hard, and hosted solutions like Overleaf cost money for basic features.
While working on my bachelor thesis, I created my own, reproducible and portable LaTeX environment based on the concept of DevContainers.
Since then the project has found some lovable users, so I continuously maintain it by building fresh Docker images every month.


Real map based multiplayer Pacman
Pacmap is a custom version of Pacman. The map is a map section of the real world using OSM. Multiple players try to capture packages and deliver them to a random position. Ghosts and other players try to steal these packages.
Ghosts movements simulate real human movement, using the MSLAW or RandomStreet model. Rendering is done with PyGame.
New maps can be generated with OpenStreetMaps.
Historic Cryptography
The Enigma was an evolutionary encryption device. It was considered uncrackable.
When Alan Turing was tasked to break the Enigma, he did not only impacted the course of the second world war, he also created the foundations of modern computer science.
This project tries to recreate a small fraction of Turing’s work by implementing the Enigma in software and breaking its encryption.


Strategy game with build with OpenGL
This is a round-based 2D/3D strategy game. Two players fight over map domination. In the case of direct attacks, the player must win a real-time 3D space shooter fight.
Window management, views, Networking and synchronization are done in QT-Framework. Boost is used for IO, graph algorithms and way finding.
Flask & Vue based
Having a hard time downloading videos from Reddit?
ReddVid might be the perfect solution. It consists of two parts: the backend written in Python and the frontend, written in VUE.js. The backend scrapes Reddit with the help of BeautifulSoup and combines the separated video and audio with ffmpeg.
The API can be used in the terminal or by the frontend.


OpenGL 3rd person SpaceShooter
This is the 3D part of the other qt project. This has no networking and was a playground for C++ features. I used Boost, templates and meta template programming in this project to mess around with as most of C++ functions. Instead of QT I used SDL2. Build-system is done with cmake an custom scripts.
NodeJS & Vue based
These Amazon product URLs are too long?
Than use a URL shortner. Just the BASE_URL/SHORT and you can save a lot of typing. This NodeJS App exposes a REST-API. A simple POST to ‘/url’ will generate a new Database entry with your URL and either a custom or random generated short. If the short gets requested you simply get redirected.
The API is consumed by a simple Vue fronted.


Doom in the Browser
Do you remember playing the original DOOM(1993)?
No? Me either. Wasn’t born yet. But through a friend I got interested in this piece of computer history that revolutionized pc games with its 3D graphics. I got the SDL version of the doom source code and played a little with it. With some changes and emscripten. I was able to port it to WebAssambly that runs the game in the any browser.
NOTE: Because of copyright I only included the Demo level.