Code is easier when the why sticks.

In the archive48 articles
Main ingredients.NET + Windows

Practical walkthroughs, runnable examples, and the tradeoffs that never fit in the happy path docs.

Fresh off the workbench.

Newest first. Pick the problem in front of you, or wander around until something useful falls out.

aspnetcore
ARTICLE
Newest / 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 the article →
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
Article / csharp

Smarter Error Handling in C#: Try, Result and Fewer Tears

Exceptions are powerful for diagnostics but expensive in tight loops and high traffic code. This post explains what the runtime does when you throw, why that cost adds up, and when exceptions are the right tool. You will see small, runnable C# examples that model expected failures with Try, Result and tuples, plus a minimal API that returns HTTP results without throwing. We will also cover a micro tip for library authors to keep fast paths fast.

5 min0 likes
Article / aspnetcore

Stop Breaking Clocks in ASP.NET Core with UTC and TimeZoneInfo

Time bugs are sneaky and expensive, but they do not have to be. This post shows a practical UTC first approach for ASP.NET Core using DateTimeOffset and TimeZoneInfo. You will learn how to design your data model, return UTC from APIs, convert to a user’s local time, and avoid DST traps without hard coded offsets. We will also wrap conversions in a clean service and make time testable with TimeProvider.

4 min0 likes
Article / aspnetcore

From Layers to Slices: How I Ship Faster ASP.NET Core APIs

Your API should feel like a collection of small, focused stories, not a scavenger hunt through Services and Interfaces. This tutorial shows how to build a feature first Vertical Slice Architecture in ASP.NET Core using Minimal APIs, MediatR, and FluentValidation. You will see how commands and queries stay tidy, how validation runs before handlers, and how the folder structure reduces friction as your API count grows.

4 min0 likes
Article / csharp

Stop Parallelizing Everything: A Practical Guide to Parallel.ForEach

Parallel.ForEach feels like a free speed boost, until it slows your app to a crawl. This post explains when parallel loops shine, when they backfire, and how to avoid the classic traps. You will see small runnable C# examples for CPU bound work, shared state pitfalls, and I/O scenarios. We will also cover safer async alternatives, thread local aggregation, and simple tuning with ParallelOptions. By the end, you will know how to pick the right approach and measure the impact with confidence.

4 min0 likes
Article / data

EF Core Audit Logging with Interceptors that do not Clutter Your DbContext

Learn how to build a clean, production ready audit trail in EF Core that records who changed what and when without stuffing logic into your DbContext. We walk through a practical SaveChanges interceptor, compare it to overriding SaveChanges, and review trusted NuGet options. The post closes with performance and security practices that keep your database fast and your compliance officer calm.

6 min0 likes
Article / aspnetcore

How .NET 10 speeds up API validation without code changes

Model validation has been a reliable but costly part of every ASP.NET Core request. In .NET 10 and C# 14, validation gets faster through precomputed metadata, typed execution, and fewer allocations. This post explains what changed under the hood, shows small runnable examples, and includes a micro-benchmark you can adapt. You will also see how to write lean custom validators and pair validation with faster JSON parsing.

4 min0 likes
Article / csharp

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.

5 min0 likes
Article / csharp

Stop Guessing Types in C#: typeof, GetType and IsAssignableFrom Explained

Let's break down the real jobs of typeof, object.GetType and Type.IsAssignableFrom with small, runnable examples and a few nerdy references for fun.

4 min0 likes
Article / data

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.

4 min1 like
Article / csharp

C# 14's Unbound Generics in nameof Explained

C# 14 adds support for unbound generic types in nameof, so you can write nameof(Logger<>) and nameof(Dictionary<,>) without supplying throwaway type arguments. This post explains the syntax, shows practical examples for logs, exceptions, and attributes, and clarifies how nameof differs from typeof in this context.

3 min0 likes
Article / data

Cleaner Joins in EF Core 10 with LeftJoin and RightJoin

EF Core 10 introduces LeftJoin and RightJoin to make outer joins readable and intuitive. This article shows how these methods translate to SQL, how to migrate from GroupJoin and DefaultIfEmpty, and how to handle nulls and filters without breaking semantics.

5 min0 likes
Article / aspnetcore

Choosing Between Controllers and Minimal API for .NET APIs

.NET now offers several methods for creating APIs. Let's cover the pros & cons of building with Controllers, Minimal API, and more.

6 min0 likes
Article / csharp

Alias any Type with C# 12

With C# 12, you can now alias type, including tuples, array, pointer, and unsafe types.

2 min0 likes
Article / csharp

Using Primary Constructors in C# 12 & .NET 8

C# 12 provides a new way to use constructors that can potentially save you time, but there are several things to watch out for.

4 min0 likes
Article / dev-life

Integrating a Notion Database with an Astro Site

My entire life is planned & documented in Notion. How can I pull that content into my Astro site so I don't have to duplicate it in content collections?

7 min0 likes
Article / cloud

How to Email Phone Call Transcripts with Twilio Studio and Pipedream

Learn how to build a workflow that allows people to call & leave a message that will automatically be transcribed and emailed, using Twilio Studio, Pipedream, and Deepgram.

7 min0 likes
Article / copilot-ai

Try Whisper: OpenAI's Speech Recognition Model in 1 Minute

Deepgram has made testing OpenAI's new open-sourced Whisper speech recognition model easy as copy and paste.

10 min0 likes
Article / cloud

Creating Short URLs with Netlify Functions and FaunaDb

Personalized short URLs are cool. So I decided to see if I could use a serverless function to do it for me.

4 min0 likes
Article / dev-life

Making a Man: Lessons Learned from My Single Mother

Remembering the integrity and tenacity my mom displayed in her life and the lessons she worked to instill in me.

9 min0 likes
Article / cloud

Updating Notion Cover Images with Pipedream and JavaScript

Using JavaScript and Pipedream to automate changing my Notion cover image each night.

5 min0 likes
Article / dev-life

Building 404 Pages That Bring Joy

How we transformed the bad experience of landing on a 404 page into an enjoyable experience with a game.

7 min0 likes
Article / csharp

Building a Cross Platform NuGet Package

Learning to build a NuGet package by building a .NET SDK for the Deepgram API, while ensuring it's compatible with as many versions of the .NET Framework and as many platforms as possible.

5 min0 likes
Article / dev-life

Building a Discord Bot to Improve Inclusive Language

Building a Discord bot sounds like a fun and I couldn't think of a better first project than trying to make it a safer space for everyone.

12 min0 likes
Article / dev-life

Using Polywork to Break My Unconscious Biases

Polywork is an interesting new LinkedIn competitor. After joining, I wanted to ensure that my "bubble" included a diverse set of people. Here's how I did it.

3 min0 likes
Article / vscode

10 VS Code Extensions You Need Today

Let's talk about ten Visual Studio Code extensions that every developer, regardless of language or platform, can benefit from using today.

5 min0 likes
Article / blazor

Choosing Between Blazor Server or WebAssembly

Building for the web using a language you're already comfortable with? Sounds like a great idea as long as it's easy to use and performs well for clients.

6 min0 likes
Article / dev-life

Building my Ultimate Rustic Developers Desk

I've always wanted to build a desk that fits me. So welcome to my journey to build my ultimate developer desk.

9 min0 likes
Article / dev-life

Live-Coding to Learn, Share and Encourage

A reflection on one year of coding live on Twitch to learn new technologies, share what I know, and encourage others to grow personally & professionally.

5 min0 likes
Article / dev-life

Using Apollo to Query GraphQL from Node.js

It's a common scenario—you built a quick prototype, it worked great, and now management wants it live yesterday. GraphQL can help get it out the door.

7 min0 likes
Article / cloud

I See What You're Saying: Sentiment Analysis With OpenTok and Azure Face API

Building a multi-party video conference that allows us to analyze the sentiment of each participant based on their facial expression.

11 min0 likes
Article / aspnetcore

Using AutoMapper with ASP.NET Core 3

AutoMappers usage via dependency injection changed in ASP.NET Core 3. This post shows how to use the new implementation.

3 min0 likes
Article / aspnetcore

Adding HATEOAS to an ASP.NET Core API

RESTful APIs provide a great way to make our APIs easier for users to consume. How can we make discovering endpoints and capabilities easier?

6 min0 likes
Article / cloud

Using Azure File Storage as Container Volume Mounts in App Services

How to mount Azure File Storage as a persistent volume in your multi-container App Services.

3 min0 likes
Article / cloud

Environment Variables in Azure Functions with Key Vault

Using environment variables from Azure Key Vault is a little different for Functions than Web Applications. Here's how to get it working.

2 min0 likes
Article / cloud

Using SQL Server in Docker containers for basic tasks

Don't want to install SQL instances on your personal or work machine? No problem, because you no longer need to. Let's learn how to spin up a Docker container and access it with SQL Management Studio.

4 min0 likes
Article / github

Using a Code of Conduct and Contributing Guidelines in Public Repositories

Want people to contribute to your repositories? Then you need to make sure they know they're welcome and provide them with a clear path to get started.

3 min0 likes
Article / windows

Adding command aliases to Powershell

How much time could you save by shortening common commands and parameters using PowerShell aliases? The answer is a lot.

2 min0 likes
Article / dev-life

Current Twitch live-coding stream setup

I've started working a lot more at trying to get my setup just right so I could live code some personal projects and hopefully help others learn new technologies.

4 min0 likes
Article / cloud

Communication between containers using docker compose in Windows

In production, our application on a Pi communicates with a Restful API that lives at our clients main office. However, while debugging we need to run them side-by-side. So, docker-compose to the rescue (I think.)

2 min0 likes
Article / dev-life

Setting up Raspberry Pi for use in kiosk mode with Chromium

Recently one of our clients approached us to develop an application that would run on a Raspberry Pi to use in kiosk's throughout their facilities. We ended up writing a web app in Angular that they would run via Chromium.

2 min0 likes
Article / cloud

Automating release notes with GitHub, AppVeyor and Octopus Deploy

With multiple clients, projects, deadlines, release schedules running at once, it's hard to keep up with what features are being released in a build.

3 min0 likes
Article / dev-life

Girls Who Code

These days, the topic of women in technology is hot. As a dad of two daughters, I often think about what their futures hold. One thing I know, they belong here as much as any man.

3 min0 likes
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.