Blog
Occasional writing on research, tools, and things I find interesting.
Building a real-time multiplayer chess platform
How a group of friends wanting to play chess together turned into a four-service WebSocket architecture with Glicko-2 ratings, server-side move validation, and a Stockfish analysis board.
Reverse-engineering jungle pathing from Riot's timeline API
The Riot API gives player positions every 60 seconds. To reconstruct a jungler's actual path, you need interpolation that respects map geometry — and A* pathfinding on the game's navgrid.
Can operations research beat gut-feel in Fantasy Premier League?
Applying Mixed-Integer Linear Programming and machine learning to FPL squad selection — and discovering that the best predictor doesn't always win.
Scouting Korean solo queue for off-meta Lulu builds
Using the Riot Games API to analyse a high-elo KR Lulu one-trick's match history and surface build adaptations that haven't reached mainstream guides yet.
Why do League coaches disagree? Building a knowledge graph to find out
108 coaches, 444 sources, 3,045 pieces of advice — stored as RDF with full provenance. When coaches disagree on how to play a champion, the graph captures both sides.
Is the Kempen region still undervalued?
Analysing 15 years of Belgian government real-estate data to compare apartment price growth in the Kempen region against major cities.
Why this site is a knowledge graph
Most portfolios are flat lists of projects and papers. This one is an RDF knowledge graph rendered as an interactive force-directed layout. Here's why.