Sign up

Simon Willison's Weblog Supports Webmention
Text

Vibe coding and agentic engineering are getting closer than I'd like

I recently talked with Joseph Ruscio about AI coding tools for Heavybit's High Leverage podcast: Ep. #9, The AI Coding Paradigm Shift with Simon Willison. Here are some of my highlights, including my disturbing realization that vibe coding and agentic engineering have starte...

Pluralistic: Daily links from Cory Doctorow
Text • Cory Doctorow

Pluralistic: In praise of vultures (06 May 2026)

Today's links In praise of vultures: They screw you because they can. Hey look at this: Delights to delectate. Object permanence: Linus v MSFT; Argentina v MSFT; Danny Hillis on theme parks v games; Smartfilter v Distributed Boing Boing; Rental laptops filled with spyware; To...

Andrew Nesbitt Valid
Text • Andrew Nesbitt

Revisiting the 2015 Open Source Census

The riskiest projects in open source, scored a decade early

Troy Hunt Supports Webmention
Text • Troy Hunt

Weekly Update 502

Weekly Update 502

It's a fascinating display of leverage: the ShinyHunters folks, with very limited resources and experience (their demographic will be teenagers to their early 20s), consistently gaining access to the data of massive brands. Not through technical ingenuity alone (although I'm sure there's a portion

Simon Willison's Weblog Supports Webmention
Text

datasette-referrer-policy 0.1

Release: datasette-referrer-policy 0.1

The OpenStreetMap tiles on the Datasette global-power-plants demo weren't displaying correctly. This turned out to be caused by two bugs.

The first is that the CAPTCHA I added to that site a few weeks ago was triggering for the .json fetch requests used by the map plugin, and since those weren't HTML the user was not being asked to solve them. Here's the fix.

The second was that OpenStreetMap quite reasonably block tile requests from sites that use a Referrer-Policy: no-referrer header.

Datasette does this by default, and I didn't want to change that default on people without warning - so I had Codex + GPT-5.5 build me a new plugin to help set that header to another value.

Tags: openstreetmap, http, datasette

Martin Alderson
Text • Martin Alderson

Open weights are quietly closing up - and that's a problem

Open weights models keep frontier labs honest on price. If they disappear, we end up with a handful of oligopolists extracting consumer surplus.

Simon Willison's Weblog Supports Webmention
Text

Our AI started a cafe in Stockholm

Our AI started a cafe in Stockholm Andon Labs previously started an AI-run retail store in San Francisco. Now they're running a similar experiment in Stockholm, Sweden, only this time it's a cafe. These experiments are interesting, and often throw out amusing anecdotes: Dur...

Bert Hubert's writings Valid
Text

The Impossible Things We Have to Believe

“Alice laughed. ‘There’s no use trying,’ she said. ‘One can’t believe impossible things.’
I daresay you haven’t had much practice,’ said the Queen. ‘When I was your age, I always did it for half-an-hour a day. Why, sometimes I’ve believed as many as six impossible things before breakfast. – Through the looking-glass, Lewis Carrol
To stay sane, we have to accept that our climate is going completely haywire, but that it is ok to mostly ignore that since saving ourselves is apparently not cost-effective.

Simon Willison's Weblog Supports Webmention
Text

datasette-llm 0.1a7

Release: datasette-llm 0.1a7

Part of Datasette's evolving support mechanism for plugins that use LLMs. It's now possible to configure a model with default options, e.g. to say all enrichment operations should use a specific model with temperature set to 0.5.

Tags: llm, datasette

Simon Willison's Weblog Supports Webmention
Text

llm-echo 0.5a0

Release: llm-echo 0.5a0

  • New -o thinking 1 option to help test against LLM 0.32a0 and higher.

This plugin provides a fake model called "echo" for LLM which doesn't run an LLM at all - it's useful for writing automated tests. You can now do this:

uvx --with llm==0.32a1 --with llm-echo==0.5a0 llm -m echo hi -o thinking 1

This will fake a reasoning block to standard error before returning JSON echoing the prompt.

Tags: llm

Pluralistic: Daily links from Cory Doctorow
Text • Cory Doctorow

Pluralistic: The three armies fighting for the post-American world (05 May 2026)

Today's links The three armies fighting for the post-American world: Hippies, investors and hawks. Hey look at this: Delights to delectate. Object permanence: NK dictator's son v Tokyo Disneyland; Mainstream press and Bushies v Colbert; Taliban v Pakistan's first McDonald's; ...

Andrew Nesbitt Valid
Text • Andrew Nesbitt

Package Manager Threat Models

The non-CVE half of package manager security

Simon Willison's Weblog Supports Webmention
Text

Quoting John Gruber

So it’s well known that Y Combinator owns some stake in OpenAI. But how big is that stake? This seems like devilishly difficult information to obtain. I asked around and a little birdie who knows several OpenAI investors came back with an answer: Y Combinator owns about 0.6 percent of OpenAI. At OpenAI’s current $852 billion valuation, that’s worth over $5 billion.

John Gruber, Y Combinator’s Stake in OpenAI

Tags: openai, y-combinator, ai, john-gruber

Simon Willison's Weblog Supports Webmention
Text

Granite 4.1 3B SVG Pelican Gallery

Granite 4.1 3B SVG Pelican Gallery IBM released their Granite 4.1 family of LLMs a few days ago. They're Apache 2.0 licensed and come in 3B, 8B and 30B sizes. Unsloth released the unsloth/granite-4.1-3b-GGUF collection of GGUF encoded quantized variants of the 3B model - 21 ...

Simon Willison's Weblog Supports Webmention
Text

Quoting Andy Masley

[...] Between 2000 and 2024, farmers sold in total a Colorado-sized chunk of land all on their own, 77 times all land on data center property in 2028, and grew more food than ever on what was left. None of this caused any problems for US food access.

And then, in the middle of all this, a farmer in Loudoun County sells a few acres of mediocre hay field to a hyperscaler for ten times its agricultural value, and the response is that we’re running out of farmland.

Andy Masley, pushing back against the "land use" argument against data center construction

Tags: ai-ethics, ai, generative-ai, andy-masley

Simon Willison's Weblog Supports Webmention
Text

April 2026 newsletter

I just sent out the April edition of my sponsors-only monthly newsletter. If you are a sponsor (or if you start a sponsorship now) you can access it here.

In this month's newsletter:

  • Opus 4.7 and GPT-5.5, both with price increases
  • Claude Mythos and LLM security research
  • ChatGPT Images 2.0
  • More model releases
  • Other highlights from my blog
  • What I'm using, April 2026 edition

Here's a copy of the March newsletter as a preview of what you'll get. Pay $10/month to stay a month ahead of the free copy!

Tags: newsletter

Entropic Thoughts Supports Webmention
Text • kqr

Fizz Buzz Through Monoids

Some decade ago I read a good implementation of fizzbuzz. What set it apart was its excellent modularity. The original article is no longer on the web, but this is my reconstruction:

In[1]:
module Main where

import Control.Monad (guard)
import Data.Foldable (for_)
import Data.Maybe (fromMaybe)

fizzbuzz i =
  fromMaybe (show i) . mconcat $
    [ "fizz" <$ guard (rem i 3 == 0)
    , "buzz" <$ guard (rem i 5 == 0)
    ]

main =
  for_ [1..100] $
    putStrLn . fizzbuzz

The great thing about this implementation is that when we get the natural change in requirements – that we are supposed to print “zork” for multiples of seven – we can accommodate that change by simply adding the line that does so:

(Continue reading the full article on the web.)

Simon Willison's Weblog Supports Webmention
Text

TRE Python binding — ReDoS robustness demo

Research: TRE Python binding — ReDoS robustness demo

If it's good enough for antirez to add to Redis I figured Ville Laurikari's TRE regular expression engine was worth exploring in a little more detail.

I had Claude Code build an experimental Python binding (it used ctypes) and try some malicious regular expression attacks against the library. TRE handles those much better than Python's standard library implementation, thanks mainly to the lack of support for backtracking.

Tags: security, python, regular-expressions, c, ctypes

Simon Willison's Weblog Supports Webmention
Text

Redis Array Playground

Tool: Redis Array Playground Salvatore Sanfilippo submitted a PR adding a new data type - arrays - to Redis. The new commands are ARCOUNT, ARDEL, ARDELRANGE, ARGET, ARGETRANGE, ARGREP, ARINFO, ARINSERT, ARLASTITEMS, ARLEN, ARMGET, ARMSET, ARNEXT, AROP, ARRING, ARSCA...

<antirez>
Text

Redis array type: short story of a long development

http://antirez.com/news/164

I started working on the new Array data type for Redis in the first days of January. The PR landed the repository only now, so this code was cooked for four months. I worked at the implementation kinda part time (kinda because many weeks were actually full time, sometimes to ...