Recent Blog Posts
Insights on AI Agents, Modern Web, and the Future of Engineering.
Root Cause Analysis Playbooks for Agent Failures: From Symptom to Fix
A systematic method for debugging agent failures: classify the symptom, walk a trace from the failing span upward, and apply a playbook for each failure class — routing, tool, context, hallucination, and infrastructure — with durable execution and state inspection as first-class techniques.
Delegated Authorities: Scoped Permissions for Sub-Agent Execution
Give sub-agents only the authority their task requires: why tool lists are not permissions, how agents-as-tools and handoffs differ in privilege, building a delegation layer with capability objects, and enforcing scope at the runner rather than trusting the prompt.
Correlation IDs Across Agent Handoffs
Keep a single identifier alive as control moves between agents: why log IDs break at handoffs, how OpenTelemetry context propagation and baggage carry correlation across boundaries, the security rules for propagating IDs, and a concrete schema for multi-agent trace correlation.
Trace Spans for Tool Calls: Instrumenting Function Execution
Instrument agent tool calls with OpenTelemetry spans: span structure, trace and span IDs, parent relationships, attributes versus events, status codes, wrapping sync and async tools, and the schema that makes tool spans queryable instead of just present.
Consent Flows: Human Approval at the Point of Action
Design consent flows that pause an agent before it acts: deciding which tools need approval, the pause-and-resume state machine, sticky decisions, rejection messages, server-side approval security, and how to build the same pattern on the Gemini function calling loop.
Flutter State Restoration: Surviving Process Death on Android and iOS
How Flutter state restoration works: RestorationScope and restorationScopeId, RestorationMixin with RestorableProperty, restoring the navigation stack with restorablePush, instance state versus long-lived state, and how to actually test that restoration works.
Shimmer Loading Effects in Flutter: Skeleton Screens Done Right
Build skeleton loading placeholders in Flutter with the shimmer package: Shimmer.fromColors, custom gradients, direction and period tuning, dark theme handling, list-level performance rules, and accessibility fallbacks that do not make users wait for an animation.
Flutter Test Coverage Tools: From `flutter test --coverage` to Actionable Reports
How to generate, read, and act on Flutter test coverage: the --coverage flag, LCOV output, genhtml, test_cov_console, filtering generated files, merging baseline data, and wiring coverage into CI with thresholds and Codecov.
Flutter Integration Testing: Driving Real Apps on Real Devices
A hands-on guide to Flutter integration testing with the integration_test package: writing IntegrationTestWidgetsFlutterBinding tests, running them with flutter test on device and on the web, capturing reports and traces, and deciding what belongs in an integration test versus a widget test.
Dart 3.13 Release Highlights: What Shipped Beyond Primary Constructors
A tour of the Dart 3.13 changelog beyond the headline feature: new Isolate APIs for synchronous execution and event loop control, Future.pause, typed unmodifiable collections, bit-counting getters on int, breaking type promotion rules, and the analyzer and formatter changes you need to plan for.
Error Handling for Tool Calls: Retryable vs. Fatal Errors
Classifying agent tool failures into retryable and fatal buckets — how the OpenAI Agents SDK surfaces errors to the model, configures retries, and when never to retry at all.
Financial Advisory Agents: Data, Disclaimers, and Regulated Outputs
Building AI agents that touch investment topics without hallucinating numbers or crossing regulatory lines — grounding, structured outputs, safety settings, and human review with the Gemini API.