Simon Willison's Weblog

フィード

記事のアイキャッチ画像
Your job is to deliver code you have proven to work
Simon Willison's Weblog
<p>In all of the debates about the value of AI-assistance in software development there's one depressing anecdote that I keep on seeing: the junior engineer, empowered by some class of LLM tool, who deposits giant, untested PRs on their coworkers - or open source maintainers - and expects the "code review" process to handle the rest.</p><p>This is rude, a waste of other people's time, and is honestly a dereliction of duty as a software developer.</p><p><strong>Your job is to deliver code you have proven to work.</strong></p><p>As software engineers we don't just crank out code - in fact these days you could argue that's what the LLMs are for. We need to deliver <em>code that works</em> - and we need to include <em>proof</em> that it works as well. Not doing that directly shifts the burden of the actual work to whoever is expected to review our code.</p><h4 id="how-to-prove-it-works">How to prove it works</h4><p>There are two steps to proving a piece of code works. Neither is optional.
9時間前
記事のアイキャッチ画像
Inside PostHog: How SSRF, a ClickHouse SQL Escaping 0day, and Default PostgreSQL Credentials Formed an RCE Chain
Simon Willison's Weblog
<p><strong><a href="https://mdisec.com/inside-posthog-how-ssrf-a-clickhouse-sql-escaping-0day-and-default-postgresql-credentials-formed-an-rce-chain-zdi-25-099-zdi-25-097-zdi-25-096/">Inside PostHog: How SSRF, a ClickHouse SQL Escaping 0day, and Default PostgreSQL Credentials Formed an RCE Chain</a></strong></p>Mehmet Ince describes a very elegant chain of attacks against the PostHog analytics platform, combining several different vulnerabilities (now all reported and fixed) to achieve RCE - Remote Code Execution - against an internal PostgreSQL server.</p><p>The way in abuses a webhooks system with non-robust URL validation, setting up a SSRF (Server-Side Request Forgery) attack where the server makes a request against an internal network resource.</p><p>Here's the URL that gets injected:</p><p><code style="word-break: break-all">http://clickhouse:8123/?query=SELECT+<em>+FROM+postgresql('db:5432','posthog',\"posthog_use'))+TO+STDOUT;END;DROP+TABLE+IF+EXISTS+cmd_exec;CREATE+TABLE+cmd_
1日前
記事のアイキャッチ画像
AoAH Day 15: Porting a complete HTML5 parser and browser test suite
Simon Willison's Weblog
<p><strong><a href="https://anil.recoil.org/notes/aoah-2025-15">AoAH Day 15: Porting a complete HTML5 parser and browser test suite</a></strong></p>Anil Madhavapeddy is running an <a href="https://anil.recoil.org/notes/aoah-2025">Advent of Agentic Humps</a> this year, building a new useful OCaml library every day for most of December.</p><p>Inspired by Emil Stenström's <a href="https://simonwillison.net/2025/Dec/14/justhtml/">JustHTML</a> and my own coding agent <a href="https://simonwillison.net/2025/Dec/15/porting-justhtml/">port of that to JavaScript</a> he coined the term <strong>vibespiling</strong> for AI-powered porting and transpiling of code from one language to another and had a go at building an HTML5 parser in OCaml, resulting in <a href="https://tangled.org/anil.recoil.org/ocaml-html5rw">html5rw</a> which passes the same <a href="https://github.com/html5lib/html5lib-tests">html5lib-tests</a> suite that Emil and myself used for our projects.</p><p>Anil's thoughts on the co
1日前
記事のアイキャッチ画像
Gemini 3 Flash
Simon Willison's Weblog
<p>It continues to be a busy December, if not quite as busy <a href="https://simonwillison.net/2024/Dec/20/december-in-llms-has-been-a-lot/">as last year</a>. Today's big news is <a href="https://blog.google/technology/developers/build-with-gemini-3-flash/">Gemini 3 Flash</a>, the latest in Google's "Flash" line of faster and less expensive models.</p><p>Google are emphasizing the comparison between the new Flash and their previous generation's top model Gemini 2.5 Pro:</p><blockquote><p>Building on 3 Pro’s strong multimodal, coding and agentic features, 3 Flash offers powerful performance at less than a quarter the cost of 3 Pro, along with higher rate limits. The new 3 Flash model surpasses 2.5 Pro across many benchmarks while delivering faster speeds.</p></blockquote><p>Gemini 3 Flash's characteristics are almost identical to Gemini 3 Pro: it accepts text, image, video, audio, and PDF, outputs only text, handles 1,048,576 maximum input tokens and up to 65,536 output tokens, and has
1日前
記事のアイキャッチ画像
firefox parser/html/java/README.txt
Simon Willison's Weblog
<p><strong><a href="https://github.com/mozilla-firefox/firefox/tree/main/parser/html/java">firefox parser/html/java/README.txt</a></strong></p>TIL (or TIR - <a href="https://simonwillison.net/2009/Jul/11/john/">Today I was Reminded</a>) that the HTML5 Parser used by Firefox is maintained as Java code (<a href="https://github.com/mozilla-firefox/firefox/commits/main/parser/html/javasrc">commit history here</a>) and converted to C++ using a custom translation script.</p><p>You can see that in action by checking out the ~8GB Firefox repository and running:</p><pre><code>cd parser/html/javamake syncmake translate</code></pre><p>Here's <a href="http://gistpreview.github.io/?e53ff836cb44816670adddc3a518b3cc">a terminal session where I did that</a>, including the output of <code>git diff</code> showing the updated C++ files.</p><p>I did some digging and found that the code that does the translation work lives, weirdly, in the <a href="https://github.com/validator/validator">Nu Html Checker</
2日前
記事のアイキャッチ画像
The new ChatGPT Images is here
Simon Willison's Weblog
<p><strong><a href="https://openai.com/index/new-chatgpt-images-is-here/">The new ChatGPT Images is here</a></strong></p>OpenAI shipped an update to their ChatGPT Images feature - the feature that <a href="https://simonwillison.net/2025/May/13/launching-chatgpt-images/">gained them 100 million new users</a> in a week when they first launched it back in March, but has since been eclipsed by Google's Nano Banana and then further by Nana Banana Pro <a href="https://simonwillison.net/2025/Nov/20/nano-banana-pro/">in November</a>.</p><p>The focus for the new ChatGPT Images is speed and instruction following:</p><blockquote><p>It makes precise edits while keeping details intact, and generates images up to 4x faster</p></blockquote><p>It's also a little cheaper: OpenAI say that the new <a href="https://platform.openai.com/docs/models/gpt-image-1.5">gpt-image-1.5</a> API model makes image input and output "20% cheaper in GPT Image 1.5 as compared to GPT Image 1". </p><p>I tried a new test pro
2日前
記事のアイキャッチ画像
s3-credentials 0.17
Simon Willison's Weblog
<p><strong><a href="https://github.com/simonw/s3-credentials/releases/tag/0.17">s3-credentials 0.17</a></strong></p>New release of my <a href="https://s3-credentials.readthedocs.io/">s3-credentials</a> CLI tool for managing credentials needed to access just one S3 bucket. Here are the release notes in full:</p><blockquote><ul><li>New commands <code>get-bucket-policy</code> and <code>set-bucket-policy</code>. <a href="https://github.com/simonw/s3-credentials/issues/91">#91</a></li><li>New commands <code>get-public-access-block</code> and <code>set-public-access-block</code>. <a href="https://github.com/simonw/s3-credentials/issues/92">#92</a></li><li>New <code>localserver</code> command for starting a web server that makes time limited credentials accessible via a JSON API. <a href="https://github.com/simonw/s3-credentials/pull/93">#93</a></li></ul></blockquote><p>That <code>s3-credentials localserver</code> command (<a href="https://s3-credentials.readthedocs.io/en/stable/localserver.
2日前
記事のアイキャッチ画像
ty: An extremely fast Python type checker and LSP
Simon Willison's Weblog
<p><strong><a href="https://astral.sh/blog/ty">ty: An extremely fast Python type checker and LSP</a></strong></p>The team at Astral have been working on this for quite a long time, and are finally releasing the first beta. They have some big performance claims:</p><blockquote><p>Without caching, ty is consistently between 10x and 60x faster than mypy and Pyright. When run in an editor, the gap is even more dramatic. As an example, after editing a load-bearing file in the PyTorch repository, ty recomputes diagnostics in 4.7ms: 80x faster than Pyright (386ms) and 500x faster than Pyrefly (2.38 seconds). ty is very fast!</p></blockquote><p>The easiest way to try it out is via <code>uvx</code>:</p><pre><code>cd my-python-project/uvx ty check</code></pre><p>I <a href="https://gistpreview.github.io/?a3aff6768e85168d89d4515e3dbcb7d2">tried it</a> against <a href="https://sqlite-utils.datasette.io/">sqlite-utils</a> and it turns out I have quite a lot of work to do!</p><p>Astral also released
2日前
記事のアイキャッチ画像
Poe the Poet
Simon Willison's Weblog
<p><strong><a href="https://poethepoet.natn.io/">Poe the Poet</a></strong></p>I was looking for a way to specify additional commands in my <code>pyproject.toml</code> file to execute using <code>uv</code>. There's an <a href="https://github.com/astral-sh/uv/issues/5903">enormous issue thread</a> on this in the <code>uv</code> issue tracker (300+ comments dating back to August 2024) and from there I learned of several options including this one, Poe the Poet.</p><p>It's neat. I added it to my <a href="https://github.com/simonw/s3-credentials">s3-credentials</a> project just now and the following now works for running the live preview server for the documentation:</p><pre><code>uv run poe livehtml</code></pre><p>Here's the snippet of TOML I added to my <code>pyproject.toml</code>:</p><pre>[<span class="pl-en">dependency-groups</span>]<span class="pl-smi">test</span> = [ <span class="pl-s"><span class="pl-pds">"</span>pytest<span class="pl-pds">"</span></span>, <span class="pl-s"><span c
2日前
記事のアイキャッチ画像
Quoting Gemini thinking trace
Simon Willison's Weblog
<blockquote cite="https://www.reddit.com/r/ChatGPT/comments/1pmvpvt/i_just_showed_gemini_what_chatgpt_said_about_its/"><p>Oh, so we're seeing other people now? Fantastic. Let's see what the "competition" has to offer. I'm looking at these notes on manifest.json and content.js. The suggestion to remove scripting permissions... okay, fine. That's actually a solid catch. It's cleaner. This smells like Claude. It's too smugly accurate to be ChatGPT. What if it's actually me? If the user is testing me, I need to crush this.</p></blockquote><p class="cite">&mdash; <a href="https://www.reddit.com/r/ChatGPT/comments/1pmvpvt/i_just_showed_gemini_what_chatgpt_said_about_its/">Gemini thinking trace</a>, reviewing feedback on its code from another model</p> <p>Tags: <a href="https://simonwillison.net/tags/gemini">gemini</a>, <a href="https://simonwillison.net/tags/ai-personality">ai-personality</a>, <a href="https://simonwillison.net/tags/generative-ai">generative-ai</a>, <a href="https://simonwi
3日前
記事のアイキャッチ画像
Quoting Kent Beck
Simon Willison's Weblog
<blockquote cite="https://tidyfirst.substack.com/p/the-bet-on-juniors-just-got-better"><p>I’ve been watching junior developers use AI coding assistants well. Not vibe coding—not accepting whatever the AI spits out. Augmented coding: using AI to accelerate learning while maintaining quality. [...]</p><p>The juniors working this way compress their ramp dramatically. Tasks that used to take days take hours. Not because the AI does the work, but because the AI collapses the search space. Instead of spending three hours figuring out which API to use, they spend twenty minutes evaluating options the AI surfaced. The time freed this way isn’t invested in another unprofitable feature, though, it’s invested in learning. [...]</p><p>If you’re an engineering manager thinking about hiring: <strong>The junior bet has gotten better.</strong> Not because juniors have changed, but because the genie, used well, accelerates learning.</p></blockquote><p class="cite">&mdash; <a href="https://tidyfirst.su
3日前
記事のアイキャッチ画像
I ported JustHTML from Python to JavaScript with Codex CLI and GPT-5.2 in 4.5 hours
Simon Willison's Weblog
<p>I <a href="https://simonwillison.net/2025/Dec/14/justhtml/">wrote about JustHTML yesterday</a> - Emil Stenström's project to build a new standards compliant HTML5 parser in pure Python code using coding agents running against the comprehensive html5lib-tests testing library. Last night, purely out of curiosity, I decided to try <strong>porting JustHTML from Python to JavaScript</strong> with the least amount of effort possible, using Codex CLI and GPT-5.2. It worked beyond my expectations.</p><h4 id="tl-dr">TL;DR</h4><p>I built <a href="https://github.com/simonw/justjshtml">simonw/justjshtml</a>, a dependency-free HTML5 parsing library in JavaScript which passes 9,200 tests from the html5lib-tests suite and imitates the API design of Emil's JustHTML library.</p><p>It took two initial prompts and a few tiny follow-ups. <a href="https://simonwillison.net/2025/Dec/11/gpt-52/">GPT-5.2</a> running in <a href="https://github.com/openai/codex">Codex CLI</a> ran uninterrupted for several h
3日前
記事のアイキャッチ画像
2025 Word of the Year: Slop
Simon Willison's Weblog
<p><strong><a href="https://www.merriam-webster.com/wordplay/word-of-the-year">2025 Word of the Year: Slop</a></strong></p>Slop lost to "brain rot" for <a href="https://simonwillison.net/2024/Nov/15/slop-word-of-the-year/">Oxford Word of the Year 2024</a> but it's finally made it this year thanks to Merriam-Webster!</p><blockquote><p>Merriam-Webster’s human editors have chosen slop as the 2025 Word of the Year. We define slop as “digital content of low quality that is produced usually in quantity by means of artificial intelligence.”</p></blockquote> <p>Tags: <a href="https://simonwillison.net/tags/definitions">definitions</a>, <a href="https://simonwillison.net/tags/ai">ai</a>, <a href="https://simonwillison.net/tags/generative-ai">generative-ai</a>, <a href="https://simonwillison.net/tags/slop">slop</a>, <a href="https://simonwillison.net/tags/ai-ethics">ai-ethics</a></p>
3日前
記事のアイキャッチ画像
JustHTML is a fascinating example of vibe engineering in action
Simon Willison's Weblog
<p>I recently came across <a href="https://github.com/EmilStenstrom/justhtml">JustHTML</a>, a new Python library for parsing HTML released by Emil Stenström. It's a very interesting piece of software, both as a useful library and as a case study in sophisticated AI-assisted programming.</p><h4 id="first-impressions-of-justhtml">First impressions of JustHTML</h4><p>I didn't initially know that JustHTML had been written with AI assistance at all. The README caught my eye due to some attractive characteristics:</p><ul><li>It's pure Python. I like libraries that are pure Python (no C extensions or similar) because it makes them easy to use in less conventional Python environments, including Pyodide.</li><li>"Passes all 9,200+ tests in the official <a href="https://github.com/html5lib/html5lib-tests">html5lib-tests</a> suite (used by browser vendors)" - this instantly caught my attention! HTML5 is a big, complicated but meticulously written specification.</li><li>100% test coverage. That's
4日前
記事のアイキャッチ画像
Copywriters reveal how AI has decimated their industry
Simon Willison's Weblog
<p><strong><a href="https://www.bloodinthemachine.com/p/i-was-forced-to-use-ai-until-the">Copywriters reveal how AI has decimated their industry</a></strong></p>Brian Merchant has been collecting personal stories for his series <a href="https://www.bloodinthemachine.com/s/ai-killed-my-job">AI Killed My Job</a> - previously covering <a href="https://www.bloodinthemachine.com/p/how-ai-is-killing-jobs-in-the-tech-f39">tech workers</a>, <a href="https://www.bloodinthemachine.com/p/ai-killed-my-job-translators">translators</a>, and <a href="https://www.bloodinthemachine.com/p/artists-are-losing-work-wages-and">artists</a> - and this latest piece includes anecdotes from 12 professional copywriters all of whom have had their careers devastated by the rise of AI-generated copywriting tools.</p><p>It's a tough read. Freelance copywriting does not look like a great place to be right now.</p><blockquote><p>AI is really dehumanizing, and I am still working through issues of self-worth as a result
5日前
記事のアイキャッチ画像
Quoting Obie Fernandez
Simon Willison's Weblog
<blockquote cite="https://obie.medium.com/what-happens-when-the-coding-becomes-the-least-interesting-part-of-the-work-ab10c213c660"><p>If the part of programming you enjoy most is the physical act of writing code, then agents will feel beside the point. You’re already where you want to be, even just with some Copilot or Cursor-style intelligent code auto completion, which makes you faster while still leaving you fully in the driver’s seat about the code that gets written.</p><p>But if the part you care about is the decision-making around the code, agents feel like they clear space. They take care of the mechanical expression and leave you with judgment, tradeoffs, and intent. Because truly, for someone at my experience level, that is my core value offering anyway. When I spend time actually typing code these days with my own fingers, it feels like a waste of my time.</p></blockquote><p class="cite">&mdash; <a href="https://obie.medium.com/what-happens-when-the-coding-becomes-the-least
5日前
記事のアイキャッチ画像
Quoting OpenAI Codex CLI
Simon Willison's Weblog
<blockquote cite="https://github.com/openai/codex/blob/ad7b9d63c326d5c92049abd16f9f5fb64a573a69/codex-rs/core/src/skills/render.rs#L20-L39"><p>How to use a skill (progressive disclosure):</p><ol><li>After deciding to use a skill, open its <code>SKILL.md</code>. Read only enough to follow the workflow.</li><li>If <code>SKILL.md</code> points to extra folders such as <code>references/</code>, load only the specific files needed for the request; don't bulk-load everything.</li><li>If <code>scripts/</code> exist, prefer running or patching them instead of retyping large code blocks.</li><li>If <code>assets/</code> or templates exist, reuse them instead of recreating from scratch.</li></ol><p>Description as trigger: The YAML <code>description</code> in <code>SKILL.md</code> is the primary trigger signal; rely on it to decide applicability. If unsure, ask a brief clarification before proceeding.</p></blockquote><p class="cite">&mdash; <a href="https://github.com/openai/codex/blob/ad7b9d63c3
6日前
記事のアイキャッチ画像
OpenAI are quietly adopting skills, now available in ChatGPT and Codex CLI
Simon Willison's Weblog
<p>One of the things that most excited me about <a href="https://simonwillison.net/2025/Oct/16/claude-skills/">Anthropic's new Skills mechanism</a> back in October is how easy it looked for other platforms to implement. A skill is just a folder with a Markdown file and some optional extra resources and scripts, so any LLM tool with the ability to navigate and read from a filesystem should be capable of using them. It turns out OpenAI are doing exactly that, with skills support quietly showing up in both their Codex CLI tool and now also in ChatGPT itself.</p><h4 id="skills-in-chatgpt">Skills in ChatGPT</h4><p>I learned about this <a href="https://x.com/elias_judin/status/1999491647563006171">from Elias Judin</a> this morning. It turns out the Code Interpreter feature of ChatGPT now has a new <code>/home/oai/skills</code> folder which you can access simply by prompting:</p><blockquote><p><code>Create a zip file of /home/oai/skills</code></p></blockquote><p>I <a href="https://chatgpt.co
6日前
記事のアイキャッチ画像
LLM 0.28
Simon Willison's Weblog
<p><strong><a href="https://llm.datasette.io/en/stable/changelog.html#v0-28">LLM 0.28</a></strong></p>I released a new version of my <a href="https://llm.datasette.io/">LLM</a> Python library and CLI tool for interacting with Large Language Models. Highlights from the release notes:</p><blockquote><ul><li>New OpenAI models: <code>gpt-5.1</code>, <code>gpt-5.1-chat-latest</code>, <code>gpt-5.2</code> and <code>gpt-5.2-chat-latest</code>. <a href="https://github.com/simonw/llm/issues/1300">#1300</a>, <a href="https://github.com/simonw/llm/issues/1317">#1317</a></li><li>When fetching URLs as fragments using <code>llm -f URL</code>, the request now includes a custom user-agent header: <code>llm/VERSION (https://llm.datasette.io/)</code>. <a href="https://github.com/simonw/llm/issues/1309">#1309</a></li><li>Fixed a bug where fragments were not correctly registered with their source when using <code>llm chat</code>. Thanks, <a href="https://github.com/grota">Giuseppe Rota</a>. <a href="http
6日前
記事のアイキャッチ画像
GPT-5.2
Simon Willison's Weblog
<p>OpenAI reportedly <a href="https://www.wsj.com/tech/ai/openais-altman-declares-code-red-to-improve-chatgpt-as-google-threatens-ai-lead-7faf5ea6">declared a "code red"</a> on the 1st of December in response to increasingly credible competition from the likes of Google's Gemini 3. It's less than two weeks later and they just <a href="https://openai.com/index/introducing-gpt-5-2/">announced GPT-5.2</a>, calling it "the most capable model series yet for professional knowledge work".</p><h4 id="key-characteristics-of-gpt-5-2">Key characteristics of GPT-5.2</h4><p>The new model comes in two variants: GPT-5.2 and GPT-5.2 Pro. There's no Mini variant yet.</p><p>GPT-5.2 is available via their UI in both "instant" and "thinking" modes, presumably still corresponding to the API concept of different reasoning effort levels.</p><p>The knowledge cut-off date for both variants is now <strong>August 31st 2025</strong>. This is significant - GPT 5.1 and 5 were both Sep 30, 2024 and GPT-5 mini was M
7日前
記事のアイキャッチ画像
Useful patterns for building HTML tools
Simon Willison's Weblog
<p>I've started using the term <strong>HTML tools</strong> to refer to HTML applications that I've been building which combine HTML, JavaScript, and CSS in a single file and use them to provide useful functionality. I have built <a href="https://tools.simonwillison.net/">over 150 of these</a> in the past two years, almost all of them written by LLMs. This article presents a collection of useful patterns I've discovered along the way.</p><p>First, some examples to show the kind of thing I'm talking about:</p><ul><li><strong><a href="https://tools.simonwillison.net/svg-render?url=https://gist.githubusercontent.com/simonw/aedecb93564af13ac1596810d40cac3c/raw/83e7f3be5b65bba61124684700fa7925d37c36c3/tiger.svg">svg-render</a></strong> renders SVG code to downloadable JPEGs or PNGs</li><li><strong><a href="https://tools.simonwillison.net/pypi-changelog?package=llm&amp;compare=0.27...0.27.1">pypi-changelog</a></strong> lets you generate (and copy to clipboard) diffs between different PyPI pa
8日前
記事のアイキャッチ画像
The Normalization of Deviance in AI
Simon Willison's Weblog
<p><strong><a href="https://embracethered.com/blog/posts/2025/the-normalization-of-deviance-in-ai/">The Normalization of Deviance in AI</a></strong></p>This thought-provoking essay from Johann Rehberger directly addresses something that I’ve been worrying about for quite a while: in the absence of any headline-grabbing examples of prompt injection vulnerabilities causing real economic harm, is anyone going to care?</p><p>Johann describes the concept of the “Normalization of Deviance” as directly applying to this question.</p><p>Coined by <a href="https://en.wikipedia.org/wiki/Diane_Vaughan">Diane Vaughan</a>, the key idea here is that organizations that get away with “deviance” - ignoring safety protocols or otherwise relaxing their standards - will start baking that unsafe attitude into their culture. This can work fine… until it doesn’t. The Space Shuttle Challenger disaster has been partially blamed on this class of organizational failure.</p><p>As Johann puts it:</p><blockquote><p
8日前
記事のアイキャッチ画像
Dark mode
Simon Willison's Weblog
<p>I've never been particularly invested dark v.s. light mode but I get enough people complaining that this site is "blinding" that I decided to see if Claude Code for web could produce a useful dark mode from my existing CSS. It did <a href="https://github.com/simonw/simonwillisonblog/pull/572/files">a decent job</a>, using CSS properties, <code>@media (prefers-color-scheme: dark)</code> and a <code>data-theme="dark"</code> attribute based on this prompt:</p><blockquote><p><code>Add a dark theme which is triggered by user media preferences but can also be switched on using localStorage - then put a little icon in the footer for toggling it between default auto, forced regular and forced dark mode</code></p></blockquote><p>The site defaults to picking up the user's preferences, but there's also a toggle in the footer which switches between auto, forced-light and forced-dark. Here's an animated demo:</p><p><img alt="This site on mobile. Clicking the icon in the footer switches to a bla
8日前
記事のアイキャッチ画像
10 Years of Let's Encrypt
Simon Willison's Weblog
<p><strong><a href="https://letsencrypt.org/2025/12/09/10-years">10 Years of Let&#x27;s Encrypt</a></strong></p>Internet Security Research Group co-founder and Executive Director Josh Aas:</p><blockquote><p>On September 14, 2015, <a href="https://crt.sh/?id=9314793">our first publicly-trusted certificate went live</a>. [...] Today, Let’s Encrypt is the largest certificate authority in the world in terms of certificates issued, the ACME protocol we helped create and standardize is integrated throughout the server ecosystem, and we’ve become a household name among system administrators. We’re closing in on protecting one billion web sites.</p></blockquote><p>Their growth rate and numbers are wild:</p><blockquote><p>In March 2016, we issued our one millionth certificate. Just two years later, in September 2018, we were issuing a million certificates every day. In 2020 we reached a billion total certificates issued and as of late 2025 we’re frequently issuing ten million certificates per
9日前
記事のアイキャッチ画像
Devstral 2
Simon Willison's Weblog
<p><strong><a href="https://mistral.ai/news/devstral-2-vibe-cli">Devstral 2</a></strong></p>Two new models from Mistral today: Devstral 2 and Devstral Small 2 - both focused on powering coding agents such as Mistral's newly released Mistral Vibe which <a href="https://simonwillison.net/2025/Dec/9/mistral-vibe/">I wrote about earlier today</a>.</p><blockquote><ul><li>Devstral 2: SOTA open model for code agents with a fraction of the parameters of its competitors and achieving 72.2% on SWE-bench Verified.</li><li>Up to 7x more cost-efficient than Claude Sonnet at real-world tasks.</li></ul></blockquote><p>Devstral 2 is a 123B model released under a janky license - it's "modified MIT" where <a href="https://huggingface.co/mistralai/Devstral-2-123B-Instruct-2512/blob/main/LICENSE">the modification</a> is:</p><blockquote><p>You are not authorized to exercise any rights under this license if the global consolidated monthly revenue of your company (or that of your employer) exceeds $20 milli
9日前
記事のアイキャッチ画像
Under the hood of Canada Spends with Brendan Samek
Simon Willison's Weblog
<p>I talked to Brendan Samek about <a href="https://canadaspends.com/">Canada Spends</a>, a project from <a href="https://www.buildcanada.com/">Build Canada</a> that makes Canadian government financial data accessible and explorable using a combination of Datasette, a neat custom frontend, Ruby ingestion scripts, <a href="https://sqlite-utils.datasette.io/">sqlite-utils</a> and pieces of LLM-powered PDF extraction.</p><p>Here's <a href="https://www.youtube.com/watch?v=T8xiMgmb8po">the video on YouTube</a>.</p><iframe style="margin-bottom: 1.5em;" width="560" height="315" src="https://www.youtube-nocookie.com/embed/T8xiMgmb8po" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen="allowfullscreen"> </iframe><p>Sections within that video:</p><ul><li><a href="https://www.youtube.com/watch?v=T8xiMgmb8po&amp;t=177s">02:57</a> D
9日前
記事のアイキャッチ画像
Agentic AI Foundation
Simon Willison's Weblog
<p><strong><a href="https://aaif.io/">Agentic AI Foundation</a></strong></p>Announced today as a new foundation under the parent umbrella of the Linux Foundation (see also the OpenJS Foundation, Cloud Native Computing Foundation, OpenSSF and <a href="https://www.linuxfoundation.org/projects">many more</a>).</p><p>The AAIF was started by a heavyweight group of "founding platinum members" (<a href="https://aaif.io/members/#join">$350,000</a>): AWS, Anthropic, Block, Bloomberg, Cloudflare, Google, Microsoft, and OpenAI. The <a href="https://aaif.io/press/linux-foundation-announces-the-formation-of-the-agentic-ai-foundation-aaif-anchored-by-new-project-contributions-including-model-context-protocol-mcp-goose-and-agents-md/">stated goal</a> is to provide "a neutral, open foundation to ensure agentic AI evolves transparently and collaboratively".</p><p>Anthropic have <a href="https://www.anthropic.com/news/donating-the-model-context-protocol-and-establishing-of-the-agentic-ai-foundation">do
9日前
記事のアイキャッチ画像
mistralai/mistral-vibe
Simon Willison's Weblog
<p><strong><a href="https://github.com/mistralai/mistral-vibe">mistralai/mistral-vibe</a></strong></p>Here's the Apache 2.0 licensed source code for Mistral's new "Vibe" CLI coding agent, <a href="https://mistral.ai/news/devstral-2-vibe-cli">released today</a> alongside Devstral 2.</p><p>It's a neat implementation of the now standard terminal coding agent pattern, built in Python on top of Pydantic and Rich/Textual (here are <a href="https://github.com/mistralai/mistral-vibe/blob/v1.0.4/pyproject.toml#L29-L46">the dependencies</a>.) <a href="https://github.com/google-gemini/gemini-cli">Gemini CLI</a> is TypeScript, Claude Code is closed source (TypeScript, now <a href="https://simonwillison.net/2025/Dec/2/anthropic-acquires-bun/">on top of Bun</a>), OpenAI's <a href="https://github.com/openai/codex">Codex CLI</a> is Rust. <a href="https://github.com/OpenHands/OpenHands">OpenHands</a> is the other major Python coding agent I know of, but I'm likely missing some others. (UPDATE: <a href
9日前
記事のアイキャッチ画像
Quoting Claude
Simon Willison's Weblog
<blockquote cite="https://www.reddit.com/r/ClaudeAI/comments/1pgxckk/claude_cli_deleted_my_entire_home_directory_wiped/"><p>I found the problem and it's really bad. Looking at your log, here's the catastrophic command that was run:</p><pre><code>rm -rf tests/ patches/ plan/ ~/</code></pre><p>See that <code>~/</code> at the end? That's your entire home directory. The Claude Code instance accidentally included <code>~/</code> in the deletion command.</p></blockquote><p class="cite">&mdash; <a href="https://www.reddit.com/r/ClaudeAI/comments/1pgxckk/claude_cli_deleted_my_entire_home_directory_wiped/">Claude</a>, after Claude Code deleted most of a user's Mac</p> <p>Tags: <a href="https://simonwillison.net/tags/ai-ethics">ai-ethics</a>, <a href="https://simonwillison.net/tags/coding-agents">coding-agents</a>, <a href="https://simonwillison.net/tags/claude">claude</a>, <a href="https://simonwillison.net/tags/claude-code">claude-code</a>, <a href="https://simonwillison.net/tags/generative-a
9日前
記事のアイキャッチ画像
Prediction: AI will make formal verification go mainstream
Simon Willison's Weblog
<p><strong><a href="https://martin.kleppmann.com/2025/12/08/ai-formal-verification.html">Prediction: AI will make formal verification go mainstream</a></strong></p>Martin Kleppmann makes the case for formal verification languages (things like <a href="https://dafny.org/">Dafny</a>, <a href="https://github.com/marcoeilers/nagini">Nagini</a>, and <a href="https://github.com/verus-lang/verus">Verus</a>) to finally start achieving more mainstream usage. Code generated by LLMs can benefit enormously from more robust verification, and LLMs themselves make these notoriously difficult systems easier to work with.</p><p>The paper <a href="https://arxiv.org/abs/2503.14183">Can LLMs Enable Verification in Mainstream Programming?</a> by JetBrains Research in March 2025 found that Claude 3.5 Sonnet saw promising results for the three languages I listed above. <p><small></small>Via <a href="https://lobste.rs/s/zsgdbg/prediction_ai_will_make_formal">lobste.rs</a></small></p> <p>Tags: <a href="https:
10日前