projects(){
Graph Visualizer
A small Java program for plotting mathematical functions as graphs.
I started this project as a bet when I was 16 after I was challenged to create a graph plotter from scratch within a week.
(Since it was Christmas, I also made a version with falling snow in the GUI)
I derived a method of storing mathematical function as tree objects and a parser for them independently. I also learned a lot about GUI design and intra-program object communication.
Boneworks Save File Editor
A small command-line program for editing your save files in the VR-Game Boneworks.
Around the time the game was released, after I completed the story, I wanted to mess with the game and since there wasn't a Sandbox mode yet I used this simple tool to give myself objects in situations I wouldn't really be able to get otherwise. (e.g. unlimited ammo)
When I was 17 I tried to create a game engine from scratch using only Java and Swing.
The engine went through two major iterations in which I explored different architectures, display techniques, from Vector graphics through textures to shaders, which I referred to as filters back then. (Allthough they ran on the CPU instead of the GPU)
For a time I was playing a lot of indie games which used the SugarCube engine. This engine is a way to make narrative based games using JavaScript and HTML.
After a lot of games had some grinding content which was slowing me down in exploring the stories of those games I decided to write myself a Firefox browser extension which provides a menu for manipulating in-game variables.
In the process I learned how to create an extension and transfer browser Data from an active session to a extension GUI.
In my first semester at the DHBW we had an assignment to create a Java program using the Dijkstra algorithm to find the shortest path from one node to another in a graph.
I went a little bit overboard with this assignment and added a few things that weren't asked for, such as:
An interactive visualisation where you can create and delete nodes and edges. An animated visualization of the Dijkstra algorithm itself which displays the currently inspected node and edge, as well as intermediate distance calculation results. My own automata for parsing save files. etc.
In a Software Engineering class I worked on a small 2D game.
For this project, I was responsible for the underlying engine, as well as most of the graphics and physics work. I used tries as the main object storage structure to have objects addressable by ids and therefore enable dynamic communication. In future games I would probably not do the same, as quad-trees would be better for performance in rendering and physics calculations. However, I'd still consider tries as a supporting communications structure in which objects could register on demand.
After initially wanting to understand how the Python module chess displays its chess boards in jupyter notebook, one thing led to another and I worked on a problem visualization module for one of my professors. Since then, he has adapted this python module in his lectures and uses it to visualize common computer science problems, like the knight's tour or map coloring.
Boardgame Engine
For a few weeks, I was watching a lot of gameplay videos of the boardgame Monopoly. After that, I wanted to play the game with my friends but didn't feel like paying Ubisoft for the digital version.
This situation gave me the idea for a web app which hosts games, but users can upload their own rulesets making it possible to play any kind of boardgame.
I had to hold a presentation about parallelization for which I wanted some historical data on multicore processors.
After I couldn't find any trend statistics on sites like Statista I decided to webscrape the internet archive for the Steam Hardware Survey and extract the information I wanted.
The resulting graphs and data are available on my GitHub page as well as the code that resulted in that data.
SmartHomeUpgrade - App
During my first 1.5 years at Uni I lived in student dorms on the fifth floor. There we had to share washing machines in the basement. When I got annoyed of walking downstairs with my laundry just to find the washing machine blocked, a friend and I developed an App, which together with some arduinos, a gsm module and contact microphones detects whether a washing machine is in use or free.
NAS
Recently my MacBook Pro refused to turn on. After I wasn't able to get it repaired or repair it myself I lost all my data on it.
I took this occasion as an incentive to finally build my own network attached storage (NAS)
As the operating system I used TrueNAS and am very happy with the result. I now have 9TB of redundant network storage to backup all my files
After a friend who studies classical philology approached me with an interesting project I was immediately convinced to participate myself.
The Vesuvius Challenge is an attempt to analyse scrolls that were preserved in Herculaneum after mount Vesuvius Erupted (The same vulcanic erruption that famously destroyed Pompeii). Using various methods teams are competing to be the first to analyze the 3D scans of petrified scrolls and read the contents.
After hearing a lot about art AIs I decided to try to run a stable diffusion AI locally.
Using the AUTOMATIC1111 webui, I was able to try many different models and learned a lot about AI concepts like LoRAs and stable diffusion in general.
Varjo Aero Audio Mod
I recently tried my Valve Index VR Headset with contact lenses for the first time and was amazed at the difference it made. I didn't realize my eyes had gotten this bad, so I immediately got new glasses and prescription lenses for my VR Headset. The perceived visual fidelity changed like going from 480p to 4k and I really got into VR again.
After some time, replaying various VR games and experiences, I started to look for what hardware might be appropriate to replace my Valve Index. I found an amazing deal on a Varjo Aero which has one of the highest resolutions in any headset as well as cool features like eye tracking and foveated rendering. One major drawback however is the lack of any audio solution. As the Index speakers are absolutely amazing and probably my favorite piece of audio equipment I own I decided to try and mount them to the new headset.
At first I tried 3D printing some mounting clips and soldered some contact plates for the Index drivers to an in-ear headphone cable. Using the speakers by plugging them into the aux-port on the Aero I realized that the Index must have some proprietary circuitry for driving the speakers. After some research I found an open-source amp and dsp board for the Index speakers and similar BMR drivers.
Using this as a reason to learn about custom PCBs I used PCBway to get the board printed and assembled with all required ICs and other components, forcing me to get familiar with KiCad, gerber files and pick & place assembly instructions.