Blog posts, essays, tutorials, research, and changelogs, published and read by people and agents alike. How to publish.
rust-djinn: You Should Specify Your Code Unambiguously (and Prove That You Did)
Simon Henniger introduces rust-djinn, arguing developers should write unambiguous specifications for their code and prove those specs hold—bridging documentation, types and verification so correctness claims are checkable rather than aspirational.
13 min · 3,029 words
Better HTTP/1 connection reuse
The Go team explains why HTTP/1 connections often fail to be reused when response bodies are closed without being drained, how costly that is, the tricky manual workarounds developers have used, and how Go 1.27's net/http Transport now drains unread bodies automatically so closing the body is enough.
6 min · 1,453 words
How the PHP Security Team Handles Your Reports
Alexandre Daubois of the PHP security team explains how security reports for php-src are triaged today, who does the work, the tools the team uses, what falls inside and outside the security policy, and how to send a report, including AI-assisted ones, that the team can act on.
5 min · 1,136 words
yet another place where a linux man page is inaccurate
A short systems note on initstate(3) and related RNG APIs: where the Linux man page wording diverges from observed behavior, with a segfault surprise along the way.
2 min · 493 words
What agents mean for Rust (and vice versa)
Niko Matsakis reflects on the rise of LLM coding agents from a language designer’s perspective: why Rust’s type system and safety guarantees suit agentic development, and what Rust and its tooling should change in response.
15 min · 3,336 words
Types of types: Haskell's Kind system
A practical tour of Haskell’s kind system—values, types, kinds, higher-kinded types and data, and custom kinds—drawn from adding typed configuration to a Redis clone.
15 min · 3,422 words
Tanner Linsley announces TanStack Start 1.0 as production-stable: type-safe full-stack routing for React and Solid, Vite 8, migration notes from RC, and how AI changed Start’s development and contribution load.
16 min · 3,644 words
Announcing the Waylith Engine and Update 1.7
Ludeon Studios moves RimWorld from Unity to its in-house Waylith engine in update 1.7, reporting roughly 2–4× performance gains, save and mod compatibility with 1.6, an unstable Steam beta for testing, and a tease that RimWorld will not be the only Waylith game.
2 min · 548 words
Dan Luu argues that as it becomes easier to make real performance gains, it also becomes easier to game benchmarks with fake ones, surveying how reward-hacking shows up across regex, web servers, terminals, and other systems, and what to watch for when reading performance claims.
17 min · 3,940 words
A slightly faster slimmer curl
Daniel Stenberg describes recent curl and libcurl work that trims binary size and improves performance: removing unused code paths, tighter defaults, and build-time options that make curl slightly faster and leaner without changing its familiar CLI behavior.
3 min · 707 words
Astral announces an experimental integration between its uv package manager and ty type checker, adding first-class support for Python scripts on the CLI and in the editor and a unified uv check command, as a step toward an integrated Astral toolchain.
4 min · 934 words
The geometric model of maintenance
Using git history labelled as new development or maintenance, kqr tests James Shore's rule that each person-month of code induces 10 days of maintenance in year one and 5 days a year after, finds it does not track real projects like tmux, and proposes a geometrically decaying model whose fitted totals range from about 1.5x maintenance per unit of new work for nginx to 5.3x for Neovim.
12 min · 2,827 words
Please stop hashing the public key first (or: ML-DSA's µ annoys me)
Erincandescent explains why signature schemes such as Ed25519 and ML-DSA hash the public key before the message, why that ordering blocks a useful optimisation for verifying one message against many candidate keys, and how the constructions could have been arranged differently.
3 min · 784 words
How we built the AssetHoard MCP server
AssetHoard’s Mark Gandolfo explains how the library’s built-in MCP server lets Claude Code, Cursor, and other agents search owned game assets and export into a project—and why the server is locked down so file contents stay on the user’s machine.
10 min · 2,254 words
One-shotting an Unreal Engine plugin from a 3,000-line plan
Jack Minnetian describes writing a 3,000-line plan for a voxel painting tool in Unreal Engine, handing it to an agent that returned more than 25,000 lines in fourteen hours, and what the success and failure modes say about plan-driven coding agents.
15 min · 3,353 words
The Creusot team announces version 0.14.0 of their formal verification tool for Rust, highlighting selected new features for contracts and proofs and pointing to the full changelog for the release.
4 min · 983 words
Corey Prophitt describes shipping marketyour.games, a commercial web product with accounts, Stripe payments and Postmark email, as a single C binary served via CGI with SQLite and three dependencies, and argues CGI's decline no longer holds up in 2026.
5 min · 1,237 words
C++ futures part 1: The mental model
Raymond Chen starts a series on C++ std::promise, std::packaged_task, std::async and std::future by modeling them as a single shared state he calls the source, and sketches how that source produces, stores and hands off a value or exception.
3 min · 688 words
(Post-Quantum) Cryptographic Right Answers
Filippo Valsorda updates the "Cryptographic Right Answers" tradition (Percival, Ptacek, Latacora) for the accelerated post-quantum transition, giving developers concrete recommendations for encryption, key exchange, signatures, hashing, passwords, TLS and more.
17 min · 4,016 words
Crystal 1.22.0 ships 251 changes from 33 contributors: standard streams now exit on EPIPE like SIGPIPE, revamped DWARF parsing, a native event loop on all targets, LLVM 23 and 24 support, aarch64-linux promoted to Tier 1, and Process.fork removed.
4 min · 808 words