Daily Digest — 2026-08-24

26 newsletters today.

In this digest


Abandoned Futures

The EWR VJ 101: The German Supersonic VTOL Fighter That Hit Mach 1.04 in 1964 and Got Cancelled Because NATO Standardized on the F-104

2026-08-24

In April 1964, a stubby little aircraft with rotating engine pods on its wingtips lifted vertically off a runway at Manching, West Germany, tilted its engines forward, and accelerated through Mach 1 in level flight. The EWR VJ 101C β€” built by Entwicklungsring SΓΌd, a consortium of BΓΆlkow, Heinkel, and Messerschmitt β€” became the first VTOL aircraft to exceed the speed of sound. Then the program was cancelled. The prototype sits in a Munich museum. Nobody built a supersonic VTOL fighter that actually worked for another 40 years.

The specification came from the 1957 NATO Basic Military Requirement 3 (NBMR-3), which anticipated that Warsaw Pact strikes would crater every runway in West Germany within hours of war breaking out. Fighters had to launch from forest clearings, autobahn stretches, and dispersed sites. BΓΆlkow's chief designer Ludwig BΓΆlkow and his team settled on a radical architecture: six Rolls-Royce RB.145 turbojets, four in tilting wingtip nacelles (two per side) and two mounted vertically in the fuselage for lift augmentation. Total thrust-to-weight ratio: 1.24. The tilting-nacelle concept let the same engines provide vertical lift, transition thrust, and horizontal cruise β€” no dead weight lugged around like the RB.162 lift jets that would later doom the Mirage IIIV.

The VJ 101C X-1 first hovered on 10 April 1963. Full transition to horizontal flight followed on 20 September 1963. On 29 July 1964, it exceeded Mach 1 in level flight without afterburners. The improved X-2, fitted with afterburning RB.145R engines, hit Mach 1.04 in July 1965. The aircraft flew 325 test flights across both prototypes. Only the X-1 was lost, on 14 September 1964, due to a gyro failure during a conventional takeoff β€” the pilot ejected safely. The X-2 flew until 1968.

What killed it? Three things converged. First, NATO abandoned NBMR-3 in favor of standardizing on the F-104G Starfighter, which Lockheed had aggressively sold to Germany through means later exposed in the 1975 Lockheed bribery scandals. Second, the follow-on VJ 101D β€” a Mach 2 operational fighter with a proper fuselage lift system β€” needed engines Germany couldn't fund alone, and the UK pulled out to pursue the P.1154. Third, the Luftwaffe brass concluded that dispersed operations were a tactical fantasy: you couldn't hide fuel trucks, munitions, and maintenance crews in a forest.

Here's why it matters now. The VJ 101's tilting-nacelle architecture is exactly what Bell and Boeing struggled with on the V-22, and exactly what the F-35B avoids by using a mechanically brutal lift fan driven by a driveshaft from the main engine. Modern FADEC engine control could eliminate the analog thrust-balancing gymnastics that made the VJ 101 a handful. Composite structures would fix the weight problem that limited its payload. And the strategic case has returned with a vengeance: China's DF-17 and Russia's Iskander make fixed airbases in the Western Pacific and Eastern Europe just as vulnerable as NATO planners feared in 1957. The USAF's Agile Combat Employment doctrine is NBMR-3 rediscovered. The concept wasn't wrong β€” the engines were just 60 years too weak.

Key Takeaway: The VJ 101C proved supersonic VTOL was possible in 1964 with tilting wingtip nacelles; modern engines, FADEC, and composites could make BΓΆlkow's architecture viable today, right as dispersed basing has returned to NATO doctrine.

ArXiv Paper Digest

AI with Authority, from Application to Silicon

2026-08-24

Authors: Jason Hickey

ArXiv: 2608.21356v1

PDF: Download PDF

For the last sixty years, "machine verification" β€” mathematically proving that a piece of software or hardware does exactly what it's supposed to do β€” has been a luxury reserved for the most critical systems: aircraft controllers, cryptography, nuclear reactors. It's just too expensive and slow for everyday engineering. This paper argues that generative AI flips that economic reality on its head.

The premise is simple but striking: when an AI can crank out code, chip designs, or system configurations faster than any human could review them, you can't rely on human eyeballs to catch mistakes anymore. You need a referee that can't be bribed or fooled β€” and that's exactly what a formal verifier is. It doesn't get tired, doesn't hand-wave, and doesn't accept plausible-looking nonsense. If the AI produces something wrong, the verifier rejects it. If it accepts it, you have a mathematical guarantee.

To demonstrate this, the author ran a five-week solo experiment. Working alone, on consumer AI subscriptions (think ChatGPT Pro tier, not a datacenter), he directed a fleet of AI agents to build software spanning the entire computing stack β€” from application-level code all the way down to actual silicon (chip) designs. At every layer, the AI's output was funneled through a verifier that acted as the gatekeeper.

The key insight is a role reversal:

  • Old world: humans write code, verification is an optional afterthought that costs too much.
  • New world: AI writes code at superhuman speed, and verification becomes the only affordable way to keep up β€” because a human simply cannot audit that volume of output.

Put another way: verification transforms from a cost center into the very thing that makes one-person-plus-AI teams possible. Without it, you'd drown in unreviewable AI output and eventually ship something broken. With it, a single engineer can safely orchestrate work that used to require a whole team, because the verifier catches the AI's inevitable hallucinations and errors before they matter.

The paper positions this as the emergence of "AI with authority" β€” AI that isn't just suggesting, but actually doing, with a mathematical safety net rather than a human one. It's a claim about how software (and hardware) engineering itself is about to be restructured: fewer humans writing code, more humans specifying what they want and letting verified AI agents build it.

Why it matters: If the thesis holds, formal verification β€” long considered niche and impractical β€” becomes the load-bearing pillar of the AI-driven engineering era, redefining who can build serious systems and how.

Daily Automotive Engines

Main Cap Girdles and Bedplates: Turning Individual Caps Into a Structural Assembly

2026-08-24

Individual main bearing caps clamp the crankshaft to the block, but they act as independent islands. Each cap flexes on its own under combustion load, and the block webs between cylinders can walk sideways as the crank hammers each bearing. A main cap girdle (also called a stiffener plate or main cap brace) is a single machined plate that bolts across all the main caps at once, tying them into one rigid structure. A bedplate takes this further β€” it replaces the individual caps entirely with a single cast aluminum or iron structure that forms the entire lower half of the main bearing bores.

The problem being solved is main bore distortion. Under peak cylinder pressure β€” say 1,800 psi on a boosted 4.0" bore, that's roughly 22,600 lbs of downward force per cylinder β€” the crank tries to push the caps apart and rock them side-to-side. Individual caps resist this only through their two bolts and the register fit in the block. A girdle adds a third load path: the caps can't spread because they're all locked to a common plate. Bearing crush stays uniform, oil clearance stays round, and the crank stays where the designer put it.

Real-world example: The GM LS-series V8 uses a windage-tray-style girdle that bolts to all five main caps and adds side bolts into the block skirt. This is why LS blocks handle 1,000+ hp on stock bottom ends β€” the girdle turns five separate caps into one beam. Contrast with the aluminum-block Porsche 911 flat-six, which uses a full bedplate: the crank hangs from the block half above and the bedplate half below, and the parting line runs through the crank centerline. This eliminates cap walk entirely because there are no separate caps to walk.

Rule of thumb for girdle bolt torque: the girdle-to-cap bolts should carry roughly 30–40% of the total main cap clamping load. If your main studs are torqued to 100 ft-lb each (two per cap, ~200 ft-lb total per cap), the girdle bolts should add another 60–80 ft-lb of clamp to that cap. Under-torque the girdle and it just rides along doing nothing; over-torque it and you can actually distort the main bores in the opposite direction.

Bedplates have one downside: thermal expansion mismatch. An aluminum bedplate on an iron block grows at a different rate as the engine warms, which is why bedplate engines almost always pair aluminum with aluminum, or iron with iron. Mix the metals and you get main bore distortion at operating temperature β€” the exact problem the bedplate was designed to eliminate.

Key Takeaway: Girdles and bedplates tie individual main caps into a single structural assembly, preventing cap walk and main bore distortion under high cylinder pressure β€” but bedplates demand matched-metal construction to avoid thermal distortion.

Daily Debugging Puzzle

JavaScript's setTimeout 32-Bit Delay Trap: The Five-Year Reminder That Fires Right Now

2026-08-24

This module schedules reminders for arbitrary future dates. It's used across the app: renewal reminders, subscription expiry alerts, "check back in a year" nudges. It passes every unit test β€” the timers fire, the callbacks run, the email gets sent. Then a QA engineer schedules a reminder for a five-year-old event and their inbox floods within seconds.

// Schedule a callback to fire after the given number of days
function scheduleReminder(days, callback) {
  const ms = days * 24 * 60 * 60 * 1000;
  console.log(`Reminder scheduled for ${days} days from now`);
  return setTimeout(callback, ms);
}

// A parent schedules a reminder for their child's 18th birthday
const daysUntilBirthday = 365 * 5; // 5 years away
scheduleReminder(daysUntilBirthday, () => {
  sendEmail('Happy 18th birthday!');
});

// An annual review, one year out
scheduleReminder(365, () => {
  sendReview();
});

// Tests confirm both timers eventually fire the callback. Ship it.

Unit tests using days = 0.001 or days = 1 pass cleanly. In production, the birthday email arrives immediately. The annual review works fine. What broke?

The Bug

The HTML spec pins the setTimeout delay to a signed 32-bit integer. The maximum representable value is 2^31 βˆ’ 1 = 2,147,483,647 ms, which works out to about 24.855 days. Pass anything larger and the delay overflows. Every major browser and Node.js reacts the same way: the oversized delay is clamped or wrapped down to 1 ms, and the callback fires immediately.

Do the arithmetic on the birthday reminder:

  • 365 Γ— 5 Γ— 24 Γ— 60 Γ— 60 Γ— 1000 = 157,680,000,000 ms
  • That's ~73Γ— larger than the 32-bit ceiling.
  • Result: the "5-year reminder" fires on the next tick of the event loop.

The 1-year reminder (31,536,000,000 ms) is also too large β€” it just happens to still be too large, so it fires immediately too. The tests pass because they use small values that stay under the 24.855-day ceiling. The bug lives entirely in the region the tests never explore.

Worse: no error is thrown. No warning is logged. The console dutifully prints "Reminder scheduled for 1825 days from now" a millisecond before the callback runs.

The Fix

Don't use setTimeout for long-horizon scheduling. For anything that might exceed a few weeks, compute a target timestamp and either persist it (database, cron, job queue) or chain shorter timers:

const MAX_DELAY = 2_147_483_647; // 2^31 - 1

function scheduleReminder(days, callback) {
  const targetTime = Date.now() + days * 24 * 60 * 60 * 1000;

  function tick() {
    const remaining = targetTime - Date.now();
    if (remaining <= 0) {
      callback();
    } else {
      setTimeout(tick, Math.min(remaining, MAX_DELAY));
    }
  }

  tick();
  console.log(`Reminder scheduled for ${new Date(targetTime).toISOString()}`);
}

For truly long-lived reminders (months, years), a process crash or reboot will erase the timer anyway. Persist the target timestamp in durable storage and let a scheduler or wake-on-timer job handle it. In-memory timers are for seconds and minutes β€” not birthdays.

Key Takeaway: setTimeout silently clamps delays over ~24.8 days to a single millisecond, so any long-horizon timer fires instantly β€” persist the target time instead.

Daily Digital Circuits

Dickson Charge Pumps: How Hardware Builds High Voltage From a Chain of Capacitors and Diodes

2026-08-24

A general charge pump was covered earlier, but the Dickson topology deserves its own treatment because it's the specific circuit sitting inside every NOR flash chip, every EEPROM, and every low-voltage MCU that needs to program non-volatile memory. Flash cells need ~10V to tunnel electrons through the oxide, but the chip runs on 1.8V. Something has to bridge the gap, and it's a Dickson pump.

The topology. A Dickson pump is a chain of stages. Each stage has a pump capacitor and a diode (or diode-connected MOSFET). Two non-overlapping clock phases, Ο†1 and Ο†2, drive alternating capacitor bottom plates. When Ο†1 goes high, odd-stage capacitors get their top plates lifted by VDD, and charge flows through the diodes into the even-stage capacitors. Then Ο†2 goes high, and the reverse happens. Every clock cycle, charge ratchets one stage to the right, and each stage adds roughly (VDD βˆ’ Vt) to the DC voltage.

The output formula. For N stages with clock amplitude Vφ, diode drop Vt, output current I_out, capacitance C per stage, and clock frequency f:

V_out = VDD + NΒ·(VΟ† βˆ’ Vt βˆ’ I_out/(fΒ·C)) βˆ’ Vt

The I_out/(fΒ·C) term is the killer β€” it's the voltage droop caused by pulling current out of finite capacitors at finite frequency. Doubling f or C directly reduces droop. This is why charge pumps are painful: to program flash faster, you need bigger caps (die area) or higher clock rate (noise, power).

The diode drop problem. Using plain MOSFETs as diodes costs you Vt (~0.5V) per stage. For a 5-stage pump running from 1.8V, you'd lose 2.5V just to Vt drops. Modern Dickson pumps use charge-transfer switches (CTS) β€” cross-coupled NMOS pairs that are actively driven fully on during the charge-transfer phase, eliminating the Vt penalty. This is what makes 1.2V-input flash programming feasible.

Real-world example. The write path of a typical serial NOR flash (like a Winbond W25Q128) contains an ~8-stage Dickson pump running at ~10 MHz off a 3.3V supply, generating ~12V for the program voltage and ~-8V for the erase voltage (yes, negative β€” you can flip the topology to pump downward). It takes ~1-2 ms to program a page, and most of that time is the pump ramping and holding voltage against the ~Β΅A of tunneling current.

Rule of thumb: Each Dickson stage adds roughly (VDD βˆ’ 0.1V) to the output when using CTS switches and running well above the load current's demand. Budget 4-6 stages for typical flash programming from a 1.8V-3.3V supply.

See it in action: Check out Let
#39;s build a voltage multiplier! by Ben Eater to see this theory applied.
Key Takeaway: The Dickson charge pump ratchets voltage upward one capacitor-diode stage at a time, and its output droop is set by load current divided by (frequency Γ— capacitance) β€” the fundamental tradeoff between die area, clock rate, and how fast you can program a flash bit.

Daily Electrical Circuits

Brokaw Bandgap Reference: The Precision Successor to Widlar's Original Design

2026-08-24

The Brokaw bandgap reference, invented by Paul Brokaw at Analog Devices in 1974, solved the biggest weakness of the Widlar bandgap: it produces its reference voltage at a high-impedance summing node that you can buffer and scale independently, and it forces equal collector currents in its two transistors through elegant use of an op-amp feedback loop. This architecture is the foundation of the AD580, AD584, LT1009, and countless modern references.

How it works: Two BJTs Q1 and Q2 have an emitter area ratio of N:1 (typically 8:1). Their collectors tie to matched resistors R feeding a positive supply. An op-amp senses the two collector voltages and drives the common emitter node through R2, forcing the collector voltages β€” and therefore the collector currents β€” to be equal. Because Q1 and Q2 carry identical currents but have different emitter areas, they develop a Ξ”VBE across the emitter degeneration resistor R1:

  • Ξ”VBE = VT Β· ln(N) β€” the PTAT (proportional to absolute temperature) component
  • Current through R1: I = Ξ”VBE/R1, which flows through both Q1 and Q2
  • The voltage across R2 = 2Β·IΒ·R2 (both transistor currents combine)
  • VREF = VBE(Q2) + 2Β·(R2/R1)Β·VTΒ·ln(N)

The VBE term has a negative tempco (~-2 mV/Β°C) and the PTAT term has a positive tempco. Choose R2/R1 so the two cancel, and you land near 1.25 V with tempco under 10 ppm/Β°C.

Rule of thumb: For N=8 emitter area ratio, ln(8) β‰ˆ 2.08, and VT = 25.85 mV at 27Β°C, giving Ξ”VBE β‰ˆ 53.8 mV. You need the PTAT contribution at VREF to reach ~525 mV to balance VBE's ~650 mV negative-slope term. That requires 2Β·(R2/R1)Β·53.8 mV = 525 mV, so R2/R1 β‰ˆ 4.88.

Why it beat Widlar: The Widlar's output sits on top of a BJT collector β€” noisy, current-limited, and hard to buffer without disturbing the bias loop. Brokaw's output is a proper op-amp node with low output impedance and easy scaling. Want 2.5 V or 5 V? Just add a gain resistor in the op-amp feedback path.

Real-world example: The AD580 (still in production 50 years later) is a straight Brokaw cell trimmed for 2.5 V Β±0.4% with 10 ppm/Β°C tempco in a TO-52 can β€” it powers instrumentation amps in medical monitors and 4-20 mA transmitters where you cannot afford calibration drift over a 20-year deployment.

Key Takeaway: Brokaw's insight was using an op-amp to force equal collector currents in a mismatched-area BJT pair, producing a buffered, easily-scaled bandgap output that made 1.25 V references practical and precise.

Daily Engineering Lesson

Resolvers: Absolute Angular Position Through Rotating Transformers

2026-08-24

An encoder counts pulses. A Hall sensor reads a magnet. A resolver is different: it's an analog rotating transformer that outputs absolute shaft angle as the ratio of two sine-wave voltages. No optics, no semiconductors on the shaft, no batteries to remember position β€” just copper windings in iron. That's why resolvers survive in places encoders won't: EV traction motors at 200Β°C, missile fins pulling 100g, aircraft flap actuators soaked in hydraulic fluid, steel-mill motors coated in scale.

How it works. The rotor carries one winding, excited by an AC reference (typically 5–10 kHz, 4–10 V RMS) fed through a rotating transformer (brushless resolvers) or slip rings (brushed). The stator carries two windings at 90Β° mechanical spacing. As the rotor turns, it magnetically couples into both stator windings, but by different amounts:

  • Sine winding output: V_ref Β· sin(ΞΈ) Β· sin(Ο‰t)
  • Cosine winding output: V_ref Β· cos(ΞΈ) Β· sin(Ο‰t)

The shaft angle ΞΈ is encoded as the ratio of the two envelope amplitudes. A resolver-to-digital converter (RDC) chip like the AD2S1210 demodulates the carrier and computes ΞΈ = arctan(sine/cosine), typically outputting 10–16 bits of absolute position plus a velocity estimate.

Why the ratio matters. Because position comes from a ratio, not an absolute amplitude, resolvers are immune to excitation voltage drift, temperature-induced winding resistance changes, and cable length. Drop the reference from 7 V to 5 V and both channels drop proportionally β€” ΞΈ is unchanged. Try that with a potentiometer or an analog Hall sensor and you'll get garbage.

Multi-speed resolvers. A "1X" resolver gives one electrical cycle per mechanical revolution β€” true absolute position. A "4X" or "16X" resolver has multiple magnetic pole pairs and gives multiple electrical cycles per turn, trading absolute-ness for finer resolution. Aerospace often stacks a 1X coarse resolver with an nX fine resolver on the same shaft to get both.

Rule of thumb β€” resolution. A 12-bit RDC gives 2^12 = 4096 counts per electrical cycle. On a 1X resolver, that's 360Β°/4096 β‰ˆ 0.088Β° absolute. On a 4-pole-pair BLDC motor (common), electrical angle repeats every 90Β° mechanical β€” so 4096 counts covers 90Β°, giving 0.022Β° for commutation but requiring a separate coarse channel for absolute mechanical position.

Where you'll meet one. Tesla Model S drive units, F-16 stabilator actuators, CNC spindle feedback, and any BLDC servo where the environment would eat an optical encoder for breakfast. If you see a fat 6-wire cable coming out of a motor with R1/R2/S1/S2/S3/S4 labels, that's a resolver.

See it in action: Check out How does a Resolver work? - Technical animation by learnchannel to see this theory applied.
Key Takeaway: A resolver encodes shaft angle as the ratio of sine and cosine winding voltages β€” making it drift-immune, absolute, and rugged enough for environments that destroy every other position sensor.

Forgotten Books

The Soviet Army's Secret Geologists: Mapping the Earth for War

2026-08-24

Book: CIA Reading Room cia-rdp80-00809a000600130034-0: MILITARY GEOLOGY by CIA Reading Room (1948)

Read it: Internet Archive

Buried in a declassified 1948 CIA translation of a Soviet military manual sits a startling admission: the Red Army employed a permanent corps of geologists whose peacetime job was to scientifically survey the rocks and minerals of countries the USSR might one day invade.

The Army maintains a military-geological service in time of peace as well as during war. In the former case, the duties of this service are limited to the search for strategic raw materials, the preparation of geological study of Russian territories and frontiers from the standpoint of military engineering and the geological study of the territories of neighboring countries. Special military-geological maps with accompanying reference tables are prepared beforehand.

The document β€” captured intelligence chapter titled "Military-Geological Survey (Rekognosirovka) and Prospecting (Razvyedka)" β€” describes a discipline most Americans have never heard of. The Soviets divided the work into three modes: peacetime prospecting, rear-echelon work during mobilization, and frontline geological reconnaissance under fire.

What did military geologists actually do? Their outputs included:

  • Maps of where to dig defensive trenches (rock too hard? soil too wet?)
  • Predictions of groundwater availability for troops crossing arid regions
  • Surveys of which foreign quarries could produce concrete aggregate for airfields
  • Inventories of strategic minerals β€” tungsten, chromium, manganese β€” inside neighboring states

This wasn't Soviet paranoia. The U.S. Army had its own Military Geology Unit at the USGS from 1942 through the 1970s, producing over 400 classified terrain reports for WWII and Korea. British Army geologists mapped Normandy's beaches before D-Day, correctly predicting which sand grades would bog down tanks. Yet by the 1990s, both programs had essentially dissolved. When the U.S. invaded Iraq in 2003, troops famously used commercial road atlases and tourist maps.

Was it ahead of its time? Emphatically yes β€” and it's coming back. The modern scramble for lithium in Bolivia's salt flats, cobalt in the Congo, and rare earths in Greenland is exactly the "search for strategic raw materials" the 1948 Soviets described. China's Ministry of Natural Resources today publishes detailed geological atlases of Africa that read like the Rekognosirovka playbook. The Pentagon's 2022 Critical Minerals Strategy reinvents Soviet military geology under a new name: economic statecraft.

What was lost was the recognition that geology is geopolitics. For a generation, Western strategists treated terrain as scenery β€” a backdrop to satellite imagery and drone feeds. The Soviets never made that mistake. They knew that a country's future war depended on knowing, in advance, exactly which hills would crumble under artillery, which rivers could be forded, and which foreign mines held the manganese that hardened your tank armor.

The next time you read about a rare-earths trade dispute, remember: a Soviet colonel with a rock hammer and a topographic map saw it coming eighty years ago.

The forgotten claim: Great powers once maintained permanent corps of military geologists who spent peacetime secretly mapping the strategic minerals and terrain of potential enemies β€” a discipline the West abandoned just before rare-earth competition made it essential again.

Forgotten Darkroom

The Varitrons: A Forgotten Zoo of Particles from a Caucasian Mountaintop

2026-08-24

Book: CIA Reading Room cia-rdp80-00809a000600350498-1: HUNGARIAN NOTES ON SOVIET NUCLEAR PHYSICS RESEARCH by CIA Reading Room (1950)

Read it: Internet Archive

Buried in a declassified CIA intelligence report from October 1950 β€” translated from a Hungarian popular-science magazine called TermΓ©szet Γ©s Technika β€” is one of the strangest footnotes in the history of particle physics. Two Soviet brothers, perched on a mountain in Soviet Armenia, believed they had discovered an entire menagerie of new subatomic particles.

The Soviet scientists, A. I. Alikhanov and his brother, Alikhanyan, are using a powerful magnet for their experiments on particles with a mass between that of an electron and a nucleon. Their counters are located at Alagez in the Caucasus at an altitude of 3,400 meters. According to their observations, there are 12 different particles between the electron and proton, and four more particles greater than the proton in mass. They suggested that, because of their varying mass, these particles be named varitrons.

The report β€” stamped SECRET and marked "unevaluated information" β€” was the Cold War equivalent of scientific gossip: American intelligence trying to figure out what Soviet physicists were up to by reading their satellite-state magazines. The Alikhanov brothers (Abram Alikhanov and Artem Alikhanyan, who used the Armenian spelling of their surname) were real, prominent Soviet physicists. Alikhanyan ran a legitimate cosmic ray station at Mount Aragats β€” the "Alagez" of the CIA translation β€” which still exists today.

The problem: the varitrons were wrong. Beginning in the late 1940s, the Alikhanyan group published papers claiming to see a whole spectrum of intermediate-mass particles in cosmic rays, based on magnetic spectrometer measurements. Western physicists were deeply skeptical. By the mid-1950s, when better detectors, cloud chambers, and the first accelerators came online, the varitrons quietly vanished from the literature. They had almost certainly been artifacts of measurement error β€” misidentified pions, muons, and protons whose momenta were being miscalculated by the apparatus.

But here's what's fascinating: the Alikhanyan brothers were directionally correct in a way nobody in 1950 could have imagined. When they claimed sixteen distinct particles in the mass range between electron and something-heavier-than-proton, they were laughed off. Two decades later, the Standard Model would confirm a genuine zoo β€” pions, kaons, muons, eta mesons, rho mesons, lambdas, sigmas, xis, and dozens more hadrons and leptons crowding exactly the mass ranges the varitrons were supposed to inhabit. Willis Lamb joked in his 1955 Nobel lecture that particle-discoverers used to get a Nobel Prize but should now get a $10,000 fine.

The varitrons were the wrong answer to the right question. The Alikhanyans saw signal in noise β€” but the signal they were looking for turned out to be real. Modern readers might recognize the pattern: a bold early claim, dismissed as overreach, that in retrospect described the shape of something true. The next time you see a headline about "anomalies" at the LHC that later evaporate, remember the varitrons β€” and remember that Aragats Cosmic Ray Station is still there, still counting particles, seventy-six years later.

The forgotten claim: In 1950 two Armenian brothers on a mountaintop reported sixteen new subatomic particles they called "varitrons" β€” a wrong answer that accidentally predicted the crowded particle zoo the Standard Model would later confirm.

Forgotten Patent

Steven Sasson's "Electronic Still Camera": The 1977 Kodak Patent That Invented the Digital Camera β€” Built by a 24-Year-Old, and Buried by the Company That Filed It

2026-08-24

In December 1975, in a lab at Eastman Kodak in Rochester, New York, a 24-year-old electrical engineer named Steven J. Sasson pointed a bread-loaf-sized contraption at a lab technician named Joy and pressed a button. Twenty-three seconds later, a coarse black-and-white image of her face appeared on a television screen β€” reconstructed from bits stored on an ordinary Memorex audio cassette. It was the first photograph ever taken by a fully self-contained digital camera.

Two years later, Sasson and his supervisor Gareth A. Lloyd filed US Patent 4,131,919 β€” "Electronic Still Camera" β€” on May 20, 1977. It was granted December 26, 1978, and assigned to Eastman Kodak.

What the patent describes: a self-contained device that captures a scene with a solid-state image sensor, digitizes the analog voltages the sensor produces, stores those digital values on a removable magnetic medium, and later reads them back for display on a standard television. Every conceptual block of a modern digital camera is there:

  • Sensor: a Fairchild CCD201 charge-coupled device β€” 100Γ—100 pixels, about 0.01 megapixels.
  • Analog front-end: circuitry to read out the CCD row-by-row and feed an ADC.
  • Digitizer: a 4-bit A/D converter producing 16 gray levels.
  • Storage: a standard Philips cassette tape, holding roughly 30 images per side.
  • Playback path: a companion unit read the cassette, buffered the data in RAM, and painted the picture onto a TV via NTSC.

The prototype weighed 8 pounds, drew power from 16 nickel-cadmium batteries, and used repurposed parts from a Super-8 movie camera. Sasson demonstrated it to Kodak executives in 1976. Their reaction, as he later recounted in interviews with the New York Times, was polite but chilly: "That's cute β€” but don't tell anyone about it." Kodak sold film. A camera that needed no film was, by their reckoning, a threat to be contained rather than a business to be built.

So the patent sat. Kodak filed it, then hid it. The company would eventually license the technology to competitors, earning billions in royalties through the 1990s and 2000s β€” but never committed to making the digital-camera business its own. By the time Kodak filed for bankruptcy in 2012, the imaging pipeline Sasson had sketched in 1975 was inside literally every smartphone on Earth.

The modern connection. Read patent 4,131,919 today and the block diagram is uncanny. Substitute a CMOS sensor for the CCD, an ARM SoC for the discrete logic, NAND flash for the cassette, and Bluetooth for the TV cable β€” and you have an iPhone camera pipeline. The architecture was correct in 1977. What changed was Moore's Law: the 0.01 MP sensor became 48 MP, the 23-second capture became 1/8000 sec, and the 8-pound box shrunk into a fingernail-sized module. Meta's smart glasses, Tesla's Autopilot cameras, the JWST's near-infrared sensor β€” all of them execute Sasson's five-block pipeline.

The patent's other lesson is corporate: Kodak owned the future and chose not to enter it. The Innovator's Dilemma has few case studies as clean as an 8-pound Memorex-tape camera being politely locked in a drawer by the world's largest film company.

Key Takeaway: Kodak's own engineer patented the digital camera in 1977 β€” and the company's decision to protect film instead of embracing pixels became the textbook example of an incumbent inventing, then burying, its own successor.

Daily GitHub Zero Stars

Slowlor1ss/INREngine

2026-08-24

INREngine is a custom C++ framework for working with Implicit Neural Representations (INRs) β€” a fascinating corner of machine learning where neural networks themselves become the data structure. Instead of storing an image as a grid of pixels or a 3D model as a mesh of vertices, an INR encodes the signal as a small neural network that maps coordinates to values: give it an (x, y) and it returns the color at that point.

What makes this repo stand out from the crowd of Python-based ML experiments is the choice of C++. Most INR research lives in PyTorch or JAX because they make gradient-based training trivial. Building the same primitives in C++ is a genuinely harder undertaking β€” you're likely rolling your own autodiff, matrix ops, and training loops. That constraint is exactly what makes it interesting: it forces the author to understand the mechanics that Python frameworks hide.

Potential use cases for INRs include:

  • Neural compression β€” representing images, video, or audio as tiny weight files
  • 3D scene representation (NeRF-style rendering)
  • Signal super-resolution since coordinate-based networks are resolution-independent
  • Embedded or real-time inference where a C++ runtime beats Python by an order of magnitude

This repo would appeal to graphics programmers curious about neural rendering, game engine developers exploring learned assets, or systems-minded ML engineers who want to see how the neural network sausage gets made below the PyTorch abstraction layer. It also looks like a strong learning artifact β€” the kind of solo project that demonstrates real depth in an interview.

With zero stars and no README fanfare yet, it's early enough to watch the author iterate. If you're into low-level ML infrastructure or novel rendering techniques, this is worth a follow.

Why check it out: A ground-up C++ implementation of implicit neural representations β€” rare and educational in a field dominated by Python.

Daily Hardware Architecture

Intel CAT (Cache Allocation Technology): How CPUs Let You Partition L3 Between Workloads

2026-08-24

The shared last-level cache (LLC) is a tragedy of the commons. One noisy neighbor streaming through 40MB of data can evict every hot line a latency-sensitive process depends on. Cache Allocation Technology (CAT), introduced in Xeon Broadwell and standard on modern server chips, is Intel's hardware answer: partition the LLC into ways and assign each workload a subset.

The mechanism is a bitmask per class of service (CLOS). A typical Xeon exposes 16 CLOS IDs and an LLC with 11–20 ways. Each CLOS gets a capacity bitmask (CBM) β€” one bit per way. If CLOS 1's mask is 0x0FF and CLOS 2's mask is 0xF00, cache fills from CLOS 1 can only land in the low 8 ways and CLOS 2 in the high 4. Reads still hit anywhere (isolation is on allocation, not lookup), so cold sharing works, but a streaming workload can't trample your hot data.

You program it via MSRs. IA32_L3_MASK_n (0xC90 + n) sets each CLOS's bitmask; IA32_PQR_ASSOC (0xC8F) tags the current logical core with a CLOS. Linux exposes this via resctrl β€” mount /sys/fs/resctrl, mkdir a group, write a schemata like L3:0=0ff;1=f00, and echo PIDs into tasks.

Real-world example: A trading firm colocates a market-data feed handler (latency-critical) with a risk-analytics batch job (bandwidth-hungry) on the same socket. Without CAT, the analytics job's 200GB scan flushes the feed handler's order book from L3, and tail latency spikes from 800ns to 12Β΅s on every batch iteration. With CAT giving the feed handler exclusive access to 6 of 20 ways, its working set stays resident and tail latency drops back to ~1Β΅s β€” with the batch job losing only ~8% throughput because its working set was larger than the whole cache anyway.

Rule of thumb: if your latency-critical workload's hot data is W KB and your LLC is C KB with N ways, allocate at least ceil(W / (C/N)) + 1 ways to it. The +1 absorbs conflict misses within the partition. Going wider wastes silicon; going narrower means eviction churn even without noisy neighbors.

Caveats: CAT only controls the LLC, not L1/L2 or memory bandwidth (that's MBA, a separate feature). Two CLOSes sharing a way still evict each other in that way. And prefetchers respect CAT masks β€” aggressive prefetch on a narrow partition just makes the trampling internal.

Key Takeaway: CAT turns the shared LLC from a free-for-all into a way-granular resource you can partition per workload, trading a few percent of aggregate throughput for order-of-magnitude better tail latency on noisy servers.

Hacker News Deep Cuts

How Complex Systems Fail

2026-08-24

This is Richard Cook's classic 18-point treatise on how complex systems fail β€” a short document that has quietly influenced two decades of thinking in SRE, aviation safety, healthcare, and incident response. If you've ever read a Google SRE book, an Etsy post-mortem, or anything John Allspaw has written on resilience engineering, you've absorbed ideas that trace back here. It deserves a permanent bookmark from anyone who operates production systems.

The premise is deceptively simple. Cook, an anesthesiologist and safety researcher, argues that in any sufficiently complex system:

  • Catastrophe requires multiple failures β€” single-point failures are almost always caught. Real outages need a coincidence of small, latent problems aligning at once.
  • Complex systems run in degraded mode β€” they always contain latent faults. The system works not because it is safe, but because operators continuously compensate for the flaws.
  • Post-accident attribution to "root cause" is fundamentally wrong β€” there is no single cause. The search for one is a social and legal construct, not a technical one.
  • Hindsight bias distorts post-incident review β€” knowing the outcome makes operator decisions look worse than they were at the time.
  • Safety is a characteristic of systems, not of their components β€” you cannot audit your way to a safe system by inspecting parts in isolation.

What makes this document particularly valuable for a technical audience today: the language of "root cause analysis" is still ubiquitous in incident tooling, PagerDuty templates, and engineering culture, yet Cook explains precisely why that framing produces worse outcomes than a systems view. Teams that internalize this shift from asking "who broke it?" to "what pressures made this failure mode inevitable?" β€” and end up with post-mortems that actually change organizational behavior instead of assigning blame.

The whole thing is roughly 4 pages. You can read it in ten minutes. It will change how you write incident reports for the rest of your career. It's been cited in academic literature, referenced in Nicole Forsgren's DORA research, and quoted at practically every SRECon β€” yet it consistently gets rediscovered because there is no better distilled statement of the ideas.

The fact that this landed on HN with a single upvote is the sort of thing that makes you question the whole ranking algorithm.

Why it deserves more upvotes: Cook's 18 points are the foundational text for modern incident response and resilience engineering β€” required reading for anyone who ships production systems.

HN Jobs Teardown

Skydio: What Their Hiring Reveals

2026-08-24

Source: HN Who is Hiring

Posted by: FlyingRobotJobs

Of the ten postings in this thread, Skydio's is the most strategically revealing β€” not because of what it says, but because of the careful sequence in which it says it.

The pitch order tells the story. Skydio leads with "consumer, enterprise, and government markets at unprecedented scale." That word order is deliberate. A consumer drone company circa 2020 that mentions government in its opening sentence is telegraphing where the revenue is actually going. DJI, the Chinese incumbent, was in the middle of being blacklisted by the U.S. Department of Defense and Department of the Interior. Skydio is positioning itself as the American alternative β€” and the $50M+ Series C mentioned in the next breath is almost certainly underwritten by that thesis.

The credentialing is unusually heavy. In two sentences we get: MIT grad students, Google X Project Wing, product leaders from Apple and Tesla. This is a posting written for investors and journalists as much as engineers. When a company front-loads pedigree that hard, it usually means the product is technically ambitious enough that "trust us, we can build it" is a load-bearing claim.

What's conspicuously missing:

  • No tech stack. Zero mention of languages, frameworks, or infrastructure. For a company doing on-device autonomy this implies C++, CUDA, ROS, and embedded Linux β€” but they don't say so, which suggests they're recruiting across such a wide surface (perception, SLAM, controls, mobile apps, cloud fleet management, firmware) that naming a stack would under-sell the range.
  • No specific roles. The post is truncated at "Open positions: ap" but the framing is company-first, role-second. Classic scale-up hiring β€” they want everyone.
  • No salary band. Contrast with Alpha's transparent $120–180k in the same thread.

Green flags: Named funding round with a real number, marquee investors implied, a shipping product (Skydio 2) with an IEEE Spectrum review to back the tech claims. This isn't vaporware.

Red flags: "Onsite (post-quarantine)" in a thread where half the postings are going remote β€” Skydio is betting that hardware/robotics culture requires physical colocation, which is defensible but limits the talent pool. The heavy founder-credential emphasis can also mask thin middle-management, a common Series C failure mode.

The trend it highlights: Autonomy is moving from research labs to productized fleets, and geopolitics is quietly reshaping which companies get to sell to governments. Skydio is threading both needles simultaneously.

The signal: When a robotics company leads with "government markets" and a $50M Series C in the same sentence, they're not selling drones β€” they're selling a domestic alternative to DJI.

Daily Low-Level Programming

System Management Mode (SMM) and the SMI: The Ring -2 Code Your OS Can't See

2026-08-24

You know Ring 0 (kernel) and Ring 3 (user). But x86 has a hidden mode more privileged than the kernel itself: System Management Mode, often called "Ring -2." It's invoked by a System Management Interrupt (SMI), and while it runs, your OS is frozen β€” every core stops, control transfers to firmware code stashed in a locked memory region called SMRAM, and the kernel has no way to observe it happened except by noticing time moved forward.

SMM was added in the 386SL for power management. Today it's used by firmware for: thermal throttling responses, ECC error handling, TPM interactions, USB legacy keyboard emulation (yes, this is why some servers get SMIs on every keystroke), fan control on cheap boards, and β€” infamously β€” vendor RAS features and undocumented telemetry.

The mechanics: SMIs are triggered by a dedicated pin (SMI#), by writes to specific chipset registers, or by ACPI events. On SMI, the CPU saves its entire architectural state into SMRAM (at SMBASE + 0xFE00), switches to a special 16-bit-ish mode with flat 32-bit addressing, and jumps to SMBASE + 0x8000. The handler runs, executes RSM (Resume from SMM), and state is restored. SMRAM is protected by the chipset β€” even Ring 0 cannot read it once the D_LCK bit is set at boot.

Why you care as a low-latency engineer: SMIs cause invisible latency spikes. A 500 ΞΌs SMI in the middle of your 100 ΞΌs critical section is undebugabble with normal tools β€” perf can't see it, ftrace can't see it, but your p99.99 latency will suddenly show it.

How to detect them: On Intel, MSR 0x34 (MSR_SMI_COUNT) increments on every SMI. Read it before and after your workload:

  • rdmsr -p 0 0x34 (from the msr-tools package)
  • Or use turbostat --show SMI which prints SMI counts per core per interval.

Real-world example: HFT and telecom engineers routinely disable USB legacy support in BIOS specifically because the USB emulation SMI handler polls every ~1 ms and takes 20–100 ΞΌs each. On a "quiet" tuned system with nohz_full and pinned threads, that USB SMI becomes the single largest source of jitter. Facebook's engineers publicly complained about this in 2018; Intel's own tuning guide for low-latency workloads lists "disable USB legacy, disable processor C-states in BIOS, disable Turbo, and audit MSR 0x34" as step one.

Rule of thumb: If MSR_SMI_COUNT increases by more than ~1 per second per core on an idle machine, your firmware is chatty and no amount of kernel tuning will get you below a few hundred microseconds of jitter. Fix the BIOS first.

Key Takeaway: SMM runs firmware code more privileged than your kernel, is completely invisible to Linux tracing, and MSR 0x34 is the only reliable way to know it's stealing your CPU cycles.

RFC Deep Dive

RFC 3875: The Common Gateway Interface (CGI) Version 1.1

2026-08-24

RFC: RFC 3875

Published: 2004

Authors: D. Robinson, K. Coar

CGI is one of those technologies that quietly shaped the modern web and then got politely shoved into the attic. RFC 3875 is not the invention of CGI β€” NCSA's HTTPd team, led by Rob McCool, had already sketched it out in 1993. What RFC 3875 does is finally standardize, a full decade later, the de facto contract that thousands of scripts and web servers had already been speaking. It is a rare RFC that documents an accomplished fact rather than proposing a design.

The problem. Early HTTP servers only served static files. To make the web dynamic, someone needed to answer: how does an HTTP server invoke an arbitrary external program, hand it a request, and pipe the program's output back to the client? The answer had to work in any language β€” Perl, C, shell, Tcl β€” without linking against the server. CGI's solution is almost aggressively simple: fork a process, put the request in environment variables and stdin, read the response from stdout.

The design decisions. Section 4 defines the meta-variables β€” the environment variables every CGI script can rely on:

  • REQUEST_METHOD, QUERY_STRING, CONTENT_TYPE, CONTENT_LENGTH
  • PATH_INFO and PATH_TRANSLATED β€” the trick that let URLs like /cgi-bin/wiki.pl/FrontPage pass /FrontPage as a script argument, effectively inventing pretty URLs before anyone called them that
  • SERVER_NAME, SERVER_PROTOCOL, REMOTE_ADDR, REMOTE_USER
  • HTTP_* β€” any request header, uppercased with dashes converted to underscores. This convention outlived CGI itself; it's still how Rack, WSGI, and countless middleware pass headers around.

Request bodies arrive on stdin. The script writes back a small header block (at minimum Content-Type or a Status: line or a Location: redirect), a blank line, then the body. The server splices this into a proper HTTP response. No sockets, no HTTP parsing in the script, no library dependency. You could write a working CGI program in six lines of shell.

Why it mattered. CGI is what turned the web from a document delivery system into an application platform. Every guestbook, every form-mail script, every early PHP page, every 1990s search engine ran through this interface. Perl's dominance in the late 90s is inseparable from CGI: it was the language that let a sysadmin bolt dynamic behavior onto Apache in an afternoon.

Why it died β€” and didn't. The fork-per-request model is brutal under load. Spinning up a Perl interpreter for every hit made CGI a punchline by 2000. The replacements β€” mod_perl, FastCGI, WSGI, Rack, PSGI, Servlets, PHP's SAPI, and eventually Node and Go serving HTTP directly β€” all inherited CGI's vocabulary even as they abandoned its process model. Open any WSGI environ dict in Python today and you'll find REQUEST_METHOD, PATH_INFO, HTTP_HOST. Nginx's fastcgi_params file is a direct translation of Section 4. AWS Lambda's API Gateway event, if you squint, is a JSON re-encoding of the same idea.

The quirky history. RFC 3875 is classified as Informational, not a Standard. By 2004 CGI was already legacy, and the IETF wasn't going to bless it as the future. Ken Coar spent years chasing down every ambiguity the original NCSA spec had left β€” how exactly do you percent-decode PATH_INFO? What happens with NPH (non-parsed-header) scripts? β€” and produced a document that is essentially archaeological. It's the RFC as historical marker: this is what we all actually did, written down at last so the next generation can understand why their web framework's request object looks the way it does.

Why it matters: CGI's process model is dead, but its request vocabulary β€” REQUEST_METHOD, PATH_INFO, HTTP_* headers β€” is the ancestral DNA of every modern web framework's request object.

Stack Overflow Unanswered

In Vivado, what is "[Synth 8-7213] Expression condition using operand 'x' does not match with the corresponding edges used in event control" error?

2026-08-24

Stack Overflow: View Question

Tags: verilog, system-verilog, vivado, synthesis

Score: 2 | Views: 262

The asker wrote an asynchronous-reset flip-flop in what looks like textbook Verilog:

always @(posedge clk or negedge rst_n)
  if (rst_n)      LED <= {LED[0], LED[3:1]};
  else            LED <= 4'b0000;

Vivado's synthesizer rejects it with [Synth 8-7213]. The message is cryptic β€” "operand 'x' does not match with the corresponding edges used in event control" β€” but the bug is a subtle semantic one, not a typo.

Why this is interesting. Simulators cheerfully accept this code and will even produce plausible-looking waves, which is why beginners get bitten. The problem is that the sensitivity list declares negedge rst_n β€” meaning "wake up when rst_n falls" β€” but the if branch treats rst_n high as the reset condition. The polarity is inverted. Synthesis tools infer flip-flop primitives from the pattern of the always block, and every FDCE/FDPE/FDRE cell in the FPGA library has a fixed relationship between the async control edge and the reset value. When your RTL says "trigger reset on the falling edge but only while the signal is high," there is no cell that implements that; the tool refuses to guess.

The fix is to make the edge and the level agree:

always @(posedge clk or negedge rst_n)
  if (!rst_n) LED <= 4'b0000;              // reset branch first, level matches negedge
  else        LED <= {LED[0], LED[3:1]};

Rules of thumb that fall out of this:

  • The reset branch must always be the first if in the block, with no else if between it and the clocked logic.
  • The polarity of the reset test must match the edge: negedge rst_n pairs with if (!rst_n); posedge rst pairs with if (rst).
  • Only the clock and the asynchronous reset (or set) may appear in the sensitivity list β€” nothing else.

Gotchas. Simulation-vs-synthesis divergence is the real danger here: the buggy code simulates as a latch-like structure that resets when rst_n rises, which is completely different from the FPGA netlist the tool would have to build. Also worth noting β€” some tools emit a warning for this and infer something anyway, so the fact that Vivado hard-errors is actually protective. Xilinx's UG901 spells out the exact inference templates; deviating from them tends to punish you at synthesis time, not at simulation time.

The challenge: Verilog's sensitivity-list syntax lets you express reset patterns that no real flip-flop can implement, and synthesizers must reject them even though simulators run them happily.

Daily Software Engineering

The Reconciliation Loop with Rate Limiting: Why Your Controller Needs a Throttle

2026-08-24

A reconciliation loop watches desired state and drives actual state toward it. Add backoff and jitter and you handle failure retries gracefully. But there's a subtler problem: successful reconciliations can still overwhelm downstream systems when events fire faster than the API can absorb them.

Consider a Kubernetes controller managing 5,000 Pods. A ConfigMap change triggers a reconcile for every Pod that references it. Each reconcile issues an API call to update the Pod's annotation. Without rate limiting, your controller floods the API server with 5,000 requests in under a second β€” the API server throttles you, some requests fail, your controller retries them, and now you're in a feedback loop where the retry storm prevents recovery.

Rate limiting inside the reconciler solves this by decoupling event arrival rate from work processing rate. Controller-runtime uses a workqueue with two layers:

  • Per-item rate limiter: if item X is reconciled and requeued, delay its next processing (exponential backoff based on failure count)
  • Bucket rate limiter: token bucket capping overall queue drain rate (e.g., 10 QPS with burst 100)

The default in controller-runtime is a max-of rate limiter: for each item, take the larger of the item-specific backoff and the global bucket delay. This means a healthy item never waits on the global bucket unless total throughput exceeds capacity, but a failing item gets its own escalating penalty.

Sizing rule of thumb: set your bucket QPS to roughly 10-20% of the downstream API's rate limit, leaving headroom for other controllers, kubectl users, and admission webhooks. If the kube-apiserver allows 400 QPS per client, cap your controller at 40-80 QPS. Set burst to 5-10x QPS to handle legitimate spikes without smoothing away all reactivity.

The trap: too-aggressive rate limiting creates its own outage. If you cap at 5 QPS and a legitimate config change requires reconciling 5,000 resources, that's 1,000 seconds β€” over 16 minutes β€” before the last Pod converges. Users see stale state, alerts fire, someone restarts the controller thinking it's stuck. Rate limiting must be tuned to the ratio of steady-state churn to burst churn, not just the peak.

Also watch for priority inversion: a burst of low-priority reconciles (e.g., a label sync) can starve high-priority ones (e.g., a Pod deletion) if they share the same queue. Split queues by priority class when the workload is heterogeneous.

Key Takeaway: Rate limiting inside a reconciliation loop protects downstream systems from event-triggered stampedes, but must be sized to actual burst patterns β€” too tight and convergence lags long enough to look like an outage.

Tool Nobody Knows

lsfd: The util-linux Replacement for lsof That Actually Understands Modern Linux

2026-08-24

lsof turns 40 next year, and its parser is 40 years old too β€” it walks /proc, guesses at socket state, calls anything it hasn't been taught "unknown," and its filter grammar is nine mutually incompatible flags glued together with -a. lsfd shipped in util-linux 2.38 (July 2022) as the ground-up rewrite. If you've upgraded a distro in the last two years, it's already on your system.

Why bother switching? lsfd asks the kernel through modern interfaces β€” fdinfo, sock_diag, nsfs β€” so it sees what lsof invents or ignores: io_uring rings, eventpoll wakeup sources, bpf-map fds, pidfds, memfds, sockets scoped to specific namespaces. It also has a real filter language instead of "hope -a means AND this time."

The equivalent of lsof -i :443, but expressed as a query the kernel can answer in one pass:

lsfd -Q '(FD >= 0) and SOCK.LISTENING and (SOCK.PROTONAME == "TCP")' \
     -o COMMAND,PID,FD,TCP.LADDR

Who has your log file open (the "what do I HUP after logrotate?" question)?

lsfd -Q 'NAME == "/var/log/nginx/access.log"'

The killer feature nobody knows: pipe endpoints. lsfd walks the kernel's pipe inode table and prints both ends resolved:

lsfd -Q 'TYPE == "FIFO"' -o PID,COMMAND,FD,ENDPOINTS

You get rows like 1234 firefox 3 [5678 ffmpeg 0w] β€” the actual process on the other side of the pipe. lsof hands you an inode and wishes you luck grepping for it.

io_uring and other things lsof can't parse. Every high-throughput daemon written since 2020 uses io_uring. lsof labels those fds "unknown." lsfd:

lsfd -Q 'FD.TYPE == "io_uring"' -o PID,COMMAND,FD

Same for eventpoll β€” see what an epoll set is actually watching, not just that it exists:

lsfd -Q 'FD.TYPE == "eventpoll"' -o PID,COMMAND,FD,EVENTPOLL.TFDS

Machine-readable output. -J emits real JSON with typed fields, not lsof's pseudo-columns. Pipe straight to jq:

lsfd -J -Q 'COMMAND == "postgres"' \
  | jq '.lsfd[] | select(.type=="REG") | .name'

Hunting fd leaks. Add --summary=only for a per-type histogram:

lsfd -p 4321 --summary=only

You'll get a table of REG / DIR / FIFO / SOCK / io_uring counts. Run it on a healthy pid and a sick one; the diff tells you what's leaking without reading a single line of C. If anon_inode:[eventfd] keeps climbing, you have your suspect.

Discovering fields. The filter language only helps if you know the columns. Run lsfd --list-columns β€” it prints every filterable field, its type, and a one-line description. You'll find gems like NS.NAME (which namespace inode?), MISCDEV, BPF-PROG.TYPE, and PIDFD.PID.

Counterexamples. lsfd -i :443 doesn't exist β€” you write the query. If a script depends on lsof's exact output format, keep lsof. Otherwise, the two-decade tradition of piping lsof through awk is now obsolete: one -Q and one -o does the filter and the projection in a single pass, from the kernel's actual view of the fd table rather than a 1988-vintage guess about it.

Key Takeaway: lsfd is what lsof would look like if you rewrote it in 2022 knowing about namespaces, io_uring, structured output, and how to write a real filter expression.

What If Engineering

What If We Built a Skyscraper-Sized Siphon to Drain a Reservoir Over a Mountain?

2026-08-24

Every schoolchild's aquarium hose is a siphon: fill the tube, put one end below the other, and gravity pulls water up and over the lip forever β€” no pump. So why not do it at planetary scale? Point one leg into Lake Shasta, drape the other over the Tehachapis, and let physics move California's water for free.

The atmospheric ceiling. Textbook siphons are powered by atmospheric pressure pushing liquid up the ascending leg. That pressure β€” 101 kPa at sea level β€” can only support a column of water:

h_max = P_atm / (ρ Β· g) = 101,325 / (1000 Β· 9.81) β‰ˆ 10.33 m

Above that, the pressure at the crest drops to the vapor pressure of water, the column cavitates, and the siphon breaks. So the "mountain" your tube can crest is a hilariously modest three-story hop.

The cohesion loophole. Since 2011, Ramette & Ramette and independently Boatwright showed degassed water siphoned in a smooth, sealed tube can go higher β€” because water's molecular cohesion (tensile strength of pure water β‰ˆ –25 MPa in theory, ~1.5 MPa achieved in glass capillaries) means the column can be pulled like a chain, not just pushed. Careful lab work reached ~15 m. Trees do it: xylem sap in a redwood ascends 115 m under negative pressures around –1.5 MPa. But trees cheat with 20 ΞΌm capillaries; scaling up to a meter-diameter aqueduct means the slightest nucleation site β€” a passing cosmic ray, a weld defect β€” triggers a cavitation avalanche.

Pressurize the whole system. The workable trick: seal both reservoirs and hold them at pressure P. Now the crest height above the source becomes:

h_max = P / (ρ · g)

To crest the Tehachapis (~600 m over the aqueduct's source), you need:

P = 1000 Β· 9.81 Β· 600 β‰ˆ 5.9 MPa (~59 bar, ~850 psi)

That's routine for oil pipelines. Both the intake pond and the discharge pond sit inside pressurized concrete domes filled with nitrogen at 60 bar. The 100 km, 4 m-diameter steel pipeline needs a wall thickness (thin-wall approximation, Οƒ_allow = 200 MPa):

t = PΒ·r / Οƒ = 5.9e6 Β· 2 / 2e8 β‰ˆ 59 mm

Call it 70 mm for safety. Steel mass: Ο€ Β· 4 Β· 0.07 Β· 100,000 Β· 7850 β‰ˆ 690,000 tonnes β€” one Golden Gate Bridge worth of steel per aqueduct.

Does it pay? California's Edmonston Pumping Plant lifts 120 mΒ³/s over 610 m, consuming ~8 TWh/year β€” roughly $800M in electricity, and the state's single largest power draw. A pressurized siphon replaces every joule of that pumping with a one-time investment in pressurization gas and pipe steel. Steady-state losses are just pipe friction; for a smooth 4 m pipe at 10 m/s, Darcy-Weisbach gives about 15 m of head loss per 100 km, meaning the source reservoir only needs to sit 15 m higher than the sink. If it doesn't, you're back to pumps β€” but only against friction, not against gravity.

What kills it. Not the physics β€” the failure modes. A pinhole leak drops system pressure; cavitation front races through the crest at the speed of sound in water (~1500 m/s); the entire column separates; hundreds of tonnes of vacuum-slammed water hammer the pipe with pressure spikes exceeding 100 bar (Joukowsky equation: Ξ”P = ρ·cΒ·Ξ”v). Your 690,000-tonne masterpiece bursts like a party balloon. This is why real long-distance water systems use redundant pumping stations at each pass: they fail gracefully. Siphons fail catastrophically.

Key Takeaway: A pressurized siphon could hoist California's water over a 600-meter mountain for free β€” until the first pinhole cavitates the whole 100-kilometer column into a water-hammer bomb.

Wikipedia Rabbit Hole

Analytical engine

2026-08-24

In 1837, a hundred years before Alan Turing formalized what computation even meant, an irritable English mathematician named Charles Babbage designed a machine that could have done it all. Not just arithmetic β€” anything computable. The Analytical Engine was a fully general-purpose computer, Turing-complete in principle, powered by a steam engine and constructed from brass gears, cams, and punched cards. It was never built.

The design is startling in how modern it feels. Babbage separated the machine into a "mill" (the CPU β€” where arithmetic happens) and a "store" (the memory β€” holding up to 1,000 numbers of 40 decimal digits each, roughly 16.7 KB). Programs were fed in on punched cards borrowed conceptually from the Jacquard loom, the automated weaving machine that had been dazzling Europe since 1804. Babbage understood something profound: if a loom could be told to weave arbitrary patterns via holes in cardboard, a calculator could be told to compute arbitrary functions the same way.

The engine had features that wouldn't reappear in real machines until the 1940s:

  • Conditional branching β€” the machine could test a value and jump to different instructions based on the result
  • Loops β€” cards could be advanced backward as well as forward
  • Microcode β€” complex operations were built from simpler internal steps controlled by rotating drums with pegs, exactly like the microcode in a modern CPU
  • A printer and a plotter for output, plus a bell to alert the operator

Enter Ada Lovelace, daughter of Lord Byron and one of the few people who genuinely understood what Babbage had invented. In 1843 she translated an Italian article about the Engine and added notes three times longer than the original. Note G contained an algorithm for computing Bernoulli numbers β€” widely considered the first published computer program. More importantly, Lovelace grasped that the machine wasn't just for numbers: symbols could represent anything β€” musical notes, letters, logical propositions. She essentially predicted software, and computer-generated music, in a footnote.

So why didn't it work? Partly Babbage himself β€” he kept redesigning, feuding with his engineer Joseph Clement, and lobbying the British government for funds while producing no finished hardware. Partly the sheer scale: full construction would have required tens of thousands of precision-machined parts and a device the size of a locomotive. Victorian machining could produce the tolerances, but only at ruinous cost. Babbage died in 1871 with the Engine still on paper.

Here's the twist that still haunts computer historians: in 1991, the Science Museum in London built Babbage's earlier Difference Engine No. 2 from his original 1849 drawings, using only manufacturing tolerances available in the 1800s. It worked perfectly. Which strongly suggests the Analytical Engine would have worked too β€” meaning the world could plausibly have had programmable computers by 1850, a full century before ENIAC. The Information Age might have arrived alongside the telegraph.

Down the rabbit hole: A steam-powered, brass-geared computer with conditional branching, loops, and microcode was fully designed in 1837 β€” and we know it would have worked.

Daily YT Documentary

Why Elephant Seals Dive Deeper Than Most Submarines

2026-08-24

Why Elephant Seals Dive Deeper Than Most Submarines

Channel: Deep Sea Chronicles (89 subscribers)

Most military submarines are engineered to operate at depths of a few hundred meters β€” beyond that, the crushing pressure threatens hull integrity. Yet a 2,000 kg elephant seal, breathing air like we do, routinely plunges past 1,500 meters on a single breath and comes back up perfectly fine. This video digs into the biological engineering that makes that possible.

Expect explanations of the physiological adaptations that let these animals survive what would kill a human in seconds: collapsible lungs that intentionally deflate to prevent nitrogen narcosis and decompression sickness, oxygen-storing myoglobin concentrations in muscle tissue that dwarf anything found in land mammals, and a bradycardic dive reflex that slows the heart to a handful of beats per minute to conserve oxygen. The pressure at 1,500m is roughly 150 atmospheres β€” enough to compress soft tissue dramatically β€” so the seal's body architecture has to reroute blood flow, shut down non-essential organs, and tolerate lung collapse without damage.

It's a compact case study in how evolution solves engineering problems that human technology still struggles with. Deep Sea Chronicles is tiny (89 subs) but the topic is a genuinely fascinating intersection of marine biology and physics β€” the kind of "how is this even possible" content that rewards a few minutes of attention.

Why watch: A clear look at the biological adaptations that let a mammal outperform billion-dollar submarines on a single lungful of air.

Daily YT Electronics

Simple Transformerless Power Supply! πŸ’‘βš‘ #Shorts #Electronics #Tech

2026-08-24

Simple Transformerless Power Supply! πŸ’‘βš‘ #Shorts #Electronics #Tech

Channel: Nexus Electronics LAB (34 subscribers)

Note: this pick is the least-bad option from a weak batch. Most candidates were PC unboxings, hashtag-spam shorts, or a "0 subscribers" microgrid promo. This one is also tagged #Shorts, but the description suggests it actually explains a real circuit topology worth knowing about.

A capacitive transformerless power supply is a classic space-saving trick used inside cheap LED bulbs, smart plugs, and small appliances where a bulky mains transformer would blow the bill of materials. Instead of stepping down 220V AC with iron and copper, an X-rated capacitor acts as a reactive current limiter, dropping most of the voltage as reactance rather than heat. A bridge rectifier, bleeder resistor, and Zener clamp then produce a low-voltage DC rail suitable for driving a COB LED.

It's genuinely useful to understand β€” both because you'll find this topology in almost every teardown of a sub-$5 mains device, and because it's dangerously non-isolated. The DC output sits at mains potential, so anyone probing one of these on the bench needs to know why they must never touch the "low voltage" side while it's plugged in. Watching a build walkthrough helps demystify why the capacitor value sets the current, why the bleeder resistor matters for safety after unplugging, and where the Zener fits in.

Why watch: A quick primer on the capacitor-dropper circuit found inside almost every cheap mains-powered LED device β€” and why it's clever but dangerous.

Daily YT Engineering

This Structure Shouldn't Be Able to Stand. Here's the Physics That Makes It Work.

2026-08-24

This Structure Shouldn't Be Able to Stand. Here's the Physics That Makes It Work.

Channel: The Morph Haven (147 subscribers)

Most of today's candidates were hashtag-laden Shorts or generic "how engineers build on soft soil" clips with no real content. This one from The Morph Haven β€” a channel with just 147 subscribers β€” actually promises to explain something rather than gesture at it.

The subject is a cantilever: two hundred feet of steel projecting past the edge of a rock spire with nothing visible holding it up from below. That kind of geometry looks impossible because our intuition expects vertical support beneath a load. The physics that makes it work involves moment equilibrium β€” the counterweight and anchor system on the back span generates a reactive moment that balances the tipping force from the extended arm β€” plus the internal bending and shear stresses the steel section has to carry along its entire length.

A good explainer here would walk through the free-body diagram, show why the anchor bolts on the back side are in tension while the pivot point is in compression, and probably touch on why the section depth of the beam has to grow toward the anchored end where bending moments peak. For a small channel making a first attempt at structural intuition content, this is exactly the kind of thing worth encouraging.

Why watch: A genuine attempt to explain cantilever moment equilibrium using a dramatic real-world example, from a tiny channel that deserves a look.

Daily YT Maker

Innovative Robot in 2026 | Low Budget ESP32 S3 Project

2026-08-24

Innovative Robot in 2026 | Low Budget ESP32 S3 Project

Channel: Maradi Innovations (70 subscribers)

Autonomous robots are a great gateway project for anyone learning embedded systems, because they force you to combine sensors, motor control, power management, and decision logic into one working system. This build from a tiny channel tackles all of that on a shoestring budget using the ESP32-S3 β€” a capable dual-core microcontroller with built-in Wi-Fi that's become the go-to chip for hobbyist robotics thanks to its low cost and ample I/O.

The robot uses N20 gear motors (compact, cheap, and surprisingly torquey for their size) paired with the ESP32-S3 to search for objects and make navigation decisions on its own. That last part is what elevates this above the usual "line follower" tutorial β€” writing behavior code that lets a robot decide where to go based on sensor input is a meaningful step up from reactive control loops.

For makers looking to build something similar, this kind of build teaches transferable skills: PWM motor control, sensor fusion, state machines for behavior, and battery-powered design constraints. The "low budget" angle is also genuinely useful β€” a lot of robotics content assumes access to expensive lidar or depth cameras, while this shows what's achievable with parts totaling maybe $20-30.

Worth a look especially if you've built blink-an-LED projects and want to graduate to something with moving parts and autonomy.

Why watch: A budget-friendly autonomous robot build that combines ESP32-S3 programming, motor control, and decision logic β€” a great next step beyond beginner Arduino projects.

Daily YT Welding

Edge Taper #forging #forgedfromiron #blacksmithing #blacksmith #diy #maker #metalwork

2026-08-24

Edge Taper #forging #forgedfromiron #blacksmithing #blacksmith #diy #maker #metalwork

Channel: RaesSmithy (1250 subscribers)

Caveat: today's batch is heavy on shorts and hashtag-spam titles, which are usually low-signal. This one is still a short, but it focuses on a single, learnable technique rather than being a generic "watch metal get hit" clip, so it edges out the rest.

The edge taper is one of the foundational moves in blade forging β€” it's how you transition a rectangular bar of steel into something that resembles a knife, drawing the metal out on one side to establish the cutting edge before any grinding happens. Getting it right at the forge saves enormous amounts of stock removal later and keeps the grain structure flowing along the edge, which matters for the final blade's strength and edge retention.

What's worth paying attention to in a clip like this: the hammer angle (typically tilted so blows fall on the edge side, not the spine), the anvil position (working over the far edge or horn to concentrate force), and how the smith rotates and re-heats the piece to keep the taper even along its length. RaesSmithy is a small, working smithy account, so the technique on display is practitioner-grade rather than staged.

Short format limits how much can be explained verbally, but for a viewer already learning to forge, watching the hammer control frame-by-frame is genuinely useful reference material.

Why watch: A focused look at edge tapering β€” the foundational forge move that shapes a bar of steel into a blade blank before any grinding begins.