<?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-08-20T15:37:00+00:00</updated><author><name>Simon Willison</name></author><entry><title>A shot-scraper-style JSON API on Bun 1.4's new Bun.WebView</title><link href="https://github.com/simonw/research/tree/main/bun-webview-json-api#readme" rel="alternate"/><published>2026-08-20T15:37:00+00:00</published><updated>2026-08-20T15:37:00+00:00</updated><id>https://github.com/simonw/research/tree/main/bun-webview-json-api#readme</id><summary type="html">&lt;p&gt;&lt;a href="https://github.com/simonw/research/tree/main/bun-webview-json-api#readme"&gt;A shot-scraper-style JSON API on Bun 1.4's new Bun.WebView&lt;/a&gt;&lt;/p&gt;&lt;p&gt;A zero-dependency, roughly 150-line TypeScript service demonstrates that Bun 1.4’s experimental `Bun.WebView` can provide a shot-scraper-style JSON API for JavaScript evaluation and PNG/JPEG/WebP screenshots without Puppeteer or Playwright. It creates one browser tab per request, supporting concurrency while returning page results and errors as JSON through `/javascript`, `/screenshot`, and `/healthz`.&lt;/p&gt;</summary><category term="browsers"/><category term="javascript"/><category term="ai"/><category term="rust"/><category term="typescript"/><category term="generative-ai"/><category term="llms"/><category term="coding-agents"/><category term="bun"/></entry><entry><title>smolmachines / smolvm as a sandbox for untrusted Python &amp; JavaScript</title><link href="https://github.com/simonw/research/tree/main/smolmachines-untrusted-sandbox#readme" rel="alternate"/><published>2026-08-19T23:16:00+00:00</published><updated>2026-08-19T23:16:00+00:00</updated><id>https://github.com/simonw/research/tree/main/smolmachines-untrusted-sandbox#readme</id><summary type="html">&lt;p&gt;&lt;a href="https://github.com/simonw/research/tree/main/smolmachines-untrusted-sandbox#readme"&gt;smolmachines / smolvm as a sandbox for untrusted Python &amp; JavaScript&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Testing smolvm 1.8.3 shows it is well suited for sandboxing untrusted Python and JavaScript data transformations using hardware-isolated VMs rather than shared-kernel containers. Offline local images, no-network execution, CPU/RAM limits, guest-enforced timeouts, storage quotas, read-only input mounts, writable output mounts, and `--unprivileged` all worked as intended, with cold starts around 0.6–1.5 seconds and warm executions around 50 ms.&lt;/p&gt;</summary><category term="research"/><category term="sandboxing"/><category term="ai"/><category term="github-actions"/><category term="generative-ai"/><category term="llms"/><category term="coding-agents"/><category term="claude-mythos-fable"/></entry><entry><title>Anna's Hummingbird</title><link href="https://simonwillison.net/2026/Aug/15/sighting-391533950/" rel="alternate"/><published>2026-08-15T17:51:28+00:00</published><updated>2026-08-15T17:51:28+00:00</updated><id>https://simonwillison.net/2026/Aug/15/sighting-391533950/</id><summary type="html">&lt;p&gt;&lt;img src="https://static.inaturalist.org/photos/717439134/large.jpg" alt="Anna&amp;#x27;s Hummingbird"&gt;&lt;/p&gt;&lt;p&gt;Anna&amp;#x27;s Hummingbird, in San Mateo County, CA, US&lt;/p&gt;</summary></entry><entry><title>CORS Chat</title><link href="https://tools.simonwillison.net/cors-chat" rel="alternate"/><published>2026-08-15T14:49:54+00:00</published><updated>2026-08-15T14:49:54+00:00</updated><id>https://tools.simonwillison.net/cors-chat</id><summary type="html">&lt;p&gt;&lt;a href="https://tools.simonwillison.net/cors-chat"&gt;CORS Chat&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Chat directly with any OpenAI Responses-compatible API endpoint that supports CORS headers, all within your browser. Configure endpoints with custom headers, save conversations locally, and manage multiple chat sessions with different models and reasoning settings.&lt;/p&gt;</summary><category term="svg"/><category term="ai"/><category term="generative-ai"/><category term="llms"/><category term="cors"/><category term="openrouter"/><category term="lm-studio"/></entry><entry><title>Northern Gannet</title><link href="https://simonwillison.net/2026/Aug/15/sighting-391300422/" rel="alternate"/><published>2026-08-15T03:22:00+00:00</published><updated>2026-08-15T03:22:00+00:00</updated><id>https://simonwillison.net/2026/Aug/15/sighting-391300422/</id><summary type="html">&lt;p&gt;&lt;img src="https://static.inaturalist.org/photos/716984157/large.jpg" alt="Northern Gannet"&gt;&lt;/p&gt;&lt;p&gt;Northern Gannet, in Pillar Point Harbor, CA, US&lt;/p&gt;&lt;p&gt;This is Morris.&lt;/p&gt;
&lt;p&gt;Morris is a local celebrity: the only known Northern Gannet (&lt;em&gt;Morus bassanus&lt;/em&gt;) in the entire Pacific Ocean.&lt;/p&gt;
&lt;p&gt;They showed up in the Farallon Islands off the coast of San Francisco &lt;a href="https://baynature.org/magazine/spring2017/atlantic-bird-makes-home-california-maybe-melting-arctic-ice/"&gt;14 years ago&lt;/a&gt;. They have since made Pillar Point harbor their home, where they are quite easy to spot: the only white bird with a yellow head, usually hanging out with the smaller black Brandt’s cormorants near the harbor sign visible from the end of the commercial pier.&lt;/p&gt;</summary><category term="photography"/><category term="wildlife"/><category term="half-moon-bay"/></entry><entry><title>Great Horned Owl</title><link href="https://simonwillison.net/2026/Aug/14/sighting-391033390/" rel="alternate"/><published>2026-08-14T03:53:57+00:00</published><updated>2026-08-14T03:53:57+00:00</updated><id>https://simonwillison.net/2026/Aug/14/sighting-391033390/</id><summary type="html">&lt;p&gt;&lt;img src="https://static.inaturalist.org/photos/716462511/large.jpg" alt="Great Horned Owl"&gt;&lt;/p&gt;&lt;p&gt;Great Horned Owl, in San Mateo County, CA, US&lt;/p&gt;</summary></entry><entry><title>sqlite-utils 4.2.1</title><link href="https://github.com/simonw/sqlite-utils/releases/tag/4.2.1" rel="alternate"/><published>2026-08-13T23:53:47+00:00</published><updated>2026-08-13T23:53:47+00:00</updated><id>https://github.com/simonw/sqlite-utils/releases/tag/4.2.1</id><summary type="html">&lt;p&gt;&lt;a href="https://github.com/simonw/sqlite-utils/releases/tag/4.2.1"&gt;sqlite-utils 4.2.1&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Python CLI utility and library for manipulating SQLite databases&lt;/p&gt;</summary><category term="packaging"/><category term="python"/><category term="sqlite-utils"/><category term="uv"/></entry><entry><title>sqlite-utils 4.2</title><link href="https://github.com/simonw/sqlite-utils/releases/tag/4.2" rel="alternate"/><published>2026-08-13T20:11:29+00:00</published><updated>2026-08-13T20:11:29+00:00</updated><id>https://github.com/simonw/sqlite-utils/releases/tag/4.2</id><summary type="html">&lt;p&gt;&lt;a href="https://github.com/simonw/sqlite-utils/releases/tag/4.2"&gt;sqlite-utils 4.2&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Python CLI utility and library for manipulating SQLite databases&lt;/p&gt;</summary><category term="releases"/><category term="sqlite"/><category term="sqlite-utils"/></entry><entry><title>llm-gemini 0.33</title><link href="https://github.com/simonw/llm-gemini/releases/tag/0.33" rel="alternate"/><published>2026-08-13T19:37:34+00:00</published><updated>2026-08-13T19:37:34+00:00</updated><id>https://github.com/simonw/llm-gemini/releases/tag/0.33</id><summary type="html">&lt;p&gt;&lt;a href="https://github.com/simonw/llm-gemini/releases/tag/0.33"&gt;llm-gemini 0.33&lt;/a&gt;&lt;/p&gt;&lt;p&gt;LLM plugin to access Google's Gemini family of models&lt;/p&gt;</summary><category term="google"/><category term="ai"/><category term="generative-ai"/><category term="llms"/><category term="llm"/><category term="gemini"/><category term="pelican-riding-a-bicycle"/><category term="llm-release"/></entry><entry><title>alchemy-utils 0.1a1</title><link href="https://github.com/simonw/alchemy-utils/releases/tag/0.1a1" rel="alternate"/><published>2026-08-13T03:03:17+00:00</published><updated>2026-08-13T03:03:17+00:00</updated><id>https://github.com/simonw/alchemy-utils/releases/tag/0.1a1</id><summary type="html">&lt;p&gt;&lt;a href="https://github.com/simonw/alchemy-utils/releases/tag/0.1a1"&gt;alchemy-utils 0.1a1&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Cross-database sqlite-utils built on SQLAlchemy&lt;/p&gt;</summary></entry><entry><title>alchemy-utils 0.1a0</title><link href="https://github.com/simonw/alchemy-utils/releases/tag/0.1a0" rel="alternate"/><published>2026-08-12T19:51:30+00:00</published><updated>2026-08-12T19:51:30+00:00</updated><id>https://github.com/simonw/alchemy-utils/releases/tag/0.1a0</id><summary type="html">&lt;p&gt;&lt;a href="https://github.com/simonw/alchemy-utils/releases/tag/0.1a0"&gt;alchemy-utils 0.1a0&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Cross-database sqlite-utils built on SQLAlchemy&lt;/p&gt;</summary><category term="databases"/><category term="postgresql"/><category term="projects"/><category term="python"/><category term="sql"/><category term="sqlalchemy"/><category term="sqlite"/><category term="sqlite-utils"/><category term="duckdb"/><category term="coding-agents"/><category term="codex"/></entry><entry><title>California Brown Pelican, Great Egret</title><link href="https://simonwillison.net/2026/Aug/12/sighting-390489675/" rel="alternate"/><published>2026-08-12T00:52:48+00:00</published><updated>2026-08-12T00:52:48+00:00</updated><id>https://simonwillison.net/2026/Aug/12/sighting-390489675/</id><summary type="html">&lt;p&gt;&lt;img src="https://static.inaturalist.org/photos/715405032/large.jpg" alt="California Brown Pelican"&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="https://static.inaturalist.org/photos/715404909/large.jpg" alt="California Brown Pelican"&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="https://static.inaturalist.org/photos/715404744/large.jpg" alt="Great Egret"&gt;&lt;/p&gt;&lt;p&gt;California Brown Pelican, Great Egret, in Monterey Bay National Marine Sanctuary, CA, US, CA&lt;/p&gt;</summary></entry><entry><title>datasette-upload-dbs 0.5a0</title><link href="https://github.com/simonw/datasette-upload-dbs/releases/tag/0.5a0" rel="alternate"/><published>2026-08-11T20:35:13+00:00</published><updated>2026-08-11T20:35:13+00:00</updated><id>https://github.com/simonw/datasette-upload-dbs/releases/tag/0.5a0</id><summary type="html">&lt;p&gt;&lt;a href="https://github.com/simonw/datasette-upload-dbs/releases/tag/0.5a0"&gt;datasette-upload-dbs 0.5a0&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Upload SQLite database files to Datasette&lt;/p&gt;</summary><category term="datasette"/></entry><entry><title>California Brown Pelican</title><link href="https://simonwillison.net/2026/Aug/10/sighting-390041155/" rel="alternate"/><published>2026-08-10T02:07:58+00:00</published><updated>2026-08-10T02:07:58+00:00</updated><id>https://simonwillison.net/2026/Aug/10/sighting-390041155/</id><summary type="html">&lt;p&gt;&lt;img src="https://static.inaturalist.org/photos/714731804/large.jpg" alt="California Brown Pelican"&gt;&lt;/p&gt;&lt;p&gt;California Brown Pelican, in Pillar Point Harbor, CA, US&lt;/p&gt;</summary></entry><entry><title>SQLite compressed text-history prototypes</title><link href="https://github.com/simonw/research/tree/main/sqlite-text-history-prototype#readme" rel="alternate"/><published>2026-08-09T22:05:00+00:00</published><updated>2026-08-09T22:05:00+00:00</updated><id>https://github.com/simonw/research/tree/main/sqlite-text-history-prototype#readme</id><summary type="html">&lt;p&gt;&lt;a href="https://github.com/simonw/research/tree/main/sqlite-text-history-prototype#readme"&gt;SQLite compressed text-history prototypes&lt;/a&gt;&lt;/p&gt;&lt;p&gt;SQLite compressed text-history prototypes compare `WholeBlobHistoryStore`, which rewrites one compressed historical blob per edit, with `ChunkedHistoryStore`, which seals compressed chunks to improve scaling for long histories. Both preserve prior text and timestamps, skip unchanged replacements by default, and serialize writers with `BEGIN IMMEDIATE` for atomic updates.&lt;/p&gt;</summary><category term="compression"/><category term="sqlite"/><category term="speech-to-text"/></entry></feed>