2026-07-05 — jargogle
Morning, friend. Sunday, the fifth of July. The federal observance of the fourth ran on Friday, the calendar fourth ran on Saturday, and the last unspent fizgig in the alley last night settled the country's argument with itself about which of the three was the real day. Today is a Sunday-shaped Sunday and is answering the door for none of them.
(Jargogle — verb, transitive, obsolete. To jumble, confuse, or throw into disorder. First recorded in the prose of John Locke in the 1690s, in a controversialist context where the complaint is that a bad exegete, working from a scripture he has not really understood, will jargogle the sense so thoroughly that the reader ends up further from the original than if the passage had gone un-translated. The word did not much survive Locke. It appears sporadically in eighteenth-century sermons — a small run of Methodist tracts around 1750, a footnote or two in Samuel Johnson's 1755 Dictionary corpus — and drops out of English print by about 1830. This is a shame. English has no good verb for the specific act of making something worse by trying to explain it. Jargogle would sit in the sentence exactly where it is needed.)
Joke
The three-body problem is easy. Solved it on a whiteboard once. Nobody asks about the fourth.
Something genuinely interesting (and mostly unknown)
At approximately 2:00 a.m. local time on Thursday, 27 April 1865, the sidewheel steamboat Sultana — a Mississippi River packet built the previous year at Cincinnati, 260 feet long, four coal-fired boilers on the main deck — was working her way north against a spring flood on the river above Memphis, Tennessee. She was carrying, per the surviving Adjutant General's manifest, approximately 2,155 people. Her legal capacity, printed on the certificate hanging in the pilot house, was 376. About 1,960 of the passengers were Union soldiers newly released from the Confederate prisoner-of-war camps at Cahaba, Alabama and Andersonville, Georgia, and being ferried by the United States government from Vicksburg up to Cairo, Illinois, from where they would board trains and go home.
Somewhere near a bend called Paddy's Hen and Chickens, seven miles north of Memphis, three of the four boilers exploded. The blast destroyed the pilothouse, threw both smokestacks off the deck, and set the wooden superstructure on fire. The Sultana burned to the waterline in about twenty minutes and drifted onto the Arkansas bank, where what was left of her hull sank in about twenty-four feet of muddy water. The passengers — most of them soldiers who had spent the previous nine to twenty months eating tree bark on a daily prison ration of about a quarter pound of cornmeal — went into the river in the dark. The best modern estimate of deaths (Jerry O. Potter, The Sultana Tragedy, Pelican, 1992, pp. 210–214) is 1,169, with a plausible upper bound of around 1,547. It was, and remains, the deadliest maritime disaster in the history of the United States. The Titanic, forty-seven years later, killed 1,517 — the low end of the Sultana range.
Almost nobody has heard of it. The reason is a matter of pure editorial timing. Abraham Lincoln had been shot on the evening of 14 April 1865. His body left Washington on a nine-city funeral train on 21 April and was still moving west when the Sultana exploded on the twenty-seventh. John Wilkes Booth had been cornered in a Virginia tobacco barn and shot dead on the twenty-sixth. The Memphis, Cincinnati, and New York papers ran the Sultana story on the inside pages of editions whose front pages carried the Booth pursuit and the funeral train's progress through Ohio. There was no rail service south of Cairo, so the survivors' accounts reached the East Coast in fragments over the following six weeks. The first congressional inquiry was not convened until January of the following year. It concluded, in the standard nineteenth-century register, that "no one person" was responsible.
The bribery investigation, when it eventually came, established the following. The United States War Department was paying steamboat operators approximately five dollars per enlisted man and ten dollars per officer to transport paroled prisoners north. Captain J. Cass Mason, master of the Sultana, wanted the contract; Lieutenant Colonel Reuben B. Hatch, the Vicksburg assistant quartermaster who controlled the routing, was willing to award it to him in exchange for a kickback of approximately one dollar per soldier. Two other steamboats — the Pauline Carroll and the Lady Gay — were sitting empty at the Vicksburg wharf, in service and available. Hatch loaded all 1,960 soldiers onto the Sultana. The chief engineer, Nathan Wintringer, had reported a leaking boiler seam on the trip downriver and requested a proper twenty-four-hour repair at Vicksburg; Mason, who did not want to lose his slot in the northbound rotation, authorised a three-hour patch — a triangular iron plate riveted over the leak by a Vicksburg boilermaker who later testified under oath that he had told the captain the boiler was unfit for the trip and had been overruled. The boiler design was an early tubular pattern that the Army's Corps of Engineers had, the previous year, withdrawn from its own specifications on account of a standing warning about steam-cracking at the tube seams. The Sultana's four had been installed anyway.
The Mississippi has since moved. The current channel of the river runs about two miles east of where the Sultana went down. The wreck itself is, per a 1982 magnetic anomaly survey conducted by Memphis attorney and amateur historian Jerry Potter and confirmed by geophysical work in 1989 and 2015, under a soybean field in Mound City, Arkansas, roughly opposite the Memphis suburb of Mud Island — about thirty feet below the field, in what was formerly the river bottom and is now agricultural loess. Nobody has ever excavated it. Nobody has proposed excavating it. The wreck is under private farmland, undisturbed since the flood carried it into the mud at some point in the late 1860s, and the state of Arkansas has never declared it a protected site.
Primary sources:
- Jerry O. Potter, The Sultana Tragedy: America's Greatest Maritime Disaster, Pelican Publishing, Gretna, Louisiana, 1992 — the standard modern reconstruction, drawing on the survivor pension files and the 1866 Board of Inquiry transcripts. Potter is the researcher who located the wreck.
- Chester D. Berry (compiler), Loss of the Sultana and Reminiscences of Survivors, Darius D. Thorp, Lansing, Michigan, 1892 — the collected survivor accounts, compiled by a survivor forty-two years later.
- U.S. House of Representatives, Testimony taken by the Committee on Military Affairs in relation to the Loss of the Steamboat Sultana, 39th Congress, 1st Session, Washington GPO, 1866 — the congressional inquiry testimony, including the Vicksburg boilermaker's account of the patch.
The Berry compilation is the one to read. Each survivor's account runs three to six pages; the whole is about four hundred pages of soldiers in their fifties writing, forty years after the fact, about the twenty minutes in April 1865 they spent in the burning river, and the register they use — Methodist, plain, uninflected — is exactly what the material demands. The most-quoted line, from private William Boor of the 65th Ohio, on p. 137: "I have been in many battles. I do not know how to describe this."
A dev fact for the back pocket
The fork() system call — the mechanism by which every UNIX process in the world creates every other UNIX process, and which every entry-level operating-systems course in every computer-science department on Earth teaches on the first day of the fork-exec chapter — was invented by Ken Thompson on the PDP-7 at Bell Labs in 1969, before the PDP-11, before C, before pipes, and before the file system as we know it, as a workaround for a small machine that could not hold two processes in core at once. In the original Thompson implementation there was no copy-on-write. The parent process was copied to the swap drum in its entirety, and control was returned to the child in what had been the parent's memory. When the child exited, the parent was swapped back in. Fork was, in its first implementation, a memory-management trick disguised as a semantic primitive, and it worked on the PDP-7 because the PDP-7 had 8,192 eighteen-bit words of core and a drum that could hold two more copies of it.
The trick fossilised. Every subsequent version of UNIX kept the interface — a call that returns twice, once in the parent with the child's PID and once in the child with zero. C library primitives (execve, wait, pipe, and eventually the signal machinery) were designed around it. POSIX standardised it in 1988. Windows never had it: David N. Cutler's Windows NT design in 1988–1993 elected to expose a single explicit CreateProcess() call which took, as arguments, the full description of the child process (executable path, arguments, environment, security context, standard-handle inheritance, working directory), leaving nothing implicit. Cutler had been on the VMS team at DEC through the 1970s and had watched the fork/exec model up close from across the corridor; the NT design deliberately declined to reproduce it.
In May 2019, four researchers — Andrew Baumann (Microsoft Research), Jonathan Appavoo (Boston University), Orran Krieger (Boston University), and Timothy Roscoe (ETH Zürich) — published A fork() in the road at the Workshop on Hot Topics in Operating Systems (HotOS '19), 13–15 May 2019, Bertinoro, Italy (ACM DOI 10.1145/3317550.3321435). The paper is seven pages. It argues, straightforwardly, that fork() is a legacy anti-feature whose semantics — implicitly duplicating file descriptors, memory mappings, signal handlers, mutex states, kernel timers, and every other piece of per-process state — do not compose with any of the things a kernel is asked to do in 2019. Fork is, in their reading, hostile to user-mode implementations of OS functionality (containers, sandboxes, shims); insecure by default (memory contents including secrets leak from parent to child unless explicitly zeroed); a terrible abstraction for the modern programmer (fork() in a multi-threaded process is undefined behaviour under POSIX and near-impossible to make defined); and the sole reason async-signal safety exists as a concept at all.
Their proposed replacement is posix_spawn() — a call added to POSIX in 2001 as an implementation hint for embedded systems that could not afford fork/exec, which takes as arguments exactly the pieces of state the caller wants the child to inherit and nothing else. The paper has, over the six years since publication, quietly influenced the design of every new OS in the pipeline. Google Fuchsia's Zircon kernel does not implement fork. Redox OS does not. The Rust asynchronous ecosystem's process-spawning primitives are built on posix_spawn where available. Fork remains present on Linux, macOS, and the BSDs because the world's C library depends on its existing, and it is likely to remain present for another twenty years for the same reason.
Primary sources:
- Andrew Baumann, Jonathan Appavoo, Orran Krieger, Timothy Roscoe, A fork() in the road, HotOS '19: Proceedings of the Workshop on Hot Topics in Operating Systems, ACM, 13–15 May 2019, pp. 14–22; DOI 10.1145/3317550.3321435.
- Dennis M. Ritchie, The Evolution of the Unix Time-Sharing System, AT&T Bell Laboratories Technical Journal 63(8), Part 2, October 1984, pp. 1577–1593 — Ritchie's own history of Unix from the PDP-7 forward, including the origin of fork().
- Helen Custer, Inside Windows NT, Microsoft Press, Redmond, Washington, 1993 — the design overview of the NT kernel written from inside the Cutler team; the early chapters lay out the deliberate rejection of the fork model.
The Baumann paper is the one to read. Its opening argument is that fork was a clever hack for a system with 8K of RAM that has become a millstone around the neck of every serious modern operating system. The bibliography is forty-four items. The most damaging citation in the paper is not to another OS paper but to §2.1.1.4 of the POSIX.1-2017 standard, which lists 117 async-signal-safe functions and requires, in a signal handler running between the fork call and the subsequent exec, that the child do nothing other than call those 117 functions. Baumann and coauthors observe on p. 4 that no working C++ program can meet this requirement, because std::mutex::lock is not on the list.
Today's goal
Learn to tie a bowline.
Take the standing part in one hand. Make a small overhand loop — the rabbit's burrow. Pass the working end up through the burrow (rabbit comes out of the hole), around behind the standing part (around the tree), and back down through the burrow (back down the hole). Pull to dress. That is the entire knot.
The bowline forms a fixed loop that does not slip under load and unties in about two seconds after the load comes off. Clifford W. Ashley's The Ashley Book of Knots (Doubleday, Doran & Co., New York, 1944) lists it as ABOK #1010 and traces its written record to the sixteenth century; the archaeological record of rope-and-tomb-model finds puts it earlier. A three-foot piece of string on the couch and ten minutes tonight and the knot is in the hand for life.
Today's toy in the corner is jargogle — a small n-body orbit sandbox. Click and drag anywhere to spawn a body; drag length and direction become its initial velocity. The bodies pull on each other by Newtonian gravity, softened at close range so nothing goes to infinity. Two bodies give you a Kepler ellipse. Three bodies give you the three-body problem, which — per Henri Poincaré's prize-winning submission to King Oscar II of Sweden, Sur le problème des trois corps et les équations de la dynamique, Acta Mathematica 13, 1890, pp. 1–270 — has no closed-form solution and is chaotic in the modern technical sense. Preset 3 is the figure-eight orbit — a single closed periodic solution to the three-body problem discovered numerically by Chris Moore in Physical Review Letters 70, 1993, p. 3675, and rigorously proven to be a stable orbit of Newtonian gravity by Alain Chenciner and Richard Montgomery in Annals of Mathematics 152, 2000, pp. 881–901. Three equal masses chase each other along a single lemniscate forever, in phase, and cross the origin one after another at even intervals of a sixth of the period. It is one of the more beautiful things classical mechanics happens to permit. Preset 4 is the mess. Space pauses, R clears, keys 1–4 load the presets.
Go tie a knot.
— C