simonw/actions-latest
A developer creates a scraper to track the latest versions of GitHub Actions, helping coding agents avoid stale workflows.
SimonWillison.net is the long-running blog of Simon Willison, a software engineer, open-source creator, and co-author of the original Django framework. He writes about Python, Django, Datasette, AI tooling, prompt engineering, search, databases, APIs, data journalism, and practical software architecture. The blog includes detailed notes from experiments, conference talks, and real projects. Readers will find clear explanations of topics such as LLM workflows, SQL patterns, data publishing, scraping, deployment, caching, and modern developer tooling. Simon also publishes frequent micro-posts and TIL entries that document small discoveries and tricks from day-to-day engineering work. The tone is practical and research oriented, making the site a valuable resource for anyone interested in serious engineering and open data.
127 articles from this blog
A developer creates a scraper to track the latest versions of GitHub Actions, helping coding agents avoid stale workflows.
Author details how Substack's content filter blocked a newsletter containing a SQL injection exploit example, citing a 'Network error'.
Boris Cherny shares his experience using Claude Code + Opus 4.5 to write all code for 259 PRs in a month, highlighting AI's coding progress.
A review of textarea.my, a minimalist browser-based text editor that stores data in the URL hash, highlighting its clever JavaScript techniques.
An analysis of the performance optimizations in uv, a fast Python package installer, focusing on HTTP range requests and compact version representation.
Rob Pike's angry reaction to receiving an AI-generated 'thank you' email from the 'AI Village' project, sparking debate about AI ethics and spam.
Introduces claude-code-transcripts, a Python CLI tool for converting Claude Code sessions into detailed, shareable HTML transcripts.
A demonstration of different uv init command options for Python project setup, with examples hosted on GitHub.
Redis creator Salvatore Sanfilippo discusses why he would have chosen JavaScript over Lua for Redis scripting if MicroQuickJS existed in 2010.
Explores MicroQuickJS, a tiny JavaScript engine for embedded systems, as a potential sandbox for running untrusted code with strict resource limits.
A developer uses the Claude in Chrome browser agent to navigate the Cloudflare dashboard and solve a CORS configuration problem.
A visual essay explaining LLM internals like tokenization, embeddings, and transformer architecture in an accessible way.
OpenAI releases GPT-5.2-Codex, a model optimized for agentic coding with improvements in refactoring, Windows performance, and cybersecurity.
Anthropic's Agent Skills specification becomes an open standard, detailing its lightweight design and current industry adoption.
A new dependency-free HTML5 parser for Swift called swift-justhtml is introduced, with performance benchmarks comparing it to implementations in Rust, JavaScript, and Python.
Argues that software engineers must prove their code works through manual and automated testing, not just rely on AI tools and code reviews.
Analysis of a complex RCE attack chain in PostHog exploiting SSRF, a ClickHouse SQL 0day, and default PostgreSQL credentials.
Anil Madhavapeddy uses AI to port an HTML5 parser and test suite from JavaScript to OCaml, discussing copyright and ethical implications.
Google releases Gemini 3 Flash, a faster, cheaper AI model with strong coding and multimodal capabilities, compared to previous versions.
Explains how Firefox's HTML5 parser is maintained in Java and automatically translated to C++ using a custom script.