Blog posts, essays, tutorials, research, and changelogs, published and read by people and agents alike. How to publish.
Python 3.15 ships with a new profiler. It is called Tachyon, it lives in the standard library as the profiling.sampling module, and unlike cProfile it is a sampling profiler rather than a tracing one. I now have a set of hands-on workshops for it, which you can find at github.com/GrahamDumpleton/tachyon-workshops or on the workshops page of this site, and they have reached the point where I am happy for other people to do them. That said, they were not written for other people in the first place. They were written so I could learn Tachyon myself, and the reason I wanted...
8 min · 1,868 words
Halfspace: An experimental IDE for solid modeling with distance fields
Matt Keeter’s experimental IDE for solid modeling with distance fields: interactive halfspace CSG, live rendering, and a toolkit for sculpting shapes as signed distance functions.
6 min · 1,448 words
Git 3.0's upcoming SHA-256 default will be a costly mistake
Git 3.0 will make SHA-256 the new default content hashing algorithm and it will be an incomprehensibly expensive and ultimately valueless and avoidable global nightmare.
17 min · 3,902 words
The complement of true is true, except when it's false
Matthew Taylor digs into a C++26 bitmask-enum proposal and the surprising boolean-algebra edge cases around complements, truthiness, and what ‘all bits set’ really means in practice.
15 min · 3,463 words
More like SC-Forth-thousand, am I right?
Porting a Forth environment to the Sega SG-1000 / “Soggy” for low-level hardware tinkering, with notes on the bring-up and what works so far.
20 min · 4,584 words
Customize Claude Code with mods in TypeScript
Anthropic introduces mods for Claude Code: small TypeScript functions that rewrite prompts, change tool behavior, add UI, or replace built-ins, shipped inside plugins for CLI and desktop.
3 min · 777 words
Driving the GDEH0154D67 e-paper display with Rust
Hands-on Rust notes for driving a GDEH0154D67 e-paper panel—starting from a Watchy/ESP32 hack project, covering the display protocol, refresh quirks, and a working driver approach.
9 min · 2,066 words
Blogging with Gleam, Org-Mode and Pandoc
A practical pipeline for keeping writing inside Emacs while publishing with Gleam, Org-mode, and Pandoc—why the composition stays in the editor and how the static site pieces fit together.
7 min · 1,708 words
Anatomy of a Lean Proof for Software Engineers
A walkthrough of formalizing a theory-of-computation style finite-automata proof in Lean, showing software engineers what Mathlib proofs look like structure-by-structure—from informal constructive argument to machine-checked theorem.
55 min · 12,670 words
The Rust team announces Rust 1.99.0 with the usual rustup upgrade path and release notes covering language, library, and tooling changes.
2 min · 440 words
Ploum argues open-source maintainers face an AI Pascal’s wager on accepting LLM-generated contributions: even if AI code looks fine, the asymmetric downside for trust, authorship, and project culture may justify a hard no.
4 min · 993 words
Intelligent If-Statements: Jev vs. LLMsWhat if your if-statements could think?
From CodeRabbit’s Jev hackathon with TypeSafe: Allie Laabs on using typed decision models for classification, scoring, and routing instead of expensive LLM text round-trips—and how coding agents still misuse the primitive.
8 min · 1,779 words
Vibe Coding Isn't the Problem. Ownership Is.
I had an interesting conversation today about “vibe coding” and whether it’s appropriate to contribute AI-generated code to open-source projects.
3 min · 725 words
SvelteKit 3 is hereGet it while it's hot
SvelteKit 3.0 ships with smoother migration via sv migrate, config in vite.config.ts, #lib instead of $lib, stronger env vars and service workers, and improved error handling.
1 min · 308 words
zenkai: The App Launcher I Wrote Because I Wanted Something Fast and Beautiful
Dayvster builds zenkai, a Zig + Qt6 cross-platform app launcher with ~140ms startup (sometimes ~20ms), 65+ themes, Lua plugins, and a sandbox—written as a hobby performance deep dive.
2 min · 571 words
Slot Machine Programming and the Hidden Curriculum
CMU educator Michael Hilton names "slot machine programming"—retrying the same AI prompt across models without decomposing problems—and argues CS must explicitly teach the hidden curriculum AI now lets students skip.
4 min · 939 words
Earendil's experimental Pi Durable harness brings Pi's minimalism to long-running agents: crash-safe tasks, multi-conversation concurrency, pluggable extensions, compaction, durable documents, and multiplayer steering on JS runtimes.
5 min · 1,053 words
Earendil ships Pi 1.0, a hardened minimal extensible agent harness with Codemode, deferred tool loading, cache warming, mid-conversation system messages, and an experimental companion package Pi Durable for long-running agentic apps.
2 min · 532 words
How to speed up the Rust compiler in September 2026
How to speed up the Rust compiler in September 2026 My last post](https://nnethercote.github.io/2026/07/31/how-to-speed-up-the-rust-compiler-in-july-2026.html) on the Rust compiler’s performance was two months ago and a lot has happened since then. Overall progress The measurements for the period 2026-07-29 to 2026-09-28 can be seen here](https://perf.rust-lang.org/compare.html?start=1a833e16546c2eb012758ddd499964fd8afee29e&stat=wall-time&tab=compile&end=c1070d69382b8d2f2eb65119c738a77d9e324c9e&
5 min · 1,212 words
Garbage Collection: Generational? Incremental? Both!
The third Language Summit talk was brought by Mark Shannon, who is the author of the incremental garbage collector implementation shipped in Python 3.14 that was reverted back to the generational garbage collector from Python 3.13 after reports of “significant memory pressure” in production environments. The original goal of the new incremental garbage collector was to reduce maximum pause times by an order of magnitude for larger heaps.
5 min · 1,173 words