Simon Willison’s Weblog


Weeknotes: the aftermath of NICAR

16th March 2024

NICAR was fantastic this year. Alex and I ran a successful workshop on Datasette and Datasette Cloud, and I gave a lightning talk demonstrating two new GPT-4 powered Datasette plugins—datasette-enrichments-gpt and datasette-extract. I need to write more about the latter one: it enables populating tables from unstructured content (using a variant of this technique) and it’s really effective. I got it working just in time for the conference.

I also solved the conference follow-up problem! I’ve long suffered from poor habits in dropping the ball on following up with people I meet at conferences. This time I used a trick I first learned at a YC demo day many years ago: if someone says they’d like to follow up, get out a calendar and book a future conversation with them right there on the spot.

I have a bunch of exciting conversations lined up over the next few weeks thanks to that, with a variety of different sizes of newsrooms who are either using or want to use Datasette.

Action menus in the Datasette 1.0 alphas

I released two new Datasette 1.0 alphas in the run-up to NICAR: 1.0a12 and 1.0a13.

The main theme of these two releases was improvements to Datasette’s “action buttons”.

Datasette plugins have long been able to register additional menu items that should be shown on the database and table pages. These were previously hidden behind a “cog” icon in the title of the page—once clicked it would reveal a menu of extra actions.

The cog wasn’t discoverable enough, and felt too much like mystery meat navigation. I decided to turn it into a much more clear button.

Here’s a GIF showing that new button in action across several different pages on Datasette Cloud (which has a bunch of plugins that use it):

Animation starts on the page for the content database. A database actions blue button is clicked, revealing a menu of items such as Upload CSVs and Execute SQL Write. On a table page the button is called Table actions and has options such as Delete table. Executing a SQL query shows a Query actions button with an option to Create SQL view from this query.

Prior to 1.0a12 Datasette had plugin hooks for just the database and table actions menus. I’ve added four more:

Menu items can now also include an optional description, which is displayed below their label in the actions menu.

It’s always DNS

This site was offline for 24 hours this week due to a DNS issue. Short version: while I’ve been paying close attention to the management of domains I’ve bought in the past few years (, etc) I hadn’t been paying attention to

... until it turned out I had it on a registrar with an old email address that I no longer had access to, and the domain was switched into “parked” mode because I had failed to pay for renewal!

(I haven’t confirmed this yet but I think I may have paid for a ten year renewal at some point, which gives you a full decade to lose track of how it’s being paid for.)

I’ll give credit to 123-reg (these days a subsidiary of GoDaddy)—they have a well documented domain recovery policy and their support team got me back in control reasonably promptly—only slightly delayed by their UK-based account recovery team operating in a timezone separate from my own.

I registered and configured that and during the blackout, mainly because it turns out I refer back to my own written content a whole lot during my regular work! Once .net came back I set up redirects using Cloudflare.

Thankfully I don’t usually use my domain for my personal email, or sorting this out would have been a whole lot more painful.

The most inconvenient impact was Mastodon: I run my own instance at (previously) and losing DNS broke everything, both my ability to post but also my ability to even read posts on my timeline.

Blog entries

I published three articles since my last weeknotes:


I have released so much stuff recently. A lot of this was in preparation for NICAR—I wanted to polish all sorts of corners of Datasette Cloud, which is itself a huge bundle of pre-configured Datasette plugins. A lot of those plugins got a bump!

A few releases deserve a special mention:

  • datasette-extract, hinted at above, is a new plugin that enables tables in Datasette to be populated from unstructured data in pasted text or images.
  • datasette-export-database provides a way to export a current snapshot of a SQLite database from Datasette—something that previously wasn’t safe to do for databases that were accepting writes. It works by kicking off a background process to use VACUUM INTO in SQLite to create a temporary file with a transactional snapshot of the database state, then lets the user download that file.
  • llm-claude-3 provides access to the new Claude 3 models from my LLM tool. These models are really exciting: Opus feels better than GPT-4 at most things I’ve thrown at it, and Haiku is both slightly cheaper than GPT-3.5 Turbo and provides image input support at the lowest price point I’ve seen anywhere.
  • datasette-create-view is a new plugin that helps you create a SQL view from a SQL query. I shipped the new query_actions() plugin hook to make this possible.

Here’s the full list of recent releases: