Simon Willison documented methods for fetching data from Datasette into Google Sheets using importdata(), named functions, or Google Apps Scripts for API token handling. An example spreadsheet demonstrates all three approaches.
simonwillison-net
30 items from simonwillison-net
Headless services are becoming more common as personal AIs provide better user experiences than direct service usage. Salesforce has launched a headless version exposing its platforms through APIs for AI agents. This trend could disrupt traditional per-user SaaS pricing models.
The Claude Token Counter tool has been upgraded to compare token counts across different Claude models. Opus 4.7 uses an updated tokenizer that increases token counts by 1.46x for text and up to 3.01x for images compared to Opus 4.6, potentially making it about 40% more expensive despite identical pricing.
Anthropic publishes Claude system prompts as Markdown, which were converted into separate files with fake git commit dates to enable browsing changes via GitHub. This allowed for detailed analysis of changes between model versions like Opus 4.6 and 4.7.
PyCon US 2026 will be held in Long Beach, California from May 13-19, featuring new dedicated tracks for AI and security. The conference includes core talks from May 15-17, along with tutorials, sprints, and community events.
Simon Willison describes how he used a short prompt with Claude Code to add support for "beats" content to his blog-to-newsletter tool. The prompt instructed the AI to clone his blog repository for reference, update the newsletter tool to include beats with descriptions, and test the changes. This resulted in a successful pull request that modified the SQL query and added beat type display logic.
Anthropic's Claude Opus 4.7 system prompt includes several changes from version 4.6, such as expanded child safety instructions, new guidance on acting versus clarifying, and removal of certain behavioral restrictions. The update also introduces tool search functionality and addresses issues like disordered eating and controversial yes/no questions.
asgi-gzip 0.3 fixes a bug where the library was incorrectly compressing Server-Sent Events responses. The issue occurred because a scheduled workflow to check for Starlette updates had stopped running, missing a fix. The update now correctly handles text/event-stream responses.
GitHub doesn't display repository size in its user interface, but the information is available through the CORS-friendly GitHub API. This tool allows users to paste a repository URL to view its size, such as simonw/datasette which is 8.1MB.
ChatGPT's voice mode runs on an older, weaker GPT-4o era model with a knowledge cutoff of April 2024, despite users expecting it to be the smartest AI. Andrej Karpathy notes the growing gap between different AI access points, with voice mode struggling on basic questions while paid models handle complex tasks.
Lenny posted a snippet from a podcast recording about kākāpō parrots. The post includes a video related to the topic.
A demo playground provides a UI for testing SQLite Query Result Formatter library rendering options. The tool compiles to WebAssembly and allows users to experiment with various SQL result table formats.
SQLite 3.53.0 is a major release with accumulated improvements including ALTER TABLE support for NOT NULL and CHECK constraints, new json_array_insert() function, and CLI enhancements via a new Query Results Formatter library.
The article provides a command-line recipe for transcribing audio files on macOS using the Gemma 4 E2B model with MLX and mlx-vlm. It demonstrates the transcription of a 14-second WAV file, noting minor misinterpretations in the output.
Bryan Cantrill argues that LLMs inherently lack the virtue of laziness, as work costs them nothing. He suggests this highlights how essential human laziness is, as our finite time forces us to develop crisp abstractions to avoid wasting time on clunky ones.
The Servo browser engine is now available as an embeddable library on crates.io. A CLI tool called servo-shot was created to take screenshots of webpages using the new crate. While compiling Servo to WebAssembly isn't feasible, a playground was built for experimenting with html5ever and markup5ever_rcdom crates in WebAssembly.
Steve Yegge
3.5Steve Yegge claimed Google's AI adoption resembles tractor company John Deere, with most engineers using basic chat tools. Google executives Addy Osmani and Demis Hassabis disputed this, stating over 40,000 software engineers use agentic coding weekly and calling Yegge's claims false.
The UK's AI Safety Institute found Claude Mythos AI is exceptionally effective at identifying security vulnerabilities, with better results as more tokens are spent. This creates an economic incentive where system hardening requires spending more tokens discovering exploits than attackers spend exploiting them.
OpenAI has introduced GPT-5.4-Cyber, a cybersecurity-focused model variant, and expanded its Trusted Access for Cyber program. The program allows users to verify their identity for reduced-friction access to OpenAI's models for cybersecurity work. However, access to the best security tools still requires an additional application process.
Datasette has replaced its token-based CSRF protection with a new approach using Sec-Fetch-Site headers, inspired by Go 1.25 and research by Filippo Valsorda. This eliminates the need for CSRF tokens in templates and removes related plugin hooks.
Zig 0.16.0 introduces "Juicy Main," a dependency injection feature for the main() function that provides access to useful properties like allocators, I/O, environment variables, and CLI arguments through a process.Init parameter.
Datasette-ports 0.3 has been released with updates to help monitor Datasette instances. The tool now displays the working directory derived from each process ID and shows the full path to each database file. The output format has been improved to provide more detailed information about running Datasette instances.
Kyle Kingsbury predicts that some people will be employed as "meat shields" accountable for ML systems, with accountability ranging from internal reviews to external legal penalties. This may involve formal roles like Data Protection Officers or third-party subcontractors who can be blamed when systems misbehave.
Google has released a new Gemini 3.1 Flash TTS text-to-speech model. The article provides a link to notes about this new AI tool.
Google released Gemini 3.1 Flash TTS, a new text-to-speech model that can be directed using detailed prompts. The model is available via the Gemini API and can only output audio files. The prompting system allows for detailed voice direction including accent, style, and emotional tone.
John Gruber argues that Apple's competitive advantage comes from having the best apps on its platforms, which attracts users. He suggests this edge is waning as fewer developers are motivated to create well-crafted native apps exclusively for Apple's platforms.
Datasette 1.0a27 replaces Django-style CSRF tokens with modern browser headers and introduces a RenameTableEvent for when tables are renamed during SQLite transactions. The release also includes several other changes like a new actor parameter for internal requests and improved API endpoints.
The datasette-export-database plugin version 0.3a1 has been released to address compatibility issues with Datasette 1.0a27, which no longer sets the ds_csrftoken cookie used by the plugin's custom signed URL system.
Simon Willison created a preview tool for the datasette.io website's news section, which is built from a YAML file. The tool allows editing and validation of the YAML format to catch errors before they appear on the live site.
The author tested Qwen3.6-35B-A3B and Claude Opus 4.7 on a "pelican riding a bicycle" benchmark. Qwen3.6 produced a better SVG illustration with a correct bicycle frame, while Opus 4.7 failed to properly render the bicycle frame. The humorous benchmark has generally correlated with model usefulness.