<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Ammar Adam</title><description>Notes on ML systems, AI platforms and agents.</description><link>https://www.ammaradam.dev/</link><item><title>Patterns for agent tool calls you can trust in production</title><link>https://www.ammaradam.dev/posts/patterns-for-safe-tool-calls/</link><guid isPermaLink="true">https://www.ammaradam.dev/posts/patterns-for-safe-tool-calls/</guid><description>Most of what makes an agent safe to run happens at the tool call, not in the prompt: who the call acts for, how risky it is, what happens when it is retried, and whether anyone can see it afterwards.</description><pubDate>Mon, 19 Oct 2026 00:00:00 GMT</pubDate></item><item><title>Good abstractions hide complexity, not evidence</title><link>https://www.ammaradam.dev/posts/hide-complexity-not-evidence/</link><guid isPermaLink="true">https://www.ammaradam.dev/posts/hide-complexity-not-evidence/</guid><description>An abstraction can reduce how much infrastructure a user needs to know without reducing the evidence they need to diagnose a problem.</description><pubDate>Thu, 15 Oct 2026 00:00:00 GMT</pubDate></item><item><title>An agent&apos;s identity is not its permission</title><link>https://www.ammaradam.dev/posts/agent-identity-is-not-authorization/</link><guid isPermaLink="true">https://www.ammaradam.dev/posts/agent-identity-is-not-authorization/</guid><description>Knowing who an agent is answers only part of the question. Whether an action is allowed depends on the user, the scope they delegated and the resource&apos;s own policy.</description><pubDate>Tue, 13 Oct 2026 00:00:00 GMT</pubDate></item><item><title>Measure the journey to the first production call</title><link>https://www.ammaradam.dev/posts/time-to-first-production-call/</link><guid isPermaLink="true">https://www.ammaradam.dev/posts/time-to-first-production-call/</guid><description>Platform metrics are more useful when they cover how quickly a new team gets started, not only how the platform performs once it&apos;s running.</description><pubDate>Thu, 08 Oct 2026 00:00:00 GMT</pubDate></item><item><title>Gateway errors that help someone fix the problem</title><link>https://www.ammaradam.dev/posts/gateway-errors-that-help/</link><guid isPermaLink="true">https://www.ammaradam.dev/posts/gateway-errors-that-help/</guid><description>A blocked request is more useful when the error says what happened, where, and what to try next, without exposing sensitive details.</description><pubDate>Tue, 06 Oct 2026 00:00:00 GMT</pubDate></item><item><title>What a shared platform should standardise</title><link>https://www.ammaradam.dev/posts/standardise-the-right-things/</link><guid isPermaLink="true">https://www.ammaradam.dev/posts/standardise-the-right-things/</guid><description>Shared platforms tend to work best when they standardise the capabilities every team would otherwise rebuild, and leave use-case decisions to the teams.</description><pubDate>Thu, 01 Oct 2026 00:00:00 GMT</pubDate></item><item><title>First users shape the platform&apos;s design</title><link>https://www.ammaradam.dev/posts/first-users-shape-the-design/</link><guid isPermaLink="true">https://www.ammaradam.dev/posts/first-users-shape-the-design/</guid><description>A platform&apos;s first real users show where its abstractions help and where they get in the way, which makes their feedback part of the design work.</description><pubDate>Tue, 29 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Who chooses the model: the application or the platform?</title><link>https://www.ammaradam.dev/posts/who-chooses-the-model/</link><guid isPermaLink="true">https://www.ammaradam.dev/posts/who-chooses-the-model/</guid><description>Pinning a model version gives reproducibility; letting a platform route by requirements eases upgrades. Model retirement schedules make the trade-off concrete.</description><pubDate>Thu, 24 Sep 2026 00:00:00 GMT</pubDate></item><item><title>When a tool call times out, did it happen?</title><link>https://www.ammaradam.dev/posts/tool-call-timeouts/</link><guid isPermaLink="true">https://www.ammaradam.dev/posts/tool-call-timeouts/</guid><description>A timed-out tool call may still have completed, so retrying safely needs the familiar distributed-systems tools: idempotency keys, durable state and verification.</description><pubDate>Tue, 22 Sep 2026 00:00:00 GMT</pubDate></item><item><title>A 200 OK doesn&apos;t mean the agent succeeded</title><link>https://www.ammaradam.dev/posts/agent-success-is-not-a-200/</link><guid isPermaLink="true">https://www.ammaradam.dev/posts/agent-success-is-not-a-200/</guid><description>Infrastructure can be healthy while an agent&apos;s task goes wrong, so agent observability leans on execution traces, not only logs and latency.</description><pubDate>Fri, 18 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Checking both the user and the agent</title><link>https://www.ammaradam.dev/posts/checking-user-and-agent/</link><guid isPermaLink="true">https://www.ammaradam.dev/posts/checking-user-and-agent/</guid><description>Workload identity says which software is calling; authorizing an agent&apos;s action also needs to know which user it acts for and through which chain of agents.</description><pubDate>Wed, 16 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Deciding what not to expose</title><link>https://www.ammaradam.dev/posts/what-not-to-expose/</link><guid isPermaLink="true">https://www.ammaradam.dev/posts/what-not-to-expose/</guid><description>Infrastructure was largely designed for people who read docs and debug by hand; building for agents and for non-infrastructure users both raise the question of what to hide.</description><pubDate>Mon, 14 Sep 2026 00:00:00 GMT</pubDate></item></channel></rss>