Improve Your .NET
& Software Architecture

Join 70,000+ subscribers accelerating their skills every week

One practical tip every Saturday

.NET best practices and actionable advice

Software Architecture deep dives and fresh ideas

Profile picture
Profile picture
Profile picture
Profile picture
Profile picture
Profile picture
Profile picture
Profile picture

Join thousands of software engineers

Previous issues of The .NET Weekly

The 5 Most Common REST API Design Mistakes (and How to Avoid Them)

August 09, 2025

Five REST API design mistakes I see all the time, with practical fixes. Use consistent resource naming, evolve contracts instead of bumping versions, ...

How to Keep Your Data Boundaries Intact in a Modular Monolith

August 02, 2025

Want real boundaries in your modular monolith? This article shows how to enforce them at the database level using Postgres schemas, roles, and EF Core...

Named Query Filters in EF 10 (multiple query filters per entity)

July 26, 2025

EF 10 introduces named query filters, allowing multiple filters on a single entity and letting you selectively disable specific filters without turnin...

PDF Reporting in .NET With HTML Templates and PuppeteerSharp (and it's free)

July 19, 2025

Generate PDF reports in .NET using HTML templates and a headless browser. We'll explore Handlebars.NET and PuppeteerSharp, compare alternatives, and a...

Global Error Handling in ASP.NET Core: From Middleware to Modern Handlers

July 12, 2025

Learn How to handle errors globally in ASP.NET Core using middleware, IProblemDetailsService, and the new IExceptionHandler in .NET 8. This week's iss...

Using .NET Aspire With the Docker Publisher

July 05, 2025

A practical walkthrough of using .NET Aspire's Docker publisher to generate Docker Compose files from C# code. Learn how to set up an API with Postgre...

Testcontainers Best Practices for .NET Integration Testing

June 28, 2025

Integration tests shouldn't rely on external infrastructure—but they also shouldn't mock everything away. In this post, we look at how to use Testcont...

Monitoring .NET Applications with OpenTelemetry and Grafana

June 21, 2025

Instrumenting your .NET apps with OpenTelemetry is easy. But what about actually seeing those metrics and traces in action? Here's how to stream obser...

Run C# Scripts With dotnet run app.cs (No Project Files Needed)

June 14, 2025

With .NET 10, you can now run C# files directly. No project files, no Main method, just code. In this issue, I'll show you how to use the new `dotnet ...

Debunking the "Filter Early, JOIN Later" SQL Performance Myth

June 07, 2025

That viral SQL performance tip about filtering before joining? It is complete nonsense. Here is why query optimizers make it irrelevant.

...