Practical .NET and cloud architecture
I write about ASP.NET Core, AWS, APIs, testing, infrastructure, and developer tooling, grounded in problems I encounter while building real systems.
Recent posts
9 minute read
After years of writing C#, there are still language features I wish existed. From simpler generic APIs to richer enums and more expressive types, here’s my personal wishlist, grounded in problems I’ve encountered while writing real code.
10 minute read
An MCP server, a secure tunnel, and a personal access token. What could go wrong? A Halloween horror story about shadow IT and security.
9 minute read
AI doesn’t just make writing code cheaper. It can also make architectural exploration cheaper, letting us investigate questions we previously wouldn’t have had time to pursue.
10 minute read
Managing roughly 25 GitHub repositories was becoming a maintenance problem. Here’s how a growing script turned into Octosmith, a declarative tool for aligning repository configuration without requiring uniformity.
6 minute read
Early-career developers can easily mistake short-term productivity for progress. Growing into a senior also requires context, relationships, judgment, and exposure to how experienced engineers think.
8 minute read
AutoFixture composes the test context. Bogus makes generated data easier to describe.
12 minute read
Contract-first API design is less about writing YAML first and more about
making a shared boundary explicit before implementation decisions harden.
This post looks at why that matters when one service is consumed by several
independently...
11 minute read
AI helped me publish far more frequently by removing friction from how I develop and refine ideas, while keeping the filters, structure, and review that determine whether a post is worth publishing.
10 minute read
A unit test should show what makes its scenario special. AutoFixture can provide a valid context by default so the Arrange phase only needs to describe the difference.
5 minute read
Keep Refit clients focused by responsibility while exposing one convenient dependency to the rest of the application.