<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en-us" xmlns="http://www.w3.org/2005/Atom"><title>Simon Willison's Weblog: Notes</title><link href="http://simonwillison.net/" rel="alternate"/><link href="http://simonwillison.net/atom/notes/" rel="self"/><id>http://simonwillison.net/</id><updated>2026-10-03T22:00:31+00:00</updated><author><name>Simon Willison</name></author><entry><title>September sponsors-only newsletter</title><link href="https://simonwillison.net/2026/Oct/3/newsletter/" rel="alternate"/><published>2026-10-03T22:00:31+00:00</published><updated>2026-10-03T22:00:31+00:00</updated><id>https://simonwillison.net/2026/Oct/3/newsletter/</id><summary type="html">&lt;p&gt;I just sent the September 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-09-september.md"&gt;access it here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This month:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;More Fable class models&lt;/li&gt;
&lt;li&gt;A pricing war&lt;/li&gt;
&lt;li&gt;3D graphics, Blender, and pixel art&lt;/li&gt;
&lt;li&gt;LLMs come for mathematics&lt;/li&gt;
&lt;li&gt;So many more accidental cyberattacks&lt;/li&gt;
&lt;li&gt;The vulnapocalypse comes for Datasette&lt;/li&gt;
&lt;li&gt;What I'm using right now&lt;/li&gt;
&lt;li&gt;My software releases this month&lt;/li&gt;
&lt;li&gt;2026 in LLMs (so far)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here's &lt;a href="https://github.com/simonw/monthly-newsletter-archive/blob/main/2026-08-august.md"&gt;a copy of the August newsletter&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>He Built This City</title><link href="https://simonwillison.net/2026/Sep/30/he-built-this-city/" rel="alternate"/><published>2026-09-30T21:54:19+00:00</published><updated>2026-09-30T21:54:19+00:00</updated><id>https://simonwillison.net/2026/Sep/30/he-built-this-city/</id><summary type="html">&lt;p&gt;I visited the Museum of the City of New York today and got to see &lt;a href="https://www.mcny.org/exhibition/he-built-city"&gt;He Built This City: Joe Macken’s Model&lt;/a&gt;, the 50 x27 feet model of the city built over a 21 year period from balsa wood and cardboard.&lt;/p&gt;
&lt;p&gt;It exceeded my already high expectations. The exhibition closes on 12th October so you should absolutely make a priority to see it if you get the chance.&lt;/p&gt;
&lt;p&gt;&lt;video
  src="https://static.simonwillison.net/static/2026-10-01/He-built-this-city-medium.mp4"
  poster="https://static.simonwillison.net/static/2026-10-01/IMG_8545.jpeg"
  preload="none"
  loop controls
  playsinline muted
  width="1280"
  height="720"
  style="display: block; width: 100%; height: auto;"
&gt;&lt;/video&gt;
&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/museums"&gt;museums&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/new-york"&gt;new-york&lt;/a&gt;&lt;/p&gt;

</summary><category term="museums"/><category term="new-york"/></entry><entry><title>Note on 24th September 2026</title><link href="https://simonwillison.net/2026/Sep/24/harder/" rel="alternate"/><published>2026-09-24T23:31:08+00:00</published><updated>2026-09-24T23:31:08+00:00</updated><id>https://simonwillison.net/2026/Sep/24/harder/</id><summary type="html">&lt;p&gt;The more time I spend working with coding agents, the more convinced I am that they make software engineering even harder.&lt;/p&gt;
&lt;p&gt;We can do amazing things with them, but unlocking their full potential requires extraordinary discipline and knowledge.&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/coding-agents"&gt;coding-agents&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="coding-agents"/><category term="ai"/><category term="llms"/></entry><entry><title>Note on 18th September 2026</title><link href="https://simonwillison.net/2026/Sep/18/probably-gonna-eat-you/" rel="alternate"/><published>2026-09-18T19:21:32+00:00</published><updated>2026-09-18T19:21:32+00:00</updated><id>https://simonwillison.net/2026/Sep/18/probably-gonna-eat-you/</id><summary type="html">&lt;p&gt;Being a computer scientist who refuses to find anything about LLMs interesting right now is a bit like being a geneticist who refuses to find anything interesting about the recently opened Jurassic Park.&lt;/p&gt;
&lt;p&gt;Skeptical geneticist: "pfft, it's just frog DNA. And they deliberately let them eat people for the marketing."&lt;/p&gt;

    &lt;p&gt;Tags: &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;/p&gt;

</summary><category term="llms"/><category term="ai"/><category term="generative-ai"/></entry><entry><title>Don't sleep on wrapture</title><link href="https://simonwillison.net/2026/Sep/11/wrapture/" rel="alternate"/><published>2026-09-11T13:51:32+00:00</published><updated>2026-09-11T13:51:32+00:00</updated><id>https://simonwillison.net/2026/Sep/11/wrapture/</id><summary type="html">&lt;p&gt;Graham Dumpleton's new monkey patching package &lt;a href="https://wrapture.readthedocs.io/"&gt;wrapture&lt;/a&gt; is shaping up to be an indispensable tool for Python developers. I'm not sure why I've seen so little buzz about it!&lt;/p&gt;
&lt;p&gt;Graham has been posting new tutorials for it almost daily since &lt;a href="https://simonwillison.net/2026/Aug/31/introducing-wrapture/"&gt;the initial release&lt;/a&gt; on August 31st. Here's everything he's published so far:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://grahamdumpleton.me/posts/2026/08/introducing-wrapture/"&gt;Introducing wrapture&lt;/a&gt; - a new monkey patching library that serves both testing and observability (think New Relic style tracing) at the same time.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://grahamdumpleton.me/posts/2026/09/unit-testing-with-wrapture/"&gt;Unit testing with wrapture&lt;/a&gt; - how to use it for the same kinds of thing as &lt;code&gt;unittest.mock&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://grahamdumpleton.me/posts/2026/09/recording-calls-with-wrapture/"&gt;Recording calls with wrapture&lt;/a&gt;  - recording method calls as timelines and processing and displaying them as trees.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://grahamdumpleton.me/posts/2026/09/phased-behaviour-in-wrapture/"&gt;Phased behaviour in wrapture&lt;/a&gt;  - arranging patched methods to change behavior across multiple calls.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://grahamdumpleton.me/posts/2026/09/beyond-callables-in-wrapture/"&gt;Beyond callables in wrapture&lt;/a&gt; - monkey patching attributes, dictionaries, generators.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://grahamdumpleton.me/posts/2026/09/live-tracing-with-wrapture/"&gt;Live tracing with wrapture&lt;/a&gt;  - tracing a live application to see exactly how it works.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://grahamdumpleton.me/posts/2026/09/zero-code-tracing-with-wrapture/"&gt;Zero-code tracing with wrapture&lt;/a&gt;  - configuring tracing in a separate TOML file without modifying Python code at all.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://grahamdumpleton.me/posts/2026/09/tracing-flask-with-wrapture/"&gt;Tracing Flask with wrapture&lt;/a&gt;  - using the separate &lt;a href="https://github.com/GrahamDumpleton/wrapture-instrumentation"&gt;wrapture-instrumenation&lt;/a&gt; package to instrument a Flask application. That package also provides instrumentation for &lt;code&gt;aiohttp.client&lt;/code&gt;, &lt;code&gt;aiohttp.web&lt;/code&gt;, &lt;code&gt;django&lt;/code&gt;, &lt;code&gt;fastapi&lt;/code&gt;, &lt;code&gt;flask&lt;/code&gt;, &lt;code&gt;grpc&lt;/code&gt;, &lt;code&gt;http.client&lt;/code&gt;, &lt;code&gt;httpx&lt;/code&gt;, &lt;code&gt;jinja2&lt;/code&gt;, &lt;code&gt;requests&lt;/code&gt;, &lt;code&gt;sqlalchemy&lt;/code&gt;, &lt;code&gt;sqlite3&lt;/code&gt;, &lt;code&gt;starlette&lt;/code&gt;, &lt;code&gt;urllib.request&lt;/code&gt;, &lt;code&gt;urllib3&lt;/code&gt;, &lt;code&gt;uvicorn&lt;/code&gt;, &lt;code&gt;werkzeug.serving&lt;/code&gt;, &lt;code&gt;wsgiref.simple_server&lt;/code&gt;, &lt;code&gt;xmlrpc.client&lt;/code&gt;, &lt;code&gt;xmlrpc.server&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://grahamdumpleton.me/posts/2026/09/finding-slow-code-with-wrapture/"&gt;Finding slow code with wrapture&lt;/a&gt; - wrapture's tools for recording timing information, both individually and aggregated across multiple calls.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://grahamdumpleton.me/posts/2026/09/opentelemetry-export-in-wrapture/"&gt;OpenTelemetry export in wrapture&lt;/a&gt; - exporting traces to OpenTelemetry.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Graham also has a &lt;a href="https://github.com/GrahamDumpleton/wrapture-workshops"&gt;set of interactive workshops&lt;/a&gt; for wrapture, implemented as JupyterLab notebooks.&lt;/p&gt;
&lt;p&gt;Wrapture is still alpha software but it's already very usable - especially given you can configure and try it out with a TOML file without modifying any Python code at all.&lt;/p&gt;
&lt;p&gt;This feels like one of those Swiss Army Knife packages that, once mastered, will provide value against all sorts of problems for years to come.&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/graham-dumpleton"&gt;graham-dumpleton&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/open-source"&gt;open-source&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/testing"&gt;testing&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/observability"&gt;observability&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/monkey-patching"&gt;monkey-patching&lt;/a&gt;&lt;/p&gt;

</summary><category term="graham-dumpleton"/><category term="open-source"/><category term="testing"/><category term="python"/><category term="observability"/><category term="monkey-patching"/></entry><entry><title>August newsletter is out</title><link href="https://simonwillison.net/2026/Sep/4/august-newsletter/" rel="alternate"/><published>2026-09-04T05:54:40+00:00</published><updated>2026-09-04T05:54:40+00:00</updated><id>https://simonwillison.net/2026/Sep/4/august-newsletter/</id><summary type="html">&lt;p&gt;The August edition of my &lt;a href="https://github.com/sponsors/simonw/"&gt;sponsors-only monthly newsletter&lt;/a&gt; is out. If you are a sponsor (or if you start a sponsorship now) you can &lt;a href="https://github.com/simonw-private/monthly/blob/main/2026-08-august.md"&gt;access it here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This month:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;We got more details on OpenAl's accidental cyberattacks&lt;/li&gt;
&lt;li&gt;One-shotting Raccoon Heist games with Fable 5 and Sol 5.6&lt;/li&gt;
&lt;li&gt;Claude auto mode&lt;/li&gt;
&lt;li&gt;Understanding ChatGPT Work&lt;/li&gt;
&lt;li&gt;Model releases&lt;/li&gt;
&lt;li&gt;Miscellaneous bits and bobs&lt;/li&gt;
&lt;li&gt;My projects&lt;/li&gt;
&lt;li&gt;What I'm using at the moment&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here's &lt;a href="https://github.com/simonw/monthly-newsletter-archive/blob/main/2026-07-july.md"&gt;a copy of the July newsletter&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>Codex bundles LibreOffice</title><link href="https://simonwillison.net/2026/Sep/1/codex-libreoffice/" rel="alternate"/><published>2026-09-01T19:03:01+00:00</published><updated>2026-09-01T19:03:01+00:00</updated><id>https://simonwillison.net/2026/Sep/1/codex-libreoffice/</id><summary type="html">&lt;p&gt;I was poking around in my &lt;code&gt;~/.cache/&lt;/code&gt; folder using &lt;a href="https://www.omnigroup.com/more"&gt;OmniDiskSweeper&lt;/a&gt; when I spotted something interesting. The OpenAI Codex desktop app (since &lt;a href="https://help.openai.com/en/articles/20001276-moving-to-the-new-chatgpt-desktop-app"&gt;rebranded&lt;/a&gt; to just ChatGPT) has 1.7GB of stuff in there in a folder called &lt;code&gt;codex-primary-runtime&lt;/code&gt;, including a full Python installation, a full Node.js installation, and native binaries for &lt;a href="https://poppler.freedesktop.org"&gt;Poppler&lt;/a&gt;, git, and the &lt;a href="https://en.wikipedia.org/wiki/LibreOffice"&gt;LibreOffice&lt;/a&gt; open source office suite (which forked from OpenOffice.org in 2010):&lt;/p&gt;
&lt;p&gt;&lt;img alt="Screenshot of a macOS disk usage app window in column view, titled &amp;quot;/Users/simon/.cache - 442.1 GB&amp;quot;. First column: 356.8 GB huggingface, 82.5 GB uv, 1.7 GB codex-runtimes (selected), 609.0 MB datasette-sqlite, 298.8 MB rod. Second column: 1.7 GB codex-primary-runtime (selected). Third column: 1.7 GB dependencies (selected), 6.3 MB plugins, 4.1 kB runtime.json. Fourth column: 771.0 MB native (selected), 446.4 MB node, 440.6 MB python, 28.7 kB bin. Fifth column: 429.7 MB libreoffice-headless (selected), 187.9 MB poppler, 148.1 MB git, 4.7 MB libheif, 679.9 kB jxrlib." src="https://static.simonwillison.net/static/2026/codex-primay-runtime.webp" /&gt;&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;~/.cache/codex-runtimes/codex-primary-runtime/plugins/openai-primary-runtime/plugins/documents&lt;/code&gt; folder includes skills which tell Codex how to find and use those binaries.&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/codex"&gt;codex&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/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/openoffice"&gt;openoffice&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/open-source"&gt;open-source&lt;/a&gt;&lt;/p&gt;

</summary><category term="codex"/><category term="generative-ai"/><category term="openai"/><category term="ai"/><category term="llms"/><category term="openoffice"/><category term="open-source"/></entry><entry><title>More than just code review</title><link href="https://simonwillison.net/2026/Aug/22/more-than-just-code-review/" rel="alternate"/><published>2026-08-22T15:56:54+00:00</published><updated>2026-08-22T15:56:54+00:00</updated><id>https://simonwillison.net/2026/Aug/22/more-than-just-code-review/</id><summary type="html">&lt;p&gt;The key skill required to make productive use of coding agents is being able to confidently instruct them on how to make changes and then confidently verify that those changes have been applied in the correct way.&lt;/p&gt;
&lt;p&gt;Sometimes this involves reviewing every line of code they have written, but there are other ways to achieve that goal. Eyeballing every line of code has never been the most effective way to validate a change to a piece of software.&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/code-review"&gt;code-review&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/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="code-review"/><category term="coding-agents"/><category term="generative-ai"/><category term="agentic-engineering"/><category term="ai"/><category term="llms"/></entry><entry><title>Markdown SVG upgrades</title><link href="https://simonwillison.net/2026/Aug/16/markdown-svg-upgrades/" rel="alternate"/><published>2026-08-16T23:59:37+00:00</published><updated>2026-08-16T23:59:37+00:00</updated><id>https://simonwillison.net/2026/Aug/16/markdown-svg-upgrades/</id><summary type="html">&lt;p&gt;I started building my &lt;a href="https://tools.simonwillison.net/markdown-svg-renderer"&gt;markdown-svg-renderer&lt;/a&gt; tool &lt;a href="https://tools.simonwillison.net/colophon#markdown-svg-renderer.html"&gt;in May&lt;/a&gt;, but I've since added enough features to it that it's worth talking about here again.&lt;/p&gt;
&lt;p&gt;It's evolved into my ideal tool for sharing Markdown transcripts that include SVG documents. Given my &lt;a href="https://simonwillison.net/tags/pelican-riding-a-bicycle/"&gt;proclivity for drawing pelicans riding bicycles&lt;/a&gt; this is a problem that I needed to solve!&lt;/p&gt;
&lt;p&gt;The tool is very simple. Navigate to &lt;a href="https://tools.simonwillison.net/markdown-svg-renderer"&gt;markdown-svg-renderer&lt;/a&gt; in your browser and paste in some Markdown to see it rendered... or save that Markdown to a CORS-friendly URL or a GitHub Gist and paste in a URL to that document.&lt;/p&gt;
&lt;p&gt;The URL option will give you a bookmarkable page, for example &lt;a style="overflow-wrap: anywhere;" href="https://tools.simonwillison.net/markdown-svg-renderer#url=https%3A%2F%2Fgist.github.com%2Fsimonw%2F6f9e48293be5c916652d29f0dc0b0657"&gt;https://tools.simonwillison.net/markdown-svg-renderer#url=https%3A%2F%2Fgist.github.com%2Fsimonw%2F6f9e48293be5c916652d29f0dc0b0657&lt;/a&gt; - which bakes in the URL to &lt;a href="https://gist.github.com/simonw/6f9e48293be5c916652d29f0dc0b0657"&gt;this Gist&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you visit &lt;a href="https://gist.github.com/simonw/6f9e48293be5c916652d29f0dc0b0657"&gt;the Gist&lt;/a&gt; you'll see raw SVG:&lt;/p&gt;
&lt;p&gt;&lt;img alt="beautiful-circle.md. Here's a self-contained SVG — a &amp;quot;compass study&amp;quot; of a circle with construction lines, a slowly rotating tick ring, and an orbiting accent dot: a block of SVG code" src="https://static.simonwillison.net/static/2026/raw-svg.webp" /&gt;&lt;/p&gt;
&lt;p&gt;In the rendered tool that &lt;a href="https://tools.simonwillison.net/markdown-svg-renderer#url=https%3A%2F%2Fgist.github.com%2Fsimonw%2F6f9e48293be5c916652d29f0dc0b0657"&gt;looks like this&lt;/a&gt; instead:&lt;/p&gt;
&lt;p&gt;&lt;img alt="The same text, but now the code block has been replaced by a tabbed panel. The selected tab reads &amp;quot;Rendered&amp;quot; and shows the rendered PNG. The other tabs are PNG, JPEG, MP4, and Code" src="https://static.simonwillison.net/static/2026/rendered-svg.webp" /&gt;&lt;/p&gt;
&lt;p&gt;As you can see, that SVG block in the Markdown has been transformed into a rendered SVG (in this case animated) plus several tabs.&lt;/p&gt;
&lt;p&gt;The tabs are the really fun bit. The PNG and JPEG tabs render that SVG to those image formats in the browser and lets you copy or download them - useful for sharing on platforms that don't support SVG directly.&lt;/p&gt;
&lt;p&gt;The MP4 tab is &lt;a href="https://github.com/simonw/tools/commit/73e0327f6df9887ba2a9f9f16a2d06a45451d248"&gt;new today&lt;/a&gt; - it examines the SVG to see if it contains any animations, attempts to guess how long the looped video should be, then renders a whole bunch of frames of the animation and loads 30+MB of &lt;a href="https://github.com/ffmpegwasm/ffmpeg.wasm"&gt;ffmpeg.wasm&lt;/a&gt; so it can compile those frames into an MP4 video using the full power of FFMPEG compiled to WebAssembly and running in the browser.&lt;/p&gt;
&lt;p&gt;Being able to turn an animated SVG into a MP4 again makes it easy to share on platforms that can't support SVG animation natively. It's a neat trick!&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/svg"&gt;svg&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/markdown"&gt;markdown&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/tools"&gt;tools&lt;/a&gt;&lt;/p&gt;

</summary><category term="svg"/><category term="markdown"/><category term="tools"/></entry><entry><title>Open letters about AI development</title><link href="https://simonwillison.net/2026/Aug/2/open-letters/" rel="alternate"/><published>2026-08-02T04:16:52+00:00</published><updated>2026-08-02T04:16:52+00:00</updated><id>https://simonwillison.net/2026/Aug/2/open-letters/</id><summary type="html">&lt;h4&gt;Open letters about AI development&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;I wrote this summary of the past few weeks of open letters as a section of &lt;a href="https://simonwillison.net/2026/Aug/2/july-newsletter/"&gt;my sponsors-only newsletter&lt;/a&gt; but I've decided to share it here as well.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.microsoft.com/en-us/corporate-responsibility/topics/open-weight/"&gt;Open Weights and American AI Leadership&lt;/a&gt;&lt;/strong&gt; was shepherded by Microsoft, dated July 24th, and signed by 235 AI-adjacent companies including NVIDIA (see Jensen's &lt;a href="https://twitter.com/jensenhuang/status/2080643682408321103"&gt;first ever tweet&lt;/a&gt;), Amazon, Y Combinator, The Linux Foundation, and (a later signer) OpenAI.&lt;/p&gt;
&lt;p&gt;It's clearly an argument designed to counter &lt;a href="https://www.axios.com/2026/07/20/ai-us-china-open-source-kimi"&gt;any instincts&lt;/a&gt; by the current US government to ban or limit open weight models over "safety" concerns - a reasonable consideration given &lt;a href="https://simonwillison.net/2026/Jun/13/us-government-directive-to-suspend-access/"&gt;what happened to Claude Fable 5&lt;/a&gt;!&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Relying solely on closed models is not inherently safe: they can be breached, misused, or fail in ways that outsiders cannot detect. And concentrating advanced AI capabilities behind a small number of closed models compounds that risk. It results in a small number of single points of failure, weakens competition, and leaves critical technology in the hands of a few providers. Open weight models, on the other hand, allow a broad community of researchers and developers to examine their behavior, identify vulnerabilities, develop safeguards, and improve them over time.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The one surprising note in the letter is that it comes out in support of distillation, where models train on output from other models:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;In shaping this ecosystem, policymakers should be careful not to conflate legitimate model-development techniques with misappropriation. Distillation, or the practice of using one model’s outputs to help train or improve another, is a widely used technique for model improvement, evaluation, and validation. It reflects a long tradition of learning from, building upon, and improving existing technologies, a tradition that has helped drive innovation since the rise of the open-source software movement.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Notably absent from the signatures: Anthropic, who published their own response &lt;a href="https://www.anthropic.com/news/position-open-weights-models"&gt;Our position on open-weights models&lt;/a&gt; three days later. CEO Dario Amodei doubled down on the risk of authoritarian governments building "AI models that are more powerful than those built by the US", and models being "misused to carry out cyberattacks or biological attacks", and called for "a crack down on industrial-scale &lt;a href="https://www.anthropic.com/news/detecting-and-preventing-distillation-attacks"&gt;distillation operations&lt;/a&gt;", while also stating that "Anthropic has never advocated for a ban on open-weights models".&lt;/p&gt;
&lt;p&gt;Then on July 28th &lt;a href="https://www.pacingthefrontier.com"&gt;Pacing the Frontier&lt;/a&gt; was published, featuring signatures from "1,324 employees of frontier AI companies" - with names like Jakub Pachocki (Chief Scientist, OpenAI), Ilya Sutskever (Safe Superintelligence Inc, previously OpenAI), Dario Amodei (Anthropic), Jack Clark (Anthropic) and more. Their core message:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;We request that the U.S. government support an international effort to develop the technical and governance tools needed to deliberately pace the frontier of automated AI development.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Their concern is intense competitive pressure combined with accelerated AI progress caused by automated AI research - and given that Anthropic &lt;a href="https://www.anthropic.com/institute/recursive-self-improvement"&gt;produce 80% of their code with Claude Code&lt;/a&gt;, OpenAI had Sol &lt;a href="https://openai.com/index/gpt-5-6-frontier-intelligence-efficiency/"&gt;reduce their end-to-end serving costs by 20%&lt;/a&gt;, and Kimi K3 &lt;a href="https://www.kimi.com/blog/kimi-k3#chip-design"&gt;designed a chip to serve a nano model built on its own architecture&lt;/a&gt;, you can see why people are taking that risk more seriously right now.&lt;/p&gt;

    &lt;p&gt;Tags: &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/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/ai-ethics"&gt;ai-ethics&lt;/a&gt;&lt;/p&gt;

</summary><category term="anthropic"/><category term="generative-ai"/><category term="openai"/><category term="ai"/><category term="llms"/><category term="ai-ethics"/></entry><entry><title>July 2026 newsletter</title><link href="https://simonwillison.net/2026/Aug/2/july-newsletter/" rel="alternate"/><published>2026-08-02T04:12:41+00:00</published><updated>2026-08-02T04:12:41+00:00</updated><id>https://simonwillison.net/2026/Aug/2/july-newsletter/</id><summary type="html">&lt;p&gt;The July edition of my &lt;a href="https://github.com/sponsors/simonw/"&gt;sponsors-only monthly newsletter&lt;/a&gt; is out. If you are a sponsor (or if you start a sponsorship now) you can &lt;a href="https://github.com/simonw-private/monthly/blob/main/2026-07-july.md"&gt;access it here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This month:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Accidental cyberattacks by OpenAl and Anthropic models under test&lt;/li&gt;
&lt;li&gt;GPT-5.6 Sol, Terra, and Luna&lt;/li&gt;
&lt;li&gt;Claude Opus 5&lt;/li&gt;
&lt;li&gt;Kimi K3 and DeepSeek-V4-Flash-0731&lt;/li&gt;
&lt;li&gt;Open letters about Al development&lt;/li&gt;
&lt;li&gt;A fireside chat and a podcast&lt;/li&gt;
&lt;li&gt;Reigniting my interest in MCP&lt;/li&gt;
&lt;li&gt;Other model releases&lt;/li&gt;
&lt;li&gt;My projects&lt;/li&gt;
&lt;li&gt;What I'm using at the moment&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here's &lt;a href="https://github.com/simonw/monthly-newsletter-archive/blob/main/2026-06-june.md"&gt;a copy of the June newsletter&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>Orchestrions</title><link href="https://simonwillison.net/2026/Jul/22/all-the-orchestrions/" rel="alternate"/><published>2026-07-22T14:48:52+00:00</published><updated>2026-07-22T14:48:52+00:00</updated><id>https://simonwillison.net/2026/Jul/22/all-the-orchestrions/</id><summary type="html">&lt;p&gt;San Francisco tip: it only costs around $15 ($10 in quarters plus a $5 bill for the self-playing violin) to activate every single Orchestrion in &lt;a href="https://en.wikipedia.org/wiki/Musée_Mécanique"&gt;Musée Mécanique&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;And because most people are bad at allocating their funds you may well be the ONLY person activating the Orchestrions, which means you get to craft the soundscape for the entire museum.&lt;/p&gt;

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

</summary><category term="san-francisco"/></entry><entry><title>Reverse-engineering is cheap now</title><link href="https://simonwillison.net/2026/Jul/20/cheap-reverse-engineering/" rel="alternate"/><published>2026-07-20T19:24:05+00:00</published><updated>2026-07-20T19:24:05+00:00</updated><id>https://simonwillison.net/2026/Jul/20/cheap-reverse-engineering/</id><summary type="html">&lt;p&gt;I keep hearing anecdotes from people who used coding agents to reverse-engineer and automate devices in their homes.&lt;/p&gt;
&lt;p&gt;I think this is an interesting illustration of the impact of the reduced cost of writing code.&lt;/p&gt;
&lt;p&gt;Prior to agents, it was entirely possible to reverse-engineer home devices. The problem was the ROI - was it really worth all of that effort? More importantly, any experienced programmer knows that undocumented, unstable APIs like that may well change or break in the future. Is that initial work worth the effort if you're committing yourself to a frustrating cycle of maintenance in the future?&lt;/p&gt;
&lt;p&gt;Coding agents change that equation entirely. The effort to get a simple automation working has dropped, as has the cost of trying and failing to get it to work. Since the code is so cheap, the idea of having to maintain it in the future - or throw it away and start again - carries way less psychological baggage.&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/reverse-engineering"&gt;reverse-engineering&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/ai-assisted-programming"&gt;ai-assisted-programming&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;/p&gt;

</summary><category term="reverse-engineering"/><category term="coding-agents"/><category term="ai-assisted-programming"/><category term="generative-ai"/><category term="ai"/><category term="llms"/></entry><entry><title>Claude Code uses Bun written in Rust now</title><link href="https://simonwillison.net/2026/Jul/19/claude-code-in-bun-in-rust/" rel="alternate"/><published>2026-07-19T03:54:09+00:00</published><updated>2026-07-19T03:54:09+00:00</updated><id>https://simonwillison.net/2026/Jul/19/claude-code-in-bun-in-rust/</id><summary type="html">&lt;p&gt;In &lt;a href="https://bun.com/blog/bun-in-rust"&gt;Rewriting Bun in Rust&lt;/a&gt; Jarred Sumner made the following claim:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Claude Code v2.1.181 (released June 17th) and later use the Rust port of Bun. Startup got 10% faster on Linux but otherwise, barely anyone noticed. Boring is good.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I decided to have a poke at my own Claude Code installation to see if I could find evidence that it was using Bun written in Rust.&lt;/p&gt;
&lt;p&gt;I found these two commands convincing:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;strings ~/.local/bin/claude | grep -m1 'Bun v1'
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;For me this outputs &lt;code&gt;Bun v1.4.0 (macOS arm64)&lt;/code&gt;. The most recent release of &lt;a href="https://github.com/oven-sh/bun/releases"&gt;Bun on GitHub&lt;/a&gt; is currently &lt;a href="https://github.com/oven-sh/bun/releases/tag/bun-v1.3.14"&gt;v1.3.14&lt;/a&gt; from May 12th, so that v1.4.0 version number in Claude supports them shipping a preview of a not-yet-released Bun version.&lt;/p&gt;
&lt;p&gt;(&lt;strong&gt;Update&lt;/strong&gt;: The Rust version &lt;em&gt;has&lt;/em&gt; been released as &lt;a href="https://bun.com/docs/installation#canary-builds"&gt;Bun canary&lt;/a&gt; - running &lt;code&gt;bun upgrade --canary&lt;/code&gt; will install &lt;a href="https://github.com/oven-sh/bun/releases/tag/canary"&gt;this release&lt;/a&gt;.)&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;strings ~/.local/bin/claude | grep -Eo 'src/[[:alnum:]_./-]+\.rs'
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This outputs a list of &lt;a href="https://gist.github.com/simonw/c92fb0f67b114ac26e3b95a09ddccfdc"&gt;563 filenames&lt;/a&gt;, starting with these:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;src/runtime/bake/dev_server/mod.rs
src/runtime/bake/production.rs
src/bundler/bundle_v2.rs
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;It looks like Bun in Rust is indeed being run in production across millions of different devices. Like Jarred said, "Boring is good".&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update&lt;/strong&gt;: Here's a neat trick &lt;a href="https://twitter.com/ajanraj25/status/2078825794701242697"&gt;from Ajan Raj&lt;/a&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cat &amp;gt; /tmp/bun-version.ts &amp;lt;&amp;lt;'EOF'
console.log("embedded bun:", Bun.version);
process.exit(0);
EOF
BUN_OPTIONS="--preload=/tmp/bun-version.ts" claude --version
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This outputs &lt;code&gt;1.4.0&lt;/code&gt; for me.&lt;/p&gt;
&lt;p&gt;Here's &lt;a href="https://github.com/oven-sh/bun/commit/b18bf6d1d0a92238f240bfd125f0e3b3461b9243#diff-7ae45ad102eab3b6d7e7896acd08c427a9b25b346470d7bc6507b6481575d519"&gt;the commit from May 17th&lt;/a&gt; that updated the version in &lt;code&gt;package.json&lt;/code&gt; to 1.4.0. That version hasn't been changed since then, but also hasn't yet made it into a tagged release outside of &lt;code&gt;canary&lt;/code&gt;.&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/bun"&gt;bun&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/rust"&gt;rust&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/anthropic"&gt;anthropic&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/jarred-sumner"&gt;jarred-sumner&lt;/a&gt;&lt;/p&gt;

</summary><category term="bun"/><category term="rust"/><category term="anthropic"/><category term="claude-code"/><category term="jarred-sumner"/></entry><entry><title>Spot birds not golf</title><link href="https://simonwillison.net/2026/Jul/17/spot-birds-not-golf/" rel="alternate"/><published>2026-07-17T02:58:07+00:00</published><updated>2026-07-17T02:58:07+00:00</updated><id>https://simonwillison.net/2026/Jul/17/spot-birds-not-golf/</id><summary type="html">&lt;p&gt;Suggestion for hyperscalers feeling pressure over data center water use:&lt;/p&gt;
&lt;p&gt;Buy up a few exclusive country clubs, convert the golf courses into public parks, pay for guides and binoculars to get the previous members into birdwatching - help them embrace a more sustainable hobby!&lt;/p&gt;
&lt;p&gt;Google &lt;a href="https://sustainability.google/reports/google-2026-environmental-report/"&gt;used 10.9 billion gallons in 2025&lt;/a&gt;, so about 30 million gallons per day.&lt;/p&gt;
&lt;p&gt;The Coachella Valley has &lt;a href="https://www.cvwd.org/167/Water-Conservation"&gt;120 golf courses each using ~800 acre-feet per year&lt;/a&gt;,  which is ~750,000 gallons per day.&lt;/p&gt;
&lt;p&gt;So Google buying up 40 of those courses (1/3) should do the trick.&lt;/p&gt;

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

</summary><category term="ai-energy-usage"/><category term="ai"/></entry></feed>