Simon Willison's Weblog
- Author
- Simon Willison
- Public lists
-
Featured
- Fetched
xAI: "We spotted a couple of issues with Grok 4 recently that we immediately investigated & mitigated"
Application development without programmers
ccusage
~/.claude/ directory. ccusage is a neat little Node.js tool which reads that information and shows you a readable summary of your usage patterns, including the estimated cost in USD per day.
You can run it using npx like this:
npx ccusage@latest
Tags: javascript, nodejs, anthropic, claude-code
Happy 20th birthday Django! Here's my talk on Django Origins from Django's 10th
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