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
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
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
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
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/
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...
Yeah, exactly - you can pick any technology stack you want and the LLM will generally go along with it
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
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/...
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...
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
I really like red/green TDD for agents, to force them to exercise the code they are writing simonwillison.net/guides/agent...
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[
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...
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"
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
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?
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
That was a total miss, I'm sorry! Spent the whole 2.5 days in Manhattan
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
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...
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...
I hope it's OK!
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...
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...
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
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...
{ "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!