Blog
Articles, guides, and resources about software development, architecture, and best practices.
This blog is where I share my experience, ideas, and lessons learned from software development. You'll find articles about .NET, C#, software architecture, best practices, design patterns, developer tools, and other topics that help build better software and grow as a developer.
- Extension operator overloading in C# 14 — Overloading the pipe `|` operator allows you to customize conversions and give your code more expressive semantics.
- Feature Flags — Learn what Feature Flags are, the problems they solve, how to implement them in .NET, and their most common use cases.
- Choosing the Right DbContext Lifetime — AddDbContext, AddDbContextPool, AddDbContextFactory, AddPooledDbContextFactory — a simple way to decide which one to use in EF Core.
- 6 Rules for Writing DTOs — What a DTO is, what can be modeled as one, why record beats class here, and the rules I use so I don't end up reusing the same DTO for everything.
- One Guard Away From Prod — A guard saved me from accidentally triggering an Azure Function in production. Why guards don't rely on your memory, and what they actually are.
- DbContext vs. Repository + Unit of Work: Do You Need Both? — DbSet<T> is already a generic Repository, and DbContext is already a Unit of Work. Why wrapping EF Core in your own layers often doesn't deliver what it promises — and the cases where it still does.
- It's Like They Never Heard Me Say It — Verbal agreements evaporate the moment something breaks, and the developer who wrote nothing down ends up carrying the blame. What an ADR is, what it's for, how to structure one, and how to name it.
- Technical Debt Is Allowed — One day the architects say "technical debt is allowed," and whoever really hears it already knows what's coming. What counts as debt and what doesn't, Fowler's quadrant, how healthy debt migrates quadrants on its own, and a minimal structure for recording it in two minutes.
- floci: Any Cloud, on Your Machine — Local AWS, Azure, and GCP emulators — one container per cloud, MIT licensed, free, no account required. What floci is, what it's for, how to start each one, and what not to expect from an emulator.
- Evaluate Against What? — If AI writes the code and the work becomes reviewing it, half the question is missing. How I audit generated code without reading it line by line, and why the criteria have to exist beforehand.
- Landing the Daily — Lowering the abstraction without sounding like a robot: a Yesterday/Today/Blockers template, which jargon to translate and which to keep, and a speaking technique that stops people cutting you off mid-list.
- Build the Lab Before You Integrate — A separate, isolated, noise-free solution where you prove out the integration before it touches your system. What actually breaks, where to point it, and what you carry back to the real project.
- Context Isn't Free — Writing your project's rules once with AGENTS.md or CLAUDE.md, delegating the noisy work to subagents, and understanding which part of the token bill each decision pays. With copy-paste templates.