<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>// TODO(craig): name this blog</title><link>https://blog.beaumo.net/</link><description>Recent content on // TODO(craig): name this blog</description><generator>Hugo</generator><language>en-GB</language><lastBuildDate>Wed, 23 Sep 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://blog.beaumo.net/index.xml" rel="self" type="application/rss+xml"/><item><title>The Process You Don't Start</title><link>https://blog.beaumo.net/blog/git-extensions-wine-bridge</link><pubDate>Wed, 23 Sep 2026 00:00:00 +0000</pubDate><guid>https://blog.beaumo.net/blog/git-extensions-wine-bridge</guid><description>Wine takes 0.29 seconds to start &lt;code&gt;git.exe&lt;/code&gt;, and Git Extensions starts git once or more per click. So the fork doesn&amp;rsquo;t start it: every git call goes over a socket to a daemon running your Linux git.</description></item><item><title>Running Git Extensions on Linux under Wine</title><link>https://blog.beaumo.net/blog/git-extensions-under-wine</link><pubDate>Tue, 22 Sep 2026 00:00:00 +0000</pubDate><guid>https://blog.beaumo.net/blog/git-extensions-under-wine</guid><description>Git Extensions on Linux: the Windows build under Wine, with about fifty patches and one install script. Why it needs a fork, what you need and what the script sets up.</description></item><item><title>Progressive Disclosure</title><link>https://blog.beaumo.net/blog/progressive-disclosure</link><pubDate>Mon, 16 Mar 2026 12:00:00 +0000</pubDate><guid>https://blog.beaumo.net/blog/progressive-disclosure</guid><description>Show people everything at once and they&amp;rsquo;ll see nothing. Progressive disclosure is easy to understand and hard to do well, because deciding what comes first means watching people use the thing.</description></item><item><title>Let It Propagate</title><link>https://blog.beaumo.net/blog/let-it-propagate</link><pubDate>Wed, 11 Mar 2026 00:00:00 +0000</pubDate><guid>https://blog.beaumo.net/blog/let-it-propagate</guid><description>Most catch blocks shouldn&amp;rsquo;t exist. An exception should rise until it reaches a layer with the context to act on it, and the catches that deserve to exist fit five patterns.</description></item><item><title>Give Your AI Assistant the Docs, Not the Search Bar</title><link>https://blog.beaumo.net/blog/local-docs-submodules-for-ai</link><pubDate>Wed, 04 Mar 2026 00:00:00 +0000</pubDate><guid>https://blog.beaumo.net/blog/local-docs-submodules-for-ai</guid><description>Web search hands an AI assistant stale forum posts and deprecated APIs. Shallow submodules of the Home Assistant and HACS docs, symlinked under &lt;code&gt;docs/&lt;/code&gt; and described in &lt;code&gt;CLAUDE.md&lt;/code&gt;, give it the real thing.</description></item><item><title>Learning in Reverse</title><link>https://blog.beaumo.net/blog/learning-in-reverse</link><pubDate>Wed, 25 Feb 2026 12:00:00 +0000</pubDate><guid>https://blog.beaumo.net/blog/learning-in-reverse</guid><description>An AI assistant showed me C#&amp;rsquo;s &lt;code&gt;$$&lt;/code&gt; raw interpolated strings while I was getting something else done. Learning now happens sideways, and knowing a feature exists doesn&amp;rsquo;t replace judgement about when to use it.</description></item><item><title>Safer AI Scripting: Using Deno Permissions as a Trust Boundary</title><link>https://blog.beaumo.net/blog/safer-ai-scripting</link><pubDate>Sat, 10 Jan 2026 00:00:00 +0000</pubDate><guid>https://blog.beaumo.net/blog/safer-ai-scripting</guid><description>Have the AI write two files: a short wrapper you read and approve, and a Deno script that runs with only the permissions the wrapper grants. What that protects against, what it doesn&amp;rsquo;t, and why &lt;code&gt;--allow-run&lt;/code&gt; breaks it.</description></item><item><title>The Negation Paradox: Why 'Don't Do X' Makes AI Do X</title><link>https://blog.beaumo.net/blog/negation-paradox</link><pubDate>Fri, 09 Jan 2026 01:00:00 +0000</pubDate><guid>https://blog.beaumo.net/blog/negation-paradox</guid><description>Telling a model not to do something puts that thing in its context, and attention has no way to subtract it. Describe the output you want, not the one you don&amp;rsquo;t.</description></item><item><title>Contact</title><link>https://blog.beaumo.net/contact/me</link><pubDate>Fri, 09 Jan 2026 00:00:00 +0000</pubDate><guid>https://blog.beaumo.net/contact/me</guid><description>&lt;p&gt;Want to get in touch? Fill out the form below.&lt;/p&gt;</description></item><item><title>Instructions for AI Coding Assistants</title><link>https://blog.beaumo.net/blog/instructions-for-ai-coding-assistants</link><pubDate>Thu, 08 Jan 2026 21:00:00 +0000</pubDate><guid>https://blog.beaumo.net/blog/instructions-for-ai-coding-assistants</guid><description>A starting template for the instructions file an AI coding assistant reads before it touches your repository. It gets what you know about boundaries and shared code out of your head and into a file the tool reads.</description></item><item><title>Teaching AI to Code Like a Senior Developer: SOLID Principles as Guardrails</title><link>https://blog.beaumo.net/blog/solid-principles-as-ai-guardrails</link><pubDate>Thu, 08 Jan 2026 20:00:00 +0000</pubDate><guid>https://blog.beaumo.net/blog/solid-principles-as-ai-guardrails</guid><description>AI coding assistants are too helpful: the code works, but it doesn&amp;rsquo;t belong. SOLID principles, used as constraints on the assistant, give it the pause an experienced developer has before changing things.</description></item><item><title>Hello World</title><link>https://blog.beaumo.net/blog/helloworld</link><pubDate>Thu, 08 Jan 2026 19:20:37 +0000</pubDate><guid>https://blog.beaumo.net/blog/helloworld</guid><description>The first post, which exists to prove the machinery works: words go in, HTML comes out. It promises nothing else.</description></item></channel></rss>