tail -f

A river of the small web — quiet blogs, followed.

Quoting Dean W. Ball

Simon Willison · Jun 26, 2026

This is a bad state of affairs. Consider, in particular, some industry dynamics: Frontier models are trained at an enormous cost, and a significant fraction of that cost is recouped in the few post-release months that they are broadly available. After that period elapses, the…

Quoting Timothy B. Lee

Simon Willison · Jun 26, 2026

This is like saying there's no learning curve to being a manager because your employees will just do whatever you tell them to do. — Timothy B. Lee, on the idea that LLMs take no skill and have no learning curve Tags: llms, ai, generative-ai

What happened after 2,000 people tried to hack my AI assistant

Simon Willison · Jun 26, 2026

What happened after 2,000 people tried to hack my AI assistant Fernando Irarrázaval ran a challenge on hackmyclaw.com to see if anyone could leak secrets held by his OpenClaw test instance by sending it email. Surprisingly, after 6,000 attempts (and $500 in token spend and a…

Incident Report: CVE-2026-LGTM

Simon Willison · Jun 26, 2026

Incident Report: CVE-2026-LGTM Spectacular hypothetical incident report by Andrew Nesbitt. Day 2, 16:00 UTC --- Two AI review agents from competing vendors, both attached to a downstream pull request bumping foxhole-lz4, enter a disagreement loop over whether the package is…

Quoting OpenAI

Simon Willison · Jun 26, 2026

We're beginning a limited preview of the GPT‑5.6 series: Sol, our flagship model; Terra, a balanced model for everyday work; and Luna, a fast and affordable model. Terra has competitive performance to GPT‑5.5 while being 2x cheaper and Luna brings strong capability at our lowest…

AI and Liability

Simon Willison · Jun 25, 2026

AI and Liability Bruce Schneier on the recent German ruling that Google be held liable for errors introduced in their AI overviews: AI agents are agents of the person or organization that deploys them—and should be treated by the law as such. If a company hired human writers to…

datasette-export-database 0.3a2

Simon Willison · Jun 25, 2026

Release: datasette-export-database 0.3a2 An embarrassingly tiny release. The pyproject.toml had pinned to datasette==1.0a27, inadvertently making this plugin incompatible with all other Datasette versions. It's now datasette>=1.0a27 instead. Tags: datasette

"No way to prevent this" say users of only language where this regularly happens

Xe Iaso · Jun 25, 2026

In the hours following the release of CVE-2026-8461 for the project FFmpeg, site reliability workers and systems administrators scrambled to desperately rebuild and patch all their systems to fix an out-of-bounds write in the MagicYUV decoder (libavcodec/magicyuv.c) caused by…

simonw/browser-compat-db

Simon Willison · Jun 24, 2026

simonw/browser-compat-db Inspired by Mozilla's new MDN MCP service - source code here - I decided to try converting their comprehensive mdn/browser-compat-data repository full of browser compatibility data into a SQLite database. This new GitHub repo includes a Claude Code for…

Quoting Tom MacWright

Simon Willison · Jun 24, 2026

In the last few months, I've started to see [job applications] that were clearly cowritten by an LLM, link to an LLM-generated portfolio site, which then links to LLM-generated GitHub projects, with purely LLM-generated commit messages. [...] My other reaction is that I don't…

"No way to prevent this" say users of only language where this regularly happens

Xe Iaso · Jun 24, 2026

In the hours following the release of CVE-2026-55200 for the project libssh2, site reliability workers and systems administrators scrambled to desperately rebuild and patch all their systems to fix an out-of-bounds write in ssh2_transport_read() due to a missing upper bound…

datasette 1.0a35

Simon Willison · Jun 23, 2026

Release: datasette 1.0a35 I'll write more about this one soon, but it's a big release. Three highlights from the release notes: New "Create table" interface in the database actions menu, backed by the /<database>/-/create JSON API. It can define columns, primary keys, custom…

OPFS + Pyodide test harness

Simon Willison · Jun 23, 2026

Tool: OPFS + Pyodide test harness I've been pondering if Datasette Lite - the Python Datasette application run entirely in the browser using Pyodide and WebAssembly - might be able to edit persistent SQLite files stored on the user's computer. That's what OFPS (Origin Private…

I taught a bucket to speak git

Xe Iaso · Jun 23, 2026

What happens if I just point a git server at an object storage bucket? Back when I was porting agent sandboxes to Go, I built everything on top of billy, a filesystem abstraction for Go. The whole trick of the project was teaching a Tigris bucket to act enough like a filesystem…

Prompt Injection as Role Confusion

Simon Willison · Jun 22, 2026

Prompt Injection as Role Confusion First, I absolutely love this: This is a blog-style writeup of the paper. I wish every paper would come with one of these. Academic writing is pretty dry - the impact of a paper can be so much higher if you publish a readable version to…

Porting the Moebius 0.2B image inpainting model to run in the browser with Claude Code

Simon Willison · Jun 22, 2026

This morning on Hacker News I saw Moebius: 0.2B Lightweight Image Inpainting Framework with 10B-Level Performance, describing a small but effective inpainting model - a model where you can mark regions of an image to remove and the model imagines what should fill the space. The…

sqlite-utils 4.0rc1 adds migrations and nested transactions

Simon Willison · Jun 21, 2026

sqlite-utils is my combined Python library and CLI tool for working with SQLite databases. It provides an extensive set of higher-level operations on top of Python's default sqlite3 package, including support for complex table transformations, automatic table creation from JSON…

sqlite-utils 4.0rc1

Simon Willison · Jun 21, 2026

Release: sqlite-utils 4.0rc1 See sqlite-utils 4.0rc1 adds migrations and nested transactions. Tags: sqlite-utils

Temporary Cloudflare Accounts for AI agents

Simon Willison · Jun 21, 2026

Temporary Cloudflare Accounts for AI agents The announcement says this is "for AI agents" but (as is pretty common these days) the AI hook isn't really necessary, this is an interesting feature for everyone else as well. Short version: you can now create a Cloudflare Workers…

Quoting Sean Lynch

Simon Willison · Jun 19, 2026

The real valuable capability MCP offers over skills/CLI is isolating the auth flow outside of the agent’s context window, and potentially out of the harness completely. [...] Maybe the idealized form of MCP is just an auth gateway for the API and nothing else. That’d still be a…

Datasette Apps: Host custom HTML applications inside Datasette

Simon Willison · Jun 18, 2026

Today we launched a new plugin for Datasette, datasette-apps, with this launch announcement post on the Datasette project blog. That post has the what, but I'm going to expand on that a little bit here to provide the why. The TL;DR Datasette Apps are self-contained…

datasette-acl 0.6a0

Simon Willison · Jun 18, 2026

Release: datasette-acl 0.6a0 This release expands datasette-acl from table-only permissions toward a general resource-sharing system. Alex Garcia did most of the work for this release - we're fleshing out the plugin that will allow multi-user Datasette instances finely grained…

I hate compilers

Xe Iaso · Jun 18, 2026

You'd think that given the same bytes of input you'd get the same bytes of output. lol. lmao. No, you don't. It's complicated.

GLM-5.2 is probably the most powerful text-only open weights LLM

Simon Willison · Jun 17, 2026

Chinese AI lab Z.ai released GLM-5.2 to their coding plan subscribers on June 13th, and then yesterday (June 16th) released the full open weights under an MIT license. Similar in size to their previous GLM-5 and GLM-5.1 releases this is a 753B parameter, 1.51TB monster - with 40…

Quoting Charity Majors

Simon Willison · Jun 17, 2026

What happened in 2025 was this: the economics of code production were turned upside down. Instead of being very hard, time-consuming, and expensive to generate code, it became effectively free and instant. Lines of code went from being treasured, reused, cared for and carefully…

<click-to-play> — a still that plays

Simon Willison · Jun 17, 2026

Tool: <click-to-play> — a still that plays A progressive enchantment Web Component that turns this markup: <click-to-play> <a href="URL to GIF"> <img src="URL to first frame" alt="..."> </a> </click-to-play> Into a still frame with a click to play button which loads the GIF on…

NetNewsWire Status

Simon Willison · Jun 17, 2026

NetNewsWire Status I find this inspiring. Brent Simmons retired a year ago, and his retirement project is making one piece of software really, really good - free from any commercial pressure. The software is NetNewsWire - "it's like podcasts, but for reading" - first released in…

datasette 1.0a34

Simon Willison · Jun 16, 2026

Release: datasette 1.0a34 Quoting the release notes: The big feature in this alpha is tools to insert, edit and delete rows within the Datasette interface. These features are available on table pages, and edit and delete are also available as action items on the row page. The…

datasette-tailscale 0.1a0

Simon Willison · Jun 16, 2026

Release: datasette-tailscale 0.1a0 A very experimental alpha plugin which lets you do this: datasette tailscale mydata.db \ --ts-authkey tskey-auth-xxxx --ts-hostname datasette-preview This starts a localhost Datasette server with a Tailscale sidecar that connects it to your…

Why are cached input tokens cheaper with AI services?

Xe Iaso · Jun 12, 2026

TL;DR: the GPU doesn't have to math as hard

Giving your Go apps Tigris superpowers

Xe Iaso · Jun 9, 2026

Tigris is S3-compatible, which means you can point the AWS SDK at it and most things just work. The catch is that the Tigris-exclusive features—bucket forking, snapshots, object renaming, and the like—need verbose workarounds because the AWS SDK doesn't know they exist. So we…

"No way to prevent this" say users of only language where this regularly happens

Xe Iaso · Jun 9, 2026

In the hours following the release of CVE-2026-45447 for the project OpenSSL, site reliability workers and systems administrators scrambled to desperately rebuild and patch all their systems to fix a heap use-after-free in PKCS7_verify(). This is due to the affected components…

The circus freaks of open source

Drew DeVault · Jun 5, 2026

The masterwork of Terry A. Davis is his eclectic operating system, TempleOS, which he worked on until his tragic death in 2018. In terms of technical excellence, TempleOS rates well in some respects and poorly in others. For example, it earns the achievement, coveted in OS dev…

IPv6 zones in URLs are a mistake

Xe Iaso · Jun 5, 2026

Run away while you still can, it's not too late for you to avoid the curse of knowledge.

Vim Classic 8.3.0 released

Drew DeVault · Jun 2, 2026

Following up on my earlier announcement that I was forking Vim, I’m happy to announce the first release of my fork today: Vim Classic 8.3.0.I have written a release announcement for vim-classic.org, which you can read here. Happy editing!

"No way to prevent this" say users of only package manager where this regularly happens

Xe Iaso · Jun 1, 2026

In the hours following the news that Redhat Insights' JavaScript packages fell victim to a supply chain attack via NPM, developers and systems administrators scrambled ensure all of their projects were unaffected from a supply chain attack that steals credentials for AWS, GCP…