Projects
LiDAR Simulation
During my time at AMZ Racing I created a standalone LiDAR simulator allowing us to create realistic point clouds completely virtually learn more
Accelerating Inverse Optimization
For my BSc thesis I accelerated the inverse design loop of acoustic relief creation by 100x using neural surrogates learn more
Terminal Rendering
Created several ray tracers which render their output to the terminal using ASCII characters learn more
Education
- BSc Computational Science & Engineering (CSE), ETH Zürich
- Apprenticeship as a Mechanical Design Engineer. Designed physical steering system components for manufacturing using CAD software.
LiDAR Simulator
An application simulating a LiDAR sensor and generating realistic, virtual point clouds was the missing piece to complete the closed-loop simulation of our autonomous Formula Student car at AMZ Racing. I developed this standalone simulator alongside my thesis and coursework at ETH Zurich. It features:
- Custom Architecture: The simulation math and underlying logic were built entirely from scratch without external frameworks, tailored specifically to our Formula Student use case.
- Real-time Performance: Fast computation through heavy micro-optimizations, including Struct of Arrays (SoA) layouts to minimize cache misses, fast bounding-box intersection checks, and precomputation of heavy function calls.
- Procedural Terrain: The ground is modeled such that it can generate specific irregularities (e.g. roughness, potholes, bumps) to test and improve the robustness of our perception algorithms in real-world scenarios.


- ROS Integration: Fully integrated into the ROS ecosystem, allowing it to listen to control messages and publish point clouds directly to other nodes in the pipeline.
- Visual Frontend: Includes a 3D renderer and UI to visualize the track and generated point clouds, monitor simulation statistics, and tune parameters on the fly without recompiling.
Accelerating Inverse Design of Acoustic Reliefs via Neural Surrogates
For my Bachelors Thesis I replaced a computationally expensive numerical solver by training several AI models (including a CNN, Vision Transformer, and Fourier Neural Operator) on HPC systems to predict acoustic wave diffusion of a given acoustic panel. The models learned prediction is then used for inverse optimization: Instead of asking how well a panel diffuses, we ask the model to shape a panel such that it diffuses well. Because AI models are easily exploited in inverse optimization, I implemented advanced regularization techniques including Large Steps and neural reparametrization to stabilize the optimization landscape. The acoustic optimization was also combined with a differentiable renderer and a vision model, allowing the panel to not only perform well acoustically but also physically resemble a user-provided target image.
The result was a functional inverse design tool that gives architects the freedom to create highly efficient acoustic panels with custom aesthetics. It accelerated computation times by 100x compared to the previous method and earned the highest attainable grade for my thesis.
Ray Tracing in the Terminal
When I was younger, I got interested in 3D graphics and wanted to understand how a virtual 3D world becomes a 2D image. A bit of research led me to ray tracing, which I decided to implement myself. Because I didn't want to rely on existing graphics engines, I chose to render the output directly to the terminal using ASCII characters. Over the years, I've built several ray tracers in C++ and Rust, rendering primitives like spheres and planes, and eventually exploring voxel ray tracing.
While my coding standards and architectural knowledge have evolved significantly since I wrote these, they were valuable learning experiences teaching me the importance of codebase structure, design patterns, build systems, testing and so on.