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
27 Oct 2025
Complete tutorial on creating ytx, a .NET global tool for extracting YouTube video titles, descriptions, and transcripts as JSON. Covers YoutubeExplode library, caption selection logic, JSON serialization, NuGet packaging, and automated CI/CD with GitHub Actions.
Continue Reading
15 Sep 2025
Learn how I built a fast web-based winget search tool to quickly find Windows Package Manager packages and generate installation commands instantly
Continue Reading