Coding
I have enjoyed coding since my childhood. While I have coded in a variety of programming languages, I usually reach for C++ and Python. I love problem solving and tinkering around until I end up with something that works. Below are my two most recent projects.
rela-tracer
I've been busy writing a relativistic raytracer: a (physics-based, stochastic) raytracer which incorporates the effects of special relativity. Below are a couple of videos I generated using rela-tracer. They showcase, in particular:
- the relativistic Doppler effect: The color of incoming light is red- or blue-shifted, depending on the relative movement and position of emitter and receiver.
- relativistic aberration and its most famous consequence, the headlight effect: Angles are distorted when transforming from one restframe to another, leading to the effect that a fast-moving light source emits predominantly along its direction of movement.
- artefacts of light travel time: different light travel times lead to apparent distortions in the image. In particular, objects are often ahead of their mirror images, and looking through dielectric media such as glass or diamond leads introduces a time delay.
hexbot
I have been working on an AI which learns to play the game Hex, together with Chris Dorn. The main idea of this project was to hand-code Proximal Policy Optimization (PPO) in pytorch. We achieve learning through self-play by following an evolution-style algorithm: hexbots collect sample data by playing against a specified pool of fixed opponent policies and train on them using our implementation of PPO. After a fixed amount of training, we start a new generation: The policies learned by the bots are added to the opponent pool, the worst performers are discarded and the best performers multiplied. Our implementation further features monitoring capabilities that allow inspection of play between two trained bots.