<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Simon Willison on MacWorks</title><link>https://macworks.dev/docs/week/simonwillison/</link><description>Recent content in Simon Willison on MacWorks</description><generator>Hugo</generator><language>en</language><atom:link href="https://macworks.dev/docs/week/simonwillison/index.xml" rel="self" type="application/rss+xml"/><item><title>2026-04-13</title><link>https://macworks.dev/docs/week/simonwillison/simonwillison-2026-04-13/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://macworks.dev/docs/week/simonwillison/simonwillison-2026-04-13/</guid><description>&lt;h1 id="simon-willison--2026-04-13"&gt;Simon Willison — 2026-04-13&lt;a class="anchor" href="#simon-willison--2026-04-13"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="highlight"&gt;Highlight&lt;a class="anchor" href="#highlight"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Today&amp;rsquo;s standout is Simon&amp;rsquo;s hands-on research into the newly released &lt;code&gt;servo&lt;/code&gt; crate using Claude Code. It perfectly captures his classic approach to AI-assisted exploration, demonstrating how quickly you can prototype a Rust CLI tool and evaluate WebAssembly compatibility with an LLM sidekick.&lt;/p&gt;
&lt;h2 id="posts"&gt;Posts&lt;a class="anchor" href="#posts"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;[Exploring the new servo crate]&lt;/strong&gt; · &lt;a href="https://simonwillison.net/2026/Apr/13/servo-crate-exploration/#atom-everything"&gt;Source&lt;/a&gt;
Following the initial release of the embeddable &lt;code&gt;servo&lt;/code&gt; browser engine on crates.io, Simon tasked Claude Code for web with exploring its capabilities. The AI successfully generated a working Rust CLI tool called &lt;code&gt;servo-shot&lt;/code&gt; for taking web screenshots. While compiling Servo itself to WebAssembly proved unfeasible due to its heavy use of threads and SpiderMonkey dependencies, Claude instead built a playground page utilizing a WebAssembly build of the &lt;code&gt;html5ever&lt;/code&gt; and &lt;code&gt;markup5ever_rcdom&lt;/code&gt; crates to parse HTML fragments.&lt;/p&gt;</description></item><item><title>2026-04-12</title><link>https://macworks.dev/docs/week/simonwillison/simonwillison-2026-04-12/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://macworks.dev/docs/week/simonwillison/simonwillison-2026-04-12/</guid><description>&lt;h1 id="simon-willison--2026-04-12"&gt;Simon Willison — 2026-04-12&lt;a class="anchor" href="#simon-willison--2026-04-12"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="highlight"&gt;Highlight&lt;a class="anchor" href="#highlight"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Simon shares a highly practical, single-command recipe for running local speech-to-text transcription on macOS using the Gemma 4 model and Apple&amp;rsquo;s MLX framework. It is a prime example of his ongoing exploration into making local, multimodal LLMs frictionless and accessible using modern Python packaging tools like &lt;code&gt;uv&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="posts"&gt;Posts&lt;a class="anchor" href="#posts"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;[Gemma 4 audio with MLX]&lt;/strong&gt; · &lt;a href="https://simonwillison.net/2026/Apr/12/mlx-audio/#atom-everything"&gt;Source&lt;/a&gt;
Thanks to a tip from Rahim Nathwani, Simon demonstrates a quick &lt;code&gt;uv run&lt;/code&gt; recipe to transcribe audio locally using the 10.28 GB Gemma 4 E2B model via &lt;code&gt;mlx-vlm&lt;/code&gt;. He tested the pipeline on a 14-second voice memo, and while it slightly misinterpreted a couple of words (hearing &amp;ldquo;front&amp;rdquo; instead of &amp;ldquo;right&amp;rdquo;), Simon conceded that the errors were understandable given the audio itself. The post highlights how easy it has become to test heavyweight, local AI models on Apple Silicon without complex environment setup.&lt;/p&gt;</description></item><item><title>2026-04-11</title><link>https://macworks.dev/docs/week/simonwillison/simonwillison-2026-04-11/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://macworks.dev/docs/week/simonwillison/simonwillison-2026-04-11/</guid><description>&lt;h1 id="simon-willison--2026-04-11"&gt;Simon Willison — 2026-04-11&lt;a class="anchor" href="#simon-willison--2026-04-11"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="highlight"&gt;Highlight&lt;a class="anchor" href="#highlight"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The standout update today centers on the release of SQLite 3.53.0, where Simon highlights highly anticipated native &lt;code&gt;ALTER TABLE&lt;/code&gt; constraint improvements and showcases his classic rapid-prototyping workflow by using Claude Code on his phone to build a WebAssembly-powered playground for the database&amp;rsquo;s new Query Result Formatter.&lt;/p&gt;
&lt;h2 id="posts"&gt;Posts&lt;a class="anchor" href="#posts"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;SQLite 3.53.0&lt;/strong&gt; · &lt;a href="https://simonwillison.net/2026/Apr/11/sqlite/#atom-everything"&gt;Source&lt;/a&gt;
This is a substantial release following the withdrawal of SQLite 3.52.0, packed with accumulated user-facing and internal improvements. Simon specifically highlights that &lt;code&gt;ALTER TABLE&lt;/code&gt; can now directly add and remove &lt;code&gt;NOT NULL&lt;/code&gt; and &lt;code&gt;CHECK&lt;/code&gt; constraints, a workflow he previously had to manage using his own &lt;code&gt;sqlite-utils transform()&lt;/code&gt; method. The update also introduces &lt;code&gt;json_array_insert()&lt;/code&gt; (alongside its jsonb equivalent) and brings significant upgrades to the CLI mode&amp;rsquo;s result formatting via a new Query Results Formatter library. True to form, Simon leveraged AI assistance—specifically Claude Code on his phone—to compile this new C library into WebAssembly to build a custom playground interface.&lt;/p&gt;</description></item><item><title>2026-04-10</title><link>https://macworks.dev/docs/week/simonwillison/simonwillison-2026-04-10/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://macworks.dev/docs/week/simonwillison/simonwillison-2026-04-10/</guid><description>&lt;h1 id="simon-willison--2026-04-10"&gt;Simon Willison — 2026-04-10&lt;a class="anchor" href="#simon-willison--2026-04-10"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="highlight"&gt;Highlight&lt;a class="anchor" href="#highlight"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Simon points out the non-obvious reality that ChatGPT&amp;rsquo;s Advanced Voice Mode is actually running on an older, weaker model compared to their flagship developer tools. Drawing on insights from Andrej Karpathy, he highlights the widening capability gap between consumer-facing voice interfaces and B2B-focused reasoning models that benefit from verifiable reinforcement learning.&lt;/p&gt;
&lt;h2 id="posts"&gt;Posts&lt;a class="anchor" href="#posts"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://simonwillison.net/2026/Apr/10/voice-mode-is-weaker/#atom-everything"&gt;ChatGPT voice mode is a weaker model&lt;/a&gt;&lt;/strong&gt;
Simon reflects on the counterintuitive fact that OpenAI&amp;rsquo;s Advanced Voice Mode runs on a GPT-4o era model with an April 2024 knowledge cutoff. Prompted by a tweet from Andrej Karpathy, he contrasts this consumer feature with top-tier coding models capable of coherently restructuring entire codebases or finding system vulnerabilities. Karpathy notes this divergence in capabilities exists because coding tasks offer explicit, verifiable reward functions ideal for reinforcement learning and hold significantly more B2B value.&lt;/p&gt;</description></item><item><title>2026-04-09</title><link>https://macworks.dev/docs/week/simonwillison/simonwillison-2026-04-09/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://macworks.dev/docs/week/simonwillison/simonwillison-2026-04-09/</guid><description>&lt;h1 id="simon-willison--2026-04-09"&gt;Simon Willison — 2026-04-09&lt;a class="anchor" href="#simon-willison--2026-04-09"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="highlight"&gt;Highlight&lt;a class="anchor" href="#highlight"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Today&amp;rsquo;s most substantive update is the release of &lt;code&gt;asgi-gzip 0.3&lt;/code&gt;, which serves as a great practical reminder of the hidden risks in automated maintenance workflows. A silently failing GitHub Action caused his library to miss a crucial upstream Starlette fix for Server-Sent Events (SSE) compression, which ended up breaking a new Datasette feature in production.&lt;/p&gt;
&lt;h2 id="posts"&gt;Posts&lt;a class="anchor" href="#posts"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;[asgi-gzip 0.3]&lt;/strong&gt; · &lt;a href="https://simonwillison.net/2026/Apr/9/asgi-gzip/#atom-everything"&gt;Source&lt;/a&gt;
Simon released an update to &lt;code&gt;asgi-gzip&lt;/code&gt; after a production deployment of a new Server-Sent Events (SSE) feature for Datasette ran into trouble. The root cause was &lt;code&gt;datasette-gzip&lt;/code&gt; incorrectly compressing &lt;code&gt;event/text-stream&lt;/code&gt; responses. The library relies on a scheduled GitHub Actions workflow to port updates from Starlette, but the action had stopped running and missed Starlette&amp;rsquo;s upstream fix for this exact issue. By running the workflow and integrating the fix, both &lt;code&gt;datasette-gzip&lt;/code&gt; and &lt;code&gt;asgi-gzip&lt;/code&gt; now handle SSE responses correctly.&lt;/p&gt;</description></item><item><title>2026-04-08</title><link>https://macworks.dev/docs/week/simonwillison/simonwillison-2026-04-08/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://macworks.dev/docs/week/simonwillison/simonwillison-2026-04-08/</guid><description>&lt;h1 id="simon-willison--2026-04-08"&gt;Simon Willison — 2026-04-08&lt;a class="anchor" href="#simon-willison--2026-04-08"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="highlight"&gt;Highlight&lt;a class="anchor" href="#highlight"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The most substantial piece today is a deep-dive into Meta&amp;rsquo;s new Muse Spark model and its chat harness, where Simon successfully extracts the platform&amp;rsquo;s system tool definitions via direct prompting. His exploration of Meta&amp;rsquo;s built-in Python Code Interpreter and &lt;code&gt;visual_grounding&lt;/code&gt; capabilities highlights a powerful, sandbox-driven approach to combining generative AI with programmatic image analysis and exact object localization.&lt;/p&gt;
&lt;h2 id="posts"&gt;Posts&lt;a class="anchor" href="#posts"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://simonwillison.net/2026/Apr/8/muse-spark/#atom-everything"&gt;Meta’s new model is Muse Spark, and meta.ai chat has some interesting tools&lt;/a&gt;&lt;/strong&gt;
Meta has launched Muse Spark, a new hosted model currently accessible as a private API preview and directly via the meta.ai chat interface. By simply asking the chat harness to list its internal tools and their exact parameters, Simon documented 16 different built-in tools. Standouts include a Python Code Interpreter (&lt;code&gt;container.python_execution&lt;/code&gt;) running Python 3.9 and SQLite 3.34.1, mechanisms for creating web artifacts, and a highly capable &lt;code&gt;container.visual_grounding&lt;/code&gt; tool. He ran hands-on experiments generating images of a raccoon wearing trash, then used the platform&amp;rsquo;s Python sandbox and grounding tools to extract precise, nested bounding boxes and perform object counts (like counting whiskers or his classic pelicans). Although the model is closed for now, infrastructure scaling and comments from Alexandr Wang suggest future versions could be open-sourced.&lt;/p&gt;</description></item><item><title>2026-04-07</title><link>https://macworks.dev/docs/week/simonwillison/simonwillison-2026-04-07/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://macworks.dev/docs/week/simonwillison/simonwillison-2026-04-07/</guid><description>&lt;h1 id="simon-willison--2026-04-07"&gt;Simon Willison — 2026-04-07&lt;a class="anchor" href="#simon-willison--2026-04-07"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="highlight"&gt;Highlight&lt;a class="anchor" href="#highlight"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Anthropic&amp;rsquo;s decision to restrict access to their new Claude Mythos model underscores a massive, sudden shift in AI capabilities. It is a fascinating look at an industry-wide reckoning as open-source maintainers transition from dealing with &amp;ldquo;AI slop&amp;rdquo; to facing a tsunami of highly accurate, sophisticated vulnerability reports.&lt;/p&gt;
&lt;h2 id="posts"&gt;Posts&lt;a class="anchor" href="#posts"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;[Anthropic’s Project Glasswing - restricting Claude Mythos to security researchers - sounds necessary to me]&lt;/strong&gt; · &lt;a href="https://simonwillison.net/2026/Apr/7/project-glasswing/#atom-everything"&gt;Source&lt;/a&gt;
Anthropic has delayed the general release of Claude Mythos, a general-purpose model similar to Claude Opus 4.6, opting instead to limit access to trusted partners under &amp;ldquo;Project Glasswing&amp;rdquo; so they can patch foundational internet systems. Simon digs into the context, tracking how credible security professionals are warning about the ability of frontier LLMs to chain multiple minor vulnerabilities into sophisticated exploits. He even uses &lt;code&gt;git blame&lt;/code&gt; to independently verify a 27-year-old OpenBSD kernel bug discovered by the model. He concludes that delaying the release until new safeguards are built, while providing $100M in credits to defenders, is a highly reasonable trade-off.&lt;/p&gt;</description></item></channel></rss>