<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>scalable — posts &amp; training</title><description>notes and training from a small software studio in denmark. building solutions for problems since 2014.</description><link>https://scalable.dk/</link><language>en</language><item><title>ts types in anger — training</title><link>https://scalable.dk/craft/ts-types-in-anger/</link><guid isPermaLink="true">https://scalable.dk/craft/ts-types-in-anger/</guid><description>branded types, template literals, conditional types. make illegal states unrepresentable, not just inconvenient.</description><pubDate>Mon, 25 May 2026 12:00:00 GMT</pubDate></item><item><title>what i learned shipping an oauth-protected mcp server</title><link>https://scalable.dk/posts/shipping-an-oauth-protected-mcp-server/</link><guid isPermaLink="true">https://scalable.dk/posts/shipping-an-oauth-protected-mcp-server/</guid><description>adding model context protocol to indebtio. notes from the security review that gated the launch: scope, dcr threats, refresh-token replay, jwt key separation.</description><pubDate>Sun, 24 May 2026 12:00:00 GMT</pubDate></item><item><title>enablement isn&apos;t evangelism</title><link>https://scalable.dk/posts/enablement-isnt-evangelism/</link><guid isPermaLink="true">https://scalable.dk/posts/enablement-isnt-evangelism/</guid><description>i wanted to lead the ai enablement work in my area, and got it. the tools are landed, the early adoption is real; the next chapter is widening the circle. here&apos;s the shape this job has to take.</description><pubDate>Sat, 23 May 2026 12:00:00 GMT</pubDate></item><item><title>spec-kit, in practice</title><link>https://scalable.dk/posts/spec-kit-in-practice/</link><guid isPermaLink="true">https://scalable.dk/posts/spec-kit-in-practice/</guid><description>github&apos;s spec-kit makes you write a spec before the agent writes code. a few evenings in, here&apos;s what changes about the agent loop — and what doesn&apos;t change at all.</description><pubDate>Mon, 18 May 2026 12:00:00 GMT</pubDate></item><item><title>meaningful reporting</title><link>https://scalable.dk/posts/meaningful-reporting/</link><guid isPermaLink="true">https://scalable.dk/posts/meaningful-reporting/</guid><description>performance metrics in one tool, incidents in another, vulnerabilities in a third, change requests in a fourth. a meaningful weekly report is a deterministic synthesis from source systems — humans curate, scripts collate.</description><pubDate>Mon, 11 May 2026 12:00:00 GMT</pubDate></item><item><title>template literal types, in practice</title><link>https://scalable.dk/posts/template-literal-types-in-practice/</link><guid isPermaLink="true">https://scalable.dk/posts/template-literal-types-in-practice/</guid><description>template literal types went from cute trick to load-bearing the day i used them to derive route params from a path. one pattern, one cost, a few wins.</description><pubDate>Mon, 04 May 2026 12:00:00 GMT</pubDate></item><item><title>agentic chat over synthetic bank data</title><link>https://scalable.dk/posts/agentic-chat-over-synthetic-bank-data/</link><guid isPermaLink="true">https://scalable.dk/posts/agentic-chat-over-synthetic-bank-data/</guid><description>first useful workflow on the ollama+n8n homelab: a synthetic bank api, an n8n agent that calls it, a dashboard with a chat bubble. what worked, what didn&apos;t.</description><pubDate>Wed, 29 Apr 2026 12:00:00 GMT</pubDate></item><item><title>claude agent sdk — training</title><link>https://scalable.dk/ai/claude-agent-sdk/</link><guid isPermaLink="true">https://scalable.dk/ai/claude-agent-sdk/</guid><description>build your own coding agent in typescript. tool use, sub-agents, hooks, permissions.</description><pubDate>Mon, 27 Apr 2026 12:00:00 GMT</pubDate></item><item><title>ollama and n8n on a proxmox homelab</title><link>https://scalable.dk/posts/ollama-and-n8n-on-proxmox/</link><guid isPermaLink="true">https://scalable.dk/posts/ollama-and-n8n-on-proxmox/</guid><description>setting up local ai on a 3-machine proxmox homelab: ollama, n8n, the ram gotcha that bit me, the cpu-only model shortlist, and what the first prompts actually returned.</description><pubDate>Sun, 26 Apr 2026 12:00:00 GMT</pubDate></item><item><title>the translator&apos;s job</title><link>https://scalable.dk/posts/the-translators-job/</link><guid isPermaLink="true">https://scalable.dk/posts/the-translators-job/</guid><description>modernization loses to features when the why doesn&apos;t travel. metaphors are how leaders make technical reasoning portable into rooms they&apos;re not in.</description><pubDate>Sun, 26 Apr 2026 12:00:00 GMT</pubDate></item><item><title>agentcore — training</title><link>https://scalable.dk/ai/agentcore/</link><guid isPermaLink="true">https://scalable.dk/ai/agentcore/</guid><description>aws bedrock agentcore in the browser — no account required</description><pubDate>Fri, 24 Apr 2026 12:00:00 GMT</pubDate></item><item><title>team topologies — training</title><link>https://scalable.dk/scale/team-topologies/</link><guid isPermaLink="true">https://scalable.dk/scale/team-topologies/</guid><description>the four team types, interaction modes, and why conway&apos;s law wins anyway.</description><pubDate>Fri, 24 Apr 2026 12:00:00 GMT</pubDate></item><item><title>agentic patterns — training</title><link>https://scalable.dk/ai/agentic-patterns/</link><guid isPermaLink="true">https://scalable.dk/ai/agentic-patterns/</guid><description>skills, extensions, personas, handoffs — the building blocks of multi-turn agent systems.</description><pubDate>Fri, 24 Apr 2026 12:00:00 GMT</pubDate></item><item><title>what is agentcore · agentcore</title><link>https://scalable.dk/ai/agentcore/what-is-agentcore/</link><guid isPermaLink="true">https://scalable.dk/ai/agentcore/what-is-agentcore/</guid><description>the seven primitives, the boring parts aws decided to own, and the shape of a minimal agent.</description><pubDate>Fri, 24 Apr 2026 11:59:00 GMT</pubDate></item><item><title>what are agentic patterns · agentic patterns</title><link>https://scalable.dk/ai/agentic-patterns/what-are-agentic-patterns/</link><guid isPermaLink="true">https://scalable.dk/ai/agentic-patterns/what-are-agentic-patterns/</guid><description>the shape of the problem. why patterns, not frameworks. the four primitives you&apos;ll see in every later lesson.</description><pubDate>Fri, 24 Apr 2026 11:59:00 GMT</pubDate></item><item><title>runtime — your first agent · agentcore</title><link>https://scalable.dk/ai/agentcore/runtime/</link><guid isPermaLink="true">https://scalable.dk/ai/agentcore/runtime/</guid><description>define an entrypoint, handle a payload, emit events. the agent app object, up close.</description><pubDate>Fri, 24 Apr 2026 11:58:00 GMT</pubDate></item><item><title>skills — the smallest unit · agentic patterns</title><link>https://scalable.dk/ai/agentic-patterns/skills/</link><guid isPermaLink="true">https://scalable.dk/ai/agentic-patterns/skills/</guid><description>a tool call plus the prompting, validation, and return-shape glue around it. reusable across agents.</description><pubDate>Fri, 24 Apr 2026 11:58:00 GMT</pubDate></item><item><title>memory — state that survives the turn · agentcore</title><link>https://scalable.dk/ai/agentcore/memory/</link><guid isPermaLink="true">https://scalable.dk/ai/agentcore/memory/</guid><description>session memory vs long-term memory. events, strategies, retrieval across sessions.</description><pubDate>Fri, 24 Apr 2026 11:57:00 GMT</pubDate></item><item><title>extensions — wrapping the base loop · agentic patterns</title><link>https://scalable.dk/ai/agentic-patterns/extensions/</link><guid isPermaLink="true">https://scalable.dk/ai/agentic-patterns/extensions/</guid><description>memory injection, retrieval, safety, telemetry. the pattern equivalent of middleware.</description><pubDate>Fri, 24 Apr 2026 11:57:00 GMT</pubDate></item><item><title>gateway — turning apis into tools · agentcore</title><link>https://scalable.dk/ai/agentcore/gateway/</link><guid isPermaLink="true">https://scalable.dk/ai/agentcore/gateway/</guid><description>take an openapi spec (or a lambda) and make it callable from your agent as an mcp tool.</description><pubDate>Fri, 24 Apr 2026 11:56:00 GMT</pubDate></item><item><title>personas — identity for agents · agentic patterns</title><link>https://scalable.dk/ai/agentic-patterns/personas/</link><guid isPermaLink="true">https://scalable.dk/ai/agentic-patterns/personas/</guid><description>a bundle of prompt, voice, allowed skills, and guardrails. swap it and the same loop behaves differently.</description><pubDate>Fri, 24 Apr 2026 11:56:00 GMT</pubDate></item><item><title>identity — inbound and outbound auth · agentcore</title><link>https://scalable.dk/ai/agentcore/identity/</link><guid isPermaLink="true">https://scalable.dk/ai/agentcore/identity/</guid><description>workload identity, oauth to third parties, iam without writing policy by hand.</description><pubDate>Fri, 24 Apr 2026 11:55:00 GMT</pubDate></item><item><title>handoffs — multi-agent composition · agentic patterns</title><link>https://scalable.dk/ai/agentic-patterns/handoffs/</link><guid isPermaLink="true">https://scalable.dk/ai/agentic-patterns/handoffs/</guid><description>how one agent passes control to another with just enough context. most &apos;the agent got confused&apos; bugs live here.</description><pubDate>Fri, 24 Apr 2026 11:55:00 GMT</pubDate></item><item><title>browser &amp; code interpreter · agentcore</title><link>https://scalable.dk/ai/agentcore/browser-and-code-interpreter/</link><guid isPermaLink="true">https://scalable.dk/ai/agentcore/browser-and-code-interpreter/</guid><description>two managed tools you get for free — when to reach for each.</description><pubDate>Fri, 24 Apr 2026 11:54:00 GMT</pubDate></item><item><title>loops — react, reflection, and when to stop · agentic patterns</title><link>https://scalable.dk/ai/agentic-patterns/loops/</link><guid isPermaLink="true">https://scalable.dk/ai/agentic-patterns/loops/</guid><description>the control flow inside a single agent turn. stopping criteria, budget, and failure modes.</description><pubDate>Fri, 24 Apr 2026 11:54:00 GMT</pubDate></item><item><title>observability — reading the trace · agentcore</title><link>https://scalable.dk/ai/agentcore/observability/</link><guid isPermaLink="true">https://scalable.dk/ai/agentcore/observability/</guid><description>spans, tool-call boundaries, cost attribution. the parts cloudwatch doesn&apos;t show you.</description><pubDate>Fri, 24 Apr 2026 11:53:00 GMT</pubDate></item><item><title>evals — knowing the pattern works · agentic patterns</title><link>https://scalable.dk/ai/agentic-patterns/evals/</link><guid isPermaLink="true">https://scalable.dk/ai/agentic-patterns/evals/</guid><description>offline scorecards, trace-based checks, and the gap between demo and production.</description><pubDate>Fri, 24 Apr 2026 11:53:00 GMT</pubDate></item><item><title>shipping to real aws · agentcore</title><link>https://scalable.dk/ai/agentcore/shipping-to-aws/</link><guid isPermaLink="true">https://scalable.dk/ai/agentcore/shipping-to-aws/</guid><description>what changes when you leave the sandbox. cli, iam, costs, and the smallest deploy that works.</description><pubDate>Fri, 24 Apr 2026 11:52:00 GMT</pubDate></item><item><title>the production readiness review</title><link>https://scalable.dk/posts/the-production-readiness-review/</link><guid isPermaLink="true">https://scalable.dk/posts/the-production-readiness-review/</guid><description>a one-hour meeting with a structured checklist that catches the last 20% of failures before they&apos;re customers&apos; problem.</description><pubDate>Mon, 20 Apr 2026 12:00:00 GMT</pubDate></item><item><title>the editor as a force multiplier</title><link>https://scalable.dk/posts/the-editor-as-a-force-multiplier/</link><guid isPermaLink="true">https://scalable.dk/posts/the-editor-as-a-force-multiplier/</guid><description>the editor is the tool you&apos;ll touch ten thousand hours. small wins in it pay back forever.</description><pubDate>Mon, 13 Apr 2026 12:00:00 GMT</pubDate></item><item><title>eval-driven prompt iteration</title><link>https://scalable.dk/posts/eval-driven-prompt-iteration/</link><guid isPermaLink="true">https://scalable.dk/posts/eval-driven-prompt-iteration/</guid><description>treat prompt engineering like test-driven development — write the failing case before you change the prompt.</description><pubDate>Mon, 06 Apr 2026 12:00:00 GMT</pubDate></item><item><title>illegal states unrepresentable, in typescript</title><link>https://scalable.dk/posts/illegal-states-unrepresentable/</link><guid isPermaLink="true">https://scalable.dk/posts/illegal-states-unrepresentable/</guid><description>a small refactor: replace the optional-fields-and-flags pattern with a discriminated union. invariants enforced by the compiler.</description><pubDate>Mon, 30 Mar 2026 12:00:00 GMT</pubDate></item><item><title>the senior ic who isn&apos;t a lead</title><link>https://scalable.dk/posts/the-senior-ic-who-isnt-a-lead/</link><guid isPermaLink="true">https://scalable.dk/posts/the-senior-ic-who-isnt-a-lead/</guid><description>the senior individual contributor who isn&apos;t on a management track is a real role with real value, and most companies bury it.</description><pubDate>Mon, 16 Mar 2026 12:00:00 GMT</pubDate></item><item><title>tool use error handling patterns in typescript</title><link>https://scalable.dk/posts/tool-use-error-handling-patterns/</link><guid isPermaLink="true">https://scalable.dk/posts/tool-use-error-handling-patterns/</guid><description>throwing inside a tool handler is the wrong abstraction for an agent loop. here&apos;s a result shape that works.</description><pubDate>Mon, 09 Mar 2026 12:00:00 GMT</pubDate></item><item><title>git bisect: the bug-finder you forgot</title><link>https://scalable.dk/posts/git-bisect-the-bug-finder/</link><guid isPermaLink="true">https://scalable.dk/posts/git-bisect-the-bug-finder/</guid><description>an underused git command that finds the commit that introduced a bug, in roughly log(n) tries.</description><pubDate>Mon, 02 Mar 2026 12:00:00 GMT</pubDate></item><item><title>structured outputs: claude vs openai, in practice</title><link>https://scalable.dk/posts/structured-outputs-claude-vs-openai/</link><guid isPermaLink="true">https://scalable.dk/posts/structured-outputs-claude-vs-openai/</guid><description>two providers, two approaches to constrained output generation, and the small-but-real differences when you actually rely on them.</description><pubDate>Mon, 23 Feb 2026 12:00:00 GMT</pubDate></item><item><title>prompt caching costs less than you think</title><link>https://scalable.dk/posts/prompt-caching-real-numbers/</link><guid isPermaLink="true">https://scalable.dk/posts/prompt-caching-real-numbers/</guid><description>anthropic&apos;s prompt caching cuts the per-call cost of long-context calls dramatically. here&apos;s what it actually saved on a workload i measured.</description><pubDate>Mon, 09 Feb 2026 12:00:00 GMT</pubDate></item><item><title>pre-mortems beat post-mortems</title><link>https://scalable.dk/posts/pre-mortems-vs-post-mortems/</link><guid isPermaLink="true">https://scalable.dk/posts/pre-mortems-vs-post-mortems/</guid><description>imagine the launch failed. you have an hour. write the post-mortem now, before the launch.</description><pubDate>Mon, 02 Feb 2026 12:00:00 GMT</pubDate></item><item><title>typescript types as documentation</title><link>https://scalable.dk/posts/typescript-types-as-documentation/</link><guid isPermaLink="true">https://scalable.dk/posts/typescript-types-as-documentation/</guid><description>comments rot. types compile. branded types let you encode intent into the type system so the next reader can&apos;t miss it.</description><pubDate>Mon, 26 Jan 2026 12:00:00 GMT</pubDate></item><item><title>what claude code&apos;s hooks taught me about agent design</title><link>https://scalable.dk/posts/claude-code-hooks-and-agent-design/</link><guid isPermaLink="true">https://scalable.dk/posts/claude-code-hooks-and-agent-design/</guid><description>claude code ships hooks instead of opinions. that&apos;s a design choice, and it has implications for anyone building their own agent harness.</description><pubDate>Mon, 19 Jan 2026 12:00:00 GMT</pubDate></item><item><title>training as a way to learn</title><link>https://scalable.dk/posts/training-as-a-way-to-learn/</link><guid isPermaLink="true">https://scalable.dk/posts/training-as-a-way-to-learn/</guid><description>an experiment for 2026: one publish a week, on top of everything else. the bet is that making training material forces me to explain, and that&apos;s how i learn it.</description><pubDate>Mon, 05 Jan 2026 12:00:00 GMT</pubDate></item><item><title>welcome in</title><link>https://scalable.dk/posts/welcome-in/</link><guid isPermaLink="true">https://scalable.dk/posts/welcome-in/</guid><description>a first post about what this site is, and a few things i&apos;m planning to write about.</description><pubDate>Sun, 28 Dec 2025 12:00:00 GMT</pubDate></item></channel></rss>