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.
A minimal diagram showing features grouped by vertical slices, with entire folders being removed cleanly to illustrate delete-ability and localized change.

Delete-Driven Design: How to Write Code You Can Remove

Most design principles focus on extensibility and reuse. Delete-Driven Design flips the question: how easy is it to remove code safely? This post explains why delete-ability is the ultimate test of boundaries, abstractions, and tests—and how to design systems that accept change without fear.

January 12, 2026 Ā· 8 min
A minimal architectural diagram showing controllers, services, and domain entities, with business logic drifting upward into services and increasing complexity.

Why Most Service Layers Make Code Worse

Service layers were meant to coordinate use cases, but in many systems they become dumping grounds for business logic. This post explains why that happens, how it leads to anemic domain models and brittle tests, and what to do instead.

January 5, 2026 Ā· 11 min
A minimal diagram showing tools and frameworks fading into the background while judgment, domain understanding, and maintainability remain central.

What Senior Developers Should Care About in 2026

Frameworks change, but the hardest problems in production software don’t. This post explores what senior developers should actually care about in 2026 - judgment, boundaries, domain modeling, performance, testing, and communication - long after the hype fades.

December 31, 2025 Ā· 9 min
A minimal architectural diagram showing layers becoming more complex over time, with arrows highlighting trade-offs between abstraction, simplicity, and maintainability.

The Engineering Trade-offs I Got Wrong

Most engineering mistakes don’t come from ignorance—they come from good intentions applied too early. This post reflects on real-world trade-offs around abstractions, service layers, Clean Architecture, testing, and what I’d do differently today.

December 25, 2025 Ā· 9 min
A side-by-side diagram comparing C# code. The left panel, labeled "BEFORE," shows an old-style static extension method highlighted in red. The right panel, labeled "AFTER," shows the new C# 14 syntax using an extension block and a property, highlighted in green.

C# 14 Extension Members: Cleaner Code

The era of the ā€˜Helper Class’ is over. C# 14 introduces Extension Members, allowing you to add properties, operators, and static methods to external types. Here is how to modernize your codebase.

December 7, 2025 Ā· 5 min
Illustration showing hands controlling a marionette, labeled "ANEMIC MODEL: CONTROLLED BY SERVICES".

Avoid Anemic Domain Models

Stop writing C# classes that are just data bags. An anemic domain model scatters your business logic, leading to bugs and maintenance nightmares. Here’s how to fix it.

December 3, 2025 Ā· 7 min

The Real Difference Between Domain and Application Layer in Clean Architecture

I’ve lost count of how many times I’ve seen developers struggle with this question: ā€œShould this logic go in the Domain layer or the Application layer?ā€ Clean Architecture diagrams make it look simple, but when you’re staring at your actual codebase, the lines blur fast. You know the situation. You’ve got a business rule to implement. You open your project, see both folders, and pause. Put it in the wrong place, and six months later you’re wrestling with a mess of tangled dependencies and logic that’s impossible to test. ...

November 22, 2025 Ā· 12 min
An orchestra conductor directing musicians, a metaphor for the 'Tell, Don't Ask' principle where a service tells objects what to do.

Stop Asking Your Objects Questions. Just Tell Them What to Do

The ā€˜Tell, Don’t Ask’ principle helps reduce behavioral dependencies in C# applications by keeping decision-making logic inside the objects that own the data. This leads to cleaner, more maintainable code with better encapsulation and reduced coupling.

November 18, 2025 Ā· Last modified: November 25, 2025 Ā· 15 min

Integration Testing ASP.NET Core APIs The Right Way with WebApplicationFactory

A comprehensive guide to integration testing ASP.NET Core APIs with WebApplicationFactory. Learn to replace real databases, mock services, test authenticated endpoints, and build production-ready test suites.

November 16, 2025 Ā· 7 min
An illustration of a Swiss Army knife with an absurd number of impractical tools, representing the "generic hell" of over-engineered generic repositories.

Building Maintainable EF Core Repositories Without Generic Hell

Most EF Core projects start with a generic repository that soon turns into a mess of type parameters and leaky abstractions. In this post, learn how to design maintainable, aggregate-specific repositories that are clean, testable, and production-ready.

November 13, 2025 Ā· Last modified: November 25, 2025 Ā· 10 min
Ɨ