Portfolio · Computer Science

Computer Science

My degree

BSc Informatik: Games Engineering, Technical University of Munich

I studied Informatik: Games Engineering at the Technical University of Munich. Despite the name, it is a computer science degree: I took the full TUM CS curriculum, the same theory, architecture, and systems as every other informatics student, with a focus on graphics, GPU programming, and games on top.

Area Covered
Theory Theoretical computer science · Algorithms & data structures · Discrete structures & probability
Software engineering Software architecture · Software engineering · Programming across paradigms
Systems & data Databases & SQL · Operating systems · Computer architecture
Mathematics Analysis · Linear algebra · Statistics & probability
Games engineering focus Game technology & engines · Graphical programming · Shaders · GPU programming

Proof of work: A hand-built keyboard

I designed, soldered, and programmed it by hand

A photo of the board is on its way

ZMKZephyrHand-soldered

I designed and hand-soldered the board, then wrote and flashed its firmware: layers, macros, and the layout I actually wanted. The repository carries my keymap commits against upstream ZMK.

Built

  • I hand-soldered the split board: diodes, controller, switches.
  • I wrote the firmware in ZMK on Zephyr: layers, hold-tap behaviour, and macros tuned to how I actually type.
  • I iterated the layout in daily use; the keymap history in the repo is the record of what changed and why.

Shipped tools

How these were built

Built AI-assist-first: the architecture and design are mine, the implementation is AI-written, and I ship it.

Two apps I use every day. They are here as product judgement: noticing what is missing, shipping it, and keeping it running.

Suspender, an Android gym tracker: today’s session with sets, weight, and trend data

Android gym tracker

Suspender

KotlinJetpack ComposeOn-device2026

A native Android gym tracker with a real statistics engine behind it: weighted regression, prediction bands, population strength standards, all computed on the phone, with no network permission at all. I use it every training day.

A day in day: a grid of ten-minute blocks, the morning solid, the current block part-filled, the rest outlined

Daily planner, in daily use

day

SvelteKitSQLitePWA2025

A day-planning app built on one rule: assigning an activity has to cost nothing. The day is a grid of 144 ten-minute blocks you paint with reusable activities; the past renders solid, the current block fills as it passes. In daily use by me and a group of friends, the only real test a tracking app has.

How I work

  • I choose deterministic over clever: code is read more often than it is written, by me, six months later.
  • I write tests on the parts that break, not on the parts that flatter.
  • I document my decisions, so a team can move without me in the room.
  • I keep offline as the default; a network is a feature, not a dependency.