<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Muhammad Shahid Blog</title>
    <link>https://www.muhammadshahid.dev/blog</link>
    <description>Senior .NET + Angular engineer helping teams design and ship secure healthcare, SaaS, and eCommerce systems — APIs, SPAs, Azure, identity, and clean architecture.</description>
    <language>en-us</language>
    <atom:link href="https://www.muhammadshahid.dev/rss.xml" rel="self" type="application/rss+xml"/>
    
    <item>
      <title><![CDATA[Value Objects in EF Core: OwnsOne and HasConversion]]></title>
      <link>https://www.muhammadshahid.dev/blog/value-objects-ef-core</link>
      <guid>https://www.muhammadshahid.dev/blog/value-objects-ef-core</guid>
      <pubDate>Wed, 07 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Implement DDD value objects in .NET as C# records. Map with EF Core using OwnsOne for owned entities and HasConversion for primitive properties.]]></description>
    </item>
    <item>
      <title><![CDATA[System Design Interview Questions for .NET Engineers]]></title>
      <link>https://www.muhammadshahid.dev/blog/system-design-interview-questions-dotnet</link>
      <guid>https://www.muhammadshahid.dev/blog/system-design-interview-questions-dotnet</guid>
      <pubDate>Wed, 07 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[System design interview prep for .NET engineers. Real questions with 30-second answers — URL shorteners, notification systems, distributed systems.]]></description>
    </item>
    <item>
      <title><![CDATA[System Design Interview: A Repeatable Framework]]></title>
      <link>https://www.muhammadshahid.dev/blog/system-design-interview-framework</link>
      <guid>https://www.muhammadshahid.dev/blog/system-design-interview-framework</guid>
      <pubDate>Wed, 07 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[A repeatable 4-step framework for system design interviews. Learn how to structure requirements, high-level design, and scaling answers.]]></description>
    </item>
    <item>
      <title><![CDATA[Saga Pattern in .NET: Choreography vs Orchestration]]></title>
      <link>https://www.muhammadshahid.dev/blog/saga-pattern-distributed-transactions-dotnet</link>
      <guid>https://www.muhammadshahid.dev/blog/saga-pattern-distributed-transactions-dotnet</guid>
      <pubDate>Wed, 07 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Implement the Saga pattern in .NET for distributed transactions across microservices. Compare choreography vs orchestration with real C# examples.]]></description>
    </item>
    <item>
      <title><![CDATA[Observability in .NET: Logs, Traces, and Metrics Strategy]]></title>
      <link>https://www.muhammadshahid.dev/blog/observability-opentelemetry-dotnet</link>
      <guid>https://www.muhammadshahid.dev/blog/observability-opentelemetry-dotnet</guid>
      <pubDate>Wed, 07 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[The three pillars of observability in .NET — when to use structured logs, distributed traces, and metrics. Strategy guide with Serilog and OpenTelemetry.]]></description>
    </item>
    <item>
      <title><![CDATA[Notification System Design: A Full System Design Case Study]]></title>
      <link>https://www.muhammadshahid.dev/blog/notification-system-design-case-study</link>
      <guid>https://www.muhammadshahid.dev/blog/notification-system-design-case-study</guid>
      <pubDate>Wed, 07 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Full system design for a notification system — requirements, architecture, channel routing, reliability, rate limiting, and .NET implementation.]]></description>
    </item>
    <item>
      <title><![CDATA[Microservices Interview Questions for .NET Developers]]></title>
      <link>https://www.muhammadshahid.dev/blog/microservices-interview-questions-dotnet</link>
      <guid>https://www.muhammadshahid.dev/blog/microservices-interview-questions-dotnet</guid>
      <pubDate>Wed, 07 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Microservices interview prep for .NET developers. Real questions on service communication, data consistency, circuit breakers, and service boundaries.]]></description>
    </item>
    <item>
      <title><![CDATA[RabbitMQ vs Azure Service Bus vs Kafka for .NET]]></title>
      <link>https://www.muhammadshahid.dev/blog/message-queue-rabbitmq-service-bus-kafka-comparison</link>
      <guid>https://www.muhammadshahid.dev/blog/message-queue-rabbitmq-service-bus-kafka-comparison</guid>
      <pubDate>Wed, 07 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Compare RabbitMQ, Azure Service Bus, and Kafka for .NET. Which message broker fits your workload — from task queues to event streaming at scale.]]></description>
    </item>
    <item>
      <title><![CDATA[Load Balancing Strategies: Consistent Hashing in .NET]]></title>
      <link>https://www.muhammadshahid.dev/blog/load-balancing-strategies-consistent-hashing</link>
      <guid>https://www.muhammadshahid.dev/blog/load-balancing-strategies-consistent-hashing</guid>
      <pubDate>Wed, 07 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Load balancing algorithms — round-robin, least connections, IP hash, and consistent hashing — with .NET production examples and trade-offs.]]></description>
    </item>
    <item>
      <title><![CDATA[Horizontal vs Vertical Scaling in ASP.NET Core]]></title>
      <link>https://www.muhammadshahid.dev/blog/horizontal-vertical-scaling-aspnet-core</link>
      <guid>https://www.muhammadshahid.dev/blog/horizontal-vertical-scaling-aspnet-core</guid>
      <pubDate>Wed, 07 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Horizontal vs vertical scaling for ASP.NET Core APIs — stateless design, load balancing, and when to scale out vs scale up in production.]]></description>
    </item>
    <item>
      <title><![CDATA[Event Sourcing vs CRUD: When to Use Event Sourcing]]></title>
      <link>https://www.muhammadshahid.dev/blog/event-sourcing-vs-crud-when-to-use</link>
      <guid>https://www.muhammadshahid.dev/blog/event-sourcing-vs-crud-when-to-use</guid>
      <pubDate>Wed, 07 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Compare event sourcing and CRUD for .NET. When the audit trail and temporal queries justify event sourcing's complexity, with C# implementation patterns.]]></description>
    </item>
    <item>
      <title><![CDATA[Event-Driven Architecture in ASP.NET Core: A Practical Guide]]></title>
      <link>https://www.muhammadshahid.dev/blog/event-driven-architecture-aspnet-core</link>
      <guid>https://www.muhammadshahid.dev/blog/event-driven-architecture-aspnet-core</guid>
      <pubDate>Wed, 07 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Build event-driven systems in ASP.NET Core with MassTransit. Events vs commands, async decoupling trade-offs, and when EDA helps vs hurts.]]></description>
    </item>
    <item>
      <title><![CDATA[Event-Driven Architecture Interview Questions (.NET)]]></title>
      <link>https://www.muhammadshahid.dev/blog/eda-interview-questions-dotnet</link>
      <guid>https://www.muhammadshahid.dev/blog/eda-interview-questions-dotnet</guid>
      <pubDate>Wed, 07 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[EDA interview prep for .NET developers. Domain events, integration events, eventual consistency, and designing idempotent consumers explained.]]></description>
    </item>
    <item>
      <title><![CDATA[Domain Services vs Application Services in .NET]]></title>
      <link>https://www.muhammadshahid.dev/blog/domain-services-vs-application-services-dotnet</link>
      <guid>https://www.muhammadshahid.dev/blog/domain-services-vs-application-services-dotnet</guid>
      <pubDate>Wed, 07 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Understand domain services vs application services in .NET DDD. Fix the anemic domain model and know where each type of business logic belongs.]]></description>
    </item>
    <item>
      <title><![CDATA[Domain Events in .NET: Raising and Dispatching with MediatR]]></title>
      <link>https://www.muhammadshahid.dev/blog/domain-events-dotnet-mediatr</link>
      <guid>https://www.muhammadshahid.dev/blog/domain-events-dotnet-mediatr</guid>
      <pubDate>Wed, 07 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Implement domain events in .NET aggregates and dispatch with MediatR. Domain events vs integration events, dispatch timing, and the outbox pattern.]]></description>
    </item>
    <item>
      <title><![CDATA[Distributed Systems Interview Questions for .NET Developers]]></title>
      <link>https://www.muhammadshahid.dev/blog/distributed-systems-interview-questions</link>
      <guid>https://www.muhammadshahid.dev/blog/distributed-systems-interview-questions</guid>
      <pubDate>Wed, 07 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Distributed systems interview prep for .NET engineers. CAP theorem, consistency models, partition tolerance, and distributed transactions explained.]]></description>
    </item>
    <item>
      <title><![CDATA[Distributed Caching Patterns in ASP.NET Core]]></title>
      <link>https://www.muhammadshahid.dev/blog/distributed-caching-patterns-dotnet</link>
      <guid>https://www.muhammadshahid.dev/blog/distributed-caching-patterns-dotnet</guid>
      <pubDate>Wed, 07 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Cache-aside, write-through, and write-behind patterns in ASP.NET Core with Redis. When each is correct and what breaks when you pick the wrong one.]]></description>
    </item>
    <item>
      <title><![CDATA[Designing for Idempotency at Scale in .NET APIs]]></title>
      <link>https://www.muhammadshahid.dev/blog/designing-idempotency-at-scale</link>
      <guid>https://www.muhammadshahid.dev/blog/designing-idempotency-at-scale</guid>
      <pubDate>Wed, 07 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Design idempotent APIs in ASP.NET Core to handle duplicate requests safely. Idempotency keys, database patterns, and safe at-least-once processing.]]></description>
    </item>
    <item>
      <title><![CDATA[DDD Interview Questions: Aggregates, Events, and Contexts]]></title>
      <link>https://www.muhammadshahid.dev/blog/ddd-interview-questions-dotnet</link>
      <guid>https://www.muhammadshahid.dev/blog/ddd-interview-questions-dotnet</guid>
      <pubDate>Wed, 07 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[DDD interview prep for .NET engineers — aggregate root, bounded context, domain events vs integration events, and the anemic domain model anti-pattern.]]></description>
    </item>
    <item>
      <title><![CDATA[Domain-Driven Design in ASP.NET Core: A Practical Guide]]></title>
      <link>https://www.muhammadshahid.dev/blog/ddd-aspnet-core-practical-guide</link>
      <guid>https://www.muhammadshahid.dev/blog/ddd-aspnet-core-practical-guide</guid>
      <pubDate>Wed, 07 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Apply DDD in ASP.NET Core with aggregates, value objects, domain services, and application services. Know when it is worth the complexity.]]></description>
    </item>
    <item>
      <title><![CDATA[Database Sharding Strategies for .NET Applications]]></title>
      <link>https://www.muhammadshahid.dev/blog/database-sharding-partitioning-strategies</link>
      <guid>https://www.muhammadshahid.dev/blog/database-sharding-partitioning-strategies</guid>
      <pubDate>Wed, 07 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Sharding strategies and shard key selection for SQL Server in .NET microservices — range, hash, and directory sharding explained with examples.]]></description>
    </item>
    <item>
      <title><![CDATA[Database Interview Questions for .NET Developers]]></title>
      <link>https://www.muhammadshahid.dev/blog/database-interview-questions-dotnet</link>
      <guid>https://www.muhammadshahid.dev/blog/database-interview-questions-dotnet</guid>
      <pubDate>Wed, 07 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Database interview prep for .NET developers. How to answer questions on sharding, replication, indexing, ACID, BASE, and SQL vs NoSQL.]]></description>
    </item>
    <item>
      <title><![CDATA[CQRS + Event Sourcing in .NET: When to Use Them Together]]></title>
      <link>https://www.muhammadshahid.dev/blog/cqrs-event-sourcing-together-dotnet</link>
      <guid>https://www.muhammadshahid.dev/blog/cqrs-event-sourcing-together-dotnet</guid>
      <pubDate>Wed, 07 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Combine CQRS and event sourcing in .NET — projections, read models, eventual consistency on the read side, and when to use one without the other.]]></description>
    </item>
    <item>
      <title><![CDATA[Circuit Breaker Pattern in ASP.NET Core with Polly]]></title>
      <link>https://www.muhammadshahid.dev/blog/circuit-breaker-pattern-polly-dotnet</link>
      <guid>https://www.muhammadshahid.dev/blog/circuit-breaker-pattern-polly-dotnet</guid>
      <pubDate>Wed, 07 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Implement the circuit breaker pattern in ASP.NET Core using Polly. Prevent cascade failures in microservices with open, closed, and half-open states.]]></description>
    </item>
    <item>
      <title><![CDATA[CAP Theorem in .NET: Consistency vs Availability]]></title>
      <link>https://www.muhammadshahid.dev/blog/cap-theorem-dotnet</link>
      <guid>https://www.muhammadshahid.dev/blog/cap-theorem-dotnet</guid>
      <pubDate>Wed, 07 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[CAP theorem for .NET engineers — when to choose consistency vs availability in distributed ASP.NET Core systems, with real trade-off examples.]]></description>
    </item>
    <item>
      <title><![CDATA[Bounded Contexts in .NET: Drawing the Right Boundaries]]></title>
      <link>https://www.muhammadshahid.dev/blog/bounded-contexts-dotnet</link>
      <guid>https://www.muhammadshahid.dev/blog/bounded-contexts-dotnet</guid>
      <pubDate>Wed, 07 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Define bounded contexts in .NET with context maps, anti-corruption layers, and the relationship between bounded contexts and microservices.]]></description>
    </item>
    <item>
      <title><![CDATA[API Gateway Patterns for .NET: Build vs Buy]]></title>
      <link>https://www.muhammadshahid.dev/blog/api-gateway-patterns-build-vs-buy</link>
      <guid>https://www.muhammadshahid.dev/blog/api-gateway-patterns-build-vs-buy</guid>
      <pubDate>Wed, 07 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Compare API gateway options for .NET microservices: Azure API Management, YARP, Ocelot, and AWS API Gateway. When to build vs use a managed service.]]></description>
    </item>
    <item>
      <title><![CDATA[API Design Interview Questions for .NET Developers]]></title>
      <link>https://www.muhammadshahid.dev/blog/api-design-interview-questions-dotnet</link>
      <guid>https://www.muhammadshahid.dev/blog/api-design-interview-questions-dotnet</guid>
      <pubDate>Wed, 07 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[API design interview prep for .NET developers. REST design, idempotency, pagination, versioning, and rate limiting — with 30-second and strong answers.]]></description>
    </item>
    <item>
      <title><![CDATA[Anti-Corruption Layer in .NET: Protecting Your Domain]]></title>
      <link>https://www.muhammadshahid.dev/blog/anti-corruption-layer-dotnet</link>
      <guid>https://www.muhammadshahid.dev/blog/anti-corruption-layer-dotnet</guid>
      <pubDate>Wed, 07 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Implement the Anti-Corruption Layer pattern in .NET to translate between bounded contexts and wrap legacy APIs. C# examples for healthcare integrations.]]></description>
    </item>
    <item>
      <title><![CDATA[Aggregate Design in .NET: Sizing and Boundaries]]></title>
      <link>https://www.muhammadshahid.dev/blog/aggregate-design-dotnet</link>
      <guid>https://www.muhammadshahid.dev/blog/aggregate-design-dotnet</guid>
      <pubDate>Wed, 07 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Design aggregates in .NET DDD — how to size them, avoid concurrency conflicts, when to split, and implement optimistic concurrency with EF Core.]]></description>
    </item>
    <item>
      <title><![CDATA[Apache Kafka with .NET: When to Adopt It]]></title>
      <link>https://www.muhammadshahid.dev/blog/kafka-dotnet-aspnet-core</link>
      <guid>https://www.muhammadshahid.dev/blog/kafka-dotnet-aspnet-core</guid>
      <pubDate>Sat, 03 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Kafka on .NET for ASP.NET Core: adopt for replay and many consumers, commit the outbox with the row, and commit offsets after the write. Not from the controller.]]></description>
    </item>
    <item>
      <title><![CDATA[Hot Chocolate Authorization in ASP.NET Core for GraphQL]]></title>
      <link>https://www.muhammadshahid.dev/blog/hot-chocolate-authorization-aspnet-core</link>
      <guid>https://www.muhammadshahid.dev/blog/hot-chocolate-authorization-aspnet-core</guid>
      <pubDate>Sat, 03 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Hot Chocolate authorization in ASP.NET Core for GraphQL fields: policies, the right Authorize attribute, validation versus BeforeResolver, and partial errors.]]></description>
    </item>
    <item>
      <title><![CDATA[EF Core Connection Pooling Under ADO.NET]]></title>
      <link>https://www.muhammadshahid.dev/blog/ef-core-connection-pooling</link>
      <guid>https://www.muhammadshahid.dev/blog/ef-core-connection-pooling</guid>
      <pubDate>Sat, 03 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[EF Core connection pooling is the SqlClient pool, not AddDbContextPool. Dispose the context to return the session before raising Max Pool Size.]]></description>
    </item>
    <item>
      <title><![CDATA[EF Core Aggregate Design for Multi-Tenant SaaS]]></title>
      <link>https://www.muhammadshahid.dev/blog/ef-core-aggregate-design-multi-tenant</link>
      <guid>https://www.muhammadshahid.dev/blog/ef-core-aggregate-design-multi-tenant</guid>
      <pubDate>Sat, 03 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[EF Core aggregate design for multi-tenant SaaS: one root per save, TenantId stamped by that root, and no second aggregate in the transaction.]]></description>
    </item>
    <item>
      <title><![CDATA[EF Core AES Encryption Interceptor for Selected Fields]]></title>
      <link>https://www.muhammadshahid.dev/blog/ef-core-aes-encryption-interceptor</link>
      <guid>https://www.muhammadshahid.dev/blog/ef-core-aes-encryption-interceptor</guid>
      <pubDate>Sat, 03 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[EF Core AES encryption interceptor using AES-GCM: a key id, an HMAC blind index, and restoring plaintext so the next save does not wrap ciphertext.]]></description>
    </item>
    <item>
      <title><![CDATA[.NET Aspire vs Docker Compose for Local .NET and Angular]]></title>
      <link>https://www.muhammadshahid.dev/blog/dotnet-aspire-vs-docker-compose</link>
      <guid>https://www.muhammadshahid.dev/blog/dotnet-aspire-vs-docker-compose</guid>
      <pubDate>Sat, 03 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Decide .NET Aspire vs Docker Compose for local ASP.NET Core and Angular work. One laptop source of truth, not a second tutorial for the team.]]></description>
    </item>
    <item>
      <title><![CDATA[.NET Aspire Dashboard: What to Watch in Local Dev]]></title>
      <link>https://www.muhammadshahid.dev/blog/dotnet-aspire-dashboard</link>
      <guid>https://www.muhammadshahid.dev/blog/dotnet-aspire-dashboard</guid>
      <pubDate>Sat, 03 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[What to read on the .NET Aspire dashboard in local dev: resources, structured logs, traces, and the few metrics that move during a single session.]]></description>
    </item>
    <item>
      <title><![CDATA[.NET 9 Built-in OpenAPI vs Swashbuckle, NSwag, and Scalar]]></title>
      <link>https://www.muhammadshahid.dev/blog/dotnet-9-openapi-vs-swashbuckle</link>
      <guid>https://www.muhammadshahid.dev/blog/dotnet-9-openapi-vs-swashbuckle</guid>
      <pubDate>Sat, 03 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[.NET 9 built-in OpenAPI versus Swashbuckle: who writes the document, who only draws a UI, and where NSwag or Scalar still fits. Do not run two generators.]]></description>
    </item>
    <item>
      <title><![CDATA[.NET 10 ASP.NET Core New Features for API Developers]]></title>
      <link>https://www.muhammadshahid.dev/blog/dotnet-10-aspnet-core-api-highlights</link>
      <guid>https://www.muhammadshahid.dev/blog/dotnet-10-aspnet-core-api-highlights</guid>
      <pubDate>Sat, 03 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[.NET 10 ASP.NET Core new features for APIs: Minimal API validation, OpenAPI 3.1, cookie 401s, and the transformer compile break after you upgrade.]]></description>
    </item>
    <item>
      <title><![CDATA[Covering Index for an EF Core Query: Keys and INCLUDE]]></title>
      <link>https://www.muhammadshahid.dev/blog/covering-index-ef-core</link>
      <guid>https://www.muhammadshahid.dev/blog/covering-index-ef-core</guid>
      <pubDate>Sat, 03 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[A covering index for an EF Core query: which columns are keys versus INCLUDE, how IncludeProperties maps them, and how you prove the key lookup is gone.]]></description>
    </item>
    <item>
      <title><![CDATA[Capacity Planning for ASP.NET Core APIs]]></title>
      <link>https://www.muhammadshahid.dev/blog/capacity-planning-aspnet-core</link>
      <guid>https://www.muhammadshahid.dev/blog/capacity-planning-aspnet-core</guid>
      <pubDate>Sat, 03 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Capacity planning for ASP.NET Core APIs: write down peak demand, name the pool that saturates first, measure it, and do not scale the wrong tier.]]></description>
    </item>
    <item>
      <title><![CDATA[Blazor WASM Authentication with ASP.NET Core Identity]]></title>
      <link>https://www.muhammadshahid.dev/blog/blazor-wasm-authentication-aspnet-core</link>
      <guid>https://www.muhammadshahid.dev/blog/blazor-wasm-authentication-aspnet-core</guid>
      <pubDate>Sat, 03 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Blazor WASM authentication with ASP.NET Core Identity: a same-origin HttpOnly cookie, or OIDC PKCE when the WASM app is hosted on another origin.]]></description>
    </item>
    <item>
      <title><![CDATA[Blazor vs Angular for .NET Teams: When Each Wins]]></title>
      <link>https://www.muhammadshahid.dev/blog/blazor-vs-angular</link>
      <guid>https://www.muhammadshahid.dev/blog/blazor-vs-angular</guid>
      <pubDate>Sat, 03 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Blazor vs Angular in front of an ASP.NET Core API: Interactive Server, WebAssembly, or a separate SPA. A team decision, not a framework tutorial.]]></description>
    </item>
    <item>
      <title><![CDATA[Background Report Generation with SignalR in ASP.NET Core]]></title>
      <link>https://www.muhammadshahid.dev/blog/background-report-signalr-aspnet-core</link>
      <guid>https://www.muhammadshahid.dev/blog/background-report-signalr-aspnet-core</guid>
      <pubDate>Sat, 03 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Background report progress with SignalR in ASP.NET Core: store the job, build the file in a worker, and notify only an authorized group. Refresh uses GET.]]></description>
    </item>
    <item>
      <title><![CDATA[Azure Private Endpoints for ASP.NET Core and SQL Server]]></title>
      <link>https://www.muhammadshahid.dev/blog/azure-private-endpoints-aspnet-core</link>
      <guid>https://www.muhammadshahid.dev/blog/azure-private-endpoints-aspnet-core</guid>
      <pubDate>Sat, 03 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Reach Azure SQL and Key Vault from ASP.NET Core over private endpoints and privatelink DNS, then disable public network access on both services.]]></description>
    </item>
    <item>
      <title><![CDATA[Azure Monitor Workbooks for ASP.NET Core API SLOs]]></title>
      <link>https://www.muhammadshahid.dev/blog/azure-monitor-workbooks-aspnet-core</link>
      <guid>https://www.muhammadshahid.dev/blog/azure-monitor-workbooks-aspnet-core</guid>
      <pubDate>Sat, 03 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Azure Monitor workbooks for ASP.NET Core SLOs: weight availability by itemCount, chart latency percentiles, and pass the target in as a parameter.]]></description>
    </item>
    <item>
      <title><![CDATA[Azure Key Vault Access Policy vs RBAC for .NET Apps]]></title>
      <link>https://www.muhammadshahid.dev/blog/azure-key-vault-access-policy-vs-rbac</link>
      <guid>https://www.muhammadshahid.dev/blog/azure-key-vault-access-policy-vs-rbac</guid>
      <pubDate>Sat, 03 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Azure Key Vault access policy vs RBAC: one data-plane model for a .NET app, Secrets User for reads, and how to tell which 403 you actually hit.]]></description>
    </item>
    <item>
      <title><![CDATA[Azure Functions Service Bus Trigger for .NET Isolated Worker]]></title>
      <link>https://www.muhammadshahid.dev/blog/azure-functions-service-bus-trigger</link>
      <guid>https://www.muhammadshahid.dev/blog/azure-functions-service-bus-trigger</guid>
      <pubDate>Sat, 03 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Azure Functions Service Bus trigger on the .NET isolated worker: bind the queue and settle each message with complete, abandon, or dead-letter.]]></description>
    </item>
    <item>
      <title><![CDATA[Azure Functions Cold Starts: What Actually Helps in .NET]]></title>
      <link>https://www.muhammadshahid.dev/blog/azure-functions-cold-start-dotnet</link>
      <guid>https://www.muhammadshahid.dev/blog/azure-functions-cold-start-dotnet</guid>
      <pubDate>Sat, 03 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[A .NET Azure Functions cold start is host and worker startup, not your method. Which plan settings actually shorten the first call after idle.]]></description>
    </item>
    <item>
      <title><![CDATA[Azure Event Grid with ASP.NET Core: Idempotent Ack]]></title>
      <link>https://www.muhammadshahid.dev/blog/azure-event-grid-aspnet-core</link>
      <guid>https://www.muhammadshahid.dev/blog/azure-event-grid-aspnet-core</guid>
      <pubDate>Sat, 03 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Azure Event Grid with ASP.NET Core webhooks: the OPTIONS or validationResponse handshake, caller authentication, and a fast ack that stays safe on retry.]]></description>
    </item>
    <item>
      <title><![CDATA[ASP.NET Core WebSockets vs SignalR: When Raw Sockets Win]]></title>
      <link>https://www.muhammadshahid.dev/blog/aspnet-core-websockets-vs-signalr</link>
      <guid>https://www.muhammadshahid.dev/blog/aspnet-core-websockets-vs-signalr</guid>
      <pubDate>Sat, 03 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[ASP.NET Core WebSockets vs SignalR: choose SignalR for groups and reconnect, or raw sockets when you must own the frames, auth, and scale-out.]]></description>
    </item>
    <item>
      <title><![CDATA[ASP.NET Core Request Decompression and Large Payload Limits]]></title>
      <link>https://www.muhammadshahid.dev/blog/aspnet-core-request-decompression</link>
      <guid>https://www.muhammadshahid.dev/blog/aspnet-core-request-decompression</guid>
      <pubDate>Sat, 03 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Enable ASP.NET Core request decompression so gzip, Brotli, or deflate bodies bind as normal JSON, and cap the inflated size. Not response compression.]]></description>
    </item>
    <item>
      <title><![CDATA[ASP.NET Core Rate Limiting vs Polly Rate Limiter]]></title>
      <link>https://www.muhammadshahid.dev/blog/aspnet-core-rate-limiting-vs-polly</link>
      <guid>https://www.muhammadshahid.dev/blog/aspnet-core-rate-limiting-vs-polly</guid>
      <pubDate>Sat, 03 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[ASP.NET Core rate limiting vs Polly: return 429 before the action, and limit outbound HttpClient calls in Polly. Most APIs need both, for different budgets.]]></description>
    </item>
    <item>
      <title><![CDATA[ASP.NET Core Output Caching with Redis, Not a Backplane]]></title>
      <link>https://www.muhammadshahid.dev/blog/aspnet-core-output-caching-redis</link>
      <guid>https://www.muhammadshahid.dev/blog/aspnet-core-output-caching-redis</guid>
      <pubDate>Sat, 03 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[ASP.NET Core output caching in Redis is a shared store, not a backplane. Another instance can serve the cached GET without running the action.]]></description>
    </item>
    <item>
      <title><![CDATA[ASP.NET Core File Download Streaming for Large Exports]]></title>
      <link>https://www.muhammadshahid.dev/blog/aspnet-core-file-download-streaming</link>
      <guid>https://www.muhammadshahid.dev/blog/aspnet-core-file-download-streaming</guid>
      <pubDate>Sat, 03 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[ASP.NET Core file download streaming for large CSV exports: async EF rows, an early flush, cancellation, and a one-time ticket instead of a query JWT.]]></description>
    </item>
    <item>
      <title><![CDATA[ASP.NET Core Data Protection vs AES vs Password Hashing]]></title>
      <link>https://www.muhammadshahid.dev/blog/aspnet-core-data-protection-aes</link>
      <guid>https://www.muhammadshahid.dev/blog/aspnet-core-data-protection-aes</guid>
      <pubDate>Sat, 03 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Choose ASP.NET Core Data Protection, AES-GCM, or a password hash for the data you have. This page is only that split, not a storage implementation.]]></description>
    </item>
    <item>
      <title><![CDATA[Architecture Decision Records (ADRs) for ASP.NET Core Teams]]></title>
      <link>https://www.muhammadshahid.dev/blog/architecture-decision-records-aspnet-core</link>
      <guid>https://www.muhammadshahid.dev/blog/architecture-decision-records-aspnet-core</guid>
      <pubDate>Sat, 03 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Architecture decision records (ADR) for ASP.NET Core: one numbered file per choice, the old text left intact, and a new file when it changes.]]></description>
    </item>
    <item>
      <title><![CDATA[Application Insights for ASP.NET Core APIs and Angular]]></title>
      <link>https://www.muhammadshahid.dev/blog/application-insights-aspnet-core</link>
      <guid>https://www.muhammadshahid.dev/blog/application-insights-aspnet-core</guid>
      <pubDate>Sat, 03 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Application Insights for ASP.NET Core and Angular: call UseAzureMonitor, send traceparent from the SPA, and keep tokens and PII out of the portal.]]></description>
    </item>
    <item>
      <title><![CDATA[Anti-Corruption Layer in ASP.NET Core]]></title>
      <link>https://www.muhammadshahid.dev/blog/anti-corruption-layer-aspnet-core</link>
      <guid>https://www.muhammadshahid.dev/blog/anti-corruption-layer-aspnet-core</guid>
      <pubDate>Sat, 03 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[An anti-corruption layer in ASP.NET Core translates partner and legacy models at the edge so domain types, errors, and Angular fields stay yours.]]></description>
    </item>
    <item>
      <title><![CDATA[Angular Silent Token Refresh on App Startup]]></title>
      <link>https://www.muhammadshahid.dev/blog/angular-silent-token-refresh</link>
      <guid>https://www.muhammadshahid.dev/blog/angular-silent-token-refresh</guid>
      <pubDate>Sat, 03 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Angular silent token refresh on startup runs one cookie POST before the first secured call and keeps the access token in memory, not localStorage.]]></description>
    </item>
    <item>
      <title><![CDATA[Angular OIDC Code Flow with PKCE Against ASP.NET Core]]></title>
      <link>https://www.muhammadshahid.dev/blog/angular-oidc-pkce-aspnet-core</link>
      <guid>https://www.muhammadshahid.dev/blog/angular-oidc-pkce-aspnet-core</guid>
      <pubDate>Sat, 03 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Angular OIDC PKCE against ASP.NET Core: a public client, the code exchange, and an API that rejects a wrong audience. No client secret in the bundle.]]></description>
    </item>
    <item>
      <title><![CDATA[Angular Jest vs Vitest for ASP.NET Core SPA Unit Tests]]></title>
      <link>https://www.muhammadshahid.dev/blog/angular-jest-vs-vitest</link>
      <guid>https://www.muhammadshahid.dev/blog/angular-jest-vs-vitest</guid>
      <pubDate>Sat, 03 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Angular Jest vs Vitest for an ASP.NET Core SPA: CLI default, jsdom, what a Jasmine migration actually changes, and the tests that stay in .NET.]]></description>
    </item>
    <item>
      <title><![CDATA[Angular i18n Routing in ASP.NET Core with Locale Prefixes]]></title>
      <link>https://www.muhammadshahid.dev/blog/angular-i18n-routing-aspnet-core</link>
      <guid>https://www.muhammadshahid.dev/blog/angular-i18n-routing-aspnet-core</guid>
      <pubDate>Sat, 03 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Angular i18n routing in ASP.NET Core: allow-listed /en and /ur prefixes, one base href model, and a path culture provider that beats a stale cookie.]]></description>
    </item>
    <item>
      <title><![CDATA[Angular @defer Performance on Admin Dashboards]]></title>
      <link>https://www.muhammadshahid.dev/blog/angular-defer-admin-dashboards</link>
      <guid>https://www.muhammadshahid.dev/blog/angular-defer-admin-dashboards</guid>
      <pubDate>Sat, 03 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Angular @defer performance for admin dashboards: which widget waits, which trigger fires, and which ASP.NET Core call is absent on first paint.]]></description>
    </item>
    <item>
      <title><![CDATA[Angular Build Budgets and CI Gates in a .NET Monorepo]]></title>
      <link>https://www.muhammadshahid.dev/blog/angular-build-budgets-ci</link>
      <guid>https://www.muhammadshahid.dev/blog/angular-build-budgets-ci</guid>
      <pubDate>Sat, 03 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Angular build budgets fail CI when a production bundle exceeds maximumError. The limit counts raw emitted bytes, not the gzip size on the wire.]]></description>
    </item>
    <item>
      <title><![CDATA[Angular Blob Download and Upload Progress with ASP.NET Core]]></title>
      <link>https://www.muhammadshahid.dev/blog/angular-blob-download-upload-progress</link>
      <guid>https://www.muhammadshahid.dev/blog/angular-blob-download-upload-progress</guid>
      <pubDate>Sat, 03 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Download a file with Angular HttpClient as a blob from an ASP.NET Core API, and report upload progress, without parsing that file body as JSON.]]></description>
    </item>
    <item>
      <title><![CDATA[Accessibility CI with axe and Playwright on Angular + .NET]]></title>
      <link>https://www.muhammadshahid.dev/blog/angular-axe-playwright-accessibility-ci</link>
      <guid>https://www.muhammadshahid.dev/blog/angular-axe-playwright-accessibility-ci</guid>
      <pubDate>Sat, 03 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Angular axe and Playwright accessibility CI: host the SPA in ASP.NET Core, scan real routes, and fail on serious or critical violations. Same host as production.]]></description>
    </item>
    <item>
      <title><![CDATA[Accessible Angular Forms with aria-live and ASP.NET Core]]></title>
      <link>https://www.muhammadshahid.dev/blog/angular-accessible-forms-aria-live</link>
      <guid>https://www.muhammadshahid.dev/blog/angular-accessible-forms-aria-live</guid>
      <pubDate>Sat, 03 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Accessible Angular forms with aria-live: labels, ASP.NET Core field errors, and a live region that already exists when @defer swaps content in.]]></description>
    </item>
    <item>
      <title><![CDATA[AKS Workload Identity for ASP.NET Core Pods]]></title>
      <link>https://www.muhammadshahid.dev/blog/aks-workload-identity-aspnet-core</link>
      <guid>https://www.muhammadshahid.dev/blog/aks-workload-identity-aspnet-core</guid>
      <pubDate>Sat, 03 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[AKS workload identity for an ASP.NET Core pod: federate the service account, remove the client secret, and grant that user-assigned identity.]]></description>
    </item>
    <item>
      <title><![CDATA[AKS vs Azure App Service for ASP.NET Core APIs]]></title>
      <link>https://www.muhammadshahid.dev/blog/aks-vs-azure-app-service</link>
      <guid>https://www.muhammadshahid.dev/blog/aks-vs-azure-app-service</guid>
      <pubDate>Sat, 03 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Choose AKS or Azure App Service for a .NET API. Compares operations, deployment slots, and networking, without invented prices or a kubectl guide.]]></description>
    </item>
    <item>
      <title><![CDATA[Testcontainers for ASP.NET Core: Real SQL and Redis Testing]]></title>
      <link>https://www.muhammadshahid.dev/blog/testcontainers-aspnet-core-sql-redis</link>
      <guid>https://www.muhammadshahid.dev/blog/testcontainers-aspnet-core-sql-redis</guid>
      <pubDate>Thu, 01 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[ASP.NET Core integration tests with Testcontainers — real SQL or Postgres and Redis beside WebApplicationFactory. Extends WebApplicationFactory; not Angular E2E.]]></description>
    </item>
    <item>
      <title><![CDATA[STRIDE Threat Modeling for ASP.NET Core REST APIs]]></title>
      <link>https://www.muhammadshahid.dev/blog/stride-threat-modeling-aspnet-core-apis</link>
      <guid>https://www.muhammadshahid.dev/blog/stride-threat-modeling-aspnet-core-apis</guid>
      <pubDate>Thu, 01 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[STRIDE threat modeling for ASP.NET Core APIs — a 6-step walkthrough with Spoofing, Tampering, and Elevation of Privilege examples.]]></description>
    </item>
    <item>
      <title><![CDATA[RFC 9457 Problem Details Deep Dive for ASP.NET Core]]></title>
      <link>https://www.muhammadshahid.dev/blog/rfc-9457-problem-details-aspnet-core</link>
      <guid>https://www.muhammadshahid.dev/blog/rfc-9457-problem-details-aspnet-core</guid>
      <pubDate>Thu, 01 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[RFC 9457 ProblemDetails in ASP.NET Core — standard error responses, extension fields, Angular error parsing, and client-friendly formats.]]></description>
    </item>
    <item>
      <title><![CDATA[Prevent BOLA/IDOR in ASP.NET Core: Object-Level AuthZ]]></title>
      <link>https://www.muhammadshahid.dev/blog/prevent-bola-idor-aspnet-core</link>
      <guid>https://www.muhammadshahid.dev/blog/prevent-bola-idor-aspnet-core</guid>
      <pubDate>Thu, 01 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Prevent BOLA/IDOR in ASP.NET Core with resource-based authorization handlers — the biggest API security vulnerability explained.]]></description>
    </item>
    <item>
      <title><![CDATA[OWASP API Security Top 10 Mapped to ASP.NET Core]]></title>
      <link>https://www.muhammadshahid.dev/blog/owasp-api-security-top-10-aspnet-core</link>
      <guid>https://www.muhammadshahid.dev/blog/owasp-api-security-top-10-aspnet-core</guid>
      <pubDate>Thu, 01 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[A practical OWASP API Security Top 10 checklist mapped to ASP.NET Core controls — BOLA, auth, mass assignment, rate limits, CORS, and Angular trust boundaries. Not a JWT or RBAC rewrite.]]></description>
    </item>
    <item>
      <title><![CDATA[OpenTelemetry in ASP.NET Core: Traces, Metrics, and Logs]]></title>
      <link>https://www.muhammadshahid.dev/blog/opentelemetry-aspnet-core-traces-metrics-logs</link>
      <guid>https://www.muhammadshahid.dev/blog/opentelemetry-aspnet-core-traces-metrics-logs</guid>
      <pubDate>Thu, 01 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[OpenTelemetry in ASP.NET Core — traces, metrics, logs, ActivitySource, OTLP export, W3C traceparent, and sampling strategies.]]></description>
    </item>
    <item>
      <title><![CDATA[NgRx vs Signals vs SignalStore for Angular Enterprise SPAs]]></title>
      <link>https://www.muhammadshahid.dev/blog/ngrx-vs-signals-vs-signalstore-angular</link>
      <guid>https://www.muhammadshahid.dev/blog/ngrx-vs-signals-vs-signalstore-angular</guid>
      <pubDate>Thu, 01 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[NgRx vs Angular Signals vs SignalStore — when each state management approach is correct for enterprise SPAs backed by ASP.NET Core.]]></description>
    </item>
    <item>
      <title><![CDATA[Multi-Tenancy in ASP.NET Core Beyond Query Filters]]></title>
      <link>https://www.muhammadshahid.dev/blog/multi-tenancy-aspnet-core-beyond-query-filters</link>
      <guid>https://www.muhammadshahid.dev/blog/multi-tenancy-aspnet-core-beyond-query-filters</guid>
      <pubDate>Thu, 01 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Multi-tenancy in ASP.NET Core beyond EF Core query filters — connection-per-tenant, tenant resolution middleware, and resource-based auth.]]></description>
    </item>
    <item>
      <title><![CDATA[Managed Identity for ASP.NET Core on Azure]]></title>
      <link>https://www.muhammadshahid.dev/blog/managed-identity-aspnet-core-azure</link>
      <guid>https://www.muhammadshahid.dev/blog/managed-identity-aspnet-core-azure</guid>
      <pubDate>Thu, 01 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Use Managed Identity in ASP.NET Core on Azure — passwordless SQL, Blob, and Key Vault access using DefaultAzureCredential.]]></description>
    </item>
    <item>
      <title><![CDATA[Hot Chocolate GraphQL in ASP.NET Core: Queries and Mutations]]></title>
      <link>https://www.muhammadshahid.dev/blog/hot-chocolate-graphql-aspnet-core</link>
      <guid>https://www.muhammadshahid.dev/blog/hot-chocolate-graphql-aspnet-core</guid>
      <pubDate>Thu, 01 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Hot Chocolate GraphQL in ASP.NET Core — schema definition, queries, mutations, subscriptions, and auth integration patterns.]]></description>
    </item>
    <item>
      <title><![CDATA[Hangfire vs Quartz.NET vs Channel Workers in ASP.NET Core]]></title>
      <link>https://www.muhammadshahid.dev/blog/hangfire-vs-quartz-vs-channel-workers-aspnet-core</link>
      <guid>https://www.muhammadshahid.dev/blog/hangfire-vs-quartz-vs-channel-workers-aspnet-core</guid>
      <pubDate>Thu, 01 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Hangfire vs Quartz.NET vs Channel workers for ASP.NET Core background jobs — when each is the right choice for scheduling and queuing.]]></description>
    </item>
    <item>
      <title><![CDATA[gRPC vs REST in ASP.NET Core: When Each Wins]]></title>
      <link>https://www.muhammadshahid.dev/blog/grpc-vs-rest-aspnet-core</link>
      <guid>https://www.muhammadshahid.dev/blog/grpc-vs-rest-aspnet-core</guid>
      <pubDate>Thu, 01 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[gRPC vs REST in ASP.NET Core — when Protobuf streaming beats JSON/HTTP, and when REST is still the right choice for APIs.]]></description>
    </item>
    <item>
      <title><![CDATA[GitHub Actions CI/CD for ASP.NET Core + Angular]]></title>
      <link>https://www.muhammadshahid.dev/blog/github-actions-cicd-aspnet-core-angular</link>
      <guid>https://www.muhammadshahid.dev/blog/github-actions-cicd-aspnet-core-angular</guid>
      <pubDate>Thu, 01 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[GitHub Actions CI/CD for ASP.NET Core and Angular — multi-stage build, test gate, Docker publish, and Azure App Service deployment.]]></description>
    </item>
    <item>
      <title><![CDATA[Getting Started with .NET Aspire: AppHost, API, and Angular]]></title>
      <link>https://www.muhammadshahid.dev/blog/dotnet-aspire-aspnet-core-angular</link>
      <guid>https://www.muhammadshahid.dev/blog/dotnet-aspire-aspnet-core-angular</guid>
      <pubDate>Thu, 01 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Getting started with .NET Aspire: the AppHost, service defaults, and adding the ASP.NET Core API and the Angular app. That is the whole scope of this page.]]></description>
    </item>
    <item>
      <title><![CDATA[Content Security Policy for Angular Hosted by ASP.NET Core]]></title>
      <link>https://www.muhammadshahid.dev/blog/content-security-policy-angular-aspnet-core</link>
      <guid>https://www.muhammadshahid.dev/blog/content-security-policy-angular-aspnet-core</guid>
      <pubDate>Thu, 01 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Configure Content Security Policy for Angular and ASP.NET Core — nonce-based middleware, inline script handling, and violation reporting.]]></description>
    </item>
    <item>
      <title><![CDATA[Azure Service Bus with ASP.NET Core: Queues and Topics]]></title>
      <link>https://www.muhammadshahid.dev/blog/azure-service-bus-aspnet-core</link>
      <guid>https://www.muhammadshahid.dev/blog/azure-service-bus-aspnet-core</guid>
      <pubDate>Thu, 01 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Azure Service Bus with ASP.NET Core — queues, topics, sessions, message processor, and retry/DLQ patterns for production workloads.]]></description>
    </item>
    <item>
      <title><![CDATA[Azure Key Vault Secrets in ASP.NET Core Configuration]]></title>
      <link>https://www.muhammadshahid.dev/blog/azure-key-vault-secrets-aspnet-core</link>
      <guid>https://www.muhammadshahid.dev/blog/azure-key-vault-secrets-aspnet-core</guid>
      <pubDate>Thu, 01 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Load Azure Key Vault secrets into ASP.NET Core configuration — Managed Identity, IConfiguration provider, and secret refresh patterns.]]></description>
    </item>
    <item>
      <title><![CDATA[Azure Functions Isolated Worker for .NET API Workloads]]></title>
      <link>https://www.muhammadshahid.dev/blog/azure-functions-isolated-worker-dotnet-api</link>
      <guid>https://www.muhammadshahid.dev/blog/azure-functions-isolated-worker-dotnet-api</guid>
      <pubDate>Thu, 01 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Azure Functions isolated worker for .NET — Program.cs DI, HTTP triggers, shared contracts, local Core Tools, and when not to replace App Service.]]></description>
    </item>
    <item>
      <title><![CDATA[Angular SSR Hosted by ASP.NET Core: Production Layout]]></title>
      <link>https://www.muhammadshahid.dev/blog/angular-ssr-hosted-aspnet-core</link>
      <guid>https://www.muhammadshahid.dev/blog/angular-ssr-hosted-aspnet-core</guid>
      <pubDate>Thu, 01 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Angular SSR hosted by ASP.NET Core — the production layout that actually works, with build config, proxy setup, and common SSR pitfalls.]]></description>
    </item>
    <item>
      <title><![CDATA[Angular Reactive Forms Validation with ProblemDetails]]></title>
      <link>https://www.muhammadshahid.dev/blog/angular-reactive-forms-validation-problemdetails</link>
      <guid>https://www.muhammadshahid.dev/blog/angular-reactive-forms-validation-problemdetails</guid>
      <pubDate>Thu, 01 Oct 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Angular Reactive Forms validation bound to ASP.NET Core ProblemDetails — map field-level errors from the API envelope to form controls.]]></description>
    </item>
    <item>
      <title><![CDATA[Vertical Slice vs Clean Architecture in ASP.NET Core]]></title>
      <link>https://www.muhammadshahid.dev/blog/vertical-slice-vs-clean-architecture</link>
      <guid>https://www.muhammadshahid.dev/blog/vertical-slice-vs-clean-architecture</guid>
      <pubDate>Fri, 18 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[When an ASP.NET Core API should use vertical slice architecture instead of Clean Architecture, and how to keep one DbContext without four projects per feature.]]></description>
    </item>
    <item>
      <title><![CDATA[Transactional Outbox in EF Core]]></title>
      <link>https://www.muhammadshahid.dev/blog/transactional-outbox-ef-core</link>
      <guid>https://www.muhammadshahid.dev/blog/transactional-outbox-ef-core</guid>
      <pubDate>Fri, 18 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Publish a message only if the EF Core save committed. The transactional outbox writes the event in the same transaction as the order, then a background worker sends it.]]></description>
    </item>
    <item>
      <title><![CDATA[LINQ Interview Questions for C# and EF Core]]></title>
      <link>https://www.muhammadshahid.dev/blog/linq-interview-questions</link>
      <guid>https://www.muhammadshahid.dev/blog/linq-interview-questions</guid>
      <pubDate>Fri, 18 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[LINQ interview questions with scenario answers for C# and EF Core: deferred execution, IQueryable SQL, client evaluation, and queries that look fine in memory and fail in production.]]></description>
    </item>
    <item>
      <title><![CDATA[IEnumerable vs IQueryable vs ICollection in EF Core]]></title>
      <link>https://www.muhammadshahid.dev/blog/ienumerable-vs-iqueryable-ef-core</link>
      <guid>https://www.muhammadshahid.dev/blog/ienumerable-vs-iqueryable-ef-core</guid>
      <pubDate>Fri, 18 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[IEnumerable vs IQueryable vs ICollection in EF Core: which one still builds SQL, which one loads the table, and which one is only a navigation collection.]]></description>
    </item>
    <item>
      <title><![CDATA[Idempotency Keys for ASP.NET Core POST APIs]]></title>
      <link>https://www.muhammadshahid.dev/blog/idempotency-key-aspnet-core</link>
      <guid>https://www.muhammadshahid.dev/blog/idempotency-key-aspnet-core</guid>
      <pubDate>Fri, 18 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Stop duplicate orders with idempotency keys in ASP.NET Core — store the Idempotency-Key header with the response and replay safely for duplicate requests.]]></description>
    </item>
    <item>
      <title><![CDATA[Git Merge vs Rebase: Workflows, History, and Clean PRs]]></title>
      <link>https://www.muhammadshahid.dev/blog/git-merge-vs-rebase</link>
      <guid>https://www.muhammadshahid.dev/blog/git-merge-vs-rebase</guid>
      <pubDate>Fri, 18 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Git merge vs git rebase in enterprise teams: 3-way merge commits vs linear history, interactive squashing (git rebase -i), conflict resolution, and the golden rule of rebasing.]]></description>
    </item>
    <item>
      <title><![CDATA[Git Checkout Remote Branch: git switch and Tracking]]></title>
      <link>https://www.muhammadshahid.dev/blog/git-checkout-remote-branch</link>
      <guid>https://www.muhammadshahid.dev/blog/git-checkout-remote-branch</guid>
      <pubDate>Fri, 18 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[How to check out a remote Git branch: fetch refs, create local tracking branches with git switch, recover from detached HEAD, and prune branches.]]></description>
    </item>
    <item>
      <title><![CDATA[Microsoft Entra ID for Angular and ASP.NET Core]]></title>
      <link>https://www.muhammadshahid.dev/blog/entra-id-angular-aspnet-core</link>
      <guid>https://www.muhammadshahid.dev/blog/entra-id-angular-aspnet-core</guid>
      <pubDate>Fri, 18 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[How an Angular app and an ASP.NET Core API use Microsoft Entra ID: which token the API accepts, the audience and scope checks that cause 401s, and when a BFF is the better shape.]]></description>
    </item>
    <item>
      <title><![CDATA[EF Core: A Second Operation Was Started on This Context]]></title>
      <link>https://www.muhammadshahid.dev/blog/ef-core-second-operation-dbcontext</link>
      <guid>https://www.muhammadshahid.dev/blog/ef-core-second-operation-dbcontext</guid>
      <pubDate>Fri, 18 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[The ASP.NET Core error 'A second operation was started on this context' means one DbContext is running two queries. The usual causes are a missing await, a parallel task, or a context stored in a singleton.]]></description>
    </item>
    <item>
      <title><![CDATA[EF Core Migrations in Production]]></title>
      <link>https://www.muhammadshahid.dev/blog/ef-core-migrations-production</link>
      <guid>https://www.muhammadshahid.dev/blog/ef-core-migrations-production</guid>
      <pubDate>Fri, 18 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[How to run EF Core migrations in production without a startup race: generate a SQL script, apply it once in the pipeline, and use expand and contract when the app is already live.]]></description>
    </item>
    <item>
      <title><![CDATA[EF Core Connection Resiliency & EnableRetryOnFailure]]></title>
      <link>https://www.muhammadshahid.dev/blog/ef-core-connection-resiliency</link>
      <guid>https://www.muhammadshahid.dev/blog/ef-core-connection-resiliency</guid>
      <pubDate>Fri, 18 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Master EF Core connection resiliency in Azure SQL: EnableRetryOnFailure, handling transactions with CreateExecutionStrategy, and idempotency.]]></description>
    </item>
    <item>
      <title><![CDATA[.NET Framework vs .NET Core vs .NET 10]]></title>
      <link>https://www.muhammadshahid.dev/blog/dotnet-framework-vs-dotnet-core</link>
      <guid>https://www.muhammadshahid.dev/blog/dotnet-framework-vs-dotnet-core</guid>
      <pubDate>Fri, 18 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[The difference between .NET Framework, .NET Core, and modern .NET — what each name means and which TargetFramework to use in 2026.]]></description>
    </item>
    <item>
      <title><![CDATA[Dapper vs EF Core: Architecture and Hybrid Patterns]]></title>
      <link>https://www.muhammadshahid.dev/blog/dapper-vs-ef-core</link>
      <guid>https://www.muhammadshahid.dev/blog/dapper-vs-ef-core</guid>
      <pubDate>Fri, 18 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Dapper vs EF Core in ASP.NET Core: performance realities, change tracking overhead, sharing transactions in hybrid architectures, and when to use each tool.]]></description>
    </item>
    <item>
      <title><![CDATA[Cursor vs Offset Pagination in ASP.NET Core]]></title>
      <link>https://www.muhammadshahid.dev/blog/cursor-vs-offset-pagination-aspnet-core</link>
      <guid>https://www.muhammadshahid.dev/blog/cursor-vs-offset-pagination-aspnet-core</guid>
      <pubDate>Fri, 18 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Offset page numbers skip and duplicate rows when the table changes. Cursor pagination for an ASP.NET Core list API is a key, a stable order, and a next link Angular can follow.]]></description>
    </item>
    <item>
      <title><![CDATA[C# OOP Interview Questions and Answers for .NET Developers]]></title>
      <link>https://www.muhammadshahid.dev/blog/csharp-oop-interview-questions</link>
      <guid>https://www.muhammadshahid.dev/blog/csharp-oop-interview-questions</guid>
      <pubDate>Fri, 18 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[C# OOP interview questions with scenario answers: abstract class vs interface, records, virtual and sealed, composition over inheritance, and what to say when the interviewer asks why.]]></description>
    </item>
    <item>
      <title><![CDATA[C# Nullable Reference Types: Warnings and EF Core]]></title>
      <link>https://www.muhammadshahid.dev/blog/csharp-nullable-reference-types</link>
      <guid>https://www.muhammadshahid.dev/blog/csharp-nullable-reference-types</guid>
      <pubDate>Fri, 18 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Master C# Nullable Reference Types (NRT): compiler static analysis, null attributes ([NotNullWhen]), C# required properties, and EF Core mappings.]]></description>
    </item>
    <item>
      <title><![CDATA[ASP.NET Core Integration Tests with WebApplicationFactory]]></title>
      <link>https://www.muhammadshahid.dev/blog/aspnet-core-webapplicationfactory</link>
      <guid>https://www.muhammadshahid.dev/blog/aspnet-core-webapplicationfactory</guid>
      <pubDate>Fri, 18 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Master ASP.NET Core integration testing with WebApplicationFactory, Testcontainers SQL Server, synthetic Auth handlers, and Respawn isolation.]]></description>
    </item>
    <item>
      <title><![CDATA[Security Headers in ASP.NET Core: HSTS, CSP, Clickjacking]]></title>
      <link>https://www.muhammadshahid.dev/blog/aspnet-core-security-headers</link>
      <guid>https://www.muhammadshahid.dev/blog/aspnet-core-security-headers</guid>
      <pubDate>Fri, 18 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Configure production HTTP security headers in ASP.NET Core: X-Content-Type-Options, X-Frame-Options, Strict-Transport-Security (HSTS), Content-Security-Policy (CSP), and Permissions-Policy.]]></description>
    </item>
    <item>
      <title><![CDATA[ASP.NET Core Output Caching vs IMemoryCache: Full Guide]]></title>
      <link>https://www.muhammadshahid.dev/blog/aspnet-core-output-caching</link>
      <guid>https://www.muhammadshahid.dev/blog/aspnet-core-output-caching</guid>
      <pubDate>Fri, 18 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Master ASP.NET Core Output Caching (.NET 8/9/10): response caching vs in-memory caching, cache eviction with tags, Redis backplane, cache locking, and tenant safety.]]></description>
    </item>
    <item>
      <title><![CDATA[ASP.NET Core Health Checks: Liveness, Readiness, Startup]]></title>
      <link>https://www.muhammadshahid.dev/blog/aspnet-core-health-checks</link>
      <guid>https://www.muhammadshahid.dev/blog/aspnet-core-health-checks</guid>
      <pubDate>Fri, 18 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Configure production health checks in ASP.NET Core: isolate liveness from readiness, write custom IHealthCheck handlers, configure Kubernetes probes, and prevent restart storms.]]></description>
    </item>
    <item>
      <title><![CDATA[ASP.NET Core Forwarded Headers Behind Azure and YARP]]></title>
      <link>https://www.muhammadshahid.dev/blog/aspnet-core-forwarded-headers</link>
      <guid>https://www.muhammadshahid.dev/blog/aspnet-core-forwarded-headers</guid>
      <pubDate>Fri, 18 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Fix ASP.NET Core redirecting to http, dropping the real client IP, or looping on HTTPS when it sits behind Azure App Service or YARP. The proxy is untrusted until you say so.]]></description>
    </item>
    <item>
      <title><![CDATA[Correlation IDs in ASP.NET Core: End-to-End Tracing]]></title>
      <link>https://www.muhammadshahid.dev/blog/aspnet-core-correlation-id</link>
      <guid>https://www.muhammadshahid.dev/blog/aspnet-core-correlation-id</guid>
      <pubDate>Fri, 18 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Implement end-to-end request tracing in ASP.NET Core with custom CorrelationIdMiddleware, ILogger scopes, W3C traceparent headers, and Angular HTTP interceptors.]]></description>
    </item>
    <item>
      <title><![CDATA[ASP.NET Core API Versioning for Angular Clients]]></title>
      <link>https://www.muhammadshahid.dev/blog/aspnet-core-api-versioning</link>
      <guid>https://www.muhammadshahid.dev/blog/aspnet-core-api-versioning</guid>
      <pubDate>Fri, 18 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Implement API versioning in ASP.NET Core with Asp.Versioning.Http, URL/Header strategies, OpenAPI Swagger docs, and deprecation sunset headers.]]></description>
    </item>
    <item>
      <title><![CDATA[switchMap vs exhaustMap vs concatMap in Angular]]></title>
      <link>https://www.muhammadshahid.dev/blog/angular-switchmap-exhaustmap-concatmap</link>
      <guid>https://www.muhammadshahid.dev/blog/angular-switchmap-exhaustmap-concatmap</guid>
      <pubDate>Fri, 18 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Which RxJS map to use when Angular calls an ASP.NET Core API: switchMap for search, exhaustMap for submit, concatMap when order matters. The wrong one drops or doubles the request.]]></description>
    </item>
    <item>
      <title><![CDATA[Angular Standalone Components vs NgModules Guide]]></title>
      <link>https://www.muhammadshahid.dev/blog/angular-standalone-components</link>
      <guid>https://www.muhammadshahid.dev/blog/angular-standalone-components</guid>
      <pubDate>Fri, 18 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Bootstrap Angular apps with standalone components: replace NgModules with provideHttpClient, configure route lazy-loading, and manage DI scopes.]]></description>
    </item>
    <item>
      <title><![CDATA[Angular OnPush Change Detection: Performance & Signals]]></title>
      <link>https://www.muhammadshahid.dev/blog/angular-onpush-change-detection</link>
      <guid>https://www.muhammadshahid.dev/blog/angular-onpush-change-detection</guid>
      <pubDate>Fri, 18 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Master Angular OnPush change detection: input reference equality, Signals integration, ChangeDetectorRef methods, and immutable update patterns.]]></description>
    </item>
    <item>
      <title><![CDATA[Swagger vs OpenAPI: The UI Name vs the Document]]></title>
      <link>https://www.muhammadshahid.dev/blog/swagger-openapi-aspnet-core</link>
      <guid>https://www.muhammadshahid.dev/blog/swagger-openapi-aspnet-core</guid>
      <pubDate>Sat, 12 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Swagger is the UI name; OpenAPI is the document. Say both on a README. Package choice lives at /blog/dotnet-9-openapi-vs-swashbuckle, not on this page.]]></description>
    </item>
    <item>
      <title><![CDATA[EF Core Relationships: One-to-One, One-to-Many, Many-to-Many]]></title>
      <link>https://www.muhammadshahid.dev/blog/ef-core-relationships</link>
      <guid>https://www.muhammadshahid.dev/blog/ef-core-relationships</guid>
      <pubDate>Fri, 11 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Map one-to-one, one-to-many, and many-to-many in EF Core — owned types vs FK, skip-level n-n vs a join entity with payload, delete behavior, and the Angular DTOs I actually return.]]></description>
    </item>
    <item>
      <title><![CDATA[What Is an API? REST and ASP.NET Core Examples]]></title>
      <link>https://www.muhammadshahid.dev/blog/what-is-an-api</link>
      <guid>https://www.muhammadshahid.dev/blog/what-is-an-api</guid>
      <pubDate>Tue, 08 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[What is an API — definition, how REST APIs work, request/response flow, and a minimal ASP.NET Core example. Plain English before framework details.]]></description>
    </item>
    <item>
      <title><![CDATA[What Is a Cache Miss? Definition With ASP.NET Core Examples]]></title>
      <link>https://www.muhammadshahid.dev/blog/what-is-a-cache-miss</link>
      <guid>https://www.muhammadshahid.dev/blog/what-is-a-cache-miss</guid>
      <pubDate>Tue, 08 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[What is a cache miss — definition, cache hit vs miss, why misses hurt performance, and how cache misses work with IMemoryCache and Redis on ASP.NET Core APIs.]]></description>
    </item>
    <item>
      <title><![CDATA[Repository Definition and Meaning (With .NET Examples)]]></title>
      <link>https://www.muhammadshahid.dev/blog/repository-definition-meaning</link>
      <guid>https://www.muhammadshahid.dev/blog/repository-definition-meaning</guid>
      <pubDate>Tue, 08 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Repository definition and meaning explained — what a repository is in software and in .NET. When to use the pattern with EF Core: see the repository pattern guide.]]></description>
    </item>
    <item>
      <title><![CDATA[Error Establishing a Redis Connection in ASP.NET Core]]></title>
      <link>https://www.muhammadshahid.dev/blog/redis-connection-error-aspnet-core</link>
      <guid>https://www.muhammadshahid.dev/blog/redis-connection-error-aspnet-core</guid>
      <pubDate>Tue, 08 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Fix 'error establishing a Redis connection' in ASP.NET Core — connection string, TLS, Azure Cache for Redis, Docker networking, timeout, and fail-open IDistributedCache patterns.]]></description>
    </item>
    <item>
      <title><![CDATA[.NET Interview Questions and Answers: A Topic Map]]></title>
      <link>https://www.muhammadshahid.dev/blog/dotnet-interview-questions-answers</link>
      <guid>https://www.muhammadshahid.dev/blog/dotnet-interview-questions-answers</guid>
      <pubDate>Tue, 08 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[.NET interview questions and answers as a topic map. Use this page to pick a track, then open the linked post that actually holds the scenario answers.]]></description>
    </item>
    <item>
      <title><![CDATA[Deadlock in C# and Operating Systems (Avoidance Explained)]]></title>
      <link>https://www.muhammadshahid.dev/blog/deadlock-csharp-explained</link>
      <guid>https://www.muhammadshahid.dev/blog/deadlock-csharp-explained</guid>
      <pubDate>Tue, 08 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Deadlock definition and avoidance in OS and C# — lock ordering, async deadlocks, and how that differs from SQL Server reader/writer deadlocks (linked separately).]]></description>
    </item>
    <item>
      <title><![CDATA[C# Multithreading Primer for ASP.NET Core]]></title>
      <link>https://www.muhammadshahid.dev/blog/csharp-multithreading-primer</link>
      <guid>https://www.muhammadshahid.dev/blog/csharp-multithreading-primer</guid>
      <pubDate>Tue, 08 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[C# multithreading tutorial in one pass — Thread vs ThreadPool vs Task, async is not multithreading, lock and Interlocked, and which primitive article to open next on ASP.NET Core.]]></description>
    </item>
    <item>
      <title><![CDATA[Callback vs Promise vs Async/Await (C# and JavaScript)]]></title>
      <link>https://www.muhammadshahid.dev/blog/callback-vs-promise-async</link>
      <guid>https://www.muhammadshahid.dev/blog/callback-vs-promise-async</guid>
      <pubDate>Tue, 08 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Callback meaning in async programming — how callbacks differ from promises and async/await, with C# Task and JavaScript Promise examples for ASP.NET Core and Angular teams.]]></description>
    </item>
    <item>
      <title><![CDATA[Caching in .NET: IMemoryCache, Redis, and Object Cache]]></title>
      <link>https://www.muhammadshahid.dev/blog/caching-system-dotnet-imemorycache-redis</link>
      <guid>https://www.muhammadshahid.dev/blog/caching-system-dotnet-imemorycache-redis</guid>
      <pubDate>Tue, 08 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Caching layers for .NET — object cache, in-memory vs distributed, IMemoryCache vs Redis on ASP.NET Core. Includes cache-miss definition and layer mapping.]]></description>
    </item>
    <item>
      <title><![CDATA[Asynchronous Meaning and Definition (With C# Examples)]]></title>
      <link>https://www.muhammadshahid.dev/blog/asynchronous-meaning-definition</link>
      <guid>https://www.muhammadshahid.dev/blog/asynchronous-meaning-definition</guid>
      <pubDate>Tue, 08 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Asynchronous meaning and definition explained plainly — what asynchronous means in programming. Side-by-side async vs sync tables: see the comparison guide.]]></description>
    </item>
    <item>
      <title><![CDATA[Asynchronous Class in C#: Writing Async Methods on a Type]]></title>
      <link>https://www.muhammadshahid.dev/blog/asynchronous-class-csharp</link>
      <guid>https://www.muhammadshahid.dev/blog/asynchronous-class-csharp</guid>
      <pubDate>Tue, 08 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[How to write an asynchronous class in C# — async methods, constructors, async factory pattern, and IAsyncDisposable for proper cleanup.]]></description>
    </item>
    <item>
      <title><![CDATA[Async vs Sync: What's the Difference in Programming?]]></title>
      <link>https://www.muhammadshahid.dev/blog/async-vs-sync-programming</link>
      <guid>https://www.muhammadshahid.dev/blog/async-vs-sync-programming</guid>
      <pubDate>Tue, 08 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Async vs sync explained with tables and C# examples — blocking vs non-blocking I/O and when to use each on ASP.NET Core.]]></description>
    </item>
    <item>
      <title><![CDATA[What Is a Promise in Async Programming?]]></title>
      <link>https://www.muhammadshahid.dev/blog/async-promise-explained</link>
      <guid>https://www.muhammadshahid.dev/blog/async-promise-explained</guid>
      <pubDate>Tue, 08 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Promise meaning in async programming — how C# Task, JavaScript Promise, and futures represent work that will complete later, with ASP.NET Core examples and interview answers.]]></description>
    </item>
    <item>
      <title><![CDATA[IDX10501 Unable to Match Key (kid) in ASP.NET Core JWT]]></title>
      <link>https://www.muhammadshahid.dev/blog/aspnet-core-idx10501-jwt-kid</link>
      <guid>https://www.muhammadshahid.dev/blog/aspnet-core-idx10501-jwt-kid</guid>
      <pubDate>Tue, 08 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Fix IDX10501 JWT kid mismatch in ASP.NET Core — token header kid not in JWKS, signing cert rotation overlap, Authority mismatch, and OpenIddict key refresh.]]></description>
    </item>
    <item>
      <title><![CDATA[API Design Principles for REST and ASP.NET Core]]></title>
      <link>https://www.muhammadshahid.dev/blog/api-design-principles</link>
      <guid>https://www.muhammadshahid.dev/blog/api-design-principles</guid>
      <pubDate>Tue, 08 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[API design principles for production REST APIs — resource naming, versioning, errors, pagination, auth, and idempotency with ASP.NET Core examples.]]></description>
    </item>
    <item>
      <title><![CDATA[SQL Server TempDB Contention on .NET APIs]]></title>
      <link>https://www.muhammadshahid.dev/blog/sql-server-tempdb-contention</link>
      <guid>https://www.muhammadshahid.dev/blog/sql-server-tempdb-contention</guid>
      <pubDate>Mon, 07 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[PAGELATCH_UP on database id 2 is TempDB allocation contention. Multiple equal data files fix it. EF does not need a #temp table to cause this.]]></description>
    </item>
    <item>
      <title><![CDATA[SQL Server Deadlocks and Snapshot Isolation]]></title>
      <link>https://www.muhammadshahid.dev/blog/sql-server-deadlocks-snapshot-isolation</link>
      <guid>https://www.muhammadshahid.dev/blog/sql-server-deadlocks-snapshot-isolation</guid>
      <pubDate>Mon, 07 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Readers blocking writers deadlock an ASP.NET Core API. READ_COMMITTED_SNAPSHOT (RCSI) uses row versions. It does not fix lost updates on the same row.]]></description>
    </item>
    <item>
      <title><![CDATA[IdentityServer Redirect URI Mismatch and Angular Login Loops]]></title>
      <link>https://www.muhammadshahid.dev/blog/identityserver-redirect-uri-login-loop</link>
      <guid>https://www.muhammadshahid.dev/blog/identityserver-redirect-uri-login-loop</guid>
      <pubDate>Mon, 07 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[IdentityServer login loops and redirect_uri mismatch — Duende / OpenIddict client URIs, Angular redirectUrl, post_logout, and PathBase. Not the Identity vs SSO decision.]]></description>
    </item>
    <item>
      <title><![CDATA[EF Core Value Conversions for Enums and VOs]]></title>
      <link>https://www.muhammadshahid.dev/blog/ef-core-value-conversions-enum</link>
      <guid>https://www.muhammadshahid.dev/blog/ef-core-value-conversions-enum</guid>
      <pubDate>Mon, 07 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[EF Core value conversions for enums and value objects: HasConversion maps EmailAddress or enum to one SQL column — and what LINQ cannot query inside a JSON blob.]]></description>
    </item>
    <item>
      <title><![CDATA[Fix SQL Server Parameter Sniffing in EF Core]]></title>
      <link>https://www.muhammadshahid.dev/blog/ef-core-sql-server-parameter-sniffing</link>
      <guid>https://www.muhammadshahid.dev/blog/ef-core-sql-server-parameter-sniffing</guid>
      <pubDate>Mon, 07 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[SQL Server parameter sniffing in EF Core: same LINQ fast for one clinic, 30s timeout for another. How to confirm in Query Store and what to change.]]></description>
    </item>
    <item>
      <title><![CDATA[EF Core Optimistic Concurrency with RowVersion]]></title>
      <link>https://www.muhammadshahid.dev/blog/ef-core-optimistic-concurrency-token</link>
      <guid>https://www.muhammadshahid.dev/blog/ef-core-optimistic-concurrency-token</guid>
      <pubDate>Mon, 07 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[EF Core optimistic concurrency with RowVersion: map SQL Server rowversion as a concurrency token, return 409 on conflict, and stop last-write-wins on encounters.]]></description>
    </item>
    <item>
      <title><![CDATA[EF Core Interview Questions and Answers for .NET Developers]]></title>
      <link>https://www.muhammadshahid.dev/blog/ef-core-interview-questions</link>
      <guid>https://www.muhammadshahid.dev/blog/ef-core-interview-questions</guid>
      <pubDate>Mon, 07 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[EF Core interview questions with production answers — entity relationships, RowVersion concurrency, global query filters, ExecuteUpdate vs SaveChanges, and tenant leaks.]]></description>
    </item>
    <item>
      <title><![CDATA[EF Core SaveChanges Interceptors for Audit Logs]]></title>
      <link>https://www.muhammadshahid.dev/blog/ef-core-interceptors-audit-log</link>
      <guid>https://www.muhammadshahid.dev/blog/ef-core-interceptors-audit-log</guid>
      <pubDate>Mon, 07 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[EF Core SaveChanges interceptors for audit logs: ISaveChangesInterceptor stamps CreatedBy and ModifiedBy from the JWT. Why ExecuteUpdate bypasses it.]]></description>
    </item>
    <item>
      <title><![CDATA[EF Core Global Query Filters for Soft Delete]]></title>
      <link>https://www.muhammadshahid.dev/blog/ef-core-global-query-filters-soft-delete</link>
      <guid>https://www.muhammadshahid.dev/blog/ef-core-global-query-filters-soft-delete</guid>
      <pubDate>Mon, 07 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[EF Core global query filters for soft delete and multi-tenant ClinicId. How HasQueryFilter works — and why IgnoreQueryFilters is how tenant data leaks.]]></description>
    </item>
    <item>
      <title><![CDATA[EF Core ExecuteUpdate vs SaveChanges]]></title>
      <link>https://www.muhammadshahid.dev/blog/ef-core-bulk-update-executeupdate</link>
      <guid>https://www.muhammadshahid.dev/blog/ef-core-bulk-update-executeupdate</guid>
      <pubDate>Mon, 07 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[EF Core ExecuteUpdateAsync runs one set-based UPDATE without loading entities. When to use it for bulk fee schedules — and why it skips SaveChanges interceptors.]]></description>
    </item>
    <item>
      <title><![CDATA[AsNoTracking vs Identity Resolution in EF Core]]></title>
      <link>https://www.muhammadshahid.dev/blog/ef-core-asnotracking-vs-identity-resolution</link>
      <guid>https://www.muhammadshahid.dev/blog/ef-core-asnotracking-vs-identity-resolution</guid>
      <pubDate>Mon, 07 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[AsNoTracking vs identity resolution in EF Core: when no-tracking duplicates Patient objects on every row, and when AsNoTrackingWithIdentityResolution fixes read-only Includes.]]></description>
    </item>
    <item>
      <title><![CDATA[C# ThreadPool Starvation: Sync-Over-Async Causes 504s]]></title>
      <link>https://www.muhammadshahid.dev/blog/csharp-threadpool-starvation-sync-over-async</link>
      <guid>https://www.muhammadshahid.dev/blog/csharp-threadpool-starvation-sync-over-async</guid>
      <pubDate>Mon, 07 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Thread pool starvation is queued work with no free workers. C# .Result and .Wait on ASP.NET Core cause idle-CPU 504s — diagnose with dotnet-counters, then make the call chain async.]]></description>
    </item>
    <item>
      <title><![CDATA[C# TaskCompletionSource: Wrap Legacy Events as Tasks]]></title>
      <link>https://www.muhammadshahid.dev/blog/csharp-taskcompletionsource-legacy-event</link>
      <guid>https://www.muhammadshahid.dev/blog/csharp-taskcompletionsource-legacy-event</guid>
      <pubDate>Mon, 07 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[TaskCompletionSource in C# — wrapping legacy event APIs, controlling Task completion, and bridging callback patterns with async/await.]]></description>
    </item>
    <item>
      <title><![CDATA[C# Task.Yield: Keep WPF and MAUI UI Threads Responsive]]></title>
      <link>https://www.muhammadshahid.dev/blog/csharp-task-yield-ui-thread</link>
      <guid>https://www.muhammadshahid.dev/blog/csharp-task-yield-ui-thread</guid>
      <pubDate>Mon, 07 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Task.Yield in C# — when it yields control back to the caller, why it matters on UI threads, and why it is almost never right in ASP.NET Core.]]></description>
    </item>
    <item>
      <title><![CDATA[C# Task.WhenAll vs WaitAll vs Parallel.ForEachAsync]]></title>
      <link>https://www.muhammadshahid.dev/blog/csharp-task-whenall-vs-parallel-foreach</link>
      <guid>https://www.muhammadshahid.dev/blog/csharp-task-whenall-vs-parallel-foreach</guid>
      <pubDate>Mon, 07 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Task.WhenAll vs Parallel.ForEach in C# — parallel I/O vs CPU work, WhenAll with EF Core gotchas, and cancellation handling.]]></description>
    </item>
    <item>
      <title><![CDATA[C# Task vs Thread vs ThreadPool]]></title>
      <link>https://www.muhammadshahid.dev/blog/csharp-task-vs-thread</link>
      <guid>https://www.muhammadshahid.dev/blog/csharp-task-vs-thread</guid>
      <pubDate>Mon, 07 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[A Task is a promise that work will finish; a Thread is an OS worker. C# async/await is not multithreading — Task vs Thread vs ThreadPool, Sleep vs Delay, and when ValueTask is worth it.]]></description>
    </item>
    <item>
      <title><![CDATA[C# Task.Run vs await on ASP.NET Core]]></title>
      <link>https://www.muhammadshahid.dev/blog/csharp-task-run-aspnet-core</link>
      <guid>https://www.muhammadshahid.dev/blog/csharp-task-run-aspnet-core</guid>
      <pubDate>Mon, 07 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Task.Run queues CPU work on the ThreadPool; await yields the worker during I/O. On ASP.NET Core the request is already on the pool — wrapping ToListAsync makes 504s worse.]]></description>
    </item>
    <item>
      <title><![CDATA[C# SemaphoreSlim WaitAsync: Throttle Outbound API Calls]]></title>
      <link>https://www.muhammadshahid.dev/blog/csharp-semaphore-slim-async-lock</link>
      <guid>https://www.muhammadshahid.dev/blog/csharp-semaphore-slim-async-lock</guid>
      <pubDate>Mon, 07 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[A semaphore is a handful of tickets. SemaphoreSlim.WaitAsync is the async lock for outbound HttpClient — bulkhead (max in flight), why lock cannot await, versus inbound rate limiting.]]></description>
    </item>
    <item>
      <title><![CDATA[C# lock vs Monitor vs Mutex vs Semaphore]]></title>
      <link>https://www.muhammadshahid.dev/blog/csharp-lock-statement-monitor-mutex</link>
      <guid>https://www.muhammadshahid.dev/blog/csharp-lock-statement-monitor-mutex</guid>
      <pubDate>Mon, 07 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[C# lock vs Monitor vs Mutex — when to use each synchronization primitive, reentrance rules, and cross-process locking patterns.]]></description>
    </item>
    <item>
      <title><![CDATA[C# Interlocked CompareExchange: Lock-Free Counters]]></title>
      <link>https://www.muhammadshahid.dev/blog/csharp-interlocked-compareexchange</link>
      <guid>https://www.muhammadshahid.dev/blog/csharp-interlocked-compareexchange</guid>
      <pubDate>Mon, 07 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Interlocked.CompareExchange in C# — lock-free atomic operations, CAS patterns, and when to use Interlocked over lock in .NET.]]></description>
    </item>
    <item>
      <title><![CDATA[C# IAsyncEnumerable: Stream SQL Rows with yield return]]></title>
      <link>https://www.muhammadshahid.dev/blog/csharp-iasyncenumerable-yield-return</link>
      <guid>https://www.muhammadshahid.dev/blog/csharp-iasyncenumerable-yield-return</guid>
      <pubDate>Mon, 07 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[IAsyncEnumerable lets you process SQL rows one at a time instead of loading 100,000 entities into RAM. yield return, AsAsyncEnumerable, EnumeratorCancellation, and streaming HTTP.]]></description>
    </item>
    <item>
      <title><![CDATA[ConfigureAwait(false) in C# Libraries (Not ASP.NET Core)]]></title>
      <link>https://www.muhammadshahid.dev/blog/csharp-configureawait-false-library</link>
      <guid>https://www.muhammadshahid.dev/blog/csharp-configureawait-false-library</guid>
      <pubDate>Mon, 07 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[If you only write ASP.NET Core APIs, skip ConfigureAwait(false). It is a library contract for WPF/MAUI SynchronizationContext — not a Core performance trick, and not a .Result amnesty.]]></description>
    </item>
    <item>
      <title><![CDATA[C# ConcurrentDictionary vs lock: GetOrAdd Can Run Twice]]></title>
      <link>https://www.muhammadshahid.dev/blog/csharp-concurrentdictionary-lock</link>
      <guid>https://www.muhammadshahid.dev/blog/csharp-concurrentdictionary-lock</guid>
      <pubDate>Mon, 07 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[ConcurrentDictionary is a thread-safe map, not a cache policy. GetOrAdd’s factory can run twice, keys must include tenant id, and a lock is still right when you mutate a value in place.]]></description>
    </item>
    <item>
      <title><![CDATA[C# Channel<T> Producer-Consumer vs BlockingCollection]]></title>
      <link>https://www.muhammadshahid.dev/blog/csharp-channel-producer-consumer</link>
      <guid>https://www.muhammadshahid.dev/blog/csharp-channel-producer-consumer</guid>
      <pubDate>Mon, 07 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[C# Channel producer-consumer pattern — bounded vs unbounded channels, backpressure, cancellation, and production use cases in ASP.NET Core.]]></description>
    </item>
    <item>
      <title><![CDATA[C# CancellationToken in ASP.NET Core]]></title>
      <link>https://www.muhammadshahid.dev/blog/csharp-cancellationtoken-aspnet-core</link>
      <guid>https://www.muhammadshahid.dev/blog/csharp-cancellationtoken-aspnet-core</guid>
      <pubDate>Mon, 07 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[A CancellationToken is a cooperative please-stop flag. In ASP.NET Core, bind RequestAborted, pass it to EF Core and HttpClient, link timeouts, and do not log client abort as a 500.]]></description>
    </item>
    <item>
      <title><![CDATA[C# BackgroundService in ASP.NET Core: Scopes and Tokens]]></title>
      <link>https://www.muhammadshahid.dev/blog/csharp-backgroundservice-hosted-service-async</link>
      <guid>https://www.muhammadshahid.dev/blog/csharp-backgroundservice-hosted-service-async</guid>
      <pubDate>Mon, 07 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[A BackgroundService is a hosted worker the generic host starts and stops. Use stoppingToken, not RequestAborted. Create a DI scope per message. Task.Run after Ok() is not a worker.]]></description>
    </item>
    <item>
      <title><![CDATA[C# AsyncLocal vs ThreadLocal: Context Across await]]></title>
      <link>https://www.muhammadshahid.dev/blog/csharp-asynclocal-vs-threadlocal</link>
      <guid>https://www.muhammadshahid.dev/blog/csharp-asynclocal-vs-threadlocal</guid>
      <pubDate>Mon, 07 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[AsyncLocal vs ThreadLocal in C# — how async context flows across awaits, when each is appropriate, and common misuse patterns.]]></description>
    </item>
    <item>
      <title><![CDATA[Unable to Resolve Service for Type in ASP.NET Core DI]]></title>
      <link>https://www.muhammadshahid.dev/blog/aspnet-core-unable-to-resolve-service</link>
      <guid>https://www.muhammadshahid.dev/blog/aspnet-core-unable-to-resolve-service</guid>
      <pubDate>Mon, 07 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Fix the ASP.NET Core 'Unable to resolve service' DI error — lifetime mismatches, missing registrations, and captive dependency traps.]]></description>
    </item>
    <item>
      <title><![CDATA[A Possible Object Cycle Was Detected in ASP.NET Core JSON]]></title>
      <link>https://www.muhammadshahid.dev/blog/aspnet-core-json-object-cycle</link>
      <guid>https://www.muhammadshahid.dev/blog/aspnet-core-json-object-cycle</guid>
      <pubDate>Mon, 07 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Fix System.Text.Json object cycle detected in ASP.NET Core — EF navigation graphs, why ReferenceHandler.Preserve breaks Angular, and DTO projection that actually ships.]]></description>
    </item>
    <item>
      <title><![CDATA[IDX10503 Signature Validation Failed in ASP.NET Core JWT]]></title>
      <link>https://www.muhammadshahid.dev/blog/aspnet-core-idx10503-jwt-signature</link>
      <guid>https://www.muhammadshahid.dev/blog/aspnet-core-idx10503-jwt-signature</guid>
      <pubDate>Mon, 07 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Fix IDX10503 JWT signature validation failed in ASP.NET Core — wrong HMAC secret, disposed RSA keys, opaque Identity tokens, and how it differs from IDX10501 kid mismatch.]]></description>
    </item>
    <item>
      <title><![CDATA[Headers are read-only, response has started in ASP.NET Core]]></title>
      <link>https://www.muhammadshahid.dev/blog/aspnet-core-headers-readonly-response-started</link>
      <guid>https://www.muhammadshahid.dev/blog/aspnet-core-headers-readonly-response-started</guid>
      <pubDate>Mon, 07 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Fix InvalidOperationException Headers are read-only response has started — IExceptionHandler after WriteAsync, streaming exports, Angular CORS errors, and the HasStarted guard.]]></description>
    </item>
    <item>
      <title><![CDATA[No XML encryptor found in ASP.NET Core Data Protection]]></title>
      <link>https://www.muhammadshahid.dev/blog/aspnet-core-data-protection-xml-encryptor</link>
      <guid>https://www.muhammadshahid.dev/blog/aspnet-core-data-protection-xml-encryptor</guid>
      <pubDate>Mon, 07 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Fix No XML encryptor found in ASP.NET Core Data Protection — key ring persistence for Docker, App Service scale-out, antiforgery cookies, and the XML encryptor that is not JWT signing.]]></description>
    </item>
    <item>
      <title><![CDATA[ASP.NET Core 401 vs 403: Challenge vs Forbid]]></title>
      <link>https://www.muhammadshahid.dev/blog/aspnet-core-401-vs-403</link>
      <guid>https://www.muhammadshahid.dev/blog/aspnet-core-401-vs-403</guid>
      <pubDate>Mon, 07 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[ASP.NET Core 401 Unauthorized vs 403 Forbidden — Challenge vs Forbid, JWT bearer mapping, Angular interceptor rules, and why logging out on 403 is wrong.]]></description>
    </item>
    <item>
      <title><![CDATA[ASP.NET Core Middleware Order for Auth and CORS]]></title>
      <link>https://www.muhammadshahid.dev/blog/aspnet-core-middleware-order</link>
      <guid>https://www.muhammadshahid.dev/blog/aspnet-core-middleware-order</guid>
      <pubDate>Sun, 06 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[ASP.NET Core middleware order for production — forwarded headers, exception handler, CORS before auth, rate limiting, and Swagger placement behind Azure and Angular SPAs.]]></description>
    </item>
    <item>
      <title><![CDATA[IOptions vs IOptionsSnapshot vs IOptionsMonitor in .NET]]></title>
      <link>https://www.muhammadshahid.dev/blog/aspnet-core-ioptions-snapshot-monitor</link>
      <guid>https://www.muhammadshahid.dev/blog/aspnet-core-ioptions-snapshot-monitor</guid>
      <pubDate>Sat, 05 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Options pattern in C# — when to inject IOptions, IOptionsSnapshot, or IOptionsMonitor, AddOptions vs Configure, named options, and the production bugs I see when teams pick the wrong one.]]></description>
    </item>
    <item>
      <title><![CDATA[C# Expert-Level Interview Questions]]></title>
      <link>https://www.muhammadshahid.dev/blog/csharp-expert-interview-questions</link>
      <guid>https://www.muhammadshahid.dev/blog/csharp-expert-interview-questions</guid>
      <pubDate>Fri, 04 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[C# expert level interview questions with production answers — IAsyncEnumerable exports, cancellation across MediatR, ConcurrentDictionary caches, Span parsers, and bounded Channels.]]></description>
    </item>
    <item>
      <title><![CDATA[appsettings.json and ASP.NET Core Configuration]]></title>
      <link>https://www.muhammadshahid.dev/blog/aspnet-core-appsettings-localappsettings</link>
      <guid>https://www.muhammadshahid.dev/blog/aspnet-core-appsettings-localappsettings</guid>
      <pubDate>Thu, 03 Sep 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[What is appsettings.json in ASP.NET Core — appsettings.{Environment}.json, ASPNETCORE_ENVIRONMENT, user secrets, and why localappsettings.json is not a real framework file.]]></description>
    </item>
    <item>
      <title><![CDATA[Serilog PII Redaction for Healthcare ASP.NET Core APIs]]></title>
      <link>https://www.muhammadshahid.dev/blog/serilog-pii-redaction-healthcare-aspnet-core</link>
      <guid>https://www.muhammadshahid.dev/blog/serilog-pii-redaction-healthcare-aspnet-core</guid>
      <pubDate>Mon, 17 Aug 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Serilog PII redaction for healthcare ASP.NET Core APIs — HIPAA-safe logging, destructuring policies, and masking PHI in structured logs.]]></description>
    </item>
    <item>
      <title><![CDATA[IdentityServer4 to OpenIddict Migration Checklist]]></title>
      <link>https://www.muhammadshahid.dev/blog/identityserver4-openiddict-migration-checklist</link>
      <guid>https://www.muhammadshahid.dev/blog/identityserver4-openiddict-migration-checklist</guid>
      <pubDate>Mon, 17 Aug 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Leaving IdentityServer / IdentityServer4 for OpenIddict on ASP.NET Core — client inventory, keys, Angular OIDC breaks, and a cutover checklist from healthcare and SaaS work.]]></description>
    </item>
    <item>
      <title><![CDATA[What is an identity server in ASP.NET Core?]]></title>
      <link>https://www.muhammadshahid.dev/blog/identityserver-vs-aspnet-identity</link>
      <guid>https://www.muhammadshahid.dev/blog/identityserver-vs-aspnet-identity</guid>
      <pubDate>Mon, 17 Aug 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[What is an identity server in ASP.NET Core? When Identity plus JWT is enough, and when OpenIddict or Duende is the SSO answer.]]></description>
    </item>
    <item>
      <title><![CDATA[Duende BFF vs Custom YARP BFF for Angular and ASP.NET Core]]></title>
      <link>https://www.muhammadshahid.dev/blog/duende-bff-vs-yarp-custom-bff</link>
      <guid>https://www.muhammadshahid.dev/blog/duende-bff-vs-yarp-custom-bff</guid>
      <pubDate>Mon, 17 Aug 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Duende BFF vs custom YARP BFF for Angular ASP.NET Core — buy vs build, OIDC session, CSRF, licensing tradeoffs, and failure modes at 2 a.m.]]></description>
    </item>
    <item>
      <title><![CDATA[FluentValidation in ASP.NET Core: One Error Envelope]]></title>
      <link>https://www.muhammadshahid.dev/blog/aspnet-core-api-validation</link>
      <guid>https://www.muhammadshahid.dev/blog/aspnet-core-api-validation</guid>
      <pubDate>Mon, 17 Aug 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[FluentValidation in ASP.NET Core without the deprecated AspNetCore package — one ProblemDetails envelope, field errors Angular forms can bind, and validation in ASP.NET APIs.]]></description>
    </item>
    <item>
      <title><![CDATA[HttpOnly Cookie for Angular Refresh Tokens]]></title>
      <link>https://www.muhammadshahid.dev/blog/refresh-token-httponly-cookie-angular-aspnet-core</link>
      <guid>https://www.muhammadshahid.dev/blog/refresh-token-httponly-cookie-angular-aspnet-core</guid>
      <pubDate>Sun, 16 Aug 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[HttpOnly cookie refresh tokens for Angular and ASP.NET Core JWT — vs localStorage and BFF, cookie flags, withCredentials, CORS credentials, and CSRF defense.]]></description>
    </item>
    <item>
      <title><![CDATA[Keyed Services in ASP.NET Core (FromKeyedServices)]]></title>
      <link>https://www.muhammadshahid.dev/blog/keyed-services-aspnet-core-fromkeyedservices</link>
      <guid>https://www.muhammadshahid.dev/blog/keyed-services-aspnet-core-fromkeyedservices</guid>
      <pubDate>Sun, 16 Aug 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[How I use AddKeyedScoped and FromKeyedServices in ASP.NET Core for closed sets of implementations — EDI vs FHIR clients, tenant notifiers — and when a factory is still the honest design.]]></description>
    </item>
    <item>
      <title><![CDATA[EF Core Cartesian Explosion: Two Collection Includes]]></title>
      <link>https://www.muhammadshahid.dev/blog/ef-core-cartesian-explosion-multiple-include</link>
      <guid>https://www.muhammadshahid.dev/blog/ef-core-cartesian-explosion-multiple-include</guid>
      <pubDate>Sun, 16 Aug 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Cartesian explosion in EF Core: two collection Includes multiply SQL rows (lines × events). How to confirm in SSMS and fix with split query or fewer Includes.]]></description>
    </item>
    <item>
      <title><![CDATA[Angular Interceptor: Queue Concurrent 401s]]></title>
      <link>https://www.muhammadshahid.dev/blog/angular-interceptor-401-refresh-queue</link>
      <guid>https://www.muhammadshahid.dev/blog/angular-interceptor-401-refresh-queue</guid>
      <pubDate>Sun, 16 Aug 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Fix concurrent 401 refresh stampede in Angular against ASP.NET Core JWT rotation — single-flight RxJS queue, shareReplay pitfalls, skip rules, and POST retry safety.]]></description>
    </item>
    <item>
      <title><![CDATA[MediatR Commercial License vs Wolverine (and When to Stay)]]></title>
      <link>https://www.muhammadshahid.dev/blog/mediatr-license-wolverine-alternative</link>
      <guid>https://www.muhammadshahid.dev/blog/mediatr-license-wolverine-alternative</guid>
      <pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[A practical ASP.NET Core decision guide after MediatR’s commercial licensing: when I stay on MediatR, when I migrate to Wolverine, and when CQRS does not need a mediator at all.]]></description>
    </item>
    <item>
      <title><![CDATA[MapIdentityApi Opaque Tokens vs JWT]]></title>
      <link>https://www.muhammadshahid.dev/blog/mapidentityapi-opaque-token-vs-jwt</link>
      <guid>https://www.muhammadshahid.dev/blog/mapidentityapi-opaque-token-vs-jwt</guid>
      <pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[MapIdentityApi opaque tokens vs JWT in ASP.NET Core — when to use each, cookie vs bearer, and the trade-offs with Angular SPAs.]]></description>
    </item>
    <item>
      <title><![CDATA[EF Core N+1 vs Include vs AsSplitQuery]]></title>
      <link>https://www.muhammadshahid.dev/blog/ef-core-nplus1-include-vs-assplitquery</link>
      <guid>https://www.muhammadshahid.dev/blog/ef-core-nplus1-include-vs-assplitquery</guid>
      <pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[EF Core N+1 problem: extra SQL round-trips when a loop touches navigation properties. How Include, projection, and AsSplitQuery each fix a different bug.]]></description>
    </item>
    <item>
      <title><![CDATA[EDI X12 Parsers in C# and .NET]]></title>
      <link>https://www.muhammadshahid.dev/blog/edi-x12-parser-csharp-dotnet</link>
      <guid>https://www.muhammadshahid.dev/blog/edi-x12-parser-csharp-dotnet</guid>
      <pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Parsing X12 EDI in C# for healthcare APIs — envelope vs transaction sets, 837 pipelines, what libraries do, and how ASP.NET Core should host the work.]]></description>
    </item>
    <item>
      <title><![CDATA[BFF Pattern with ASP.NET Core, Angular, and YARP]]></title>
      <link>https://www.muhammadshahid.dev/blog/bff-pattern-aspnet-core-angular-yarp</link>
      <guid>https://www.muhammadshahid.dev/blog/bff-pattern-aspnet-core-angular-yarp</guid>
      <pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Backend-for-Frontend BFF pattern with ASP.NET Core, Angular, and YARP — cookie sessions, server-side tokens, CSRF defense, and when to skip SPA-held JWTs.]]></description>
    </item>
    <item>
      <title><![CDATA[ASP.NET Core JWT Refresh Token Rotation]]></title>
      <link>https://www.muhammadshahid.dev/blog/aspnet-core-jwt-refresh-token-rotation</link>
      <guid>https://www.muhammadshahid.dev/blog/aspnet-core-jwt-refresh-token-rotation</guid>
      <pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[ASP.NET Core JWT refresh token rotation guide — hashed storage, family revocation, reuse detection, concurrency locks, and the Angular single-flight contract.]]></description>
    </item>
    <item>
      <title><![CDATA[AI in .NET with Semantic Kernel]]></title>
      <link>https://www.muhammadshahid.dev/blog/dotnet-ai-semantic-kernel-aspnet-core</link>
      <guid>https://www.muhammadshahid.dev/blog/dotnet-ai-semantic-kernel-aspnet-core</guid>
      <pubDate>Wed, 12 Aug 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Semantic Kernel and LLMs in ASP.NET Core — prompts, plugins, safety, caching, and how Angular clients call AI features without leaking secrets or tokens.]]></description>
    </item>
    <item>
      <title><![CDATA[C# Async Await Interview Questions]]></title>
      <link>https://www.muhammadshahid.dev/blog/csharp-async-await-interview-questions</link>
      <guid>https://www.muhammadshahid.dev/blog/csharp-async-await-interview-questions</guid>
      <pubDate>Wed, 12 Aug 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[C# async await interview questions with scenario answers — .Result starvation, async void, Task.WhenAll with EF Core, CancellationToken, and ValueTask.]]></description>
    </item>
    <item>
      <title><![CDATA[C# Async Await and CancellationToken on ASP.NET Core]]></title>
      <link>https://www.muhammadshahid.dev/blog/csharp-async-await-aspnet-core</link>
      <guid>https://www.muhammadshahid.dev/blog/csharp-async-await-aspnet-core</guid>
      <pubDate>Wed, 12 Aug 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Await on the ASP.NET Core request path and pass CancellationToken into SQL and HTTP. Blocking the thread pool is a separate article, not this one.]]></description>
    </item>
    <item>
      <title><![CDATA[ASP.NET Core Interview Questions: Scenarios]]></title>
      <link>https://www.muhammadshahid.dev/blog/aspnet-core-interview-questions-scenarios</link>
      <guid>https://www.muhammadshahid.dev/blog/aspnet-core-interview-questions-scenarios</guid>
      <pubDate>Wed, 12 Aug 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[ASP.NET Core and Web API interview questions with scenario answers — DI captive dependencies, JWT with Angular, middleware order, async starvation, EF Core slowness, and production tradeoffs.]]></description>
    </item>
    <item>
      <title><![CDATA[SOLID Principles in C# and ASP.NET Core]]></title>
      <link>https://www.muhammadshahid.dev/blog/solid-principles-aspnet-core</link>
      <guid>https://www.muhammadshahid.dev/blog/solid-principles-aspnet-core</guid>
      <pubDate>Tue, 11 Aug 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[SOLID principles in C# for ASP.NET Core — detailed SRP, OCP, LSP, ISP, DIP examples with DI, Angular-facing APIs, anti-patterns, and refactor checklists from production systems.]]></description>
    </item>
    <item>
      <title><![CDATA[Angular Interview Questions with ASP.NET Core]]></title>
      <link>https://www.muhammadshahid.dev/blog/angular-interview-questions-aspnet-core</link>
      <guid>https://www.muhammadshahid.dev/blog/angular-interview-questions-aspnet-core</guid>
      <pubDate>Tue, 11 Aug 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Angular interview questions for ASP.NET Core teams — detailed scenario answers on auth guards, JWT interceptors, Signals vs RxJS, CORS myths, RBAC, and SPA performance.]]></description>
    </item>
    <item>
      <title><![CDATA[ASP.NET Core Minimal APIs: When to Use Them]]></title>
      <link>https://www.muhammadshahid.dev/blog/aspnet-core-minimal-apis</link>
      <guid>https://www.muhammadshahid.dev/blog/aspnet-core-minimal-apis</guid>
      <pubDate>Mon, 10 Aug 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[ASP.NET Core Minimal APIs guide — MapGet, MapGroup, DI, validation, OpenAPI, JWT auth, and when controllers still win for Angular-backed products.]]></description>
    </item>
    <item>
      <title><![CDATA[Angular Signals with ASP.NET Core APIs]]></title>
      <link>https://www.muhammadshahid.dev/blog/angular-signals-aspnet-core</link>
      <guid>https://www.muhammadshahid.dev/blog/angular-signals-aspnet-core</guid>
      <pubDate>Sun, 09 Aug 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Angular Signals for API-driven apps — load state from ASP.NET Core, computed UI flags, RxJS interop, and when Signals beat BehaviorSubject for SPA state.]]></description>
    </item>
    <item>
      <title><![CDATA[ASP.NET Core Rate Limiting for APIs]]></title>
      <link>https://www.muhammadshahid.dev/blog/aspnet-core-rate-limiting</link>
      <guid>https://www.muhammadshahid.dev/blog/aspnet-core-rate-limiting</guid>
      <pubDate>Tue, 04 Aug 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Microsoft.AspNetCore.RateLimiting in ASP.NET Core — fixed/sliding windows, per-user policies, 429 responses for Angular clients, and multi-instance pitfalls.]]></description>
    </item>
    <item>
      <title><![CDATA[ASP.NET Core Global Exception Handling for Angular APIs]]></title>
      <link>https://www.muhammadshahid.dev/blog/aspnet-core-global-exception-handling</link>
      <guid>https://www.muhammadshahid.dev/blog/aspnet-core-global-exception-handling</guid>
      <pubDate>Tue, 04 Aug 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Set up ASP.NET Core global exception handling with ProblemDetails so Angular forms show consistent errors — middleware vs IExceptionHandler, 400 vs 500, and what not to leak.]]></description>
    </item>
    <item>
      <title><![CDATA[IHttpClientFactory: Stop Socket Exhaustion]]></title>
      <link>https://www.muhammadshahid.dev/blog/ihttpclientfactory-aspnet-core</link>
      <guid>https://www.muhammadshahid.dev/blog/ihttpclientfactory-aspnet-core</guid>
      <pubDate>Mon, 03 Aug 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Use IHttpClientFactory in ASP.NET Core to avoid HttpClient socket exhaustion and stale DNS — named clients, typed clients, Polly retries, and mistakes that still break production APIs.]]></description>
    </item>
    <item>
      <title><![CDATA[Redis Caching in ASP.NET Core: When It Lies]]></title>
      <link>https://www.muhammadshahid.dev/blog/redis-caching-aspnet-core</link>
      <guid>https://www.muhammadshahid.dev/blog/redis-caching-aspnet-core</guid>
      <pubDate>Sun, 02 Aug 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Redis as a distributed cache in ASP.NET Core — IDistributedCache, stampede control, invalidation, and tenant-aware keys. Connection failures: see the Redis connection fix guide.]]></description>
    </item>
    <item>
      <title><![CDATA[Modular Monolith vs Microservices in .NET]]></title>
      <link>https://www.muhammadshahid.dev/blog/modular-monolith-vs-microservices-dotnet</link>
      <guid>https://www.muhammadshahid.dev/blog/modular-monolith-vs-microservices-dotnet</guid>
      <pubDate>Sun, 02 Aug 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Modular monolith vs microservices for .NET — when to split C# services, module boundaries, data ownership, Angular contract stability, and migration path.]]></description>
    </item>
    <item>
      <title><![CDATA[Strategy Pattern in C#: Replace If-Else With Behavior Swaps]]></title>
      <link>https://www.muhammadshahid.dev/blog/csharp-strategy-pattern</link>
      <guid>https://www.muhammadshahid.dev/blog/csharp-strategy-pattern</guid>
      <pubDate>Sat, 01 Aug 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Strategy Pattern in C# for ASP.NET Core — swap pricing, validation, or export algorithms without giant if-else blocks, and register strategies with dependency injection.]]></description>
    </item>
    <item>
      <title><![CDATA[Angular Auth Guard with ASP.NET Core JWT]]></title>
      <link>https://www.muhammadshahid.dev/blog/angular-auth-guard-aspnet-core</link>
      <guid>https://www.muhammadshahid.dev/blog/angular-auth-guard-aspnet-core</guid>
      <pubDate>Sat, 01 Aug 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Angular auth guard and CanActivateFn with ASP.NET Core JWT — route protection, role guards, token expiry checks, returnUrl safety, and why guards are UX not API security.]]></description>
    </item>
    <item>
      <title><![CDATA[Dependency Injection in ASP.NET Core: Lifetimes Done Right]]></title>
      <link>https://www.muhammadshahid.dev/blog/aspnet-core-dependency-injection</link>
      <guid>https://www.muhammadshahid.dev/blog/aspnet-core-dependency-injection</guid>
      <pubDate>Fri, 31 Jul 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[C# dependency injection in ASP.NET Core — AddTransient vs AddScoped vs AddSingleton, what a transient dependency is, captive dependencies, and habits that keep .NET APIs testable.]]></description>
    </item>
    <item>
      <title><![CDATA[Factory Pattern in C# with ASP.NET Core Dependency Injection]]></title>
      <link>https://www.muhammadshahid.dev/blog/csharp-factory-pattern</link>
      <guid>https://www.muhammadshahid.dev/blog/csharp-factory-pattern</guid>
      <pubDate>Thu, 30 Jul 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[How to use the Factory Pattern in C# with ASP.NET Core DI — replace brittle switch statements, use factory delegates and keyed services, and know when a real factory class is worth it.]]></description>
    </item>
    <item>
      <title><![CDATA[Freelance .NET + Angular Project Checklist Before You Start]]></title>
      <link>https://www.muhammadshahid.dev/blog/freelance-dotnet-project-checklist</link>
      <guid>https://www.muhammadshahid.dev/blog/freelance-dotnet-project-checklist</guid>
      <pubDate>Tue, 28 Jul 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[A discovery checklist for freelance ASP.NET Core and Angular engagements — scope, auth, hosting, and handoff criteria that prevent costly surprises.]]></description>
    </item>
    <item>
      <title><![CDATA[Repository Pattern in .NET — Useful vs Overkill]]></title>
      <link>https://www.muhammadshahid.dev/blog/repository-pattern-dotnet</link>
      <guid>https://www.muhammadshahid.dev/blog/repository-pattern-dotnet</guid>
      <pubDate>Sun, 05 Jul 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Repository pattern in C# with EF Core — when named queries earn their keep vs generic IRepository ceremony on healthcare and eCommerce ASP.NET Core APIs.]]></description>
    </item>
    <item>
      <title><![CDATA[Azure Blob Storage with ASP.NET Core File Uploads]]></title>
      <link>https://www.muhammadshahid.dev/blog/azure-blob-aspnet-core-uploads</link>
      <guid>https://www.muhammadshahid.dev/blog/azure-blob-aspnet-core-uploads</guid>
      <pubDate>Sat, 20 Jun 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Practical ASP.NET Core patterns for uploading files to Azure Blob Storage — validation, private containers, SAS, metadata, and Angular-friendly APIs.]]></description>
    </item>
    <item>
      <title><![CDATA[SignalR Real-Time Patterns in ASP.NET Core]]></title>
      <link>https://www.muhammadshahid.dev/blog/signalr-aspnet-core-realtime</link>
      <guid>https://www.muhammadshahid.dev/blog/signalr-aspnet-core-realtime</guid>
      <pubDate>Thu, 18 Jun 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[ASP.NET Core SignalR for real-time features — hubs, Angular SignalR client, authentication, scale-out with Redis backplane.]]></description>
    </item>
    <item>
      <title><![CDATA[ASP.NET Core JWT Auth: Issuance, Validation, Lifetimes]]></title>
      <link>https://www.muhammadshahid.dev/blog/aspnet-core-jwt-auth</link>
      <guid>https://www.muhammadshahid.dev/blog/aspnet-core-jwt-auth</guid>
      <pubDate>Fri, 12 Jun 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[ASP.NET Core JWT checklist for issuance, validation, and token lifetimes only. Refresh rotation and the Angular interceptor each have their own post.]]></description>
    </item>
    <item>
      <title><![CDATA[Clean Architecture in ASP.NET Core Without Over-Engineering]]></title>
      <link>https://www.muhammadshahid.dev/blog/clean-architecture-aspnet-core</link>
      <guid>https://www.muhammadshahid.dev/blog/clean-architecture-aspnet-core</guid>
      <pubDate>Thu, 28 May 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Pragmatic Clean Architecture in C# / ASP.NET Core — Onion vs Clean, domain boundaries, three-project layout, and when to skip ceremony on SaaS and eCommerce APIs.]]></description>
    </item>
    <item>
      <title><![CDATA[EF Core and SQL Server Performance]]></title>
      <link>https://www.muhammadshahid.dev/blog/ef-core-sql-performance</link>
      <guid>https://www.muhammadshahid.dev/blog/ef-core-sql-performance</guid>
      <pubDate>Sun, 10 May 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[EF Core and SQL Server performance: N+1 queries, projections, AsNoTracking, indexes, and reporting pain that only shows under real data volume.]]></description>
    </item>
    <item>
      <title><![CDATA[MediatR and CQRS-Lite in ASP.NET Core]]></title>
      <link>https://www.muhammadshahid.dev/blog/mediatr-cqrs-aspnet-core</link>
      <guid>https://www.muhammadshahid.dev/blog/mediatr-cqrs-aspnet-core</guid>
      <pubDate>Tue, 28 Apr 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[MediatR in C# / ASP.NET Core — when CQRS-lite handlers and pipeline behaviors help a product team ship faster, and when extra folders slow healthcare and SaaS delivery down.]]></description>
    </item>
    <item>
      <title><![CDATA[Angular + .NET: Integration Habits That Reduce Rework]]></title>
      <link>https://www.muhammadshahid.dev/blog/angular-dotnet-integration</link>
      <guid>https://www.muhammadshahid.dev/blog/angular-dotnet-integration</guid>
      <pubDate>Mon, 20 Apr 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Angular and ASP.NET Core integration habits — DTO contracts, error envelopes, pagination metadata, datetime policy, and CORS decisions that stop rework.]]></description>
    </item>
    <item>
      <title><![CDATA[Dockerizing .NET API and Angular for Reproducible Local Dev]]></title>
      <link>https://www.muhammadshahid.dev/blog/docker-dotnet-angular-local</link>
      <guid>https://www.muhammadshahid.dev/blog/docker-dotnet-angular-local</guid>
      <pubDate>Thu, 02 Apr 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[.NET API, Angular, and SQL Server via Docker Compose — reproducible local environments for marketplace stacks without the 'works on my machine' problem.]]></description>
    </item>
    <item>
      <title><![CDATA[Azure App Service Go-Live Checklist for ASP.NET Core]]></title>
      <link>https://www.muhammadshahid.dev/blog/azure-app-service-aspnet-core</link>
      <guid>https://www.muhammadshahid.dev/blog/azure-app-service-aspnet-core</guid>
      <pubDate>Fri, 20 Mar 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Go-live checklist for ASP.NET Core on Azure App Service: deployment slots, secrets, health checks, and Data Protection keys. Not a zip-deploy tutorial.]]></description>
    </item>
    <item>
      <title><![CDATA[ASP.NET Core RBAC: Named Role Policies and 403 vs 401]]></title>
      <link>https://www.muhammadshahid.dev/blog/aspnet-core-rbac-guide</link>
      <guid>https://www.muhammadshahid.dev/blog/aspnet-core-rbac-guide</guid>
      <pubDate>Sun, 08 Mar 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[ASP.NET Core RBAC with named role policies, and why a failed policy returns 403 rather than 401. Hiding a button in the UI is not enforcement.]]></description>
    </item>
    <item>
      <title><![CDATA[Angular JWT Interceptors for ASP.NET Core APIs]]></title>
      <link>https://www.muhammadshahid.dev/blog/angular-jwt-interceptors</link>
      <guid>https://www.muhammadshahid.dev/blog/angular-jwt-interceptors</guid>
      <pubDate>Sun, 22 Feb 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Angular HTTP interceptors for ASP.NET Core JWT — bearer attach, in-memory access tokens, and single-flight refresh overview. Concurrent 401 queues and 401 vs 403 have dedicated guides.]]></description>
    </item>
    <item>
      <title><![CDATA[EF Core Specification Pattern for Catalog Queries]]></title>
      <link>https://www.muhammadshahid.dev/blog/ef-core-specification-pattern</link>
      <guid>https://www.muhammadshahid.dev/blog/ef-core-specification-pattern</guid>
      <pubDate>Thu, 05 Feb 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[EF Core specification pattern for catalog queries: reusable filters, paging, and counts that stay aligned across API lists and export jobs.]]></description>
    </item>
    <item>
      <title><![CDATA[Fix CORS Between Angular and ASP.NET Core]]></title>
      <link>https://www.muhammadshahid.dev/blog/cors-angular-aspnet-core</link>
      <guid>https://www.muhammadshahid.dev/blog/cors-angular-aspnet-core</guid>
      <pubDate>Sun, 18 Jan 2026 00:00:00 GMT</pubDate>
      <description><![CDATA[Fix CORS between Angular and ASP.NET Core — exact origins, AllowCredentials, OPTIONS preflight, middleware order, Azure App Service, and cookie-based JWT refresh.]]></description>
    </item>
  </channel>
</rss>
