<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en-us" xmlns="http://www.w3.org/2005/Atom"><title>Simon Willison's Weblog</title><link href="http://simonwillison.net/" rel="alternate"/><link href="http://simonwillison.net/atom/everything/" rel="self"/><id>http://simonwillison.net/</id><updated>2026-05-29T03:32:02+00:00</updated><author><name>Simon Willison</name></author><entry><title>datasette 1.0a31</title><link href="https://simonwillison.net/2026/May/29/datasette/#atom-everything" rel="alternate"/><published>2026-05-29T03:32:02+00:00</published><updated>2026-05-29T03:32:02+00:00</updated><id>https://simonwillison.net/2026/May/29/datasette/#atom-everything</id><summary type="html">
    
        &lt;p&gt;&lt;strong&gt;Release:&lt;/strong&gt; &lt;a href="https://github.com/simonw/datasette/releases/tag/1.0a31"&gt;datasette 1.0a31&lt;/a&gt;&lt;/p&gt;
        &lt;p&gt;Another significant alpha release, with two new headline features.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Datasette now offers users with the necessary permissions the ability to both &lt;strong&gt;execute write queries&lt;/strong&gt; against their database and to &lt;strong&gt;save stored queries&lt;/strong&gt; (renamed from "canned queries") both privately and for use by other members of their Datasette instance.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;There's more detail in &lt;a href="https://datasette.io/blog/2026/sql-write-queries/"&gt;SQL write queries and stored queries in Datasette 1.0a31&lt;/a&gt; on the Datasette blog, which now has &lt;a href="https://datasette.io/blog/"&gt;three posts introducing new features&lt;/a&gt; since the blog launched two weeks ago.&lt;/p&gt;
&lt;p&gt;Here's an animated demo from &lt;a href="https://datasette.io/blog/2026/sql-write-queries/"&gt;the blog post&lt;/a&gt; showing how the new execute query interface lets people get started with templated insert/update/delete queries from tables they have permission to edit:&lt;/p&gt;
&lt;p&gt;&lt;img alt="The user starts on the data database page, selects actions and &amp;quot;Execute write SQL&amp;quot;, then selects the insert document template on the next page and executes it with a title of &amp;quot;My document!&amp;quot;. Also demonstrates that a create table statement cannot be executed because the user does not have create-table permission." src="https://datasette.io/static/blog/2026/sql-write-ui.gif" /&gt;&lt;/p&gt;
    
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/projects"&gt;projects&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/sql"&gt;sql&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/sqlite"&gt;sqlite&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/datasette"&gt;datasette&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/annotated-release-notes"&gt;annotated-release-notes&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="projects"/><category term="sql"/><category term="sqlite"/><category term="datasette"/><category term="annotated-release-notes"/></entry><entry><title>Anthropic's run-rate revenue hits $47 billion</title><link href="https://simonwillison.net/2026/May/29/anthropic/#atom-everything" rel="alternate"/><published>2026-05-29T01:23:08+00:00</published><updated>2026-05-29T01:23:08+00:00</updated><id>https://simonwillison.net/2026/May/29/anthropic/#atom-everything</id><summary type="html">
    &lt;p&gt;The most interesting thing about &lt;a href="https://www.anthropic.com/news/series-h"&gt;Anthropic's $65B Series H announcement&lt;/a&gt; is this line (emphasis mine):&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Since our Series G in February, adoption has continued to grow across global enterprise customers, and our run-rate revenue crossed &lt;strong&gt;$47 billion&lt;/strong&gt; earlier this month.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Anthropic have made a bit of a habit of sharing their "run-rate revenue" in this kind of announcement, which is an annualized projection of their current revenue - typically calculated by taking the most recent month and multiplying by 12.&lt;/p&gt;
&lt;p&gt;Earlier this year:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Apr 6, 2026 in &lt;a href="https://www.anthropic.com/news/google-broadcom-partnership-compute"&gt;Anthropic expands partnership with Google and Broadcom&lt;/a&gt;: "Our run-rate revenue has now surpassed &lt;strong&gt;$30 billion&lt;/strong&gt;—up from approximately &lt;strong&gt;$9 billion&lt;/strong&gt; at the end of 2025."&lt;/li&gt;
&lt;li&gt;Feb 12, 2026 in &lt;a href="https://www.anthropic.com/news/anthropic-raises-30-billion-series-g-funding-380-billion-post-money-valuation"&gt;Anthropic raises $30 billion in Series G&lt;/a&gt;: "Today, our run-rate revenue is &lt;strong&gt;$14 billion&lt;/strong&gt;, with this figure growing over 10x annually in each of those past three years."&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I had &lt;a href="https://claude.ai/share/f52e82bd-7e09-49a5-b658-0b9999ce5a45"&gt;Claude Opus 4.8 make me&lt;/a&gt; this chart using &lt;a href="https://matplotlib.org/"&gt;Matplotlib&lt;/a&gt; (Claude: "a data line chart is more straightforward matplotlib work—not really a design piece"):&lt;/p&gt;
&lt;p&gt;&lt;img alt="Line chart titled &amp;quot;Run-rate revenue&amp;quot; with y-axis &amp;quot;Run-rate revenue ($bn)&amp;quot; from $0bn to $50bn, showing four data points rising sharply: Dec 31 2025 $9bn, Feb 12 2026 $14bn, Apr 1 2026 $30bn, May 7 2026 $47bn." src="https://static.simonwillison.net/static/2026/anthropic-run-rate.png" /&gt;&lt;/p&gt;
&lt;p&gt;Back in April &lt;a href="https://www.axios.com/2026/04/13/anthropic-revenue-growth-ai"&gt;Axios CEO Jim VandeHei wrote&lt;/a&gt; that he could not find "any company — in any industry, in any era — that has scaled organic revenue this quickly at this level as Anthropic" - and that was when they were at a paltry $30 billion.&lt;/p&gt;
&lt;p&gt;(Also &lt;a href="https://www.axios.com/2026/05/28/ai-spending-roi-enterprise-costs"&gt;in Axios today&lt;/a&gt; is an anonymously sourced note that "An AI consultant tells Axios one of their clients recently spent half a billion dollars in a single month after failing to put usage limits on Claude licenses for employees" - times that by 12 and you get an extra $6 billion in annualized run-rate!)&lt;/p&gt;
&lt;p&gt;Ed Zitron was &lt;a href="https://www.wheresyoured.at/anthropics-profitability-swindle/"&gt;extremely skeptical of that $30 billion number&lt;/a&gt; - I wonder if his skepticism will update for the new $47 billion figure.&lt;/p&gt;
&lt;p&gt;I've seen a few people dismiss this as untrustworthy, because the numbers come from Anthropic. That doesn't hold up: these numbers were included in announcements of their fundraises, and lying to investors who just put in $65 billion would be securities fraud. They're even less likely to lie given that the real numbers will no doubt come out in their S-1 when they file for their IPO.&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/ai"&gt;ai&lt;/a&gt;&lt;/p&gt;



</summary><category term="anthropic"/><category term="ai"/></entry><entry><title>Claude Opus 4.8: "a modest but tangible improvement"</title><link href="https://simonwillison.net/2026/May/28/claude-opus-4-8/#atom-everything" rel="alternate"/><published>2026-05-28T23:59:50+00:00</published><updated>2026-05-28T23:59:50+00:00</updated><id>https://simonwillison.net/2026/May/28/claude-opus-4-8/#atom-everything</id><summary type="html">
    &lt;p&gt;Anthropic shipped &lt;a href="https://www.anthropic.com/news/claude-opus-4-8"&gt;Claude Opus 4.8&lt;/a&gt; today. My favourite thing about it is this note in the release announcement:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Users will find Opus 4.8 to be a modest but tangible improvement on its predecessor. There’s still more to be done: we’re working on developing and releasing models that provide many of the same capabilities as Opus at a lower cost.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It's so refreshing to see an AI lab honestly describe a release as a minor incremental improvement over the previous model!&lt;/p&gt;
&lt;p&gt;Honesty seems to be a theme. Here's my other favorite note from that announcement:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;One of the most prominent improvements in Opus 4.8 is its &lt;em&gt;honesty&lt;/em&gt;. We train all our models to be honest---for instance, to avoid making claims that they can't support. But a general problem with AI models is that they sometimes jump to conclusions, confidently claiming to have made progress in their work despite the evidence being thin. Early testers report that Opus 4.8 is more likely to flag uncertainties about its work and less likely to make unsupported claims. This is borne out in &lt;a href="https://www.anthropic.com/claude-opus-4-8-system-card"&gt;our evaluations&lt;/a&gt;, which show that Opus 4.8 is around four times less likely than its predecessor to allow flaws in code it has written to pass unremarked.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;That linked system card includes the following:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Claude Opus 4.8 had the lowest incorrect-rate of the six models on every benchmark—the most direct measure of factual hallucination. It achieved this mainly by abstaining on questions about which it was uncertain rather than by answering more questions correctly.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4 id="model-characteristics"&gt;Model characteristics&lt;/h4&gt;
&lt;p&gt;Not much has changed since 4.7.&lt;/p&gt;
&lt;p&gt;It's priced the same as Opus 4.5/4.6/4.7 - $5/million input and $25 per million output. "Fast mode" is twice that price, which is a significant reduction from their previous models - fast mode on 4.6/4.7 remains at $30/$150. Note that &lt;a href="https://platform.claude.com/docs/en/build-with-claude/fast-mode"&gt;fast mode&lt;/a&gt; is only available to organizations that are part of the research preview, "Contact your account manager to request access".&lt;/p&gt;
&lt;p&gt;Both the reliable knowledge cutoff and the training data cutoff are January 2026, the same as for 4.7.&lt;/p&gt;
&lt;p&gt;The context window is still 1,000,000 tokens, and the max output is 128,000 tokens.&lt;/p&gt;
&lt;p&gt;The &lt;a href="https://platform.claude.com/docs/en/about-claude/models/whats-new-claude-4-8"&gt;What's new in Claude Opus 4.8&lt;/a&gt; document has some of the more interesting details. These caught my eye:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Mid-conversation system messages&lt;/strong&gt;. Claude Opus 4.8 accepts &lt;code&gt;role: "system"&lt;/code&gt; messages immediately after a user turn in the &lt;code&gt;messages&lt;/code&gt; array (subject to &lt;a href="https://platform.claude.com/docs/en/build-with-claude/mid-conversation-system-messages#limitations"&gt;placement rules&lt;/a&gt;). This lets you append updated instructions later in a long-running conversation without restating the full system prompt, which preserves &lt;a href="https://platform.claude.com/docs/en/build-with-claude/prompt-caching"&gt;prompt cache&lt;/a&gt; hits on the earlier turns and reduces input cost on agentic loops.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;See also &lt;a href="https://github.com/anthropics/anthropic-sdk-python/commit/2b826760101664ef89db42132932f53ba97c894d#diff-a947c9c02eab58e8ddbe799a11832d533836d242e07c7251997f8543f0981f2f"&gt;this update&lt;/a&gt; to the Anthropic Python SDK. Being able to steer the system prompt mid-conversation sounds really powerful. I was worried this would be incompatible with the abstraction provided by my own &lt;a href="https://llm.datasette.io/en/stable/python-api.html#system-prompts"&gt;LLM library&lt;/a&gt;, which expects a single system prompt per conversation... but it turns out my recent &lt;a href="https://simonwillison.net/2026/Apr/29/llm/"&gt;redesign&lt;/a&gt; should handle that &lt;a href="https://github.com/simonw/llm-anthropic/issues/73"&gt;just fine&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Lower prompt cache minimum&lt;/strong&gt;. The minimum cacheable prompt length on Claude Opus 4.8 is 1,024 tokens, lower than on Claude Opus 4.7.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I checked and 4.7's minimum &lt;a href="https://platform.claude.com/docs/en/build-with-claude/prompt-caching#cache-limitations"&gt;was 4,096&lt;/a&gt;.&lt;/p&gt;
&lt;h4 id="and-some-pelicans"&gt;And some pelicans&lt;/h4&gt;
&lt;p&gt;Here are &lt;a href="https://tools.simonwillison.net/markdown-svg-renderer#url=https%3A%2F%2Fgist.github.com%2Fsimonw%2Ffea4f7546626d627862dc241a4e3a86a"&gt;pelicans riding bicycles&lt;/a&gt; for all five thinking levels, &lt;code&gt;low&lt;/code&gt;, &lt;code&gt;medium&lt;/code&gt;, &lt;code&gt;high&lt;/code&gt;, &lt;code&gt;xhigh&lt;/code&gt;, and &lt;code&gt;max&lt;/code&gt;:&lt;/p&gt;

&lt;div style="display: grid; grid-template-columns: repeat(6, 1fr); gap: 1rem; max-width: 900px; margin: 0 auto;"&gt;
    &lt;figure style="grid-column: span 2; margin: 0; text-align: center;"&gt;
        &lt;img src="https://static.simonwillison.net/static/2026/claude-opus-4.8-low.png" alt="Flat-style cartoon illustration of a white duck with an orange beak and legs riding a black bicycle, its feet on the pedals, against a blue sky and green grass background." style="width: 100%; height: auto; border: 1px solid #ccc;" /&gt;
        &lt;figcaption style="margin-top: 0.5rem; font-family: system-ui, sans-serif; font-weight: bold;"&gt;
            &lt;a href="https://gist.github.com/simonw/fea4f7546626d627862dc241a4e3a86a#response"&gt;low&lt;/a&gt;
        &lt;/figcaption&gt;
    &lt;/figure&gt;
    &lt;figure style="grid-column: span 2; margin: 0; text-align: center;"&gt;
        &lt;img src="https://static.simonwillison.net/static/2026/claude-opus-4.8-medium.png" alt="Flat-style illustration of a white egret or heron with an orange beak and legs riding a black bicycle, against a blue sky and green grass background." style="width: 100%; height: auto; border: 1px solid #ccc;" /&gt;
        &lt;figcaption style="margin-top: 0.5rem; font-family: system-ui, sans-serif; font-weight: bold;"&gt;
            &lt;a href="https://gist.github.com/simonw/fea4f7546626d627862dc241a4e3a86a#response-1"&gt;medium&lt;/a&gt;
        &lt;/figcaption&gt;
    &lt;/figure&gt;
    &lt;figure style="grid-column: span 2; margin: 0; text-align: center;"&gt;
        &lt;img src="https://static.simonwillison.net/static/2026/claude-opus-4.8-high.png" alt="Cartoon illustration of a white duck with an orange beak riding a black bicycle, against a light blue sky with a pale yellow sun in the upper left and a green ground line at the bottom." style="width: 100%; height: auto; border: 1px solid #ccc;" /&gt;
        &lt;figcaption style="margin-top: 0.5rem; font-family: system-ui, sans-serif; font-weight: bold;"&gt;
            &lt;a href="https://gist.github.com/simonw/fea4f7546626d627862dc241a4e3a86a#response-2"&gt;high&lt;/a&gt;
        &lt;/figcaption&gt;
    &lt;/figure&gt;
    &lt;figure style="grid-column: span 3; margin: 0; text-align: center;"&gt;
        &lt;img src="https://static.simonwillison.net/static/2026/claude-opus-4.8-xhigh.png" alt="Cartoon illustration of a white pelican with an orange beak riding a black bicycle, its orange legs extending down to the pedals, against a blue sky with a yellow sun and green ground." style="width: 100%; height: auto; border: 1px solid #ccc;" /&gt;
        &lt;figcaption style="margin-top: 0.5rem; font-family: system-ui, sans-serif; font-weight: bold;"&gt;
            &lt;a href="https://gist.github.com/simonw/fea4f7546626d627862dc241a4e3a86a#response-3"&gt;xhigh&lt;/a&gt;
        &lt;/figcaption&gt;
    &lt;/figure&gt;
    &lt;figure style="grid-column: span 3; margin: 0; text-align: center;"&gt;
        &lt;img src="https://static.simonwillison.net/static/2026/claude-opus-4.8-max.png" alt="Cartoon illustration of a white pelican with an orange beak riding a red bicycle on green grass, against a light blue sky with a fluffy white cloud and a yellow sun." style="width: 100%; height: auto; border: 1px solid #ccc;" /&gt;
        &lt;figcaption style="margin-top: 0.5rem; font-family: system-ui, sans-serif; font-weight: bold;"&gt;&lt;a href="https://gist.github.com/simonw/fea4f7546626d627862dc241a4e3a86a#response-4"&gt;max&lt;/a&gt;&lt;/figcaption&gt;
    &lt;/figure&gt;
&lt;/div&gt;


&lt;p&gt;This time I ran them using the &lt;a href="https://llm.datasette.io/en/stable/usage.html"&gt;LLM CLI&lt;/a&gt;, exported the logs to Markdown and then had Claude Opus 4.8 &lt;a href="https://github.com/simonw/tools/commit/71e4944766b577a327ff048cc63b739ba4cbade9"&gt;build me&lt;/a&gt; an HTML tool that could render that Markdown with the &lt;code&gt;svg&lt;/code&gt; fenced code blocks displayed as SVGs on the page.&lt;/p&gt;

&lt;p&gt;(I later had GPT-5.5 xhigh in Codex &lt;a href="https://gist.github.com/simonw/bb5a267f8144dfe4e92e50a014e49e98"&gt;update that code&lt;/a&gt; to remove any XSS holes. I'm sure Claude could have done that if I'd asked, but GPT-5.5 is my code security blanket at the moment.)&lt;/p&gt;

&lt;p&gt;The max one  was clearly the best, but it did take 25 input, 17,167 output tokens for a total cost of &lt;a href="https://www.llm-prices.com/#it=25&amp;amp;ot=17167&amp;amp;ic=5&amp;amp;oc=25&amp;amp;sel=claude-opus-4-5"&gt;43 cents&lt;/a&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/anthropic"&gt;anthropic&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/claude"&gt;claude&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;/p&gt;
    

</summary><category term="ai"/><category term="generative-ai"/><category term="llms"/><category term="anthropic"/><category term="claude"/><category term="pelican-riding-a-bicycle"/><category term="llm-release"/></entry><entry><title>llm-anthropic 0.25.1</title><link href="https://simonwillison.net/2026/May/28/llm-anthropic/#atom-everything" rel="alternate"/><published>2026-05-28T23:54:56+00:00</published><updated>2026-05-28T23:54:56+00:00</updated><id>https://simonwillison.net/2026/May/28/llm-anthropic/#atom-everything</id><summary type="html">
    
        &lt;p&gt;&lt;strong&gt;Release:&lt;/strong&gt; &lt;a href="https://github.com/simonw/llm-anthropic/releases/tag/0.25.1"&gt;llm-anthropic 0.25.1&lt;/a&gt;&lt;/p&gt;
        &lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;New model: &lt;a href="https://www.anthropic.com/news/claude-opus-4-8"&gt;Claude Opus 4.8&lt;/a&gt; (&lt;code&gt;claude-opus-4.8&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;New &lt;code&gt;-o fast 1&lt;/code&gt; option for &lt;a href="https://platform.claude.com/docs/en/build-with-claude/fast-mode"&gt;fast mode&lt;/a&gt;, for organizations with that feature enabled on their account.&lt;/li&gt;
&lt;li&gt;Default max_tokens for each model now defaults to that model's maximum output rather than 8,192. &lt;a href="https://github.com/simonw/llm-anthropic/issues/72"&gt;#72&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;See also my &lt;a href="https://simonwillison.net/2026/May/28/claude-opus-4-8/"&gt;notes on Opus 4.8&lt;/a&gt; - I used this new release of &lt;code&gt;llm-anthropic&lt;/code&gt; to generate the pelicans.&lt;/p&gt;
    
    

</summary></entry><entry><title>markdown-svg-renderer</title><link href="https://simonwillison.net/2026/May/28/markdown-svg-renderer/#atom-everything" rel="alternate"/><published>2026-05-28T19:45:14+00:00</published><updated>2026-05-28T19:45:14+00:00</updated><id>https://simonwillison.net/2026/May/28/markdown-svg-renderer/#atom-everything</id><summary type="html">
    
        &lt;p&gt;&lt;strong&gt;Tool:&lt;/strong&gt; &lt;a href="https://tools.simonwillison.net/markdown-svg-renderer"&gt;markdown-svg-renderer&lt;/a&gt;&lt;/p&gt;
        &lt;p&gt;A slightly customized Markdown rendering tool with special treatment for fenced code SVG blocks - it both renders the image and provides a tab for switching to the code view.&lt;/p&gt;
&lt;p&gt;You can paste in Markdown or give it a URL to a CORS-enabled Markdown file or Gist. &lt;a href="https://tools.simonwillison.net/markdown-svg-renderer#url=https%3A%2F%2Fgist.github.com%2Fsimonw%2Ffea4f7546626d627862dc241a4e3a86a"&gt;Here's an example&lt;/a&gt; where it loads a Markdown file full of LLM pelican logs for &lt;a href="https://simonwillison.net/2026/May/28/claude-opus-4-8/#and-some-pelicans"&gt;Opus 4.8&lt;/a&gt;.&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/tools"&gt;tools&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/markdown"&gt;markdown&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/cors"&gt;cors&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="svg"/><category term="tools"/><category term="markdown"/><category term="cors"/></entry><entry><title>sqlite AGENTS.md</title><link href="https://simonwillison.net/2026/May/27/sqlite-agents/#atom-everything" rel="alternate"/><published>2026-05-27T23:44:37+00:00</published><updated>2026-05-27T23:44:37+00:00</updated><id>https://simonwillison.net/2026/May/27/sqlite-agents/#atom-everything</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/sqlite/sqlite/blob/master/AGENTS.md"&gt;sqlite AGENTS.md&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
SQLite gained an AGENTS.md file &lt;a href="https://github.com/sqlite/sqlite/commit/a1e5778889252d2609a59fd9b819d70392c5789e"&gt;five days ago&lt;/a&gt; - but it's not intended for their own development, it's presumably aimed at people who are pointing agents at the SQLite codebase. It includes:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;SQLite does not accept pull requests without prior agreement and/or accompanying legal paperwork that places the pull request in the public domain. However, the human SQLite developers will review a concise and well-written pull request as a proof-of-concept prior to reimplementing the changes themselves.&lt;/p&gt;
&lt;p&gt;SQLite does not accept agentic code. However the project will accept agentic bug reports that include a reproducible test case. Patches or pull requests demonstrating a possible fix, for documentation purposes, are welcomed.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The &lt;a href="https://github.com/sqlite/sqlite/commit/db7fe319ed5a18dbc732ab8eacea557f41cd910f"&gt;most recent commit&lt;/a&gt; to that file removed "(currently)" from "SQLite does not (currently) accept agentic code", with the commit message "Strengthen the statement about not accepting agentic code".&lt;/p&gt;
&lt;p&gt;Meanwhile the SQLite forum was being flooded with so many AI-generated bug reports - of varying quality - that they've now &lt;a href="https://sqlite.org/forum/forumpost/2e7a8d6ba4b46d8315e80fd4a1e2feb40948dff5b7b11d5ba9cea5cb40aa252b"&gt;split those off&lt;/a&gt; into a &lt;a href="https://sqlite.org/bugs/forum"&gt;new SQLite Bug Forum&lt;/a&gt;. D. Richard Hipp is resolving issues on there with a flurry of commits to the codebase.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://discord.com/channels/823971286308356157/1097032579812687943/1507447792598253748"&gt;Alex Garcia on the Datasette Discord&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


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



</summary><category term="sqlite"/><category term="ai"/><category term="d-richard-hipp"/><category term="generative-ai"/><category term="llms"/><category term="coding-agents"/><category term="ai-security-research"/></entry><entry><title>I think Anthropic and OpenAI have found product-market fit</title><link href="https://simonwillison.net/2026/May/27/product-market-fit/#atom-everything" rel="alternate"/><published>2026-05-27T16:38:35+00:00</published><updated>2026-05-27T16:38:35+00:00</updated><id>https://simonwillison.net/2026/May/27/product-market-fit/#atom-everything</id><summary type="html">
    &lt;p&gt;Anthropic are &lt;a href="https://techcrunch.com/2026/05/20/anthropic-says-its-about-to-have-its-first-profitable-quarter/"&gt;strongly rumored&lt;/a&gt; to be about to have their first profitable quarter. Stories &lt;a href="https://www.theinformation.com/newsletters/applied-ai/uber-cto-shows-claude-code-can-blow-ai-budgets"&gt;are circulating&lt;/a&gt; of companies surprised at how expensive their LLM bills are becoming from usage by their staff. I think this is because OpenAI and Anthropic have both found product-market fit.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href="https://simonwillison.net/2026/May/27/product-market-fit/#enterprise-customers-are-now-paying-api-prices"&gt;Enterprise customers are now paying API prices&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://simonwillison.net/2026/May/27/product-market-fit/#i-think-they-ve-found-product-market-fit"&gt;I think they've found product-market fit&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://simonwillison.net/2026/May/27/product-market-fit/#and-they-re-ramping-up"&gt;And they're ramping up&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://simonwillison.net/2026/May/27/product-market-fit/#the-ai-failure-stories-around-this-are-pretty-thin"&gt;The AI-failure stories around this are pretty thin&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://simonwillison.net/2026/May/27/product-market-fit/#we-also-know-the-labs-are-spending-a-lot"&gt;We also know the labs are spending a lot&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://simonwillison.net/2026/May/27/product-market-fit/#api-revenue-is-becoming-less-important"&gt;API revenue is becoming less important&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://simonwillison.net/2026/May/27/product-market-fit/#april-is-a-new-inflection-point"&gt;April is a new inflection point&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4 id="enterprise-customers-are-now-paying-api-prices"&gt;Enterprise customers are now paying API prices&lt;/h4&gt;
&lt;p&gt;I currently subscribe to the $100/month Max plan from Anthropic and the $100/month Pro plan from OpenAI. If you are a heavy user of coding agents these plans are a fantastic deal. I just ran the &lt;a href="https://github.com/ryoppippi/ccusage"&gt;ccusage&lt;/a&gt; tool on my laptop to get an estimate of how much I would have spent if I were to pay for API tokens in the past 30 days and got:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;$1,199.79 for Anthropic Claude Code&lt;/li&gt;
&lt;li&gt;$980.37 for OpenAI Codex&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That's $2,180.16 worth of tokens for $200 - not bad at all! I'm a moderately heavy user of these tools, but I'm certainly not running agents every hour of the day and night.&lt;/p&gt;
&lt;p&gt;I had assumed that companies making extensive use of agents were getting similar discounts. It turns out I &lt;em&gt;could not have been more wrong&lt;/em&gt; about that.&lt;/p&gt;
&lt;p&gt;I haven't been able to track down the exact date, but at some point in the last six months Anthropic switched their Enterprise plan (originally &lt;a href="https://www.anthropic.com/news/claude-code-on-team-and-enterprise"&gt;"Claude seats include enough usage for a typical workday" back in August 2025&lt;/a&gt;) to $20/seat/month plus API pricing for usage. This story about the change &lt;a href="https://www.theinformation.com/articles/anthropic-changes-pricing-bill-firms-based-ai-use-amid-compute-crunch"&gt;from The Information&lt;/a&gt; is dated Apr 14, 2026, but cites an Anthropic spokesperson claiming that the pricing change occurred in November 2025. Existing customers are finding out about the change as they renew their contracts.&lt;/p&gt;
&lt;p&gt;OpenAI made a similar pricing change in April. The &lt;a href="https://help.openai.com/en/articles/20001106-codex-rate-card"&gt;Codex rate card&lt;/a&gt; (&lt;a href="https://web.archive.org/web/20260519062438/https://help.openai.com/en/articles/20001106-codex-rate-card"&gt;Internet Archive copy&lt;/a&gt;) currently says:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: On April 2, 2026, we updated Codex pricing to align with API token usage, instead of per-message pricing. This change was applicable to new and existing Plus, Pro, ChatGPT Business and new ChatGPT Enterprise plans.&lt;/p&gt;
&lt;p&gt;On April 23, 2026, we made this update for all existing ChatGPT Enterprise plans as well, inclusive of Edu, Health, Gov, and ChatGPT for Teachers.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It's a little harder to decode as they quote prices in "credits", but as far as I can tell those credit costs are an exact match for the API token costs listed for those models.&lt;/p&gt;
&lt;p&gt;All of which is to say that as of April 2026 the "Enterprise" cost for both OpenAI Codex and Anthropic Claude Code/Cowork is the same as the listed API price.&lt;/p&gt;
&lt;p&gt;GPT-5.5 (released April 23rd) is 2x the API price of GPT-5.4. Opus 4.7 (April 16th) is &lt;a href="https://simonwillison.net/2026/Apr/20/claude-token-counts/"&gt;around 1.4x&lt;/a&gt; the price of Opus 4.6 when you take their new tokenizer into account.&lt;/p&gt;
&lt;p&gt;So April saw both leading model companies release new frontier models with a higher API price, &lt;em&gt;and&lt;/em&gt; both companies now have measures to lock their enterprise customers (who tend to sign year-long deals) at those API prices, not the previous extreme discounts.&lt;/p&gt;
&lt;h4 id="i-think-they-ve-found-product-market-fit"&gt;I think they've found product-market fit&lt;/h4&gt;
&lt;p&gt;Why these sudden aggressive moves on pricing? Both Anthropic and OpenAI are planning to IPO, but I suspect there's a more important factor here: I think they've finally found product-market fit, with the coding/general-purpose agent products embodied by Claude Code/Cowork and Codex.&lt;/p&gt;
&lt;p&gt;Tools like ChatGPT are wildly popular, but that wild popularity has been difficult to turn into revenue. In February &lt;a href="https://finance.yahoo.com/news/chatgpt-almost-1-billion-weekly-212157499.html"&gt;OpenAI boasted&lt;/a&gt; more than 900 million weekly active users for ChatGPT, but only 50 million - 5.6% of that - were paying consumer subscribers.&lt;/p&gt;
&lt;p&gt;Charging $10-$20/month per user is an OK business, but you'd need 1-2 billion subscribers sticking around for four years to cover &lt;a href="https://openai.com/global-affairs/seizing-the-ai-opportunity/"&gt;$1 trillion in infrastructure&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Companies spending $200+/month/user will get you there a whole lot faster - and as noted above, as a power-user I'm at ~$1,000/month in API costs per vendor already.&lt;/p&gt;
&lt;p&gt;Coding agents really did change everything. These are tools which burn &lt;em&gt;vastly&lt;/em&gt; more tokens, but are also quickly becoming daily drivers for the work carried out by extremely well-compensated professionals. Right now that's still mostly software engineers, but a coding agent is a tool that can automate anything you can do by typing commands into a computer... so they are clearly applicable to a much wider set of skilled knowledge workers.&lt;/p&gt;
&lt;p&gt;As I've &lt;a href="https://simonwillison.net/tags/november-2025-inflection/"&gt;discussed on this site at length&lt;/a&gt;, the models released in November 2025 elevated agents to being genuinely useful. We've had six months to get used to that idea now - it's no wonder companies are beginning to spend real money on this technology.&lt;/p&gt;
&lt;p&gt;You could argue that ChatGPT achieved product-market fit when it became the &lt;a href="https://www.reuters.com/technology/chatgpt-sets-record-fastest-growing-user-base-analyst-note-2023-02-01/"&gt;fastest-growing consumer app in history&lt;/a&gt; back in February 2023... but it certainly wasn't making any actual money back then. Coding agents plus enterprise pricing marks the point when these companies start making &lt;em&gt;very&lt;/em&gt; real revenue. Maybe even enough to start covering their costs!&lt;/p&gt;
&lt;h4 id="and-they-re-ramping-up"&gt;And they're ramping up&lt;/h4&gt;
&lt;p&gt;As further evidence that enterprise agents represent product-market fit for these companies, consider their open job listings.&lt;/p&gt;
&lt;p&gt;OpenAI have &lt;a href="https://openai.com/careers/search/"&gt;703 open jobs&lt;/a&gt; right now, of which I'd categorize 229 (32.6%) as relating to enterprise sales and support - account executives, "Go To Market", "Forward Deployed Engineers" and the like.&lt;/p&gt;
&lt;p&gt;Anthropic have &lt;a href="https://www.anthropic.com/careers/jobs"&gt;390 open jobs&lt;/a&gt;, 105 (26.9%) of which look enterprisey to me.&lt;/p&gt;
&lt;p&gt;It's pleasingly ironic that these AI labs have picked a business model with such a heavy demand on human labor - enterprise sales contracts don't close themselves without a whole lot of humans in the mix!&lt;/p&gt;
&lt;p&gt;&lt;small&gt;(I ran this analysis by scraping their job sites with Claude Code, then having it use Datasette's &lt;a href="https://docs.datasette.io/en/latest/json_api.html"&gt;JSON API&lt;/a&gt; to pipe that data into Datasette Cloud where I used &lt;a href="https://agent.datasette.io/"&gt;Datasette Agent&lt;/a&gt; for the analysis, &lt;a href="https://gist.github.com/simonw/5632d208d76b3c8b34f1fdbaf69eb1b8#agent-4"&gt;exported here&lt;/a&gt;. Dogfood!)&lt;/small&gt;&lt;/p&gt;
&lt;h4 id="the-ai-failure-stories-around-this-are-pretty-thin"&gt;The AI-failure stories around this are pretty thin&lt;/h4&gt;
&lt;p&gt;I started digging into this in response to &lt;a href="https://news.ycombinator.com/item?id=48287025#48287219"&gt;a growing volume&lt;/a&gt; of stories claiming that large companies were sounding the alarm because their AI usage costs had grown so large.&lt;/p&gt;
&lt;p&gt;The most widely cited of these stories appear quite overblown to me.&lt;/p&gt;
&lt;p&gt;The most discussed has been Uber, based on &lt;a href="https://www.theinformation.com/newsletters/applied-ai/uber-cto-shows-claude-code-can-blow-ai-budgets"&gt;this report&lt;/a&gt; where CTO Praveen Neppalli Naga indicated that Uber had "maxed out its full year AI budget just a few months into 2026", mostly thanks to Claude Code.&lt;/p&gt;
&lt;p&gt;Given that Claude Code only got &lt;em&gt;really&lt;/em&gt; good in November it's entirely unsurprising to me that a budget set in 2025 may have failed to predict demand for that tool in 2026!&lt;/p&gt;
&lt;p&gt;That Uber story was further fueled by comments made by Uber's COO, Andrew Macdonald, on the Rapid Response podcast. I tracked down &lt;a href="https://www.youtube.com/watch?v=y_mQ6xLcKyc&amp;amp;t=1616s"&gt;the segment&lt;/a&gt; and there really isn't much there. Here's what Andrew said:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;But then you sometimes go and talk to your senior engineering leaders and you're saying, OK, how many projects that were on the cutting room floor got moved above the line because of the productivity gains because 25% of our code commits were via Claude Code last quarter?&lt;/p&gt;
&lt;p&gt;That link is not there yet, right? I think maybe implicitly there's more that is getting shipped. But it's very hard to draw a line between one of those stats and, OK, now we're actually producing like 25% more useful consumer features, right? And that line is hard to draw.&lt;/p&gt;
&lt;p&gt;[...] And so if you're not actually able to draw a direct line to how much useful features and functionality you're shipping to your users, that trade becomes harder to justify.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Somehow this fragment turned into headlines like &lt;a href="https://www.businessinsider.com/uber-coo-andrew-macdonald-ai-token-spending-harder-justify-2026-5"&gt;Uber's COO says it's getting harder to justify the money spent on AI tokenmaxxing&lt;/a&gt;, because the market for stories about AI failures remains enormous.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Update 29th May 2026&lt;/strong&gt;: I edited the above quote to add that last paragraph ending in "becomes harder to justify" on &lt;a href="https://x.com/MadisonMills22/status/2060343512936186240"&gt;the suggestion of Madison Mills&lt;/a&gt; - previously my quoted section stopped at "hard to draw". Here's the &lt;a href="https://gist.github.com/simonw/59096a338c82f6f95e40e3d7c7b5bad9"&gt;full unedited transcript&lt;/a&gt; from MacWhisper.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The other popular story around this is &lt;a href="https://www.theverge.com/tech/930447/microsoft-claude-code-discontinued-notepad"&gt;Microsoft starts canceling Claude Code licenses&lt;/a&gt;, ostensibly to encourage their engineers to dogfood their own Copilot CLI agent instead - but The Verge reporter Tom Warren says "sources tell me the decision is also a financial one", triggered by the June 30th end of Microsoft's financial year.&lt;/p&gt;
&lt;p&gt;I think both of these stories support my "product-market fit" hypothesis. The best advice I ever heard on pricing a product was that your customer should &lt;em&gt;suck air through their teeth&lt;/em&gt; and then say yes. Uber's budget overrun and Microsoft's seat cancellations look like that effect playing out in practice.&lt;/p&gt;
&lt;h4 id="we-also-know-the-labs-are-spending-a-lot"&gt;We also know the labs are spending a lot&lt;/h4&gt;
&lt;p&gt;The big AI labs spend billions of dollars on both training and inference. Credible figures are hard to come by, but we did get one huge hint as to the figures involved from, oddly enough, the recent &lt;a href="https://www.sec.gov/Archives/edgar/data/1181412/000162828026036936/spaceexplorationtechnologi.htm"&gt;SpaceX S-1&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[...] in May 2026, we entered into &lt;strong&gt;Cloud Services Agreements with Anthropic PBC&lt;/strong&gt; (“Anthropic”), an AI research and development public benefit corporation, with respect to access to &lt;strong&gt;compute capacity across COLOSSUS and COLOSSUS II&lt;/strong&gt;. Pursuant to these agreements, the customer &lt;strong&gt;has agreed to pay us $1.25 billion per month&lt;/strong&gt; through May 2029 [...]&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The &lt;a href="https://www.anthropic.com/news/higher-limits-spacex"&gt;Anthropic announcement&lt;/a&gt; said that this deal meant they could "increase our usage limits for Claude Code and the Claude API", heavily implying that Colossus is being used for inference, not model training.&lt;/p&gt;
&lt;p&gt;Anthropic already have vast amounts of compute from other providers. The fact that they're willing to spend $1.25 billion per month for extra capacity from just &lt;em&gt;one&lt;/em&gt; of their vendors hints at how big these inference budgets have become.&lt;/p&gt;
&lt;h4 id="api-revenue-is-becoming-less-important"&gt;API revenue is becoming less important&lt;/h4&gt;
&lt;p&gt;Over the past two years my impression has been that OpenAI made more of their income from subscription revenue while Anthropic made more from their API.&lt;/p&gt;
&lt;p&gt;Anthropic's API revenue was historically quite dependent on a small number of large API customers - &lt;a href="https://venturebeat.com/ai/anthropic-revenue-tied-to-two-customers-as-ai-pricing-war-threatens-margins"&gt;this VentureBeat story from August 2025&lt;/a&gt; quotes "sources familiar with the matter" suggesting that just Cursor and GitHub Copilot were responsible for $1.2 billion of the company's then-$4 billion revenue.&lt;/p&gt;
&lt;p&gt;Today Anthropic are rumored to hit &lt;a href="https://www.wsj.com/tech/ai/mind-blowing-growth-is-about-to-propel-anthropic-into-its-first-profitable-quarter-7edbf2f4"&gt;$10.9 billion in the second quarter&lt;/a&gt;, potentially even operating at a profit for the first time.&lt;/p&gt;
&lt;p&gt;This pivot-to-Enterprise suggests that the labs have realized that the real money lies in cutting out the middlemen. Anthropic's Claude Code directly competes with Cursor and Copilot. No wonder Cursor are &lt;a href="https://cursor.com/blog/composer-2"&gt;investing in their own models&lt;/a&gt;!&lt;/p&gt;
&lt;h4 id="april-is-a-new-inflection-point"&gt;April is a new inflection point&lt;/h4&gt;
&lt;p&gt;I've called November 2025 the &lt;a href="https://simonwillison.net/tags/november-2025-inflection/"&gt;November inflection point&lt;/a&gt; because that was when GPT-5.1 and Opus 4.5, combined with their respective coding agent harnesses, got &lt;em&gt;good&lt;/em&gt; - good enough that we've spent the last six months adapting to agent systems that can reliably get useful work done.&lt;/p&gt;
&lt;p&gt;I think April 2026 is a new inflection point where the revenue implications of this have started to land, to the benefit of the frontier AI labs and with material impacts on the budgets of large companies.&lt;/p&gt;
&lt;p&gt;We'll know for sure how real this moment is when the S-1 documents for the upcoming Anthropic and OpenAI IPOs give us some real, audited numbers to get our teeth into.&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/datasette"&gt;datasette&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;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/codex"&gt;codex&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/claude-cowork"&gt;claude-cowork&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/november-2025-inflection"&gt;november-2025-inflection&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/datasette-agent"&gt;datasette-agent&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="ai"/><category term="datasette"/><category term="openai"/><category term="generative-ai"/><category term="llms"/><category term="anthropic"/><category term="llm-pricing"/><category term="coding-agents"/><category term="claude-code"/><category term="codex"/><category term="claude-cowork"/><category term="november-2025-inflection"/><category term="datasette-agent"/></entry><entry><title>Quoting Kyle Ferrana</title><link href="https://simonwillison.net/2026/May/27/kyle-ferrana/#atom-everything" rel="alternate"/><published>2026-05-27T06:41:43+00:00</published><updated>2026-05-27T06:41:43+00:00</updated><id>https://simonwillison.net/2026/May/27/kyle-ferrana/#atom-everything</id><summary type="html">
    &lt;blockquote cite="https://twitter.com/kyletrainemoji/status/2059301102814953511"&gt;&lt;p&gt;PICARD: Data, shields up&lt;/p&gt;
&lt;p&gt;DATA: Brilliant! Shields can reduce damage we sustain. Not immunity. Not hubris. Just prudence. It's not precaution—it's strategy.&lt;/p&gt;
&lt;p&gt;[camera shakes]&lt;/p&gt;
&lt;p&gt;WORF: HULL BREACHES ON NINE DECKS&lt;/p&gt;
&lt;p&gt;DATA: Here's what happened: you told me to raise shields, and I didn't&lt;/p&gt;&lt;/blockquote&gt;
&lt;p class="cite"&gt;&amp;mdash; &lt;a href="https://twitter.com/kyletrainemoji/status/2059301102814953511"&gt;Kyle Ferrana&lt;/a&gt;, @KyleTrainEmoji&lt;/p&gt;

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



</summary><category term="ai-misuse"/><category term="coding-agents"/><category term="ai"/><category term="llms"/></entry><entry><title>The pressure</title><link href="https://simonwillison.net/2026/May/26/the-pressure/#atom-everything" rel="alternate"/><published>2026-05-26T23:48:45+00:00</published><updated>2026-05-26T23:48:45+00:00</updated><id>https://simonwillison.net/2026/May/26/the-pressure/#atom-everything</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://daniel.haxx.se/blog/2026/05/26/the-pressure/"&gt;The pressure&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Daniel Stenberg on the unprecedented level of pressure the &lt;code&gt;curl&lt;/code&gt; team are facing right now thanks to the deluge of (credible) AI-assisted security issues being reported.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The rate of incoming security reports is 4-5 times higher than it was in 2024 and double the speed of 2025 -- meaning that &lt;strong&gt;on average we now get more than one report per day&lt;/strong&gt;. The quality is way higher than ever before. The reports are typically &lt;em&gt;very&lt;/em&gt; detailed and long. [...]&lt;/p&gt;
&lt;p&gt;For the first time in my life, my wife voiced concerns about my work hours and my imbalanced work/life situation. I work more than I’ve done before, but the flood keeps coming. [...]&lt;/p&gt;
&lt;p&gt;This is a never-before seen or experienced pressure on the curl project and its security team members. An avalanche of high priority work that trumps all other things in the project that is primarily mental because we certainly &lt;em&gt;could&lt;/em&gt; ignore them all if we wanted, but we feel a responsibility, we have a conscience and we are proud about our work.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The good news is that &lt;code&gt;curl&lt;/code&gt; is a very solid piece of software, so the vulnerabilities people are finding tend not to be of high severity:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;What is also a good trend: almost no one finds &lt;em&gt;terrible&lt;/em&gt; vulnerabilities. All vulnerabilities found the last few years in curl have &lt;em&gt;all&lt;/em&gt; been deemed severity LOW or MEDIUM. I'm not saying there won't be any more HIGH ever, but at least they are rare. The &lt;a href="https://curl.se/docs/CVE-2023-38545.html"&gt;most recent severity high curl CVE&lt;/a&gt; was published in October 2023.&lt;/p&gt;
&lt;/blockquote&gt;

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


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



</summary><category term="curl"/><category term="security"/><category term="ai"/><category term="generative-ai"/><category term="llms"/><category term="daniel-stenberg"/><category term="ai-ethics"/><category term="ai-security-research"/></entry><entry><title>Microsoft Copilot Cowork Exfiltrates Files</title><link href="https://simonwillison.net/2026/May/26/copilot-cowork-exfiltrates-files/#atom-everything" rel="alternate"/><published>2026-05-26T15:36:48+00:00</published><updated>2026-05-26T15:36:48+00:00</updated><id>https://simonwillison.net/2026/May/26/copilot-cowork-exfiltrates-files/#atom-everything</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.promptarmor.com/resources/microsoft-copilot-cowork-exfiltrates-files"&gt;Microsoft Copilot Cowork Exfiltrates Files&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
The biggest challenge in designing agentic systems continues to be preventing them from enabling attackers to exfiltrate data.&lt;/p&gt;
&lt;p&gt;In this case Microsoft Copilot Cowork (yes, that's &lt;a href="https://www.microsoft.com/en-us/microsoft-365/blog/2026/03/09/copilot-cowork-a-new-way-of-getting-work-done/"&gt;a real product name&lt;/a&gt;) was allowing agents to send emails to the user's own inbox without approval... but those messages were then displayed in a way that could leak data to an attacker via rendered images:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Because these messages can contain external images that trigger network requests to external websites, data can be exfiltrated when a user opens a compromised message sent by the agent.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Since OneDrive can create pre-authenticated download links, a successful prompt injection could cause those links to be leaked, allowing files to be downloaded by the attacker.

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


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/microsoft"&gt;microsoft&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/prompt-injection"&gt;prompt-injection&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/exfiltration-attacks"&gt;exfiltration-attacks&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/lethal-trifecta"&gt;lethal-trifecta&lt;/a&gt;&lt;/p&gt;



</summary><category term="microsoft"/><category term="security"/><category term="ai"/><category term="prompt-injection"/><category term="generative-ai"/><category term="llms"/><category term="exfiltration-attacks"/><category term="lethal-trifecta"/></entry><entry><title>Quoting Paul Graham</title><link href="https://simonwillison.net/2026/May/26/paul-graham/#atom-everything" rel="alternate"/><published>2026-05-26T15:02:30+00:00</published><updated>2026-05-26T15:02:30+00:00</updated><id>https://simonwillison.net/2026/May/26/paul-graham/#atom-everything</id><summary type="html">
    &lt;blockquote cite="https://twitter.com/paulg/status/2058844147092488401"&gt;&lt;p&gt;A lot of the emails I get from founders are now written in a hard-hitting journalistic style. I know they're written by AI, because no founder ever wrote this way before. And once you realize something is written by AI, it's hard not to ignore it.&lt;/p&gt;
&lt;p&gt;I have never knowingly finished reading an email signed by a human but written by AI. It feels like being lied to, and who would stand for that?&lt;/p&gt;
&lt;p&gt;[&lt;a href="https://twitter.com/paulg/status/2058863028523659390"&gt;...&lt;/a&gt;] It makes me think less of the author. It means they can't write well unaided (or feel they can't), and that they're trying to trick me. &lt;/p&gt;
&lt;p&gt;It's not impressive to use AI to write stuff for you; any teenager can do that.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p class="cite"&gt;&amp;mdash; &lt;a href="https://twitter.com/paulg/status/2058844147092488401"&gt;Paul Graham&lt;/a&gt;&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/writing"&gt;writing&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/paul-graham"&gt;paul-graham&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="writing"/><category term="ai-misuse"/><category term="paul-graham"/><category term="generative-ai"/><category term="ai"/><category term="llms"/></entry><entry><title>Quoting Corey Quinn</title><link href="https://simonwillison.net/2026/May/26/corey-quinn/#atom-everything" rel="alternate"/><published>2026-05-26T02:28:54+00:00</published><updated>2026-05-26T02:28:54+00:00</updated><id>https://simonwillison.net/2026/May/26/corey-quinn/#atom-everything</id><summary type="html">
    &lt;blockquote cite="https://twitter.com/quinnypig/status/2058960462256210268"&gt;&lt;p&gt;I cannot believe I'm saying this, but getting the literal Pope to canonize your product's specific technical limitations as a spiritual treatise is the single greatest act of vendor lobbying I have ever seen.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p class="cite"&gt;&amp;mdash; &lt;a href="https://twitter.com/quinnypig/status/2058960462256210268"&gt;Corey Quinn&lt;/a&gt;, on Anthropic co-founder Christopher Olah's &lt;a href="https://www.washingtonpost.com/world/2026/05/25/pope-elevates-ai-ethics-religious-imperative-with-first-encyclical/"&gt;influence&lt;/a&gt; on &lt;em&gt;Magnifica Humanitas&lt;/em&gt;&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/ai-ethics"&gt;ai-ethics&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/corey-quinn"&gt;corey-quinn&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/anthropic"&gt;anthropic&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;&lt;/p&gt;



</summary><category term="ai-ethics"/><category term="corey-quinn"/><category term="anthropic"/><category term="ai"/></entry><entry><title>Notes on Pope Leo XIV's encyclical on AI</title><link href="https://simonwillison.net/2026/May/25/encyclical-on-ai/#atom-everything" rel="alternate"/><published>2026-05-25T23:58:17+00:00</published><updated>2026-05-25T23:58:17+00:00</updated><id>https://simonwillison.net/2026/May/25/encyclical-on-ai/#atom-everything</id><summary type="html">
    &lt;p&gt;Dropped this morning by the Vatican: &lt;a href="https://www.vatican.va/content/leo-xiv/en/encyclicals/documents/20260515-magnifica-humanitas.html"&gt;Magnifica Humanitas of His Holiness Pope Leo XIV on Safeguarding the Human Person in the Time of Artificial Intelligence&lt;/a&gt;. This is a &lt;em&gt;very interesting&lt;/em&gt; document. It's some of the clearest writing I've seen on the ethics of integrating AI into modern society.&lt;/p&gt;
&lt;p&gt;Pope Leo XIV chose the name Leo in honor of Pope Leo XIII, who is known for his 1891 &lt;em&gt;&lt;a href="https://en.wikipedia.org/wiki/Rerum_novarum"&gt;Rerum novarum&lt;/a&gt;&lt;/em&gt; encyclical on "Rights and Duties of Capital and Labor".&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.vaticannews.va/en/church/news/2025-05/leo-xiii-s-times-and-our-own.html"&gt;This story&lt;/a&gt; on Vatican News further clarifies the significance of that decision:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Meeting with the College of Cardinals for their first formal encounter after his election, Pope Leo XIV explained part of the reason for the choice of his papal name. "There are different reasons for this," he said, before going on to explain that he chose the name Leo "mainly because Pope Leo XIII, in his historic encyclical &lt;em&gt;&lt;a href="https://www.vatican.va/content/leo-xiii/en/encyclicals/documents/hf_l-xiii_enc_15051891_rerum-novarum.html"&gt;Rerum novarum&lt;/a&gt;&lt;/em&gt; addressed the social question in the context of the first great industrial revolution."&lt;/p&gt;
&lt;p&gt;"In our own day," he continued, "the Church offers to everyone the treasury of her social teaching in response to another industrial revolution and to developments in the field of artificial intelligence that pose new challenges for the defence of human dignity, justice, and labour."&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;And now we get Pope Leo XIV's own encyclical on the AI revolution. There's a lot in here, but the writing style is very approachable, including to non-Catholics.&lt;/p&gt;
&lt;h4 id="a-few-of-my-highlights"&gt;A few of my highlights&lt;/h4&gt;
&lt;p&gt;&lt;small&gt;(I listened to most of the encyclical on a walk with our dog, my first time trying the &lt;a href="https://apps.apple.com/us/app/elevenreader-read-books-aloud/id6479373050"&gt;ElevenReader iPhone app&lt;/a&gt;. It worked very well: I pasted in a URL to the document and it read it to me in a very high quality voice, highlighting each paragraph as it went.)&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;Here are some of my highlights. In each case below &lt;strong&gt;emphasis&lt;/strong&gt; is mine.&lt;/p&gt;
&lt;p&gt;Here's a useful description of the interpretability problem for LLMs in section 98:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;First, any statement regarding AI risks becoming quickly outdated, given the remarkable pace at which these systems are developing. Second, all of us, including those who design them, possess only a limited understanding of their actual functioning. Indeed, &lt;strong&gt;current AI systems are more “cultivated” than “built,” for developers do not directly design every detail, but instead create a framework within which the intelligence “grows.”&lt;/strong&gt; As a result, fundamental scientific aspects — such as the internal representations and computational processes of these systems — remain, at present, unknown.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I liked section 83's description of the relationship between development and dignity:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;For individuals as well as for nations, development is both a duty and a right. Minimum conditions are required for enabling every person and people to flourish in accord with their dignity, without being kept in a state of dependence or excluded from access to necessary goods. Development is truly human when it places people at the center instead of the accumulation of wealth, and when it concerns peoples as well as individuals. Justice demands the recognition of the rights of society and the rights of peoples, and includes a responsibility toward future generations. &lt;strong&gt;Development is not truly human if it increases consumption for some while shifting costs and burdens onto others, or relegates entire regions to subordinate roles, preventing them from realizing their full potential&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Baked in cultural biases and sycophancy get a mention in section 100:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;In personal use, three aspects in particular deserve careful consideration: the ease with which results are obtained, the impression of objectivity and the simulation of human communication. The speed and simplicity with which information, complex analyses, media content and practical assistance can be accessed undoubtedly makes life easier. Yet they can also encourage excessive reliance and the search for ready-made answers, and weaken personal creativity and judgment. &lt;strong&gt;The apparent objectivity of the responses and suggestions these systems provide can lead us to overlook the fact that they reflect the cultural assumptions of those who designed and trained them, with all their strengths and limitations&lt;/strong&gt;. The artificial imitation of positive human communication — words of advice, empathy, friendship and even love — can be engaging and at times genuinely helpful. &lt;strong&gt;However, for less discerning users, it can also be misleading, creating the illusion of a relationship with a real personal subject&lt;/strong&gt;. When words are simulated, they do not build genuine relationships, but only their appearance. The artificial imitation of care or support can become particularly risky when it enters contexts where real relationships and emotional bonds are lacking.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;101 touches on the environmental impact:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Current AI systems require enormous amounts of energy and water, significantly influencing carbon dioxide emissions, and place heavy demands on natural resources. &lt;strong&gt;As their complexity increases, especially in the case of large language models, the need for computing power and storage capacity grows too, which requires an extensive network of machines, cables, data centers and energy-intensive infrastructure&lt;/strong&gt;. For this reason, it is essential to develop more sustainable technological solutions that reduce environmental impact and help protect our common home.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;102 covers the risks of algorithmic systems making decisions that impact people's lives without "compassion, mercy, forgiveness":&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The use of AI is never a purely technical matter: &lt;strong&gt;when it enters processes that affect people’s lives, it touches on rights, opportunities, status and freedom&lt;/strong&gt;. Important and sensitive decisions — concerning employment, credit, access to public services or even a person’s reputation — &lt;strong&gt;risk being fully delegated to automated systems that do not know “compassion, mercy, forgiveness, and above all, the hope that people are able to change,”&lt;/strong&gt; and can therefore give rise to new forms of exclusion.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;105 emphasizes the need for human accountability in how these systems are applied:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;For AI to respect human dignity and truly serve the common good, responsibility must be clearly defined at every stage: &lt;strong&gt;from those who design and develop these systems to those who use them and rely on them for concrete decisions&lt;/strong&gt;. In many cases, however, the internal processes leading to a result remain opaque, making it harder to assign responsibility and correct errors. &lt;strong&gt;This is where accountability becomes crucial: the possibility of identifying who must “account” for decisions, justify them, monitor them, and, when necessary, challenge them and remedy any harm caused&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;And 108 touches on the way AI amplifies the power of those with resources:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;In fact, as with every major technological shift, &lt;strong&gt;AI tends to amplify the power of those who already possess economic resources, expertise and access to data&lt;/strong&gt;. In light of the common good and the universal destination of goods, this raises serious concerns, since small but highly influential groups can shape information and consumption patterns, influence democratic processes and steer economic dynamics to their own advantage, undermining social justice and solidarity among peoples. For this reason, it is essential that the use of AI, especially when it touches on public goods and fundamental rights, be guided by clear criteria and effective oversight, grounded in participation and subsidiarity.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;That same section explicitly calls out data as something that should be thought of more as a public good:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[...] Moreover, &lt;strong&gt;ownership of data cannot be left solely in private hands&lt;/strong&gt; but must be appropriately regulated. &lt;strong&gt;Data is the product of many contributors and should not be treated as something to be sold off or entrusted to a select few&lt;/strong&gt;. It is necessary to think creatively in order to manage data as a common or shared good, in a spirit of participation, as &lt;a href="https://www.vatican.va/content/john-paul-ii/en.html"&gt;Saint John Paul II&lt;/a&gt; already suggested regarding collective goods.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Given that Palantir is named after a &lt;em&gt;Lord of the Rings&lt;/em&gt; reference, I can't help but wonder if the J.R.R. Tolkien quote from &lt;em&gt;The Return of the King&lt;/em&gt; (section 213) was the Pope throwing a little shade at Peter Thiel.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The twentieth-century Catholic author J.R.R. Tolkien, in the words of a protagonist in one of his novels, described our responsibility in this way: “It is not our part to master all the tides of the world, but to do what is in us for the succour of those years wherein we are set, uprooting the evil in the fields that we know, so that those who live after may have clean earth to till.” The civilization of love will not arise from a single or spectacular gesture, but from the sum total of small and steadfast acts of fidelity that serve as a bulwark against dehumanization. For this reason, it is worthwhile pausing to reflect on some aspects of how we, each in our own way, can cooperate in building the civilization of love.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4 id="another-2026-prediction-down"&gt;Another 2026 prediction down&lt;/h4&gt;
&lt;p&gt;On 6th January this year I joined the  &lt;a href="https://oxide-and-friends.transistor.fm/episodes/predictions-2026"&gt;Oxide and Friends 2026 predictions&lt;/a&gt; podcast episode to talk about predictions for 2026, 2029 and 2032. I &lt;a href="https://simonwillison.net/2026/Jan/8/llm-predictions-for-2026/"&gt;wrote mine up here&lt;/a&gt;, with hindsight they weren't nearly ambitious enough - it's already undeniable that LLMs write good code, we've made huge advances in sandboxing and New Zealand kākāpō have indeed &lt;a href="https://news.mongabay.com/short-article/2026/03/critically-endangered-kakapo-parrot-has-standout-breeding-season/"&gt;had a truly excellent breeding season&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;There's one segment from the episode that I didn't bother to include in my write-up, but that I can't resist providing as a lightly-edited transcript here:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Bryan Cantrill:&lt;/strong&gt; &lt;a href="https://oxide-and-friends.transistor.fm/episodes/predictions-2026/transcript#t=37m13s"&gt;37:13&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I think that AI has created some real public perception problems for itself. And I think that you are gonna have one of the frontier model companies, this year, have a white paper explaining how the proliferation of AI will mean prosperity for everybody. They will be trying to make some economic argument - because this is gonna be a 2026 election issue, how we think of these things and how they are regulated and it's a big mess. There's more heat than light in this debate.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Simon Willison:&lt;/strong&gt; &lt;a href="https://oxide-and-friends.transistor.fm/episodes/predictions-2026/transcript#t=38m5s"&gt;38:05&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I'd like to tag something on to that one: I think that only works if they can sort of wash that through existing trusted experts. Sam Altman and Dario are constantly publishing essays about this stuff and nobody believes a word they say. Get Barack Obama's signature on one of these position papers and &lt;em&gt;maybe&lt;/em&gt; you've got something people might start to trust a little bit.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Adam Leventhal:&lt;/strong&gt; &lt;a href="https://oxide-and-friends.transistor.fm/episodes/predictions-2026/transcript#t=38m27s"&gt;38:27&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Otherwise, it's just like "leaded gas is good for you", says Exxon.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Bryan Cantrill:&lt;/strong&gt; &lt;a href="https://oxide-and-friends.transistor.fm/episodes/predictions-2026/transcript#t=38m31s"&gt;38:31&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I mean, yeah. God. Obama... let's go with that, that's a great one because if it's like Bill Clinton everyone's gonna kind of roll their eyes, so it's gotta be someone who's got real credibility saying that this is gonna be broad-based... I'd say if they get that person to do it, it's gonna be revealed that that's also a bit crooked.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Simon Willison:&lt;/strong&gt; &lt;a href="https://oxide-and-friends.transistor.fm/episodes/predictions-2026/transcript#t=38m57s"&gt;38:57&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;How about the Pope?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Bryan Cantrill:&lt;/strong&gt; &lt;a href="https://oxide-and-friends.transistor.fm/episodes/predictions-2026/transcript#t=39m1s"&gt;39:01&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The Pope is very into this stuff! That's a great prediction. We've hit pay dirt. The Pope weighing in on LLMs and their economic impact on the world.&lt;/p&gt;
&lt;p&gt;Simon, I'm giving you full credit if the Pope weighs in believing that this is gonna be economic devastation.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;My prediction here looks a whole lot less insightful given the Leo XIV/Leo XIII relationship, which I was unaware of when we recorded the episode!&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/predictions"&gt;predictions&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/kakapo"&gt;kakapo&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/bryan-cantrill"&gt;bryan-cantrill&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-ethics"&gt;ai-ethics&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="predictions"/><category term="ai"/><category term="kakapo"/><category term="generative-ai"/><category term="llms"/><category term="bryan-cantrill"/><category term="ai-ethics"/></entry><entry><title>California Brown Pelican, Snowy Egret, California Sea Lion, Harbor Seal</title><link href="https://simonwillison.net/2026/May/25/sighting-365297287/#atom-everything" rel="alternate"/><published>2026-05-25T23:08:00+00:00</published><updated>2026-05-25T23:08:00+00:00</updated><id>https://simonwillison.net/2026/May/25/sighting-365297287/#atom-everything</id><summary type="html">
    
        &lt;p&gt;&lt;img src="https://static.inaturalist.org/photos/666934915/large.jpg" alt="California Brown Pelican"&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="https://static.inaturalist.org/photos/666934945/large.jpg" alt="California Brown Pelican"&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="https://static.inaturalist.org/photos/666934484/large.jpg" alt="Snowy Egret"&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="https://static.inaturalist.org/photos/666935110/large.jpg" alt="California Sea Lion"&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="https://static.inaturalist.org/photos/666935468/large.jpg" alt="Harbor Seal"&gt;&lt;/p&gt;&lt;p&gt;California Brown Pelican, Snowy Egret, California Sea Lion, Harbor Seal, in San Mateo County, CA, US&lt;/p&gt;&lt;p&gt;We took our new &lt;a href="https://www.orukayak.com/"&gt;folding kayak&lt;/a&gt; out in the harbor and saw sea lions and harbor seals chilling on the docks.&lt;/p&gt;
    
    

</summary></entry><entry><title>datasette 1.0a30</title><link href="https://simonwillison.net/2026/May/24/datasette/#atom-everything" rel="alternate"/><published>2026-05-24T23:52:37+00:00</published><updated>2026-05-24T23:52:37+00:00</updated><id>https://simonwillison.net/2026/May/24/datasette/#atom-everything</id><summary type="html">
    
        &lt;p&gt;&lt;strong&gt;Release:&lt;/strong&gt; &lt;a href="https://github.com/simonw/datasette/releases/tag/1.0a30"&gt;datasette 1.0a30&lt;/a&gt;&lt;/p&gt;
        &lt;p&gt;The big new feature in this alpha is a new customizable "Jump to..." menu, described in detail in &lt;a href="https://datasette.io/blog/2026/jump-menu/"&gt;The extensible "Jump to" menu in Datasette 1.0a30&lt;/a&gt; on the Datasette blog. You can try it out by hitting &lt;code&gt;/&lt;/code&gt; on &lt;a href="https://latest.datasette.io/"&gt;latest.datasette.io&lt;/a&gt; - it looks like this:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Animated demo - the Jump to menu appears, and as the user types it filters to specific databases and tables and debug options" src="https://static.simonwillison.net/static/2026/menu.gif" /&gt;&lt;/p&gt;
&lt;p&gt;The new &lt;a href="https://docs.datasette.io/en/latest/plugin_hooks.html#jump-items-sql-datasette-actor-request"&gt;jump_items_sql()&lt;/a&gt; plugin hook allows plugins to add their own items to the set that's searched by the plugin.&lt;/p&gt;
    
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/projects"&gt;projects&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/datasette"&gt;datasette&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/annotated-release-notes"&gt;annotated-release-notes&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="projects"/><category term="datasette"/><category term="annotated-release-notes"/></entry><entry><title>datasette-agent 0.1a4</title><link href="https://simonwillison.net/2026/May/24/datasette-agent/#atom-everything" rel="alternate"/><published>2026-05-24T23:19:34+00:00</published><updated>2026-05-24T23:19:34+00:00</updated><id>https://simonwillison.net/2026/May/24/datasette-agent/#atom-everything</id><summary type="html">
    
        &lt;p&gt;&lt;strong&gt;Release:&lt;/strong&gt; &lt;a href="https://github.com/datasette/datasette-agent/releases/tag/0.1a4"&gt;datasette-agent 0.1a4&lt;/a&gt;&lt;/p&gt;
        &lt;p&gt;Taking advantage of the new &lt;a href="https://docs.datasette.io/en/latest/javascript_plugins.html#javascript-plugins-makejumpsections"&gt;makeJumpSections()&lt;/a&gt; JavaScript plugin hook added in &lt;a href="https://docs.datasette.io/en/latest/changelog.html#a30-2026-05-24"&gt;Datasette 1.0a30&lt;/a&gt;, &lt;code&gt;datasette-agent&lt;/code&gt; now presents this "Start a new agent chat" interface as part of the Jump to menu, any time you hit &lt;code&gt;/&lt;/code&gt;:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Animated demo - this time the demo starts on agent.datasette.io and when the menu opens it has a new Start chat box below the search box - entering 'count entries' and hitting the button causes it to start an agent conversation that counts the number of entries and returns 3300." src="https://static.simonwillison.net/static/2026/menu-agent.gif" /&gt;&lt;/p&gt;
&lt;p&gt;You can try this out by signing into &lt;a href="https://agent.datasette.io/"&gt;agent.datasette.io&lt;/a&gt; using your GitHub account.&lt;/p&gt;
    
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/datasette"&gt;datasette&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/datasette-agent"&gt;datasette-agent&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="datasette"/><category term="datasette-agent"/></entry><entry><title>datasette-fixtures 0.1a0</title><link href="https://simonwillison.net/2026/May/24/datasette-fixtures/#atom-everything" rel="alternate"/><published>2026-05-24T21:38:32+00:00</published><updated>2026-05-24T21:38:32+00:00</updated><id>https://simonwillison.net/2026/May/24/datasette-fixtures/#atom-everything</id><summary type="html">
    
        &lt;p&gt;&lt;strong&gt;Release:&lt;/strong&gt; &lt;a href="https://github.com/datasette/datasette-fixtures/releases/tag/0.1a0"&gt;datasette-fixtures 0.1a0&lt;/a&gt;&lt;/p&gt;
        &lt;p&gt;One of the smaller features in &lt;a href="https://docs.datasette.io/en/latest/changelog.html#a30-2026-05-24"&gt;Datasette 1.0a30&lt;/a&gt; is this:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;New documented &lt;a href="https://docs.datasette.io/en/latest/testing_plugins.html#datasette-fixtures-populate-fixture-database"&gt;datasette.fixtures.populate_fixture_database(conn)&lt;/a&gt; helper for creating the fixture database tables used by Datasette's own tests, intended for plugin test suites.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This new plugin takes advantage of that API. You can try it out using &lt;code&gt;uvx&lt;/code&gt; without even installing Datasette like this:&lt;/p&gt;
&lt;pre&gt;uvx --prerelease=allow \
  --with datasette-fixtures datasette \
  --get /fixtures/roadside_attractions.json&lt;/pre&gt;
&lt;p&gt;Which outputs:&lt;/p&gt;
&lt;pre&gt;{
  &lt;span class="pl-ent"&gt;"ok"&lt;/span&gt;: &lt;span class="pl-c1"&gt;true&lt;/span&gt;,
  &lt;span class="pl-ent"&gt;"next"&lt;/span&gt;: &lt;span class="pl-c1"&gt;null&lt;/span&gt;,
  &lt;span class="pl-ent"&gt;"rows"&lt;/span&gt;: [
    {&lt;span class="pl-ent"&gt;"pk"&lt;/span&gt;: &lt;span class="pl-c1"&gt;1&lt;/span&gt;, &lt;span class="pl-ent"&gt;"name"&lt;/span&gt;: &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;"&lt;/span&gt;The Mystery Spot&lt;span class="pl-pds"&gt;"&lt;/span&gt;&lt;/span&gt;, &lt;span class="pl-ent"&gt;"address"&lt;/span&gt;: &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;"&lt;/span&gt;465 Mystery Spot Road, Santa Cruz, CA 95065&lt;span class="pl-pds"&gt;"&lt;/span&gt;&lt;/span&gt;, &lt;span class="pl-ent"&gt;"url"&lt;/span&gt;: &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;"&lt;/span&gt;https://www.mysteryspot.com/&lt;span class="pl-pds"&gt;"&lt;/span&gt;&lt;/span&gt;, &lt;span class="pl-ent"&gt;"latitude"&lt;/span&gt;: &lt;span class="pl-c1"&gt;37.0167&lt;/span&gt;, &lt;span class="pl-ent"&gt;"longitude"&lt;/span&gt;: &lt;span class="pl-c1"&gt;-122.0024&lt;/span&gt;},
    {&lt;span class="pl-ent"&gt;"pk"&lt;/span&gt;: &lt;span class="pl-c1"&gt;2&lt;/span&gt;, &lt;span class="pl-ent"&gt;"name"&lt;/span&gt;: &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;"&lt;/span&gt;Winchester Mystery House&lt;span class="pl-pds"&gt;"&lt;/span&gt;&lt;/span&gt;, &lt;span class="pl-ent"&gt;"address"&lt;/span&gt;: &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;"&lt;/span&gt;525 South Winchester Boulevard, San Jose, CA 95128&lt;span class="pl-pds"&gt;"&lt;/span&gt;&lt;/span&gt;, &lt;span class="pl-ent"&gt;"url"&lt;/span&gt;: &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;"&lt;/span&gt;https://winchestermysteryhouse.com/&lt;span class="pl-pds"&gt;"&lt;/span&gt;&lt;/span&gt;, &lt;span class="pl-ent"&gt;"latitude"&lt;/span&gt;: &lt;span class="pl-c1"&gt;37.3184&lt;/span&gt;, &lt;span class="pl-ent"&gt;"longitude"&lt;/span&gt;: &lt;span class="pl-c1"&gt;-121.9511&lt;/span&gt;},
    {&lt;span class="pl-ent"&gt;"pk"&lt;/span&gt;: &lt;span class="pl-c1"&gt;3&lt;/span&gt;, &lt;span class="pl-ent"&gt;"name"&lt;/span&gt;: &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;"&lt;/span&gt;Burlingame Museum of PEZ Memorabilia&lt;span class="pl-pds"&gt;"&lt;/span&gt;&lt;/span&gt;, &lt;span class="pl-ent"&gt;"address"&lt;/span&gt;: &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;"&lt;/span&gt;214 California Drive, Burlingame, CA 94010&lt;span class="pl-pds"&gt;"&lt;/span&gt;&lt;/span&gt;, &lt;span class="pl-ent"&gt;"url"&lt;/span&gt;: &lt;span class="pl-c1"&gt;null&lt;/span&gt;, &lt;span class="pl-ent"&gt;"latitude"&lt;/span&gt;: &lt;span class="pl-c1"&gt;37.5793&lt;/span&gt;, &lt;span class="pl-ent"&gt;"longitude"&lt;/span&gt;: &lt;span class="pl-c1"&gt;-122.3442&lt;/span&gt;},
    {&lt;span class="pl-ent"&gt;"pk"&lt;/span&gt;: &lt;span class="pl-c1"&gt;4&lt;/span&gt;, &lt;span class="pl-ent"&gt;"name"&lt;/span&gt;: &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;"&lt;/span&gt;Bigfoot Discovery Museum&lt;span class="pl-pds"&gt;"&lt;/span&gt;&lt;/span&gt;, &lt;span class="pl-ent"&gt;"address"&lt;/span&gt;: &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;"&lt;/span&gt;5497 Highway 9, Felton, CA 95018&lt;span class="pl-pds"&gt;"&lt;/span&gt;&lt;/span&gt;, &lt;span class="pl-ent"&gt;"url"&lt;/span&gt;: &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;"&lt;/span&gt;https://www.bigfootdiscoveryproject.com/&lt;span class="pl-pds"&gt;"&lt;/span&gt;&lt;/span&gt;, &lt;span class="pl-ent"&gt;"latitude"&lt;/span&gt;: &lt;span class="pl-c1"&gt;37.0414&lt;/span&gt;, &lt;span class="pl-ent"&gt;"longitude"&lt;/span&gt;: &lt;span class="pl-c1"&gt;-122.0725&lt;/span&gt;}
  ],
  &lt;span class="pl-ent"&gt;"truncated"&lt;/span&gt;: &lt;span class="pl-c1"&gt;false&lt;/span&gt;
}&lt;/pre&gt;
    
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/datasette"&gt;datasette&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/uv"&gt;uv&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="datasette"/><category term="uv"/></entry><entry><title>Quoting Armin Ronacher</title><link href="https://simonwillison.net/2026/May/24/armin-ronacher/#atom-everything" rel="alternate"/><published>2026-05-24T18:46:53+00:00</published><updated>2026-05-24T18:46:53+00:00</updated><id>https://simonwillison.net/2026/May/24/armin-ronacher/#atom-everything</id><summary type="html">
    &lt;blockquote cite="https://lucumr.pocoo.org/2026/5/24/pi-oss/"&gt;&lt;p&gt;The most frustrating failure mode right now is that people submit issues that are not in their own voice. They contain an observed problem somewhere, but it has been thrown into a clanker and the clanker reworded it and made a huge mess of it. Typically, it was prompted so badly that the conclusions produced are more often than not inaccurate but always full of confidence. The result is complete guesswork on root causes, fake-minimal repros, suggested implementation strategies, analogies to adjacent but often the wrong code, and long lists of error classes that might or might not matter. [...]&lt;/p&gt;
&lt;p&gt;So at least personally, I increasingly want issue reports to be condensed to what the human actually observed:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;I ran this command.&lt;/li&gt;
&lt;li&gt;I expected this to happen.&lt;/li&gt;
&lt;li&gt;This happened instead.&lt;/li&gt;
&lt;li&gt;Here is the exact error or log.&lt;/li&gt;
&lt;/ol&gt;&lt;/blockquote&gt;
&lt;p class="cite"&gt;&amp;mdash; &lt;a href="https://lucumr.pocoo.org/2026/5/24/pi-oss/"&gt;Armin Ronacher&lt;/a&gt;, on slop issues filed against &lt;a href="https://pi.dev/"&gt;Pi&lt;/a&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/github-issues"&gt;github-issues&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/open-source"&gt;open-source&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/armin-ronacher"&gt;armin-ronacher&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/pi"&gt;pi&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/slop"&gt;slop&lt;/a&gt;&lt;/p&gt;



</summary><category term="ai"/><category term="github-issues"/><category term="llms"/><category term="ai-ethics"/><category term="open-source"/><category term="coding-agents"/><category term="generative-ai"/><category term="armin-ronacher"/><category term="pi"/><category term="slop"/></entry><entry><title>Mad House — Usborne Creepy Computer Games</title><link href="https://simonwillison.net/2026/May/24/usborne-mad-house/#atom-everything" rel="alternate"/><published>2026-05-24T17:14:11+00:00</published><updated>2026-05-24T17:14:11+00:00</updated><id>https://simonwillison.net/2026/May/24/usborne-mad-house/#atom-everything</id><summary type="html">
    
        &lt;p&gt;&lt;strong&gt;Tool:&lt;/strong&gt; &lt;a href="https://tools.simonwillison.net/usborne-mad-house"&gt;Mad House — Usborne Creepy Computer Games&lt;/a&gt;&lt;/p&gt;
        &lt;p&gt;Via &lt;a href="https://news.ycombinator.com/item?id=48258194"&gt;Hacker News&lt;/a&gt; I learned that UK publisher Usborne published &lt;a href="https://usborne.com/us/books/computer-and-coding-books"&gt;free PDFs of their 1980s Computer Books&lt;/a&gt;, some of which I remember working through on my Commodore 64 as a child.&lt;/p&gt;
&lt;p&gt;These were so great! Beautifully illustrated books with fun projects made up of code you could type into your own machine.&lt;/p&gt;
&lt;p&gt;I remember playing "Mad House" typed in from the 1983 book "Creepy Computer Games", so I fed that PDF &lt;a href="https://claude.ai/share/7b4a5617-f586-4744-b082-1650cab607cb"&gt;into Claude&lt;/a&gt; and had it build an interactive version of that game in JavaScript and HTML:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;Build a vanilla JS artifact that exactly recreates the game Mad House from this book, make sure it's mobile friendly and has a suitable retro aesthetic&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Credit the book title and link to https://usborne.com/us/books/computer-and-coding-books&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img alt="Screenshot of a retro green-on-black terminal-style game interface titled &amp;quot;MAD HOUSE — A REAL NIGHTMARE —&amp;quot; with a REC indicator, FOOTSTEPS 240, DOORS counter, three rows of ASCII corridors made of asterisks with &amp;quot;&amp;gt;&amp;quot; and &amp;quot;&amp;lt;&amp;quot; door markers, &amp;quot;PRESS START TO BEGIN&amp;quot; text, NEAR DOOR controls (X and C) and FAR DOOR controls (N and M), and a &amp;quot;▶ START / RESTART&amp;quot; button at the bottom." src="https://static.simonwillison.net/static/2026/mad-house.jpg" /&gt;&lt;/p&gt;
    
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/computer-history"&gt;computer-history&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/games"&gt;games&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/tools"&gt;tools&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="computer-history"/><category term="games"/><category term="tools"/></entry><entry><title>On the &lt;dl&gt;</title><link href="https://simonwillison.net/2026/May/23/on-the-dl/#atom-everything" rel="alternate"/><published>2026-05-23T20:24:48+00:00</published><updated>2026-05-23T20:24:48+00:00</updated><id>https://simonwillison.net/2026/May/23/on-the-dl/#atom-everything</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://benmyers.dev/blog/on-the-dl/"&gt;On the &amp;lt;dl&amp;gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
I learned a few new-to-me things about the &lt;code&gt;&amp;lt;dl&amp;gt;&lt;/code&gt; element from this article by Ben Meyer:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;A &lt;code&gt;&amp;lt;dt&amp;gt;&lt;/code&gt; can be followed by &lt;em&gt;multiple&lt;/em&gt; &lt;code&gt;&amp;lt;dd&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;You can optionally group the &lt;code&gt;&amp;lt;dt&amp;gt;&lt;/code&gt; and &lt;code&gt;&amp;lt;dd&amp;gt;&lt;/code&gt; elements in a &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt; for styling - but only a &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;You can label them using ARIA.&lt;/li&gt;
&lt;li&gt;They've been called "description lists", not "definition lists", since &lt;a href="https://www.w3.org/TR/2008/WD-html5-20080122/#the-dl"&gt;an HTML5 draft in 2008&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;So this is valid:&lt;/p&gt;
&lt;pre&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-c1"&gt;id&lt;/span&gt;="&lt;span class="pl-s"&gt;credits&lt;/span&gt;"&lt;span class="pl-kos"&gt;&amp;gt;&lt;/span&gt;Credits&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;
&lt;span class="pl-kos"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pl-ent"&gt;dl&lt;/span&gt; &lt;span class="pl-c1"&gt;aria-labelledby&lt;/span&gt;="&lt;span class="pl-s"&gt;credits&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;div&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;dt&lt;/span&gt;&lt;span class="pl-kos"&gt;&amp;gt;&lt;/span&gt;Author&lt;span class="pl-kos"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="pl-ent"&gt;dt&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;dd&lt;/span&gt;&lt;span class="pl-kos"&gt;&amp;gt;&lt;/span&gt;Jeffrey Zeldman&lt;span class="pl-kos"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="pl-ent"&gt;dd&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;dd&lt;/span&gt;&lt;span class="pl-kos"&gt;&amp;gt;&lt;/span&gt;Ethan Marcotte&lt;span class="pl-kos"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="pl-ent"&gt;dd&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;div&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;dl&lt;/span&gt;&lt;span class="pl-kos"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;Here's a useful note from Adrian Roselli on &lt;a href="https://adrianroselli.com/2025/01/updated-brief-note-on-description-list-support.html"&gt;screen reader support for description lists&lt;/a&gt;.

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


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/css"&gt;css&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/html"&gt;html&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/screen-readers"&gt;screen-readers&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/web-standards"&gt;web-standards&lt;/a&gt;&lt;/p&gt;



</summary><category term="css"/><category term="html"/><category term="screen-readers"/><category term="web-standards"/></entry><entry><title>The memory shortage is causing a repricing of consumer electronics</title><link href="https://simonwillison.net/2026/May/22/memory-shortage/#atom-everything" rel="alternate"/><published>2026-05-22T22:01:31+00:00</published><updated>2026-05-22T22:01:31+00:00</updated><id>https://simonwillison.net/2026/May/22/memory-shortage/#atom-everything</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://davidoks.blog/p/ai-is-killing-the-cheap-smartphone"&gt;The memory shortage is causing a repricing of consumer electronics&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
David Oks provides the clearest explanation I've seen yet of why consumer products that use memory are likely to get significantly more expensive over the next few years.&lt;/p&gt;
&lt;p&gt;The short version is that memory manufacturers - of which there are just three remaining large companies - have a fixed capacity in terms of how many wafers they can process at any one time. This fixed wafer capacity is then split between DDR - used in desktops and servers, LPDDR - used in mobile phones and low-energy devices, and HBM - used with GPUs.&lt;/p&gt;
&lt;p&gt;Until recently, HBM got just 2% of that wafer allocation. The enormous growth in AI data centers has pushed that up to an expected 20% by the end of 2026, and "a single gigabyte of HBM consumes more than three times the wafer capacity that a gigabyte of DDR or LPDDR does".&lt;/p&gt;
&lt;p&gt;Memory companies have learned from the extinction of their rivals that you should always under-provision rather than over-provision your fabricator capacity. The profit margins and demand for HBM (high-bandwidth memory) will constrain the production of consumer-device RAM for several years.&lt;/p&gt;
&lt;p&gt;This is already being felt in the sub-$100 smartphone market, which is particularly important to markets like Africa and South Asia.&lt;/p&gt;
&lt;p&gt;(The original title of the piece was "AI is killing the cheap smartphone" but I'm using the Hacker News rephrased title, which I think does more justice to the content.)

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


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/memory"&gt;memory&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;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="memory"/><category term="ai"/><category term="ai-ethics"/></entry><entry><title>FTC to Require Cox Media Group, Two Other Firms to Pay Nearly $1 Million to Settle Charges They Deceived Customers About “Active Listening” AI-Powered Marketing Service</title><link href="https://simonwillison.net/2026/May/22/ftc-active-listening/#atom-everything" rel="alternate"/><published>2026-05-22T04:48:32+00:00</published><updated>2026-05-22T04:48:32+00:00</updated><id>https://simonwillison.net/2026/May/22/ftc-active-listening/#atom-everything</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.ftc.gov/news-events/news/press-releases/2026/05/ftc-require-cox-media-group-two-other-firms-pay-nearly-1-million-settle-charges-they-deceived"&gt;FTC to Require Cox Media Group, Two Other Firms to Pay Nearly $1 Million to Settle Charges They Deceived Customers About “Active Listening” AI-Powered Marketing Service&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Back in 2024 Cox Media Group were caught trying to sell advertisers packages based on "active listening", with &lt;a href="https://www.documentcloud.org/documents/25051283-cmg-pitch-deck-on-voice-data-advertising-active-listening/"&gt;this deck&lt;/a&gt; which claimed:&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Smart devices capture real-time intent data by listening to our conversations&lt;/li&gt;
&lt;li&gt;Advertisers can pair this voice-data with behavioral data to target in-market consumers&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;I wrote about this &lt;a href="https://simonwillison.net/2024/Sep/2/facebook-cmg/"&gt;in September 2024&lt;/a&gt;. My theory:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I think &lt;strong&gt;active listening&lt;/strong&gt; is the term that the team came up with for “something that sounds fancy but really just means the way ad targeting platforms work already”. Then they got over-excited about the new metaphor and added that first couple of slides that talk about “voice data”, without really understanding how the tech works or what kind of a shitstorm that could kick off when people who DID understand technology started paying attention to their marketing.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This FTC press release appears to confirm that's pretty much what happened:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;CMG, MindSift and 1010 Digital Works claimed their “Active Listening” branded marketing service listened in on consumers’ conversations overheard by smart devices, in real time, to target advertising [...]&lt;/p&gt;
&lt;p&gt;According to the complaints, this service did not, in fact, listen in on consumers’ conversations or use voice data at all—nor did the service accurately place ads in customers’ desired locations. Instead, the service the companies provided consisted of reselling—at a significant markup—email lists obtained from other data brokers.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The FTC also clarify that hiding an "opt-in" to using voice data in terms of service would not be acceptable, as tricks like that do not constitute "adequate consent":&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The FTC also alleged that all three companies deceived potential customers by claiming that consumers had opted into the Active Listening service. The company, however, did not seek or obtain consumers’ consent, according to the complaints. Instead, the companies claimed that consumers had “opted in” by agreeing to the terms of service that people have to accept when downloading and using apps. Clicking through mandatory terms of service does not constitute “opt-in consent” for such an invasive service or for use of consumers’ voice data from inside their homes. If the Active Listening service had functioned as advertised, this collection and use of consumers’ voice data without adequate consent would itself violate Section 5 of the FTC Act.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Attempting to myth bust &lt;a href="https://simonwillison.net/tags/microphone-ads-conspiracy/"&gt;the conspiracy theory&lt;/a&gt; that our mobile devices target ads to us based on spying through the microphones continues to be my least rewarding niche online hobby. It's nice to have a new piece of ammunition.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://twitter.com/nydiatisdale/status/2057657844321705993"&gt;@nydiatisdale&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/microphone-ads-conspiracy"&gt;microphone-ads-conspiracy&lt;/a&gt;&lt;/p&gt;



</summary><category term="privacy"/><category term="microphone-ads-conspiracy"/></entry><entry><title>Datasette Agent</title><link href="https://simonwillison.net/2026/May/21/datasette-agent/#atom-everything" rel="alternate"/><published>2026-05-21T19:52:19+00:00</published><updated>2026-05-21T19:52:19+00:00</updated><id>https://simonwillison.net/2026/May/21/datasette-agent/#atom-everything</id><summary type="html">
    &lt;p&gt;We just &lt;a href="https://datasette.io/blog/2026/datasette-agent/"&gt;announced the first release of Datasette Agent&lt;/a&gt;, a new extensible AI assistant for Datasette. I've been working on my &lt;a href="https://llm.datasette.io/"&gt;LLM&lt;/a&gt; Python library for just over three years now, and Datasette Agent represents the moment that LLM and &lt;a href="https://datasette.io/"&gt;Datasette&lt;/a&gt; finally come together. I'm really excited about it!&lt;/p&gt;
&lt;p&gt;Datasette Agent provides a conversational interface for asking questions of the data you have stored in Datasette. Add the &lt;a href="https://github.com/datasette/datasette-agent-charts"&gt;datasette-agent-charts&lt;/a&gt; plugin and it can generate charts of your data as well.&lt;/p&gt;
&lt;h4 id="the-demo"&gt;The demo&lt;/h4&gt;
&lt;p&gt;The &lt;a href=""&gt;announcement post&lt;/a&gt; (on the new Datasette project blog) includes this &lt;a href="https://www.youtube.com/watch?v=AFZKp6hbFjI"&gt;demo video&lt;/a&gt;:&lt;/p&gt;

&lt;iframe style="margin-bottom: 1.5em;" width="560" height="315" src="https://www.youtube-nocookie.com/embed/AFZKp6hbFjI" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen="allowfullscreen"&gt; &lt;/iframe&gt;


&lt;p&gt;I recorded the video against the new &lt;a href="https://agent.datasette.io/"&gt;agent.datasette.io&lt;/a&gt; live demo instance, which runs Datasette Agent against example databases including the classic &lt;a href="https://datasette.io/global-power-plants"&gt;global-power-plants&lt;/a&gt; by &lt;a href="https://www.wri.org/research/global-database-power-plants"&gt;WRI&lt;/a&gt;, and a copy of the &lt;a href="https://datasette.simonwillison.net/"&gt;Datasette backup&lt;/a&gt; of my blog.&lt;/p&gt;
&lt;p&gt;The live demo runs on &lt;a href="https://ai.google.dev/gemini-api/docs/models/gemini-3.1-flash-lite"&gt;Gemini 3.1 Flash-Lite&lt;/a&gt; - it's cheap, fast and has no trouble writing SQLite queries.&lt;/p&gt;
&lt;p&gt;A question I asked in the demo was:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;when did Simon most recently see a pelican?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Which ran &lt;a href="https://datasette.simonwillison.net/simonwillisonblog?sql=SELECT+title%2C+commentary%2C+created+FROM+blog_beat+WHERE+beat_type+%3D+%27sighting%27+AND+%28title+LIKE+%27%25pelican%25%27+OR+commentary+LIKE+%27%25pelican%25%27%29+ORDER+BY+created+DESC+LIMIT+5"&gt;this SQL query&lt;/a&gt;:&lt;/p&gt;
&lt;div class="highlight highlight-source-sql"&gt;&lt;pre&gt;&lt;span class="pl-k"&gt;SELECT&lt;/span&gt;
  title, commentary, created
&lt;span class="pl-k"&gt;FROM&lt;/span&gt;
  blog_beat
&lt;span class="pl-k"&gt;WHERE&lt;/span&gt;
  beat_type &lt;span class="pl-k"&gt;=&lt;/span&gt; &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;'&lt;/span&gt;sighting&lt;span class="pl-pds"&gt;'&lt;/span&gt;&lt;/span&gt;
  &lt;span class="pl-k"&gt;AND&lt;/span&gt; (title &lt;span class="pl-k"&gt;LIKE&lt;/span&gt; &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;'&lt;/span&gt;%pelican%&lt;span class="pl-pds"&gt;'&lt;/span&gt;&lt;/span&gt; &lt;span class="pl-k"&gt;OR&lt;/span&gt; commentary &lt;span class="pl-k"&gt;LIKE&lt;/span&gt; &lt;span class="pl-s"&gt;&lt;span class="pl-pds"&gt;'&lt;/span&gt;%pelican%&lt;span class="pl-pds"&gt;'&lt;/span&gt;&lt;/span&gt;)
&lt;span class="pl-k"&gt;ORDER BY&lt;/span&gt;
  created &lt;span class="pl-k"&gt;DESC&lt;/span&gt;
&lt;span class="pl-k"&gt;LIMIT&lt;/span&gt;
  &lt;span class="pl-c1"&gt;5&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;And replied:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The most recent sighting of a pelican by Simon was recorded on &lt;strong&gt;May 20, 2026&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;The observation included a California Brown Pelican, along with a Common Loon, Canada Goose, Striped Shore Crab, and a California Sea Lion.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Here's &lt;a href="https://simonwillison.net/2026/May/20/sighting-363395265/"&gt;that sighting on my blog&lt;/a&gt;, and the &lt;a href="https://gist.github.com/simonw/a46d17b69659a4866adb1d868280091d"&gt;Markdown export&lt;/a&gt; of the full conversation transcript.&lt;/p&gt;
&lt;h4 id="the-plugins"&gt;The plugins&lt;/h4&gt;
&lt;p&gt;My favorite feature of Datasette Agent is that, like the rest of Datasette, it's extensible using plugins.&lt;/p&gt;
&lt;p&gt;We've shipped three plugins so far:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/datasette/datasette-agent-charts"&gt;datasette-agent-charts&lt;/a&gt;, shown in the video, adds charts to Datasette Agent, powered by &lt;a href="https://observablehq.com/plot/"&gt;Observable Plot&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/datasette/datasette-agent-openai-imagegen"&gt;datasette-agent-openai-imagegen&lt;/a&gt; adds an image generation tool to Datasette Agent using &lt;a href="https://openai.com/index/introducing-chatgpt-images-2-0/"&gt;ChatGPT Images 2.0&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/datasette/datasette-agent-sprites"&gt;datasette-agent-sprites&lt;/a&gt; provides tools for executing code in a &lt;a href="https://sprites.dev/"&gt;Fly Sprites&lt;/a&gt; persistent sandbox.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Building plugins is &lt;em&gt;really fun&lt;/em&gt;. I have a bunch more prototypes that aren't quite alpha-quality yet.&lt;/p&gt;
&lt;p&gt;Claude Code and OpenAI Codex are both proving excellent at writing plugins - just point them at a checkout of the &lt;a href="https://github.com/datasette/datasette-agent"&gt;datasette-agent repo&lt;/a&gt; for reference and tell them what you want to build!&lt;/p&gt;
&lt;h4 id="running-it-against-local-models"&gt;Running it against local models&lt;/h4&gt;
&lt;p&gt;I've also been having fun running the new plugin against local models. Here's a &lt;code&gt;uv&lt;/code&gt; one-liner to run the plugin against &lt;a href="https://huggingface.co/google/gemma-4-26B-A4B"&gt;gemma-4-26b-a4b&lt;/a&gt; in &lt;a href="https://lmstudio.ai"&gt;LM Studio&lt;/a&gt; on a Mac:&lt;/p&gt;
&lt;div class="highlight highlight-source-shell"&gt;&lt;pre&gt;uvx --prerelease=allow \
  --with datasette-agent --with llm-lmstudio \
  datasette --internal internal.db --root \
  -s plugins.datasette-llm.default_model lmstudio/google/gemma-4-26b-a4b \
  data.db&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Datasette Agent needs reliable tool calls and the ability for a model to produce SQL queries that run against SQLite. The open weight models released in the past six months are increasingly able to handle that.&lt;/p&gt;
&lt;h4 id="what-s-next"&gt;What's next&lt;/h4&gt;
&lt;p&gt;Datasette Agent opens up &lt;em&gt;so many&lt;/em&gt; opportunities for the LLM and Datasette ecosystem in general.&lt;/p&gt;
&lt;p&gt;It's already informed &lt;a href="https://simonwillison.net/2026/Apr/29/llm/"&gt;the major LLM 0.32a0 refactor&lt;/a&gt; which I'm nearly ready to roll into a stable release, maybe with some additional "LLM agent" abstractions extracte from Datasette Agent itself.&lt;/p&gt;
&lt;p&gt;I've been exploring my own take on the Claude Artifacts, which is shaping up nicely as a plugin.&lt;/p&gt;
&lt;p&gt;I'm excited to use Datasette Agent to build my own &lt;a href="https://simonwillison.net/2026/May/19/5-minute-llms/#5-minutes-llms.013.jpeg"&gt;Claw&lt;/a&gt; - a personal AI assistant built around data imported from different parts of my digital life, which is a neat excuse to revisit my older &lt;a href="https://dogsheep.github.io"&gt;Dogsheep&lt;/a&gt; family of tools.&lt;/p&gt;
&lt;p&gt;We'll also be rolling out Datasette Agent for users of &lt;a href="https://datasette.cloud/"&gt;Datasette Cloud&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Join our &lt;a href="https://discord.gg/hdxyusUFv"&gt;#datasette-agent Discord channel&lt;/a&gt; if you'd like to talk about the project.&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/sqlite"&gt;sqlite&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/llm"&gt;llm&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/uv"&gt;uv&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/datasette-agent"&gt;datasette-agent&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="projects"/><category term="sqlite"/><category term="ai"/><category term="datasette"/><category term="generative-ai"/><category term="llms"/><category term="llm"/><category term="uv"/><category term="datasette-agent"/></entry><entry><title>datasette-agent-sprites 0.1a0</title><link href="https://simonwillison.net/2026/May/21/datasette-agent-sprites/#atom-everything" rel="alternate"/><published>2026-05-21T18:21:07+00:00</published><updated>2026-05-21T18:21:07+00:00</updated><id>https://simonwillison.net/2026/May/21/datasette-agent-sprites/#atom-everything</id><summary type="html">
    
        &lt;p&gt;&lt;strong&gt;Release:&lt;/strong&gt; &lt;a href="https://github.com/datasette/datasette-agent-sprites/releases/tag/0.1a0"&gt;datasette-agent-sprites 0.1a0&lt;/a&gt;&lt;/p&gt;
        &lt;p&gt;A Datasette Agent plugin for running commands in a &lt;a href="https://sprites.dev"&gt;Fly Sprites&lt;/a&gt; sandbox.&lt;/p&gt;
    
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/sandboxing"&gt;sandboxing&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/datasette"&gt;datasette&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/fly"&gt;fly&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/datasette-agent"&gt;datasette-agent&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="sandboxing"/><category term="datasette"/><category term="fly"/><category term="datasette-agent"/></entry><entry><title>datasette-agent-charts 0.1a2</title><link href="https://simonwillison.net/2026/May/21/datasette-agent-charts/#atom-everything" rel="alternate"/><published>2026-05-21T15:15:58+00:00</published><updated>2026-05-21T15:15:58+00:00</updated><id>https://simonwillison.net/2026/May/21/datasette-agent-charts/#atom-everything</id><summary type="html">
    
        &lt;p&gt;&lt;strong&gt;Release:&lt;/strong&gt; &lt;a href="https://github.com/datasette/datasette-agent-charts/releases/tag/0.1a2"&gt;datasette-agent-charts 0.1a2&lt;/a&gt;&lt;/p&gt;
        &lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;"View SQL query" buttons below rendered charts.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
    
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/datasette"&gt;datasette&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/datasette-agent"&gt;datasette-agent&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="datasette"/><category term="datasette-agent"/></entry><entry><title>datasette-agent 0.1a3</title><link href="https://simonwillison.net/2026/May/21/datasette-agent-2/#atom-everything" rel="alternate"/><published>2026-05-21T15:04:09+00:00</published><updated>2026-05-21T15:04:09+00:00</updated><id>https://simonwillison.net/2026/May/21/datasette-agent-2/#atom-everything</id><summary type="html">
    
        &lt;p&gt;&lt;strong&gt;Release:&lt;/strong&gt; &lt;a href="https://github.com/datasette/datasette-agent/releases/tag/0.1a3"&gt;datasette-agent 0.1a3&lt;/a&gt;&lt;/p&gt;
        &lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;"View SQL query" buttons for both visible tables and collapsed SQL result tool calls.&lt;/li&gt;
&lt;li&gt;Don't display empty reasoning chunks&lt;/li&gt;
&lt;li&gt;Improved handling of truncated responses - table still displays to the user even if the SQL results were truncated when showing the agent.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;See &lt;a href="https://datasette.io/blog/2026/datasette-agent/"&gt;Datasette Agent, an extensible AI assistant for Datasette&lt;/a&gt;.&lt;/p&gt;
    
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/datasette"&gt;datasette&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/datasette-agent"&gt;datasette-agent&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="datasette"/><category term="datasette-agent"/></entry><entry><title>Quoting SpaceX S-1</title><link href="https://simonwillison.net/2026/May/20/spacex-s1/#atom-everything" rel="alternate"/><published>2026-05-20T22:26:36+00:00</published><updated>2026-05-20T22:26:36+00:00</updated><id>https://simonwillison.net/2026/May/20/spacex-s1/#atom-everything</id><summary type="html">
    &lt;blockquote cite="https://www.sec.gov/Archives/edgar/data/1181412/000162828026036936/spaceexplorationtechnologi.htm"&gt;&lt;p&gt;We have the ability to use compute resources to support our proprietary AI applications (such as Grok 5, which is currently being trained at COLOSSUS II), while also providing access to select compute capacity to third-party customers. For example, in May 2026, we entered into &lt;strong&gt;Cloud Services Agreements with Anthropic PBC&lt;/strong&gt; (“Anthropic”), an AI research and development public benefit corporation, with respect to access to &lt;strong&gt;compute capacity across COLOSSUS and COLOSSUS II&lt;/strong&gt;. Pursuant to these agreements, the customer &lt;strong&gt;has agreed to pay us $1.25 billion per month&lt;/strong&gt; through May 2029, with capacity ramping in May and June 2026 at a reduced fee. The agreements may be terminated by either party upon 90 days’ notice.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p class="cite"&gt;&amp;mdash; &lt;a href="https://www.sec.gov/Archives/edgar/data/1181412/000162828026036936/spaceexplorationtechnologi.htm"&gt;SpaceX S-1&lt;/a&gt;, highlights mine&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/grok"&gt;grok&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="anthropic"/><category term="grok"/><category term="generative-ai"/><category term="ai"/><category term="llms"/></entry><entry><title>How fast is 10 tokens per second really?</title><link href="https://simonwillison.net/2026/May/20/tokens-per-second/#atom-everything" rel="alternate"/><published>2026-05-20T17:57:45+00:00</published><updated>2026-05-20T17:57:45+00:00</updated><id>https://simonwillison.net/2026/May/20/tokens-per-second/#atom-everything</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://mikeveerman.github.io/tokenspeed/"&gt;How fast is 10 tokens per second really?&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Neat little HTML app by Mike Veerman (&lt;a href="https://github.com/MikeVeerman/tokenspeed/blob/master/index.html"&gt;source code here&lt;/a&gt;) which simulates LLM token output speeds from 5/second to 800/second.&lt;/p&gt;
&lt;p&gt;Useful if you see a model advertised as "30 tokens/second" and want to get a feel for what that actually looks like.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://news.ycombinator.com/item?id=48174920"&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;/p&gt;



</summary><category term="ai"/><category term="generative-ai"/><category term="llms"/></entry><entry><title>Google I/O, Gemini Spark, Antigravity</title><link href="https://simonwillison.net/2026/May/20/google-io/#atom-everything" rel="alternate"/><published>2026-05-20T15:32:17+00:00</published><updated>2026-05-20T15:32:17+00:00</updated><id>https://simonwillison.net/2026/May/20/google-io/#atom-everything</id><summary type="html">
    &lt;p&gt;It's hard to find much to write about Google I/O this year because I have a policy of not writing about anything that I can't try out myself, and a lot of the big announcements are "coming soon".&lt;/p&gt;
&lt;p&gt;I actually prefer to write about things that are in general availability, because I've had instances in the past where the previews didn't match what was released to the general public later on.&lt;/p&gt;
&lt;p&gt;Aside from &lt;a href="https://simonwillison.net/2026/May/19/gemini-35-flash/"&gt;Gemini 3.5 Flash&lt;/a&gt; the most interesting announcement looks to be Google's upcoming OpenClaw competitor &lt;a href="https://gemini.google/overview/agent/spark/"&gt;Gemini Spark&lt;/a&gt;, described as "your personal AI agent" which can "connect natively with your favorite Google apps like Gmail, Calendar, Drive, Docs, Sheets, Slides, YouTube, and Google Maps". The FAQ for that also includes this confusing detail:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;What Gemini model does Gemini Spark run on?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Gemini Spark runs on Gemini 3.5 Flash and Antigravity.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The &lt;a href="https://antigravity.google/"&gt;antigravity.google&lt;/a&gt; website currently lists Antigravity as a desktop app, a CLI agent tool (written in Go), the &lt;a href="https://github.com/google-antigravity/antigravity-sdk-python"&gt;Antigravity SDK&lt;/a&gt; (an open source Python wrapper around a bundled closed source Go binary), and the original Antigravity IDE (a VS Code fork).&lt;/p&gt;
&lt;p&gt;I guess Gemini Spark, the user-facing hosted agent product, might be running on that Go binary, but I'm not sure why that's worth mentioning in the FAQ!&lt;/p&gt;
&lt;p&gt;Naturally I went looking for notes on how Gemini Spark intends to handle the risk of prompt injection. The best information I could find on that was in the &lt;a href="https://cloud.google.com/blog/products/ai-machine-learning/innovations-from-google-io-26-on-google-cloud"&gt;Everything Google Cloud customers need to know coming out of Google I/O&lt;/a&gt; post aimed at enterprise customers, which includes:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Spark operates in a fully managed, secure runtime on Google Cloud, meaning you get enterprise-grade security without ever having to manage the underlying infrastructure. Every task executes in a fresh, strictly isolated, ephemeral VM to help ensure data never overlaps between sessions. To protect your enterprise, all traffic routes through our secure Agent Gateway that enforces Data Loss Prevention (DLP) policies, while user credentials remain fully encrypted and are never exposed directly to the agent.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Given how many people are going to be piping &lt;em&gt;very&lt;/em&gt; sensitive data through Gemini Spark in the near future I hope they've made this bullet-proof, or this could be a top candidate for the agent security &lt;a href="https://simonwillison.net/2026/Jan/8/llm-predictions-for-2026/#1-year-a-challenger-disaster-for-coding-agent-security"&gt;challenger disaster&lt;/a&gt; that we still haven't seen.&lt;/p&gt;
&lt;p&gt;Also of note: in &lt;a href="https://developers.googleblog.com/an-important-update-transitioning-gemini-cli-to-antigravity-cli/"&gt;Transitioning Gemini CLI to Antigravity CLI&lt;/a&gt; Google announce that the &lt;a href="https://github.com/google-gemini/gemini-cli"&gt;open source Gemini CLI&lt;/a&gt; tool (Apache 2.0 licensed TypeScript) will stop working with their AI subscription plans on June 18th, replaced by the new closed source &lt;a href="https://github.com/google-antigravity/antigravity-cli"&gt;Antigravity CLI&lt;/a&gt;.&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/gemini"&gt;gemini&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/google"&gt;google&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/google-io"&gt;google-io&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/prompt-injection"&gt;prompt-injection&lt;/a&gt;&lt;/p&gt;



</summary><category term="gemini"/><category term="google"/><category term="generative-ai"/><category term="ai"/><category term="google-io"/><category term="llms"/><category term="prompt-injection"/></entry><entry><title>datasette-agent-charts 0.1a1</title><link href="https://simonwillison.net/2026/May/20/datasette-agent-charts/#atom-everything" rel="alternate"/><published>2026-05-20T14:52:16+00:00</published><updated>2026-05-20T14:52:16+00:00</updated><id>https://simonwillison.net/2026/May/20/datasette-agent-charts/#atom-everything</id><summary type="html">
    
        &lt;p&gt;&lt;strong&gt;Release:&lt;/strong&gt; &lt;a href="https://github.com/datasette/datasette-agent-charts/releases/tag/0.1a1"&gt;datasette-agent-charts 0.1a1&lt;/a&gt;&lt;/p&gt;
        &lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;More color! Bar and waffle charts without a color column are shaded by magnitude with a sequential color scheme; color columns holding text values use the &lt;code&gt;observable10&lt;/code&gt; categorical scheme. #2&lt;/li&gt;
&lt;li&gt;Now checks &lt;code&gt;execute-sql&lt;/code&gt; permission before running the query to find the column names.&lt;/li&gt;
&lt;li&gt;Charts now display interactive tooltips.&lt;/li&gt;
&lt;li&gt;Fixed a bug where &lt;code&gt;waffleY&lt;/code&gt; charts were not described to the agent.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
    
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/datasette"&gt;datasette&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/datasette-agent"&gt;datasette-agent&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="datasette"/><category term="datasette-agent"/></entry></feed>