Blog Posts

Featured image for coolinggap.eu: Europe is overheating, its cooling has not caught up

coolinggap.eu: Europe is overheating, its cooling has not caught up

Every heatwave, Europe has the same argument about air conditioning, mostly from memory. I built a site where every number is cited and the build fails if a source is missing. The numbers are worse than I expected.

Featured image for Luxembourg MCP: public data, ready for agents

Luxembourg MCP: public data, ready for agents

One keyless MCP endpoint over 18 Luxembourg public data systems: laws, statistics, live parking, air quality, parliament, and more. 27 tools, no API keys, every result traced to its official source.

Featured image for Pulsar: I turned this blog into an open-source Astro theme

Pulsar: I turned this blog into an open-source Astro theme

The theme powering this site is now a standalone open-source project: flash-free dark mode, Shiki dual-theme highlighting, RSS, tag pages, and one config file to personalize it all.

Featured image for I built a World Cup prediction machine (and bet real money on it)

I built a World Cup prediction machine (and bet real money on it)

Two days before the 2026 World Cup, I built an open-source football prediction model, wired it to a prediction market, and locked my bracket in public. Here is the story.

Featured image for How to Use Namewise to Organize Your Files with AI

How to Use Namewise to Organize Your Files with AI

A practical guide to using namewise, an AI-powered CLI tool that automatically renames files based on their content

Featured image for ASP.NET Core Interview Question: What is startup class?

ASP.NET Core Interview Question: What is startup class?

At the heart of every ASP.NET lies the startup class

Featured image for Using this keyword in fat arrow functions

Using this keyword in fat arrow functions

The diffrence between using this keyword in javascript and typescript with fat arrow functions.