I'm a web developer based in the Netherlands, building modern web experiences with React, TypeScript, and Node.js. I love exploring new technologies β from Rust and WASM to AI-powered tools.
Languages
Frameworks & Libraries
Infrastructure & Tools
| Project | Description |
|---|---|
| Docframe | AI doc generation |
| Recurno | Monthly subscription tracker |
| Webvork | Web development agency |
| portzap | Fast cross-platform port management tool, written in Rust |
| makesite | Minimal static site generator in Rust: write Markdown, get a website |
| maildrop | Resend-like API over free SMTP, with auto-detected settings |
| EnvShare | Peer-to-peer .env sharing on your own network, no cloud |
None of it is an image anybody drew. The banner, the panel above, and the four lines between the sections are WGSL shaders, rendered headless on a GPU by vgpu and re-rendered every night by a workflow. The fog is domain-warped noise. The tiles are days from my contribution graph, pulled from the GitHub API and used as texture rather than as a chart.
The shaders are generated rather than written: every build emits fresh WGSL next to each GIF, with the days baked in as a constant array and the name packed into a 5x7 bitmap font. That leaves each shader with a single uniform, the phase of the loop, which is what makes the animations join back to their first frame exactly.










