Latest deep dives
Deep dives on .NET, system design, architecture and databases. 16 practical articles.
AI writes the code. You still need to be the engineer.
What is left of your job when AI writes half the code, and how to keep getting better at it.
.NET MAUI vs Flutter vs React Native: An honest comparison
No winners: how MAUI, Flutter and React Native render UI, what is known about their performance, and how to pick the one that fits your team.
3 ways to create middleware in .NET: inline, convention-based, and IMiddleware
Inline delegates, convention-based classes, and IMiddleware: how each one works, the scoped-service pitfall, and when to use which.
Resource expansion in ASP.NET Core: the expand query parameter
One request instead of many: how to build an ?expand= parameter in ASP.NET Core, and whether it's faster.
JSONB in PostgreSQL: querying, indexing, and EF Core mapping
How PostgreSQL stores jsonb, what it costs, how EF Core 10 maps to it, and which index actually helps: GIN, jsonb_path_ops, or an expression index.
Vertical slice architecture: shallow vs deep folder organization
There is no universal folder structure for vertical slice architecture. Start shallow, add depth when a slice earns it, and organize around use cases.
Inside dotnet/extensions: resilience, telemetry, and AI for .NET services
A tour of dotnet/extensions' nine libraries: resilience pipelines, IChatClient, LogProperties, redaction, contextual options, and testing fakes.
Configuration in .NET: Options pattern, validation, reloading, and secrets
How the options pattern builds on IConfiguration: DI registration, three lifetimes, validation, and secrets
Configuration in .NET: sources, providers & precedence
How .NET layers appsettings.json, environment variables, command-line args, and custom sources into one IConfiguration, then binds it to typed options.
.NET 10 and C# 14: The features I'd actually use in production
The C# 14 and .NET 10 features that earn their place in production: field, null-conditional assignment, extension members, Minimal API validation, and SSE.
ProblemDetails in .NET: A practical guide to standardized API errors
Return consistent API errors in .NET with ProblemDetails: the RFC 9457 fields, Results.Problem, ValidationProblemDetails, and IExceptionHandler.
Filters in .NET: Complete guide to authorization, resource, action, exception, and result filters
How .NET filters intercept requests and responses to handle authorization, validation, error handling, and logging without bloating your controllers.
Dapper Plus or SqlBulkCopy? Pros, cons, and hidden limitations for high-performance .NET data ingestion
Raw TDS streaming vs orchestrated MERGE: an architectural and performance comparison, plus the limitations that are easy to miss.
Where vs. WhereBulkContains: What's the real difference in EF Core?
Compare EF Core's version-dependent Contains translations with a temporary-table JOIN strategy, including tradeoffs for large and composite key sets.
Introduction to Entity Framework Extensions library
SaveChanges() generates one SQL statement per entity, a bottleneck at scale. EF Extensions adds true bulk operations to your existing DbContext.
Why every .NET developer should know about Dapper Plus
Dapper is famous for fast reads, but bulk writes are its weak spot. Dapper Plus fills that gap with one-line bulk insert, update, delete, merge and synchronize.
Try a different search term or topic.