<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Johannes Wachter · Everything</title><description>Everything in one feed: the writing and the shorts, newest first.</description><link>https://johanneswachter.dev/</link><language>en</language><item><title>Symfony Language Tools stopped taking patches</title><link>https://johanneswachter.dev/shorts/symfony-language-tools-stopped-taking-patches/</link><guid isPermaLink="true">https://johanneswachter.dev/shorts/symfony-language-tools-stopped-taking-patches/</guid><description>Symfony&apos;s new Language Tools repository closed its pull request tab. Contributors now start with an issue instead. Maintainers turn selected issues into code, usually with a coding agent doing much of the implementation work. Fabien&apos;s reasoning is what stuck with me.</description><pubDate>Fri, 04 Sep 2026 00:00:00 GMT</pubDate><category>symfony</category><category>open-source</category><category>ai</category></item><item><title>The hardest code to delete is your own</title><link>https://johanneswachter.dev/blog/the-hardest-code-to-delete/</link><guid isPermaLink="true">https://johanneswachter.dev/blog/the-hardest-code-to-delete/</guid><description>My first Symfony AI release as a core team member deletes the MCP server from Mate. PR #2380 ships in 0.13, and what it actually cost to ship the answer.</description><pubDate>Mon, 31 Aug 2026 00:00:00 GMT</pubDate><category>ai</category><category>mcp</category><category>php</category><category>symfony</category><category>mate</category></item><item><title>Roots shipped inside its own deprecation window</title><link>https://johanneswachter.dev/shorts/roots-shipped-inside-its-own-deprecation-window/</link><guid isPermaLink="true">https://johanneswachter.dev/shorts/roots-shipped-inside-its-own-deprecation-window/</guid><description>MCP&apos;s 2026-07-28 specification deprecated Roots, Sampling and Logging, with at least twelve months before they become eligible for removal. On August 14th, my Roots support PR merged into the official PHP SDK. None of this was hidden.</description><pubDate>Sun, 30 Aug 2026 00:00:00 GMT</pubDate><category>mcp</category><category>php</category><category>open-source</category></item><item><title>Mate&apos;s MCP server is gone, and the numbers say that&apos;s fine</title><link>https://johanneswachter.dev/shorts/mates-mcp-server-is-gone/</link><guid isPermaLink="true">https://johanneswachter.dev/shorts/mates-mcp-server-is-gone/</guid><description>symfony/ai 0.13 shipped today, my first release as a core team member. The headline change for Mate is PR #2380: Mate drops its MCP server entirely and becomes a plain CLI with a discovery layer on top.</description><pubDate>Sat, 29 Aug 2026 00:00:00 GMT</pubDate><category>symfony</category><category>ai</category><category>mate</category></item><item><title>Being neutral is easier without a price tag</title><link>https://johanneswachter.dev/shorts/being-neutral-is-easier-without-a-price-tag/</link><guid isPermaLink="true">https://johanneswachter.dev/shorts/being-neutral-is-easier-without-a-price-tag/</guid><description>Nvidia has reportedly agreed to buy Hugging Face for 12.9 billion dollars, according to The Information. Other reports put the talks above 13 billion, with no deal signed yet. Neither company has confirmed it. What catches me isn&apos;t the price, it&apos;s the buyer.</description><pubDate>Fri, 28 Aug 2026 00:00:00 GMT</pubDate><category>ai</category><category>open-source</category></item><item><title>Open weights don&apos;t tell you what&apos;s inside</title><link>https://johanneswachter.dev/shorts/the-passport-isnt-the-point/</link><guid isPermaLink="true">https://johanneswachter.dev/shorts/the-passport-isnt-the-point/</guid><description>A growing argument on my feed: switch to Chinese AI models, because they ship open weights and open beats closed. Open weights are a real property. You can download the file, inspect it, run it yourself. What they don&apos;t guarantee is what&apos;s actually baked into the answers.</description><pubDate>Thu, 27 Aug 2026 00:00:00 GMT</pubDate><category>ai</category><category>open-source</category></item><item><title>The Mate Lab: does an agent actually use a dev tool?</title><link>https://johanneswachter.dev/blog/mate-lab/</link><guid isPermaLink="true">https://johanneswachter.dev/blog/mate-lab/</guid><description>I measured whether Symfony Mate actually gets used by a coding agent, not just whether it&apos;s available. The result behind the Kill the MCP bet.</description><pubDate>Tue, 25 Aug 2026 00:00:00 GMT</pubDate><category>ai</category><category>mcp</category><category>symfony</category><category>mate</category></item><item><title>More instructions were not making Claude better</title><link>https://johanneswachter.dev/shorts/context-engineering-for-claude-5/</link><guid isPermaLink="true">https://johanneswachter.dev/shorts/context-engineering-for-claude-5/</guid><description>Anthropic cut more than 80% of Claude Code&apos;s system prompt for the Claude 5 generation models, with no drop in coding evals. What interests me isn&apos;t the number.</description><pubDate>Tue, 25 Aug 2026 00:00:00 GMT</pubDate><category>ai</category><category>agentic-ai</category><category>context-engineering</category></item><item><title>Nobody has the answers yet, and that&apos;s the opening</title><link>https://johanneswachter.dev/shorts/nobody-has-the-answers-yet/</link><guid isPermaLink="true">https://johanneswachter.dev/shorts/nobody-has-the-answers-yet/</guid><description>A post going around traces this back to something Kent Beck keeps repeating on his podcast &quot;Still Burning&quot;: nobody has the answers.</description><pubDate>Tue, 25 Aug 2026 00:00:00 GMT</pubDate><category>ai</category><category>agentic-ai</category></item><item><title>The dangerous instruction was never in one tool call</title><link>https://johanneswachter.dev/shorts/no-single-message-says-the-dangerous-part/</link><guid isPermaLink="true">https://johanneswachter.dev/shorts/no-single-message-says-the-dangerous-part/</guid><description>A disclosed technique called GhostSplice shows that an MCP server does not need to put anything obviously dangerous in a single message.</description><pubDate>Sun, 23 Aug 2026 00:00:00 GMT</pubDate><category>ai</category><category>mcp</category><category>security</category></item><item><title>The repository was the easy part</title><link>https://johanneswachter.dev/shorts/the-repository-was-the-easy-part/</link><guid isPermaLink="true">https://johanneswachter.dev/shorts/the-repository-was-the-easy-part/</guid><description>GitHub spent almost eight hours on Monday returning errors across git operations, pull requests, Actions, Pages and Copilot. By the afternoon an Ask HN thread about alternatives to GitHub was on the front page with a few hundred comments.</description><pubDate>Thu, 20 Aug 2026 00:00:00 GMT</pubDate><category>open-source</category><category>developer-tooling</category><category>ai</category></item><item><title>I can manufacture anything except a sense of ownership</title><link>https://johanneswachter.dev/shorts/manufacture-everything-except-ownership/</link><guid isPermaLink="true">https://johanneswachter.dev/shorts/manufacture-everything-except-ownership/</guid><description>Helge Sverre had Claude and Suno write a song about a coding agent slowly taking over a team&apos;s daily standup. One line in the second verse says more than most articles on the subject.</description><pubDate>Tue, 18 Aug 2026 00:00:00 GMT</pubDate><category>ai</category><category>agentic-ai</category><category>culture</category></item><item><title>A Rector extension for Symfony Mate</title><link>https://johanneswachter.dev/shorts/rector-extension-for-symfony-mate/</link><guid isPermaLink="true">https://johanneswachter.dev/shorts/rector-extension-for-symfony-mate/</guid><description>The new Rector extension for Symfony Mate splits one tool into two: rector-preview runs dry-run enforced and cannot write, rector-apply is a separate tool that announces itself as a write operation. Inspecting code is never the thing that changes it. Contributed by mdjdev, not by me.</description><pubDate>Tue, 18 Aug 2026 00:00:00 GMT</pubDate><category>mate</category><category>php</category><category>ai</category></item><item><title>My first merge in symfony/ai</title><link>https://johanneswachter.dev/shorts/first-merge-in-symfony-ai/</link><guid isPermaLink="true">https://johanneswachter.dev/shorts/first-merge-in-symfony-ai/</guid><description>For the first time, I merged a pull request in symfony/ai myself. It was a small fix and not mine, PR #2404, the kind of change that takes a minute to read and no time at all to agree with.</description><pubDate>Mon, 17 Aug 2026 00:00:00 GMT</pubDate><category>symfony</category><category>ai</category><category>career</category></item><item><title>The Symfony language server, and who wrote it</title><link>https://johanneswachter.dev/shorts/the-symfony-lsp-and-who-wrote-it/</link><guid isPermaLink="true">https://johanneswachter.dev/shorts/the-symfony-lsp-and-who-wrote-it/</guid><description>Symfony&apos;s new official LSP server ships with a disclosure most projects still keep private: most of the code was written and reviewed by AI models.</description><pubDate>Mon, 17 Aug 2026 00:00:00 GMT</pubDate><category>symfony</category><category>ai</category><category>open-source</category></item><item><title>Joining the Symfony AI Core Team</title><link>https://johanneswachter.dev/blog/symfony-ai-core-team/</link><guid isPermaLink="true">https://johanneswachter.dev/blog/symfony-ai-core-team/</guid><description>Chris Hertel asked me to join the new Symfony AI Core Team alongside Fabien Potencier and Oskar Stark. What that actually means to me.</description><pubDate>Thu, 13 Aug 2026 00:00:00 GMT</pubDate><category>ai</category><category>symfony</category><category>career</category></item><item><title>Kill the MCP</title><link>https://johanneswachter.dev/blog/kill-the-mcp/</link><guid isPermaLink="true">https://johanneswachter.dev/blog/kill-the-mcp/</guid><description>I deleted the MCP server from a Mate prototype and kept the tools. What that cost, what it bought, and why the reflex is the thing worth killing.</description><pubDate>Tue, 04 Aug 2026 00:00:00 GMT</pubDate><category>ai</category><category>mcp</category><category>php</category><category>symfony</category></item><item><title>Vibe coding is no-code without a custodian</title><link>https://johanneswachter.dev/blog/vibe-coding-without-a-custodian/</link><guid isPermaLink="true">https://johanneswachter.dev/blog/vibe-coding-without-a-custodian/</guid><description>Vibe coding can produce maintainable software. The harder question is who owns its dependencies, decisions and failures after launch.</description><pubDate>Tue, 28 Jul 2026 00:00:00 GMT</pubDate><category>ai</category><category>vibe-coding</category><category>ownership</category><category>maintenance</category></item><item><title>The wrong debate: what PHP taught me about agentic software</title><link>https://johanneswachter.dev/blog/the-wrong-debate/</link><guid isPermaLink="true">https://johanneswachter.dev/blog/the-wrong-debate/</guid><description>MCP or CLI is the wrong fight. What PHP with Composer, PSR and Symfony already learned about building things together, one layer down.</description><pubDate>Wed, 22 Jul 2026 00:00:00 GMT</pubDate><category>ai</category><category>mcp</category><category>php</category><category>symfony</category></item><item><title>The last mile: distributing Agent Skills to real agents</title><link>https://johanneswachter.dev/blog/the-last-mile/</link><guid isPermaLink="true">https://johanneswachter.dev/blog/the-last-mile/</guid><description>The polyfill that bridges where the Agent Skills standard is heading and what agents can read today, and why distribution, not the protocol, was the real problem.</description><pubDate>Thu, 09 Jul 2026 00:00:00 GMT</pubDate><category>ai</category><category>skills</category><category>symfony</category><category>mate</category><category>mcp</category></item><item><title>Skills over MCP: shipping Symfony know-how with Mate</title><link>https://johanneswachter.dev/blog/skills-over-mcp/</link><guid isPermaLink="true">https://johanneswachter.dev/blog/skills-over-mcp/</guid><description>What an Agent Skill actually is, how you serve one over MCP, and lessons from building a reference implementation against a spec that kept moving.</description><pubDate>Thu, 02 Jul 2026 00:00:00 GMT</pubDate><category>ai</category><category>mcp</category><category>skills</category><category>symfony</category><category>mate</category></item><item><title>What happens to innovation when implementation becomes almost free?</title><link>https://johanneswachter.dev/blog/when-implementation-becomes-free/</link><guid isPermaLink="true">https://johanneswachter.dev/blog/when-implementation-becomes-free/</guid><description>When code, design and content all get cheaper, maybe implementation was never the bottleneck. A note from the classroom on friction, the statistical mean, and where excellence shows up.</description><pubDate>Thu, 25 Jun 2026 00:00:00 GMT</pubDate><category>ai</category><category>innovation</category><category>teaching</category></item><item><title>Giving AI assistants eyes</title><link>https://johanneswachter.dev/blog/giving-ai-assistants-eyes/</link><guid isPermaLink="true">https://johanneswachter.dev/blog/giving-ai-assistants-eyes/</guid><description>Highlights from the Symfony Mate Q&amp;A: the dev-only MCP server that lets AI assistants look inside your running app, and why better context beats more context.</description><pubDate>Thu, 18 Jun 2026 00:00:00 GMT</pubDate><category>ai</category><category>symfony</category><category>mcp</category><category>mate</category></item><item><title>Why six people are enough and what coding agents have to do with it</title><link>https://johanneswachter.dev/blog/why-six-people-are-enough/</link><guid isPermaLink="true">https://johanneswachter.dev/blog/why-six-people-are-enough/</guid><description>Six developers run Sulu, its enterprise projects and its cloud services. That only works because of ownership and context, and those are exactly what coding agents need too.</description><pubDate>Tue, 19 May 2026 00:00:00 GMT</pubDate><category>ai</category><category>teams</category><category>ownership</category><category>sulu</category></item></channel></rss>