May 14, 2026
Building useful software is the best way to learn. Building useful software for a problem you actually have is even better.
I race in Assetto Corsa …
May 13, 2026
Side projects are a good place to do things properly. Not because the project demands it, but because you want the practice.
My ACC dashboard project — …
May 12, 2026
Remote-controlling a simulator with gRPC and Protobuf I have an Assetto Corsa Competizione (ACC) simulator that replays recorded UDP traffic. It is a useful …
May 11, 2026
Anatomy of a Search Endpoint: Filter, Sort, Paginate, HATEOAS A walk through GET /api/1/sessions in the Laptime Insights server — from the Ktor route, down …
May 3, 2026
The Strategic Case for Programmable Sample Data I. The Core Thesis Manual database entry is a bottleneck that introduces inconsistency. The most effective way …
May 1, 2026
Completing your GitHub Profile While I’m looking for a job I thought I’d find out how I could improve my Github profile. This was the advice I …
April 30, 2026
Stop Serving PNG: Switch to WebP and Cut Your Image Sizes by 80% WebP is the modern image format your website should already be using. Google’s cwebp tool …
April 27, 2026
We all love Markdown. It’s the lingua franca of the modern developer—the default choice for READMEs, GitHub comments, and even this blog. But recently, I …
April 21, 2026
Few things are as frustrating during a code review as seeing a 50-line diff, only to realize that 45 of those lines are just re-ordered imports or adjusted …
April 20, 2026
The more I use AI to assist with coding, the more I realize that context is the primary currency of effective assistance. The quality of the output is directly …