Hi there 👋

Welcome to my technical blog! My name is Abhinaw, and I’m a software developer with over 11 years of experience in the IT industry. I created this space to share practical insights, solutions to common programming challenges, and deep dives into the technologies I’m passionate about. My articles focus primarily on .NET, JavaScript, cloud technologies, and software development best practices. Whether you’re a beginner or a seasoned developer, I hope you find valuable content that helps solve real-world problems. Feel free to explore my posts and reach out if you have any questions or suggestions for future topics! Want coding tips and deep dives sent directly to your inbox? Subscribe here.

How Dependency Inversion Makes Your C# Codebase More Testable and Maintainable?

TL;DR DIP means depend on abstractions, not concrete implementations. Use interfaces and dependency injection to decouple business logic from details. DIP improves testability, flexibility, and maintainability in C# code. Avoid leaky abstractions, unnecessary interfaces, and service locator anti-patterns. Use C# 12 primary constructors and .NET 8 DI features for clean, modern architecture. The Dependency Inversion Principle helps you turn rigid, tightly-coupled code into flexible, testable systems. Rather than depending on concrete implementations, your high-level modules rely on abstractions. This goes beyond dependency injection, it’s about changing the direction of control flow. ...

July 25, 2025 · Last modified: July 29, 2025 · 13 min · 2571 words

How to Test ASP.NET Core Middleware: Unit, Integration, and Mocks

This guide covers how to effectively test ASP.NET Core middleware using unit tests, integration tests, and mocks. It includes examples of common middleware patterns, how to handle dependencies, and best practices for ensuring your middleware behaves correctly in production.

July 20, 2025 · 13 min · 2463 words

Why Forcing Clients to Implement Unused Methods Violates ISP?

TL;DR ISP means interfaces should be small and focused on client needs. Avoid “God” interfaces that force clients to implement unused methods. Split large interfaces into cohesive, role-based interfaces. Use C# 12 features like default interface methods for flexibility. ISP improves maintainability, testability, and reduces coupling. Refactor fat interfaces by extracting related methods into separate interfaces. Interface Segregation Principle stops you from creating huge interfaces that force clients to implement methods they’ll never use. When interfaces get too big, your implementations end up filled with empty methods and unnecessary dependencies. ...

July 18, 2025 · Last modified: July 25, 2025 · 12 min · 2249 words

Performance Killers in EF Core: Top 11 Common Mistakes and How to Fix Them

A comprehensive guide to diagnosing and fixing common EF Core performance issues, with practical code examples and real-world performance improvements.

July 17, 2025 · 22 min · 4292 words

Prefer Interfaces Over Abstract Classes in C#: Build Flexible, Testable, and Maintainable Code

Learn why experienced C# developers choose interfaces over abstract classes 95% of the time. Real-world examples, team benefits, and clean architecture tips.

July 16, 2025 · 10 min · 1971 words

IEquatable in C#: Why Every .NET Developer Should Master Custom Equality

Master IEquatable in C# to optimize equality checks, improve collection performance, and eliminate boxing overhead. Essential for value types and collections.

July 16, 2025 · 9 min · 1644 words

Polymorphism in C#: How Template Method, Strategy, and Visitor Patterns Make Your Code Flexible

Polymorphism isn’t just a language feature, it’s a way to build systems that are easier to extend, change, and maintain. Learn how polymorphism powers design patterns like Template Method, Strategy, and Visitor in C#.

July 16, 2025 · 5 min · 947 words

C# Default Interface Methods: Future-Proof and Backward-Compatible APIs

A practical guide to C# Default Interface Methods: how to use them, when to avoid them, and how they help you build future-proof APIs.

July 15, 2025 · 11 min · 2111 words

The Rectangle-Square Problem: What It Teaches Us About Liskov Substitution Principle (LSP)

TL;DR LSP means you can use subtype objects anywhere you use base type objects without breaking code. Square/Rectangle inheritance that breaks existing code? That’s a classic LSP problem. Watch for subclasses that throw unexpected exceptions or silently change behavior. When behaviors are too different, reach for composition instead of inheritance. Make interfaces that clearly show what objects can and can’t do to avoid surprises. LSP violations often sneak past unit tests and show up as runtime bugs. The Liskov Substitution Principle isn’t just academic theory - it helps you avoid those “it worked yesterday” bugs that show up in production. When a subclass doesn’t behave like its parent promises, your code breaks in ways that unit tests often miss. ...

July 14, 2025 · Last modified: July 25, 2025 · 12 min · 2299 words

Dependency Inversion Principle in C#: Flexible Code with ASP.NET Core DI

Discover how the Dependency Inversion Principle makes your C# code flexible and testable. Learn to use ASP.NET Core DI to depend on abstractions, swap implementations, and build maintainable, scalable applications with real-world examples.

July 13, 2025 · 3 min · 484 words
×