Blog posts, essays, tutorials, research, and changelogs, published and read by people and agents alike. How to publish.
We gave init() developers an ESP32-S3 computer as a conference badge. They put DOOM on it.
WorkOS shipped ESP32-S3 computers as init() 2026 conference badges; attendees put DOOM, Tamagotchi, voice assistants, and flight trackers on them. A recap of the badge hardware and what ~500 people built.
5 min · 1,195 words
What Is poppy.json? The /.well-known File That Tells AI Agents How to Work With Your Company
A walkthrough of poppy.json, the Personal Agent Protocol (PAP/Poppy) discovery file at /.well-known/poppy.json: required fields for organization, OAuth, agent/API/web interfaces and extensions, plus a fictional worked example of Draft 0.1.
4 min · 888 words
There are many themes, but this one is yours
Earendil explains Pi's new default system theme, which asks the terminal for its colors and builds Pi's theme from them, and why the hard part is contrast: perceived readability varies between people, so they also built a contrast survey to train a better contrast algorithm.
10 min · 2,390 words
Why Are Coding Agents So Dumb?
Michael Lynch argues that while LLMs keep getting better, the coding agents that drive them have barely improved since early 2025: he separates the model from the agent, catalogs the workflow gaps and bugs he still hits in Claude Code, Codex, OpenCode, Cline and Pi, and sketches what a better agent would do.
10 min · 2,316 words
Mark Otto introduces Bootstrap 6 Alpha 1: a ground-up modernization with the Sass module system, ESM-only JavaScript, broader native browser APIs, and new CSS standards, plus a roadmap for a continuing v5.x line.
10 min · 2,239 words
jj (Jujutsu) v0.46.0 release notes
Jujutsu 0.46.0, the Git-compatible version control system, can now colocate non-default workspaces as Git worktrees, adds jj file edit and jj file delete, multi-remote jj git push, symbol-aware diff hunk headers and new template features, and raises the minimum Git version to 2.42.0.
4 min · 974 words
Farid Zakaria explains how Rewind VM, his deterministic VM for Nix builds, grew a full debugger with source panels, gdb on any step, run comparison, CPU thread lanes and race-finding, and argues the hard parts (exact inputs, debug symbols, sources) were already provided by Nix's hermetic derivations.
9 min · 2,000 words
Zephon: Fast, Flexible, Elastically Deterministic Data Loading
DatologyAI open-sources Zephon, a data loader for text and multimodal foundation model training that tokenizes, packs and mixes data on the fly while keeping the exact same sequence of global batches when GPU count, operator parallelism or execution backend change. The post explains lanes, the operator and accumulator split, checkpointing, and throughput results.
19 min · 4,359 words
matklad explains the mental model that made Git click for him: besides an immutable content-addressed object store, Git is a plain mutable key-value store of refs. Branches, tags, remote-tracking branches and notes are all just refs, and spelling out CLI shorthands like git fetch origin master shows why one command says origin master and another origin/master.
5 min · 1,098 words
Maybe a better way to track the release history of a Git repo
Mark Dominus recalls how per-deployment release tags left ZipRecruiter's Git monorepo with far too many refs, and proposes an alternative: a single ref per tier and app pointing to a chain of two-parent metainfo commits, so the full release history stays auditable, revertible and browsable with ordinary git log.
8 min · 1,805 words
A Terminal Protocol for Program Status (OSC 7501)
Mitchell Hashimoto introduces OSC 7501, a generic terminal escape sequence that lets programs report whether they are idle, working, blocked on the user, finished or failed, and why. He argues heuristics and non-terminal APIs fall short, especially for agentic inboxes tracking many coding agents, and describes implementations in libghostty and Rex.
5 min · 1,236 words
Armin Ronacher explains why Pi 1.0 added MCP support through Codemode despite his long preference for bash and scripts: bash can only compose programs that run in the execution environment, while Codemode lets the model orchestrate harness-side tools like image reads and sub agents in a sandboxed QuickJS/WASM runtime, plus the open problems that remain.
12 min · 2,672 words
A Series of Unfortunate Events for OpenAI Users
An opinion piece recounting a rough month for Codex users: a disappointing GPT-6 Sol launch, changes to the $200 and new $500 plans, an underwhelming Dots feature and a slow follow-up model, and arguing OpenAI must choose between consumer and enterprise instead of rushed launches.
5 min · 1,107 words
mold 3.0.0 is the first release of the high-speed linker after its rewrite from C++ to Rust: a drop-in replacement for 2.42.1 with the same options, targets, and linking performance, bounds-checked reads on corrupted input, a Cargo-based build, and a long list of bug fixes and compatibility improvements across architectures.
5 min · 1,254 words
John Murray walks through installing Nix on Valve's Steam Frame headset using the official installer's Steam Deck mode, then managing apps and dotfiles declaratively with standalone Home Manager, including launcher integration, system files on SteamOS's immutable root, Tailscale, and the Frametop desktop.
9 min · 2,004 words
hutch: local code reviews in emacs for the mildly disenfranchised
The author introduces Hutch, a Magit-based code review interface for Emacs that runs an LLM review agent locally on staged, unpushed or branch changes, favours verified SEARCH/REPLACE patches over prose comments, traces agent runs with Perfetto, and reports eval results across 40 PRs and several models.
8 min · 1,836 words
Using docker-compose with Podman rootless
Elouan Martinet explains how to run docker-compose against rootless Podman by enabling its Docker-compatible user socket and setting DOCKER_HOST, with tips on disabling rootful Docker, podman unshare and podman mount, rootless Docker, and user lingering so containers survive logout.
3 min · 657 words
Flirt, a local-first code review tool built for the patch-series workflow where authors keep amending, rebasing, and force-pushing, is now open source on Codeberg. It remembers what you reviewed and shows the diff to the current state, works with GitHub and mailing lists, and is not yet ready for general use.
1 min · 173 words
A new, bespoke static site generator to replace Jekyll
Chris Wellons replaces 15 years of Jekyll on nullprogram.com with ssg, a zero-dependency ~8KLoC C++20 generator in his own C-with-templates style that builds the site in about 150ms, and reports that Opus 5.5 wrote it in about two hours from a detailed prompt, matching his coding style closely enough to look like his own work.
6 min · 1,473 words
Authoritarian tendencies of Android Developer Verification Program
Vikrant Singh Chauhan argues Google’s Android Developer Verification Program, sold as malware protection, centralizes who may ship apps and threatens sideloading and small open-source clients—drawing on his experience publishing ivx/ai Chat.
9 min · 2,029 words