I'm always excited to take on new projects and collaborate with innovative minds.

Social Links

Blog

Oct 24, 2025 • 5 min read
C# 14 & .NET 10 — Extension Members, SSE, JSON Mapping, and More

C# 14 and .NET 10 bring major quality-of-life updates — from extension...

Oct 22, 2025 • 7 min read
Building Enterprise MCP Servers in ASP.NET Core: Exposing Your APIs to AI Agents

Most MCP tutorials expose simple calculators. Real enterprises expose...

Sep 29, 2025 • 3 min read
The Single await That Brought Down Our .NET Throughput (and What We Learned)

A single misplaced await slowed down an entire .NET app in production....

Sep 29, 2025 • 3 min read
Designing Self-Healing .NET Systems with Resiliency Frameworks & Patterns

Learn how to build self-healing .NET applications using the Resiliency...

Sep 13, 2025 • 6 min read
Designing Agentic Workflows in ASP.NET Core: Beyond Simple AI Agents

Most enterprise AI systems don't need autonomous agents. This guide sh...

Sep 07, 2025 • 4 min read
ABP.IO: The Framework That Changed How I Build Enterprise SaaS Applications

Discover how ABP.IO helps developers build enterprise-grade SaaS appli...

Sep 03, 2025 • 3 min read
.NET Core vs Node.js for SaaS: A Developer’s Real-World Benchmark

A hands-on comparison of .NET Core vs Node.js for SaaS development. Ba...

Aug 30, 2025 • 4 min read
Angular Signals: The Next Big Shift in Reactivity

Discover Angular Signals, the new reactivity model introduced in Angul...

Aug 28, 2025 • 4 min read
Turbo-Charging .NET Apps with C# Channels

A minimal .NET demo showing how to use C# Channels for producer-consum...

Aug 27, 2025 • 3 min read
Streamline Your .csproj Files with Directory.Build.props

Tired of messy .csproj files? Learn how Directory.Build.props can simp...

Aug 18, 2025 • 2 min read
5 Debugging Lessons That Save Weeks of Frustration

Cut debugging time with this practical checklist for developers. From...

Aug 17, 2025 • 2 min read
5 Lessons Legacy Codebases Taught Me About Being a Better Developer

Legacy code isn’t just old code—it’s survivor code. In this blog, I sh...