Publishing Bi-Weekly · ASP.NET Core · Design Patterns · Architecture · 20 yrs C#/.NET · Jacksonville, FL · appliedcsharp.com
Professional Development Patterns

Write .NET code that scales.

20 years of C#/.NET in production — world-class healthcare companies, national-scale real estate platforms, high-volume microservices. The patterns here are the ones that actually held up. No toy examples. Just what works at scale.

Michael O'Hara
Michael O'Hara
Senior Engineering Leader · 20 yrs C#/.NET

Shipping production C#/.NET — from world-class healthcare companies to national-scale real estate platforms. Sharing what I wish someone had shown me earlier.

C# / .NET ASP.NET · Web API AI-Accelerated Development
About Michael →
// 01 Latest Posts View all ↓
01
POST 01 · PUBLISHED
Live Dependency Injection

Dependency Injection in ASP.NET Core — Stop Using new

Learn why experienced C# developers avoid using new in their constructors and how dependency injection makes your code testable, flexible, and professional. If your controller creates its own dependencies, your tests must too — including real database connections. A test that should take 50ms now takes 2 seconds and fails if the database is offline.

04
POST 04 · PUBLISHED
Live WebAPI

Building Professional WebAPI Controllers

The Professor could build a radio from a coconut, but even he knew a bloated controller is an island unto itself — stranded, untestable, and unreachable by the rescue ship of clean architecture.

05
POST 05 · PUBLISHED
Live Resiliency

When the CRUD Hits the Fan: Building Resilient WebAPI Controllers

Your controller passed every code review. Then Black Friday hit, the payment API went down, and your perfect controller took the entire platform with it. Resilience isn't a feature — it's the difference between degraded and dead.

06
POST 06 · PUBLISHED
Live Exception Handling

Exception Handling That Survives Production

The Skipper's exception handling strategy was simple: when something goes wrong, throw it overboard and hope for the best. Your production API doesn't get three seasons to figure it out.

07
POST 07 · PUBLISHED
Live Testing

Unit Testing with NSubstitute — Tests That Survive Refactoring

The Professor could build a radio from a coconut, but his tests checked which coconut was used instead of whether the radio worked. Your test suite makes the same mistake — and 47 tests break every time you refactor.

08
POST 08 · PUBLISHED
Live Async

Async/Await — Don't Block Your Threads

Gilligan called .Result on the Professor's async radio and blocked the entire island. Your API does the same thing — and the thread pool exhaustion only shows up when production traffic hits.

// 02 The Series
01 Dependency Injection in ASP.NET Core — Stop Using new Backend Live 12 min 02 Configuration Management That Won't Get You Fired Backend Live 8 min 03 Be the Architect, Not the Typist AI Live 15 min 04 Building Professional WebAPI Controllers Backend Live 10 min 05 When the CRUD Hits the Fan: Building Resilient WebAPI Controllers Backend Live 14 min 06 Exception Handling That Survives Production Backend Live 15 min 07 Unit Testing with NSubstitute — Tests That Survive Refactoring Testing Live 14 min 08 Async/Await — Don't Block Your Threads Backend Live 16 min
Coming Soon
09 LINQ Pitfalls — Multiple Enumeration and Deferred Execution Data Soon ~10 min 10 Entity Framework Core Best Practices — Don't Let Your ORM Bite You Data Soon ~12 min 11 API Versioning — How to Handle Breaking Changes Backend Planned ~9 min 12 Logging Done Right — What to Log, What to Skip Production Soon ~8 min
Planned
13 Repository Pattern — Useful Abstraction or Just Extra Code? Data Planned ~10 min 14 EF Core Migrations in Production — Without Downtime Data Planned ~11 min 15 SOLID Principles — Applied to Real C# Code Backend Planned ~14 min 16 Middleware in ASP.NET Core — Building Your Own Pipeline Backend Planned ~10 min 17 The Decorator Pattern — Adding Behaviour Without Inheritance Backend Planned ~9 min 18 Feature Flags — Shipping Without Fear Production Planned ~8 min 19 Clean Architecture in .NET — Structure That Survives Growth Backend Planned ~15 min 20 Integration Testing in ASP.NET Core — The Right Way Testing Planned ~12 min 21 Test Doubles — Mocks, Stubs, Fakes and When to Use Each Testing Planned ~10 min 22 Code Coverage — What It Measures and What It Misses Testing Planned ~8 min 23+ Mentoring, code reviews, career growth, CQRS, event sourcing, performance... More Coming