One 11-ball and several 8-balls on a pool table

When 11 Breaks 8

.NET 8 and .NET 9 reached the end of support today with the release of .NET 11 as the STS, joining .NET 10 as the LTS. If you’re still on 8 or 9, you no longer have a choice about moving, only a choice of where you land. Some of what hurt you on 8 gets fixed in 11. Some of what worked fine on 8 quietly stops working the way you expect, and that second kind is worth more of your attention than the changelog gives it: a few of those changes break the build and tell you immediately, a few crash on startup, and a few compile, pass your tests, and just behave differently. That last group is the one that costs you money, because nothing tells you it happened. ...

November 10, 2026 · 15 min
Cloud city with data connections

Async/Await and What It Actually Costs You in the Cloud

TL;DR for leaders: on the same 1 vCPU / 2GB container, an ASP.NET Core endpoint written with correct async/await sustained roughly 9 times the request rate of an identical endpoint that blocks on the same call (.GetAwaiter().GetResult() instead of await), before the bad version collapsed entirely under load. At 2,000 requests/second, that’s the difference between 1 container and 9, or roughly $12/month versus $112/month on Azure App Service for the compute alone, scaling worse the more traffic you add. The code difference between the good and bad versions is a single line. This is a measured result from a benchmark you can run yourself, not a vendor estimate; see “Caveats” below for what it does and doesn’t tell you about your own system. ...

October 27, 2026 · 11 min
Colorful retro alarm clocks lined up in a row

ASP.NET Core Dropped Its Own Clock Wrapper. You Should Too.

.NET 11 is currently in Release Candidate 1 (shipped September 8, 2026), with general availability expected at .NET Conf in November 2026. Everything below was built and tested against the .NET 11.0.100-rc.1.26425.128 SDK, running inside the official mcr.microsoft.com/dotnet/sdk:11.0.100-rc.1 Docker image. Some of this could still change before GA; see the companion code for the runnable version of every test referenced here. ...

October 22, 2026 · 13 min
A bonsai tree in a ceramic pot, its right side pruned into sharp, right-angled geometric branches

Upgrading to EF Core 11: Prettier SQL and a Few Ugly Changes

EF Core 11 is still in development as of this writing (based on the Microsoft Learn docs for EF Core 11, last updated August 2026). Some of what’s below could change before release. I tested against the mcr.microsoft.com/dotnet/nightly/sdk:11.0-preview image (resolving to SDK 11.0.100-rc.1.26411.119) and Microsoft.EntityFrameworkCore.SqlServer 11.0.0-preview.6.26359.118; see the companion code for the runnable version of every SQL example below. EF Core 11 ships alongside .NET 11, and it requires the .NET 11 SDK to build and the .NET 11 runtime to run; there’s no running it on .NET 10 or earlier, and definitely not on .NET Framework. ...

October 20, 2026 · 18 min
A developer working alone at a desk late at night

The Case You Forgot to Handle: How C# 15 Unions Fix Your Switch

Somewhere in your codebase there is a switch with a _ => arm that throws for anything it doesn’t recognize, because the type it’s switching on never told the compiler what “everything” meant. This is a story about that arm, and the C# 15 feature that retires it. 2:03 a.m. The pager goes off. Finance has noticed that bank transfers, the thing your team shipped last sprint, are being processed for exactly zero dollars in fees. Not a discount. Not a promotion. Just free, quietly, for every customer who picked that option. ...

October 15, 2026 · 6 min
Bridge

Spanning the Gap with an Array of Options: C# 14's Implicit Span Conversions

This post answers two separate questions. First: why reach for Span<T> and ReadOnlySpan<T> at all? They’ve been performance powerhouses since C# 7.2 / .NET Core 2.1: zero-allocation, type-safe views over memory that show up all over modern .NET’s hot paths. Second: what does C# 14 change about getting into one? Shipping with .NET 10, it makes spans first-class language citizens, with new implicit conversions that cut ceremony and let the compiler infer types in places it used to give up. That second change is about ergonomics, not speed; it doesn’t make Span<T> any faster than it already was, it just makes it easier to reach for. ...

October 13, 2026 · 14 min
Parrot

Cracking Polly

Introduction Polly is a .NET resilience and transient-fault-handling library. It lets you express strategies like retry, circuit breaker, timeout, rate limiting, hedging, and fallback around any piece of code, so a flaky downstream dependency doesn’t automatically become an outage in your own service. If you used Polly a few years ago and haven’t looked at it since, the library you remember is gone. Polly v8 was a ground-up rewrite, built in collaboration with Microsoft, and it changes both the API and the mental model. This post is a practical, current tour of what Polly looks like today: pipelines instead of policies, the built-in HTTP resilience handlers, hedging, chaos engineering support, and the one thing that’s changed about the license terms that maintainers of paid products should know about. ...

September 9, 2026 · 6 min
Scoops of chocolate ice cream in a bowl

Scoop Over Chocolatey: A Windows Package Manager Transition Guide

Introduction For the last decade, I have been using Chocolatey as my package manager on Windows. I recently needed to install software on a new machine, and decided that now was an ideal time to revisit some popular package managers and perhaps make a switch. One of my favorite benefits of package managers is the ability to install software in a consistent way across a variety of different applications. Having a command line tool with remote repositories of current versions of software makes it easy to keep applications up to date. Finally, it makes them easy to remove in a unified way should they no longer be needed. When setting up a new machine, the ability to have a script that installs most if not all the applications that I will need on that machine using such a tool is also highly beneficial. ...

March 4, 2024 · 20 min
Ball Python

Excel to CSV Using Python Pandas

Introduction Python Pandas is a powerful package used by data scientists to analyze data. My recent use case was far more pedestrian. I had one vendor that was providing a data file in Excel format, and another vendor that needed to consume that data in a completely different schema as a CSV file. As is often the case, the file I was receiving was formed oddly. I’m sure you can relate. The primary problem was that the columns were not all defined. They were unnamed and formatted for some previously defined form, such that the first column might be a person’s name, the second column might be the first line of the address, or a second person’s name. ...

July 26, 2022 · 7 min