<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en-us" xmlns="http://www.w3.org/2005/Atom"><title>Simon Willison's Weblog: Beats</title><link href="http://simonwillison.net/" rel="alternate"/><link href="http://simonwillison.net/atom/beats/" rel="self"/><id>http://simonwillison.net/</id><updated>2026-09-29T19:47:31+00:00</updated><author><name>Simon Willison</name></author><entry><title>California Brown Pelican</title><link href="https://simonwillison.net/2026/Sep/29/sighting-404551608/" rel="alternate"/><published>2026-09-29T19:47:31+00:00</published><updated>2026-09-29T19:47:31+00:00</updated><id>https://simonwillison.net/2026/Sep/29/sighting-404551608/</id><summary type="html">&lt;p&gt;&lt;img src="https://static.inaturalist.org/photos/742940191/large.jpg" alt="California Brown Pelican"&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="https://static.inaturalist.org/photos/742940311/large.jpg" alt="California Brown Pelican"&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="https://static.inaturalist.org/photos/742940498/large.jpg" alt="California Brown Pelican"&gt;&lt;/p&gt;&lt;p&gt;California Brown Pelican, in San Francisco Green Connection #1 Expanded, US, CA&lt;/p&gt;</summary></entry><entry><title>GPT 6.1 Sol: Near-Astra intelligence for a fifth of the price</title><link href="https://news.ycombinator.com/item?id=49896586#49898129" rel="alternate"/><published>2026-09-29T18:27:48+00:00</published><updated>2026-09-29T18:27:48+00:00</updated><id>https://news.ycombinator.com/item?id=49896586#49898129</id><summary type="html">&lt;p&gt;&lt;a href="https://news.ycombinator.com/item?id=49896586#49898129"&gt;My comment&lt;/a&gt; on &lt;a href="https://news.ycombinator.com/item?id=49896586"&gt;GPT 6.1 Sol: Near-Astra intelligence for a fifth of the price&lt;/a&gt; &amp;mdash; Hacker News.&lt;/p&gt;&lt;p&gt;I'm a bit late with the pelicans because I was live-blogging the keynote: &lt;a href="https://simonwillison.net/2026/Sep/29/openai-devday-2026-live-blog/"&gt;https://simonwillison.net/2026/Sep/29/openai-devday-2026-liv...&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Here they are for GPT-6.1-Sol: &lt;a href="https://tools.simonwillison.net/markdown-svg-renderer?url=https%3A%2F%2Fgist.github.com%2Fsimonw%2F4aa871683dae5c566129a6028fbc7f21"&gt;https://tools.simonwillison.net/markdown-svg-renderer?url=ht...&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;They're not notably different from the GPT-6 family pelicans: &lt;a href="https://static.simonwillison.net/static/2026/gpt-pelicans-grid.html"&gt;https://static.simonwillison.net/static/2026/gpt-pelicans-gr...&lt;/a&gt;&lt;/p&gt;</summary><category term="ai"/><category term="openai"/><category term="generative-ai"/><category term="llms"/><category term="pelican-riding-a-bicycle"/><category term="gpt"/></entry><entry><title>Photo Scrubber — local face blur &amp; metadata removal</title><link href="https://tools.simonwillison.net/photo-scrubber" rel="alternate"/><published>2026-09-29T16:45:27+00:00</published><updated>2026-09-29T16:45:27+00:00</updated><id>https://tools.simonwillison.net/photo-scrubber</id><summary type="html">&lt;p&gt;&lt;a href="https://tools.simonwillison.net/photo-scrubber"&gt;Photo Scrubber — local face blur &amp; metadata removal&lt;/a&gt;&lt;/p&gt;</summary><category term="photography"/><category term="tools"/></entry><entry><title>Anna's Hummingbird</title><link href="https://simonwillison.net/2026/Sep/28/sighting-404239413/" rel="alternate"/><published>2026-09-28T18:23:01+00:00</published><updated>2026-09-28T18:23:01+00:00</updated><id>https://simonwillison.net/2026/Sep/28/sighting-404239413/</id><summary type="html">&lt;p&gt;&lt;img src="https://static.inaturalist.org/photos/742324217/large.jpg" alt="Anna&amp;#x27;s Hummingbird"&gt;&lt;/p&gt;&lt;p&gt;Anna&amp;#x27;s Hummingbird, in Monterey Bay National Marine Sanctuary, CA, US, CA&lt;/p&gt;</summary></entry><entry><title>S3 Is the Future, S3 Is the Past</title><link href="https://news.ycombinator.com/item?id=49851693#49871741" rel="alternate"/><published>2026-09-27T23:09:19+00:00</published><updated>2026-09-27T23:09:19+00:00</updated><id>https://news.ycombinator.com/item?id=49851693#49871741</id><summary type="html">&lt;p&gt;&lt;a href="https://news.ycombinator.com/item?id=49851693#49871741"&gt;My comment&lt;/a&gt; on &lt;a href="https://news.ycombinator.com/item?id=49851693"&gt;S3 Is the Future, S3 Is the Past&lt;/a&gt; &amp;mdash; Hacker News.&lt;/p&gt;&lt;p&gt;One thing I find notable about S3 today is that, while it used to drop in price reasonably often, there hasn't been a price drop in &lt;em&gt;a full decade&lt;/em&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;2006-03-14  $0.150/GB-month
2010-11-01  $0.140/GB-month
2012-02-01  $0.125/GB-month
2012-12-01  $0.095/GB-month
2014-02-01  $0.085/GB-month
2014-04-01  $0.030/GB-month
2016-12-01  $0.023/GB-month
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Today it's still $0.023/GB-month.&lt;/p&gt;</summary><category term="amazon-web-services"/><category term="s3"/></entry><entry><title>Bluesky reply bot checker</title><link href="https://tools.simonwillison.net/bluesky-bot-check" rel="alternate"/><published>2026-09-27T18:41:44+00:00</published><updated>2026-09-27T18:41:44+00:00</updated><id>https://tools.simonwillison.net/bluesky-bot-check</id><summary type="html">&lt;p&gt;&lt;a href="https://tools.simonwillison.net/bluesky-bot-check"&gt;Bluesky reply bot checker&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Check a Bluesky account for patterns common to automated reply bots by analyzing recent posts for typing speed, posting times, engagement patterns, and other behavioral signals. The tool displays every measurement and rule so you can verify the reasoning and see example replies that triggered the most signals.&lt;/p&gt;</summary><category term="twitter"/><category term="bluesky"/><category term="vibe-coding"/><category term="ai-misuse"/></entry><entry><title>Kākāpō Party</title><link href="https://tools.simonwillison.net/kakapo-party" rel="alternate"/><published>2026-09-26T23:39:06+00:00</published><updated>2026-09-26T23:39:06+00:00</updated><id>https://tools.simonwillison.net/kakapo-party</id><summary type="html">&lt;p&gt;&lt;a href="https://tools.simonwillison.net/kakapo-party"&gt;Kākāpō Party&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Experience an interactive pixel-art celebration featuring kākāpō (New Zealand's flightless parrots) jumping and dancing to music. Click, tap, or press Space to trigger confetti bursts, balloons, streamers, and festive effects while the birds party under a disco ball with choreographed dance moves that sync to an upbeat rhythm.&lt;/p&gt;</summary><category term="animation"/><category term="speaking"/><category term="ai"/><category term="kakapo"/><category term="playwright"/><category term="generative-ai"/><category term="llms"/><category term="anthropic"/><category term="claude"/><category term="claude-code"/></entry><entry><title>Northern Gannet, Great Blue Heron, California Brown Pelican</title><link href="https://simonwillison.net/2026/Sep/25/sighting-403293902/" rel="alternate"/><published>2026-09-25T02:07:04+00:00</published><updated>2026-09-25T02:07:04+00:00</updated><id>https://simonwillison.net/2026/Sep/25/sighting-403293902/</id><summary type="html">&lt;p&gt;&lt;img src="https://static.inaturalist.org/photos/740453177/large.jpg" alt="Northern Gannet"&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="https://static.inaturalist.org/photos/740453341/large.jpg" alt="Great Blue Heron"&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="https://static.inaturalist.org/photos/740454506/large.jpg" alt="California Brown Pelican"&gt;&lt;/p&gt;&lt;p&gt;Northern Gannet, Great Blue Heron, California Brown Pelican, in Monterey Bay National Marine Sanctuary, CA, US, CA&lt;/p&gt;&lt;p&gt;New 200-800mm Canon EF lens got me my best photo of &lt;a href="https://simonwillison.net/2026/Aug/15/sighting-391300422/"&gt;Morris&lt;/a&gt; yet. They really like hanging out under that sign in the harbor!&lt;/p&gt;</summary><category term="photography"/><category term="wildlife"/></entry><entry><title>commit-rewriter 0.2</title><link href="https://github.com/simonw/commit-rewriter/releases/tag/0.2" rel="alternate"/><published>2026-09-24T20:06:53+00:00</published><updated>2026-09-24T20:06:53+00:00</updated><id>https://github.com/simonw/commit-rewriter/releases/tag/0.2</id><summary type="html">&lt;p&gt;&lt;a href="https://github.com/simonw/commit-rewriter/releases/tag/0.2"&gt;commit-rewriter 0.2&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Python web app to help rewrite your commit messages&lt;/p&gt;</summary><category term="git"/></entry><entry><title>datasette 1.0a41</title><link href="https://github.com/simonw/datasette/releases/tag/1.0a41" rel="alternate"/><published>2026-09-24T19:15:23+00:00</published><updated>2026-09-24T19:15:23+00:00</updated><id>https://github.com/simonw/datasette/releases/tag/1.0a41</id><summary type="html">&lt;p&gt;&lt;a href="https://github.com/simonw/datasette/releases/tag/1.0a41"&gt;datasette 1.0a41&lt;/a&gt;&lt;/p&gt;&lt;p&gt;An open source multi-tool for exploring and publishing data&lt;/p&gt;</summary><category term="javascript"/><category term="datasette"/><category term="web-components"/><category term="alex-garcia"/><category term="opentelemetry"/></entry><entry><title>We just shipped support for the ugliest part of HTTP: Vary</title><link href="https://news.ycombinator.com/item?id=49823195#49823961" rel="alternate"/><published>2026-09-23T23:14:57+00:00</published><updated>2026-09-23T23:14:57+00:00</updated><id>https://news.ycombinator.com/item?id=49823195#49823961</id><summary type="html">&lt;p&gt;&lt;a href="https://news.ycombinator.com/item?id=49823195#49823961"&gt;My comment&lt;/a&gt; on &lt;a href="https://news.ycombinator.com/item?id=49823195"&gt;We just shipped support for the ugliest part of HTTP: Vary&lt;/a&gt; &amp;mdash; Hacker News.&lt;/p&gt;&lt;p&gt;I've been wanting this from Cloudflare &lt;em&gt;for years&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;The classic problem here is if you do that thing where user agents that send "accept: text/html" get HTML, while user agents that don't get JSON or some other format.&lt;/p&gt;
&lt;p&gt;This used to be impossible to deploy behind Cloudflare caching, because they ignored the Vary header on anything other than images - so you risked caching the JSON version and then serving it up to someone who was expecting HTML.&lt;/p&gt;
&lt;p&gt;(Independent of the Cloudflare feature I ended up deciding never to use that pattern, because I prefer having URL that predictably returns HTML or JSON - I add a .json suffix to my apps to serve JSON instead.)&lt;/p&gt;</summary><category term="http"/><category term="cloudflare"/></entry><entry><title>Gemini 3.8 TTS Playground</title><link href="https://tools.simonwillison.net/gemini-tts-playground" rel="alternate"/><published>2026-09-23T17:12:27+00:00</published><updated>2026-09-23T17:12:27+00:00</updated><id>https://tools.simonwillison.net/gemini-tts-playground</id><summary type="html">&lt;p&gt;&lt;a href="https://tools.simonwillison.net/gemini-tts-playground"&gt;Gemini 3.8 TTS Playground&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Test and experiment with Google's Gemini 3.8 text-to-speech API through an interactive playground where you can compose single-voice narration or multi-speaker conversations, preview the generated audio, and explore request and response details. Save your compose settings to bookmarkable URLs for easy sharing, and generate high-quality speech synthesis powered by your Gemini API key.&lt;/p&gt;</summary><category term="text-to-speech"/><category term="gemini"/></entry><entry><title>Shadow roots, explained with live examples</title><link href="https://tools.simonwillison.net/shadow-roots" rel="alternate"/><published>2026-09-23T16:37:18+00:00</published><updated>2026-09-23T16:37:18+00:00</updated><id>https://tools.simonwillison.net/shadow-roots</id><summary type="html">&lt;p&gt;&lt;a href="https://tools.simonwillison.net/shadow-roots"&gt;Shadow roots, explained with live examples&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Learn about shadow DOM through interactive examples that demonstrate style encapsulation, inheritance, slots, parts, and JavaScript access. Explore how shadow roots create isolated DOM trees with private stylesheets and elements that interact with the page DOM in specific, controlled ways.&lt;/p&gt;</summary><category term="css"/></entry><entry><title>California Brown Pelican</title><link href="https://simonwillison.net/2026/Sep/23/sighting-402786744/" rel="alternate"/><published>2026-09-23T02:08:53+00:00</published><updated>2026-09-23T02:08:53+00:00</updated><id>https://simonwillison.net/2026/Sep/23/sighting-402786744/</id><summary type="html">&lt;p&gt;&lt;img src="https://static.inaturalist.org/photos/739462090/large.jpg" alt="California Brown Pelican"&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="https://static.inaturalist.org/photos/739462134/large.jpg" alt="California Brown Pelican"&gt;&lt;/p&gt;&lt;p&gt;California Brown Pelican, in Monterey Bay National Marine Sanctuary, CA, US, CA&lt;/p&gt;</summary></entry><entry><title>llm 0.36</title><link href="https://github.com/simonw/llm/releases/tag/0.36" rel="alternate"/><published>2026-09-22T18:48:37+00:00</published><updated>2026-09-22T18:48:37+00:00</updated><id>https://github.com/simonw/llm/releases/tag/0.36</id><summary type="html">&lt;p&gt;&lt;a href="https://github.com/simonw/llm/releases/tag/0.36"&gt;llm 0.36&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Access large language models from the command-line&lt;/p&gt;</summary><category term="openai"/><category term="llm"/></entry></feed>