<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en-us" xmlns="http://www.w3.org/2005/Atom"><title>Simon Willison's Weblog: Everything but beats</title><link href="http://simonwillison.net/" rel="alternate"/><link href="http://simonwillison.net/atom/everything-but-beats/" rel="self"/><id>http://simonwillison.net/</id><updated>2026-11-10T07:28:21+00:00</updated><author><name>Simon Willison</name></author><entry><title>Introducing Our Smallest, Most Efficient Model: Muse Ember</title><link href="https://simonwillison.net/2026/Nov/10/muse-ember/" rel="alternate"/><published>2026-11-10T07:28:21+00:00</published><updated>2026-11-10T07:28:21+00:00</updated><id>https://simonwillison.net/2026/Nov/10/muse-ember/</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://research.meta.ai/blog/muse-ember"&gt;Introducing Our Smallest, Most Efficient Model: Muse Ember&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Meta AI just launched their entry in the Claude Haiku/GPT Luna category: Muse Ember, which they describe as:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[...] our smallest and most efficient model designed for complex reasoning execution and the work agents repeat all day: tool calls, coding subtasks, routing, extraction, and long document parsing.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;For shorter prompts it's priced the same as GPT-6 Luna and Claude Haiku 5.5 - both are $0.10/million input tokens and $0.50/million output. Today's other big model release, Claude Fable 5.2, is &lt;em&gt;80x that price&lt;/em&gt; at $8/$40.&lt;/p&gt;
&lt;p&gt;The pricing is a little less straightforward as prompts get longer, though. Luna, Ember, and Haiku all support up to a million input tokens, but they also all have a threshold after which the price goes up. Taking &lt;em&gt;that&lt;/em&gt; threshold into account Ember is priced between the two others:&lt;/p&gt;
&lt;center&gt;&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;Model&lt;/th&gt;
      &lt;th&gt;Prompt size&lt;/th&gt;
      &lt;th&gt;Input ($/M)&lt;/th&gt;
      &lt;th&gt;Cached input&lt;/th&gt;
      &lt;th&gt;Output&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td rowspan="2"&gt;GPT-6 Luna&lt;/td&gt;
      &lt;td&gt;≤272k&lt;/td&gt;
      &lt;td&gt;$0.10&lt;/td&gt;
      &lt;td&gt;$0.01&lt;/td&gt;
      &lt;td&gt;$0.50&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&amp;gt;272k&lt;/td&gt;
      &lt;td&gt;$0.20&lt;/td&gt;
      &lt;td&gt;$0.02&lt;/td&gt;
      &lt;td&gt;$0.75&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td rowspan="2"&gt;Muse Ember 1.0&lt;/td&gt;
      &lt;td&gt;≤200k&lt;/td&gt;
      &lt;td&gt;$0.10&lt;/td&gt;
      &lt;td&gt;$0.004&lt;/td&gt;
      &lt;td&gt;$0.50&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&amp;gt;200k&lt;/td&gt;
      &lt;td&gt;$0.30&lt;/td&gt;
      &lt;td&gt;$0.012&lt;/td&gt;
      &lt;td&gt;$1.50&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td rowspan="2"&gt;Claude Haiku 5.5&lt;/td&gt;
      &lt;td&gt;≤100k&lt;/td&gt;
      &lt;td&gt;$0.10&lt;/td&gt;
      &lt;td&gt;$0.01&lt;/td&gt;
      &lt;td&gt;$0.50&lt;/td&gt;
    &lt;/tr&gt; 
    &lt;tr&gt;
      &lt;td&gt;&amp;gt;100k&lt;/td&gt;
      &lt;td&gt;$0.50&lt;/td&gt;
      &lt;td&gt;$0.05&lt;/td&gt;
      &lt;td&gt;$2.50&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;&lt;/center&gt;

&lt;p&gt;But comparing price-per-token doesn't really make sense these days, when reasoning tokens mean that different models might use dramatically different numbers of tokens to solve the same problem.&lt;/p&gt;
&lt;p&gt;For that, one measure that's useful is the Artificial Analysis. &lt;/p&gt;
&lt;p&gt;&lt;img alt="Stacked bar chart from Artificial Analysis comparing a cost in dollars across six models, each bar split into four unlabeled stacked segments, sorted from lowest to highest total. Claude Haiku 5.5 (low): $0.04* total, bottom segment $0.02, three thin unlabeled segments above. GPT-6 Luna (non-reasoning): $0.07 total, bottom segment $0.06, thin unlabeled segments above. GPT-6 Luna (xhigh): $0.10 total, segments from bottom $0.07, $0.02, $0.02, plus a thin unlabeled top segment. Muse Ember (xhigh): $0.12 total, segments from bottom $0.06, $0.02, $0.02, plus a thin unlabeled top segment. Muse Ember (max): $0.14 total, segments from bottom $0.07, $0.03, $0.03, $0.02. Claude Haiku 5.5 (xhigh): $0.25* total, segments from bottom $0.14, $0.04, $0.05, $0.02. Anthropic bars are terracotta, OpenAI bars are dark gray, Meta bars are blue, each with the company logo beneath." src="https://static.simonwillison.net/static/2026/artificial-analysis-haiku-class.webp" /&gt;&lt;/p&gt;
&lt;p&gt;And even more useful than that is their Intelligence Index vs. Cost per Task chart, which shows the following for those three models:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Scatter plot from Artificial Analysis titled &amp;quot;Intelligence Index vs. Cost per Task&amp;quot;, plotting Artificial Analysis Intelligence Index (y-axis, 5 to 40) against cost per task in USD on a log scale (x-axis, $0.04 to $0.3), with a green &amp;quot;most attractive quadrant&amp;quot; in the upper left and a dotted Pareto line. Claude Haiku 5.5 (low)* scores about 19 at roughly $0.044. GPT-6 Luna (non-reasoning) scores about 9.5 at roughly $0.07. GPT-6 Luna (xhigh) scores about 23.5 at roughly $0.10. Muse Ember (xhigh) scores about 34 at roughly $0.12 and Muse Ember (max) about 36 at roughly $0.14, both on the Pareto line. Claude Haiku 5.5 (xhigh)* scores about 34.5 at roughly $0.25, well to the right of the Pareto line. Three unlabeled gray dots also sit on the Pareto line." src="https://static.simonwillison.net/static/2026/artificial-analysis-pareto.webp" /&gt;&lt;/p&gt;
&lt;p&gt;The Muse Ember models sit right on that Pareto line - the line at which you can only improve one dimension by giving up another. Meta call this out in their announcement:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;It also sits on the efficiency frontier of the full Artificial Analysis leaderboard: no model scores higher for less per task.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;(That grey dot on the Pareto line in the middle of the green area is GPT-6.1 Terra (low) - clearly I should be paying more attention to the Terra family!)&lt;/p&gt;
&lt;p&gt;Muse Ember has six reasoning levels - minimal, low, medium, high, xhigh, and max - so I &lt;a href="https://tools.simonwillison.net/markdown-svg-renderer?url=https%3A%2F%2Fgist.github.com%2Fsimonw%2Fc7666e8a54d84f724ac8121f9fa6cc4d"&gt;rendered six pelicans riding bicycles&lt;/a&gt;. The "high" reasoning level failed to return a full SVG, and the other SVGs were surprising in that the reasoning level didn't cleanly map to the visual quality of the response.&lt;/p&gt;
&lt;p&gt;Here's the "max" one, but the others are worth a look too:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Bicycle frame is OK, basket has fish, pelican has a weird blue hat on." src="https://static.simonwillison.net/static/2026/muse-ember.webp" /&gt;&lt;/p&gt;
&lt;p&gt;The Ember pelicans are comparable in quality to those &lt;a href="https://tools.simonwillison.net/markdown-svg-renderer?url=https://gist.github.com/simonw/185cff7ff0b11379725abf7f78d5d2b2"&gt;I got from Muse Wonder&lt;/a&gt;, which is &lt;a href="https://www.llm-prices.com/#sel=muse-ember-1.0%2Cmuse-ember-1.0-200k%2Cmuse-wonder-1.0"&gt;40x the price&lt;/a&gt; of Muse Ember.


    &lt;p&gt;Tags: &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/meta"&gt;meta&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/llm-release"&gt;llm-release&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/artificial-analysis"&gt;artificial-analysis&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/muse"&gt;muse&lt;/a&gt;&lt;/p&gt;



</summary><category term="ai"/><category term="generative-ai"/><category term="llms"/><category term="meta"/><category term="llm-pricing"/><category term="llm-release"/><category term="artificial-analysis"/><category term="muse"/></entry><entry><title>Quoting Prompting Claude Fable 5.2</title><link href="https://simonwillison.net/2026/Nov/10/prompting-claude-fable-52/" rel="alternate"/><published>2026-11-10T05:34:14+00:00</published><updated>2026-11-10T05:34:14+00:00</updated><id>https://simonwillison.net/2026/Nov/10/prompting-claude-fable-52/</id><summary type="html">
    &lt;blockquote cite="https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/prompting-claude-fable-5-2#say-who-owns-the-code"&gt;&lt;p&gt;Claude Fable 5.2 responds closely to what the prompt says about who owns the code it works on. In Anthropic’s testing on small coding tasks, when a prompt said nothing about ownership or presented the code base as someone else’s, the model tended to add to the existing structure, even when that repeated existing code. [...]&lt;/p&gt;
&lt;p&gt;If you want the model to improve the structure as it works, say that the code is its own:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;This codebase is yours: what it's for and how it's built are your call, and you'll keep building on it.&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;In Anthropic’s testing on small coding tasks, the model merged repeated code in about half of the tries with this sentence, and in under a tenth of the tries without it.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p class="cite"&gt;&amp;mdash; &lt;a href="https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/prompting-claude-fable-5-2#say-who-owns-the-code"&gt;Prompting Claude Fable 5.2&lt;/a&gt;, Anthropic documentation&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/prompt-engineering"&gt;prompt-engineering&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/anthropic"&gt;anthropic&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"&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/claude-mythos-fable"&gt;claude-mythos-fable&lt;/a&gt;&lt;/p&gt;



</summary><category term="prompt-engineering"/><category term="anthropic"/><category term="generative-ai"/><category term="ai"/><category term="llms"/><category term="claude-mythos-fable"/></entry><entry><title>Locating the source of a mysterious beep with Claude</title><link href="https://simonwillison.net/2026/Nov/9/mysterious-beeps/" rel="alternate"/><published>2026-11-09T23:57:21+00:00</published><updated>2026-11-09T23:57:21+00:00</updated><id>https://simonwillison.net/2026/Nov/9/mysterious-beeps/</id><summary type="html">
    &lt;p&gt;Our house has a box room, full of boxes that we still haven't unpacked from our last move. A couple of weeks ago something in that room started &lt;em&gt;intermittently beeping&lt;/em&gt;. The beeps were far enough apart that standing in the room and trying to determine the source of the noise was frustrating, and I really didn't want to dig through every one of those boxes. So I had Claude Code build &lt;a href="https://github.com/simonw/beep-locator"&gt;Beep Locator&lt;/a&gt;, a software system for triangulating the source of a mysterious beep using multiple devices scattered around the room.&lt;/p&gt;
&lt;p&gt;Here's what Beep Locator looks like after it has been running for a while:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://static.simonwillison.net/static/2026/beep-locator-ui.webp" alt="Screenshot of a web app that uses several phones, tablets and laptops as microphones to locate a mystery beeping sound in a room. The left column has an &amp;quot;Add a listener&amp;quot; panel with a QR code and join link, a &amp;quot;Controls&amp;quot; panel with buttons including &amp;quot;Calibrate&amp;quot;, &amp;quot;Test beep&amp;quot; and &amp;quot;It just beeped!&amp;quot; plus a &amp;quot;Listen for beeps&amp;quot; checkbox, and a &amp;quot;Mystery beep&amp;quot; note reading &amp;quot;3345 Hz · 3 confirmed · remembered across sessions&amp;quot;. Below that, a &amp;quot;Devices&amp;quot; list shows five color-coded listeners (Simon iPhone, New iPad, Old iPad, MacBook Pro, Surface Ultra), each marked &amp;quot;✓ mic working · ✓ speaker working&amp;quot;. The main area is a gridded map with a 1 m scale bar that shows the five devices as colored dots and earlier sounds as small timestamped markers. A pink shaded circle near the MacBook Pro is labeled &amp;quot;mystery beep · 2 hearings · within ~41 cm&amp;quot;, and beside it a dashed plus marker suggests &amp;quot;add a listener here? could tighten the mystery beep's position by ~12%&amp;quot;. Below the map, a &amp;quot;Mystery beep loudness warmer / colder&amp;quot; panel shows a bar for each device: Surface Ultra is loudest at &amp;quot;-6.0 dB ▲ +11.6 dB warmer&amp;quot;, with the note &amp;quot;about 6 dB louder means roughly half the distance&amp;quot;. At the bottom, a &amp;quot;Sounds located&amp;quot; table lists recent claps and beeps with coordinates, or the warning &amp;quot;arrival times are not physically possible (echo or a different sound?)&amp;quot;." style="max-width: 100%;" /&gt;&lt;/p&gt;
&lt;p&gt;You run Python web server to show the primary UI, and then use the QR code or URL to connect as many devices as you can spare to act as listeners - I was using two iPads, a phone, a MacBook Pro and a Surface Ultra.&lt;/p&gt;
&lt;p&gt;The devices then play noises to each other to help estimate their locations. This didn't work particularly well, so I added a "Rough mode" where you can drag their icons around in the space to provide rough locations which are then adjusted based on those sounds.&lt;/p&gt;
&lt;p&gt;Once that's set up, the devices all listen for the beep!&lt;/p&gt;
&lt;p&gt;I added a clapping mode too so I could test it by clapping my hands in different locations around the room - displayed as diamonds on the map. This helped me gain confidence that it was capable of locating a sound.&lt;/p&gt;
&lt;p&gt;Beeps show up on the map as an X, plus a line in the "Sounds located" log. You can replay these sounds (from each device in turn) to confirm they are the mysterious beep you are looking for, then click "This is the mystery beep" to mark them as such.&lt;/p&gt;
&lt;p&gt;Once you've confirmed the mysterious beep frequency the system will listen out for it, measure the interval between beeps, and use the triangulated locations to lock down the most likely location on the map.&lt;/p&gt;
&lt;p&gt;The system worked as intended. It gave me the position of the beep to within about 40cm, then I dug through that specific pile of boxes and found an ancient carbon monoxide detector that desperately wanted its batteries replaced.&lt;/p&gt;
&lt;h4 id="how-it-works"&gt;How it works&lt;/h4&gt;
&lt;p&gt;When I started working through this problem with Claude it quickly dug up &lt;a href="https://www.cs.purdue.edu/homes/chunyi/pubs/sensys106-beepbeep.pdf"&gt;BeepBeep: A High-Accuracy Acoustic-Based System for Ranging and Localization Using COTS Devices&lt;/a&gt;, a 2007 paper by Chunyi Peng, Guobin Shen, Yongguang Zhang, Yanlin Li, and Kun Tan. Here's that paper's abstract:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;We present the design, implementation, and evaluation of BeepBeep, a high-accuracy acoustic-based ranging system. It operates in a spontaneous, ad-hoc, and device-to-device context without leveraging any pre-planned infrastructure. It is a pure software-based solution and uses only the most basic set of commodity hardware – a speaker, a microphone, and some form of device-to-device communication – so that it is readily applicable to many low-cost sensor platforms and to most commercial-off-the-shelf mobile devices like cell phones and PDAs. It achieves high accuracy through a combination of three techniques: two-way sensing, self-recording, and sample counting.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;That sounded exactly like what we needed to build!&lt;/p&gt;
&lt;p&gt;Beep Locator runs a Python web application server that does most of the work. The listening devices then connect to that server via WebSockets and present a UI which requests browser microphone access. The listeners mainly work by recording a 60 second buffer of recent audio. They also run a simple beep detection algorithm (see &lt;a href="https://github.com/simonw/beep-locator/blob/main/beep_locator/modules/listener/detector.js"&gt;detector.js&lt;/a&gt;), which uses Fast Fourier Transform and a high-pass filter to identify potential beeps. It sends these events to the main server.&lt;/p&gt;
&lt;p&gt;When a beep is reported, the server has a device play a short chirp (the device with the lowest round-trip time to the server), then asks every listener upload a clip from about 0.6s before the beep to 0.8s after that chirp. This chirp allows the clips to be aligned with each other, a crucial step in locating the beep.&lt;/p&gt;
&lt;h4 id="how-i-built-it"&gt;How I built it&lt;/h4&gt;
&lt;p&gt;I started this project using Claude Code Cloud via my iPhone, with Opus 5.5 running in Extra thinking effort mode. Here's &lt;a href="https://claude.ai/code/cshk_016BvfqAWf7MeGZKeYCrUnN2MmRfCSAX9Gu8DiptXMuH9P"&gt;that shared starter session&lt;/a&gt;, which began with this prompt against a newly created empty GitHub repository:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;Write out a problem.md file describing the problem we want to solve&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;There is a device beeping in a room and I cannot find it&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;I want to set up several devices - laptops, phones, iPads - around the room all listening at the same time and have them help triangulate where the beep comes from&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;There needs to be a Python web app which coordinates it all - one device shows a web page for the app, other devices join a URL which turns them into listeners - all via browser WebAudio and WebSockets back to the Python server app&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Ideally I wouldn't need to manually input the relative locations of the devices - it would be amazing if they could play sounds to each other in order to locate each other in 2D space - is that even possible though?&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;That got me &lt;a href="https://github.com/simonw/beep-locator/blob/main/problem.md"&gt;this problem.md file&lt;/a&gt;. As part of writing that up Claude found and read the BeepBeep paper, which is described in that file.&lt;/p&gt;
&lt;p&gt;The research looked good, so I told it:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;Ok try and build it, add a mechanism so you can send new code to the listeners which they will then run automatically - that way I can set everything up in the room and then leave you alone to continue hacking and experiment while I do something else&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;That got me &lt;a href="https://github.com/simonw/beep-locator/commits/e36ac93a81091a246403c074e34c0041c6972fac"&gt;to this point&lt;/a&gt; - most of the system was built, but nothing had actually tried running it yet.&lt;/p&gt;
&lt;p&gt;I cloned the new repository to my laptop and fired up Claude Code... and then &lt;a href="https://www.anthropic.com/claude-fable-and-mythos-5-2"&gt;Fable 5.2 was released&lt;/a&gt;, and this project seemed like an excellent opportunity to put that through its paces.&lt;/p&gt;
&lt;p&gt;I had Claude Code on my laptop start the server running, then made sure it could both see what was happening &lt;em&gt;and&lt;/em&gt; make live changes to the software as it ran.&lt;/p&gt;
&lt;p&gt;This was already baked into the software: Opus 5.5 had built an &lt;a href="https://github.com/simonw/beep-locator/blob/44fea65c918fb31a7d2c0e17797ee1a106860e23/beep_locator/static/runtime.js#L710"&gt;installModule()&lt;/a&gt; method on the listeners that could be triggered over the WebSocket connection, meaning the admin server could execute arbitrary new code on any of its clients.&lt;/p&gt;
&lt;p&gt;On some devices, web pages that listen on the microphone request user permission any time the page reloads. The hot-swap module mechanism meant that we could deploy new code without having to manually interact with each of the listening devices in turn.&lt;/p&gt;
&lt;p&gt;From that point on my involvement was mainly to sit by the laptop chatting with Fable 5.2 about what was going on, and occasionally requesting new features. Here are some of the feature prompts I ran:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;I think we need to make it so I can drag things around on the map in “rough mode”, where my job is just to put them roughly where they are, then switch out of rough mode and it attempts to get them accurate&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This gave me the ability to drag listeners around the map.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;what’s a good way for me to test this I wonder? Can we have it listen for claps, then I could clap and it could identify the location of the clap? [...]&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Claps should use a different symbol on the map than beeps&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;That added the thing where any time I clapped it would show on the map as a different symbol from the beeps.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;each symbol on the map should include a HH:MM:SS timestamp&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;That made it easier to spot which symbol likely reflected which real-world sound.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;The log should show beeps and claps with their timestamps AND have a little play button which, when clicked, replays the recorded noise from each of the listeners in sequence (with clear text on screen showing which listener recorded which snippet) while temporarily turning off microphone recording while that replay plays&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Now I could replay sounds, making it much easier to identify which recorded clip was the mysterious beep I was looking for.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;There should be a button next to a recording for “This is the mystery beep” - then I can hit replay to see and then confirm it was the mystery beep if that’s the one I am looking for&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Then the system can categorize noises in the future to see if they are likely that same mysterious beep and use that information to build a more accurate idea of where it is&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;At this point I was getting close - I had a solid idea of where the beep was coming from, but wouldn't it be neat if I could reposition the listeners around that point to get an even finer location?&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;I want a feature for this, I don’t want to have to restart each listening device etc, I want to be able to click a “Reposition the devices” button which lets me switch into repositioning, then I click “Repositioned” and it puts me into Rough mode and asks me to roughly locate them, then I do that and click, then it starts up again. The previous session can be read-only viewed through the app.&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;And since I had one spare device, I then said:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;add a feature where the map includes a spot that is a suggestion for a location that it would be useful to add a listener at - based on data collected so far&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4 id="giving-claude-code-ears"&gt;Giving Claude Code ears&lt;/h4&gt;
&lt;p&gt;I think the most interesting part of this project is that I demonstrated it's possible to &lt;em&gt;give Claude Code ears&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Claude doesn't have native audio input (yet), but it can run JavaScript and Python code that can analyze audio captured by a microphone.&lt;/p&gt;
&lt;p&gt;I told it to run a web server with WebSocket connections to multiple listening devices, then had it both run a WebAudio microphone on those devices and hook them up so they could be sent fresh JavaScript code to execute via that WebSocket.&lt;/p&gt;
&lt;p&gt;Then I could pretty much leave Claude alone, hacking away at the problem, querying the audio logs, and reconfiguring its ears to help it solve the problem.&lt;/p&gt;
&lt;p&gt;I'm reminded of a similar hack I heard about at GitHub Universe a few weeks ago, where &lt;a href="https://github.com/martinwoodward"&gt;Martin Woodward&lt;/a&gt; told me he had been debugging the &lt;a href="https://simonwillison.net/2026/Oct/27/game-boy-color-on-my-conference-badge/"&gt;GitHub Universe Badge computers&lt;/a&gt; by plugging them into a computer via USB-C and then pointing a webcam at their screen, so his coding agent could tell if updates were working correctly or not.&lt;/p&gt;
&lt;p&gt;Figuring out ways to let coding agents perceive the world around them is a whole lot of fun.&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/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/claude-code"&gt;claude-code&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="projects"/><category term="ai"/><category term="generative-ai"/><category term="llms"/><category term="claude"/><category term="coding-agents"/><category term="claude-code"/><category term="claude-mythos-fable"/></entry><entry><title>Hide your slop PR descriptions behind &lt;details&gt;&lt;summary&gt;</title><link href="https://simonwillison.net/2026/Nov/9/details-summary/" rel="alternate"/><published>2026-11-09T04:25:05+00:00</published><updated>2026-11-09T04:25:05+00:00</updated><id>https://simonwillison.net/2026/Nov/9/details-summary/</id><summary type="html">
    &lt;p&gt;Most of the changes I make to my projects these days come in the form of PRs opened for me by Claude Code or Codex. The PR is my unit of work - I use them to bundle commits together, iterating on them until a feature is complete, document decisions and then merge the finished result. Today's coding agents are great at writing PR descriptions.&lt;/p&gt;
&lt;h4 id="they-re-too-good-at-describing-the-work"&gt;They're too good at describing the work&lt;/h4&gt;
&lt;p&gt;The problem is that they are &lt;em&gt;too&lt;/em&gt; good. An agent-written PR description is accurate and comprehensive. It describes the problem, the detailed solution, and the steps taken to verify it. That's a lot of information to absorb.&lt;/p&gt;
&lt;p&gt;It's not necessarily slop, but it &lt;em&gt;reads&lt;/em&gt; like slop!&lt;/p&gt;
&lt;p&gt;It's very easy to spot an AI-written PR, and as with other forms of AI writing my instant reaction is best summarized as "I'm not reading all of that". It doesn't matter how accurate or useful the information is, I'm instantly put off by the thought that it will take me longer to read than it took the driving author to write... even when that driving author is me!&lt;/p&gt;
&lt;p&gt;I want human editorial judgement. I want someone to have thought just long enough about the PR to give me a human-approved introduction that helps me understand, at a high level, what the PR is for and whether it deserves more of my attention.&lt;/p&gt;
&lt;p&gt;I think I've found a low-effort way to do this that feels right.&lt;/p&gt;
&lt;h4 id="hide-most-of-it-in-a-details-summary"&gt;Hide most of it in a details/summary&lt;/h4&gt;
&lt;p&gt;The HTML &lt;code&gt;&amp;lt;details&amp;gt;&amp;lt;summary&amp;gt;&lt;/code&gt; elements render as a collapsed heading (the summary) that can be expanded to view the larger piece of text. The code looks like this:&lt;/p&gt;
&lt;div class="highlight highlight-text-html-basic"&gt;&lt;pre&gt;&lt;span class="pl-kos"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pl-ent"&gt;details&lt;/span&gt;&lt;span class="pl-kos"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="pl-kos"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pl-ent"&gt;summary&lt;/span&gt;&lt;span class="pl-kos"&gt;&amp;gt;&lt;/span&gt;Claude Opus 5.5&lt;span class="pl-kos"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="pl-ent"&gt;summary&lt;/span&gt;&lt;span class="pl-kos"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="pl-kos"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pl-ent"&gt;h2&lt;/span&gt;&lt;span class="pl-kos"&gt;&amp;gt;&lt;/span&gt;The hook&lt;span class="pl-kos"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="pl-ent"&gt;h2&lt;/span&gt;&lt;span class="pl-kos"&gt;&amp;gt;&lt;/span&gt;
  Plugins implement &lt;span class="pl-kos"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pl-ent"&gt;code&lt;/span&gt;&lt;span class="pl-kos"&gt;&amp;gt;&lt;/span&gt;register_agent_reference_types(datasette)&lt;span class="pl-kos"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="pl-ent"&gt;code&lt;/span&gt;&lt;span class="pl-kos"&gt;&amp;gt;&lt;/span&gt;...
&lt;span class="pl-kos"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="pl-ent"&gt;details&lt;/span&gt;&lt;span class="pl-kos"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;When rendered, it looks &lt;a href="https://github.com/datasette/datasette-agent/pull/51"&gt;like this&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://static.simonwillison.net/static/2026/details-summary-pr.gif" alt="Screenshot of a GitHub PR. The text &amp;quot;Claude Opus 5.5&amp;quot; sits next to a little black arrow. Clicking on that text expands a full description inside the PR body." style="max-width: 100%;" /&gt;&lt;/p&gt;
&lt;p&gt;Crucially, &lt;code&gt;&amp;lt;details&amp;gt;&amp;lt;summary&amp;gt;&lt;/code&gt; &lt;em&gt;is supported in GitHub Markdown&lt;/em&gt;. You can drop those tags directly into an issue comment or PR description and GitHub will hide the details and display just the summary plus an expansion arrow.&lt;/p&gt;
&lt;p&gt;I've started using this for my AI-generated pull requests.&lt;/p&gt;
&lt;p&gt;The opening paragraph of my PRs will be carefully selected to act as a high-level explanation of what's going on - the shortest text a human can read that will help get them up to speed.&lt;/p&gt;
&lt;p&gt;I'll sometimes throw in a screenshot as well, since images are often the best way to quickly illustrate a new feature.&lt;/p&gt;
&lt;p&gt;The full agent-written essay then follows in a &lt;code&gt;&amp;lt;details&amp;gt;&amp;lt;summary&amp;gt;&lt;/code&gt;. I use the model name and often the effort level as that summary, to make it abundantly clear what is going on - "Claude Opus 5.5 Medium" for example.&lt;/p&gt;
&lt;p&gt;My PRs don't feel nearly as sloppy now! The information is all still there, but a reader can glance at it and get the top, human-curated information without their eyes glazing over at multiple paragraphs of agent-written details.&lt;/p&gt;
&lt;p&gt;I don't always write the introduction myself - sometimes the agent has given me what I need already, hidden away in the avalanche of other text. My promise to the reader is that the short opener will represent my human judgement as to what is definitely worth their time.&lt;/p&gt;
&lt;p&gt;Here are some recent examples where I've used this pattern, including the opener I used:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/simonw/datasette/pull/3052"&gt;datasette PR #3052: Redesign row page as a vertical list of fields&lt;/a&gt; - "The row page showed its single row as a one-row table. For wide tables, like a 46-column GitHub &lt;code&gt;repos&lt;/code&gt; table, that scrolled far off to the right and left most of the page blank." (then a screenshot)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/simonw/datasette/pull/3043"&gt;datasette PR #3043: Pagination bar showing which rows are on the current page&lt;/a&gt; - "Table pages that span more than one page now make it obvious where you are, and offer navigation at the top of the page as well as the bottom." (plus screenshot)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/simonw/datasette/pull/3042"&gt;datasette PR #3042: Load edit-tools.js on demand via a small loader&lt;/a&gt; - "&lt;code&gt;edit-tools.js&lt;/code&gt; (~220KB) was loaded on every table, row and database page, even for users who couldn't edit anything. Now only load it for users who can edit when they first interact with an edit feature (including mouse over an edit link)."&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/datasette/datasette-agent/pull/51"&gt;datasette-agent PR #51: register_agent_reference_types plugin hook&lt;/a&gt; - "Lets plugins add their own kinds of item to the &lt;code&gt;#&lt;/code&gt; tagging in the chat composer using a new &lt;code&gt;register_agent_reference_types(datasette)&lt;/code&gt; plugin hook." - pictured above.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/simonw/llm/pull/1838"&gt;llm PR #1838: Add llm openai endpoint add/list/remove/path commands&lt;/a&gt; - "Adds commands for managing the records in &lt;code&gt;extra-openai-models.yaml&lt;/code&gt;, so OpenAI-compatible endpoints can be saved from the command line instead of by hand-editing YAML." - then copied &lt;code&gt;--help&lt;/code&gt; output.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="the-mnemonic"&gt;The mnemonic&lt;/h4&gt;
&lt;p&gt;I used to have trouble remembering the order of the tags - is it &lt;code&gt;&amp;lt;details&amp;gt;&amp;lt;summary&amp;gt;&lt;/code&gt; or &lt;code&gt;&amp;lt;summary&amp;gt;&amp;lt;details&amp;gt;&lt;/code&gt;?&lt;/p&gt;
&lt;p&gt;Here are two tricks that helped me.&lt;/p&gt;
&lt;p&gt;First, and most obviously, the &lt;code&gt;&amp;lt;summary&amp;gt;&lt;/code&gt; is clearly the bit where you summarize the details. That's the tag for your line of text that can be clicked to expand - the &lt;code&gt;&amp;lt;details&amp;gt;&lt;/code&gt; element must then wrap everything else.&lt;/p&gt;
&lt;p&gt;An even better trick is to always refer to these two tags as "details-summary".&lt;/p&gt;
&lt;p&gt;"details-summary" is two syllables followed by three syllables. That rolls off the tongue more smoothly than the three-two punch of "summary-details".&lt;/p&gt;
&lt;p&gt;Say "details-summary" out loud just a few times and you'll never forget the order of the tags again.&lt;/p&gt;
&lt;p&gt;(I still wish GitHub would add a button to their Markdown editor for this - partly to save me painstakingly typing it on my mobile keyboard, and partly to help spread the word to more GitHub users that this feature exists.)&lt;/p&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/html"&gt;html&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/markdown"&gt;markdown&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/datasette"&gt;datasette&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/ai-assisted-programming"&gt;ai-assisted-programming&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llm"&gt;llm&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/coding-agents"&gt;coding-agents&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="github"/><category term="html"/><category term="markdown"/><category term="ai"/><category term="datasette"/><category term="generative-ai"/><category term="llms"/><category term="ai-assisted-programming"/><category term="llm"/><category term="coding-agents"/></entry><entry><title>datasette #3046: Don't serve link: rel=next HTTP headers to Firefox for HTML pages</title><link href="https://simonwillison.net/2026/Nov/7/link-rel-next/" rel="alternate"/><published>2026-11-07T23:57:46+00:00</published><updated>2026-11-07T23:57:46+00:00</updated><id>https://simonwillison.net/2026/Nov/7/link-rel-next/</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/simonw/datasette/issues/3046"&gt;datasette #3046: Don&amp;#x27;t serve link: rel=next HTTP headers to Firefox for HTML pages&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
I was looking at the Firefox network panel today when I noticed that requests to a Datasette table page were triggering an &lt;a href="https://developer.mozilla.org/en-US/docs/Glossary/Prefetch"&gt;HTTP prefetch&lt;/a&gt; to the next page of rows in that table.&lt;/p&gt;
&lt;p&gt;This was happening because Datasette pages serve an HTTP &lt;code&gt;link&lt;/code&gt; header like this:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;link: &amp;lt;https://latest.datasette.io/fixtures/compound_three_primary_keys?_next=a%2Cd%2Cv&amp;gt;; rel="next"&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;This is bad. A tiny fraction of the visitors to one of those pages will click the "next" link, which means for everyone else their browser is fetching unnecessary data and the Datasette server is having to render an entire page that then gets thrown away.&lt;/p&gt;
&lt;p&gt;I dug in and learned that Firefox has &lt;a href="https://bugzilla.mozilla.org/show_bug.cgi?id=175418"&gt;an issue&lt;/a&gt; that has been open for 24 years about this behavior...&lt;/p&gt;
&lt;p&gt;And one of the early comments on that issue links to &lt;a href="https://simonwillison.net/2002/Oct/17/mozillaPrefetching/"&gt;my blog post from 2002&lt;/a&gt; complaining about this feature. I hadn't just forgotten that I had written about it, I had forgotten the feature entirely!


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/firefox"&gt;firefox&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/html"&gt;html&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/mozilla"&gt;mozilla&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/datasette"&gt;datasette&lt;/a&gt;&lt;/p&gt;



</summary><category term="firefox"/><category term="html"/><category term="mozilla"/><category term="datasette"/></entry><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>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>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>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>Introducing Kimi K3.1 Pro</title><link href="https://simonwillison.net/2026/Oct/23/kimi-k31-pro/" rel="alternate"/><published>2026-10-23T19:40:54+00:00</published><updated>2026-10-23T19:40:54+00:00</updated><id>https://simonwillison.net/2026/Oct/23/kimi-k31-pro/</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.kimi.ai/blog/kimi-k3-1-pro"&gt;Introducing Kimi K3.1 Pro&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Kimi K3.1 Pro landed on the Kimi API today - it's not yet open weights, but Moonshot  promise "Full model weights will be released by Nov 4, 2026".&lt;/p&gt;
&lt;p&gt;They're also offering a "Highspeed" version that's 2-3x faster, at twice the price (except for input token cache hits, which are priced the same).&lt;/p&gt;
&lt;p&gt;The &lt;a href="https://platform.kimi.ai/docs/pricing/chat"&gt;US dollar pricing&lt;/a&gt; is $2.00/million tokens for input and $10/million for output - the same as GPT-6.1 Sol and half the price of Claude Opus 5.5.&lt;/p&gt;
&lt;p&gt;Moonshot's own benchmarks show Kimi as approximately level with Opus 5.5 and GPT-6 Astra - beating them on a few benchmarks, coming close on others.&lt;/p&gt;
&lt;p&gt;Artificial Analysis &lt;a href="https://artificialanalysis.ai/models/kimi-k3-1-pro"&gt;scored Kimi at 55&lt;/a&gt; - ahead of Claude Fable 5.1, GPT-6 Astra, and Gemini 4 Argon (all at 53) and behind only Claude Opus 5.5 (58).&lt;/p&gt;
&lt;p&gt;This is the first time a (soon-to-be) open weight model has scored this highly against the frontier.&lt;/p&gt;
&lt;p&gt;I tried it out via the &lt;a href="https://platform.kimi.ai/docs/get-your-api-key"&gt;Moonshot API&lt;/a&gt; using the &lt;a href="https://llm.datasette.io/en/stable/other-models.html#openai-endpoint"&gt;llm openai endpoint&lt;/a&gt; command I added to &lt;a href="https://llm.datasette.io/en/stable/changelog.html#v0-32"&gt;LLM 0.32&lt;/a&gt; back in August:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;llm openai endpoint \
  https://api.moonshot.ai/v1 \
  --key kimi \
  -m kimi-k3.1-pro \
  "Generate an SVG of a pelican riding a bicycle" \
  --responses \
  -o reasoning_effort low \
  &amp;gt; kimi-k3.1-pro-pelican-low.stdout.txt \
  2&amp;gt; kimi-k3.1-pro-pelican-low.stderr.txt
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;llm openai endpoint&lt;/code&gt; can run prompts against any OpenAI-compatible endpoint but doesn't log the results, hence the extra options to save stdout and stderr (the reasoning trace).&lt;/p&gt;
&lt;p&gt;Here &lt;a href="https://tools.simonwillison.net/markdown-svg-renderer?url=https%3A%2F%2Fgist.github.com%2Fsimonw%2F9b7181492209387da1d4f53002f26663"&gt;are the pelicans&lt;/a&gt; I got for Kimi K3.1 Pro on the three reasoning levels it supports -  low, medium, and max. This is max:&lt;/p&gt;
&lt;p&gt;&lt;img alt="It's pretty solid - feet are on the pedals, bicycle frame is good, nice beak. Both legs are on the same side of the Fram though." src="https://static.simonwillison.net/static/2026-10-23/image-2.png" /&gt;&lt;/p&gt;
&lt;p&gt;For comparison, I ran fresh &lt;a href="https://tools.simonwillison.net/markdown-svg-renderer?url=https%3A%2F%2Fgist.github.com%2Fsimonw%2Feba9a4283c9e94cbbb5325902a3921a8"&gt;pelicans against Kimi K3&lt;/a&gt; on those three reasoning levels.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://news.ycombinator.com/item?id=50212065"&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/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"&gt;llm&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/ai-in-china"&gt;ai-in-china&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/moonshot"&gt;moonshot&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/kimi"&gt;kimi&lt;/a&gt;&lt;/p&gt;



</summary><category term="ai"/><category term="generative-ai"/><category term="llms"/><category term="llm"/><category term="llm-pricing"/><category term="pelican-riding-a-bicycle"/><category term="llm-release"/><category term="ai-in-china"/><category term="moonshot"/><category term="kimi"/></entry><entry><title>DE STAAT - FREEDOM (Official Music Video)</title><link href="https://simonwillison.net/2026/Oct/22/de-staat-freedom/" rel="alternate"/><published>2026-10-22T19:42:26+00:00</published><updated>2026-10-22T19:42:26+00:00</updated><id>https://simonwillison.net/2026/Oct/22/de-staat-freedom/</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.youtube.com/watch?v=hKO4pQtIXow"&gt;DE STAAT - FREEDOM (Official Music Video)&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
OK well this is a first for me... at &lt;a href="https://www.youtube.com/watch?v=hKO4pQtIXow&amp;amp;t=44s"&gt;00:44&lt;/a&gt; in this new music video by Dutch alternative rock band &lt;a href="https://en.wikipedia.org/wiki/De_Staat"&gt;De Staat&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;&lt;video
  src="https://static.simonwillison.net/static/2026/freedom-pelican.mp4"
  poster="https://static.simonwillison.net/static/2026/freedom-pelican-poster.jpg"
  preload="none"
  loop="1" controls="1"
  playsinline="1" muted="1"
  width="1280"
  height="720"
  style="display: block; width: 100%; height: auto;"
&gt; &lt;/video&gt;
&lt;/p&gt;
&lt;p&gt;The visual effects are credited to Matties Grooten of &lt;a href="https://fakeitorleaveit.com"&gt;Fake it or Leave it&lt;/a&gt;.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://news.ycombinator.com/item?id=50186129#50193407"&gt;flir on Hacker News&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/music"&gt;music&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/pelican-riding-a-bicycle"&gt;pelican-riding-a-bicycle&lt;/a&gt;&lt;/p&gt;



</summary><category term="music"/><category term="ai"/><category term="generative-ai"/><category term="pelican-riding-a-bicycle"/></entry><entry><title>Donating Agent Skills to the Agentic AI Foundation</title><link href="https://simonwillison.net/2026/Oct/22/donating-agent-skills/" rel="alternate"/><published>2026-10-22T18:09:56+00:00</published><updated>2026-10-22T18:09:56+00:00</updated><id>https://simonwillison.net/2026/Oct/22/donating-agent-skills/</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.anthropic.com/news/donating-agent-skills-to-the-agentic-ai-foundation"&gt;Donating Agent Skills to the Agentic AI Foundation&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
News today from Anthropic:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;We’re committed to keeping Agent Skills open, community-driven, and vendor-neutral. Today, we are donating the standard to the Agentic AI Foundation (AAIF) under the Linux Foundation, &lt;a href="https://www.anthropic.com/news/donating-the-model-context-protocol-and-establishing-of-the-agentic-ai-foundation"&gt;which we co-founded&lt;/a&gt; with Block and OpenAI last year, and to which we donated the Model Context Protocol (MCP).&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I'm pleased to note I called this one &lt;a href="https://simonwillison.net/2025/Dec/19/agent-skills/"&gt;last December&lt;/a&gt;, when Anthropic first declared skills to be an "open standard":&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I wouldn't be surprised to see this end up &lt;a href="https://simonwillison.net/2025/Dec/9/agentic-ai-foundation/"&gt;in the AAIF&lt;/a&gt;, recently the new home of the MCP specification.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Fun side note: since my blog content is available to Claude via the &lt;a href="https://github.com/datasette/datasette-mcp"&gt;datasette-mcp&lt;/a&gt;
plugin I found that post by &lt;a href="https://claude.ai/share/80b341de-590b-4834-bca9-0d9c9a3a0298"&gt;prompting Claude&lt;/a&gt; to "&lt;code&gt;Use simonwillison.net MCP to find if I ever talked about how I want skills to be donated to a standards body&lt;/code&gt;".


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/standards"&gt;standards&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/anthropic"&gt;anthropic&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/model-context-protocol"&gt;model-context-protocol&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/skills"&gt;skills&lt;/a&gt;&lt;/p&gt;



</summary><category term="standards"/><category term="ai"/><category term="generative-ai"/><category term="llms"/><category term="anthropic"/><category term="model-context-protocol"/><category term="skills"/></entry><entry><title>Quoting Armin Ronacher</title><link href="https://simonwillison.net/2026/Oct/22/armin-ronacher/" rel="alternate"/><published>2026-10-22T15:34:13+00:00</published><updated>2026-10-22T15:34:13+00:00</updated><id>https://simonwillison.net/2026/Oct/22/armin-ronacher/</id><summary type="html">
    &lt;blockquote cite="https://twitter.com/mitsuhiko/status/2113207589978636646"&gt;&lt;p&gt;As fun as AI is, we built so much bad software over the last 30 years, and now the universe is punishing us for our sins.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p class="cite"&gt;&amp;mdash; &lt;a href="https://twitter.com/mitsuhiko/status/2113207589978636646"&gt;Armin Ronacher&lt;/a&gt;&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/security"&gt;security&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/armin-ronacher"&gt;armin-ronacher&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-security-research"&gt;ai-security-research&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;&lt;/p&gt;



</summary><category term="security"/><category term="generative-ai"/><category term="armin-ronacher"/><category term="ai"/><category term="ai-security-research"/><category term="llms"/></entry><entry><title>Today's PHP Security Release, and How We're Strengthening PHP Security</title><link href="https://simonwillison.net/2026/Oct/21/php-security-release/" rel="alternate"/><published>2026-10-21T18:41:53+00:00</published><updated>2026-10-21T18:41:53+00:00</updated><id>https://simonwillison.net/2026/Oct/21/php-security-release/</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://thephp.foundation/blog/2026/10/21/todays-php-security-release-and-how-were-strengthening-php-security/"&gt;Today&amp;#x27;s PHP Security Release, and How We&amp;#x27;re Strengthening PHP Security&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
If you're running anything on PHP it's vital you upgrade - today's updates (across the entire PHP 8.x line) address two remote code execution holes, and there have been exploits circulating since last night, thanks to a leak in the coordinated disclosure process.&lt;/p&gt;
&lt;p&gt;This post from the PHP Foundation explain what went so wrong:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;On Tuesday, October 20th, at around 15:00 UTC, the two CVE IDs began circulating on online forums and social media. They came with a wrong release time and a wrong CVSS score of 10.0 (the actual score is 9.2). No technical details leaked. In response, the PHP project brought its pre-announcement forward and &lt;a href="https://www.php.net/archive/2026.php#2026-10-20-1"&gt;published it at 19:30 UTC&lt;/a&gt;. It also moved the release from October 22nd, 14:00 UTC, to October 21st, 14:00 UTC [...]&lt;/p&gt;
&lt;p&gt;As a result of the leak and pre-announcement around 20:00 UTC, Calif, one of the security firms that had reported the issues mistakenly published a video. It showed their proof of concept working against a number of targets and revealed a few additional, though limited, details about the vulnerabilities. Copies of the deleted video started circulating on social media soon after. The video contributed to accelerated development of various PoCs (exploitation proof of concepts), which then increased circulation on October 21st.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href="https://www.wiz.io/blog/php2shell-php-rce"&gt;This article&lt;/a&gt; from the team that discovered the original vulnerability includes a more detailed timeline of the original intended responsible disclosure:&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;August 19, 2026:&lt;/strong&gt; Wiz Research discovers the first PHP vulnerability using Wiz Atlas, Gemini 4 Argon, and GPT-5.6 Sol.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;August 20, 2026:&lt;/strong&gt; Unauthenticated RCE is confirmed against Drupal.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;August 21, 2026:&lt;/strong&gt; Unauthenticated RCE is confirmed against WordPress.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;August 24, 2026:&lt;/strong&gt; Wiz Research reports the vulnerabilities to the PHP security team.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;September 21, 2026:&lt;/strong&gt; PHP acknowledges the reports and begins developing a coordinated fix.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;October 21, 2026:&lt;/strong&gt; Patched PHP releases become available.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;October 21, 2026:&lt;/strong&gt; Public disclosure.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://news.ycombinator.com/item?id=50182987"&gt;Hacker News&lt;/a&gt;&lt;/small&gt;&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/php"&gt;php&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/security"&gt;security&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-security-research"&gt;ai-security-research&lt;/a&gt;&lt;/p&gt;



</summary><category term="open-source"/><category term="php"/><category term="security"/><category term="ai"/><category term="ai-security-research"/></entry></feed>