Reflection is slow. It happens at runtime, bypasses type safety, and prevents trimming. Source Generators solve this by generating code at compile time. In this guide, we build a generator that automatically implements a `MapTo` method for DTOs, replacing AutoMapper. The Goal The Generator Logic Key Takeaways Source Generators enable **Zero-Overhead abstractions**. They are essential […]
Read more βAuthor: Nithin Mohan TK
Visual Studio 2019 v16.9 Released
The latest update to VS 2019 is out. While we wait for VS 2022, 16.9 brings some solid stability fixes. Features Git Tooling: continued improvements to the new Git experience. C++: Address Sanitizer handling improved. .NET Core Debugging: improvements to auto-decompilation of external sources. The biggest news is actually what’s coming next: 64-bit Visual Studio […]
Read more βTerraform vs Azure Bicep: An Honest Comparison
Should you use Terraform or Bicep? This is the most common question in Azure DevOps today. Terraform Wins When… Multi-Cloud: You need to deploy to AWS, Azure, and Datadog in the same pipeline. State Management: You need complex state manipulation (importing existing resources). Bicep Wins When… Azure Native: You only use Azure. Day 0 support […]
Read more βSecuring SPAs: The Backend for Frontend (BFF) Pattern
Storing Access Tokens (JWT) in LocalStorage is insecure (XSS vulnerability). Storing them in HttpOnly cookies is safer, but SPAs can’t read cookies. The solution? The **Backend for Frontend (BFF)** pattern. The Architecture Using YARP (Yet Another Reverse Proxy) Microsoft’s YARP is the perfect tool to build a .NET BFF. Key Takeaways **Zero Tokens in Browser**: […]
Read more βHigh Performance C#: Span and Memory
`Span<T>` allows you to work with contiguous memory regions (Arrays, Stack, Native Heap) without allocating new objects. It’s the secret sauce behind Kestrel’s speed. Slicing without Allocation Stackalloc Allocate memory on the stack (super fast, auto-cleaned) instead of the heap (GC pressure). Key Takeaways `Span<T>` is a `ref struct`, meaning it can only live on […]
Read more βAzure Durable Functions: Fan-Out/Fan-In Pattern
The Fan-Out/Fan-In pattern allows you to execute tasks in parallel and then aggregate the results. This is famously difficult in standard serverless, but trivial with Durable Functions. The Orchestrator How it Scales Key Takeaways The Orchestrator function replays from the start after every `await`. Avoid non-deterministic code (like `DateTime.Now`) inside the orchestrator logic. Activities run […]
Read more β