Topic

.NET & C#

Runtime behaviour, async, memory and APIs, explained from the source and checked with code you can run.

.NET & C#13 min

Parsing TCP Frames in .NET: Cursors, Backpressure and Buffer Lifetimes

Build a framed PipeReader loop that survives split headers, see why Pipe backpressure counts examined bytes, and decide from measurements when copying beats a borrowed slice.

AI Engineering16 min

The Agent Timed Out. Did Its Approved Action Happen?

Bind approval to the exact proposal, consume it atomically, persist Unknown before sending, and reconcile or fence at the receiver instead of retrying blind. In C#.

Engineering Practice13 min

Disagree with the Assumption, Then Shrink the Counterexample

A sensible "normalize to UTC" review comment changes a customer's requested day. Use an independent anchor, a real FsCheck run and its shrinking to turn disagreement into a fix.

Azure & Architecture15 min

Azure Blob Downloads in .NET: Buffers, Ranges and Safe Publication

Copy arrays, transfer sizes and OpenRead buffers are three different knobs. Real SDK calls show what each one sends, what 12.30 buffers in memory, and how to publish only verified bytes.

AI Engineering17 min

RAG Quality Is a Distribution: Evaluate Each Question Type in .NET

A higher average RAG score can hide a slice that got worse. Tag cases by question type, compare candidates by flips, size slices for the decision and gate releases per slice in C#.

Performance & Data16 min

When SQL Monitoring Becomes the Workload: Scans, Viewers and Locks

A four-row dashboard tile can out-read the business it watches and queue writers behind its own lock wait. Measure the per-call cost, share one snapshot and bound the exporter.

Performance & Data12 min

A Performance Diagnosis That Survives the Allocation Explanation

Allocation fell 77% and latency did not move. Test competing explanations on a real ASP.NET Core and SQLite endpoint, read the statement's work, and hand over a decision.

Engineering Practice13 min

What Technical Judgment Looks Like When AI Knows the Syntax

Two runnable .NET cases: an invoice total that depends on where it rounds, and a timeout that frees a semaphore permit while the work still runs. Judgment is finding the question the API leaves open.

.NET & C#15 min

Streaming AI Answers in Blazor: Stop Old Requests Rewriting the View

A late chunk, an old validation verdict or a stale cleanup can corrupt a streaming Blazor answer. Guard every await, define Stop, throttle renders and test the orderings.

AI Engineering15 min

A Real Citation, a Wrong Answer: Check Claims, Scope and Time

A cited number can still answer the wrong question. Check each claim against its fact on property, scope, unit and two clocks, and keep honest partial answers useful.

AI Engineering14 min

Semantic Kernel to Agent Framework: Migrate Behavior, Not the Calls

Moving a reservation tool from Semantic Kernel to Microsoft Agent Framework: keep identity and authority in a service, test against existing state, and keep lost replies unknown.

Performance & Data13 min

Trace One Order Across HTTP, a Queue and Retries in .NET 10

Make an ASP.NET Core 10 service explain itself before the first incident: propagate context through a queue, keep failed retries visible, and know what survives when traces are sampled out.