Archive

1046 posts · Page 52 of 88. ← Blog

Pratik Dhanave · ·3 min read

Observability, Safety, and Providers — Microsoft Agent Framework in Go

Wrap every run in an OpenTelemetry span, gate risky tool actions behind a permission handler, and swap model providers behind one agent.Agent.

Wrap every Microsoft Agent Framework run in an OpenTelemetry span, gate risky tool actions behind a permission handler, and swap Anthropic, OpenAI, Gemini, Copilot, and Azure behind one agent.

Pratik Dhanave · ·8 min read

Measuring Marketing

"Half the money I spend on advertising is wasted; the trouble is I don't know which half" is a century-old lament that still captures marketing measurement's core problem. Engineers, arriving with a "measure everything" instinct, often assume the answer is just better tracking — and then discover that the most valuable marketing (brand, demand creation, word-of-mouth) is precisely the hardest to measure, while the easiest-to-measure activities aren't always the most valuable. Measuring marketing well means navigating that tension, not pretending it away.

'Half the money I spend on advertising is wasted; I don't know which half' still captures marketing measurement's core problem. Engineers assume the fix is better tracking — then discover the most valuable marketing (brand, demand creation, word-of-mouth) is the hardest to measure. Measuring well means navigating that tension, not pretending it away.

Pratik Dhanave · ·13 min read

Errors, Wrapping, and errors.Is / errors.As

Go treats errors as ordinary values, not exceptions — which means everything you know about passing, comparing, and inspecting values applies. This is a working guide to sentinel errors, wrapping with %w, and the two verbs that make error chains navigable: errors.Is and errors.As.

Go treats errors as ordinary values, not exceptions — which means everything you know about passing, comparing, and inspecting values applies. This is a working guide to sentinel errors, wrapping with %w,...

Pratik Dhanave · ·5 min read

Observability in ADK: Seeing Inside a Running Agent

How OpenTelemetry traces, structured logs, and token metrics turn an agent's event stream into something you can debug in production.

Seeing inside a running agent: OpenTelemetry tracing with spans for agent, model, and tool steps, structured logging, and exporting traces to debug latency and tool-call trajectories.

Pratik Dhanave · ·5 min read

State, Channels, and Reducers: How LangGraph Merges Updates

The one idea that makes everything else in LangGraph click: nodes don't pass messages, they update a shared state — and reducers decide how.

State is a typed dict of channels; each channel has an optional reducer. No reducer overwrites; a reducer (like add_messages or operator.add) combines. This is the single idea the rest of LangGraph is built on.