Projects

Thubnail for blog showing a desk with a notepad

My Projects

Terminal output with asci art

Beeblebrox CTF | JS/Bash

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.

Check the codeCheck live demo

Fizz-Buzz in Kubernetes | Go

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.

Check the code
...
GIF of bird jumping over pipes

FlappyBird | Java

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.

Check the code

GitLab Actions | CI/CD

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.

Check the code
...
Comic style picture of people working on a server rek

Hetzner NodePool Module | Terraform

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.

Check the code

Joplin Plugin | NodeJS

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

Check the code
...
Minimalistic kube icon in tan colors

Kubelet static credential provider | Go

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.

Check the code

LaTeX Devcontainer | Docker

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.

Check the code
...
Gif of Pacman on relas streets

Pacmap | Python

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.

Check the code

PyEnigma | Python

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.

Check the code
...
Video game with with fighting for coloud bases

QT Game | C++

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.

Check the code

ReddVid | Python/JS

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.

Check the codeCheck live demo
...
Video game spaceship turning and shooting bullets

SpaceShooter | C++

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.

Check the code

URL Shortner | JavaScript

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.

Check the codeCheck live demo
...
Doom game running in the browser

WebDoom | C/JS/WASM

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.

Check the codeCheck live demo