Real code. Honest tradeoffs.

Have some fun doing it.

.NET, Windows, developer tools, and mistakes included.

Find your starting point
Michael Jolley, the Bald Bearded Builder Newest thing / Article / aspnetcore Five DI Anti-Patterns Haunting .NET Apps and how to fix Them
4 minRead now →
Michael Jolley Building since 1999 Learning out loud
New here?

Start with these.

One video and one article. They show how I teach, what I care about, and why the answer is usually "it depends."

The numbers have spoken

Most watched.

What developers have watched most across the channel, ranked by real YouTube views.

Every video
Keep these close

Worth reading.

Practical guides I would hand you when the same problem shows up again.

aspnetcore / 5 min

Tame Configuration in ASP.NET Core with IValidateOptions

Silent misconfiguration is sneaky and expensive. Learn how to validate strongly typed settings in .NET using IValidateOptions, add cross property rules, inject services, support named options, and fail fast at startup with ValidateOnStart.

Read it →
data / 4 min

Repository Pattern vs DbContext in Entity Framework Core

Tired of arguing about repositories in EF Core? This practical guide compares direct DbContext, thin repositories, and specification style queries with small, runnable C# examples. Learn when each option shines, what to avoid, and how to keep your code clean without hiding EF Core features.

Read it →
csharp / 5 min

The Traps of Nullable<T> in C#: a Practical Guide with Tiny Examples

Nullable<T> is not a mini reference type and pretending it is will bite you. This guide walks through how nullable value types work at runtime, how boxing really behaves, and what operator lifting does. You will see small, runnable C# snippets that expose common traps and safe patterns. Learn how to handle equality, pattern matching, and generics without surprises.

Read it →
aspnetcore / 4 min

Five DI Anti-Patterns Haunting .NET Apps and how to fix Them

Dependency injection is powerful until small mistakes turn into late night outages. This post walks through five common DI anti patterns in .NET, shows why they fail, and gives compact fixes. Learn lifetime rules, avoid hidden dependencies, and make testing easy.

Read it →
Every article
Pick your problem

Choose a rabbit hole.

Start with the thing you need to fix, understand, or finally stop searching for.

Straight off the workbench

Latest.

Videos and articles together, newest first.

Article / aspnetcore

Five DI Anti-Patterns Haunting .NET Apps and how to fix Them

Dependency injection is powerful until small mistakes turn into late night outages. This post walks through five common DI anti patterns in .NET, shows why they fail, and gives compact fixes. Learn lifetime rules, avoid hidden dependencies, and make testing easy.

4 min0 likes
Article / csharp

Measure Twice Allocate Once: Faster Lists in .NET

Lists grow by reallocating and copying, which adds hidden cost as data scales. This post shows why setting List capacity up front reduces allocations and improves cache behavior. You will see small runnable examples and practical patterns you can drop into production.

4 min1 like
Article / aspnetcore

Tame Configuration in ASP.NET Core with IValidateOptions

Silent misconfiguration is sneaky and expensive. Learn how to validate strongly typed settings in .NET using IValidateOptions, add cross property rules, inject services, support named options, and fail fast at startup with ValidateOnStart.

5 min1 like
Article / csharp

Virtual vs Override vs Partial in C# Explained with Small Runnable Examples

Virtual, override and partial are tiny C# keywords with huge impact on design. This post explains how they work, when to use them, and where bugs appear. Learn the difference between override and new, why sealed override matters, and how partial classes and partial methods keep generated and hand written code happy. Every section comes with short, runnable snippets and real project tips.

4 min1 like
Article / data

EF Core Query Performance Tips for Everyone

EF Core does not make queries fast by default. You do. This guide shows how to cut query time by fetching less with projection, turning on AsNoTracking for reads, avoiding N+1, choosing AsSplitQuery for big includes, paginating, indexing and compiling hot queries. Each concept comes with small runnable C# snippets and clear explanations so you can apply them today without rewriting your app.

4 min0 likes
Article / csharp

Sealed by Default in .NET: when it Shines and when it Bites

Sealed looks like a tiny keyword, but it carries serious weight in modern .NET. This post explains what sealed does at class and member level, why the JIT can make sealed code faster, when you should not seal, and how to keep code testable with interfaces. You will see small, runnable examples and practical patterns that balance performance, clarity, and flexibility.

5 min0 likes
Everything I've made
The .NET Drip

A little .NET in your inbox.

One useful tip, a few links worth your time, and the occasional war story. No inbox flood.

Free to join. Unsubscribe whenever.

Read the archive.