Run Python in-process from .NET with CSnakes

A quick tip for embedding Python directly into a .NET app with CSnakes when you want a small slice of the Python ecosystem without a separate API service.

July 5, 2026 · 4 min · Lukas Walter

Separate prompts from authorization

Do not let prompt instructions decide what data or actions a user is allowed to access.

July 5, 2026 · 2 min · Lukas Walter

Start independent tasks before awaiting them

Create unrelated asynchronous operations first, then await them together.

July 5, 2026 · 2 min · Lukas Walter

Use approval for side effects, not for every tool call

Reserve human approval for actions where a wrong call would actually matter.

July 5, 2026 · 2 min · Lukas Walter

Use file-based C# apps for small repo utilities

Use a single C# file when a repo utility is useful but a full project would be ceremony.

July 5, 2026 · 1 min · Lukas Walter

Use HybridCache when cache stampedes matter

Use HybridCache for expensive shared lookups where many callers can miss at once.

July 5, 2026 · 2 min · Lukas Walter

Use managed identity before connection strings

Prefer Azure-managed identities over long-lived secrets in deployed applications.

July 5, 2026 · 2 min · Lukas Walter

Use OpenTelemetry before you need production debugging

Add traces, metrics, and logs while the system is still easy to reason about.

July 5, 2026 · 2 min · Lukas Walter

Use ProblemDetails as your API error contract

Return one predictable error shape instead of inventing a new JSON format for every failure.

July 5, 2026 · 1 min · Lukas Walter

Agent Frontends with AG-UI: Streaming, Tool Calls and Human Approval

How to expose Microsoft Agent Framework agents through AG-UI so frontends can handle streaming text, tool progress, approval requests, and shared state.

July 1, 2026 · 16 min · Lukas Walter