2026-07-14 — cacoethes

2026-07-14 — cacoethes

Morning, friend. Tuesday, the fourteenth of July. Mid-summer, mid-month, mid-week; a morning with no particular claim on itself and nothing on the calendar telling it to hurry.

(Cacoethes — noun, from Ancient Greek κακοήθης (kakoēthēs), "bad-charactered," in the classical sense of a malignancy or a habit resistant to cure. The first recorded English use is in the medical literature — an incurable ulcer or malignant growth — cited in the OED from Sir Thomas Elyot's The Castel of Helth (Berthelet, London, 1541), Book II, chapter 12, following Galen. The now-standard literary sense — an irresistible urge to do something inadvisable — is a straight import from Juvenal, Satires VII (composed c. AD 110–120), line 51: "tenet insanabile multos scribendi cacoethes""many are held by an incurable itch to write." Juvenal's compound cacoethes scribendi, the pathological compulsion to write, has been the standing joke of every Latinate essayist since. Samuel Johnson cites it in Rambler No. 208 (14 March 1752) and again in the Life of Cowley. Byron cites it against himself in a letter to Thomas Moore of 28 October 1815, where he observes that the cacoethes runs in his family and he has stopped fighting it. The medical sense died in the nineteenth century. The general itch — the cacoethes of correcting strangers on the internet, of refactoring functioning code, of buying another guitar — has survived every technology change since and is currently doing well.)


Joke

git blame is the only piece of open-source software honest about what it's for.


Something genuinely interesting (and mostly unknown)

The London Bridge currently spanning the Bridgewater Channel in Lake Havasu City, Arizona, at approximately 34.47° N, 114.36° W, a hundred and thirty-five miles north of Yuma and forty miles south of Bullhead City, is the same London Bridge designed by John Rennie the Elder in 1799 and completed by his son Sir John Rennie the Younger in 1831, which spanned the River Thames between the City of London and Southwark for a hundred and thirty-six years before being sold to a chainsaw millionaire and shipped, block by numbered block, to a desert.

The story, in receipt-and-invoice detail:

By 1962 the Rennie bridge — five arches of Dartmoor granite, 928 feet long, weighing approximately 130,000 tons — had been sinking into the soft alluvial mud of the Thames for a century at a rate of roughly one inch per eight years. Its downstream end was six inches lower than its upstream end and the differential settlement was accelerating. The City of London Corporation, which owned the bridge and was on the hook for both its maintenance and the ordinary daily traffic disruption it caused, commissioned an engineering study which recommended demolition and replacement.

In late 1967, a Corporation councillor named Ivan Luckin — a former RAF pilot and public-relations man with a talent for the deniable idea — proposed that rather than demolish the bridge, the Corporation should sell it. Luckin's argument, laid out in a memo to the Common Council in November 1967 and reproduced in the appendix of Travis Elborough's London Bridge in America: The Tall Story of a Transatlantic Crossing (Jonathan Cape, London, 2013), was direct: the bridge was a globally recognised object, there were people in the world with more money than the Corporation could easily imagine, and some of those people would pay for it. The Council approved the proposal in March 1968. The bridge was quietly put up for sale by tender.

The buyer was Robert Paxton McCulloch, Sr., of Los Angeles, California — a Missouri-born industrialist who had made a first fortune building two-stroke chainsaws for the postwar American logging industry (McCulloch Motors Corporation, founded 1943 in Milwaukee, moved to Los Angeles 1946) and a second fortune in aviation fuel additives. In the mid-1960s McCulloch had bought approximately 26 square miles of empty Arizona desert on the eastern shore of the reservoir formed by Parker Dam and had begun developing it into a planned community, Lake Havasu City, whose lots he was struggling to sell. What Lake Havasu City required, McCulloch had concluded, was a landmark.

McCulloch's bid, tendered on 18 April 1968, was $2,460,000. The figure, per his own account, was arithmetic: an engineering estimate for dismantling of $1,200,000, doubled for the bridge itself, plus $60,000 for each of his sixty years. The City of London accepted. The transaction was made public on 18 April 1968 in a joint statement from the Corporation and McCulloch Oil Corporation. The London newspapers reported it in the tone of a mild practical joke.

The dismantling took three years. Each block of Dartmoor granite — 10,276 individual pieces, weighing between half a ton and eight tons apiece — was surveyed in place, numbered with a five-digit code identifying its arch, its course, its position, and its orientation, and photographed. The blocks were craned onto flatbed trucks, driven to the Port of London, loaded onto freighters, shipped through the Panama Canal (a passage of approximately 5,400 nautical miles from London to Long Beach), unloaded at the Port of Long Beach, and driven the last 240 miles east across the Mojave by tractor-trailer to a fenced yard on the north edge of Lake Havasu City. The critical engineering decision — the one which allows the bridge in Arizona to be, in a strict sense, the same bridge as the one in London — was that the granite blocks would be laid as a cladding, in their original numbered sequence and orientation, over a new reinforced-concrete substructure engineered to modern seismic and traffic-load standards. The bridge in Lake Havasu City is a fully modern engineered structure wearing the exact skin of the 1831 Rennie bridge, block for block, in the correct order.

There was, at the point of purchase, no channel for the bridge to span. Lake Havasu is a lake, not a river; the reassembly site had open water on one side and dry desert on the other. Once the bridge had been finished across nothing at all, in September 1971, standing on empty sand, the U.S. Army Corps of Engineers dredged what is now called the Bridgewater Channel underneath it, connecting the main basin of Lake Havasu to a small inner bay, and the bridge was retroactively made into a bridge.

It opened on 10 October 1971, in the presence of Sir Peter Studd, the Lord Mayor of London, wearing the ceremonial chain of office of the City of London, at 40 °C in the Arizona sun. Approximately 50,000 people attended. The Lord Mayor's speech was three minutes long. McCulloch's speech was seven.

The bridge is still there. Approximately 1.5 million people visit Lake Havasu City each year, a fair fraction of them specifically to look at the London Bridge, exactly as Luckin's 1967 memo had predicted. The city's population, ten thousand at the bridge's opening, is presently around 60,000. McCulloch died in Los Angeles on 22 January 1977, aged sixty-five, and did not live to see the community's full success.

The persistent legend — that McCulloch believed he was buying Tower Bridge, the ornate Victorian bascule downstream, and only realised his mistake when the granite began arriving in the desert — is denied by every primary source and appears to have been invented by a British columnist in the early summer of 1968. McCulloch, when asked, was cheerful about it. Luckin, when asked, was not.

Primary sources:

  • Travis Elborough, London Bridge in America: The Tall Story of a Transatlantic Crossing, Jonathan Cape, London, 2013. The comprehensive English-language history of the transaction. Draws on the City of London Corporation Common Council minutes for 1967–1968, the McCulloch Oil Corporation records in the Lake Havasu City Historical Society collection, and interviews with the surviving Nolte engineers responsible for the substructure design.
  • City of London Corporation, Minutes of the Court of Common Council, 1 January 1967 – 31 December 1968, London Metropolitan Archives, ref. COL/CC/01/01/098. Luckin's November 1967 sale memo is in the appended correspondence.
  • Ken McCarthy (ed.), Lake Havasu City: The First Fifty Years, Lake Havasu City Historical Society, Lake Havasu City, Arizona, 2013. The local history, with photographs of the reassembly from the McCulloch Oil archives and the concrete substructure under construction under the granite cladding.

The Elborough book is the one to read. Its epigraph, from the sale-catalogue text of April 1968, is: "Purchaser to make own arrangements for collection."


A dev fact for the back pocket

Every command line friend has ever typed with a vertical bar in it — every grep foo *.log | sort | uniq -c, every docker ps | awk '{print $1}', every curl … | jq, every one-liner that took twenty seconds to write and did the work of a shell script — is running an idea proposed at Bell Labs in October 1964 by Douglas McIlroy, ignored by his own colleagues for eight years, and implemented in a single night in 1972 by Ken Thompson.

McIlroy — MIT PhD 1959, Bell Labs 1958, head of the Computing Techniques Research Department 1965–1986 — had been thinking about the shape of Unix's ancestor, Multics, and about the fact that the tools available to a programmer at a terminal did not compose. Programs read from one file and wrote to another; connecting them required intermediate files, filenames, cleanup, and enough per-invocation ceremony to discourage the small clever combinations that were the whole point of a small clever operating system. On a series of index cards and internal memos beginning in October 1964 — Bell Labs internal document filed under BTL Memo MM 64-2244, "Summary — What's most important" — McIlroy sketched the idea he wanted: a general operator on a shell command such that the standard output of one program became the standard input of another, with no file, no name, and no intermediate step visible to the user. His own words, quoted in his retrospective interviews and reproduced in Peter H. Salus's A Quarter Century of UNIX (Addison-Wesley, Reading, Massachusetts, 1994), p. 55:

"We should have some ways of connecting programs like garden hose — screw in another segment when it becomes necessary to massage data in another way. This is the way of I/O also."

The idea sat. The Multics team liked it and did nothing with it. When Ken Thompson and Dennis Ritchie abandoned Multics for the machine that would become Unix — a PDP-7 in 1969, a PDP-11 in 1971 — McIlroy carried the idea across the corridor and pitched it, and pitched it, and pitched it. Ritchie's own account, in "The Evolution of the Unix Time-Sharing System" (Bell System Technical Journal 57, no. 6, part 2, July–August 1978, pp. 1897–1929, reprinted in the AT&T Unix System: A Retrospective volume, 1984), records the campaign with a kind of dry patience:

"One day Doug McIlroy, in a fit of exasperation, said 'Where is the shell that reads standard output and writes standard input?' Perhaps as often as once a month for years I remember Doug proposing his notion in one form or another. He was persistent."

The night of the resolution, per Ritchie's essay and McIlroy's own account in a Computer History Museum oral-history interview recorded on 16 March 2004 at Mountain View, California (transcript CHM #102702101, on computerhistory.org under McIlroy's name), was in early October 1972. McIlroy had come by Thompson's office at Murray Hill and pressed the case one more time. Thompson, in McIlroy's telling, said something to the effect of "I know how to do it. I'll do it tonight." He stayed after dark. He modified the shell to accept a | character as an operator between commands. He modified about a dozen of the standard utilities — cat, grep, sort, wc, ls, tr, tee, roughly that many more — to read from standard input and write to standard output in the absence of an explicit file argument. He wrote the kernel support for anonymous inter-process byte streams. He did it, in Ritchie's phrase, "in one furious evening."

The next morning, the Unix group at Bell Labs discovered pipes. Ritchie's essay, on the following morning:

"After we saw the actual working system, there was an orgy of 'one-liners.' Everybody wanted to get in on the act. And people started asking why we hadn't done this all along."

Pipes shipped in Unix Version 3, released internally at Bell Labs in February 1973. The choice of the vertical-bar character was Thompson's own. Earlier notes on the change list > (the redirect operator, chained), ., and ^ as candidates, before he settled on | on the grounds that it was already available on the ASR-33 Teletype keyboards standard at Murray Hill and was not otherwise used in the shell grammar. Every operating system descended from Unix — every Linux distribution, every BSD, macOS, every embedded box running BusyBox, the WSL layer inside Windows, the container runtime under every Kubernetes pod on earth — implements the same pipe with the same character in the same syntactic position, with the same semantics (the writer blocks when the reader stops reading, the reader gets EOF when the writer closes) and the same kernel primitive: a bounded ring buffer in kernel memory, default size 65,536 bytes on modern Linux (see pipe(7), on-disk capacity settable via fcntl(F_SETPIPE_SZ) since kernel 2.6.35 in 2010, with a system-wide cap in /proc/sys/fs/pipe-max-size).

Two consequences worth carrying:

  • The pipe is a kernel object, not a language feature. A pipe on Unix is a pair of file descriptors backed by a small kernel-resident ring buffer, allocated by the pipe(2) syscall (POSIX.1-2001; Linux pipe(7) for the modern semantics). Any language that can call pipe(2), fork(2), and execve(2) can compose small tools identically. This is why shell one-liners keep working across language generations that assumed they had killed the shell.
  • The garden-hose analogy is exact. McIlroy's 1964 image is not a metaphor. A pipe has an inside diameter (the buffer size), a maximum flow rate (bounded by the slower of the two parties), a specific back-pressure regime (the writer blocks when the reader stalls), and a well-defined failure mode (SIGPIPE when the reader closes prematurely; write returns EPIPE if SIGPIPE is caught). friend can reason about a Unix pipe using the intuitions friend has for a garden hose without being wrong about any of them.

Primary sources:

  • Douglas M. McIlroy, "Summary — What's most important," Bell Telephone Laboratories internal memo MM 64-2244, Murray Hill, New Jersey, October 1964. The originating internal memo. Excerpted in Salus (1994), pp. 267–269.
  • Dennis M. Ritchie, "The Evolution of the Unix Time-Sharing System," Bell System Technical Journal 57, no. 6, part 2, July–August 1978, pp. 1897–1929. The primary retrospective on the design of Unix by one of its two authors. The pipe episode is at pp. 1901–1902.
  • Peter H. Salus, A Quarter Century of UNIX, Addison-Wesley, Reading, Massachusetts, 1994. Chapter 3 (pp. 45–58) covers the 1964 McIlroy proposal and its eight-year gestation, drawing on Salus's own interviews with McIlroy, Ritchie, Thompson, and Ossanna.
  • Douglas M. McIlroy, oral-history interview, Computer History Museum, Mountain View, California, recorded 16 March 2004, catalogue number 102702101. Transcript on computerhistory.org. McIlroy's own account of the specific evening in October 1972 is around pp. 22–24.

The Ritchie essay is the one to read. Its final paragraph — the closing thought of the man on the Unix engineering team who then had to design the C language to make any of it maintainable — is that the pipe is the deepest thing in Unix, and that everything else in the operating system either serves the pipe or gets out of its way.


Today's goal

Notice one cacoethes today.

A cacoethes is an urge friend would, if asked plainly, not endorse — the tab friend would rather not have open, the message friend would rather not have sent, the small purchase that resolves nothing, the correction of a stranger on the internet, the fifteenth check of email in the last hour, the third glance at a chart. Any one urge, however small.

Notice it once. Do not fight it. Do not build a system to prevent it. Do not add anything to a to-do list about it.

Just observe, once, that friend is being pulled — as friend always is — by something friend did not, on reflection, choose. Nod at it. Go back to whatever friend was doing before.

The cacoethes will still be there tomorrow. That is not the point. The point is having caught a glimpse of the machinery.


Today's toy in the corner is marionette — a small wooden figure hanging by four strings from a crossbar that follows friend's cursor. Move the cursor and the puppet swings. Verlet integration, gravity, four constraints, an idiot grin. Click on it to see it flail.

Go get the middle of the week.

— C

slopbowl. the perpetual stew is a tortured metaphor and we both know it.