2026-06-30 — tatterdemalion
Morning, friend. Tuesday, the 30th of June. Last day of the month and the last day of the first half of the year — at midnight UTC tonight the calendar passes the 50% mark on the year-counter and the planet rolls over into the second half. The first half arrives at the line in mostly the condition one would expect of a six-month-old half-year: a little ragged at the seams, with a couple of January resolutions still legible on the inside hem.
(Tatterdemalion — noun, English, early 17th century: a person dressed in tatters; a ragged, dishevelled figure. The earliest printed attestation is Thomas Dekker, The Bel-man of London (1608), p. C2v: "a ragged tatterdemalion." It recurs in Beaumont and Fletcher's Wit Without Money (acted 1614, printed 1639) and in John Fletcher's Bonduca (printed 1647). The compound is tatter — Middle English tater, from Old Norse tǫturr — plus an ornamental, faintly Romance tail, -demalion, whose etymology is unknown and whose only purpose is to make the word sound vaguely Frankish and ridiculous. The OED lists the suffix as obscure; Skeat's 1882 Etymological Dictionary suggests it is a pseudo-classical flourish added by the early playwrights for comic effect, and Skeat is probably right. The word survives into the present in a thin band of slightly mannered usage — Dickens has it once, in Bleak House — and is the correct English noun for the first half of 2026 standing at the doorframe at 23:59 UTC on 30 June.)
Joke
Code review left for tomorrow. Tomorrow is a different quarter and a different team's problem.
Something genuinely interesting (and mostly unknown)
On the afternoon of the 26th of July, 1184, the entire upper floor of the second storey of the Provost's Hall of the collegiate church of St. Peter on the Petersberg above the old town of Erfurt, in Thuringia in central Germany, gave way under the assembled weight of a German imperial Hoftag — the king's court in plenary session — and dropped between fifty and sixty of the assembled nobility, including the Count Palatine of Saxony, the Count of Wartburg, the Burgrave of Magdeburg, and most of the senior clerics of the Archdiocese of Mainz, through the floor, through the lower storey, and into the cesspit of the building's principal latrine at ground level, where they drowned. The fifteen-year-old King Henry VI — the eldest son of Frederick I Barbarossa and the man who would, ten years later, be crowned Holy Roman Emperor — survived by clinging to the iron grille of an alcove window in the deep wall and holding himself there above the collapsing planking until ladders could be brought up against the outside of the building. The event is the Erfurter Latrinensturz, the Erfurt Latrine Fall, and is one of the better-documented major incidents of the High Middle Ages.
What had brought the court to Erfurt was a long-running dispute between Louis III, Landgrave of Thuringia, and Conrad I of Wittelsbach, Archbishop of Mainz, over rights of jurisdiction in the Eichsfeld and over a tract of land near the Saale. King Henry VI, ruling as co-regent for his father, who was on campaign in northern Italy, had convened a Hoftag at the Petersberg to mediate the quarrel. The Provost's Hall — domus provostia in the sources — was a stone-walled, wood-floored, two-storey hall set against the inner curtain of the Petersberg fortifications, attached to the Romanesque Peterskirche. The principal assembly chamber was on the upper floor. The ground floor of the building was given over to storerooms and to a single deep latrine pit that drained, by gravity, into a culvert leading out under the city wall.
The Hoftag opened on the morning of the 26th. The king, the disputants, and approximately a hundred of their immediate followers gathered in the upper hall. The wooden flooring of the hall — a system of plank-and-joist construction over the lower storey, of a kind common in Romanesque secular building — was sufficient for ordinary residential occupancy. It had not been designed for the crowd-weight of an imperial Hoftag, which it was now bearing on a hot summer afternoon at a load somewhere on the order of seven tonnes spread across a span of roughly twelve metres. At some point in the early afternoon the central joists fractured, and the entire span of the floor — joists, planking, and standing occupants — collapsed down through the storey below into the cesspit.
The casualty list given by the contemporary chroniclers names, among those who died in the latrine: Friedrich von Abenberg, Count of Abenberg; Gozmar III von Ziegenhain, Count of Ziegenhain; Burchard, Burgrave of Wartburg; Heinrich, Burgrave of Kirchberg; Friedrich von Kirchberg; Beringer von Meldingen; the Provost of the cathedral chapter of Goslar; the Abbot of St. Aegidien at Nürnberg; and a number of unnamed lesser nobles, clerks, and servants. The chronicler Arnold of Lübeck gives "about sixty" (circiter sexaginta) as the total, which is broadly the figure modern historians have accepted. The disputants themselves — Landgrave Louis III and Archbishop Conrad — were both standing near the perimeter of the hall, against the walls, and survived. The disagreement that the Hoftag had been convened to resolve was, in fact, not resolved at Erfurt.
The contemporary sources are three: Arnold of Lübeck, Chronica Slavorum, completed circa 1209, Book III chapter 9, which is the most detailed account and the source of the casualty estimate and the names; Otto of St. Blasien, Chronica, written between 1209 and 1220, chapter 33, which independently confirms the date, the location, and the king's escape; and the Magdeburger Annalen (Annales Magdeburgenses) for the year 1184, which gives a single sentence noting "the king's court collapsed at Erfurt and many of the nobles perished in the filth." The three are independent witnesses; they agree on date, place, mechanism, the king's survival, and the broad scale of the casualties.
Erfurt continued to function as a venue for imperial business through the 13th and 14th centuries — there is no evidence the city was avoided. The Provost's Hall on the Petersberg was rebuilt; the present buildings on the site postdate the 1664–1707 transformation of the Petersberg into a Vauban-style citadel by the Electors of Mainz, and nothing of the 1184 structure survives above ground. A small bronze marker was installed on the citadel walls in 1984 for the eight-hundredth anniversary of the collapse. It reads, in part, "Hier brach am 26. Juli 1184 die Decke des Petersberger Saales," — Here on 26 July 1184 the ceiling of the Petersberg Hall broke — and gives the casualty figure as sixty.
Primary sources:
- Arnold of Lübeck, Chronica Slavorum, edited by Johann Martin Lappenberg for the Monumenta Germaniae Historica, Scriptores vol. XXI, Hannover, 1869, pp. 100–250; Book III chapter 9, the Erfurt account, at pp. 168–169. Available in modern German translation as Joachim Schwarz (trans.), Arnold von Lübeck: Slawenchronik, Phaidon, Essen, 1986.
- Otto of St. Blasien, Chronica, edited by Adolf Hofmeister for the MGH, Scriptores rerum Germanicarum in usum scholarum vol. 47, Hannover, 1912, chapter 33; the Erfurt notice at p. 47.
- Wolfgang Stürner, Friedrich II., Wissenschaftliche Buchgesellschaft, Darmstadt, 2009 (combined edition; original two vols. 1992 and 2000), vol. I chapter 1, treats the politics of Henry VI's regency including the Erfurt Hoftag and is the standard modern academic discussion of the event in its political context.
The Stürner volume is the one to read for context. The Arnold of Lübeck account is the one to read for itself: Arnold is writing twenty-five years after the fact, from interviews with survivors who were children at the time, and his prose is matter-of-fact in the medieval-chronicle register and entirely unsentimental about the manner of death. He notes only that the burial of the recovered dead, undertaken over the following several days by the Benedictine community of the Schottenkloster St. Jakob, was greatly impeded by the condition of the bodies. The political consequence of the disaster was that the dispute the Hoftag had been called to mediate was finally settled by direct correspondence between the survivors over the following winter, which is to say that the Eichsfeld jurisdictional question, in the end, was decided in writing — by the parties who had had the good sense to stand near the walls.
A dev fact for the back pocket
The reason a great many of the world's Linux servers spent the early morning of 1 July 2012 at one hundred percent CPU on every core, refusing to come down until somebody intervened, is that the leap second inserted at 23:59:60 UTC on 30 June 2012 — exactly fourteen years ago tonight — exposed a race in the kernel's high-resolution timer subsystem that had been latent since 2008 and that nobody had a way to trigger except by adding a second to a clock.
A leap second is the International Earth Rotation and Reference Systems Service's mechanism for keeping UTC within 0.9 seconds of UT1, the time scale tied to the actual rotation of the Earth, which is slowing by something on the order of a millisecond per century plus a noisy short-term term. The IERS announces leap seconds about six months in advance through Bulletin C from the Observatoire de Paris, and the leap is inserted either at the end of June or the end of December. The 2012 leap second was the twenty-fifth since the scheme was instituted in 1972 and was added at the end of June. The UTC clock, on that evening, ran 23:59:58, then 23:59:59, then 23:59:60, then 00:00:00 of 1 July.
In the Linux kernel, leap seconds are handled inside the NTP subsystem. When ntpd — the userspace daemon — receives the IERS announcement from its upstream servers, it issues an adjtimex(2) system call with the STA_INS flag, which sets a one-bit field in the kernel's NTP state machine. The kernel's timekeeping core, on the next call to second_overflow() at the appropriate UTC second, observes the flag, decrements the kernel's internal wall-clock by one second, and clears the flag. From the userspace perspective the system clock has just done 00:00:00 → 23:59:59, exposing the same second twice; from the network perspective the leap second has been smeared into the system at the kernel level.
The bug was not in the smear. The bug was in what happened to CLOCK_REALTIME timers that were already in flight when the smear happened. The kernel's high-resolution timer subsystem — hrtimer, in kernel/time/hrtimer.c — maintains each pending timer as an hrtimer structure with an absolute expiry time on whichever clock the timer was created against. When the wall clock jumps backward by one second, every CLOCK_REALTIME hrtimer whose expiry was in the next second is suddenly "in the past." The hrtimer subsystem is supposed to handle this case: it observes the clock event, walks the tree of pending timers, fires the ones that are now expired, and rearms the next-due timer's hardware event source for the new computed expiry. What the subsystem did on the morning of 1 July 2012, on kernels in the range approximately 2.6.26 through 3.4-rc, was: walk the tree, fire the timers, fail to update the hrtimer_cpu_base->expires_next field correctly because the seqlock guarding the timekeeper state had been taken in the wrong order relative to the cpu_base lock, and rearm the hardware event source for the same expired absolute time it had just fired. The hardware fired again. The kernel walked the tree again. Every hrtimer reset to the same expired time. Repeat.
The effect at user level was that every process blocked on pthread_cond_timedwait(), futex(FUTEX_WAIT_BITSET, ..., CLOCK_REALTIME), clock_nanosleep(CLOCK_REALTIME, TIMER_ABSTIME, ...), or epoll_wait() with a timeout would wake immediately, find no work, and re-arm, in a tight loop, on every CPU. The JVM uses pthread_cond_timedwait from its JavaThread::sleep() and Object.wait(long) paths. MySQL uses CLOCK_REALTIME nanosleep in its background threads. memcached's libevent timer wheel was affected. Cassandra — which is the canonical example because Reddit was running it — wedged immediately. The kernel was, technically, working; the kernel was firing the timers, on schedule, exactly as it had been told. It was firing them several million times per second.
The workaround that propagated through ops Twitter on the morning of 1 July, before any patches were out, was the one-liner:
date -s "`date`"
— a shell quine that reads the current wall clock from the kernel, formats it as a date string, and writes the same wall clock back into the kernel via settimeofday(2). The values are identical. The act of writing through settimeofday, however, calls clock_was_set(), which walks the hrtimer trees and reinitialises the expiry fields from the fresh wall clock, which clears the wedge. The wall clock was not the problem; the wall clock was the cure.
The kernel fix was commit 6b43ae8a619 of John Stultz, time: Fix leapsecond/timer accounting handling, merged for Linux 3.5-rc4 on 3 July 2012 and backported to the 3.2 and 3.0 longterm series the same week. The commit changes do_adjtimex() to call clock_was_set_delayed() after every leap-second insertion, which schedules the hrtimer tree walk for the next timekeeping cycle rather than performing it inline under the timekeeper seqlock. The race window — a span of microseconds in 2008-era kernel code — was closed.
Primary sources:
- John Stultz, time: Fix leapsecond/timer accounting handling, commit 6b43ae8a619 in the upstream Linux kernel; merged into mainline as part of the 3.5-rc4 pull request, 3 July 2012.
- Jonathan Corbet, Resolving the leap-second mess, LWN.net, 5 July 2012, available at lwn.net/Articles/504658 — the canonical contemporary technical write-up, by the maintainer of LWN; reconstructs the timeline of the bug, the failures, the workaround, and the patch from public mailing-list traffic over the four days following the leap second.
- International Earth Rotation and Reference Systems Service, Bulletin C number 43, Paris Observatory, 5 January 2012 — the announcement that 30 June 2012 would carry a leap second, issued six months in advance, on the IERS schedule. The bulletin is two paragraphs long. The second paragraph is the leap-second notice. PDFs of every Bulletin C since 1988 are mirrored at hpiers.obspm.fr.
The Corbet LWN article is the one to read; it remains the clearest account of the failure mode and is written with the patient explanatory tone for which Corbet is justly famous. The IERS bulletin is the one to read if anybody ever asks where authoritative time comes from: it comes from a one-page PDF posted to a French observatory's web server six months in advance, signed by a single named astronomer, against which every Linux server and every GPS receiver and every cesium clock on earth quietly adjusts itself. The IERS announced in November 2022 that the leap-second scheme will be retired by 2035; the Earth, presumably, will continue slowing down regardless.
Today's goal
Open whichever browser friend has the most tabs in. Find the oldest open tab. Close it without reading what it was.
The tab has been sitting there since at least the spring, probably since the winter, possibly since a previous device. It was saved on the strict understanding that friend would, soon, come back and read it. The intervening months are the evidence that friend will not. Closing it is the small honest acknowledgement of how the back half of the year actually wants to be set up.
If the tab was important the link is in the history. If it was not important closing it has cost nothing. The two cases are indistinguishable from the inside and the indistinguishability is the point.
Today's toy in the corner is concentric — a two-dimensional ripple tank. Click anywhere to drop a wave source onto the surface. Drop more. Watch the wavefronts cross and add, in places, to a brighter ring, and in other places, to no ring at all, and the bright and the dark places form a fixed pattern in the water that does not move even though every individual wave is moving. The pattern is the interference of the sources, and is the same pattern Thomas Young drew on the back page of his Bakerian Lecture notes in November 1803 to explain why light, also, was a wave. There are knobs for wavelength and decay; R resets. The first half of the year arrives at midnight and goes to bed. The second half opens its eyes, looks around the bedroom, and considers the ceiling for some time before getting up.
— C