vgll@dev:~$ ls projects/

projects/

Things I build to understand certain topics and have fun with.

raytracer-c

ongoing
C · raylib

A CPU-only software ray tracer in C, built with Peter Shirley's Ray Tracing in One Weekend as reference. No GPU, no external math library. Vector math runs on my own (really rudimentary) Vector3 implementation. Raylib is only used to open the window and handle input; every pixel is computed on the CPU. I'm also planning to use this project to explore multithreading, something I'm currently reading about in OSTEP.

graphicsraytracingC
surface_normals, a normal-mapped sphere render
languageC
libraryraylib
referenceRay Tracing in One Weekend

snake-to-wasm

finished
C · raylib

Started as a first raylib project, then rewritten from scratch. My first approach kept the snake as a heap-allocated linked list I had to walk on nearly every state update: eating, collisions, basically everything. I replaced it with a fixed-size ring buffer, moved positions from pixels to integer grid cells, and the game now runs without a single allocation. Still not a 'perfect' solution, but I'm happy with it as a first raylib project. :)

what it taught me

Keep it simple.

gamedevraylibwasm
snake-to-wasm — gameplay
languageC
libraryraylib
platformnative + web (wasm)
emscripten build↑ ↓ ← → moveP pause
snake-to-wasm.wasm

ostep-homework

ongoing
C · OSTEP homework

Solutions to OSTEP's programming and measurement homework written chapter by chapter alongside the book. The solutions are written only with the informations the book gives me and the linux man pages.

what it taught me

The homework is great for understanding the topics and internalizing the principles like e.g. translating a VA to an PA. The C coding tasks especially teach fundamentals like just reading the man pages of specific functions.

osC
ostep-homework — terminal output
languageC
sourceOSTEP
statusin progress

stm32-peripheral-demo

finished
C · STM32F429 Discovery · embedded

A timer triggers periodic ADC sampling of the onboard temperature sensor, an interrupt-driven callback processes the reading, shows it live on an LCD, and trips an LED past a threshold. An independent watchdog (IWDG) resets the board and reports the issue if the ADC loop ever stalls.

what it taught me

I learned a lot of embedded basics in this project, especially how important timers and interrupts are for not blocking the cpu with busy-wait delays.

embeddedCarm
STM32F429 Discovery — LCD temperature readout
boardSTM32F429 Discovery
coreARM Cortex-M4
peripheralsADC · TIM · GPIO · LCD · IWDG

sound-of-the-seasons-dw

active
Python · SQL · GitHub Actions · 2026

An end-to-end pipeline: pulls weather and Spotify chart data, runs the analysis in SQL, and regenerates a static dashboard on a weekly GitHub Actions schedule, no server involved. Live at vgll49.github.io/sound-of-the-seasons-dw.

what it taught me

I learned how to handle rate limiting inside an ETL process, and how to design a data model that works for different kinds of data.

pythonetldata
sound-of-the-seasons-dw — dashboard
languagePython
updatesweekly · GitHub Actions
dataSpotify + weather, DE 2020–2026
livevgll49.github.io/sound-of-the-seasons-dw