Simon Willison's Avatar

Simon Willison

@simonwillison.net

Independent AI researcher, creator of datasette.io and llm.datasette.io, building open source tools for data journalism, writing about a lot of stuff at https://simonwillison.net/

44,362
Followers
1,443
Following
4,343
Posts
25.04.2023
Joined
Posts Following

Latest posts by Simon Willison @simonwillison.net

Setting up events in other time zones is still a thing I use a UI for, because the stakes of getting it wrong are too high - unlike personal reminders set for a specific time

10.03.2026 14:04 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

A better example might be "remind me to let the chickens out at 8am every morning" - being able to bypass any form of repeating events UI is a huge win

10.03.2026 13:27 πŸ‘ 1 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

I've using pre-LLM Siri to set reminders like that one for years, fiddling around in the Reminders app UI really does feel prehistoric to me at this point

10.03.2026 13:26 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
Simon Willison on sqlite 446 posts tagged β€˜sqlite’. SQLite is the world's most widely deployed database engine.

I love having tags because it means I get to run hundreds of little topic-specific blogs each with their own search and feeds - here's my SQLite one simonwillison.net/tags/sqlite/

09.03.2026 16:32 πŸ‘ 2 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
Production query plans without production data Radim Marek describes the new pg_restore_relation_stats() and pg_restore_attribute_stats() functions that were introduced in PostgreSQL 18 in September 2025. The PostgreSQL query planner makes use of ...

Got excited about a brand new PostgreSQL 18 feature (for simulating production query plan statistics locally), posted about it on the SQLite forum... and got a reply from D. Richard Hipp within minutes that SQLite has had the same ability for years simonwillison.net/2026/Mar/9/p...

09.03.2026 15:34 πŸ‘ 66 πŸ” 3 πŸ’¬ 3 πŸ“Œ 0

Yeah, exactly - you can pick any technology stack you want and the LLM will generally go along with it

09.03.2026 15:15 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

There's zero chance it would have recommended Showboat, I only created it a few weeks ago!

Training data clearly still influences recommendations it makes, what I find interesting is how well it does with newer technologies that you bring to it

09.03.2026 14:20 πŸ‘ 2 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Preview
I vibe coded my dream macOS presentation app I gave a talk this weekend at Social Science FOO Camp in Mountain View. The event was a classic unconference format where anyone could present a talk without needing to …

Oddly enough I built something in Swift for the first time just the other week - certainly not a "reasonably complex" project though, it was quite simple although the socket programming was surprisingly involved simonwillison.net/2026/Feb/25/...

09.03.2026 14:19 πŸ‘ 4 πŸ” 0 πŸ’¬ 2 πŸ“Œ 0
Perhaps not Boring Technology after all A recurring concern I’ve seen regarding LLMs for programming is that they will push our technology choices towards the tools that are best represented in their training data, making it …

A short note that the predictions that LLMs would favor "boring technology" that's over-represented in the training data don't appear to be playing out as expected with the latest models - once you attach them to a good coding agent harness at least simonwillison.net/2026/Mar/9/n...

09.03.2026 13:40 πŸ‘ 110 πŸ” 6 πŸ’¬ 11 πŸ“Œ 0

Has anyone seen an example of a blogger who got into short term video and then also cross-posted those to their blog (in addition to TikTok/etc)?

I don't think I've ever seen someone do that, which is surprising to me

09.03.2026 00:44 πŸ‘ 19 πŸ” 0 πŸ’¬ 8 πŸ“Œ 0
Red/green TDD - Agentic Engineering Patterns Red/green TDD - Agentic Engineering Patterns

I really like red/green TDD for agents, to force them to exercise the code they are writing simonwillison.net/guides/agent...

08.03.2026 01:42 πŸ‘ 1 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
Screenshot of a Claude mobile app conversation using Opus 4.6 Extended. The user message reads "pip install sqlite-utils and read the package metadata long description". A collapsed tool use step reads "Prepared to execute package installation and me…". Claude's response reads "Here's the long description for sqlite-utils (v3.39), by Simon Willison:" followed by an expanded tool use detail panel titled "Read the package metadata long descri…" showing an Input section with a bash code block containing "python3 -c " from importlib.metadata import metadata m = metadata('sqlite-utils') print(m.get('Description', 'No long descrip" and an Output section with a json code block containing { "returncode" : 0, "stdout" : "# sqlite-utils\n\n[![PyPI](ht", "stderr" : "" }.

Screenshot of a Claude mobile app conversation using Opus 4.6 Extended. The user message reads "pip install sqlite-utils and read the package metadata long description". A collapsed tool use step reads "Prepared to execute package installation and me…". Claude's response reads "Here's the long description for sqlite-utils (v3.39), by Simon Willison:" followed by an expanded tool use detail panel titled "Read the package metadata long descri…" showing an Input section with a bash code block containing "python3 -c " from importlib.metadata import metadata m = metadata('sqlite-utils') print(m.get('Description', 'No long descrip" and an Output section with a json code block containing { "returncode" : 0, "stdout" : "# sqlite-utils\n\n[![PyPI](ht", "stderr" : "" }.

You can tell the coding agent to read the README - most of them know how to do something like this:

06.03.2026 18:13 πŸ‘ 2 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

I'm leaning pretty hard into "agentic engineering" right now to describe what happens when professional software engineers use coding agents in a responsible way

(not just LLMs - a coding agent has the ability to run and test the code it's producing which makes all the difference)

06.03.2026 17:34 πŸ‘ 7 πŸ” 0 πŸ’¬ 1 πŸ“Œ 1
Agentic manual testing - Agentic Engineering Patterns Agentic manual testing - Agentic Engineering Patterns

New chapter: Agentic manual testing - about how having agents "manually" try out code is a useful way to help them spot issues that might not have been caught by their automated tests simonwillison.net/guides/agent...

06.03.2026 16:50 πŸ‘ 67 πŸ” 7 πŸ’¬ 4 πŸ“Œ 1

I get a version of that by saying "write a plan for what you're going to do and wait for me to review it"

06.03.2026 14:38 πŸ‘ 2 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
Preview
HYSTERIA - MUSE I think I could make an EP covering all of Muse's hits, Sewing-Gurdy style βœ¨πŸ™Œ #sewinggurdy #hurdygurdy #bardcore #electronicmusic #coversong TikTok video by SingerSoundSystem

He's doing Muse now www.tiktok.com/@singersound...

06.03.2026 08:47 πŸ‘ 10 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

Many of my prompts start with me feeding in the entirety of my existing code - hard to see how that decision relating to image generation applies to LLMs for code

06.03.2026 01:21 πŸ‘ 3 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

I'm very frustrated at how little useful discourse there has been over that issue though - how much do you need to prompt Claude Code before you can claim copyright over the result? Has anyone even tried to answer that question yet?

05.03.2026 17:30 πŸ‘ 6 πŸ” 0 πŸ’¬ 3 πŸ“Œ 0

I think that affects images generated from a single prompt, I haven't seen anything that suggests it affects LLM generated code that's had any hint of human interaction with the coding process at all

05.03.2026 17:29 πŸ‘ 4 πŸ” 0 πŸ’¬ 2 πŸ“Œ 0

That was a total miss, I'm sorry! Spent the whole 2.5 days in Manhattan

05.03.2026 03:04 πŸ‘ 1 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
Preview
The New York Earth Room On the second floor of 141 Wooster Street in New York's SoHo district there is a 3,600 square foot room filled with earth - 280,000 pounds of it, first installed in 1977 and maintained there ever sinc...

I went to the New York Earth Room! It's 280,000 pounds of soil in a loft in SoHo that's been there mostly unchanged since 1977
www.niche-museums.com/117

04.03.2026 23:00 πŸ‘ 62 πŸ” 1 πŸ’¬ 6 πŸ“Œ 0
Anti-patterns: things to avoid - Agentic Engineering Patterns Anti-patterns: things to avoid - Agentic Engineering Patterns

I started a new chapter of my Agentic Engineering Patternw guide about anti-patterns - things NOT to do

So far I only have one: Inflicting unreviewed code on collaborators, aka dumping a thousand line PR without even making sure it works first simonwillison.net/guides/agent...

04.03.2026 18:19 πŸ‘ 172 πŸ” 20 πŸ’¬ 6 πŸ“Œ 6
Something is afoot in the land of Qwen I’m behind on writing about Qwen 3.5, a truly remarkable family of open weight models released by Alibaba’s Qwen team over the past few weeks. I’m hoping that the 3.5 …

Published some notes on the situation at Qwen - they released the Qwen 3.5 family (an outstanding family of open weight models) but now their lead researcher and several others all appear to have resigned within the past 24 hours simonwillison.net/2026/Mar/4/q...

04.03.2026 15:53 πŸ‘ 108 πŸ” 17 πŸ’¬ 7 πŸ“Œ 3
Preview
UC Santa Barbara Baseball on X: "Happy to report that the pelican did (eventually) fly away safely" / X Happy to report that the pelican did (eventually) fly away safely

It's fine: twitter.com/ucsb_basebal...

04.03.2026 13:04 πŸ‘ 4 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

I hope it's OK!

04.03.2026 13:02 πŸ‘ 2 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
Preview
GIF optimization tool using WebAssembly and Gifsicle - Agentic Engineering Patterns GIF optimization tool using WebAssembly and Gifsicle - Agentic Engineering Patterns

I started a new section of my Agentic Engineering guide for annotated versions of prompts I've used for projects - the first is a prompt I used to have Claude Code for web build me a web UI for compressing GIFs using a WebAssembly build of Gifsicle simonwillison.net/guides/agent...

02.03.2026 17:20 πŸ‘ 77 πŸ” 6 πŸ’¬ 8 πŸ“Œ 1
5. "No new chicks for four years (due to a lack of fruiting rimu trees)" The phrasing "lack of fruiting rimu trees" is slightly imprecise. The issue isn't that rimu trees failed to fruit at all, but that there was no mass fruiting (masting) event, which is the specific trigger for kākāpō breeding. Consider "due to a lack of rimu masting" or "due to a lack of mass rimu fruiting."

5. "No new chicks for four years (due to a lack of fruiting rimu trees)" The phrasing "lack of fruiting rimu trees" is slightly imprecise. The issue isn't that rimu trees failed to fruit at all, but that there was no mass fruiting (masting) event, which is the specific trigger for kākāpō breeding. Consider "due to a lack of rimu masting" or "due to a lack of mass rimu fruiting."

Sent the February edition of my sponsors-only newsletter - a summary of my last month of blogging for people who want to pay for a shorter version

I use Claude as a proofreader and fact checker, was delighted that it called me out on this Kākāpō detail: simonwillison.net/2026/Mar/2/f...

02.03.2026 14:58 πŸ‘ 33 πŸ” 0 πŸ’¬ 2 πŸ“Œ 0

This is why I'm a heavy user of Claude Code for web, Anthropic's cloud hosted version of Claude

I don't care what happens in the sandbox if it's running on Anthropic's machines and not mine

01.03.2026 11:32 πŸ‘ 10 πŸ” 1 πŸ’¬ 0 πŸ“Œ 0
Interactive explanations - Agentic Engineering Patterns - Simon Willison's Weblog

New chapter of my Agentic Engineering Patterns guide. This one is about having coding agents build custom interactive and animated explanations to help fight back against cognitive debt simonwillison.net/guides/agent...

28.02.2026 23:14 πŸ‘ 165 πŸ” 11 πŸ’¬ 13 πŸ“Œ 1
{
  "recordWidth": 256,
  "totalRecords": 299382,
  "totalBytes": 76641792,
  "signposts": [
    {
      "idx": 0,
      "cp": 0
    },
    {
      "idx": 37422,
      "cp": 38452
    },
    {
      "idx": 74845,
      "cp": 81958
    },
    {
      "idx": 112268,
      "cp": 150305
    },
    {
      "idx": 149691,
      "cp": 187764
    },
    {
      "idx": 187113,
      "cp": 1001839
    },
    {
      "idx": 224536,
      "cp": 1039262
    },
    {
      "idx": 261959,
      "cp": 1076687
    }
  ]
}

{ "recordWidth": 256, "totalRecords": 299382, "totalBytes": 76641792, "signposts": [ { "idx": 0, "cp": 0 }, { "idx": 37422, "cp": 38452 }, { "idx": 74845, "cp": 81958 }, { "idx": 112268, "cp": 150305 }, { "idx": 149691, "cp": 187764 }, { "idx": 187113, "cp": 1001839 }, { "idx": 224536, "cp": 1039262 }, { "idx": 261959, "cp": 1076687 } ] }

It has a very tiny index to speed up the first few hits, but the point of the exercise was to do a binary search over HTTP ranges so optimizing it further would break that goal!

27.02.2026 23:01 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0