Posts
Proving it: tests as the security spec
Part 5 of the MCP Security series.
One delete, every check
Part 4 of the MCP Security series.
Ask the human, not the caller
Part 3 of the MCP Security series.
Roots are a request, not a wall
Part 2 of the MCP Security series.
Allow, ask, deny: the client decides
Part 1 of the MCP Security series.
MCP Security
MCP gives an AI application a standard way to call tools on other programs. Read a file, write a file, run a query. That is useful, and it is also the attack surface: every tool call is something happening on someone’s machine because a model, or a server, or a web page the model read, asked for it.
MCP Sequence
Enough said
MCP Architecture
What is MCP
An open source standard enabling AI applications with the capabilities of external systems. Allow them to execute tasks, retrieve data, and perform specialised workflows.
Strands or LangChain: a simple rubric
Two Python orchestration tools. Different bets.
Stop Thinking About Python Tooling
Good Python repos in 2026 run ruff, pyright, and uv. Ruff handles linting and formatting, replacing flake8, black, and isort in one tool. Pyright does static type checking. uv replaces pip and virtualenv and is fast enough that you stop noticing it.
Delivery Processes Are Trust Mechanisms
Every gate in your software pipeline exists because someone once asked: how do I know this is safe to ship?
The Constraint Has Moved. Most Teams Haven't.
Software delivery has spent thirty years managing human inconsistency. Two developers interpret the same requirement differently. A third forgets an edge case. A fourth ships something untested on Friday. So you built process around it. Standups, sprint reviews, merge gates, retrospectives.
Your Delivery System Was Designed for a Different Constraint
Most engineers don’t review transpiled output or minified bundles. They review the source and trust the pipeline. At some point, that output became a black box. Validation moved up a level. Nobody held a ceremony about it.
subscribe via RSS