Reducing package supply-chain risk with release-age checks and lockfiles
Configuring a delay before adopting new package versions, keeping repeatable installs with lockfiles, and understanding what these controls can and cannot prevent.
copilot_here: November 2025 Updates - ARM64, .NET 10, Airlock & More
November updates add native ARM64 images, .NET 10, PowerShell Core integration, Airlock network controls, host path mapping, and configurable directory mounts.
Adding implementation plans and snapshots to ADRs
How to add expected implementation touchpoints or a snapshot of the implemented pattern to an Architecture Decision Record, with a caching example.
The Double-Edged Sword of Conveniently Named Exceptions
Choosing a C# exception because its name sounds right is a common anti-pattern. Learn why this leads to confusing logs, unnecessary costs, and better ways to handle errors.
Fail Fast, Save Big: A Smarter CI Testing Strategy
Our CI pipeline was burning through our budget and slowing developers down. The fix wasn't about chasing raw speed, but about finding a better balance by handling failures more intelligently. Here's how we did it.
Securing Your Site: A Practical HSTS Preloading Guide for Cloudflare Users
Learn why HSTS should not be an application concern and follow this practical guide to correctly configure it at the edge with Cloudflare, getting your site onto the HSTS preload list for maximum security.
Architecting C# Domain Models for Human and AI Collaboration
I went down a rabbit hole of extreme encapsulation in C# only to find a more pragmatic path. Discover the journey from a complex domain model to a simpler one that provides powerful guardrails for AI development tools like GitHub Copilot.
Keep Your Domain Clean: Deserializing with Private Setters in C#
Ever created a perfectly encapsulated C# domain object with private setters, only to find System.Text.Json can't deserialize data back into it? You don't have to expose your setters! Let's explore a clean solution.
The Deceptive Simplicity of Polymorphism in .NET APIs
You add one more state to your polymorphic API response, and suddenly everything breaks. This is the story of a subtle bug, a frustrating debugging session, and the one line of code that fixed it all.
Slaying the EF Core Cartesian Explosion with AsSplitQuery()
You built a rich domain model with aggregates and child collections, but now your queries are painfully slow. Learn how a one-line change in Entity Framework Core, .AsSplitQuery(), can fix the dreaded "Cartesian Explosion" and make your app fly.
EF Core's Hidden Identity Crisis: The Owned Entity Cloning Problem
Your integration tests all pass, but your live app throws a cryptic EF Core error about modifying a key that doesn't even exist. Let's dive into the fascinating reason why and how to fix it.
Solving the Parallels Networking Puzzle: Accessing Mac localhost from a Windows VM
Ever tried to access a web app running on your Mac from a Windows VM in Parallels and been met with connection errors? You are not alone. Follow this troubleshooting guide to solve the mystery of network binding, firewalls, and the real culprit hiding in your hosts file.
Deploying .NET templates using GitHub Actions
Once you've created a .NET template, you should automate the updates of the package using GitHub actions to remove the effort required in publishing updates
Visual Studio Item Templates vs .NET Templates in 2023
Long ago, one of the ways we'd get some reuse out of standard and utility files would be by exporting item templates. Since the .NET CLI rolled around, the approach has been different and much easier.
Blazor Server events not triggering when hosted behind Cloudflare
Are you hosting your Blazor Server app behind Cloudflare? Are you having issues with events not triggering? Check your configuration 😉.