Projects

Technical write-ups and side projects.

Losing matters more than winning Scoring with Scorito Lose on purpose on Scorito, with realistic scores via a Poisson model you flip upside down.

On Scorito you fill in World Cup pools. This project turns that around: lose on purpose, but with scorelines that still look realistic — otherwise it’s obvious you’re wrong.

The idea is simple. First I predict who would win according to statistics: a Poisson model based on FIFA rankings calculates the most likely scoreline. Then I flip it. If the model says 2-1, I predict 1-2. The goal count stays believable; only the winner is wrong on purpose.

Technically I fetch matches, teams, and players via Scorito’s APIs — no scraping, just finding the JSON endpoints through DevTools and wiring them up. Then a pipeline runs: convert rankings to expected goals, pick the best non-draw score, flip it, export to CSV for entry. Champion and top scorers follow the same philosophy: underdogs and anti-favourites.

Much of the boilerplate — CLI, client, tests, project structure — was built with AI. Handy, but it only works if you understand what’s happening yourself. Poisson distributions aren’t magic, and you don’t paste an endpoint from the Network tab blindly without knowing which ID belongs to which tournament. Statistics and APIs — you can’t AI your way around those.

GitHub: ScoritoVerliezen — Losing matters more than winning

This site as a project Hugo, Azure Static Web Apps, and a wall of failed GitHub Actions runs — the portfolio as a meta-project.

This portfolio is a bit of a project in itself — just meta enough to deserve its own section.

The idea didn’t come from nowhere. A friend had already written up the approach on his blog:

DataDragons: Host your own website with Hugo, Github and Azure

That’s the serious version: how to put something affordable and fast online with Azure and a static site, without standing up a full heavyweight web stack.

I thought: good plan — but as the ultimate lazy move I didn’t follow it step by step by hand. Nope. I vibe-coded: editor open, AI in the loop, and my own fingers now and then for comic relief (and the commits that still have to come from somewhere).

What came out of it: Hugo, a theme that really wants to live as a git submodule, and GitHub Actions that sometimes whine louder than a kid without ice cream — think Docker, a container registry that suddenly says no, and an inbox that looked roughly like this:

Screenshot: consecutive failed workflow runs (Hugo and Azure Static Web Apps CI/CD) on main

In the end Azure Static Web Apps sighed and said: “okay, here’s your site.”

Want to try it yourself? Link to heading

If you want to do something similar without wading through all my in-jokes, there’s a generic guide: checklist-style, free to copy, adapt, and pass on.

Generic guide in Markdown

If you share it: keep the DataDragons link above — that’s where the real thinking lives; I mostly documented the “what if we do it the lazy way?” experiment.