Projects
Most of these exist because I needed something and the available options were either overkill or didn't exist.
๐ฑ Fin Tools
Nine financial tools in a single HTML file: live FX with 30-day sparklines, crypto prices, US stock quotes, real inflation data by country, DCF valuation, compound interest, loan/mortgage, stock return, and purchasing power calculators. Plus an ASML tracker that plots the live price against my own DCF range.
No sign-up, no backend, no tracking. Four live APIs (ECB, CoinGecko, Alpha Vantage, World Bank), all client-side. The kind of financial toolkit I wanted as a student reading annual reports for the first time.
๐ฅ Video Annotation Tool
Browser-based video labeling tool. Frame-by-frame navigation, timestamped multi-class annotations, CSV export. Built for the Tsinghua lab when CVAT and Labelbox turned out to be absurdly heavy for what we needed: timestamps and labels, not bounding boxes.
๐ต Offline Music Recommendation
End-to-end ML pipeline that recommends music based on detected mood โ speech recognition โ sentiment analysis โ content-based filtering โ local playback. The constraint: entirely offline, zero API calls, everything runs on one machine. Not production-grade, but a useful exercise in building without a safety net.
โก csvtool
C++ CSV parser. Exists because pandas choked on an 8GB file during a research task. Memory-mapped I/O, zero-copy parsing. Finishes in ~40 seconds what pandas does in ~3 minutes. Small project, but apparently "I wrote a C++ parser because Python was too slow" makes for a good interview story.
๐ AI-Eco
Interactive visualisation of AI's environmental cost โ energy, water, e-waste โ built for a Leiden interaction design course. Users compare models via Chart.js dashboards and a Three.js 3D landscape that degrades as you increase AI usage. Melodramatic, but it got the point across.
๐ tuixue.nl
This site. Static HTML, GitHub Pages, custom domain. No frameworks, no build step, no dependencies. Fourteen files, 189KB total, loads in under a second anywhere. I understand every line of code because I wrote every line of code.