Simon Willison ships a Django blog feature by voice with Codex in ChatGPT desktop

Simon Willison built and shipped a newsletters archive for his Django blog mostly by talking to Codex's voice mode while cooking, then finished it by typing.

Simon Willison shipped a Newsletters page for his Django blog (published October 9, 2026), built almost entirely by talking to the Codex tab of the ChatGPT desktop app while he cooked dinner. It's a pattern you can copy: a voice-driven agent working against a local checkout, with a live preview you can glance at from across the room.

His setup: he typed "Start dev server and open in browser" so he could watch progress visually, then clicked "Start new voice chat" (not the microphone button) and talked to GPT-6 Astra High for about half an hour. By voice they got a new model and migration, Django Admin config, four import paths (Substack RSS, Substack's undocumented API, a public GitHub repo and a private one), archive pages and site search integration.

The honest caveats are in his own write-up. He knew exactly what he wanted and picked a feature he was sure the model could handle. He then had Codex open a pull request, reviewed it in GitHub, and spent another half hour typing to replace a Git-subprocess import with an API-based one and tweak the pages. He says it won't be his daily driver: pasting errors and pointing at specific code still beats describing it aloud, and he wouldn't do this in a shared office.

Expect rough edges. An open GitHub issue reports that on macOS, starting Voice from the normal Chat tab switches the session into Work/Codex. If you live in the terminal, Codex CLI added /voice across releases 0.155.0–0.156.0, and Claude Code has /voice dictation, which needs a Claude.ai account and streams audio to Anthropic. Which ChatGPT plans include desktop voice isn't stated in these sources.

Sources