Designing for Nullability in C#

With Nullable Reference Types (NRTs) enabled by default in .NET 6 templates, designing APIs that clearly communicate nullability is no longer optional—it’s expected. Enabling NRTs Guard Clauses Use the new .NET 6 helper to throw if null. Key Takeaways Use `string?` to explicitly mark nullable strings. Use `!` (null-forgiving operator) sparingly—only when you truly know […]

Read more →

GraphQL vs gRPC vs REST: The 2021 Guide

Choosing the right API paradigm is critical. It’s not about which is “better,” but which fits the consumption model. Decision Matrix Feature REST gRPC GraphQL Protocol HTTP/1.1 HTTP/2 HTTP/1.1 or 2 Data Format JSON Protobuf (Binary) JSON Use Case Public APIs Internal Microservices Mobile/Frontend BFF Browser Support Native Requires Proxy (gRPC-Web) Native Why GraphQL for […]

Read more →

Azure Container Apps: KEDA and Dapr Managed

Azure Container Apps (ACA) is the “Serverless Containers” offering we’ve been waiting for. Built on Kubernetes but hiding the cluster, it integrates **KEDA** (for event-driven scaling) and **Dapr** (for building blocks) natively. Scaling to Zero Unlike App Service, ACA can scale to 0 replicas when no events are processing, saving money. Dapr Integration Enable Dapr […]

Read more →

AKS Network Policy: Locking Down Traffic

By default, all pods in a Kubernetes cluster can talk to each other. This is a security risk. If a frontend pod is compromised, the attacker can scan your database pod. Network Policies act as an internal firewall. Deny All Ingress Start by blocking everything. Allow Frontend to Backend Key Takeaways You must enable a […]

Read more →

GitHub Copilot: The AI Revolution in Code

GitHub Copilot has officially entered Technical Preview. Having used it for a month, my workflow has fundamentally changed. It is not just autocomplete; it is idea generation. Context Awareness Copilot reads your open tabs. If I have a `User.cs` file open and I start writing a SQL query in `UserRepository.cs`, it correctly infers the column […]

Read more →