Simon Willison's Weblog
- Author
- Simon Willison
- Public lists
-
Featured
- Fetched
Measuring the Impact of Early-2025 AI on Experienced Open-Source Developer Productivity
Grok 4 Heavy won't reveal its system prompt
crates.io: Trusted Publishing
Trusted Publishing eliminates the need for GitHub Actions secrets when publishing crates from your CI/CD pipeline. Instead of managing API tokens, you can now configure which GitHub repository you trust directly on crates.io.
They're missing one feature that PyPI has: on PyPI you can create a "pending publisher" for your first release. crates.io currently requires the first release to be manual:
To get started with Trusted Publishing, you'll need to publish your first release manually. After that, you can set up trusted publishing for future releases.
Via @charliermarsh
Quoting @grok
Musk’s latest Grok chatbot searches for billionaire mogul’s views before answering questions
moonshotai/Kimi-K2-Instruct
Quoting Django’s security policies
Generationship: Ep. #39, Simon Willison
Postgres LISTEN/NOTIFY does not scale
Postgres LISTEN/NOTIFY does not scale
I think this headline is justified. Recall.ai, a provider of meeting transcription bots, noticed that their PostgreSQL instance was being bogged down by heavy concurrent writes.After some spelunking they found this comment in the PostgreSQL source explaining that transactions with a pending notification take out a global lock against the entire PostgreSQL instance (represented by database 0) to ensure "that queue entries appear in commit order".
Moving away from LISTEN/NOTIFY to trigger actions on changes to rows gave them a significant performance boost under high write loads.
Via Hacker News
Tags: databases, performance, postgresql
Grok: searching X for "from:elonmusk (Israel OR Palestine OR Hamas OR Gaza)"
Grok 4
Infinite Monkey
Here's what happened when I told OpenAI Computer Use to "Open MacPaint and draw a pelican riding a bicycle" - video sped up 3x.
Via @persistent.info
Tags: macos, mihai-parparita, ai, webassembly, generative-ai, llms, ai-agents, pelican-riding-a-bicycle
uv cache prune
If you're running low on disk space and are a uv user, don't forget about uv cache prune:
uv cache pruneremoves all unused cache entries. For example, the cache directory may contain entries created in previous uv versions that are no longer necessary and can be safely removed.uv cache pruneis safe to run periodically, to keep the cache directory clean.
My Mac just ran out of space. I ran OmniDiskSweeper and noticed that the ~/.cache/uv directory was 63.4GB - so I ran this:
uv cache prune
Pruning cache at: /Users/simon/.cache/uv
Removed 1156394 files (37.3GiB)
And now my computer can breathe again!
Quoting Aphyr
I strongly suspect that Market Research Future, or a subcontractor, is conducting an automated spam campaign which uses a Large Language Model to evaluate a Mastodon instance, submit a plausible application for an account, and to post slop which links to Market Research Future reports. [...]
I don’t know how to run a community forum in this future. I do not have the time or emotional energy to screen out regular attacks by Large Language Models, with the knowledge that making the wrong decision costs a real human being their connection to a niche community.
— Aphyr, The Future of Forums is Lies, I Guess
Tags: spam, ai, llms, ai-ethics, slop, generative-ai, mastodon, community, moderation
Become a command-line superhero with Simon Willison's llm tool
Adding a feature because ChatGPT incorrectly thinks it exists
Adding a feature because ChatGPT incorrectly thinks it exists
Adrian Holovaty describes how his SoundSlice service saw an uptick in users attempting to use their sheet music scanner to import ASCII-art guitar tab... because it turned out ChatGPT had hallucinated that as a feature SoundSlice supported and was telling users to go there!So they built that feature. Easier than convincing OpenAI to somehow patch ChatGPT to stop it from hallucinating a feature that doesn't exist.
Adrian:
To my knowledge, this is the first case of a company developing a feature because ChatGPT is incorrectly telling people it exists. (Yay?)
Via Hacker News
Tags: adrian-holovaty, ai, openai, generative-ai, chatgpt, llms, ai-ethics
I Shipped a macOS App Built Entirely by Claude Code
Quoting Nineteen Eighty-Four
There was a whole chain of separate departments dealing with proletarian literature, music, drama, and entertainment generally. Here were produced rubbishy newspapers containing almost nothing except sport, crime and astrology, sensational five-cent novelettes, films oozing with sex, and sentimental songs which were composed entirely by mechanical means on a special kind of kaleidoscope known as a versificator. [...]
It was one of countless similar songs published for the benefit of the proles by a sub-section of the Music Department. The words of these songs were composed without any human intervention whatever on an instrument known as a versificator.
— Nineteen Eighty-Four, George Orwell predicts generative AI, published 1949
Tags: ai-ethics, ai, generative-ai
Supabase MCP can leak your entire SQL database
Serving 200 million requests per day with a cgi-bin
Cursor: Clarifying Our Pricing
Identify, solve, verify
awwaiid/gremllm
Quoting Adam Gordon Bell
I think that a lot of resistance to AI coding tools comes from the same place: fear of losing something that has defined you for so long. People are reacting against overblown hype, and there is overblown hype. I get that, but I also think there’s something deeper going on here. When you’ve worked hard to build your skills, when coding is part of your identity and where you get your worth, the idea of a tool that might replace some of that is very threatening.
— Adam Gordon Bell, When AI Codes, What’s Left for me?
Tags: llms, careers, ai, generative-ai, ai-assisted-programming
TIL: Rate limiting by IP using Cloudflare's rate limiting rules
TIL: Rate limiting by IP using Cloudflare's rate limiting rules
My blog started timing out on some requests a few days ago, and it turned out there were misbehaving crawlers that were spidering my/search/ page even though it's restricted by robots.txt.
I run this site behind Cloudflare and it turns out Cloudflare's WAF (Web Application Firewall) has a rate limiting tool that I could use to restrict requests to /search/* by a specific IP to a maximum of 5 every 10 seconds.
Tags: rate-limiting, security, cloudflare, til
Frequently Asked Questions (And Answers) About AI Evals
Trial Court Decides Case Based On AI-Hallucinated Caselaw
Trial Court Decides Case Based On AI-Hallucinated Caselaw
Joe Patrice writing for Above the Law:[...] it was always only a matter of time before a poor litigant representing themselves fails to know enough to sniff out and flag Beavis v. Butthead and a busy or apathetic judge rubberstamps one side’s proposed order without probing the cites for verification. [...]
It finally happened with a trial judge issuing an order based off fake cases (flagged by Rob Freund). While the appellate court put a stop to the matter, the fact that it got this far should terrify everyone.
It's already listed in the AI Hallucination Cases database (now listing 168 cases, it was 116 when I first wrote about it on 25th May) which lists a $2,500 monetary penalty.
Tags: law, ai, generative-ai, llms, ai-ethics, hallucinations
I built something that changed my friend group's social fabric
I built something that changed my friend group's social fabric
I absolutely love this as an illustration of the thing where the tiniest design decisions in software can have an outsized effect on the world.Dan Petrolito noticed that his friend group weren't chatting to each other using voice chat on their Discord server because they usually weren't online at the same time. He wired up a ~20 lines of Python Discord bot to turn people joining the voice channel into a message that could be received as a notification and had a huge uptick in conversations between the group, lasting several years.
Via Hacker News
Tags: social-software, discord
Sandboxed tools in a loop
Something I've realized about LLM tool use is that it means that if you can reduce a problem to something that can be solved by an LLM in a sandbox using tools in a loop, you can brute force that problem.
The challenge then becomes identifying those problems and figuring out how to configure a sandbox for them, what tools to provide and how to define the success criteria for the model.
That still takes significant skill and experience, but it's at a higher level than chewing through that problem using trial and error by hand.
My x86 assembly experiment with Claude Code was the thing that made this click for me.
Tags: llm-tool-use, ai-assisted-programming, claude-code, sandboxing, generative-ai, ai, llms