<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en-us" xmlns="http://www.w3.org/2005/Atom"><title>Simon Willison's Weblog: Notes</title><link href="http://simonwillison.net/" rel="alternate"/><link href="http://simonwillison.net/atom/notes/" rel="self"/><id>http://simonwillison.net/</id><updated>2026-05-16T20:23:30+00:00</updated><author><name>Simon Willison</name></author><entry><title>Warelay -&gt; OpenClaw</title><link href="https://simonwillison.net/2026/May/16/openclaw-names/#atom-notes" rel="alternate"/><published>2026-05-16T20:23:30+00:00</published><updated>2026-05-16T20:23:30+00:00</updated><id>https://simonwillison.net/2026/May/16/openclaw-names/#atom-notes</id><summary type="html">&lt;p&gt;In preparation for a lightning talk I'm giving at PyCon US &lt;a href="https://us.pycon.org/2026/schedule/presentation/175/"&gt;this afternoon&lt;/a&gt; I decided to figure out how many names OpenClaw has &lt;em&gt;actually&lt;/em&gt; had since that &lt;a href="https://github.com/openclaw/openclaw/commit/f6dd362d39b8e30bd79ef7560aab9575712ccc11"&gt;first commit&lt;/a&gt; back in November.&lt;/p&gt;
&lt;p&gt;Thanks to this &lt;a href="https://tools.simonwillison.net/python/#first_line_historypy"&gt;first_line_history.py tool&lt;/a&gt; (&lt;a href="https://github.com/simonw/tools/blob/main/python/first_line_history.py"&gt;code here&lt;/a&gt;) the answer, according to the Git history of the OpenClaw README, is:&lt;/p&gt;
&lt;p&gt;Warelay → CLAWDIS → CLAWDBOT → Clawdbot → Moltbot →🦞 OpenClaw&lt;/p&gt;
&lt;p&gt;Or in detail (the output from the tool):&lt;/p&gt;
&lt;pre&gt;
2025-11-24T11:23:15+01:00 &lt;a href="https://github.com/openclaw/openclaw/commit/16dfc1a"&gt;16dfc1a&lt;/a&gt; # Warelay — WhatsApp Relay CLI (Twilio)
2025-11-24T11:41:37+01:00 &lt;a href="https://github.com/openclaw/openclaw/commit/d4153da"&gt;d4153da&lt;/a&gt; # 📡 Warelay — WhatsApp Relay CLI (Twilio)
2025-11-24T17:47:57+01:00 &lt;a href="https://github.com/openclaw/openclaw/commit/343ef9b"&gt;343ef9b&lt;/a&gt; # 📡 warelay — WhatsApp Relay CLI (Twilio)
2025-11-25T04:44:10+01:00 &lt;a href="https://github.com/openclaw/openclaw/commit/14b3c6f"&gt;14b3c6f&lt;/a&gt; # 📡 warelay — WhatsApp Relay CLI
2025-11-25T12:48:40+01:00 &lt;a href="https://github.com/openclaw/openclaw/commit/4814021"&gt;4814021&lt;/a&gt; # 📡 warelay — Send, receive, and auto-reply on WhatsApp—Twilio-backed or QR-linked.
2025-11-25T13:50:18+01:00 &lt;a href="https://github.com/openclaw/openclaw/commit/d51a3e9"&gt;d51a3e9&lt;/a&gt; # warelay 📡 - Send, receive, and auto-reply on WhatsApp via Twilio or QR-linked WhatsApp Web; webhook setup in one command
2025-11-25T13:51:13+01:00 &lt;a href="https://github.com/openclaw/openclaw/commit/4d2a8a8"&gt;4d2a8a8&lt;/a&gt; # 📡 warelay — Send, receive, and auto-reply on WhatsApp—Twilio-backed or QR-linked.
2025-11-25T14:52:43+01:00 &lt;a href="https://github.com/openclaw/openclaw/commit/1ef7f4d"&gt;1ef7f4d&lt;/a&gt; # 📡 warelay — Send, receive, and auto-reply on WhatsApp.
2025-12-03T15:45:32+00:00 &lt;a href="https://github.com/openclaw/openclaw/commit/a27ee23"&gt;a27ee23&lt;/a&gt; # 🦞 CLAWDIS — WhatsApp Gateway for AI Agents
2025-12-08T12:43:13+01:00 &lt;a href="https://github.com/openclaw/openclaw/commit/17fa2f4"&gt;17fa2f4&lt;/a&gt; # 🦞 CLAWDIS — WhatsApp &amp;amp; Telegram Gateway for AI Agents
2025-12-19T18:41:17+01:00 &lt;a href="https://github.com/openclaw/openclaw/commit/7710439"&gt;7710439&lt;/a&gt; # 🦞 CLAWDIS — Personal AI Assistant
2026-01-04T14:32:47+00:00 &lt;a href="https://github.com/openclaw/openclaw/commit/246adaa"&gt;246adaa&lt;/a&gt; # 🦞 CLAWDBOT — Personal AI Assistant
2026-01-10T05:14:09+01:00 &lt;a href="https://github.com/openclaw/openclaw/commit/cdb915d"&gt;cdb915d&lt;/a&gt; # 🦞 Clawdbot — Personal AI Assistant
2026-01-27T13:37:47-05:00 &lt;a href="https://github.com/openclaw/openclaw/commit/3fe4b25"&gt;3fe4b25&lt;/a&gt; # 🦞 Moltbot — Personal AI Assistant
2026-01-30T03:15:10+01:00 &lt;a href="https://github.com/openclaw/openclaw/commit/9a71607"&gt;9a71607&lt;/a&gt; # 🦞 OpenClaw — Personal AI Assistant
&lt;/pre&gt;

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

</summary><category term="openclaw"/><category term="git"/><category term="tools"/></entry><entry><title>Not so locked in any more</title><link href="https://simonwillison.net/2026/May/14/not-so-locked-in/#atom-notes" rel="alternate"/><published>2026-05-14T22:53:49+00:00</published><updated>2026-05-14T22:53:49+00:00</updated><id>https://simonwillison.net/2026/May/14/not-so-locked-in/#atom-notes</id><summary type="html">&lt;p&gt;This &lt;a href="https://simonwillison.net/2026/May/14/mitchell-hashimoto/"&gt;Mitchell Hashimoto quote&lt;/a&gt; about Bun migrating from Zig to Rust reminded me of a similar conversation I had at a conference last week.&lt;/p&gt;
&lt;p&gt;I was talking to someone who worked for a medium sized technology company with a pair of legacy/&lt;a href="https://simonwillison.net/2018/Jul/17/mark-norman-francis/"&gt;legendary&lt;/a&gt; iPhone and Android apps.&lt;/p&gt;
&lt;p&gt;They told me they had just completed a coding-agent driven rewrite of both apps to React Native.&lt;/p&gt;
&lt;p&gt;I asked why they chose that, given that coding agents presumably drive down the cost of maintaining separate iPhone and Android apps.&lt;/p&gt;
&lt;p&gt;They said that React Native has improved a lot over the past few years and covered everything their apps needed to do.&lt;/p&gt;
&lt;p&gt;And... if it turned out to be the wrong decision, they could &lt;strong&gt;just port back to native&lt;/strong&gt; in the future.&lt;/p&gt;
&lt;p&gt;Like Mitchell said:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Programming languages used to be LOCK IN, and they're increasingly not so.&lt;/p&gt;
&lt;/blockquote&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/react"&gt;react&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/coding-agents"&gt;coding-agents&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-assisted-programming"&gt;ai-assisted-programming&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;&lt;/p&gt;

</summary><category term="react"/><category term="coding-agents"/><category term="ai-assisted-programming"/><category term="generative-ai"/><category term="ai"/><category term="llms"/></entry><entry><title>April 2026 newsletter</title><link href="https://simonwillison.net/2026/May/4/april-newsletter/#atom-notes" rel="alternate"/><published>2026-05-04T22:38:36+00:00</published><updated>2026-05-04T22:38:36+00:00</updated><id>https://simonwillison.net/2026/May/4/april-newsletter/#atom-notes</id><summary type="html">&lt;p&gt;I just sent out the April edition of my &lt;a href="https://github.com/sponsors/simonw/"&gt;sponsors-only monthly newsletter&lt;/a&gt;. If you are a sponsor (or if you start a sponsorship now) you can &lt;a href="https://github.com/simonw-private/monthly/blob/main/2026-04-april.md"&gt;access it here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In this month's newsletter:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Opus 4.7 and GPT-5.5, both with price increases&lt;/li&gt;
&lt;li&gt;Claude Mythos and LLM security research&lt;/li&gt;
&lt;li&gt;ChatGPT Images 2.0&lt;/li&gt;
&lt;li&gt;More model releases&lt;/li&gt;
&lt;li&gt;Other highlights from my blog&lt;/li&gt;
&lt;li&gt;What I'm using, April 2026 edition&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here's &lt;a href="https://github.com/simonw/monthly-newsletter-archive/blob/main/2026-03-march.md"&gt;a copy of the March newsletter&lt;/a&gt; as a preview of what you'll get. Pay $10/month to stay a month ahead of the free copy!&lt;/p&gt;

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

</summary><category term="newsletter"/></entry><entry><title>The Zig project's rationale for their firm anti-AI contribution policy</title><link href="https://simonwillison.net/2026/Apr/30/zig-anti-ai/#atom-notes" rel="alternate"/><published>2026-04-30T01:24:23+00:00</published><updated>2026-04-30T01:24:23+00:00</updated><id>https://simonwillison.net/2026/Apr/30/zig-anti-ai/#atom-notes</id><summary type="html">&lt;p&gt;&lt;a href="https://ziglang.org/"&gt;Zig&lt;/a&gt; has one of the most stringent &lt;a href="https://ziglang.org/code-of-conduct/"&gt;anti-LLM policies&lt;/a&gt; of any major open source project:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;No LLMs for issues.&lt;/p&gt;
&lt;p&gt;No LLMs for pull requests.&lt;/p&gt;
&lt;p&gt;No LLMs for comments on the bug tracker, including translation. English is encouraged, but not required. You are welcome to post in your native language and rely on others to have their own translation tools of choice to interpret your words.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The most prominent project written in Zig may be the &lt;a href="https://bun.com/"&gt;Bun&lt;/a&gt; JavaScript runtime, which was &lt;a href="https://bun.com/blog/bun-joins-anthropic"&gt;acquired by Anthropic&lt;/a&gt; in December 2025 and, unsurprisingly, makes heavy use of AI assistance.&lt;/p&gt;
&lt;p&gt;Bun operates its own fork of Zig, and recently &lt;a href="https://x.com/bunjavascript/status/2048427636414923250"&gt;achieved a 4x performance improvement&lt;/a&gt; on Bun compile after adding "parallel semantic analysis and multiple codegen units to the llvm backend". Here's &lt;a href="https://github.com/oven-sh/zig/compare/upgrade-0.15.2%E2%80%A6upgrade-0.15.2-fast"&gt;that code&lt;/a&gt;. But &lt;a href="https://twitter.com/bunjavascript/status/2048428104893542781"&gt;@bunjavascript says&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;We do not currently plan to upstream this, as Zig has a strict ban on LLM-authored contributions.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;(Update: here's &lt;a href="https://ziggit.dev/t/bun-s-zig-fork-got-4x-faster-compilation-times/15183/19"&gt;a Zig core contributor&lt;/a&gt; providing details on why they wouldn't accept that particular patch independent of the LLM issue - parallel semantic analysis is a long planned feature but has implications "for the Zig language itself".)&lt;/p&gt;
&lt;p&gt;In &lt;a href="https://kristoff.it/blog/contributor-poker-and-ai/"&gt;Contributor Poker and Zig's AI Ban&lt;/a&gt; (&lt;a href="https://lobste.rs/s/ifcyr1/contributor_poker_zig_s_ai_ban"&gt;via Lobste.rs&lt;/a&gt;) Zig Software Foundation VP of Community Loris Cro explains the rationale for this strict ban. It's the best articulation I've seen yet for a blanket ban on LLM-assisted contributions:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;In successful open source projects you eventually reach a point where you start getting more PRs than what you’re capable of processing. Given what I mentioned so far, it would make sense to stop accepting imperfect PRs in order to maximize ROI from your work, but that’s not what we do in the Zig project. Instead, &lt;strong&gt;we try our best to help new contributors to get their work in, even if they need some help getting there&lt;/strong&gt;. We don’t do this just because it’s the “right” thing to do, but also &lt;strong&gt;because it’s the smart thing to do&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Zig values contributors over their contributions. Each contributor represents an investment by the Zig core team - the primary goal of reviewing and accepting PRs isn't to land new code, it's to help grow new contributors who can become trusted and prolific over time.&lt;/p&gt;
&lt;p&gt;LLM assistance breaks that completely. It doesn't matter if the LLM helps you submit a &lt;em&gt;perfect&lt;/em&gt; PR to Zig - the time the Zig team spends reviewing your work does nothing to help them add new, confident, trustworthy contributors to their overall project.&lt;/p&gt;
&lt;p&gt;Loris explains the name here:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;The reason I call it “contributor poker” is because, just like people say about the actual card game, “you play the person, not the cards”. In contributor poker, you bet on the contributor, not on the contents of their first PR.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This makes a lot of sense to me. It relates to an idea I've seen circulating elsewhere: if a PR was mostly written by an LLM, why should a project maintainer spend time reviewing and discussing that PR as opposed to firing up their own LLM to solve the same problem?&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/zig"&gt;zig&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-ethics"&gt;ai-ethics&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/open-source"&gt;open-source&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/javascript"&gt;javascript&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai-assisted-programming"&gt;ai-assisted-programming&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/bun"&gt;bun&lt;/a&gt;&lt;/p&gt;

</summary><category term="anthropic"/><category term="zig"/><category term="ai"/><category term="llms"/><category term="ai-ethics"/><category term="open-source"/><category term="javascript"/><category term="ai-assisted-programming"/><category term="generative-ai"/><category term="bun"/></entry><entry><title>WHY ARE YOU LIKE THIS</title><link href="https://simonwillison.net/2026/Apr/25/why-are-you-like-this/#atom-notes" rel="alternate"/><published>2026-04-25T16:44:01+00:00</published><updated>2026-04-25T16:44:01+00:00</updated><id>https://simonwillison.net/2026/Apr/25/why-are-you-like-this/#atom-notes</id><summary type="html">&lt;p&gt;@scottjla &lt;a href="https://twitter.com/scottjla/status/2047535371664457863"&gt;on Twitter&lt;/a&gt; in reply to my &lt;a href="https://simonwillison.net/tags/pelican-riding-a-bicycle/"&gt;pelican riding a bicycle&lt;/a&gt; benchmark:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I feel like we need to stack these tests now&lt;/p&gt;
&lt;p&gt;&lt;img alt="AI generated image. A pelican is riding a bicycle along a dirt track, chased by a police car. The pelican looks panicked, likely because there is an astronaut (with prehensile toes for some reason) riding the pelican clinging on to where its ears should be. The astronaut is being ridden by a horse, with an equally wild expression. A slice of pizza and a can and a cowboy hat are falling next to them. A road sign in the background reads WHY ARE YOU LIKE THIS." src="https://static.simonwillison.net/static/2026/why-are-you-like-this.jpeg" /&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I checked to confirm that the model (ChatGPT Images 2.0) added the "WHY ARE YOU LIKE THIS" sign of its own accord and &lt;a href="https://chatgpt.com/share/69ebff27-2220-839f-b065-8c3516ea9b6d"&gt;it did&lt;/a&gt; - the prompt Scott used was:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;Create an image of a horse riding an astronaut, where the astronaut is riding a pelican that is riding a bicycle. It looks very chaotic but they all just manage to balance on top of each other&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/text-to-image"&gt;text-to-image&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/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/slop"&gt;slop&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/chatgpt"&gt;chatgpt&lt;/a&gt;&lt;/p&gt;

</summary><category term="text-to-image"/><category term="pelican-riding-a-bicycle"/><category term="ai"/><category term="generative-ai"/><category term="slop"/><category term="chatgpt"/></entry><entry><title>It's a big one</title><link href="https://simonwillison.net/2026/Apr/24/weekly/#atom-notes" rel="alternate"/><published>2026-04-24T04:09:54+00:00</published><updated>2026-04-24T04:09:54+00:00</updated><id>https://simonwillison.net/2026/Apr/24/weekly/#atom-notes</id><summary type="html">&lt;p&gt;&lt;a href="https://simonw.substack.com/p/gpt-55-chatgpt-images-20-qwen36-27b"&gt;This week's edition&lt;/a&gt; of my email newsletter (aka &lt;a href="https://simonwillison.net/2023/Apr/4/substack-observable/"&gt;content from this blog&lt;/a&gt; delivered to your inbox) features 4 pelicans riding bicycles, 1 possum on an e-scooter, up to 5 raccoons with ham radios hiding in crowds, 5 blog posts, 8 links, 3 quotes and a new chapter of my Agentic Engineering Patterns guide.&lt;/p&gt;

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

</summary><category term="newsletter"/></entry><entry><title>Steve Yegge</title><link href="https://simonwillison.net/2026/Apr/13/steve-yegge/#atom-notes" rel="alternate"/><published>2026-04-13T20:59:00+00:00</published><updated>2026-04-13T20:59:00+00:00</updated><id>https://simonwillison.net/2026/Apr/13/steve-yegge/#atom-notes</id><summary type="html">&lt;p&gt;&lt;a href="https://twitter.com/steve_yegge/status/2043747998740689171"&gt;Steve Yegge&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I was chatting with my buddy at Google, who's been a tech director there for about 20 years, about their AI adoption. Craziest convo I've had all year.&lt;/p&gt;
&lt;p&gt;The TL;DR is that Google engineering appears to have the same AI adoption footprint as John Deere, the tractor company. Most of the industry has the same internal adoption curve: 20% agentic power users, 20% outright refusers, 60% still using Cursor or equivalent chat tool. It turns out Google has this curve too. [...]&lt;/p&gt;
&lt;p&gt;There has been an industry-wide hiring freeze for 18+ months, during which time nobody has been moving jobs. So there are no clued-in people coming in from the outside to tell Google how far behind they are, how utterly mediocre they have become as an eng org.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href="https://twitter.com/addyosmani/status/2043812343508021460"&gt;Addy Osmani&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;On behalf of @Google, this post doesn't match the state of agentic coding at our company. Over 40K SWEs use agentic coding weekly here. Googlers have access to our own versions of @antigravity, @geminicli, custom models, skills, CLIs and MCPs for our daily work. Orchestrators, agent loops, virtual SWE teams and many other systems are actively available to folks. [...]&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href="https://twitter.com/demishassabis/status/2043867486320222333"&gt;Demis Hassabis&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Maybe tell your buddy to do some actual work and to stop spreading absolute nonsense. This post is completely false and just pure clickbait.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;Update 20th April 2026&lt;/strong&gt;: Steve &lt;a href="https://twitter.com/Steve_Yegge/status/2046260541912707471"&gt;doubled down&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;My tweet last week about Google's AI adoption drew a lot of pushback, to say the least.&lt;/p&gt;
&lt;p&gt;Since then, Googlers from multiple orgs have reached out to me independently and anonymously. They've expressed fear of being doxxed, concern about what they saw as bullying of me, and general corroboration of my original tweet. [...]&lt;/p&gt;
&lt;/blockquote&gt;

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

</summary><category term="addy-osmani"/><category term="steve-yegge"/><category term="google"/><category term="generative-ai"/><category term="agentic-engineering"/><category term="ai"/><category term="llms"/></entry><entry><title>Gemma 4 audio with MLX</title><link href="https://simonwillison.net/2026/Apr/12/mlx-audio/#atom-notes" rel="alternate"/><published>2026-04-12T23:57:53+00:00</published><updated>2026-04-12T23:57:53+00:00</updated><id>https://simonwillison.net/2026/Apr/12/mlx-audio/#atom-notes</id><summary type="html">&lt;p&gt;Thanks to a &lt;a href="https://twitter.com/RahimNathwani/status/2039961945613209852"&gt;tip from Rahim Nathwani&lt;/a&gt;, here's a &lt;code&gt;uv run&lt;/code&gt; recipe for transcribing an audio file on macOS using the 10.28 GB &lt;a href="https://huggingface.co/google/gemma-4-E2B"&gt;Gemma 4 E2B model&lt;/a&gt; with MLX and &lt;a href="https://github.com/Blaizzy/mlx-vlm"&gt;mlx-vlm&lt;/a&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;uv run --python 3.13 --with mlx_vlm --with torchvision --with gradio \
  mlx_vlm.generate \
  --model google/gemma-4-e2b-it \
  --audio file.wav \
  --prompt "Transcribe this audio" \
  --max-tokens 500 \
  --temperature 1.0
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;audio controls style="width: 100%"&gt;
  &lt;source src="https://static.simonwillison.net/static/2026/demo-audio-for-gemma.wav" type="audio/wav"&gt;
  Your browser does not support the audio element.
&lt;/audio&gt;&lt;/p&gt;
&lt;p&gt;I tried it on &lt;a href="https://static.simonwillison.net/static/2026/demo-audio-for-gemma.wav"&gt;this 14 second &lt;code&gt;.wav&lt;/code&gt; file&lt;/a&gt; and it output the following:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;This front here is a quick voice memo. I want to try it out with MLX VLM. Just going to see if it can be transcribed by Gemma and how that works.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;(That was supposed to be "This right here..." and "... how well that works" but I can hear why it misinterpreted that as "front" and "how that works".)&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/uv"&gt;uv&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/mlx"&gt;mlx&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/gemma"&gt;gemma&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/speech-to-text"&gt;speech-to-text&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/python"&gt;python&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;&lt;/p&gt;

</summary><category term="uv"/><category term="mlx"/><category term="ai"/><category term="gemma"/><category term="llms"/><category term="speech-to-text"/><category term="python"/><category term="generative-ai"/></entry><entry><title>Kākāpō parrots</title><link href="https://simonwillison.net/2026/Apr/10/kakapo/#atom-notes" rel="alternate"/><published>2026-04-10T19:07:02+00:00</published><updated>2026-04-10T19:07:02+00:00</updated><id>https://simonwillison.net/2026/Apr/10/kakapo/#atom-notes</id><summary type="html">&lt;p&gt;Lenny &lt;a href="https://twitter.com/lennysan/status/2042615413494939943"&gt;posted&lt;/a&gt; another snippet from &lt;a href="https://simonwillison.net/2026/Apr/2/lennys-podcast/"&gt;our 1 hour 40 minute podcast recording&lt;/a&gt; and it's about kākāpō parrots!&lt;/p&gt;
&lt;p&gt;&lt;video
  src="https://static.simonwillison.net/static/2026/kakapo-lenny.mp4"
  poster="https://static.simonwillison.net/static/2026/kakapo-lenny.jpg"
  controls
  preload="none"
  playsinline
  style="display:block; max-width:400px; width:100%; height:auto; margin:0 auto"
&gt;&lt;track src="https://static.simonwillison.net/static/cors-allow/2026/kakapo-lenny.vtt" kind="captions" srclang="en" label="English"&gt;&lt;/video&gt;
&lt;/p&gt;

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

</summary><category term="kakapo"/></entry><entry><title>ChatGPT voice mode is a weaker model</title><link href="https://simonwillison.net/2026/Apr/10/voice-mode-is-weaker/#atom-notes" rel="alternate"/><published>2026-04-10T15:56:02+00:00</published><updated>2026-04-10T15:56:02+00:00</updated><id>https://simonwillison.net/2026/Apr/10/voice-mode-is-weaker/#atom-notes</id><summary type="html">&lt;p&gt;I think it's non-obvious to many people that the OpenAI voice mode runs on a much older, much weaker model - it feels like the AI that you can talk to should be the smartest AI but it really isn't.&lt;/p&gt;
&lt;p&gt;If you ask ChatGPT voice mode for its knowledge cutoff date it tells you April 2024 - it's a GPT-4o era model.&lt;/p&gt;
&lt;p&gt;This thought inspired by &lt;a href="https://twitter.com/karpathy/status/2042334451611693415"&gt;this Andrej Karpathy tweet&lt;/a&gt; about the growing gap in understanding of AI capability based on the access points and domains people are using the models with:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[...] It really is simultaneously the case that OpenAI's free and I think slightly orphaned (?) "Advanced Voice Mode" will fumble the dumbest questions in your Instagram's reels and &lt;em&gt;at the same time&lt;/em&gt;, OpenAI's highest-tier and paid Codex model will go off for 1 hour to coherently restructure an entire code base, or find and exploit vulnerabilities in computer systems.&lt;/p&gt;
&lt;p&gt;This part really works and has made dramatic strides because 2 properties:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;these domains offer explicit reward functions that are verifiable meaning they are easily amenable to reinforcement learning training (e.g. unit tests passed yes or no, in contrast to writing, which is much harder to explicitly judge),  but also&lt;/li&gt;
&lt;li&gt;they are a lot more valuable in b2b settings, meaning that the biggest fraction of the team is focused on improving them.&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/andrej-karpathy"&gt;andrej-karpathy&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/openai"&gt;openai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/chatgpt"&gt;chatgpt&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="andrej-karpathy"/><category term="generative-ai"/><category term="openai"/><category term="chatgpt"/><category term="ai"/><category term="llms"/></entry><entry><title>The cognitive impact of coding agents</title><link href="https://simonwillison.net/2026/Apr/3/cognitive-cost/#atom-notes" rel="alternate"/><published>2026-04-03T23:57:04+00:00</published><updated>2026-04-03T23:57:04+00:00</updated><id>https://simonwillison.net/2026/Apr/3/cognitive-cost/#atom-notes</id><summary type="html">&lt;p&gt;A fun thing about &lt;a href="https://simonwillison.net/2026/Apr/2/lennys-podcast/"&gt;recording a podcast&lt;/a&gt; with a professional like Lenny Rachitsky is that his team know how to slice the resulting video up into TikTok-sized short form vertical videos. Here's &lt;a href="https://x.com/lennysan/status/2039845666680176703"&gt;one he shared on Twitter today&lt;/a&gt; which ended up attracting over 1.1m views!&lt;/p&gt;
&lt;p&gt;&lt;video
  src="https://static.simonwillison.net/static/2026/cognitive-cost.mp4"
  poster="https://static.simonwillison.net/static/2026/cognitive-cost-poster.jpg"
  controls
  preload="none"
  playsinline
  style="display:block; max-width:400px; width:100%; height:auto; margin:0 auto"
&gt;&lt;track src="https://static.simonwillison.net/static/2026/cognitive-cost.vtt" kind="captions" srclang="en" label="English"&gt;&lt;/video&gt;
&lt;/p&gt;
&lt;p&gt;That was 48 seconds. Our &lt;a href="https://simonwillison.net/2026/Apr/2/lennys-podcast/"&gt;full conversation&lt;/a&gt; lasted 1 hour 40 minutes.&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/coding-agents"&gt;coding-agents&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/agentic-engineering"&gt;agentic-engineering&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/podcast-appearances"&gt;podcast-appearances&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/cognitive-debt"&gt;cognitive-debt&lt;/a&gt;&lt;/p&gt;

</summary><category term="ai-ethics"/><category term="coding-agents"/><category term="agentic-engineering"/><category term="generative-ai"/><category term="podcast-appearances"/><category term="ai"/><category term="llms"/><category term="cognitive-debt"/></entry><entry><title>March 2026 sponsors-only newsletter</title><link href="https://simonwillison.net/2026/Apr/2/march-newsletter/#atom-notes" rel="alternate"/><published>2026-04-02T05:15:04+00:00</published><updated>2026-04-02T05:15:04+00:00</updated><id>https://simonwillison.net/2026/Apr/2/march-newsletter/#atom-notes</id><summary type="html">&lt;p&gt;I just sent the March edition of my &lt;a href="https://github.com/sponsors/simonw/"&gt;sponsors-only monthly newsletter&lt;/a&gt;. If you are a sponsor (or if you start a sponsorship now) you can &lt;a href="https://github.com/simonw-private/monthly/blob/main/2026-03-march.md"&gt;access it here&lt;/a&gt;. In this month's newsletter:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;More agentic engineering patterns&lt;/li&gt;
&lt;li&gt;Streaming experts with MoE models on a Mac&lt;/li&gt;
&lt;li&gt;Model releases in March&lt;/li&gt;
&lt;li&gt;Vibe porting&lt;/li&gt;
&lt;li&gt;Supply chain attacks against PyPI and NPM&lt;/li&gt;
&lt;li&gt;Stuff I shipped&lt;/li&gt;
&lt;li&gt;What I'm using, March 2026 edition&lt;/li&gt;
&lt;li&gt;And a couple of museums&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here's &lt;a href="https://gist.github.com/simonw/8b5fa061937842659dbcd5bd676ce0e8"&gt;a copy of the February newsletter&lt;/a&gt; as a preview of what you'll get. Pay $10/month to stay a month ahead of the free copy!&lt;/p&gt;

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

</summary><category term="newsletter"/></entry><entry><title>Streaming experts</title><link href="https://simonwillison.net/2026/Mar/24/streaming-experts/#atom-notes" rel="alternate"/><published>2026-03-24T05:09:03+00:00</published><updated>2026-03-24T05:09:03+00:00</updated><id>https://simonwillison.net/2026/Mar/24/streaming-experts/#atom-notes</id><summary type="html">&lt;p&gt;I wrote about Dan Woods' experiments with &lt;strong&gt;streaming experts&lt;/strong&gt; &lt;a href="https://simonwillison.net/2026/Mar/18/llm-in-a-flash/"&gt;the other day&lt;/a&gt;, the trick where you run larger Mixture-of-Experts models on hardware that doesn't have enough RAM to fit the entire model by instead streaming the necessary expert weights from SSD for each token that you process.&lt;/p&gt;
&lt;p&gt;Five days ago Dan was running Qwen3.5-397B-A17B in 48GB of RAM. Today &lt;a href="https://twitter.com/seikixtc/status/2036246162936910322"&gt;@seikixtc reported&lt;/a&gt; running the colossal Kimi K2.5 - a 1 trillion parameter model with 32B active weights at any one time, in 96GB of RAM on an M2 Max MacBook Pro.&lt;/p&gt;
&lt;p&gt;And &lt;a href="https://twitter.com/anemll/status/2035901335984611412"&gt;@anemll showed&lt;/a&gt; that same Qwen3.5-397B-A17B model running on an iPhone, albeit at just 0.6 tokens/second - &lt;a href="https://github.com/Anemll/flash-moe/tree/iOS-App"&gt;iOS repo here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I think this technique has legs. Dan and his fellow tinkerers are continuing to run &lt;a href="https://simonwillison.net/tags/autoresearch/"&gt;autoresearch loops&lt;/a&gt; in order to find yet more optimizations to squeeze more performance out of these models.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update&lt;/strong&gt;: Now Daniel Isaac &lt;a href="https://twitter.com/danpacary/status/2036480556045836603"&gt;got Kimi K2.5 working&lt;/a&gt; on a 128GB M4 Max at ~1.7 tokens/second.&lt;/p&gt;

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

</summary><category term="definitions"/><category term="llms"/><category term="ai"/><category term="autoresearch"/><category term="generative-ai"/><category term="kimi"/><category term="local-llms"/><category term="qwen"/></entry><entry><title>Beats now have notes</title><link href="https://simonwillison.net/2026/Mar/23/beats-now-have-notes/#atom-notes" rel="alternate"/><published>2026-03-23T02:13:13+00:00</published><updated>2026-03-23T02:13:13+00:00</updated><id>https://simonwillison.net/2026/Mar/23/beats-now-have-notes/#atom-notes</id><summary type="html">&lt;p&gt;Last month I &lt;a href="https://simonwillison.net/2026/Feb/20/beats/"&gt;added a feature I call beats&lt;/a&gt; to this blog, pulling in some of my other content from &lt;a href="https://simonwillison.net/elsewhere/"&gt;external sources&lt;/a&gt; and including it on the homepage, search and various archive pages on the site.&lt;/p&gt;
&lt;p&gt;On any given day these frequently outnumber my regular posts. They were looking a little bit thin and were lacking any form of explanation beyond a link, so I've added the ability to annotate them with a "note" which now shows up as part of their display.&lt;/p&gt;
&lt;p&gt;Here's what that looks like &lt;a href="https://simonwillison.net/2026/Mar/22/"&gt;for the content I published yesterday&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;&lt;img class="blogmark-image" style="width:80%" src="https://static.simonwillison.net/static/2026/beats-notes.jpg" alt="Screenshot of part of my blog homepage showing four &amp;quot;beats&amp;quot; entries from March 22, 2026, each tagged as RESEARCH or TOOL, with titles like &amp;quot;PCGamer Article Performance Audit&amp;quot; and &amp;quot;DNS Lookup&amp;quot;, now annotated with short descriptive notes explaining the context behind each linked item."&gt;&lt;/p&gt;
&lt;p&gt;I've also updated the &lt;a href="https://simonwillison.net/atom/everything/"&gt;/atom/everything/&lt;/a&gt; Atom feed to include any beats that I've attached notes to.&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/atom"&gt;atom&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/blogging"&gt;blogging&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/site-upgrades"&gt;site-upgrades&lt;/a&gt;&lt;/p&gt;

</summary><category term="atom"/><category term="blogging"/><category term="site-upgrades"/></entry><entry><title>February sponsors-only newsletter</title><link href="https://simonwillison.net/2026/Mar/2/february-newsletter/#atom-notes" rel="alternate"/><published>2026-03-02T14:53:15+00:00</published><updated>2026-03-02T14:53:15+00:00</updated><id>https://simonwillison.net/2026/Mar/2/february-newsletter/#atom-notes</id><summary type="html">&lt;p&gt;I just sent the February edition of my &lt;a href="https://github.com/sponsors/simonw/"&gt;sponsors-only monthly newsletter&lt;/a&gt;. If you are a sponsor (or if you start a sponsorship now) you can &lt;a href="https://github.com/simonw-private/monthly/blob/main/2026-02-february.md"&gt;access it here&lt;/a&gt;. In this month's newsletter:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;More OpenClaw, and Claws in general&lt;/li&gt;
&lt;li&gt;I started a not-quite-a-book about Agentic Engineering&lt;/li&gt;
&lt;li&gt;StrongDM, Showboat and Rodney&lt;/li&gt;
&lt;li&gt;Kākāpō breeding season&lt;/li&gt;
&lt;li&gt;Model releases&lt;/li&gt;
&lt;li&gt;What I'm using, February 2026 edition&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here's &lt;a href="https://gist.github.com/simonw/36f567d1b3f8bb4ab4d872d477fbb295"&gt;a copy of the January newsletter&lt;/a&gt; as a preview of what you'll get. Pay $10/month to stay a month ahead of the free copy!&lt;/p&gt;
&lt;p&gt;I use Claude as a proofreader for spelling and grammar via &lt;a href="https://simonwillison.net/guides/agentic-engineering-patterns/prompts/#proofreader"&gt;this prompt&lt;/a&gt; which also asks it to "Spot any logical errors or factual mistakes". I'm delighted to report that Claude Opus 4.6 called me out on this one:&lt;/p&gt;
&lt;p&gt;&lt;img alt="5. &amp;quot;No new chicks for four years (due to a lack of fruiting rimu trees)&amp;quot;
The phrasing &amp;quot;lack of fruiting rimu trees&amp;quot; is slightly imprecise. The issue isn't that rimu trees failed to fruit at all, but that there was no mass fruiting (masting) event, which is the specific trigger for kākāpō breeding. Consider &amp;quot;due to a lack of rimu masting&amp;quot; or &amp;quot;due to a lack of mass rimu fruiting.&amp;quot;" src="https://static.simonwillison.net/static/2026/claude-fact-check.jpg" /&gt;&lt;/p&gt;

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

</summary><category term="newsletter"/><category term="kakapo"/><category term="claude"/></entry></feed>