I started to program in the Easter holidays 20 years ago. Therefore, I’ll try to recollect some memories of what I programmed over these years. I went through heaps of old screenshots and tried to pick one project / direction of work per year.
























2001: An internet friend and I wanted to develop a GTA2-like game. He already had been using VisualBasic, which lead me to start with BlitzBasic—a (then brand-new) BASIC language with hardwired DirectX support. Of this time, I only found pics of my old webpage (2001–2003).

2002: After some fiddling around (that has been lost to a dying hard drive), I finished a first game “WollknäuelWar,” a cannon duel including sheep. Graphics 100% MS Paint! (Right image: I already managed to write a (simplistic) parser/loader for weaponry info from files.)


2003: I entered the space shooter “DGX – Das Geheimnis der Xatar” into a BlitzBasic coding competition, making second place. BlitzBasic was not able to use the blended rendering of the hardware for 2d images, so all the special effects required its upgraded version, Blitz3d.


2003/2004: Over the Christmas holidays, I hacked together a third-person snowball fight shooter prototype. It received really favorable feedback from the German Blitz community.


2004: Together with INpac, Ava, and Vincent, I created a first person shooter “Aliens exist.” We were quite influenced by the Half-Life 2 hype, back then. For me, it’s an important milestone as I wrote my first script language interpreter and path finding, both horribly done from a mature computer science perspective.


2004/2005: Together with INpac and others, I also worked on some projects such as a racing game (using the Tokamak physics engine) and a space RTS. They were never really published I think.


2005: My main project since then has been DGX9142, a space shooter with FreeSpace-style dogfights and Battlefield conquest mode. I started it in 2004. Around 2005 it became mature enough to be presented. The left screenshot is from around this time, the right one from 2007.


2006: I did lots of small stuff. Here’s a screenshot of my refurbished version of UnrealSoftware’s “Stranded” (I added shadows, bloom filter, reflections, two more characters …) and a pic from Dusmania 2006 (yearly German hobbyist game developer meetup).


2007: As part of my Abitur, I did my “Besondere Lernleistung” as a paper about light mapping algorithms. Also, I played around with randomized raytracing. (Both using the really cool BlitzMax language.)


2008: Especially due to the work of CdV, DGX9142 had turned into a really nice game by then. I also had a lot of *fun* adding networked multiplayer code. Since then, the game did not change much. It’s available on https://benkeks.itch.io/dgx9142.


2009: I started my Bachelor studies at TU Berlin. So, I finally got exposure to functional programming, yay! (In an arcane language, named OPAL, on the left.) And Java, nay! On the dev side, I spent a lot of time tweaking the websites of German student protests, for example the depicted Drupal site.


2010: I implemented a translator between the process calculus Timed CSP and Uppaal’s timed automata for a DFG research group. Lots of nasty Java code, and no nice screenshots! (My implementation provided tcsp2ta and tcsp2tockCSP in the figure.) But this included my first implementation of a fully-fledged functional programming language.

2011: In a university project, I wrote a code generator translating state charts into Scala actor code. While this student project is not really interesting, this was my first exposure to Scala, which I’ve loved ever since. And the project employed Scrum…


2012: I finally managed to take a TU game dev class, translating my passion into credit points. Our group created a YetiTournament game, which actually was inspired by my 2003 snowball fight xD. We used Unity3d and UnityScript, tremendously improving my opinion of JavaScript.
2013/14: I implemented some cool student projects at the compiler construction group of TU Berlin (compiling a functional language to JS; and static analysis tools). Difficult to put into screenshots, but here are some figures from my Bachelor thesis defense 2014 on control-flow analysis.


2014: During my time as sysadmin at AStA TU Berlin, I mostly kept systems from falling apart. But I also did some development, e.g. the booking system for the equipment pool. (Using Drupal/PHP backend and some D3.js frontend.)

2015: A full-blown raytracer created for a computer graphics course at TU Berlin. (The only big C++ project I’ve ever written. With kd-trees, multithreading, complex light models and whatnot!)

2016: During my stay in the US, I re-implemented “Clave” as a Scala.js + Three.js browser game. (It’s a funny game about catching monsters by surrounding them with boxes that I originally wrote in C# for an overnight challenge in 2012.)

2016/2017: As part of MTV TU Berlin, I developed a web application for the analysis and transformation of “Higher-order dynamic-causality event structures,” using Scala.js.

2018: For my Master thesis, I created an algorithm to compute coupled similarity, a nice notion of equivalence for distributed systems. I implemented it in Scala+Apache-Flink, and in a fork of my existing Scala webtool. (Also published at TACAS 2019.)

2019: In my lab course “Models of Dynamic Systems”, I introduce undergrads to team software development processes (+ gamedesign + models of distributed computation). So it’s mostly the students doing the coding. But I also did some, e.g. an example TypeScript / Phaser.js game on orbital dynamics.


2020: I taught myself some Ruby in order to write code interacting with a Discourse instance. While the following screenshot of a plugin for delegated voting in Discourse polls looks less impressive, finding my way around the plugin system + Rails really pushed my comfort zone.
