Use HybridCache for expensive AI work in .NET

Use HybridCache to avoid duplicate AI model calls, with a cached summarization example and deliberate cache-key design.

July 14, 2026 · 3 min · Lukas Walter

AsNoTracking belongs on read paths

Skip EF Core change tracking for queries that only read entity data, but keep tracking for load-change-save updates.

July 12, 2026 · 2 min · Lukas Walter

Use idempotency keys for retryable writes

Make a retried write replay the same operation instead of creating a duplicate side effect.

July 12, 2026 · 3 min · Lukas Walter

Generate Useful Test Data in .NET with Bogus

How to use the Bogus library to generate realistic, repeatable, and domain-shaped test data in .NET, including faker rules, related objects, seeds, and practical boundaries.

July 11, 2026 · 11 min · Lukas Walter

Use ValueTask only when you know why

Prefer Task unless you have a measured allocation reason and a simple consumption contract.

July 11, 2026 · 2 min · Lukas Walter

Keep agent tools narrow and boring

Expose only the small, specific capabilities the agent needs for the current workflow.

July 9, 2026 · 2 min · Lukas Walter

Make logs structured before adding dashboards

Capture queryable fields first so dashboards are built on data, not text search.

July 9, 2026 · 3 min · Lukas Walter

Use evals before changing prompts

Treat prompt changes like code changes: measure the behavior before deciding whether the edit helped.

July 9, 2026 · 2 min · Lukas Walter

Keep RAG citations tied to retrieved chunks

Citations should point back to the retrieved evidence, not to sources the model guessed after answering.

July 8, 2026 · 2 min · Lukas Walter

Observability for Agents with OpenTelemetry, Aspire, and Application Insights

How to make Microsoft Agent Framework behavior visible in production with OpenTelemetry traces, token usage, model calls, tool calls, Aspire local debugging, and Application Insights monitoring.

July 8, 2026 · 17 min · Lukas Walter