11 Aug 2026
While planning to drop .NET 8 from a global tool I hit a question I could not answer from memory, so I tested it. A net8.0 tool on a machine with only the .NET 10 runtime does not start. One property in the csproj fixes it, and global.json, the thing I assumed would help, turns out to be irrelevant.
Continue Reading
06 Aug 2026
My GA4 reports happily showed 2023 data while my Explorations refused to look past a few weeks. The cause was a default nobody changes, event data retention set to 2 months. It does not affect standard reports, which is exactly why it goes unnoticed, and it cannot be undone after the fact.
Continue Reading
04 Aug 2026
An OpenRouter email warning me that unused credits expire turned into a 300 line single-file .NET app. Covers .NET 10 file-based apps, streaming chat completions over server-sent events, reading per-token costs back from the API, browsing the live model catalogue by price, why the obvious usage endpoint reports the wrong number, storing the API key in the macOS keychain, and publishing the whole thing as a 5.4 MB native binary.
Continue Reading
03 Aug 2026
A start-to-finish account of building solrevdev.bbx, a .NET global tool for Bitbucket Cloud. Covers the System.CommandLine 2.0 rewrite, feature-slice architecture, API token auth, the four bugs that only show up against a live API, testing with a fake HTTP handler, and a publish workflow that will not push a duplicate version to NuGet.
Continue Reading
14 Nov 2025
Complete tutorial for upgrading .NET global tools to .NET 10 LTS. Learn how to add .NET 10 support while maintaining compatibility with .NET 8 (LTS) and .NET 9 (STS) using multi-targeting. Includes project configuration, dependency management, CI/CD pipeline updates, testing strategies, and real-world migration examples.
Continue Reading