Quick .NET Lessons from Experience
Short, focused lessons for code reviews, debugging and everyday engineering decisions. Each lesson gives you one idea to recognise, discuss and apply without turning it into a full-length mentoring article.
Small ideas that improve real code
Structured Outputs and Tool Calling in ASP.NET Core: The Model Requests, Your Code Decides
Understand how typed structured outputs and tool calling connect an AI model to an ASP.NET Core application without surrendering authorization, validation or business control.
Prompt Engineering for ASP.NET Core Developers: Treat the Prompt as a Contract
Learn how to design clear, testable prompts for ASP.NET Core applications using explicit tasks, trusted context, output contracts, uncertainty rules and application-enforced security.
SQL Server Indexes: Make Reads Faster Without Making Writes Expensive
Learn how clustered, nonclustered, covering and filtered indexes help SQL Server avoid unnecessary work—and why every new index must justify its storage and write cost.
How SQL Server Executes a Query: Read the Plan as Data Flow
Understand SQL Server scans, seeks, lookups, aggregates, join algorithms, parallel exchanges and update protection by reading execution plans as flows of rows rather than isolated icons.
Distributed .NET Systems: Every Boundary Has a Cost
Understand CQRS, event sourcing, idempotent messaging, the transactional outbox, Azure Functions, Durable Functions, containers and infrastructure as code without hiding the cost of distribution.
Responsive ASP.NET Core Applications: Do Less Work and Keep Users Moving
Improve application responsiveness by shortening the critical path, caching safely, virtualising large data sets, using SignalR appropriately and moving reliable background work out of the user's wait.
Async I/O in C# and ASP.NET Core: Stop Wasting Threads While Waiting
Learn the difference between CPU-bound and I/O-bound work, then improve ASP.NET Core scalability with async APIs, cancellation, streaming, HttpClient reuse and smaller payloads.
C# Collections and LINQ Performance: Choose the Right Data Shape
Choose between List<T>, Dictionary<TKey,TValue>, HashSet<T> and frozen collections, then avoid hidden LINQ costs from unnecessary materialisation and repeated enumeration.
C# Garbage Collection, Dispose and Native Resources Explained
Understand when .NET garbage collection is enough, when to use Dispose and IDisposable, how resource ownership works, and where finalizers, SafeHandle, P/Invoke and LibraryImport fit.
Create, Copy or View? A C# Performance Code Review Habit
A quick C# code-review checkpoint for spotting allocations, value copies, reference copies, boxing and opportunities to view existing memory with Span<T>.
Quick lesson or detailed guide?
Quick Lessons capture one useful engineering checkpoint. The Journal remains the place for complete mentoring guides, architecture walkthroughs and long-form study material.