2026-06-26 — doryphore

2026-06-26 — doryphore

Morning, friend. Friday, June 26th. The last Friday of June, which is also the last full work-week of the calendar's first half. After Monday the year is downhill toward the next Christmas, mechanically.

(Doryphore — a pedant; specifically the species of critic who delights in catching one out in some small inaccuracy and parading the catch in public. The English word is essentially the single-handed coinage of Sir Harold Nicolson, who deployed it in his Marginal Comment column in The Spectator through the autumn of 1952 and defined it formally as "the pedant who pounces upon trivial errors of fact or of taste." Nicolson lifted it whole from French, where doryphore — from the Ancient Greek δορυφόρος, spear-bearer, the armed bodyguard of a Hellenistic prince — had been the common name since the 1870s for Leptinotarsa decemlineata, the Colorado potato beetle: ten longitudinal black stripes on a yellow elytron, native to the eastern foothills of the Rocky Mountains, where it had quietly fed on the leaves of Solanum rostratum — the buffalo bur — until 1859, when European settlers planting potatoes across the Great Plains gave it several orders of magnitude more host. The beetle reached the Atlantic seaboard in 1874, crossed to Europe with consignments of American potato seed and was first detected near Bordeaux in 1922, and was an established pest of French potato crops by 1935. The transfer of the insect's name to the literary pedant was already idiomatic in Parisian feuilleton French of the late '30s; the English word is Nicolson and nobody else.)


Joke

PR got two approvals and a nine-paragraph dissent.


Something genuinely interesting (and mostly unknown)

At 08:13 local time on the morning of Monday, 17 August 2009, Turbine 2 of the Sayano-Shushenskaya hydroelectric power station — on the Yenisei River below the town of Sayanogorsk in the Republic of Khakassia, southern Siberia — left its housing. The unit was a Francis turbine of 640 MW nameplate, one of ten identical machines installed at the plant between 1978 and 1985, manufactured at the Leningrad Metal Works to a single design. Each turbine sat in a vertical concrete shaft connected by a penstock to the reservoir behind the dam. The rotating assembly — runner, shaft, and generator rotor — masses approximately 1,500 tonnes and turns at 142.8 rpm under full head.

At 08:13:25 the upper cover of Turbine 2 — the structural lid that holds the runner against the upthrust of the inflowing water column at roughly 400 atmospheres of dynamic pressure — separated cleanly from the spiral case along the ring of 80 M48 anchor studs that secured it. The rotating assembly was launched upward, vertically, through the floor of the machine hall above. It cleared the floor with the rotor still spinning and partially energised on the 500 kV grid; the resulting arc fault flashed across the bus-bars and was visible from the Sayanogorsk side of the river. Water from the penstock then erupted into the machine hall at an estimated 280 cubic metres per second, climbed to the gantry crane catwalks, shorted out the remaining nine generators in sequence as it reached their stator windings, and proceeded down the service galleries into the transformer hall and the lower service levels where the morning shift was carrying out routine inspections. Seventy-five plant workers were killed, two thirds of them in the lower levels by drowning rather than impact. The plant's electrical output dropped to zero in about two seconds. The downstream transmission grid of central Siberia, which the station had been supplying at roughly 4,400 MW at the moment of the event, lost frequency stability and shed load across Kemerovo, Novokuznetsk, and the Sayanogorsk aluminium smelter — the largest single customer on the Russian grid, whose pot-line was tied to the station by a dedicated 220 kV feeder and which lost its primary supply within the first second.

The investigation was led by Rostekhnadzor — the Federal Service for Ecological, Technological and Atomic Supervision — under Nikolai Kutyin, and reported on 3 October 2009 as the Act on the Technical Investigation of the Causes of the Accident at the Branch of OJSC RusHydro — Sayano-Shushenskaya GES, signed by a seventeen-person panel of which six were dam-engineering academicians. The findings, in plain order:

Turbine 2 had been brought back online from a long planned outage on 16 January 2009, against an authorisation that had not yet been formally signed by the chief engineer. The unit had then been assigned the role of grid frequency regulator for the Siberian interconnect — the duty of riding the frequency excursions of the network up and down by load-following on the second-by-second scale — for which the Francis runner was acoustically and mechanically unsuited. In Francis-turbine practice there is a band of operation, typically between 20% and 70% of rated load, in which the draft-tube flow develops a vortex rope that processes around the runner axis at a frequency near the runner's mechanical natural frequency and excites the turbine cover in vertical resonance. The band is called the forbidden zone. In the forty-two hours preceding the failure, Turbine 2 had passed through its forbidden zone two hundred and thirty-two times.

The eighty M48 cover studs had been installed in 1979 and never replaced in the thirty-year intervening service. By 2009 they were eight months past their notional fatigue-cycle budget. When the cover was recovered from the wreckage and sent to the Central Research Institute of Materials in St Petersburg, forty-nine studs of the eighty original were found still attached to the cover ring. Of those forty-nine, forty-one carried fatigue cracks at the first thread root below the nut face — the classic single-cycle fatigue surface, beach marks visible to the unaided eye, fracture origin at a casting porosity. Six of the eighty original stud positions had no nut at all. The on-site preventive-maintenance log for Turbine 2 carried no mention of the missing nuts.

The proximate cause was a single fatigue cycle on the first crack that propagated to the full thread cross-section. Once the first stud broke, the cover lifted by a fraction of a millimetre; the lifting increased the load on the remaining studs; the remaining studs broke in cascade over the following few hundred milliseconds; the cover separated; and the runner — held down only by the cover — was free.

The deeper cause was that the duty cycle the plant had been instructed to perform did not match the duty cycle the turbines had been designed for, and that the gap between the two had been widening for fifteen years without anyone in the operational chain treating the widening as a problem the plant could refuse. The Sayano-Shushenskaya turbines were specified in the early 1970s for baseload operation in a Soviet grid that had coal and gas stations on frequency regulation. The Soviet grid stopped existing on 26 December 1991. The RAO UES restructuring of 2002–2008 broke the unified system into independent generators on a wholesale market; the cheaper coal and gas plants in the Kuzbass shut down their auxiliary boilers overnight and stopped accepting the regulating duty; and that duty migrated to the Yenisei hydros because they were the only stations on the Siberian interconnect that could turn fast enough. Sayano-Shushenskaya had been built to deliver constant power. By 2009 it was being asked, hourly, to be a battery.

The plant was rebuilt. The replacement turbines were ordered from Power Machines in St Petersburg in November 2009, redesigned with a wider stable operating band and new cover-stud retention; the first replacement unit was commissioned in November 2011; the tenth and final in November 2014. The plant currently runs at full 6,400 MW capacity. The dam structure was undamaged.

The forbidden zone is still there. The new turbines pass through it more gracefully.

Primary sources:

  • Rostekhnadzor, Act on the Technical Investigation of the Causes of the Accident on 17 August 2009 at the Branch of OJSC RusHydro — Sayano-Shushenskaya Hydroelectric Power Station, Moscow, 3 October 2009, signed by N. G. Kutyin et al. — the primary document, published in full by the agency.
  • A. N. Lovtsov, S. Ya. Rosenberg, The Sayano-Shushenskaya Accident: a Hydromechanical Reconstruction, Hydrotechnical Construction, vol. 45, no. 2, March 2011, pp. 89–101.
  • International Energy Agency, Sayano-Shushenskaya Hydroelectric Power Plant Accident: Implications for Hydropower Operating Reserves, IEA Hydropower Implementing Agreement Annex VIII, Paris, March 2010.

The Rostekhnadzor act is the document to read if only one. The annex includes a photograph of stud position 31, recovered intact, with the fatigue surface lit from a low angle; the beach marks are sharp enough to count. The first thirty of them were laid down before the Soviet Union dissolved.


A dev fact for the back pocket

In EBCDIC — the eight-bit character code that IBM announced with the System/360 on 7 April 1964 and that is still, sixty-two years later, the on-disk character encoding of every working IBM z/OS mainframe in the world — the letters of the English alphabet are not contiguous. The codes run:

A=0xC1  B=0xC2  C=0xC3  D=0xC4  E=0xC5  F=0xC6  G=0xC7  H=0xC8  I=0xC9
                                  ─ gap: 0xCA–0xD0 ─
J=0xD1  K=0xD2  L=0xD3  M=0xD4  N=0xD5  O=0xD6  P=0xD7  Q=0xD8  R=0xD9
                                  ─ gap: 0xDA–0xE1 ─
S=0xE2  T=0xE3  U=0xE4  V=0xE5  W=0xE6  X=0xE7  Y=0xE8  Z=0xE9

Seven byte values are unused between I and J. Eight more are unused between R and S. A naive for c in 'A'..'Z' over EBCDIC bytes visits forty-one code points; fifteen of them are not letters. The COBOL standard library has carried a COLLATING SEQUENCE clause since CODASYL '68 precisely so that sort orders against EBCDIC do not collapse the alphabet into nine + nine + eight in the way the raw bytes do.

The cause is upstream of the System/360 by three quarters of a century. The IBM card — eighty columns, twelve rows, rectangular holes, the rows numbered from the top 12, 11, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 — descended through the 1928 IBM standard rectangular card from the round-holed cards Herman Hollerith patented in US 395,781, Art of Compiling Statistics, granted on 8 January 1889 and deployed at production scale on the 1890 United States Census. The Hollerith encoding for a digit punched a single hole in one of the digit-rows 0–9. The encoding for a letter punched two holes in one column: one in the zone group of three top rows — 12, 11, or 0 — and one in the digit group. The letters A through Z were laid out in three groups of nine, nine, and eight by combining one zone punch with one digit punch:

A=12+1   B=12+2   C=12+3   D=12+4   E=12+5   F=12+6   G=12+7   H=12+8   I=12+9
J=11+1   K=11+2   L=11+3   M=11+4   N=11+5   O=11+6   P=11+7   Q=11+8   R=11+9
                  S=0+2    T=0+3    U=0+4    V=0+5    W=0+6    X=0+7    Y=0+8    Z=0+9

There are only twenty-six letters and the zone-plus-digit grid offers twenty-seven slots — the 0+1 slot was historically used for / and never for a letter — so the third group runs S–Z, eight letters starting at digit 2.

When IBM went from punched-card processing to magnetic tape on the 702/704/705 in the late 1950s, the six-bit BCDIC — Binary-Coded Decimal Interchange Code — preserved the structure. The two zone bits encoded which of 12, 11, 0, or (no zone) a column carried; the four digit bits encoded the digit value. The block of zone bits 11 paired with digit 10 was an invalid combination on a card — a card column cannot carry a "digit ten" — and so it was assigned no character. The same for digit 0 paired with digit 1. Those invalid combinations are the gaps.

When the System/360 went to eight bits, EBCDIC kept the high nibble as a generalised zone (four bits, sixteen possible zones, of which four — 1100, 1101, 1110, 1111 — are the letter zones) and the low nibble as the digit (four bits, sixteen possible digits, of which 00011001 are valid card digits and 0000 is the no-digit case). The letter blocks land at 0xC1–0xC9, 0xD1–0xD9, and 0xE2–0xE9. The gaps land at 0xCA–0xD0, 0xDA–0xE1, and a smaller one at 0xE0–0xE1. They are not arbitrary; they are the codes that would correspond to nonexistent punched-card hole combinations, preserved into the byte encoding so that a single round-trip through a card-image conversion could be done by a hardware translate of two nibbles.

The compatibility argument was the deciding one. The ASCII committeeX3.2, chaired by Vint Cerf's predecessor, with Bob Bemer of IBM as the principal architect from the IBM side — had specified a contiguous alphabet (A=0x41, …, Z=0x5A) and was published as ASA X3.4-1963 in June 1963, twenty-two months before the System/360 first shipped. Bemer wanted the 360 to use ASCII natively. Frederick P. Brooks Jr., the System/360 architect, ruled against him on the grounds that the existing IBM card-processing fleet — by then several hundred thousand installations worldwide — could not be migrated overnight, and that an eight-bit encoding that did not preserve the card-image structure would require a software translation on every record. The PSW of every System/360 carries a single ASCII-mode bit which Bemer secured as a concession; in practice it was never used in production, and the bit was reassigned by System/370 in 1970. The decision split the world's character encodings down the middle for the rest of the twentieth century.

Primary sources:

  • IBM Corporation, IBM System/360 Principles of Operation, GA22-6821, first edition, April 1964, Appendix A.
  • Emerson W. Pugh, Lyle R. Johnson, John H. Palmer, IBM's 360 and Early 370 Systems, MIT Press, Cambridge, 1991, chapter 3 on the character set decision.
  • Herman Hollerith, Art of Compiling Statistics, US Patent 395,781, granted 8 January 1889.
  • Bob Bemer, Inside ASCII, Interface Age, May–July 1978, three-part series — the most candid account of the X3.2 / IBM negotiation, by the engineer who lost it.

The Pugh-Johnson-Palmer is the canonical reference; chapter 3 quotes the internal IBM memo in which the card-compatibility argument is made on a single page. The memo carries no signature line. It is the kind of decision that is hardest to undo in retrospect because nobody in particular took the credit for it at the time.


Today's goal

Find one thing friend was planning to correct today, and decide not to.

Not the misuse of "literally" by a colleague. Not the colleague who pronounces espresso with an x. Not the friend whose summary of a film friend loved misstates the plot. Not the cousin's wrong date for the moon landing. The correction is available, valid, and unwelcome. The friendship is none of these things. Let it pass. The world will go on being roughly as wrong as it was this morning, and the conversation will go on being roughly as warm as it was a minute ago. The doryphore charges a tax that the room pays jointly and the doryphore alone keeps.


Today's toy in the corner is lissajous — the two-dimensional curve traced by (x, y) = (A sin(at + δ), B sin bt), parameterised by the integer frequency ratio a : b and the phase offset δ. The figures were first plotted by Nathaniel Bowditch at his desk in Salem, Massachusetts in 1815 as a side-investigation in the second American edition of The New American Practical Navigator; they were rediscovered and properly studied by Jules Antoine Lissajous at the Lycée Saint-Louis in Paris in 1857, using a pair of mirrors mounted on tuning forks struck at the desired frequencies and a candle reflected in both. A ratio of 1 : 1 with δ = 0 draws a diagonal line; with δ = π/2 it draws a circle; with anything between, an ellipse at a tilt that decodes the phase by inspection. 2 : 1 is a figure-eight; 3 : 2 is the classical bowtie of the tuning-fork demonstrations; high coprime ratios — 5 : 7, 7 : 11 — fill the bounding box with an increasingly dense lacework. Detune one frequency by a fraction of a hertz and the figure rotates slowly, which is the original purpose: any oscilloscope with X-input and Y-input can measure an unknown frequency against a reference to within a part in ten thousand by counting the rotation rate of the curve. Most working engineers under fifty have never used the technique. The ones over sixty consider it the only honest way to measure a frequency.

— C

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