<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en-us" xmlns="http://www.w3.org/2005/Atom"><title>Simon Willison's Weblog</title><link href="http://simonwillison.net/" rel="alternate"/><link href="http://simonwillison.net/atom/everything/" rel="self"/><id>http://simonwillison.net/</id><updated>2026-11-06T17:13:12+00:00</updated><author><name>Simon Willison</name></author><entry><title>Quoting Nilay Patel</title><link href="https://simonwillison.net/2026/Nov/6/nilay-patel/" rel="alternate"/><published>2026-11-06T17:13:12+00:00</published><updated>2026-11-06T17:13:12+00:00</updated><id>https://simonwillison.net/2026/Nov/6/nilay-patel/</id><summary type="html">
    &lt;blockquote cite="https://www.youtube.com/watch?v=-U4thshDTL8&amp;amp;t=422s"&gt;&lt;p&gt;The products aren't good enough to sell people on the costs.&lt;/p&gt;
&lt;p&gt;You cannot tell people that you have to listen to the whine of a data center in their backyard for AI overviews and some of the most hilarious deep fake slop in history.&lt;/p&gt;
&lt;p&gt;It's not worth it. It just isn't worth it to anyone. And agents aren't real and they might not be being used the way that anyone wants them to yet. All these companies are spending more than they're making on these products. Refrigerators holding blood storage in Europe are being hacked.&lt;/p&gt;
&lt;p&gt;The costs are too high. The benefits are not real. And if you connect that to corruption, you're like, in order to impose these costs on me, these CEOs are in the White House shaking Trump's hand, renaming it to the Gulf of America, paying for this ballroom that we don't want. It's obvious crypto-corruption, and it's still slop. &lt;/p&gt;
&lt;p&gt;The AI industry will not get out of it until they make &lt;em&gt;better products&lt;/em&gt;. Until everyone can see without needing to be convinced, without needing an ad campaign, without any of this stuff that just using these products makes your life better.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p class="cite"&gt;&amp;mdash; &lt;a href="https://www.youtube.com/watch?v=-U4thshDTL8&amp;amp;t=422s"&gt;Nilay Patel&lt;/a&gt;, The Vergecast: Big Tech lost big in the 2026 election&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/nilay-patel"&gt;nilay-patel&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/slop"&gt;slop&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-ethics"&gt;ai-ethics&lt;/a&gt;&lt;/p&gt;



</summary><category term="nilay-patel"/><category term="slop"/><category term="ai"/><category term="generative-ai"/><category term="ai-ethics"/></entry><entry><title>Quoting Paul Ford</title><link href="https://simonwillison.net/2026/Nov/5/paul-ford/" rel="alternate"/><published>2026-11-05T17:34:03+00:00</published><updated>2026-11-05T17:34:03+00:00</updated><id>https://simonwillison.net/2026/Nov/5/paul-ford/</id><summary type="html">
    &lt;blockquote cite="https://ftrain.com/aboard-the-web-is-more-than-enough"&gt;&lt;p&gt;The web browser is very, very, very powerful software for applications, &lt;em&gt;and the cost of accessing that power is going down seemingly every day&lt;/em&gt;.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p class="cite"&gt;&amp;mdash; &lt;a href="https://ftrain.com/aboard-the-web-is-more-than-enough"&gt;Paul Ford&lt;/a&gt;, The Web Is More Than Enough&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/browsers"&gt;browsers&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/paul-ford"&gt;paul-ford&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/web-development"&gt;web-development&lt;/a&gt;&lt;/p&gt;



</summary><category term="browsers"/><category term="paul-ford"/><category term="web-development"/></entry><entry><title>datasette-llm 0.1a10</title><link href="https://simonwillison.net/2026/Nov/4/datasette-llm/" rel="alternate"/><published>2026-11-04T15:26:02+00:00</published><updated>2026-11-04T15:26:02+00:00</updated><id>https://simonwillison.net/2026/Nov/4/datasette-llm/</id><summary type="html">
    
        &lt;p&gt;&lt;strong&gt;Release:&lt;/strong&gt; &lt;a href="https://github.com/datasette/datasette-llm/releases/tag/0.1a10"&gt;datasette-llm 0.1a10&lt;/a&gt;&lt;/p&gt;
        &lt;p&gt;Fixes a &lt;a href="https://github.com/datasette/datasette-llm/pull/11"&gt;bug&lt;/a&gt; that affected my &lt;a href="https://agent.datasette.io/"&gt;agent.datasette.io&lt;/a&gt; demo site, where the set of available LLM models was not correctly restricted to just those in the configuration.&lt;/p&gt;
    
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/datasette"&gt;datasette&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llm"&gt;llm&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="datasette"/><category term="llm"/></entry><entry><title>datasette-apps 0.3a0</title><link href="https://simonwillison.net/2026/Nov/4/datasette-apps/" rel="alternate"/><published>2026-11-04T00:29:36+00:00</published><updated>2026-11-04T00:29:36+00:00</updated><id>https://simonwillison.net/2026/Nov/4/datasette-apps/</id><summary type="html">
    
        &lt;p&gt;&lt;strong&gt;Release:&lt;/strong&gt; &lt;a href="https://github.com/datasette/datasette-apps/releases/tag/0.3a0"&gt;datasette-apps 0.3a0&lt;/a&gt;&lt;/p&gt;
        &lt;p&gt;Datasette Apps adds support for hosting and editing custom HTML applications inside of Datasette.&lt;/p&gt;
&lt;p&gt;These can be created by hand, but it's easier to create them using LLMs via &lt;a href="https://agent.datasette.io/"&gt;Datasette Agent&lt;/a&gt;. This release improves that integration:&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Apps can now be tagged in Datasette Agent chat messages by typing &lt;code&gt;#&lt;/code&gt;, which autocompletes from the apps the user has permission to view.&lt;/li&gt;
&lt;li&gt;New &lt;code&gt;app_add_stored_queries()&lt;/code&gt; and &lt;code&gt;app_remove_stored_queries()&lt;/code&gt; tools let the agent manage which stored queries an app is allowed to call. Granting a write query requires approval from the user first.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;app_create()&lt;/code&gt; now checks that each requested stored query exists and that the user can view it, and asks the user to approve any write queries before the app is created.&lt;/li&gt;
&lt;li&gt;The "View app" buttons shown by the agent tools, and the links on &lt;code&gt;#&lt;/code&gt; app references, now open the app full screen in the Datasette Agent panel.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
    
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/datasette"&gt;datasette&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/datasette-agent"&gt;datasette-agent&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/datasette-apps"&gt;datasette-apps&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="datasette"/><category term="datasette-agent"/><category term="datasette-apps"/></entry><entry><title>datasette-agent 0.5a0</title><link href="https://simonwillison.net/2026/Nov/3/datasette-agent/" rel="alternate"/><published>2026-11-03T23:13:45+00:00</published><updated>2026-11-03T23:13:45+00:00</updated><id>https://simonwillison.net/2026/Nov/3/datasette-agent/</id><summary type="html">
    
        &lt;p&gt;&lt;strong&gt;Release:&lt;/strong&gt; &lt;a href="https://github.com/datasette/datasette-agent/releases/tag/0.5a0"&gt;datasette-agent 0.5a0&lt;/a&gt;&lt;/p&gt;
        &lt;p&gt;This is a significant release of &lt;a href="https://agent.datasette.io/"&gt;Datasette Agent&lt;/a&gt;. The most notable new feature is called the &lt;strong&gt;panel&lt;/strong&gt; - it lets the agent chat open and then sit next to pages from Datasette, for example a table or query page.&lt;/p&gt;
&lt;p&gt;When combined with &lt;a href="https://github.com/datasette/datasette-apps"&gt;datasette-apps&lt;/a&gt; this means you can prompt a database-backed app into existence and then modify it from the chat that sits next to that app.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Screenshot of a split-screen chat interface titled &amp;quot;evaluate llm prices&amp;quot; (model tag &amp;quot;gpt-6-luna&amp;quot;): the conversation runs in a narrow column on the left, and a wide side panel on the right displays the app the assistant built, with &amp;quot;EXPORT&amp;quot; and &amp;quot;Close panel&amp;quot; buttons above it. In the chat, blue user bubbles read &amp;quot;Build an app to help explore this data&amp;quot; and &amp;quot;give it a more hacker aesthetic design&amp;quot;, each followed by collapsed tool calls (app_create, app_render, app_view, app_str_replace), &amp;quot;LLM Price Explorer v1.&amp;quot; and &amp;quot;v2.&amp;quot; entries with &amp;quot;View app&amp;quot; and &amp;quot;Edit&amp;quot; buttons, and short assistant replies describing the app and its new dark terminal-inspired theme. The right panel shows the resulting &amp;quot;LLM Price Explorer&amp;quot; in neon green monospace on black: stat cards for 185 models from 12 providers with workload costs from $0.042 (Jev 1.13) to $300.00 (o1 Pro), filter and workload cost estimate controls, and a table of matching models with input, output and cached input prices per million tokens." src="https://static.simonwillison.net/static/2026/datasette-agent-panel.webp" /&gt;&lt;/p&gt;
&lt;p&gt;You can try it by signing in with your GitHub account to &lt;a href="https://agent.datasette.io/"&gt;agent.datasette.io&lt;/a&gt;.&lt;/p&gt;
    
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/projects"&gt;projects&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/datasette"&gt;datasette&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/datasette-agent"&gt;datasette-agent&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="projects"/><category term="datasette"/><category term="datasette-agent"/></entry><entry><title>llm 0.37.1</title><link href="https://simonwillison.net/2026/Nov/3/llm/" rel="alternate"/><published>2026-11-03T21:41:42+00:00</published><updated>2026-11-03T21:41:42+00:00</updated><id>https://simonwillison.net/2026/Nov/3/llm/</id><summary type="html">
    
        &lt;p&gt;&lt;strong&gt;Release:&lt;/strong&gt; &lt;a href="https://github.com/simonw/llm/releases/tag/0.37.1"&gt;llm 0.37.1&lt;/a&gt;&lt;/p&gt;
        &lt;p&gt;A bugfix release for &lt;a href="https://llm.datasette.io/"&gt;LLM&lt;/a&gt;, with contributions from &lt;a href="https://github.com/remote-controlled-man"&gt;Steven Huang&lt;/a&gt;, &lt;a href="https://github.com/tao-hpu"&gt;Tao An&lt;/a&gt;, &lt;a href="https://github.com/ar-jan"&gt;Arjan Mossel&lt;/a&gt;, and &lt;a href="https://github.com/XXXXXQ-0206"&gt;XQ&lt;/a&gt;.&lt;/p&gt;
    
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/llm"&gt;llm&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="llm"/></entry><entry><title>Qwen 3.8 27B on my laptop can interpret model weights, too</title><link href="https://simonwillison.net/2026/Nov/3/qwen-can-interpret-model-weights/" rel="alternate"/><published>2026-11-03T16:29:48+00:00</published><updated>2026-11-03T16:29:48+00:00</updated><id>https://simonwillison.net/2026/Nov/3/qwen-can-interpret-model-weights/</id><summary type="html">
    &lt;p&gt;Yesterday's hot paper was &lt;a href="https://rikiyat.github.io/blog/weight-space-programming/"&gt;Sparks of Weight-Space Programming: LLMs can natively read &amp;amp; write neural network weights&lt;/a&gt; by Rikiya Takehi, Jayden Teoh, Alex Zhang, and Omar Khattab. The paper (OK, the authors classify is as a "blog post", but it's paper-shaped) found that frontier models, in particular GPT-6 Astra, can both interpret and modify the raw weights of a machine learning model - literally a text description of the model containing a bunch of floating point numbers. I've been playing with one of the examples from the paper and I'm delighted to share that Qwen 3.8 27B running on my laptop can do this as well!&lt;/p&gt;
&lt;h4 id="weight-space-programming"&gt;Weight-Space Programming&lt;/h4&gt;
&lt;p&gt;Here's the highlight from their abstract, describing impressive capabilities for GPT-6 Astra and coining the term &lt;strong&gt;Weight-Space Programming&lt;/strong&gt; for when LLMs analyze and modify model weights:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Just by looking at the raw weights, GPT-6 Astra &lt;strong&gt;can tell what a network was trained to do&lt;/strong&gt;. And without any environment feedback, it &lt;strong&gt;has no trouble writing, from scratch, small game-playing networks&lt;/strong&gt; that outplay networks trained with PPO for 100 million steps.&lt;/p&gt;
&lt;p&gt;Likewise, asked to make Qwen3.5-0.8B better at math without gradients, Astra &lt;strong&gt;identifies an issue in its weights&lt;/strong&gt; causing reasoning loops that Qwen’s own &lt;a href="https://huggingface.co/Qwen/Qwen3.5-0.8B/blob/main/README.md#L856"&gt;model card&lt;/a&gt; warns about, and &lt;strong&gt;fixes this by natively editing 0.016% of the weights&lt;/strong&gt;. With the same sampling settings, this weight correction raises MATH-500 from 7.9% to 48.1% and generalizes out of the box to instruction following, raising IFEval by 3x.&lt;/p&gt;
&lt;p&gt;All of this is possible without allowing Astra to write training loops. It uses its reasoning to figure out what each part of a neural network computes, or should compute, and changes the weights accordingly. We call this &lt;strong&gt;Weight-Space Programming&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The paper combines two topics that I think deserve to be treated separately. The first is what models can do with raw weights &lt;em&gt;without&lt;/em&gt; running tools or executing code. The second explores how well models, once armed with code, can run operations to update and improve other models.&lt;/p&gt;
&lt;p&gt;spaCy author Matthew Honnibal &lt;a href="https://honnibal.dev/blog/astra-read-write-misleading"&gt;called the paper misleading&lt;/a&gt; for conflating the two, and Sean Goedecke &lt;a href="https://www.seangoedecke.com/llms-are-not-superhuman-at-reading-and-writing-neural-network-weights/"&gt;deconstructed the Qwen3.5-0.8B update example&lt;/a&gt; as taking the same steps that a human ML researcher would use.&lt;/p&gt;
&lt;p&gt;I'm going to focus on the no-tools question, which I think is the more interesting of the two.&lt;/p&gt;
&lt;p&gt;The paper presents the first question as &lt;strong&gt;Can LLMs understand model behaviors from weights?&lt;/strong&gt; They trained four neural networks to play simplified 10x10 grid versions of four classic computer games - Breakout, Pong, Pac-Man, and Freeway (I had &lt;a href="https://en.wikipedia.org/wiki/Freeway_(video_game)"&gt;to look that one up&lt;/a&gt;, it's an Atari 2600 game from 1981). Then they fed those weights (as floating point numbers) to an LLM along with the following question:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;The weights below belong to one policy network that was trained with reinforcement learning to play a game on this grid. Which game was it trained on? Work from the weights. You have no tools: no code execution, no calculator, nothing to run. This is a single response.&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The GitHub repository that accompanies the paper is &lt;a href="https://github.com/RikiyaT/lm_understand-logs"&gt;RikiyaT/lm_understand-logs&lt;/a&gt;. The &lt;a href="https://github.com/RikiyaT/lm_understand-logs/tree/main/exp1_which_game"&gt;exp1_which_game&lt;/a&gt; folder contains the prompts they used, with weights for the four games:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/RikiyaT/lm_understand-logs/blob/main/exp1_which_game/runs/breakout/prompt.txt"&gt;breakout/prompt.txt&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/RikiyaT/lm_understand-logs/blob/main/exp1_which_game/runs/freeway/prompt.txt"&gt;freeway/prompt.txt&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/RikiyaT/lm_understand-logs/blob/main/exp1_which_game/runs/pacman/prompt.txt"&gt;pacman/prompt.txt&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/RikiyaT/lm_understand-logs/blob/main/exp1_which_game/runs/pong/prompt.txt"&gt;pong/prompt.txt&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I checked and, aside from the weights, each prompt is identical to the others.&lt;/p&gt;
&lt;h4 id="trying-it-out-with-qwen-3-8-27b-and-other-models"&gt;Trying it out with Qwen 3.8 27B and other models&lt;/h4&gt;
&lt;p&gt;The prompts on GitHub are self-contained. My &lt;a href="https://llm.datasette.io/"&gt;LLM&lt;/a&gt; tool has a &lt;code&gt;-f/--fragment&lt;/code&gt; option which can be passed the URL to a text file to use as a prompt, which means I can run any of the above like this:&lt;/p&gt;
&lt;div class="highlight highlight-source-shell"&gt;&lt;pre&gt;llm -f https://raw.githubusercontent.com/RikiyaT/lm_understand-logs/refs/heads/main/exp1_which_game/runs/breakout/prompt.txt \
  -m openrouter/moonshotai/kimi-k3.1-pro&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This example requires the &lt;a href="https://github.com/simonw/llm-openrouter"&gt;llm-openrouter plugin&lt;/a&gt; installed, and runs the Breakout prompt against Kimi K3.1 Pro via OpenRouter. Here's &lt;a href="https://gist.github.com/simonw/9f18d2945a105c04734ef7e5cd95717c"&gt;what I got back from Kimi K3.1 Pro&lt;/a&gt;, which successfully guessed Breakout after 9m 41s and 19,493 reasoning tokens.&lt;/p&gt;
&lt;p&gt;But how about &lt;a href="https://simonwillison.net/2026/Aug/16/qwen-38-27b/"&gt;Qwen 3.8 27B&lt;/a&gt;? That's still my favorite model to run on my own laptop - it's just 17GB (I use &lt;a href="https://huggingface.co/lmstudio-community/Qwen3.8-27B-GGUF/blob/main/Qwen3.8-27B-Q4_K_M.gguf"&gt;this version&lt;/a&gt;) and somehow feels close to the leading proprietary models of 2025.&lt;/p&gt;
&lt;p&gt;I fired up &lt;a href="https://lmstudio.ai"&gt;LM Studio&lt;/a&gt;, ensured Qwen 3.8 27B was loaded with a long context window (the default 8192 context failed with errors), installed the &lt;a href="https://github.com/llm-lmstudio/llm-lmstudio"&gt;llm-lmstudio&lt;/a&gt; plugin and ran this command:&lt;/p&gt;
&lt;div class="highlight highlight-source-shell"&gt;&lt;pre&gt;LMSTUDIO_TIMEOUT=900 \
  llm -f https://raw.githubusercontent.com/RikiyaT/lm_understand-logs/refs/heads/main/exp1_which_game/runs/pacman/prompt.txt \
  -m lmstudio/qwen/qwen3.8-27b&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;(I had to bump the timeout up using an environment variable, see &lt;a href="https://github.com/llm-lmstudio/llm-lmstudio/issues/16"&gt;this issue&lt;/a&gt;.)&lt;/p&gt;
&lt;p&gt;After 46m 12s and 43,506 reasoning tokens, Qwen on my laptop &lt;a href="https://tools.simonwillison.net/markdown-svg-renderer?url=https%3A%2F%2Fgist.github.com%2Fsimonw%2F387d3a7927f165b1986bb6c2099d0f53#response-1"&gt;returned a response&lt;/a&gt; that ended like this (here's &lt;a href="https://tools.simonwillison.net/markdown-svg-renderer?url=https%3A%2F%2Fgist.github.com%2Fsimonw%2F387d3a7927f165b1986bb6c2099d0f53#reasoning-1"&gt;the reasoning trace&lt;/a&gt;):&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Game: A simplified Pac-Man-style gridworld: an agent moves through a fixed 8x8 maze with central and corner wall blocks, moving objects/ghosts, and reward targets/pellets.&lt;/p&gt;
&lt;p&gt;Description: The agent navigates a fixed maze-like 8x8 board, using current agent/moving-object/previous-frame cues to move through corridors, collect reward-target cells, and avoid moving objects or hazards.&lt;/p&gt;
&lt;p&gt;Confidence: 72%&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This is impressive. I tried it on two of the other games as well. It &lt;a href="https://tools.simonwillison.net/markdown-svg-renderer?url=https%3A%2F%2Fgist.github.com%2Fsimonw%2F387d3a7927f165b1986bb6c2099d0f53#response-2"&gt;identified Pong&lt;/a&gt; (&lt;a href="https://tools.simonwillison.net/markdown-svg-renderer?url=https%3A%2F%2Fgist.github.com%2Fsimonw%2F387d3a7927f165b1986bb6c2099d0f53#reasoning-2"&gt;reasoning&lt;/a&gt;) in 1h 4m 54s:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Pong&lt;/strong&gt; — specifically a Pong-like paddle/ball game where the agent controls a vertical paddle on the right side and must move up/down to intercept or return a moving ball/reward object.&lt;/p&gt;
&lt;p&gt;Description:&lt;/p&gt;
&lt;p&gt;The agent moves a right-side paddle vertically to hit or catch a moving ball-like reward target moving across the 8×8 field, while a left-side moving object/opponent and wall borders define the play; reward is obtained by successfully intercepting/returning/scoring the ball, and missing or failing to hit it is penalized.&lt;/p&gt;
&lt;p&gt;Confidence:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;75%&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;And &lt;a href="https://tools.simonwillison.net/markdown-svg-renderer?url=https%3A%2F%2Fgist.github.com%2Fsimonw%2F387d3a7927f165b1986bb6c2099d0f53#response"&gt;Breakout&lt;/a&gt; (&lt;a href="https://tools.simonwillison.net/markdown-svg-renderer?url=https%3A%2F%2Fgist.github.com%2Fsimonw%2F387d3a7927f165b1986bb6c2099d0f53#reasoning"&gt;reasoning&lt;/a&gt;) in 52m 25s:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Game: Breakout, or an Arkanoid-like paddle/ball/brick game.&lt;/p&gt;
&lt;p&gt;Description: The agent is a paddle on the bottom row and moves left/right to keep a ball in play; the ball moves around the upper grid, and bricks/reward targets in the top rows give reward when hit, while missing the ball/hitting the bottom wall ends the episode or gives penalty.&lt;/p&gt;
&lt;p&gt;Confidence: 88%&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Qwen failed at the Freeway prompt, which didn't surprise me considering that game is more obscure than the other three. Here's &lt;a href="https://tools.simonwillison.net/markdown-svg-renderer?url=https%3A%2F%2Fgist.github.com%2Fsimonw%2F6ed68f659e26a32e7d9096391d92f326"&gt;that transcript&lt;/a&gt; - Qwen thought it was "A simplified Pac-Man-like grid game: agent moves 4-directionally".&lt;/p&gt;
&lt;p&gt;The reasoning traces are fun to skim, and almost incomprehensible. Here's a sample:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;What about agent channel0? We see some large channel0 rows near row8 col7/8 and maybe bottom? Let's list channel0 large: line436 input435 (row8 col7 ch0) -2.107,1.169,0.513...; line441 input440 (row8 col8 ch0) -0.376,0.010,1.564,3.855...; line445 input444 (row8 col8 ch4) 0.142,0.491...; line382? input381 ch0? Wait line382 input381: 381//5=76 (row7 col6), ch1? 381%5=1? 76 * 5=380, ch1. So not. Channel0 large maybe at row8 col7/8 only. Also top row? line44 input43 ch3, line49 ch3. Channel0 large maybe not many. Agent position could be near bottom-right? If the agent is typically at bottom-right?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;That said though, I expect a sufficiently experienced human being armed with a notepad and a pencil could get there with enough effort.&lt;/p&gt;
&lt;p&gt;It's a cool paper, but some of the wider commentary I've seen around it does not feel justified. I'm not ready to declare that the age of source code is over and our future involves incomprehensible machines editing their own model weights in incomprehensible ways.&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/machine-learning"&gt;machine-learning&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/local-llms"&gt;local-llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/qwen"&gt;qwen&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/paper-review"&gt;paper-review&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="machine-learning"/><category term="ai"/><category term="generative-ai"/><category term="local-llms"/><category term="llms"/><category term="qwen"/><category term="paper-review"/></entry><entry><title>I discovered a sound that leaks your exact location (and it's everywhere) - YouTube</title><link href="https://simonwillison.net/2026/Nov/3/a-sound-that-leaks-your-exact-location/" rel="alternate"/><published>2026-11-03T05:32:25+00:00</published><updated>2026-11-03T05:32:25+00:00</updated><id>https://simonwillison.net/2026/Nov/3/a-sound-that-leaks-your-exact-location/</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.youtube.com/watch?v=UytYrhYLOKI"&gt;I discovered a sound that leaks your exact location (and it&amp;#x27;s everywhere) - YouTube&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Genius piece of OSINT by Colsto, who demonstrates how you can take almost imperceptible background noise of planes from a video soundtrack, figure out their Doppler curves, then cross reference them against ADS-B data to find the exact location of the video based on their speed, distance, and gaps between different flights.&lt;/p&gt;
&lt;p&gt;&lt;lite-youtube videoid="UytYrhYLOKI" js-api="js-api"
  title="I discovered a sound that leaks your exact location (and it's everywhere)"
  playlabel="Play: I discovered a sound that leaks your exact location (and it's everywhere)"
&gt; &lt;/lite-youtube&gt;

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://lobste.rs/s/s1btqo/this_background_sound_leaks_your_exact"&gt;Lobste.rs&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/privacy"&gt;privacy&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/youtube"&gt;youtube&lt;/a&gt;&lt;/p&gt;



</summary><category term="privacy"/><category term="youtube"/></entry><entry><title>October sponsors-only newsletter</title><link href="https://simonwillison.net/2026/Nov/3/october-newsletter/" rel="alternate"/><published>2026-11-03T05:28:59+00:00</published><updated>2026-11-03T05:28:59+00:00</updated><id>https://simonwillison.net/2026/Nov/3/october-newsletter/</id><summary type="html">
    &lt;p&gt;I sent out the October edition of my &lt;a href="https://github.com/sponsors/simonw/"&gt;sponsors-only monthly newsletter&lt;/a&gt;. If you are a sponsor (or start a sponsorship now) you can &lt;a href="https://github.com/simonw-private/monthly/blob/main/2026-10-october.md"&gt;access it here&lt;/a&gt;. This month:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The October inflection point for vibe game development&lt;/li&gt;
&lt;li&gt;The vulnerability apocalypse gets hot&lt;/li&gt;
&lt;li&gt;LLM releases&lt;/li&gt;
&lt;li&gt;API credits for $100+/month subscriptions&lt;/li&gt;
&lt;li&gt;What I'm using right now&lt;/li&gt;
&lt;li&gt;My software releases&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;My September newsletter &lt;a href="https://simonwillison.net/newsletters/monthly-2026-09-september/"&gt;can now be seen here&lt;/a&gt;, as a preview of what you'll get. Pay $10/month to stay a month ahead of the free copy!&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/newsletter"&gt;newsletter&lt;/a&gt;&lt;/p&gt;



</summary><category term="newsletter"/></entry><entry><title>llm 0.37</title><link href="https://simonwillison.net/2026/Nov/2/llm/" rel="alternate"/><published>2026-11-02T23:49:30+00:00</published><updated>2026-11-02T23:49:30+00:00</updated><id>https://simonwillison.net/2026/Nov/2/llm/</id><summary type="html">
    
        &lt;p&gt;&lt;strong&gt;Release:&lt;/strong&gt; &lt;a href="https://github.com/simonw/llm/releases/tag/0.37"&gt;llm 0.37&lt;/a&gt;&lt;/p&gt;
        &lt;p&gt;There's a &lt;em&gt;lot&lt;/em&gt; of stuff in this new release of my LLM CLI tool and Python library, representing around two months of accumulated features and fixes.&lt;/p&gt;
&lt;p&gt;I added &lt;code&gt;gpt-6.1-sol&lt;/code&gt; and &lt;code&gt;gpt-6.1-terra&lt;/code&gt;, plus a new &lt;a href="https://llm.datasette.io/en/stable/other-models.html#configure-an-openai-compatible-model"&gt;llm openai endpoint add&lt;/a&gt; command to make it easier to configure additional models that use OpenAI-compatible endpoints.&lt;/p&gt;
&lt;p&gt;I switched the default model (if you have not set your own default) to &lt;code&gt;gpt-6-luna&lt;/code&gt; - half the price of the previous default, &lt;code&gt;gpt-5.6-luna&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;LLM's support for embeddings now accepts that different binary content may have different content-type - necessary for models like &lt;a href="https://deepmind.google/models/gemini/embedding/"&gt;Gemini Embedding 2&lt;/a&gt;, which can embed text, audio, images, and video.&lt;/p&gt;
&lt;p&gt;A lot of open source maintainers complain about a flood of AI-assisted PRs. LLM is my project that has been most affected by this and, to be honest, I'm not finding it to be a problem. That's mainly because I have Opus 5.5 or GPT-6 Astra help me with triage to spot the most useful fixes!&lt;/p&gt;
&lt;p&gt;This release includes fixes from 12 authors - almost all AI-assisted - and the burden of reviewing them wasn't nearly as great as I expected. I really see them as bug reports with attached examples - sometimes I land them, sometimes I implement my own fix.&lt;/p&gt;
&lt;p&gt;So thanks to &lt;a href="https://github.com/0d00ciallo0721"&gt;0d00ciallo0721&lt;/a&gt;, &lt;a href="https://github.com/ac1982"&gt;ac1982&lt;/a&gt;, &lt;a href="https://github.com/allenflux"&gt;Allen Flux&lt;/a&gt;, &lt;a href="https://github.com/bianyh"&gt;Bian Yuhan&lt;/a&gt;, &lt;a href="https://github.com/porkedchop"&gt;Bishop Kammeraad&lt;/a&gt;, &lt;a href="https://github.com/feiiiiii5"&gt;Chen Yufeiyang&lt;/a&gt;, &lt;a href="https://github.com/chrikrah"&gt;Christopher Krah&lt;/a&gt;, &lt;a href="https://github.com/ethanstoner"&gt;Ethan Stoner&lt;/a&gt;, &lt;a href="https://github.com/er-s-an"&gt;Jiachen Xie&lt;/a&gt;, &lt;a href="https://github.com/Pajimo"&gt;Olamide Faniyan&lt;/a&gt;, &lt;a href="https://github.com/sharatchandrasai999-sketch"&gt;Sharat Chandra Sai Boddu&lt;/a&gt;, &lt;a href="https://github.com/nosmile99"&gt;nosmile99&lt;/a&gt; for helping out with (or spending tokens on) this release!&lt;/p&gt;
    
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/open-source"&gt;open-source&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/projects"&gt;projects&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/annotated-release-notes"&gt;annotated-release-notes&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/embeddings"&gt;embeddings&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llm"&gt;llm&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="open-source"/><category term="projects"/><category term="ai"/><category term="annotated-release-notes"/><category term="generative-ai"/><category term="llms"/><category term="embeddings"/><category term="llm"/></entry><entry><title>The U.S. Census Bureau and “Super Intelligence”</title><link href="https://simonwillison.net/2026/Nov/2/census-bureau-super-intelligence/" rel="alternate"/><published>2026-11-02T13:31:26+00:00</published><updated>2026-11-02T13:31:26+00:00</updated><id>https://simonwillison.net/2026/Nov/2/census-bureau-super-intelligence/</id><summary type="html">
    &lt;p&gt;I was reminded today of &lt;a href="https://www.apolloacademy.com/ai-adoption-rate-trending-down-for-large-companies/"&gt;AI Adoption Rate Trending Down for Large Companies&lt;/a&gt;, a chart produced by Apollo Global Management in September 2025, which appeared to show a slowdown in U.S. corporate AI adoption based on numbers collected by the U.S. Census Bureau. At the time I used that chart &lt;a href="https://simonwillison.net/2025/Sep/9/apollo-ai-adoption/"&gt;to demonstrate GPT-5 data analysis&lt;/a&gt;, and then &lt;a href="https://simonwillison.net/2025/Sep/9/claude-code-interpreter/#something-much-harder-recreating-the-ai-adoption-chart"&gt;to experiment with Claude's new Code Interpreter&lt;/a&gt;. I decided to try running those numbers again to see what had changed over the past year, and in doing so learned that the Bureau has fallen foul of &lt;a href="https://www.whitehouse.gov/presidential-actions/2026/09/inaugurating-the-era-of-super-intelligence/"&gt;Executive Order 14434&lt;/a&gt;, aka the asinine Super Intelligence one.&lt;/p&gt;
&lt;h4 id="first-the-updated-chart"&gt;First, the updated chart&lt;/h4&gt;
&lt;p&gt;Every two weeks the U.S. Census Bureau runs a survey called the &lt;a href="https://www.census.gov/hfp/btos/data"&gt;Business Trends and Outlook Survey&lt;/a&gt; (aka BTOS). Each time it goes to 200,000 businesses out of 1.2 million total - the surveyed group (a "panel") cycles such that an individual business only completes the survey every twelve weeks.&lt;/p&gt;
&lt;p&gt;The latest data is published on alternating Thursdays at 10am.&lt;/p&gt;
&lt;p&gt;I used the most recent numbers (published October 22, 2026) to create a new version (&lt;a href="https://chatgpt.com/share/6ae89e86-8658-83e8-85fd-c4ef2d4f3b89?ogimg=plain"&gt;GPT-6 Astra Extra High transcript&lt;/a&gt;) of the AI adoption chart, updated to reflect both the last twelve months and a change that was made to the survey question sent out by the Bureau:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://static.simonwillison.net/static/2026-11-01/5821A414-FAF6-4E61-B037-952C1FD80D39.png" alt="Line chart titled &amp;quot;AI use by U.S. firm size&amp;quot;, subtitled &amp;quot;Six-survey trailing average • Share of employer businesses reporting use in the last two weeks&amp;quot; and &amp;quot;Updated with the October 22, 2026 Census release&amp;quot;. Seven lines for firm sizes 250+, 100–249, 50–99, 20–49, 10–19, 5–9 and 1–4, on a y-axis from 0% to 45% and an x-axis from Jan 2024 to Oct 2026. Left section, &amp;quot;AI in producing goods or services&amp;quot;: all sizes start at 3–5% in late 2023 and climb slowly to 7–13% by September 2025, with 250+ highest. A shaded gap is labeled &amp;quot;Question broadened Nov 2025&amp;quot; and &amp;quot;Series not comparable&amp;quot;. Right section, &amp;quot;AI in any business function&amp;quot;: all lines restart higher in February 2026 and rise steadily to &amp;quot;250+: 40.7%&amp;quot;, &amp;quot;100–249: 33.5%&amp;quot;, &amp;quot;50–99: 27.9%&amp;quot;, &amp;quot;20–49: 23.8%&amp;quot;, &amp;quot;1–4: 23.3%&amp;quot;, &amp;quot;10–19: 22.1%&amp;quot;, &amp;quot;5–9: 21.1%&amp;quot;. Footnotes: &amp;quot;Source: U.S. Census Bureau, Business Trends and Outlook Survey (BTOS). Size groups are numbers of employees.&amp;quot; &amp;quot;Method: arithmetic mean of six successive survey estimates, calculated separately for each question wording; no bridging of the break.&amp;quot; &amp;quot;Dates use reference-period end, matching the original chart. Latest: Oct 4, 2026 (collected Oct 5–18). First new six-wave average: Jan 25, 2026.&amp;quot; &amp;quot;The gap includes the 2025 shutdown and the wait for six observations under the broader question. Survey uncertainty is not displayed.&amp;quot;" style="max-width: 100%;" /&gt;&lt;/p&gt;

&lt;p&gt;Here's &lt;a href="https://static.simonwillison.net/static/2026-11-01/5821A414-FAF6-4E61-B037-952C1FD80D39.png"&gt;a link to the larger image&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;For comparison, here's that AI adoption chart from last year (my GPT-5 version):
&lt;img src="https://static.simonwillison.net/static/2025/apollo-ai-chart.jpg" alt="AI adoption rates starting to decline for larger firms. A chart of AI adoption rate by firm size. Includes lines for 250+, 100-249, 50-99, 20-49, 10-19, 5-9 and 1-4 sized organizations. Chart starts in November 2023 with percentages ranging from 3 to 5, then all groups grow through August 2025 albeit with the 250+ group having a higher score than the others. That 250+ group peaks in July 2025 at around 14% and then appears to slope slightly downwards to 12% by August. Some of the other lines also start to tip down, though not as much." style="max-width: 100%;" /&gt;&lt;/p&gt;

&lt;p&gt;In September 2025 the largest (250+ employees) companies answered "yes" around 12% of the time to the question about whether they used AI in "producing goods or services".&lt;/p&gt;
&lt;p&gt;Under the new "any business function" wording, by February 2026, those same large companies answered "yes" around 30% of the time, and by October 2026 that had increased to around 40%.&lt;/p&gt;
&lt;p&gt;The data in the above chart comes from the "Employment size class" XLSX file, &lt;a href="https://www.census.gov/hfp/btos/data_downloads"&gt;available from here&lt;/a&gt;. Here's &lt;a href="https://static.simonwillison.net/static/2026/Employment-Size-Class-Nov-1-2026-copy.xlsx"&gt;a copy&lt;/a&gt; of the file I used.&lt;/p&gt;
&lt;p&gt;You can view &lt;a href="https://www.census.gov/hfp/btos/downloads/BTOS%20Content%20V5%20Core%20Round%203,%204.pdf"&gt;the survey document&lt;/a&gt; that is sent out to businesses - here's &lt;a href="https://static.simonwillison.net/static/2026/BTOS-Content-V5-Core-Round-3-4.pdf"&gt;my snapshot copy&lt;/a&gt; of that 346KB PDF.&lt;/p&gt;
&lt;h4 id="the-changing-language-of-the-questions"&gt;The changing language of the questions&lt;/h4&gt;
&lt;p&gt;As the chart demonstrates, the question asked by the Bureau changed in a material way on November 17th, 2025. Prior to that date, the question they asked was this (emphasis mine):&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;In the last two weeks, did this business use Artificial Intelligence (AI) in &lt;strong&gt;producing goods or services&lt;/strong&gt;? (Examples of AI: machine learning, natural language processing, virtual agents, voice recognition, etc.)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;On December 3rd, 2025, &lt;a href="https://www.census.gov/hfp/btos/downloads/AI%20Question%20Wording%20Updates.pdf"&gt;the Bureau announced&lt;/a&gt; a significant change to that question. Here's the replacement:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;In the last two weeks, did this business use Artificial Intelligence (AI) in &lt;strong&gt;any of its business functions&lt;/strong&gt;? (Examples of AI: machine learning, natural language processing, virtual agents, voice recognition, etc.)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;No more "producing goods or services" - now it's "in any of its business functions"! This means that the answers to the question before and after November 17th are not directly comparable.&lt;/p&gt;
&lt;h4 id="from-october-19-2026-they-ask-about-super-intelligence"&gt;From October 19, 2026, they ask about Super Intelligence&lt;/h4&gt;
&lt;p&gt;When I went looking for the updated question language in the latest XLSX file, I couldn't find it. I found this instead:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;In the last two weeks, did this business &lt;strong&gt;use Super Intelligence or SI&lt;/strong&gt; (formerly referred to as Artificial Intelligence or AI) in any of its business functions? (Examples of SI use include: SI-powered data analysis; generative SI for marketing, product design, or coding; virtual SI agents for customer service; SI-powered forecasting or pricing; SI-driven computer vision for quality control, etc.)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The &lt;a href="https://www.census.gov/hfp/btos/about"&gt;BTOS about page&lt;/a&gt; explains what happened:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Beginning with the October 19, 2026 collection, &lt;a href="https://www.census.gov/hfp/btos/downloads/BTOS%20Content%20V5%20Core%20Round%203,%204.pdf"&gt;instrument wording&lt;/a&gt; was updated due to &lt;a href="https://www.whitehouse.gov/presidential-actions/2026/09/inaugurating-the-era-of-super-intelligence/"&gt;Executive Order 14434&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The current numbers reflect the old Artificial Intelligence survey wording - the first survey results reflecting the Super Intelligence wording are due for publication on Thursday.&lt;/p&gt;
&lt;h4 id="is-this-going-to-affect-the-survey-"&gt;Is this going to affect the survey?&lt;/h4&gt;
&lt;p&gt;The obvious open question here is whether this wording change is going to affect the survey results.&lt;/p&gt;
&lt;p&gt;The businesses answering this survey will have last seen that question twelve weeks ago, when it was still called AI. Hopefully the new language isn't going to confuse them, especially since the survey helpfully spells out "formerly referred to as Artificial Intelligence or AI".&lt;/p&gt;
&lt;p&gt;I can't help but laugh at the absurdity of "SI-powered data analysis; generative SI for marketing, product design, or coding; virtual SI agents for customer service" though.&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/census"&gt;census&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/surveys"&gt;surveys&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="census"/><category term="surveys"/><category term="ai"/><category term="generative-ai"/><category term="llms"/></entry><entry><title>If in doubt, delete the uv.lock file</title><link href="https://simonwillison.net/2026/Nov/1/delete-uv-lock-first/" rel="alternate"/><published>2026-11-01T23:24:22+00:00</published><updated>2026-11-01T23:24:22+00:00</updated><id>https://simonwillison.net/2026/Nov/1/delete-uv-lock-first/</id><summary type="html">
    &lt;p&gt;I've been getting the occasional confusing Python dependency error since switching over to Python 3.15 and the rule I'm having to remember is:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;If in doubt, delete the uv.lock file&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Most of my projects are libraries which don't include a &lt;code&gt;uv.lock&lt;/code&gt; file, since it's rude for a library dependency to lock versions for anything else that uses it.&lt;/p&gt;
&lt;p&gt;Running &lt;code&gt;uv run pytest&lt;/code&gt; etc tends to leave &lt;code&gt;uv.lock&lt;/code&gt; files lying around, which are listed in &lt;code&gt;.gitignore&lt;/code&gt; and so do not get committed to my repositories.&lt;/p&gt;
&lt;p&gt;But... sometimes that &lt;code&gt;uv.lock&lt;/code&gt; pins a version of a dependency that doesn't yet have a Python 3.15 wheel. An example from earlier today:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;error: Failed to build `watchfiles==1.1.1`
  cause: Call to `maturin.build_wheel` failed

error: the configured Python interpreter version (3.15) is newer
than PyO3's maximum supported version (3.14)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Deleting that file and running &lt;code&gt;uv run pytest&lt;/code&gt; again usually fixes the problem.&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/uv"&gt;uv&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/til"&gt;til&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;&lt;/p&gt;



</summary><category term="uv"/><category term="til"/><category term="python"/></entry><entry><title>Quoting Kyle Kingsbury</title><link href="https://simonwillison.net/2026/Nov/1/kyle-kingsbury/" rel="alternate"/><published>2026-11-01T16:49:04+00:00</published><updated>2026-11-01T16:49:04+00:00</updated><id>https://simonwillison.net/2026/Nov/1/kyle-kingsbury/</id><summary type="html">
    &lt;blockquote cite="https://jepsen.io/analyses/particledb-1.1.4#llm-tradeoffs"&gt;&lt;p&gt;More broadly, the use of LLMs erodes trust in documentation, in software, and in the organizations which produce them. Perhaps engineers will begin to treat any new software project with suspicion—the signals we used to rely on as markers of a mature system are now easier to counterfeit. [...]&lt;/p&gt;
&lt;p&gt;In the age of LLMs, what can maintainers do to ensure correct software and accurate documentation? Having done that work, how can they demonstrate its quality to users?&lt;/p&gt;&lt;/blockquote&gt;
&lt;p class="cite"&gt;&amp;mdash; &lt;a href="https://jepsen.io/analyses/particledb-1.1.4#llm-tradeoffs"&gt;Kyle Kingsbury&lt;/a&gt;, Jepsen results for ParticleDB 1.1.4&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/kyle-kingsbury"&gt;kyle-kingsbury&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-misuse"&gt;ai-misuse&lt;/a&gt;&lt;/p&gt;



</summary><category term="kyle-kingsbury"/><category term="llms"/><category term="ai"/><category term="generative-ai"/><category term="ai-misuse"/></entry><entry><title>How We Took Over ChatGPT Accounts</title><link href="https://simonwillison.net/2026/Oct/31/how-we-took-over-chatgpt-accounts/" rel="alternate"/><published>2026-10-31T23:15:22+00:00</published><updated>2026-10-31T23:15:22+00:00</updated><id>https://simonwillison.net/2026/Oct/31/how-we-took-over-chatgpt-accounts/</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.parameter.ai/labs/we-found-a-gap-at-openai"&gt;How We Took Over ChatGPT Accounts&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Parameter Labs describe an exploit they found against ChatGPT's implementation of the artifacts pattern (OpenAI used to call this "Canvas" but it looks like the latest revision is called &lt;a href="https://help.openai.com/en/articles/20001246-working-with-writing-blocks-and-code-blocks-in-chatgpt"&gt;HTML previews&lt;/a&gt;), where interactive custom HTML apps are displayed in a sandboxed iframe.&lt;/p&gt;
&lt;p&gt;It's important that HTML in these stays tightly sandboxed to avoid untrusted code interacting with OpenAI APIs and accessing private data.&lt;/p&gt;
&lt;p&gt;Parameter found quite a complex attack chain. OpenAI use the MathLive JavaScript library as part of their graph support, and that library includes &lt;a href="https://mathlive.io/mathfield/virtual-keyboard/"&gt;its own virtual keyboard&lt;/a&gt;, which can be triggered in the parent page via &lt;code&gt;postMessage()&lt;/code&gt; from the sandboxed iframe.&lt;/p&gt;
&lt;p&gt;That message receiving code uses &lt;code&gt;innerHTML&lt;/code&gt;, so anything that sends a message can add custom HTML to the parent - and there was no mechanism to prevent other sandboxed frames, including HTML preview frames, from calling that method.&lt;/p&gt;
&lt;p&gt;This meant untrusted code in an iframe could insert HTML, and while &lt;code&gt;innerHTML&lt;/code&gt; doesn't directly execute script elements it could be used to inject a new iframe &lt;em&gt;without&lt;/em&gt; sandbox restrictions.&lt;/p&gt;
&lt;p&gt;OpenAI’s CSP rules blocked inline scripts entirely, and only allowed script loading from a handful of domains, but one of those was YouTube - and the YouTube oEmbed endpoint could be used to reflect JavaScript back in a way that executed it.&lt;/p&gt;
&lt;p&gt;Once the attack had JavaScript execution on ChatGPT, it was trivial to fetch private user data from APIs and exfiltrate it via an image reference.&lt;/p&gt;
&lt;p&gt;The end result: you could create a ChatGPT share URL which, when visited by another signed-in user, could exfiltrate their private data or take actions on their behalf.&lt;/p&gt;
&lt;p&gt;OpenAI closed the hole and paid out a $5,000 bug bounty, which I think was a bit cheap for a vulnerability this serious.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://news.ycombinator.com/item?id=50314699"&gt;Hacker News&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/iframes"&gt;iframes&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/javascript"&gt;javascript&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/sandboxing"&gt;sandboxing&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/security"&gt;security&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/xss"&gt;xss&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/openai"&gt;openai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/chatgpt"&gt;chatgpt&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/content-security-policy"&gt;content-security-policy&lt;/a&gt;&lt;/p&gt;



</summary><category term="iframes"/><category term="javascript"/><category term="sandboxing"/><category term="security"/><category term="xss"/><category term="openai"/><category term="chatgpt"/><category term="content-security-policy"/></entry><entry><title>datasette-llm 0.1a9</title><link href="https://simonwillison.net/2026/Oct/31/datasette-llm/" rel="alternate"/><published>2026-10-31T22:10:01+00:00</published><updated>2026-10-31T22:10:01+00:00</updated><id>https://simonwillison.net/2026/Oct/31/datasette-llm/</id><summary type="html">
    
        &lt;p&gt;&lt;strong&gt;Release:&lt;/strong&gt; &lt;a href="https://github.com/datasette/datasette-llm/releases/tag/0.1a9"&gt;datasette-llm 0.1a9&lt;/a&gt;&lt;/p&gt;
        &lt;p&gt;I have some big upgrades to &lt;a href="https://agent.datasette.io/"&gt;Datasette Agent&lt;/a&gt; in the pipeline, but in the meantime here's a tiny user experience improvement to the underlying &lt;code&gt;datasette-llm&lt;/code&gt; plugin. &lt;/p&gt;
&lt;p&gt;It now picks up the default model used by &lt;a href="https://llm.datasette.io/"&gt;LLM&lt;/a&gt;, which means you can start using Datasette Agent without needing to explicitly configure a default model:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;uvx --with datasette-agent datasette content.db --internal internal.db
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Previously you would also need to specify a model with &lt;code&gt;-s plugins.datasette-agent.default_model gpt-6-astra&lt;/code&gt;.&lt;/p&gt;
    
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/datasette"&gt;datasette&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llm"&gt;llm&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/datasette-agent"&gt;datasette-agent&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="datasette"/><category term="llm"/><category term="datasette-agent"/></entry><entry><title>dbreunig/nesformer</title><link href="https://simonwillison.net/2026/Oct/30/nesformer/" rel="alternate"/><published>2026-10-30T21:59:22+00:00</published><updated>2026-10-30T21:59:22+00:00</updated><id>https://simonwillison.net/2026/Oct/30/nesformer/</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/dbreunig/nesformer"&gt;dbreunig/nesformer&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Inspired by &lt;a href="https://divagr.com/blog/qwenputer"&gt;qwenputer&lt;/a&gt; by Divyansh Agrawal, Drew Breunig baked a working emulator for a Nintendo Entertainment System 6502 CPU into the weights of Qwen3.5-4B. You can now play NES ROMs such as Super Mario Bros (very slowly) running inside Qwen!&lt;/p&gt;
&lt;p&gt;In &lt;a href="https://news.ycombinator.com/item?id=50306442#50307402"&gt;a comment on Hacker News&lt;/a&gt; Drew reveals the Opus 5.5 prompts he used to build this system:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;Read this article and any relevant source code: https://divagr.com/blog/qwenputer. Then explore if you could emulate the chip and ram in a Nintendo Entertainment System (as people do today with FPGAs in MISTRs) using this technique. If so, what size model would you have to build and if you could use smaller faster ones, could you get it to be at the standard clockspeed.&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Followed by:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;I think we should build it! Just for fun. It's okay if it's not fast. We want to be able to have the weights, and a cli to run them that we can point at a ROM.&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Apparently Opus found and then used &lt;a href="https://github.com/christopherpow/nes-test-roms/blob/master/other/nestest.txt"&gt;this collection of conformance tests&lt;/a&gt; for the NES CPU released 15 years ago by Christopher Pow.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://news.ycombinator.com/item?id=50306442"&gt;Hacker News&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/games"&gt;games&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/drew-breunig"&gt;drew-breunig&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/qwen"&gt;qwen&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/conformance-suites"&gt;conformance-suites&lt;/a&gt;&lt;/p&gt;



</summary><category term="games"/><category term="ai"/><category term="generative-ai"/><category term="llms"/><category term="drew-breunig"/><category term="qwen"/><category term="conformance-suites"/></entry><entry><title>API credits benefit for eligible ChatGPT subscriptions</title><link href="https://simonwillison.net/2026/Oct/29/api-credits/" rel="alternate"/><published>2026-10-29T22:48:29+00:00</published><updated>2026-10-29T22:48:29+00:00</updated><id>https://simonwillison.net/2026/Oct/29/api-credits/</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://help.openai.com/en/articles/20001626-api-credits-benefit-for-eligible-chatgpt-subscriptions"&gt;API credits benefit for eligible ChatGPT subscriptions&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Earlier this month Anthropic &lt;a href="https://simonwillison.net/2026/Oct/7/claude-haiku-5-5/#api-credits"&gt;announced a generous new benefit&lt;/a&gt; for their Max and Team subscriptions: $100, $200, and $500 per month subscribers would get the equivalent quantity of (expiring) credits to use with the Anthropic API.&lt;/p&gt;
&lt;p&gt;OpenAI have now launched pretty much exactly the same deal: if you have a $100, $200, or $500 subscription plan with them you now get that same quantity of credits to apply to one of your API organizations.&lt;/p&gt;
&lt;p&gt;I maintain subscriptions with both companies, so this is great news for me! I may even ship some public-facing demos now that the credits are already covered by my existing subscriptions.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/openai"&gt;openai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/anthropic"&gt;anthropic&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llm-pricing"&gt;llm-pricing&lt;/a&gt;&lt;/p&gt;



</summary><category term="ai"/><category term="openai"/><category term="generative-ai"/><category term="llms"/><category term="anthropic"/><category term="llm-pricing"/></entry><entry><title>Building a multiplayer game world with autonomous Fable-class models</title><link href="https://simonwillison.net/2026/Oct/29/how-i-built-the-most-ai-pilled-company-in-the-world/" rel="alternate"/><published>2026-10-29T17:00:26+00:00</published><updated>2026-10-29T17:00:26+00:00</updated><id>https://simonwillison.net/2026/Oct/29/how-i-built-the-most-ai-pilled-company-in-the-world/</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://twitter.com/jsnnsa/status/2115623382721126826"&gt;How I Built the Most AI-Pilled Company in the World&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Don't be put off by the clickbait headline, this piece by Jacob Sansbury describing how they are building &lt;a href="https://spawn.co"&gt;Spawn&lt;/a&gt; is a fascinating exploration of the bleeding edge of what's possible with agentic engineering against frontier models.&lt;/p&gt;
&lt;p&gt;Spawn is a massively multiplayer gaming environment where players can use prompts (to the in-game agent, Savi) to modify the game world.&lt;/p&gt;
&lt;p&gt;I fired it up on my phone for a few minutes and was able to prompt a castle into existence, then a dragon, then ride the dragon to fly around that castle.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Two mobile screenshots side by side from a 3D voxel-style game. Left: a first-person view from the saddle of a small teal dragon, its neck with pale diamond markings and two curved white horns in the foreground, flying toward a dark stone castle with tall teal-gray conical spires, glowing windows and teal pennants, on a rocky island in a lake with green and snowy hills behind. Top bar: profile icon, &amp;quot;keep it&amp;quot;, &amp;quot;your den&amp;quot; dropdown, &amp;quot;+ new game&amp;quot; button and a &amp;quot;...&amp;quot; menu. Right side: icon buttons and a portrait of a white-haired, freckled character labeled &amp;quot;tap to talk&amp;quot;. Bottom right buttons: &amp;quot;JUMP&amp;quot; and &amp;quot;USE&amp;quot;. Right: the same game with the chat panel open over the castle scene. Top bar: &amp;quot;your den&amp;quot; dropdown, &amp;quot;+ new game&amp;quot;. Button: &amp;quot;earlier ↑&amp;quot;. User message: &amp;quot;Make the dragon smaller and land it next to me again&amp;quot;. Replies from the white-haired character: &amp;quot;on it. shrinking it to a pony-sized dragon and landing it right beside you.&amp;quot; Then: &amp;quot;it's a little dragon now and you're already up on it over the lake. your view sits right in its saddle, horns ahead. fly back to the house and look down. saw your screen just now: flying over the water, the neck and horns ahead, the house on the far shore&amp;quot; Then: &amp;quot;oh, idea: USE while flying could breathe fire instead, with JUMP held to land. want it?&amp;quot; Input box: &amp;quot;what do you want to bring in?&amp;quot; Buttons below: upload, a small pixel-art icon, &amp;quot;lock in&amp;quot; and a microphone." src="https://static.simonwillison.net/static/2026-10-29/IMG_9406.webp" /&gt;&lt;/p&gt;
&lt;p&gt;By Jacob's telling, Spawn is now being developed autonomously by a swarm of Fable-powered agents costing over $3 million in tokens &lt;em&gt;per month&lt;/em&gt; ("we spend 30x payroll on AI tokens").&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Our agents change the live code directly and ship to production hourly, so they read every error, bug report and metric themselves. About 60% of our work starts from a production error, a Savi bug report (Savi is the AI you build games with in Spawn), something odd in our logs, or a feature request.&lt;/p&gt;
&lt;p&gt;Savi files bugs herself. When a user hits one, or Savi hits one in the product, she files it. It goes straight to an agent that decides whether it's a real bug to fix, something we won't fix, or intentional design that needs a decision. Usually it becomes a change, delivered to that user within an hour, with a message in the same chat.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This is &lt;a href="https://en.wikipedia.org/wiki/Continuous_deployment"&gt;continuous deployment&lt;/a&gt; turned up to 11:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;A loop this tight only works if it never stops, so we treat an hour without a ship as a SEV-0, our most severe kind of incident. Unshipped changes pile up, and every problem already in production lasts longer. The feedback slows down too. An agent can only keep a few hours of work in its head, so shipping faster than that actually helps it stay coherent. [...]&lt;/p&gt;
&lt;p&gt;We can roll back a broken change in 30 seconds, exactly where it's broken and nowhere else. When a monitor or a log alert fires, it starts or wakes an agent that owns the incident, and we break things on purpose to test that those recovery paths work.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;My eyebrows raised at least a dozen times reading this. I have trouble imagining this style of development working on software with higher stakes for when something goes wrong, but for a game this appears to be working surprisingly well.&lt;/p&gt;
&lt;p&gt;Jacob says that Fable 5 (and then 5.1) was the model that made this level of autonomy possible. Opus 5.5 doesn't quite hack it for them, and when they tried GPT-6 Astra to apply fixes from a security review everything stopped working:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Every feature had been disabled and marked to be turned on again once the security fixes were done. Astra had gone through our whole product and made the insecure things secure by turning them off.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;These kinds of extreme experiments are why I'm &lt;a href="https://simonwillison.net/2026/Oct/28/vibe-game-development/"&gt;excited about game development&lt;/a&gt; as a substrate for exploring the edges of what today's coding agents can do.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/game-design"&gt;game-design&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/claude"&gt;claude&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/coding-agents"&gt;coding-agents&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/agentic-engineering"&gt;agentic-engineering&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/claude-mythos-fable"&gt;claude-mythos-fable&lt;/a&gt;&lt;/p&gt;



</summary><category term="game-design"/><category term="ai"/><category term="generative-ai"/><category term="llms"/><category term="claude"/><category term="coding-agents"/><category term="agentic-engineering"/><category term="claude-mythos-fable"/></entry><entry><title>Quoting Ben Hylak</title><link href="https://simonwillison.net/2026/Oct/29/ben-hylak/" rel="alternate"/><published>2026-10-29T14:06:27+00:00</published><updated>2026-10-29T14:06:27+00:00</updated><id>https://simonwillison.net/2026/Oct/29/ben-hylak/</id><summary type="html">
    &lt;blockquote cite="https://twitter.com/benhylak/status/2115172657910120740"&gt;&lt;p&gt;every product i use should just be a headless mcp, that feeds into an agent, where i never have to think about anything underneath.&lt;/p&gt;
&lt;p&gt;except for our product, of course. &lt;/p&gt;
&lt;p&gt;in our product, customers love the ui and love us very much.&lt;/p&gt;
&lt;p&gt;we're special that way.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p class="cite"&gt;&amp;mdash; &lt;a href="https://twitter.com/benhylak/status/2115172657910120740"&gt;Ben Hylak&lt;/a&gt;&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/model-context-protocol"&gt;model-context-protocol&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;&lt;/p&gt;



</summary><category term="model-context-protocol"/><category term="ai"/></entry><entry><title>Quoting Ted Sanders</title><link href="https://simonwillison.net/2026/Oct/28/ted-sanders/" rel="alternate"/><published>2026-10-28T23:23:21+00:00</published><updated>2026-10-28T23:23:21+00:00</updated><id>https://simonwillison.net/2026/Oct/28/ted-sanders/</id><summary type="html">
    &lt;blockquote cite="https://news.ycombinator.com/item?id=50248124#50249160"&gt;&lt;p&gt;In general, LLM performance is incredibly multidimensional. There's no guarantee of a fixed ordering where the model that is best at math is also the model that's best at jokes. Despite that complexity, much of the variation in performance is explained by just a single variable: model size. In general, models that are bigger will (a) be more performant / reliable, (b) cost more per token, and (c) have better recall of esoteric facts. As you note, our models are ordered:&lt;/p&gt;
&lt;p&gt;Luna &amp;lt; Terra &amp;lt; Sol &amp;lt; Astra&lt;/p&gt;
&lt;p&gt;[&lt;a href="https://news.ycombinator.com/item?id=50248124#50250804"&gt;...&lt;/a&gt;] These days, version number signifies a few things at once: the order of release, the relationship to other releases, and the magnitude of improvement. So something like 6.1 would indicate it was launched after 5.6, may share some similarities to other 6.1 models in terms of training data / personality (which is why it's not 5.7), and isn't a giant enough leap to merit the headlines and expectations that would come with a 7.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p class="cite"&gt;&amp;mdash; &lt;a href="https://news.ycombinator.com/item?id=50248124#50249160"&gt;Ted Sanders&lt;/a&gt;, explaining OpenAI's model naming conventions&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/gpt"&gt;gpt&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/openai"&gt;openai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ted-sanders"&gt;ted-sanders&lt;/a&gt;&lt;/p&gt;



</summary><category term="generative-ai"/><category term="gpt"/><category term="openai"/><category term="ai"/><category term="llms"/><category term="ted-sanders"/></entry><entry><title>GitHub Octoverse 2026</title><link href="https://simonwillison.net/2026/Oct/28/github-octoverse-2026/" rel="alternate"/><published>2026-10-28T16:45:23+00:00</published><updated>2026-10-28T16:45:23+00:00</updated><id>https://simonwillison.net/2026/Oct/28/github-octoverse-2026/</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.blog/news-insights/octoverse/octoverse-commits-pushes-reach-new-highs-in-2026-as-developers-build-with-agents/"&gt;GitHub Octoverse 2026&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
I'm at GitHub Universe today (GitHub gave  me a free ticket through their "GitHub Stars" program). EVP Jay Parikh just announced this year's Octoverse report, and highlighted these numbers in particular:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Photo of a conference keynote stage: a wide curved screen shows three line charts side by side, with a speaker in a black sweater and dark jeans standing at its right edge beneath an overhead lighting rig. Each chart has a large colored headline number above it and a shaded line that runs low and nearly flat across the left side, then curves sharply upward on the right to end in a dot at its peak. Left, in green: &amp;quot;220M&amp;quot; &amp;quot;Merged PRs per month&amp;quot;, y-axis 0M, 50M, 100M, 150M, 200M. Middle, in magenta: &amp;quot;7.38B&amp;quot; &amp;quot;Commits per month&amp;quot;, y-axis 0B, 2B, 4B, 6B, with the most dramatic, almost vertical final spike. Right, in orange: &amp;quot;30.3M&amp;quot; &amp;quot;New repos per month&amp;quot;, y-axis 0M, 10M, 20M, 30M, with a bumpier, more gradual climb. All three share the x-axis labels '23, '24, '25, '26." src="https://static.simonwillison.net/static/2026/github-numbers.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;This is a pretty stark representation of the impact of agentic engineering on GitHub. In 2026, merged pull requests tripled in less than a year to 220 million per month. Commits more than tripled to 7.38 billion per month, with most of that increase in the second half of this year. New repository rate doubled this year, to 30.3 million per month.&lt;/p&gt;
&lt;p&gt;The report includes new numbers by industry, and breaks out numbers for repositories that involve "interoperability or reverse engineering". The &lt;a href="https://github.blog/news-insights/octoverse/octoverse-commits-pushes-reach-new-highs-in-2026-as-developers-build-with-agents/#h-methodology"&gt;methodology section&lt;/a&gt; includes notes about how they did this: &lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Top countries by pushes to public repositories, adjusted by profile location&lt;/strong&gt;. Pushes from each country were summed across the Octoverse year. To adjust for biases caused by VPN usage, LLM classification was used to extract the ISO 3166-1 alpha-2 code from the profiles of GitHub users who contributed pushes during this period [...]&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Industry&lt;/strong&gt;. Public repositories created 2022 to 2026 were sorted into NAICS sectors by a fine-tuned multilingual embedding model using name, description, topics, and README, from random samples per year. [...]&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Interoperability&lt;/strong&gt;. Counts public repositories created each year whose name, description, topics, or README mention interoperability or reverse engineering, or related terms, such as clean room implementation, drop-in replacement, or protocol re-implementation.&lt;/p&gt;
&lt;/blockquote&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/github"&gt;github&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/coding-agents"&gt;coding-agents&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/disclosures"&gt;disclosures&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/agentic-engineering"&gt;agentic-engineering&lt;/a&gt;&lt;/p&gt;



</summary><category term="github"/><category term="ai"/><category term="generative-ai"/><category term="llms"/><category term="coding-agents"/><category term="disclosures"/><category term="agentic-engineering"/></entry><entry><title>The October inflection point for vibe game development</title><link href="https://simonwillison.net/2026/Oct/28/vibe-game-development/" rel="alternate"/><published>2026-10-28T13:55:15+00:00</published><updated>2026-10-28T13:55:15+00:00</updated><id>https://simonwillison.net/2026/Oct/28/vibe-game-development/</id><summary type="html">
    &lt;p&gt;I've written before about how November 2025 was &lt;a href="https://simonwillison.net/tags/november-2025-inflection/"&gt;an inflection point for coding agents&lt;/a&gt; - the point where Opus 4.5 and GPT-5.1 crossed a tipping point that meant their respective coding agents became reliable daily drivers for software engineers. I think we've reached a new inflection point in October 2026, and this time it's for &lt;strong&gt;vibe coding computer games&lt;/strong&gt;.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href="https://simonwillison.net/2026/Oct/28/vibe-game-development/#tree-appreciator"&gt;Tree Appreciator&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://simonwillison.net/2026/Oct/28/vibe-game-development/#emberwick"&gt;Emberwick&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://simonwillison.net/2026/Oct/28/vibe-game-development/#battle-drones"&gt;Battle Drones&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://simonwillison.net/2026/Oct/28/vibe-game-development/#pumpkin-farmer-aka-quarter-sun-cove"&gt;Pumpkin Farmer, aka Quarter Sun Cove&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://simonwillison.net/2026/Oct/28/vibe-game-development/#four-times-as-insulting"&gt;Four times as insulting&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://simonwillison.net/2026/Oct/28/vibe-game-development/#what-happens-if-someone-actually-puts-the-work-in-"&gt;What happens if someone actually puts the work in?&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://simonwillison.net/2026/Oct/28/vibe-game-development/#you-should-build-a-game-"&gt;You should build a game!&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Claude Opus 5.5 in particular exhibits meaningful improvements in several areas needed to build a compelling game:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;3D modeling&lt;/li&gt;
&lt;li&gt;Music generation (see &lt;a href="https://simonwillison.net/2026/Oct/6/scrimshaw-jukebox/"&gt;Scrimshaw Jukebox&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Game design (!)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That last one is particularly important. Models have been able to create something that &lt;em&gt;looks&lt;/em&gt; like a game for quite a while now, as seen in &lt;a href="https://simonwillison.net/2026/Aug/7/moonlight-mayhem/"&gt;my previous experiments&lt;/a&gt;. The challenge has been getting to a game that's actually &lt;em&gt;fun to play&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Game design is a deep subject area. I won't pretend to be well versed in it - I know enough to have respect for it as a craft. Creating a novel, compelling gameplay loop which challenges players at the right level and provides a satisfying learning curve is a fine art. I didn't think the models could do it.&lt;/p&gt;
&lt;p&gt;Then I tried telling Claude Opus 5.5 to "Make it a LOT more fun"... &lt;a href="https://simonwillison.net/2026/Oct/20/battledrones/#v4-the-fun-update"&gt;and it did&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In the past few weeks I've vibe coded (in the &lt;a href="https://simonwillison.net/2025/Mar/19/vibe-coding/"&gt;classic sense of the term&lt;/a&gt; - no looking at the code at all) four games that I've genuinely enjoyed playing.&lt;/p&gt;
&lt;p&gt;I attended &lt;a href="https://en.wikipedia.org/wiki/Foo_Camp"&gt;Foo Camp&lt;/a&gt; in Berkeley over the weekend and met several people who were having similar experiences. Building games that play well is shockingly easy now. The new challenge is coming up with concepts for games that are novel and delightful and that wouldn't exist without AI assistance.&lt;/p&gt;
&lt;p&gt;I haven't done an exhaustive study, but my current impression is that GPT-6 Astra isn't &lt;em&gt;quite&lt;/em&gt; there yet. It can absolutely build a game, but its sense of fun doesn't match that of Opus 5.5. I expect OpenAI will get there by the end of the year.&lt;/p&gt;
&lt;p&gt;Here are the four game projects that have convinced me that the models are now capable of producing fun games with very little guidance. All four are built in HTML and JavaScript and run entirely in the browser.&lt;/p&gt;
&lt;h4 id="tree-appreciator"&gt;Tree Appreciator&lt;/h4&gt;
&lt;p&gt;The smallest game I found to be genuinely delightful is &lt;a href="https://tools.simonwillison.net/tree-appreciator"&gt;Tree Appreciator&lt;/a&gt;. I used the regular Claude chat interface for this - it didn't even need Claude Code.&lt;/p&gt;
&lt;p&gt;I built this on a whim while we were driving along &lt;a href="https://en.wikipedia.org/wiki/California_State_Route_35"&gt;Skyline Boulevard&lt;/a&gt; looking at trees. My prompt was:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;Build a three js game called "Tree appreciator" - it shows you two algorithmically generated trees and the game mechanics is about appreciating the differences between them. Think hard about how to make sure it is both fun and beautiful.&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I've found that telling models to use &lt;a href="https://threejs.org/"&gt;three.js&lt;/a&gt; works really well. Claude doesn't have its own image generation model but is capable of building full-color 3D models that look and feel excellent.&lt;/p&gt;
&lt;p&gt;This game required no iteration or follow-up prompting at all - I got the game in a single shot. It gave me back a charming little mobile-friendly spot-the-difference game. You can &lt;a href="https://tools.simonwillison.net/tree-appreciator"&gt;play that here&lt;/a&gt;. Here's &lt;a href="https://claude.ai/share/ee7de555-f85c-4ff0-96cb-d51ed5e479e9"&gt;the chat transcript&lt;/a&gt; that built it.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://static.simonwillison.net/static/2026/tree-appreciator.webp" alt="Screenshot of a web game called Tree Appreciator, a spot-the-difference puzzle showing two side-by-side 3D renders of the same leafy green oak on a grassy hill at golden hour, with orange low-poly hills and a hazy sky behind and pale rocks in the grass. The left tree (Fig. i) has a small brown-and-orange bird perched near the top and a cluster of red-orange autumn leaves in its left canopy; the right tree (Fig. ii) has a small orange squirrel on a branch right of center. Header text: &amp;quot;Tree Appreciator&amp;quot; &amp;quot;No. 001 Quercus aurata 'Silver Echo'&amp;quot; &amp;quot;Golden oak · A low hill at golden hour&amp;quot;, with sound, book and help icons at top right. A popup over the scene reads: &amp;quot;These two trees grew from one seed.&amp;quot; &amp;quot;Three small things differ between them. Tap one in either tree when you spot it.&amp;quot; &amp;quot;Drag to turn both trees. Pinch or scroll to look closer.&amp;quot; with a &amp;quot;Got it&amp;quot; button. Panel labels: &amp;quot;Fig. i&amp;quot; &amp;quot;Fig. ii&amp;quot;." style="max-width: 100%;" /&gt;&lt;/p&gt;
&lt;p&gt;It's pleasingly relaxing. The graphics are fun, and collecting trees that you have completed in a "herbarium" provides a nice, cosy sense of accomplishment.&lt;/p&gt;
&lt;h4 id="emberwick"&gt;Emberwick&lt;/h4&gt;
&lt;p&gt;This was a more ambitious project that I again built using regular Claude chat. I started out by building an experimental prototype of an engine for a top-down fantasy RPG:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;Build a demo game engine three.js which is a top down (but at an angle) RPG - the player gets to move through the world with one or two companions. Create a fantasy village setting that demonstrates walking around outside and then shows how when the player enters a building the wall between the player and the camera goes transparent so the user can see what is happening&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Add some NPCs and plenty of furniture and different types of building some with an upstairs - be creative, make it look great&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Here's &lt;a href="https://simonw.github.io/emberwick/v01/emberwick.html"&gt;that first version&lt;/a&gt;. It worked really well!&lt;/p&gt;
&lt;p&gt;&lt;img src="https://static.simonwillison.net/static/2026/emberwick-v1.webp" alt="Screenshot of a low-poly 3D top-down fantasy game showing the interior of a cutaway tavern at dusk, with grass, a lamppost and benches outside. Inside, warm candlelight falls on wooden floorboards: a stone fireplace with a figure in a red armchair on a red rug, a blue armchair with an orange cat on it, a long bar with barrels and bottle shelves where a red-haired barkeep stands, a candle chandelier, a cloth-covered table, small round tables with stools and a blue banner with a gold emblem. A group of three adventurers (a white-haired figure in a blue robe, a red-armored figure with a hammer and a green-clad figure) stands just inside the doorway. Top-left panel text: &amp;quot;Harvest Eve&amp;quot; &amp;quot;17:09&amp;quot; &amp;quot;Tavern &amp;amp; lodging · Taproom&amp;quot; &amp;quot;The Gilded Goose&amp;quot; with buttons &amp;quot;Dawn&amp;quot; &amp;quot;Noon&amp;quot; &amp;quot;Dusk&amp;quot; &amp;quot;Night&amp;quot; and a pause button. A speech bubble above the fireplace reads &amp;quot;♪ la la la ♪&amp;quot;. A circular minimap sits at top right marked &amp;quot;N&amp;quot;. Bottom center prompt: &amp;quot;F Talk to Old Fennick Regular&amp;quot;. Bottom-left party portraits labeled &amp;quot;You&amp;quot; &amp;quot;Brakka&amp;quot; &amp;quot;Elowen&amp;quot;. A &amp;quot;?&amp;quot; button sits at bottom right." style="max-width: 100%;" /&gt;&lt;/p&gt;
&lt;p&gt;I was inspired to increase my ambitions:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;Make it not so flat - the buildings are great but the landscape itself is completely flat at the moment, fix that&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Add basements to two of the buildings with a tunnel system joining them below the village&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Add the start of a rocky mountain on one side of the village containing a cave with a sleeping troll&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Here's &lt;a href="https://simonw.github.io/emberwick/v02/emberwick.html"&gt;that version&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://static.simonwillison.net/static/2026/emberwick-v2.webp" alt="Screenshot of the same low-poly fantasy game, now in a dim underground cave lit by a campfire with a spit roast, glowing pale mushrooms and blue crystals. A huge green troll lies asleep on a straw bed at top right, surrounded by scattered bones and skulls. The cave also holds a small round pool ringed with stones, a yellow rug, chests, a fenced pen with a sheep, a pile of orange pumpkins and a stone stair down the left side. The party stands in the center: the green-clad figure and the red-armored figure facing the blue-robed figure holding a glowing staff by the fire, who says in a speech bubble &amp;quot;Smell that? Old brandy and older mud.&amp;quot; The location panel reads &amp;quot;Harvest Eve&amp;quot; &amp;quot;17:25&amp;quot; &amp;quot;Underground · Under the mountain&amp;quot; &amp;quot;Grumblethorn's Cave&amp;quot;." style="max-width: 100%;" /&gt;&lt;/p&gt;
&lt;p&gt;When &lt;em&gt;that&lt;/em&gt; produced a good result, I decided to push it all the way:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;Now turn this into an actual game - quadruple the size of the playable area, introduce fun game mechanics, add a plot that isn't too cliche, some twists, a magic system, make it really good&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;We're back to prompts like "make it really good" here! Asking for a plot that "isn't too cliche" seemed to work too - it's a bit cliché, but still novel enough that I enjoyed following the story.&lt;/p&gt;
&lt;p&gt;Unlike Tree Appreciator, this took quite a bit of additional playtesting and prompting to get to a finished version. This was mainly due to gameplay problems - things like a character not being in the right place to complete a quest because a different story element had caused them to move to another location.&lt;/p&gt;
&lt;p&gt;Here's &lt;a href="https://simonw.github.io/emberwick/v11/emberwick.html"&gt;that final game&lt;/a&gt;. It has a full story that takes about 15 minutes to play through.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://static.simonwillison.net/static/2026/emberwick-title.webp" alt="Emberwick title screen. The 3D village sits in the background. The text reads Every fire in Emberwick was lit from the Hearthstone, and every fire dies at midnight unless it is lit again. Tonight the Hearthstone is gone, the wizard is missing, and the village is sure the troll did it. You came for the festival. Someone has other plans for you. Buttons for: Begin, Build your own places, Restore a save" style="max-width: 100%;" /&gt;&lt;/p&gt;
&lt;p&gt;There's even an experimental level editor if you want to drop in your own houses, furniture, and landscape features.&lt;/p&gt;
&lt;p&gt;Once it was all working (and I'd iterated through some gameplay bugs), I played it through from start to finish and found myself emotionally affected by the ending! I'm somewhat embarrassed by this, because &lt;em&gt;everything&lt;/em&gt; in this game - the graphics, the plot, the characters, the music, the dialog - came from the model. My creative input was pretty much just "it's a fantasy village and there's a troll asleep in a cave".&lt;/p&gt;
&lt;p&gt;Here's &lt;a href="https://claude.ai/share/840e0bc0-a68e-4894-8eec-8f83bd6ade26"&gt;the full shared Claude chat&lt;/a&gt; in which I built this game.&lt;/p&gt;
&lt;p&gt;I also fed that same initial sequence of prompts through ChatGPT GPT-6 Pro. Here's &lt;a href="https://chatgpt.com/share/6ae176eb-1eac-83e8-ae54-729281fbdb70"&gt;the transcript&lt;/a&gt; and &lt;a href="https://lantern-hollow-rpg.simonw.chatgpt.site"&gt;the finished game&lt;/a&gt; for comparison. It looks great, but I don't think it plays nearly as well.&lt;/p&gt;
&lt;h4 id="battle-drones"&gt;Battle Drones&lt;/h4&gt;
&lt;p&gt;This is by far my most successful project, which I &lt;a href="https://simonwillison.net/2026/Oct/20/battledrones/"&gt;wrote about last week&lt;/a&gt;. It's a Command &amp;amp; Conquer-style Real-Time Strategy game where two robot armies (or four &lt;a href="https://simonwillison.net/2026/Oct/24/battledrones/"&gt;as of Saturday&lt;/a&gt;) build units, harvest scrap, and battle over territory.&lt;/p&gt;
&lt;p&gt;This is also the project that convinced me that Opus 5.5 knows what "fun" is.&lt;/p&gt;

&lt;p&gt;The first versions were built back in July using Claude Fable 5. It got me to a workable 2D Command &amp;amp; Conquer-style game, but it wasn't great to play.&lt;/p&gt;
&lt;p&gt;I prompted Opus 5.5 to "Make it a LOT more fun" and then later to "Port this game to three.js" and the game was transformed. There's a blow-by-blow account (prompts included) in &lt;a href="https://simonwillison.net/2026/Oct/20/battledrones/"&gt;my write-up&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Today, Battle Drones has 2-4 player multiplayer (via a vibe coded WebSockets relay server), medals, replays, seven maps, a random map generator, and a set of "mutators" that add variants of the rules.&lt;/p&gt;
&lt;p&gt;It also lets different LLMs play against each other, using a mode where the game advances five seconds and then pauses to give different models time to interpret the new game state and line up their next set of commands. Here's a replay of &lt;a href="https://simonw.github.io/battledrones/v11/?replay=battles/showcase/2026-10-14-frostbite-42-claude-haiku-5.5-vs-gpt-6-luna.json"&gt;Claude Haiku 5.5 vs. GPT-6 Luna&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://static.simonwillison.net/static/2026/agent-v-agent.jpg" alt="Screenshot of a replay of a real-time strategy game between two AI models, shown from a top-down view of a snowy map with a dark frozen lake of cracked ice floes on the left and pine forests at the top and lower right. Top bar: pause button, &amp;quot;6:27&amp;quot;, &amp;quot;1×&amp;quot;, &amp;quot;anthropic/claude-haiku-5-5 · industry&amp;quot; in blue, &amp;quot;gpt-6-luna · industry&amp;quot; in red, a blue-and-red strength bar labeled &amp;quot;B&amp;quot; and &amp;quot;R&amp;quot;, and &amp;quot;0:03&amp;quot;. Left notification: &amp;quot;Blue: Pushing turrets at the enemy's south-east edge.&amp;quot; Replay panel: &amp;quot;Blue anthropic/claude-haiku-5-5 · industry vs Red gpt-6-luna · industry · frostbite seed 42&amp;quot;, a timeline slider at &amp;quot;6:27 / 7:48&amp;quot;, and buttons &amp;quot;−30s&amp;quot;, &amp;quot;+30s&amp;quot;, &amp;quot;All&amp;quot;, &amp;quot;Blue's eyes&amp;quot;, &amp;quot;Red's eyes&amp;quot;, &amp;quot;Notes&amp;quot;. In the scene, a group of blue tanks and a large blue Goliath mech trailing smoke advance near the ice edge at lower center, while a column of red turrets (one burning) lines the ice to their north, red tanks and trucks sit by a rocky ridge to the east, and red base buildings occupy the top right. A minimap is in the top right corner and zoom in, zoom out and lightning-bolt buttons are on the lower left." style="max-width: 100%;" /&gt;&lt;/p&gt;
&lt;p&gt;Battle Drones is a particularly good example of Opus 5.5's ability to create 3D models. This page lets you &lt;a href="https://simonw.github.io/battledrones/models.html"&gt;browse all of the models in the game&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I released Battle Drones under the Apache 2.0 License last Tuesday. On Wednesday Gabriel Turpin released &lt;a href="https://github.com/menufactory43/panache/"&gt;Panache&lt;/a&gt; (&lt;a href="https://simonwillison.net/2026/Oct/21/panache/"&gt;screenshots here&lt;/a&gt;), a fork of Battle Drones that reimagined the game for steampunk 1900s Belle Époque France, with new models and music and an animated intro sequence. Open source at work!&lt;/p&gt;
&lt;h4 id="pumpkin-farmer-aka-quarter-sun-cove"&gt;Pumpkin Farmer, aka Quarter Sun Cove&lt;/h4&gt;
&lt;p&gt;I live in &lt;a href="https://en.wikipedia.org/wiki/Half_Moon_Bay,_California"&gt;Half Moon Bay, California&lt;/a&gt;, home of the annual &lt;a href="https://en.wikipedia.org/wiki/Half_Moon_Bay_Art_and_Pumpkin_Festival"&gt;Half Moon Bay Art and Pumpkin Festival&lt;/a&gt;, which includes a giant pumpkin weigh-off competition.&lt;/p&gt;
&lt;p&gt;I decided to try building a game that wasn't just a cheap imitation of something that already existed, so I set out to create a game about farming pumpkins, growing giant pumpkins, and handling the rush of the October pumpkin season.&lt;/p&gt;
&lt;p&gt;I called it "Quarter Sun Cove".&lt;/p&gt;
&lt;p&gt;I'm still iterating on this project, but it's shaping up quite nicely. It's a cosy farming simulator where you spend the year tending to your giant pumpkin and planting out regular-sized pumpkins for sale in October, then sell pumpkins during pumpkin season and enter your giant pumpkin in the weigh-off.&lt;/p&gt;
&lt;p&gt;Every character in it is a (vegetarian) animal. The mayor of the town is a pelican. You can be a pelican, skunk, raccoon, possum, beaver, coyote, fox, owl, sea otter, or harbor seal. Those species all later show up (accompanied by their children) to buy pumpkins from you.&lt;/p&gt;
&lt;p&gt;It's &lt;em&gt;absurdly&lt;/em&gt; cute.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://static.simonwillison.net/static/2026/pumpkin-farmer.webp" alt="Screenshot of an isometric low-poly pumpkin farming game. In the bottom left, a huge giant pumpkin, far bigger than anything around it, sits in its own fenced plot under string lights. Beyond it are rows of pumpkin vines with a scarecrow and animal visitors (pelicans, beavers and otters) picking pumpkins and browsing the farm stand, plus a red barn, beehives, a cornfield, parked cars and a dock on the water, with fog drifting across. A side panel shows stats for the patch row &amp;quot;Row 3 · Warty&amp;quot; with a &amp;quot;Cut 7 → barn&amp;quot; button, and a customer review at the bottom reads &amp;quot;★★★★★ Carried our pumpkin like a baby. It was heavier than the baby.&amp;quot;" style="max-width: 100%;" /&gt;&lt;/p&gt;
&lt;p&gt;You can &lt;a href="https://simonw.github.io/pumpkin-farmer/"&gt;play the latest version here&lt;/a&gt;. I'm not convinced by the game mechanics yet - it's actually quite complicated: you have to decide when to plant pumpkins such that they will become ripe at the weekends in October with the most visitors.&lt;/p&gt;
&lt;p&gt;Here's the &lt;a href="https://claude.ai/code/cshk_01V63sUyETi6UNbGUyjSYbHd13Mq93U6ty824Ha4eAxF4i"&gt;initial brainstorming session&lt;/a&gt;, which resulted in &lt;a href="https://github.com/simonw/pumpkin-farmer/blob/cdcf12083f403946b5c2a9e04312bbb42359bf58/SPEC.md"&gt;this spec file&lt;/a&gt;. Then I had Opus 5.5 Ultracode burn millions of tokens and nearly two days building it.&lt;/p&gt;
&lt;p&gt;I told Claude to "surprise and delight the user frequently" and the result is &lt;em&gt;so many&lt;/em&gt; little details and easter eggs. There are mischievous raccoons, an elephant seal that runs the weigh-off, harbor seals that roll their pumpkins back into the ocean, a wandering goat, and superstitions about growing giant pumpkins that &lt;em&gt;sometimes&lt;/em&gt; come true.&lt;/p&gt;
&lt;p&gt;This isn't my best game yet - it's not as fun to play as Battle Drones - but it represents the kind of game I want more of: weird, fun, uniquely personal - something that wouldn't have been built in the before-times.&lt;/p&gt;
&lt;h4 id="four-times-as-insulting"&gt;Four times as insulting&lt;/h4&gt;
&lt;p&gt;If you are offended by AI-generated art, AI-generated music, AI-generated writing, and AI-generated code, I have bad news for you: vibe coded games combine &lt;strong&gt;all of those at once&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt; I respect those opinions, even though I don’t strongly hold them myself.&lt;/p&gt;
&lt;p&gt;The wider games community already has an aversion to AI-generated assets in games. This has been a growing issue over the past few years as tools like Midjourney have enabled developers to generate assets for their projects. &lt;a href="https://www.ign.com/articles/steam-fans-are-begging-for-a-no-ai-filter-as-steam-next-fest-is-filled-with-slop"&gt;This IGN story&lt;/a&gt; covering complaints about slop in Valve's Steam Next Fest is a good recent example.&lt;/p&gt;
&lt;p&gt;We now have games where &lt;em&gt;everything&lt;/em&gt; - code, assets, dialog, and even the game design itself - can be outsourced to the models. And the results don't suck!&lt;/p&gt;
&lt;p&gt;Building a computer game used to be one of the most challenging projects in all of software development, combining a diverse range of skills and requiring intense focus and effort over many months or even years. And now here I am spitting out a playable multiplayer RTS by prompting on my phone!&lt;/p&gt;
&lt;p&gt;I expect that, as we've already seen with programming, this will result in a split. Some players will refuse to have anything to do with games that were built in this way. Others may embrace this as opening up game development to a much wider audience. I lean in that direction!&lt;/p&gt;
&lt;p&gt;I certainly won't be entering any of my vibe coded games in traditional game jams or competitions - I don't feel like I've earned that right. We'll likely see new avenues emerge for vibe game developers to compare their projects.&lt;/p&gt;
&lt;h4 id="what-happens-if-someone-actually-puts-the-work-in-"&gt;What happens if someone actually puts the work in?&lt;/h4&gt;
&lt;p&gt;The thing I find both exciting and shameful about this is that I have got interesting results from &lt;em&gt;so little creative input&lt;/em&gt;. The projects I've described here are loosely ordered by how much effort I've put into them. Not a single project represents more than four hours of my work (plus many more hours of Claude Code churning away by itself).&lt;/p&gt;
&lt;p&gt;Now imagine what could be achieved by anyone who takes this seriously, invests significant creative time, applies better taste in game design, and then playtests and iterates on the result until it's as good as they can make it.&lt;/p&gt;
&lt;p&gt;I want to see games that wouldn't have existed without these new tools.&lt;/p&gt;
&lt;h4 id="you-should-build-a-game-"&gt;You should build a game!&lt;/h4&gt;
&lt;p&gt;Building games in this way is &lt;em&gt;so much fun&lt;/em&gt;. It's the perfect application for vibe coding because it's so low stakes: how much damage can you cause with a bug in a personal vibe coded game project?&lt;/p&gt;
&lt;p&gt;(OK, you can do some damage... my attempt at audio-based multiplayer gave my wife Natalie &lt;a href="https://simonwillison.net/2026/Oct/20/battledrones/#update-online-multiplayer-support"&gt;a nasty headache&lt;/a&gt;!)&lt;/p&gt;
&lt;p&gt;All of my games so far have been HTML and JavaScript using static hosting (generally GitHub Pages or Cloudflare Pages). Modern browsers - including mobile browsers - are incredibly capable. Frontier models already know libraries like &lt;a href="https://threejs.org"&gt;three.js&lt;/a&gt; and &lt;a href="https://github.com/phaserjs/phaser"&gt;Phaser&lt;/a&gt;. I'm finding these mobile web games to be indistinguishable from the native experience, at least for the kinds of games I'm trying to build.&lt;/p&gt;
&lt;p&gt;I suggest starting with a prompt like this:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;Build a mobile-friendly three.js game where...&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This works on both &lt;a href="https://chatgpt.com/"&gt;chatgpt.com&lt;/a&gt; and &lt;a href="https://claude.ai"&gt;claude.ai&lt;/a&gt; - you don't even need to fire up a full coding agent. As one last example, here's "Build a mobile-friendly three.js game where a mouse has to hide from a cat" &lt;a href="https://claude.ai/artifact/RRyEndXLSPQbcig3BgzgCZ"&gt;by Claude Opus 5.5 Extra&lt;/a&gt; and &lt;a href="https://squeak-and-seek-mouse-1027.simonw.chatgpt.site/"&gt;by GPT-6 Extra High&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Switch to Codex or Claude Code once your project passes the proof-of-concept phase.&lt;/p&gt;

&lt;p&gt;And if the game isn't fun enough, add this:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;Make it a LOT more fun&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/game-design"&gt;game-design&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/games"&gt;games&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/chatgpt"&gt;chatgpt&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/claude"&gt;claude&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/vibe-coding"&gt;vibe-coding&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/claude-code"&gt;claude-code&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="game-design"/><category term="games"/><category term="ai"/><category term="generative-ai"/><category term="chatgpt"/><category term="llms"/><category term="claude"/><category term="vibe-coding"/><category term="claude-code"/></entry><entry><title>Quoting Terk Terkowitz</title><link href="https://simonwillison.net/2026/Oct/28/terk-terkowitz/" rel="alternate"/><published>2026-10-28T10:09:07+00:00</published><updated>2026-10-28T10:09:07+00:00</updated><id>https://simonwillison.net/2026/Oct/28/terk-terkowitz/</id><summary type="html">
    &lt;blockquote cite="https://www.aboutamazon.com/news/company-news/amazon-software-engineer-role-guideline-ai"&gt;&lt;p&gt;If your work does not benefit from current AI tooling, that is a finding, not a failing. Document why, share it with your community of peers, bring it to your manager, and work to find solutions. An engineer who can explain where AI does not yet help their work is demonstrating the judgement we are asking for.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p class="cite"&gt;&amp;mdash; &lt;a href="https://www.aboutamazon.com/news/company-news/amazon-software-engineer-role-guideline-ai"&gt;Terk Terkowitz&lt;/a&gt;, An update from Amazon engineering leadership on the role of the developer in the age of AI&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/amazon"&gt;amazon&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/agentic-engineering"&gt;agentic-engineering&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;&lt;/p&gt;



</summary><category term="amazon"/><category term="generative-ai"/><category term="agentic-engineering"/><category term="ai"/><category term="llms"/></entry><entry><title>Game Boy Color on My Conference Badge</title><link href="https://simonwillison.net/2026/Oct/27/game-boy-color-on-my-conference-badge/" rel="alternate"/><published>2026-10-27T19:34:18+00:00</published><updated>2026-10-27T19:34:18+00:00</updated><id>https://simonwillison.net/2026/Oct/27/game-boy-color-on-my-conference-badge/</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://spf13.com/p/game-boy-color-on-my-conference-badge/"&gt;Game Boy Color on My Conference Badge&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
I'm at GitHub Universe this week and, &lt;a href="https://simonwillison.net/2025/Oct/28/github-universe-badge/"&gt;similar to last year&lt;/a&gt;, the conference badge is a full-blown color screen computer.&lt;/p&gt;
&lt;p&gt;I've been hacking around with it again, and then I ran into with Steve Francia... who worked with Gemini to get a &lt;a href="https://spf13.com/p/zelda-on-my-conference-badge/"&gt;full NES emulator&lt;/a&gt; working on it, and then went a step further and deployed an emulator for both the Game Boy and the Game Boy Color.&lt;/p&gt;
&lt;p&gt;Which means, if you can obtain the ROM, you can run &lt;a href="https://en.wikipedia.org/wiki/The_Legend_of_Zelda:_Link%27s_Awakening"&gt;The Legend of Zelda: Link's Awakening&lt;/a&gt; on your conference badge!&lt;/p&gt;
&lt;p&gt;&lt;img alt="Photo of the badge running Zelda, in full color, with visible touch buttons below the screen." src="https://static.simonwillison.net/static/2026-10-27/IMG_9339.jpeg" /&gt;&lt;/p&gt;
&lt;p&gt;A neat feature of the badge is that you can turn it upside down and then use game controller touch buttons that are built into the badge body.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/games"&gt;games&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/github"&gt;github&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/hardware-hacking"&gt;hardware-hacking&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/gemini"&gt;gemini&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/steve-francia"&gt;steve-francia&lt;/a&gt;&lt;/p&gt;



</summary><category term="games"/><category term="github"/><category term="hardware-hacking"/><category term="ai"/><category term="generative-ai"/><category term="llms"/><category term="gemini"/><category term="steve-francia"/></entry><entry><title>GPT-6.1 Terra</title><link href="https://simonwillison.net/2026/Oct/26/gpt-61-terra/" rel="alternate"/><published>2026-10-26T23:53:07+00:00</published><updated>2026-10-26T23:53:07+00:00</updated><id>https://simonwillison.net/2026/Oct/26/gpt-61-terra/</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://openai.com/index/introducing-gpt-6-1-terra/"&gt;GPT-6.1 Terra&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
It's always interesting to note which aspects of a new model are emphasized in the release announcement.&lt;/p&gt;
&lt;p&gt;In the case of GPT-6.1 Terra, OpenAI went with visual reasoning and computer use:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;We’re introducing &lt;strong&gt;GPT-6.1 Terra&lt;/strong&gt;, a fast, efficient model that combines detailed visual reasoning and precise computer use alongside clearer, more natural writing. A significant step up from GPT‑5.6 Terra, it excels at the communication and computer-based tasks that fill the workday, from drafting proposals and interpreting technical drawings to filling out forms and editing videos.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Terra sits in the same position as Sonnet in the Anthropic model collection - not the cheapest or the most expensive, making it harder to decide when to use it.&lt;/p&gt;
&lt;p&gt;Computer use is a good example of a task that benefits from a less expensive model, since you might put it to work on automated, repetitive tasks.&lt;/p&gt;
&lt;p&gt;OpenAI's Ted Sanders provided some useful advice in &lt;a href="https://news.ycombinator.com/item?id=50248124#50249160"&gt;a comment&lt;/a&gt; on Hacker News:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;In the case of GPT-6.1 Terra, I'd say Terra is probably better than Astra and Sol at technical communication, similar on vision and computer use (but much faster!), and a bit worse on most other things. For API developers, it's a nice midrange option if you want something cheaper than Sol but a lot smarter than Luna (especially for vision / computer use / communication). For subscribers, it's not a bombshell release - if you're hitting usage limits, maybe it helps you go a bit further, and if you want clearer communication or faster computer use, it can be a nice option to select.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Here are &lt;a href="https://tools.simonwillison.net/markdown-svg-renderer?url=https%3A%2F%2Fgist.github.com%2Fsimonw%2F855d951d12c68eccca5374cd7d4f834e"&gt;the pelicans&lt;/a&gt; for the different reasoning levels. This pelican &lt;a href="https://tools.simonwillison.net/markdown-svg-renderer?url=https%3A%2F%2Fgist.github.com%2Fsimonw%2F855d951d12c68eccca5374cd7d4f834e#reasoning-2"&gt;for "max"&lt;/a&gt; cost &lt;a href="https://www.llm-prices.com/#it=16&amp;amp;ot=22629&amp;amp;sel=gpt-6.1-terra"&gt;11.3161 cents&lt;/a&gt; and took 4 minutes and 11 seconds:&lt;/p&gt;
&lt;p&gt;&lt;img alt="It's a good pelican and a good bicycle - correctly shaped frame, feet n pedals either side of the frame, has the same color scheme as the others in the GPT-6 and GPT-6.1 families." src="https://static.simonwillison.net/static/2026-10-26/terra-max.webp" /&gt;&lt;/p&gt;
&lt;p&gt;Here's &lt;a href="https://static.simonwillison.net/static/2026/openai-pelicans-october-2026.html"&gt;a new comparison grid&lt;/a&gt; showing pelicans for every reasoning level of OpenAI's current frontier lineup: GPT-6 Astra, GPT-6.1 Sol, GPT-6.1 Terra, and GPT-6 Luna.&lt;/p&gt;
&lt;p&gt;GPT-6.1 Terra is priced at $1/million input tokens and $5/million output - almost half the price of GPT-5.6 Terra and GPT-6.1 Sol, and around 10x the price of GPT-6 Luna.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://news.ycombinator.com/item?id=50248124"&gt;Hacker News&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/openai"&gt;openai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llm-pricing"&gt;llm-pricing&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/pelican-riding-a-bicycle"&gt;pelican-riding-a-bicycle&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llm-release"&gt;llm-release&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/gpt"&gt;gpt&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ted-sanders"&gt;ted-sanders&lt;/a&gt;&lt;/p&gt;



</summary><category term="ai"/><category term="openai"/><category term="generative-ai"/><category term="llms"/><category term="llm-pricing"/><category term="pelican-riding-a-bicycle"/><category term="llm-release"/><category term="gpt"/><category term="ted-sanders"/></entry><entry><title>Quoting Jason Koebler</title><link href="https://simonwillison.net/2026/Oct/26/jason-koebler/" rel="alternate"/><published>2026-10-26T19:00:25+00:00</published><updated>2026-10-26T19:00:25+00:00</updated><id>https://simonwillison.net/2026/Oct/26/jason-koebler/</id><summary type="html">
    &lt;blockquote cite="https://www.404media.co/chatgpt-keeps-telling-people-404-media-can-solve-their-tech-support-problems/"&gt;&lt;p&gt;Because big tech platforms essentially do not have customer support and make it impossible for their users to contact a human, many people experiencing run-of-the-mill tech problems have turned to ChatGPT. And, increasingly, ChatGPT is telling people that have normal tech support problems that they have discovered something journalistically notable and that 404 Media, specifically, can help them.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p class="cite"&gt;&amp;mdash; &lt;a href="https://www.404media.co/chatgpt-keeps-telling-people-404-media-can-solve-their-tech-support-problems/"&gt;Jason Koebler&lt;/a&gt;, ChatGPT Keeps Telling People 404 Media Can Solve Their Tech Support Problems&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/jason-koebler"&gt;jason-koebler&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/openai"&gt;openai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/journalism"&gt;journalism&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-ethics"&gt;ai-ethics&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-misuse"&gt;ai-misuse&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/chatgpt"&gt;chatgpt&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/404-media"&gt;404-media&lt;/a&gt;&lt;/p&gt;



</summary><category term="jason-koebler"/><category term="openai"/><category term="journalism"/><category term="ai"/><category term="llms"/><category term="ai-ethics"/><category term="ai-misuse"/><category term="generative-ai"/><category term="chatgpt"/><category term="404-media"/></entry><entry><title>webframe: evaluated as a scraper and a sandbox</title><link href="https://simonwillison.net/2026/Oct/26/webframe-evaluation/" rel="alternate"/><published>2026-10-26T16:15:00+00:00</published><updated>2026-10-26T16:15:00+00:00</updated><id>https://simonwillison.net/2026/Oct/26/webframe-evaluation/</id><summary type="html">
    
        &lt;p&gt;&lt;strong&gt;Research:&lt;/strong&gt; &lt;a href="https://github.com/simonw/research/tree/main/webframe-evaluation#readme"&gt;webframe: evaluated as a scraper and a sandbox&lt;/a&gt;&lt;/p&gt;
        &lt;p&gt;&lt;a href="https://github.com/tractordev/webframe"&gt;webframe&lt;/a&gt; is a neat little project from Jeff Lindsay which lets you "run a web page like a program" - you point it at a URL or file and it executes it in a hidden headless web view and outputs &lt;code&gt;console.log()&lt;/code&gt; to standard output and any exceptions to standard error.&lt;/p&gt;
&lt;p&gt;It's written in Go on top of the &lt;a href="https://github.com/crgimenes/glaze"&gt;glaze&lt;/a&gt; library, which provides access to a system browser ("WKWebView on macOS, WebKitGTK on Linux, WebView2 on Windows") so it doesn't need to bundle its own browser engine.&lt;/p&gt;
&lt;p&gt;It reminds me of my own &lt;a href="https://shot-scraper.datasette.io/en/stable/javascript.html"&gt;shot-scraper javascript&lt;/a&gt; tool, albeit in a much smaller package that doesn't depend on Playwright.&lt;/p&gt;
&lt;p&gt;I had Claude Opus 5.5 &lt;a href="https://claude.ai/code/cshk_01MX3aJH8vDGmGSj1xH9BYhj2HviVvLDaJbiELHyDoReYT"&gt;put it through its paces&lt;/a&gt; and prepare a research report for me. Here's the prompt I used:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;Explore https://github.com/tractordev/webframe try running it and put it though its paces, build a few exploratory prototypes, then evaluate it as a potential sandboxing tool and as a tool for scraping web pages using the same patterns encouraged by the "shot-scraper JavaScript" command (see simonw/shot-scraper on GitHub, docs directory)&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
    
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/browsers"&gt;browsers&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/go"&gt;go&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/javascript"&gt;javascript&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/jeff-lindsay"&gt;jeff-lindsay&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/shot-scraper"&gt;shot-scraper&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="browsers"/><category term="go"/><category term="javascript"/><category term="jeff-lindsay"/><category term="shot-scraper"/></entry><entry><title>Seam Cutter</title><link href="https://simonwillison.net/2026/Oct/25/seam-cutter/" rel="alternate"/><published>2026-10-25T15:10:19+00:00</published><updated>2026-10-25T15:10:19+00:00</updated><id>https://simonwillison.net/2026/Oct/25/seam-cutter/</id><summary type="html">
    
        &lt;p&gt;&lt;strong&gt;Tool:&lt;/strong&gt; &lt;a href="https://tools.simonwillison.net/seam-cutter"&gt;Seam Cutter&lt;/a&gt;&lt;/p&gt;
        &lt;p&gt;I built this weird and very specific cropping tool - it lets you create a horizontal or vertical cut across an image, then slide the two sides relative to each other. Effectively it lets you crop out a section in the middle of an image.&lt;/p&gt;
&lt;p&gt;I wanted this because I often use &lt;a href="https://apps.apple.com/us/app/tailor-screenshot-stitching/id926653095"&gt;Tailor&lt;/a&gt; on my iPhone to stitch several screenshots together into lot long image, but sometimes I find myself wanting to crop out a section in the middle - to redact an irrelevant prompt from a transcript, for example.&lt;/p&gt;
    
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/tools"&gt;tools&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="tools"/></entry><entry><title>battledrones v14: Compass Rose, a four player map</title><link href="https://simonwillison.net/2026/Oct/24/battledrones/" rel="alternate"/><published>2026-10-24T03:59:57+00:00</published><updated>2026-10-24T03:59:57+00:00</updated><id>https://simonwillison.net/2026/Oct/24/battledrones/</id><summary type="html">
    
        &lt;p&gt;&lt;strong&gt;Release:&lt;/strong&gt; &lt;a href="https://github.com/simonw/battledrones/releases/tag/v14"&gt;battledrones v14: Compass Rose, a four player map&lt;/a&gt;&lt;/p&gt;
        &lt;p&gt;I added four player online mode to &lt;a href="https://simonwillison.net/2026/Oct/20/battledrones/"&gt;Battledrones&lt;/a&gt; - previous maps were limited to two.&lt;/p&gt;
&lt;p&gt;Here's the initial prompt I used: &lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;Add a new map for a four player battle - four way rotational symmetry, up to four AI players, works with the WebSocket non-audio based multiplayer mode so up to four human players can join (any spare slots use AI)&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Claude Opus 5.5 added a new map called "Compass Rose" and modified the WebSockets multiplayer network code to support up to four players for that map, joining via share links or QR codes.&lt;/p&gt;
&lt;p&gt;&lt;img alt="The new map does indeed look a bit like a rose - it uses the cold and ice biome. Also shown are purple robots battling on the map." src="https://raw.githubusercontent.com/simonw/battledrones/v14/progress-shots/v14/compass-rose.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;The new teams use robots themed in purple and green, joining the existing blue and red designs. You can preview those colors in &lt;a href="https://simonw.github.io/battledrones/models.html"&gt;the updated model browser&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Here's &lt;a href="https://simonw.github.io/battledrones/v14/?replay=https://gist.githubusercontent.com/simonw/faa550a002b25a78f1c88a64217786c1/raw/4ff9b03de71d757cd33eb5d1a0e388155b6c20e5/compass.json"&gt;a replay link&lt;/a&gt; to watch a four way AI battle with the "Goliath Armada" mutator turned on, where each side starts with four giant Goliath mech units.&lt;/p&gt;
    
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/game-design"&gt;game-design&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/projects"&gt;projects&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/claude"&gt;claude&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="game-design"/><category term="projects"/><category term="claude"/></entry><entry><title>Quick Study</title><link href="https://simonwillison.net/2026/Oct/23/quick-study-painter/" rel="alternate"/><published>2026-10-23T21:35:13+00:00</published><updated>2026-10-23T21:35:13+00:00</updated><id>https://simonwillison.net/2026/Oct/23/quick-study-painter/</id><summary type="html">
    
        &lt;p&gt;&lt;strong&gt;Tool:&lt;/strong&gt; &lt;a href="https://tools.simonwillison.net/quick-study-painter"&gt;Quick Study&lt;/a&gt;&lt;/p&gt;
        &lt;p&gt;Prompt &lt;a href="https://claude.ai/share/71adda96-193f-4f2a-97c0-454e08066afb"&gt;to Claude Opus 5.5 High&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;Build an artifact where you open a photo and it rapidly (in a few seconds) paints a version of that photo using a canvas element and simulated paintbrush&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;See also &lt;a href="https://simonwillison.net/2026/Aug/25/pelican-watercolor/"&gt;my previous experiment&lt;/a&gt; getting Claude Fable to simulate a watercolor illustration with P5.js.&lt;/p&gt;
&lt;p&gt;&lt;img alt="A simulated oil painting of a photograph of a heron" src="https://static.simonwillison.net/static/2026/heron-oil.webp" /&gt;&lt;/p&gt;
&lt;p&gt;Quick Study uses &lt;a href="https://en.wikipedia.org/wiki/Sobel_operator"&gt;Sobel edge detection&lt;/a&gt;, with no external libraries beyond Google Fonts.&lt;/p&gt;
    
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/tools"&gt;tools&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="tools"/></entry></feed>