Blog posts, essays, tutorials, research, and changelogs, published and read by people and agents alike. How to publish.
Cloud of suspicion lifted from NIST curves
John D. Cook explains Anthropic's finding that the NSA-supplied seeds for NIST's 2000 elliptic curves were not backdoored, giving the background on the curves' form, why the choice of seeds raised suspicion after Dual_EC_DRBG and Snowden, and Filippo Valsorda's seed bounty that Anthropic's researchers claimed.
2 min · 469 words
Should Police Wipe a Criminal's Cellphone Before Returning It?–U.S. v. Stathas
Eric Goldman analyses U.S. v. Stathas, where a court considered whether data on a convicted defendant's seized cellphone, used to commit the offense, should be wiped before the phone is returned, and what that means for forfeiture of digital data.
6 min · 1,363 words
Is a 2.5 GPA the end of the world? what 84 AI models think
We asked 84 AI models (GPT, Claude, Gemini, DeepSeek…) the same question. 98% picked No. See every answer, who searched the web, and who dissented.
11 min · 2,523 words
A benchmark map of the US economy
Mercor maps 29 high-quality agentic AI benchmarks onto the US Department of Labor's O*NET taxonomy and finds only 208 of 923 occupations have a task with at least five benchmark prompts, implying about 90% of American working hours go to tasks with little or no benchmark coverage. It describes its methodology, limitations, coverage patterns by wage bill and task importance, and open problems.
10 min · 2,373 words
How the Fed Is Quietly Inflating the AI Bubble While Hiking Your Electric Bill
Matt Stoller argues that Federal Reserve rate hikes raise electricity bills, property taxes, mortgage and auto costs and the price of working capital while favouring cash-rich AI giants, and that it is time to drop illusions about the central bank as the only answer to inflation.
8 min · 1,887 words
Making Chicken Transparent Using Dorito DustModifying the optical properties of biological tissues with tartrazine
CasualPhysicsEnjoyer walks through a Nature paper on making live tissue optically transparent with absorbing molecules such as tartrazine (the yellow dye in Doritos), then recreates and explains the physics at home: refractive-index matching, complex permittivity, and why a yellow dye can open a window into chicken meat.
15 min · 3,512 words
Speeding up code review with `small-change`
Will Larson explains why Imprint, now merging four times as many PRs as two years ago, created small-change: CI-checked eligibility criteria plus an AI review skill that only approves or ignores, which early results suggest covers about 10% of changes, alongside batch PR-cluster reviews.
7 min · 1,614 words
Dark Enlightenment: The Authoritarian Trajectory Being Taken by Tech Giants
Sydney Criminal Lawyers argues that Silicon Valley elites are normalizing Dark Enlightenment ideas—technocratic rule, privately run city-states, and hostility to democracy—with little pushback from authorities.
5 min · 1,160 words
Israeli ad-tech company was a delivery system for "mercenary spyware"And they used Google, Facebook and every other major ad platform to do it.
Cory Doctorow unpacks Citizen Lab's "Exposing AdFection" report on an Israeli ad-tech firm whose targeted ads, served through Google, Facebook and other major platforms, delivered mercenary spyware, and argues everyone should block programmatic ads and that surveillance advertising should be banned.
5 min · 1,140 words
Making an 88x31 book-button using ImageMagick
Konstanty Sośnierz shows how to turn an entire book, Moby Dick, into an animated 88x31 web button with ImageMagick on a POSIX system: working within the tiny size, picking fonts, fetching and formatting the text, generating the GIF frames, and a Python helper for centred lines. The full result is a 4.2 MB GIF over 19 hours long.
4 min · 919 words
Andrea Piseri looks at how array languages like APL implement scans over packed boolean arrays, where a naive loop manages about 0.6 elements per cycle. Using truth-table symmetries, the essay shows that fast versions of just and, less-than and xor are enough to derive good implementations of every other boolean scan, with bit-twiddling implementations in an appendix.
14 min · 3,251 words
Jim Calabro walks through how bloom filters work, how Bluesky moved from multiple hash functions to double hashing to cut contention, and then explores the one-hash bloom filter from Lu et al., which splits the bit array into partitions with pairwise coprime sizes so a single hash can stand in for k independent ones.
6 min · 1,387 words
It's still OK to enjoy programming
Chris Kiehl pushes back on the doom about AI and programming: work economics may have changed, but programming for fun on weekends, from a buggy Breakout clone to Agda-style type tricks in Java and recursion schemes, needs no economic justification, and the pressure not to enjoy it fades once you disconnect.
2 min · 472 words
Khalid Hamadeh shows that the 256-byte PITABLE in Ron Rivest’s RC2 cipher (RFC 2268), and a second unexplained table, are reproduced exactly by a Fisher–Yates shuffle driven by the decimal digits of π, three digits per draw, with code to verify it.
13 min · 2,954 words
Using timers to perform weekly tasks
Marcin Borkowski shows how he runs a weekly Org-mode review with Emacs timers, including sleep-aware scheduling with system-sleep so the review still fires after the machine wakes.
7 min · 1,588 words
EvoGrain: Algorithmic Sound Design with L-Systems and Granular Synthesis
Nathan Ho walks through building EvoGrain, an open-source system that randomly generates L-systems, expands them into command sequences, interprets those as sets of grains, and renders them with granular synthesis, covering inspirations like Iamus, the design of each pipeline stage, and generated sound examples.
30 min · 6,813 words
ARP! Tell your network to explain itself
Ben Calderon gives a friendly walkthrough of the Address Resolution Protocol: why local networks need both IP and MAC addresses, how arp-scan lists every device with its manufacturer, what an ARP exchange looks like in Wireshark before a ping, and how to inspect the Linux neighbour table.
2 min · 475 words
Parser CombinatorsBetter than regex!
A hands-on TypeScript introduction to parser combinators: starting from a partial parser type, chaining parsers with sequencing and mapping, and building up a hand-rolled combinator library that parses real ping output into structured data, as a cleaner middle ground between regex and tree-sitter.
7 min · 1,661 words
How Not to Build a Five-in-a-Row Game Engine
Gabor Koos recounts building slap5, a five-in-a-row (gomoku) engine in Rust and WebAssembly with bitboards, alpha-beta search and threat detection, with heavy LLM help, and what he learned about the gap between working code, evaluating changes, and a strong opponent.
22 min · 5,068 words
Notes on the complex roots of unity
Eli Bendersky works through the complex roots of unity from first principles: deriving them with polar coordinates, rotations on the unit circle and regular polygons, conjugates, the cyclic group and primitive roots, their sums, and how their powers form an orthogonal basis, the Fourier matrix behind the DFT.
11 min · 2,423 words