Daily Digest — 2026-06-09

26 newsletters today.

In this digest


Abandoned Futures

The Short SC.1: The World's First Successful Jet VTOL That Flew in 1957 and Got Lost in the Harrier's Shadow

2026-06-09

On April 2, 1957, at Boscombe Down in Wiltshire, a stubby little delta-winged jet lifted vertically off the tarmac, hovered, translated forward, and landed conventionally. The pilot was Tom Brooke-Smith. The aircraft was the Short SC.1, built by Short Brothers of Belfast under Ministry of Supply contract 6/Acft/11486 issued in 1953. It was the first fixed-wing aircraft in the world to make a complete jet-powered vertical-to-horizontal transition. It predated the Hawker P.1127 (Harrier ancestor) by three years. And almost no one remembers it.

The SC.1 was an experimental answer to a problem nobody else had solved: how do you lift a jet aircraft straight up without a tilting wing, a tail-sitter, or ducted fans? Short's answer, designed by Denis Tayler, was elegant and brutal — five Rolls-Royce RB.108 turbojets. Four were mounted vertically in a central bay, gimballed ±35° fore-and-aft and ±15° laterally to vector thrust during transition. The fifth provided forward propulsion. Total vertical thrust: 9,000 lb. Empty weight: 6,000 lb.

Crucially, the SC.1 had something the Harrier never got: a triple-redundant fly-by-wire flight control system — the first in any aircraft, anywhere. Built by Elliott Brothers, it autostabilized the hover by bleeding compressor air to reaction control nozzles at the wingtips, nose, and tail. Two SC.1s were built: XG900 and XG905. XG905 made the first untethered hover on October 25, 1958, and the first full transition on April 6, 1960.

Why did it die? Three reasons:

  • The lift-engine concept lost. Hawker's Bristol Pegasus vectored-thrust engine — one engine doing both jobs — was lighter and simpler than carrying four dead-weight lift jets in cruise. When the P.1127 flew in 1960, the writing was on the wall.
  • The 1962 crash. XG905 rolled inverted and crashed during a hover demonstration when the flight control system failed in a way the redundancy couldn't catch. Test pilot J.R. Green was killed. The program lost political momentum it never recovered.
  • The 1957 Defence White Paper. Duncan Sandys had already declared manned combat aircraft obsolete. Experimental V/STOL programs became hard to defend.

XG900 flew until 1971 and now sits in the Science Museum. The lift-jet concept was buried.

Here's why it deserves a second look in 2026: the lift-jet idea was killed by 1960s turbojet weight, not by physics. Modern electric ducted fans running on 700 Wh/kg solid-state batteries change the math entirely. The dead-weight problem vanishes when your lift fans weigh a fraction of an RB.108 and can be feathered or even folded in cruise. Joby, Archer, and Lilium are all rediscovering — at enormous cost — what Short proved in 1958: distributed vertical lift with reaction-control stabilization works. The SC.1's gimballed-thrust transition, its fly-by-wire architecture, and its reaction-nozzle hover stabilization are literally the eVTOL playbook. Lilium's seven-fan-per-wing layout is a direct philosophical descendant.

And the fly-by-wire pedigree alone deserves a monument. Every Airbus, every F-16, every drone you've ever seen traces back to a Belfast-built delta jet that flew in 1957.

Key Takeaway: The Short SC.1 solved jet VTOL transition and invented fly-by-wire in the same airframe — its lift-jet concept was killed by 1960s engine weight, but modern electric propulsion has resurrected exactly the architecture it pioneered.

ArXiv Paper Digest

Code Is More Than Text: Uncertainty Estimation for Code Generation

2026-06-09

Authors: Yuling Shi, Caiqi Zhang, Yuexian Li, Haopeng Wang

ArXiv: 2606.09577v1

PDF: Download PDF

When a large language model writes you a paragraph and gets one word slightly wrong, the paragraph is usually still fine. When an LLM writes you a Python function and gets one token wrong — a misplaced bracket, a flipped comparison, an off-by-one — the whole program can silently break or, worse, return a plausible-looking answer that's subtly incorrect. This is the problem the authors zero in on.

The field has a tool called uncertainty estimation (UE): ways of asking a model "how confident are you, really?" so a human or downstream system can decide whether to trust the output, ask a reviewer, or try again. The catch is that almost all existing UE techniques were designed for natural-language generation and were quietly carried over to code. The authors argue this is a category error, because code differs from prose in three important ways:

  • Fragility: a single wrong token can break the entire program, so averaging confidence across all tokens dilutes the signal from the few that actually matter.
  • Structure: code has rigid syntax (brackets, indentation, types). A model that's uncertain about a variable name is in very different trouble than one uncertain about a comparison operator.
  • Verifiability: unlike prose, code can be parsed, type-checked, and executed. There are cheap oracles available that NL generation simply doesn't have.

Rather than treating a generated program as a flat sequence of tokens, the paper proposes weighting uncertainty by where it appears in the code's structure — uncertainty inside a critical logical expression matters more than uncertainty in a comment or variable name. They also lean on what the code itself can tell you (does it parse? does it type-check?) to calibrate the confidence score, instead of relying purely on the model's internal probabilities.

The practical upshot is selective prediction: a system that knows when to hand off to a human reviewer, when to retry, and when to just ship the answer. In agentic coding workflows — where one bad function call cascades into broken downstream tool use — this kind of triage is the difference between an assistant that's helpful and one that's quietly burning time and trust.

Why it matters: As LLM-generated code increasingly runs in production pipelines and autonomous agents, knowing when not to trust the model is becoming as important as making the model better.

Daily Automotive Engines

Turbocharger Compressor Wheel Inducer and Exducer Diameters: The Two Numbers That Define Airflow

2026-06-09

When you read a turbo spec sheet, you'll see numbers like "GT3582R 61mm/82mm." Those two diameters — the inducer (inlet) and exducer (outlet) of the compressor wheel — define almost everything about how that turbo behaves. Understanding them separates people who buy turbos by horsepower claims from people who actually match a turbo to an engine.

The inducer diameter is measured at the leading edge of the compressor blades where air enters. This is the airflow capacity number — a bigger inducer swallows more air per revolution. The exducer diameter is measured at the trailing edge where air exits into the diffuser. This drives pressure ratio capability — a bigger exducer means more tip speed at a given RPM, which means more boost potential.

The ratio between them matters too. Trim is calculated as (inducer² / exducer²) × 100. A Garrett GT3582R has a 61.4mm inducer and 82mm exducer, giving a trim of roughly 56. Higher trim numbers (closer to 70+) mean a larger inducer relative to exducer — better for high-flow, low-boost applications. Lower trim (40s) means a smaller inducer relative to exducer — better for high-boost, smaller-displacement engines that need pressure more than volume.

Real-world example: The Subaru EJ257 in the STI comes with a VF48 turbo with about a 48mm inducer. Owners chasing 400+ wheel horsepower swap to a 67mm-inducer turbo like a GTX3076R. That extra 19mm of inducer diameter increases the swept area by roughly 96% — nearly doubling airflow capacity. But the engine now needs to actually produce enough exhaust energy to spin the bigger wheel, which is why these swaps need supporting mods (fueling, exhaust, tune).

Rule of thumb for sizing: Compressor inducer area scales roughly with target airflow. Each pound of fuel burned needs about 14.7 lbs of air, and each crank horsepower needs roughly 1.5 lb/min of air. So a 500hp target needs ~750 lb/min... wait, that's wrong — it's actually 0.1 lb/min per HP, so 500hp needs ~50 lb/min. A 61mm inducer flows about 55-60 lb/min at choke. That's why 60mm-class wheels dominate the 500-600hp street build market.

The exducer's tip speed is the limiter on the high end. Most modern billet wheels are good for around 540 m/s tip speed before structural failure. At an 82mm exducer, that's ~125,000 RPM. Push past it and you spin a wheel into shrapnel.

See it in action: Check out Turbine Housing A/R Ratios Explained! by KC TURBOS to see this theory applied.
Key Takeaway: Inducer diameter sets airflow capacity, exducer diameter sets pressure capability, and their ratio (trim) determines whether a turbo favors volume or boost — match these to your engine's airflow target, not to marketing horsepower claims.

Daily Debugging Puzzle

C's assert Side-Effect Trap: The Code That Vanishes in Release Builds

2026-06-09

This program drains a queue of five events, doubles each value, and totals the result. Compile it with gcc -O2 main.c and run it. Now compile with gcc -O2 -DNDEBUG main.c and run it again. Same source, same compiler, wildly different output — and in the release build, often garbage or a crash.

#include <assert.h>
#include <stdio.h>

int dequeue(int *queue, int *count) {
    if (*count == 0) return -1;
    int val = queue[0];
    for (int i = 1; i < *count; i++) queue[i-1] = queue[i];
    (*count)--;
    return val;
}

int process_event(int *queue, int *count) {
    int event;
    /* Pull next event; must be non-negative. */
    assert((event = dequeue(queue, count)) >= 0);
    return event * 2;
}

int main(void) {
    int queue[] = {10, 20, 30, 40, 50};
    int count = 5, total = 0;
    for (int i = 0; i < 5; i++) total += process_event(queue, &count);
    printf("Total: %d (count left: %d)\n", total, count);
    return 0;
}

The Bug

The assert macro is defined to expand to nothing when NDEBUG is defined — which is the convention for release builds, and the default for CMake's Release and RelWithDebInfo configurations. When the macro vanishes, so does everything inside its parentheses, including the call to dequeue.

In a debug build, process_event dequeues one element, assigns it to event, asserts it's non-negative, and doubles it. Total: 300, count left: 0.

In a release build with -DNDEBUG, the assert(...) line compiles to nothing. dequeue is never called. The queue is never drained. Worse, event is read while uninitialized — undefined behavior. The optimizer is free to assume that path unreachable, propagate poison, or just hand you whatever was on the stack. Total: garbage. Count left: 5.

The C11 standard is explicit: when NDEBUG is defined, assert expands to ((void)0). The expression isn't evaluated, isn't side-effect-preserved, isn't anything. It's gone.

The rule: never put work inside an assert. Asserts are documentation that the compiler happens to check in debug mode. The body must be a side-effect-free predicate. Function calls that allocate, mutate state, return status codes, or read input all qualify as side effects. Even harmless-looking helpers can grow side effects later and silently break release builds.

The fix is to extract the call, then assert on the result:

int process_event(int *queue, int *count) {
    int event = dequeue(queue, count);
    assert(event >= 0);  /* checks, but doesn't *do* the work */
    return event * 2;
}

Now dequeue runs in every build, and the assertion is purely a debug-mode sanity check. If you want a check that survives in release, use a real conditional with abort(), an error return, or a logging path — not assert.

This bug is especially insidious because it passes every test you run locally (debug builds), passes CI (often debug builds), and only manifests in the shipped binary. Code-review heuristic: grep for assert( followed by anything that looks like a function call, assignment, or ++. Every hit is a potential time bomb.

Key Takeaway: assert expressions are completely deleted when NDEBUG is defined — any function calls, assignments, or side effects inside them disappear with the macro, so asserts must only contain side-effect-free predicates.

Daily Digital Circuits

Victim Caches: How Hardware Rescues the Bits Your Cache Just Threw Away

2026-06-09

Direct-mapped caches are fast and cheap, but they have a brutal failure mode: conflict misses. Two addresses that map to the same set evict each other on every access, even when the rest of the cache is empty. Set-associative caches fix this by adding ways, but every way you add costs power, area, and tag-comparison time on the hot path. Norman Jouppi proposed a sneakier fix in 1990: keep a tiny, fully-associative victim cache next to the main cache that catches every line the main cache evicts.

The structure is small — typically 4 to 16 entries — and sits between the L1 and the next level of memory. When L1 evicts a line, the line doesn't go straight to L2; it goes into the victim cache. On the next L1 lookup:

  • L1 and the victim cache are probed in parallel.
  • If L1 hits, normal fast path — victim cache result is discarded.
  • If L1 misses but the victim cache hits, the two lines swap: the victim-cache line moves into L1, and the line L1 was about to evict goes into the victim cache.
  • If both miss, fetch from L2 and evict normally.

The swap is the clever part. It costs one extra cycle but turns what would have been an L2 miss (often 10–30 cycles) into a near-hit. Because the victim cache is fully associative over a handful of entries, it tolerates any conflict pattern the main cache can't.

Concrete example: A direct-mapped 8KB L1 with 32B lines has 256 sets. Two hot variables at addresses 0x1000 and 0x3000 both hash to set 0 and thrash. Without a victim cache, every access to one evicts the other — 100% miss rate on those two lines. Add a 4-entry victim cache: the evicted line lands one cycle away, and the next access swaps it back. The thrash becomes a 1-cycle penalty instead of a 20-cycle L2 round trip.

Rule of thumb: Jouppi's original paper showed a 4-entry victim cache removes roughly 25–50% of conflict misses for a direct-mapped L1 — performance close to 2-way set-associative at a fraction of the area. Diminishing returns kick in fast past 8 entries because hot conflict sets are usually small.

Modern CPUs rarely ship explicit victim caches at L1 anymore (associativity got cheap), but the idea lives on: AMD's Zen architectures use the L3 as a victim cache for L2 — L3 lines only exist because L2 evicted them, which makes L3 enormous-but-exclusive instead of duplicating L2's contents. Same trick, different level of the hierarchy.

See it in action: Check out 🔥🔥On his first day of work, he was swept into a CEO
#39;s life and his fortunes changed overnight. by 爽劇追蹤 Cool Drama Tracking to see this theory applied.
Key Takeaway: A victim cache is a tiny fully-associative buffer that catches evicted lines, turning conflict misses into one-cycle swaps and letting cheap direct-mapped caches behave like associative ones for a fraction of the cost.

Daily Electrical Circuits

Full-Bridge Converters: Maximum Power Transfer in Isolated Switching Supplies

2026-06-09

The full-bridge converter is the heavyweight champion of isolated DC-DC topologies. Where a half-bridge uses two switches and capacitor-divided rail, the full-bridge uses four switches arranged as two half-bridges driving opposite ends of the transformer primary. This doubles the volt-seconds applied to the primary compared to a half-bridge with the same input rail, which means half the primary current for the same output power — a huge win for conduction losses at the kilowatt level.

How it works: Switches Q1 (top-left) and Q4 (bottom-right) turn on together, applying +Vin across the primary. Then both turn off (dead time), and Q2 (top-right) and Q3 (bottom-left) turn on, applying −Vin. The transformer sees a true bipolar square wave swinging ±Vin, with no DC bias and full core utilization. A center-tapped secondary with two rectifiers (or a full-wave bridge) reconstructs DC, followed by an LC output filter.

Why four switches instead of two? In a half-bridge, the primary only ever sees ±Vin/2 because the capacitor divider sits in series. The full-bridge eliminates that divider and applies the full rail in both directions. For a given transformer turns ratio and output power:

  • Primary RMS current ≈ Pout / (Vin × efficiency × √D), roughly half that of an equivalent half-bridge
  • Switch voltage stress stays at Vin (same as half-bridge — no penalty)
  • Transformer utilization is maximal: both quadrants of the B-H curve are swept symmetrically

Real-world example: A 3 kW server power supply running off a 400 V PFC bus uses a phase-shifted full-bridge to deliver 12 V at 250 A. The phase-shift modulation variant achieves zero-voltage switching (ZVS) on all four MOSFETs by leveraging the transformer leakage inductance and switch output capacitance — pushing efficiency above 96%. EV onboard chargers (6.6 kW and up) almost universally use this topology for the same reason.

Design rule of thumb: Pick the full-bridge when output power exceeds roughly 500 W to 1 kW. Below that, the cost and gate-drive complexity of four switches (two of which are high-side, needing bootstrap or isolated drivers) outweighs the benefits — a half-bridge or forward converter wins. The crossover shifts with rail voltage: at 48 V input the break-even is higher; at 400 V it's lower because high-side gate drive is already mandatory.

Gotcha: Shoot-through destroys full-bridges instantly. If Q1 and Q3 (or Q2 and Q4) ever conduct simultaneously, the input rail short-circuits through two MOSFETs. Always enforce dead time (typically 100–500 ns) between turning one pair off and the other on, and use gate drivers with built-in shoot-through protection.

See it in action: Check out Is this the BEST Voltage Converter? Trying to build a Synchronous Converter! by GreatScott! to see this theory applied.
Key Takeaway: The full-bridge converter doubles primary volt-seconds versus a half-bridge with the same rail, halving primary current and making it the topology of choice above ~1 kW — at the cost of four switches, mandatory dead time, and complex high-side gate drive.

Daily Engineering Lesson

Permanent Mold Casting: Reusable Metal Molds for Medium-Volume Aluminum and Zinc Parts

2026-06-09

Permanent mold casting (also called gravity die casting) pours molten metal into a reusable steel or cast iron mold under gravity alone — no high-pressure injection like die casting, no expendable mold like sand casting. It fills the production gap between sand casting (cheap tooling, rough parts, slow) and die casting (expensive tooling, smooth parts, fast). Typical volumes: 1,000 to 100,000 parts per mold.

How it works: A two-piece (or multi-piece) steel mold is preheated to 300–500°F, sprayed with a ceramic refractory coating that controls heat transfer and prevents soldering, then clamped shut. Molten aluminum (most common), zinc, copper, or magnesium pours through a gating system. The metal solidifies in 30–90 seconds, the mold opens, the part ejects, and the cycle repeats. A single steel mold survives 25,000–100,000 cycles for aluminum.

Why the preheat and coating matter: A cold mold causes the metal to freeze before it fills thin sections (misruns and cold shuts). The refractory coating — typically sodium silicate with talc or graphite — does three jobs: insulates the mold to keep metal fluid, prevents the aluminum from welding itself to the steel, and acts as a release agent. Coating thickness is tuned section-by-section: thinner over thick sections (faster cooling, finer grain), thicker over thin sections (slower cooling, better fill).

Compared to sand casting: Permanent mold gives 2–3× better surface finish (125–250 µin RMS vs. 500–1000), tighter tolerances (±0.015" vs. ±0.030" on small features), and 20–30% higher strength because the steel mold chills the metal faster, producing finer grain structure. The tradeoff: tooling costs $10K–$50K vs. $500–$5K for sand patterns, and you can't cast complex internal cavities without sand cores (which defeats some of the cost advantage).

Real-world example: Aluminum pistons for internal combustion engines. A typical automotive piston mold runs ~40 cycles per hour, lasts 50,000+ shots, and produces parts with the fine grain structure needed for fatigue resistance under combustion loads. The crown gets a thinner coating (rapid cooling, hard surface); the skirt gets thicker coating (slower cooling, controlled dimensions after machining).

Rule of thumb for breakeven: Permanent mold beats sand casting above ~1,000 parts and beats die casting below ~50,000 parts for aluminum. For zinc, the crossover with die casting drops to ~10,000 because zinc tooling lasts longer in high-pressure dies.

Common defects: shrinkage porosity in thick sections (fix with risers or chills), misruns in thin walls (raise pour temperature or thin the coating), and hot tears at section transitions (add fillets, reduce pour rate).

See it in action: Check out reusable aluminum casting mold 6 by OldTown to see this theory applied.
Key Takeaway: Permanent mold casting uses reusable steel molds under gravity feed to deliver better finish and grain structure than sand casting at lower tooling cost than die casting, hitting the sweet spot for 1,000–50,000-part aluminum production runs.

Forgotten Books

The 1807 Horse Doctor Who Knew Honey Heals Wounds

2026-06-09

Book: The pocket farrier, or, Approved receipts : collected from different authors with an intent to cure or assist any immediate accidents that may happen to a horse till further help can be had by Johnson, Jacob, 1771?-1819, printer, Trenchard, James, b. 1747, engraver (1807)

Read it: Internet Archive

Flip through this slim 1807 pamphlet — small enough to carry in a saddlebag — and you'll find a startling pattern: nearly every wound and skin-infection recipe begins with the same humble pantry ingredient. Honey.

The very first entry sets the tone:

1. A digestive Ointment. Venice turpentine one ounce, the yelk of two eggs, honey, and tincture of myrrh, an ounce of each.

For cracked heels, the unknown compiler offers an ointment of "Turpentine, honey, hog's lard, and burnt alum, equal quantities." For "the Grease" — a stubborn bacterial dermatitis on horses' fetlocks that still plagues stables today — the prescription is even more elaborate:

First bleed the horse, and put a rowel in the bottom of his belly; then take 4 oz. of oil of olives, 1 lb. of honey, and 1 lb. of alum, 2 ounces of white sugar candy, one drachm of white vitriol, beaten all very fine... warm it, and then spread it upon some tow, and bind it to the sore.

Strip away the bloodletting and the rowel (a barbaric drainage device), and what remains is essentially a medical-grade honey dressing — exactly the treatment that modern wound-care clinics rediscovered in the 1990s and now sell for $40 a tube.

The science is now well-established. Honey is hygroscopic (it pulls water out of bacteria), naturally acidic (pH ~3.5–4.5, hostile to most pathogens), and slowly releases hydrogen peroxide through the glucose-oxidase enzyme. Manuka honey from New Zealand is so effective against MRSA and chronic non-healing wounds that it's FDA-cleared as a medical device. Hospitals use it on diabetic ulcers, burns, and surgical sites that won't close.

The 1807 farrier didn't know about Staphylococcus or hydrogen peroxide. But he — or whichever country veterinarian's notebook he was copying from — had observed something real: horses treated with honey-and-alum poultices got better. The alum (an astringent aluminum salt) also has documented antimicrobial activity. The olive oil kept the dressing pliable. Even the bizarre-sounding "white sugar candy" makes sense — sugar dressings are still used today in resource-limited clinics, working by the same osmotic mechanism as honey.

What strikes me most is how casually the recipe is presented. No theory, no mechanism, no claim of novelty — just "this is what works." The book is essentially a pre-germ-theory clinical pocket reference, encoding generations of stable-yard observation into something a traveler could carry on horseback. Most of its remedies have been (rightly) abandoned. But the honey wound dressings outlived the germ-theory revolution that should have killed them, came back into hospitals two centuries later, and now coat the bandages used on Iraq War veterans.

The forgotten claim: Honey, alum, and oil bound to an open wound will heal it — a 1807 horse remedy that turned out to anticipate twenty-first-century medical wound dressings by nearly two hundred years.

Forgotten Darkroom

The Soviet Satellite That Caught the South Atlantic Anomaly in 1961

2026-06-09

Book: "SCIENTIFIC ABSTRACT LOGACHEV, V. I. - LOGACHEV, YU. I." by CIA Reading Room (1967)

Read it: Internet Archive

Buried in a CIA-translated abstract of Soviet scientific literature — the kind of dry, bureaucratic document that intelligence analysts skim by the thousand — is a 1961 observation that any modern satellite engineer would immediately recognize as a deadly piece of orbital geography.

The paper, by L.V. Kurnosova, V.I. Logachev, and four colleagues, summarizes data from the second Soviet artificial satellite. Using onboard instruments, they were charting cosmic ray flux at altitudes between 310 and 340 kilometers — the kind of altitude where the ISS now orbits. And they found something strange:

"By means of apparatus placed aboard the second Satellite the flow of particles exceeding the flow of cosmic rays was recorded. Near the equator the mean flow equalled 1.2 particles cm-2 sec-1, being 3.3 particles cm-2sec-1 in high latitudes. Regions with an anomalously high radiation intensity include the area of the Atlantic Ocean's southern part (25° and 50°S, 0° and 55°W). A Southern anomaly, situated between 50 - 65°S and 40°W — 40°E, was detected at a height of 340 km."

What the Soviets had mapped — and what the abstract speculates may be a "radiation belt" — is now known as the South Atlantic Anomaly (SAA). It is one of the most operationally important features of near-Earth space.

Here is what the 1961 observation didn't yet explain, but correctly identified: Earth's magnetic field is not centered on the planet's geometric core. It is tilted and offset by about 500 km toward the western Pacific. As a consequence, over the South Atlantic, the inner Van Allen radiation belt sags down to within a few hundred kilometers of the surface — exactly where low-Earth-orbit satellites fly. The particle flux jumps by a factor of two to three, which is precisely what Kurnosova's team measured.

The discovery is usually credited to American researchers analyzing Explorer satellite data around 1958, with refinement through the early 1960s. The Soviet measurement here, published in Iskusstvennyye Sputniki Zemli in 1961, is a parallel and largely forgotten observation made under conditions of total Cold War secrecy — which is presumably why a CIA translator was reading it six years later.

Modern relevance:

  • The Hubble Space Telescope stops taking science data when it transits the SAA — its electronics would be corrupted by particle hits.
  • ISS astronauts report seeing "flashes" in their vision during SAA passes; these are heavy particles striking their retinas.
  • Brazilian satellite operators routinely lose telemetry; one of the early Iridium satellite failures was traced to an SAA single-event upset.
  • The anomaly is growing and may be splitting in two, according to ESA Swarm mission data from the 2020s.

What's striking is that the Soviet authors caught the right structure — including the southward-extending "southern anomaly" near Antarctica — using instrumentation that today would barely qualify as a Geiger counter, on a satellite that flew before the Cuban Missile Crisis.

The forgotten claim: A 1961 Soviet satellite independently mapped what we now call the South Atlantic Anomaly — the dangerous radiation hotspot that still forces the ISS and Hubble to power down sensitive instruments every time they fly over Brazil.

Forgotten Patent

Yoshiro Nakamatsu's "Floppy Disk" Patent: The 1952 Filing a Tokyo Student Claims Invented Magnetic Storage — and the Decades-Long IBM Dispute

2026-06-09

In 1952, a graduate student at the University of Tokyo named Yoshiro Nakamatsu — later infamous as "Dr. NakaMats," holder of a self-claimed 3,000+ patents — filed a Japanese patent for a flexible magnetic recording medium he called the "floppy disk." He had been frustrated, he said, while listening to Beethoven on a brittle shellac record: he wanted a medium that bent without breaking and could be read by a magnetic head rather than a needle. His filing described a thin, flexible disc coated in ferromagnetic material, rotated inside a protective sleeve, with a read/write head accessing data through a radial slot.

The dispute begins here. IBM's San Jose lab, under Alan Shugart and David Noble, independently developed the 8-inch floppy in 1969, receiving US Patent 3,668,658 (filed 1970, granted 1972) for the read-only "Memory Disk Drive." IBM's design — a flexible Mylar disc coated in iron oxide, sealed in a square jacket with a head slot and index hole — looked uncannily like Nakamatsu's 17-year-old sketches. Nakamatsu claims IBM licensed his patent in 1979; IBM has never publicly confirmed this, and historians remain split. The Japanese patent office records are thin, and Nakamatsu's own showmanship (he also patented a "love jet" and self-photographed every meal for 40 years to optimize his diet) has made him an unreliable narrator of his own work.

What the patent actually described. Strip away the marketing and the disclosed mechanism was prescient:

  • A flexible substrate (vs. rigid platters of the era's drum and disk memories) so the medium could be cheaply mass-produced and survive bending.
  • A sealed jacket with a radial access slot — the key insight that lets a low-precision head ride directly on the rotating surface without contamination.
  • A radial seek rather than a fixed head per track, trading speed for cost — the same trade-off that defined every consumer storage device that followed.

Why it matters now. The floppy is dead — the last factory closed in 2010, and Sony stopped making 3.5" disks in 2011 — but its three design choices are everywhere:

  • Sealed cartridges with a head-access window live on in every hard disk drive: the HDA (head-disk assembly) is essentially a hermetically sealed floppy jacket scaled up and helium-filled.
  • Radial seeking with a single moving head is the architecture of every spinning-platter drive shipped today — modern 22 TB HDDs still use a voice-coil actuator doing exactly what Nakamatsu's sketch implied.
  • The "save" icon in nearly every application — Word, Photoshop, Figma — is still a stylized floppy, a UI fossil from a medium most users under 25 have never touched.

Could it be built better now? It already has been — but the idea of flexible, cheap, removable magnetic media is making a quiet comeback. IBM and Fujifilm's strontium ferrite tape (demonstrated at 580 TB/cartridge in 2023) is, conceptually, a floppy disk unrolled: flexible substrate, magnetic coating, sealed cartridge, single read head doing radial-equivalent seeks. Tape, once thought obsolete, is now the cheapest archival medium on Earth and the backbone of every hyperscaler's cold storage tier. The form factor Nakamatsu sketched in 1952 — flexible, sleeved, head-accessed — is how humanity stores its longest-lived data in 2026.

Whether or not IBM ever paid him, his Beethoven-induced frustration anticipated a 70-year design lineage.

Key Takeaway: Nakamatsu's contested 1952 floppy patent established three design choices — flexible media, sealed jackets, radial seeking — that still define every spinning hard drive and archival tape cartridge in modern data centers.

Daily GitHub Zero Stars

zavora-ai/mcp-ticketing

2026-06-09

This repo is an ambitious attempt at building a full service-desk platform exposed as an MCP (Model Context Protocol) server. Instead of bolting an LLM onto an existing ticketing system like Jira or Zendesk, the author flips the relationship around: the ticketing system itself becomes a first-class tool that AI agents can drive natively.

The feature list reads like a real ITSM product rather than a toy demo:

  • Queues with SLA policies — not just tags, but actual response/resolution time contracts
  • SLA due dates and breach detection — the hard part of any real ticketing system
  • Triage, assignment, and status workflow — the daily mechanics of a support team
  • Public vs. internal comments — the distinction that separates real support tools from chat apps
  • Escalation paths and SLA/workload analytics

What makes this interesting is the implication. If an MCP-aware agent can read queues, file tickets, post internal-only triage notes, watch SLA timers, and escalate before a breach — you've effectively built an autonomous L1 support agent that uses the same primitives a human support engineer does, with the same audit trail. No special "AI mode" required.

It's also a useful reference implementation for anyone building MCP servers around stateful workflow systems (not just CRUD wrappers). SLA timers, state machines, and dual-audience comments are exactly the kinds of domain concepts that expose the limits of naive tool design.

Who benefits: MCP server authors looking for a non-trivial example, internal-tools teams curious about agent-driven support, and small teams who want a self-hosted ticketing backend they can wire to Claude or another MCP client without paying Zendesk seat prices.

Why check it out: A real ITSM feature set — SLA timers, escalation, internal comments — delivered as an MCP server, making it a rare non-toy example of agent-native workflow tooling.

Daily Hardware Architecture

The Memory Renaming for Stack Operations: Why Push and Pop Skip the Cache Entirely

2026-06-09

Stack operations dominate function-heavy code. Every call pushes a return address, every prologue pushes callee-saved registers, every local variable lives at [rsp+N]. If each of these went through the load/store pipeline and L1 cache, even with perfect hits you'd burn 4-5 cycles per access and clog the load/store queue. Modern CPUs cheat: they treat the stack as a small set of internal registers.

The mechanism is stack engine plus memory renaming. The stack engine, sitting in the front-end, watches push, pop, call, and ret. It maintains a speculative rsp delta so back-to-back pushes don't serialize on rsp updates — the renamer can issue them in parallel. Then memory renaming kicks in: when a push rax is followed shortly by pop rbx at the same offset, the CPU recognizes that rbx should just be a copy of rax. It renames the destination to the same physical register, skipping the store, skipping the load, skipping the cache.

Concrete example. Intel's Sandy Bridge introduced the stack engine; Ice Lake extended memory renaming to cover most stack-relative load/store pairs. Consider a function prologue:

  • push rbp — store to [rsp-8], decrement rsp
  • mov rbp, rsp
  • ...body...
  • pop rbp — load from [rsp], increment rsp

Without renaming: the pop must wait for the push's store to drain into the store buffer, then either forward through store-to-load forwarding (5 cycles) or hit L1 (4 cycles). With memory renaming, the pop retrieves rbp in zero cycles — it's just a rename map update. Agner Fog's measurements show stack-renamed pops achieving 0-1 cycle effective latency versus 5 cycles for forwarded loads.

Rule of thumb. The renamer handles roughly 16-32 in-flight stack slots. If your function spills 40+ values to stack inside a loop, you blow past the tracking window and pay the full load-store cost. The fix: reduce register pressure (smaller loop bodies, fewer simultaneous live values) or convince the compiler to keep hot values in registers via __attribute__((hot)) or PGO.

This is also why red zone usage in the System V ABI (128 bytes below rsp) is so cheap — leaf functions hit memory-renamed slots that never touch L1. Compilers know this and aggressively reuse the red zone for short-lived spills.

See it in action: Check out Amazon Firestick remote control shortcut for quick settings menu. #shorts #firestick #remote #howto by Phone dabler to see this theory applied.
Key Takeaway: The stack engine and memory renamer turn most push/pop pairs into zero-cycle register-to-register moves, but only within a 16-32 slot tracking window — exceed it and you fall off a performance cliff.

Hacker News Deep Cuts

Human Judgment as a Specification

2026-06-09

The Brown University Programming Languages group publishes some of the most thoughtful work on how humans actually interact with formal systems — from Pyret to research on notional machines and the cognitive load of type errors. A new post from them about human judgment as a specification is exactly the kind of quietly important idea that gets buried under the daily churn of model releases and framework drama.

The framing is provocative: in classical software engineering, a specification is a precise, machine-checkable statement of what a program should do. But increasingly — especially in the LLM era — we're writing systems whose correctness criterion is human judgment. A summarizer is "correct" when humans find the summary good. A code assistant is "correct" when the developer accepts the suggestion. There's no oracle, no reference implementation, no decidable predicate.

Why this matters for a technical audience:

  • Testing strategy collapses. If your spec is "a human would approve," then property-based testing, fuzzing, and formal verification all need rethinking. What does a unit test look like when the assertion is fuzzy?
  • Regression detection becomes statistical. You can't say "build N+1 broke feature X" with certainty — only that approval rates shifted, possibly within noise.
  • The PL community has tools to offer. Brown PLT in particular has spent decades thinking about how to make implicit human expectations explicit. Their angle is likely more rigorous than the typical "vibes-based evals" discourse.

The URL pattern (pick.html) hints the post may frame this around a concrete example — perhaps a "pick the best option" interaction, which is exactly the abstraction many LLM-as-judge eval pipelines rest on. If so, it likely interrogates whether that abstraction is sound: when humans "pick," are they specifying something stable, or generating noise that we're laundering through statistics?

This is the kind of post that ten years from now will look obvious — of course we needed a theory of specification for systems with no formal spec — but right now it's a single upvote from a researcher's blog. The PL theory crowd has been quietly building the conceptual scaffolding the AI engineering world is going to need, and Brown PLT is one of the few groups doing it without hype.

Why it deserves more upvotes: A rigorous PL-theory take on the hardest open problem in AI engineering — what does "correct" mean when the spec lives in someone's head?

HN Jobs Teardown

evervault: What Their Hiring Reveals

2026-06-09

Source: HN Who is Hiring

Posted by: ShaneCurran

Of the ten postings, evervault is the most revealing because it captures a precise inflection point: privacy is migrating from a compliance checkbox owned by legal departments into a developer primitive owned by engineering. The posting telegraphs the entire thesis in one sentence — "Privacy is no longer something that compliance teams look after alone — it's becoming a core component of your product."

1. The (implied) stack and why it's interesting. The posting is conspicuously stack-agnostic. They're hiring a Product Engineer and a Product Designer — not a "Senior Rust Cryptographer" or "Kubernetes SRE." For a data-privacy infrastructure company backed by Sequoia and Kleiner Perkins, that absence is the signal. The hard cryptographic primitives (enclaves, key management, encryption proxies) are presumably already built or considered table-stakes by leadership. What they're missing is the developer experience layer — the SDKs, dashboards, and onboarding that turn a cryptosystem into something a backend dev integrates in an afternoon. Stripe taught the industry that infra companies win on DX, not algorithms.

2. Stage and direction. €60k–€90k plus "meaningful equity" places this firmly at Series A territory — past the prototype phase, pre-scale. The dual-city Dublin/San Francisco footprint with onsite-only requirement reveals two things: (a) GDPR-native positioning (Dublin = European data residency credibility) and (b) US enterprise sales motion (SF = where the design partners write checks). They're optimizing for synchronous, high-bandwidth product iteration — which suggests the product surface area is still being defined.

3. Skills and trends. Three macro signals:

  • Privacy-as-a-product is becoming a category, not a feature. The "compliance team alone" framing is a direct shot at one-time consultants and GRC tooling.
  • Generalist Product Engineers are the unit of hiring at infra startups — full-stack folks who can ship SDKs, docs, and dashboards without handoffs.
  • Designer as a founding-team hire for a developer tools company is the Stripe/Linear/Vercel playbook in action.

4. Flags. Green: tier-1 investors (Sequoia, KP, SV Angel) provide signal-rich validation; transparent salary band; tight role count suggests intentional hiring. Yellow: ONSITE-only during a remote-friendly hiring climate is bold and will narrow the candidate pool; the "passionate about data privacy?" opener leans on mission instead of compensation specifics for engineers who could earn 2–3x at FAANG; "meaningful equity stake" is undefined.

The signal: Privacy infrastructure is becoming the next Stripe-shaped category — and winning it will be a developer-experience problem, not a cryptography problem.

Daily Low-Level Programming

Cache Allocation Technology (CAT): Partitioning the L3 Cache Between Noisy Neighbors

2026-06-09

On a server with 32MB of L3 cache shared across 16 cores, one cache-thrashing workload can evict every line another workload depends on. The victim suddenly sees its working set fall out of LLC, its memory bandwidth demand spikes, and its tail latency doubles — even though nothing about its code changed. This is the noisy neighbor problem, and prior to ~2015 the only fix was physical separation.

Intel's Cache Allocation Technology (CAT), part of Resource Director Technology (RDT), lets you carve the L3 into named partitions called Class of Service (CLOS) IDs. Each CLOS holds a bitmask — the Capacity Bitmask (CBM) — where each bit represents one "way" of the LLC's associativity. A 20-way LLC with CBM 0xFFC00 reserves the upper 10 ways; CBM 0x003FF reserves the lower 10. Cache lines fetched while a core runs under that CLOS can only be installed in the allowed ways.

Configuration happens through MSRs: IA32_L3_QOS_MASK_n (0xC90+n) defines the bitmask for CLOS n, and IA32_PQR_ASSOC (0xC8F) selects which CLOS the current core uses. Linux exposes this via resctrl, a pseudo-filesystem at /sys/fs/resctrl/:

  • mkdir /sys/fs/resctrl/database — creates CLOS
  • echo "L3:0=0xff000;1=0xff000" > schemata — give it the upper 8 ways on both sockets
  • echo $PID > tasks — assign a process

Real-world example: Google's Borg and Meta's container runtimes use CAT to reserve LLC for latency-sensitive services (search, ads ranking) while batch jobs share a smaller partition. A measured case: a Redis instance co-located with a Spark shuffle saw p99 latency drop from 14ms to 2.1ms after pinning Redis to a 75%-LLC CLOS and Spark to the remaining 25%.

Rule of thumb for sizing partitions: measure the working set with perf stat -e LLC-loads,LLC-load-misses. If your hot path's resident footprint is W megabytes on an N-megabyte LLC with K ways, give it at least ceil(W/N * K) + 2 ways. The +2 absorbs conflict misses from set-associative hashing. Going below the working set is catastrophic; going above wastes shared capacity.

Important gotchas: CBMs must be contiguous bit-runs on most CPUs — 0b10110 faults. Partitions may overlap, which is how you do soft priorities (shared region + exclusive region). And CAT controls allocation, not access: a CLOS-0 core can still hit on a line installed by CLOS-1 — partitioning only prevents new installs, so the effect builds gradually as old lines age out.

Key Takeaway: CAT turns the shared LLC into named partitions via CBM bitmasks, letting you protect latency-sensitive workloads from cache-hostile neighbors — but it controls where new lines are installed, not who can read them.

RFC Deep Dive

RFC 4733: RTP Payload for DTMF Digits, Telephony Tones, and Telephony Signals

2026-06-09

RFC: RFC 4733

Published: December 2006

Authors: H. Schulzrinne, T. Taylor

Every time you've punched digits into a phone tree from your cell phone or a softphone — "press 1 for billing" — there's a non-trivial chance RFC 4733 carried those digits across the network. It is the unsung workhorse of modern telephony signaling, and it exists because the obvious approach (just send the tones as audio) is catastrophically broken once codecs get involved.

The problem. DTMF tones are pairs of sine waves (e.g., "5" is 770 Hz + 1336 Hz). On a clean PSTN circuit running G.711, they survive intact and the receiving switch can decode them with a Goertzel filter. But VoIP increasingly uses low-bitrate codecs — G.729, Opus at low rates, AMR — that are tuned for speech. Their psychoacoustic models mangle pure tones beyond recognition. Worse, packet loss concealment, comfort noise generation, and silence suppression can corrupt or drop a tone burst entirely. An IVR that misreads "1" as "4" because a packet got lost is a customer support disaster.

The design. RFC 4733 (which obsoleted RFC 2833) takes the tones out of band. Instead of synthesizing a tone in the audio stream, the endpoint sends a tiny RTP packet using a separate telephone-event payload type, negotiated in SDP. The payload is four bytes:

  • Event code (8 bits): which key — 0–9, *, #, A–D, plus codes for flash-hook, dial tone, busy, ringback, and dozens of other signals.
  • End bit + reserved + volume (8 bits): the "E" flag marks the final packet of an event; volume is in -dBm0.
  • Duration (16 bits): cumulative duration in RTP timestamp units.

Reliability via redundancy. Here's the clever part. Because RTP runs on UDP and a lost digit is unacceptable, the sender retransmits the end packet (with the E bit set) three times by default. The receiver deduplicates by inspecting the RTP timestamp — every packet for a given event carries the timestamp of the event's start, so multiple packets describing "the 5 that began at timestamp T" collapse into one logical key press. The duration field grows in each packet, so you can also reconstruct long key holds.

Why it survived. The alternatives all lose. SIP INFO messages (another way to send digits) travel over the signaling path, which may be a different route with different latency — you get key presses arriving out of order with the audio they were meant to accompany. In-band tones, as noted, die in low-bitrate codecs. RFC 4733 events are multiplexed into the RTP stream itself, sharing sequence numbers and timestamps with the audio, so ordering and timing are preserved relative to speech.

Quirks worth knowing. Interop bugs around RFC 4733 are legendary. SBCs (Session Border Controllers) routinely translate between in-band DTMF, RFC 4733, and SIP INFO because no two carriers agree. The duration field is in RTP timestamp units, not milliseconds — at 8 kHz sampling, 8000 units = 1 second, which trips up implementers who hardcode 1000. And the event table goes well beyond keypad digits: codes 32–63 cover trunk signaling like wink, hookflash, and MF tones, making the RFC also relevant to legacy SS7 gateway work.

Why it matters: RFC 4733 is the reason your touch-tones still reach the IVR after your voice has been crushed through a 12 kbps codec — a tiny, redundant out-of-band signaling channel quietly making modern VoIP usable.

Stack Overflow Unanswered

How embassy should be decoupled from logic in rust embedded project?

2026-06-09

Stack Overflow: View Question

Tags: rust, architecture, embedded

Score: 0 | Views: 28

The asker is designing a tiny LED-flash device modeled as a state machine (Idle / Flashing) driven by two commands (Flash / AbortFlash). The real question isn't the toy problem — it's where the seam goes between Embassy (async runtime, executors, Timer, Signal, GPIO futures) and the pure domain logic. They want unit-testable business rules on a host machine, with Embassy as a swappable shell.

Why this is interesting: Embedded Rust tends to grow Embassy types into every signature — async fn returning a future tied to a specific executor, Output<'d, AnyPin> in struct fields, Timer::after() sprinkled through logic. Once that happens, you can't compile the core for cfg(test) on x86, and the state machine becomes inseparable from PAC and HAL. This is the embedded version of the hexagonal-architecture / ports-and-adapters problem, but with extra constraints: no heap, no dyn Trait object-safety pain, and async traits that until recently required nightly.

A workable approach:

  • Make the core a sans-IO state machine. A synchronous fn step(&mut self, event: Event, now: Instant) -> Vec<Effect, N> (using heapless). No futures, no GPIO, no Embassy. Events are ButtonPressed, TimerElapsed; effects are SetLed(bool), StartTimer(Duration), CancelTimer.
  • Push Embassy to the edges in a thin task that owns the peripherals. It awaits on a Channel or select of button/timer futures, translates them into Events, calls step, and dispatches Effects back to hardware.
  • Abstract only what you must. If you do need async in the core, define your own minimal traits (trait Clock { async fn sleep(&self, d: Duration); }) with Rust 1.75+ AFIT, and implement them with Embassy on-device and with tokio or a fake clock in tests.

Gotchas:

  • Button debounce and the "second press cancels" semantics are easy to get subtly wrong; the sans-IO design pays for itself the moment you write a property test for that.
  • Effects ordering matters — if CancelTimer and StartTimer are emitted in the same step, the adapter must apply them in order.
  • Don't over-abstract OutputPin behind dyn; embedded-hal traits exist for this, generics keep zero-cost.
  • Avoid Embassy's Signal in the core — it's a synchronization primitive, not a domain concept.
The challenge: Embedded Rust async runtimes like Embassy invite themselves into every type signature, so the real skill is drawing a sans-IO boundary that keeps the executor at the edge without sacrificing zero-cost abstractions.

Daily Software Engineering

The Tunable Consistency Pattern: Per-Request Trade-offs Instead of System-Wide Choices

2026-06-09

Most consistency discussions treat it as a system-wide setting: "we're eventually consistent" or "we're strongly consistent." Real distributed databases like Cassandra, DynamoDB, and Riak give you a knob per request. The same database can serve strongly consistent reads for billing and eventually consistent reads for the activity feed — you choose at query time.

The mechanism: R + W > N. In a quorum-based system with N replicas, you specify how many must acknowledge a write (W) and how many must respond to a read (R). When R + W > N, every read overlaps with the latest write on at least one node, guaranteeing strong consistency. When R + W ≤ N, you trade consistency for latency and availability.

The math, with N=3 replicas:

  • W=3, R=1: Fast reads, slow writes. Strong consistency. Good for write-once-read-many (product catalogs).
  • W=1, R=3: Fast writes, slow reads. Strong consistency. Good for high-ingest logging where reads are rare.
  • W=2, R=2: Balanced quorum. Strong consistency. The default for most workloads.
  • W=1, R=1: Fastest, but eventually consistent. Good for analytics, recommendations, "people who viewed this."

Real example — Cassandra at a fintech. A payments app stores transactions in Cassandra with RF=3 across three availability zones. Writing a transaction uses LOCAL_QUORUM (W=2): the write is durable in the local DC even if one node is down. Reading a user's current balance also uses LOCAL_QUORUM (R=2) — strong consistency where it matters. But the "recent activity" widget on the dashboard uses ONE (R=1): if a transaction takes a second longer to appear in the feed, nobody loses money, and reads stay fast during partial outages.

Rule of thumb: Ask "what's the cost of staleness?" If staleness causes wrong decisions (charging twice, overselling inventory, showing the wrong balance), use quorum. If staleness causes minor UX weirdness (a comment appearing a beat late), use ONE and save the latency.

The gotcha: Tunable consistency is not a free lunch. Mixing R=1 reads with W=quorum writes looks safe but isn't — you can read a value, then read again and see an older one (monotonic read violation). If your client depends on read-your-writes semantics, you need session consistency or sticky routing, not just per-query tuning. Document the consistency level next to every query, because the default is rarely the right answer.

Key Takeaway: Consistency isn't a system-wide setting — tune R and W per query based on the cost of staleness for that specific operation.

Tool Nobody Knows

agedu: Find Disk Space That's Big AND Old, Not Just Big

2026-06-09

The everyday disk-space question is the wrong one. "What's big?" gets you ncdu. The actually useful question is "where is data that's big and I haven't touched in years?" — and that's the one Simon Tatham (yes, the PuTTY guy, also halibut, spigot, and a stack of tools sharper than they have any right to be) wrote agedu for.

agedu walks a tree once, stores an index of size + atime, and then lets you query it interactively without re-walking the filesystem. Two phases: scan, then browse.

# Build the index (slow — does the full walk)
agedu --scan ~ --file ~/agedu.dat

# Browse via local web UI (random port, 127.0.0.1 only)
agedu --file ~/agedu.dat --web

# Or generate a one-shot HTML report
agedu --file ~/agedu.dat --html / > report.html

# Text mode for a subtree
agedu --file ~/agedu.dat --text /home/you/projects

The web UI is the killer feature. Each directory renders as a stacked bar coloured by age band: red = touched recently, fading through yellow/green to deep blue = years untouched. You click into the blue-heavy directories and find:

  • node_modules from a project you abandoned in 2022
  • A 12 GB Docker volume from tinkering-with-elasticsearch/
  • That ~/Downloads/old-laptop-backup/ you copied "temporarily"
  • ~/.cache/ from a half-dozen tools you no longer run

Compared to du piped through find -atime +365:

  • One scan, many queries. find re-walks the FS every time you change your mind about the cutoff. agedu's index answers any age query instantly.
  • Aggregated visualization. You don't have to grep find output and mentally roll up sizes by directory.
  • Index is portable. --scan on the box with the data, scp the .dat off, browse it on your laptop later.
  • Doesn't bump atime. Scanning uses lstat, not read, so the act of inspection doesn't reset the very metric you're inspecting.

Less obvious tricks:

# Scan / but stay on the root filesystem
agedu --scan / --no-cross-fs --file /var/tmp/root.dat

# Restrict reporting to one subtree without re-scanning anything
agedu --file /var/tmp/root.dat --text /var/log

# Custom age bands for the colour scale
agedu --file ~/agedu.dat --web \
      --age-bands "7d,30d,180d,1y,2y"

# Headless server: bind locally, tunnel over SSH
agedu --file root.dat --web --address 127.0.0.1:8042
# then on your laptop:
ssh -L 8042:127.0.0.1:8042 server
# open http://localhost:8042

Caveats worth knowing before you start rm-ing:

  • On noatime mounts, atimes are frozen at mtime — agedu still works, but the signal collapses to "when was this written?" The modern relatime default is fine.
  • ZFS, btrfs snapshots, and SMB shares can lie about atime in various creative ways. Sanity-check before a mass delete.
  • The index file can get big on huge trees — but it's a single file you can throw away when you're done.

For the cost of one overnight scan, you get a heatmap of digital sediment across years of work. The 50 GB Docker prune is obvious without any tool. The 200 GB of forgotten caches, abandoned checkouts, and "I'll sort this later" downloads is the win agedu hands you.

Key Takeaway: du tells you what's big; agedu tells you what's big and abandoned — which is the directory you can actually delete without regret.

What If Engineering

What If We Powered Trains by Towing Them with Giant Underground Loops of Liquid Metal?

2026-06-09

Conventional electric trains take power from overhead catenary wires — copper strung at 25 kV, requiring substations every 30-50 km, plus the train carries motors, transformers, and pantographs. What if instead, the track itself moved? Imagine a closed loop of liquid gallium-indium-tin (galinstan) circulating through a tube under the rails at 200 km/h, with each train magnetically coupled to the moving fluid like a fish caught in a current.

The physics is sound: galinstan is liquid at room temperature (melts at -19°C), has a density of 6440 kg/m³, and crucially, is highly conductive (3.46 × 10⁶ S/m). You pump it with magnetohydrodynamic (MHD) drives at power stations every few hundred kilometers, and trains couple to it via linear induction — essentially treating the moving liquid as the secondary of a giant linear motor.

The Pumping Problem

Consider a 1000 km corridor with a tube of cross-section 0.5 m² (a 0.8 m diameter pipe). Total liquid metal volume: 500,000 m³, mass 3.2 × 10⁹ kg — about 3.2 million tonnes. Just accelerating this from rest to 200 km/h (55.6 m/s) takes:

KE = ½mv² = ½ × 3.2×10⁹ × 55.6² = 4.95 × 10¹² J ≈ 1.4 GWh

That's startup cost. Steady-state is worse. Viscous drag in the pipe (galinstan viscosity ≈ 2.4 mPa·s, ~2× water) at Reynolds number ~10⁸ gives a Darcy friction factor of ~0.008. Pressure drop per kilometer:

ΔP/L = f × (ρv²/2D) = 0.008 × (6440 × 3088 / 1.6) ≈ 99 kPa/km

Over 1000 km: 99 MPa total head loss. Power to overcome this: P = ΔP × Q = 9.9×10⁷ × 27.8 m³/s = 2.75 GW. That's a large nuclear reactor's output just to keep the metal moving — before any train draws power.

Coupling to Trains

Here's the elegance: a train doesn't need motors. A superconducting magnet underneath generates a field perpendicular to flow; by Lenz's law, the flowing conductor (galinstan) drags the train forward. To extract 5 MW per train (cruise power for an ICE-class trainset), with field B = 2 T across a 10 m² coupling area, induced current density needed:

F = BIL → 5×10⁶ W / 55.6 m/s = 90 kN drag → I = F/(BL) ≈ 4500 A

Entirely feasible with modern HTS magnets.

Why This Fails (Spectacularly)

  • Cost: Galinstan runs ~$500/kg. 3.2 million tonnes = $1.6 trillion just for the working fluid. For one corridor.
  • Containment: Liquid metal at 100 MPa through ferrous pipes causes severe corrosion; you'd need tantalum or ceramic liners.
  • Single point of failure: A breach drains the entire system. Catenary failures strand one train; a galinstan leak strands a continent.
  • Efficiency: Round-trip MHD pumping is ~50-60%. Versus catenary at 90%+, you've doubled energy waste.

The interesting insight: this is a distributed flywheel. That 1.4 GWh of kinetic energy is grid storage — you could regen-brake trains into it, and tap it during peak demand. Suddenly the "stupid" idea becomes a continent-scale battery that happens to move trains.

Key Takeaway: Moving the track instead of the train is physically possible but economically absurd — unless you reframe the multi-gigawatt-hour liquid-metal loop as grid storage that incidentally provides traction.

Wikipedia Rabbit Hole

Hydraulic shock

2026-06-09

You've heard it. That sudden BANG in the pipes when you shut off a faucet too quickly, or the shuddering thump deep in the walls when the washing machine valve snaps closed. It sounds harmless — annoying, maybe, like a grumpy old house clearing its throat. But what you're actually hearing is a pressure wave moving at roughly the speed of sound through your plumbing, and under the right conditions it can split cast iron, rupture boilers, and kill people. This phenomenon is called water hammer, or more formally, hydraulic shock.

The physics is beautifully simple and a little terrifying. Water is nearly incompressible. When a column of it is moving through a pipe and you slam a valve shut, all that kinetic energy has nowhere to go. The fluid piles up against the closure, generating a pressure spike that can be dozens of times the normal operating pressure of the line. The spike then races back upstream as a shock wave, bounces off the next obstruction, and reverberates — a liquid bell being rung.

Here's where the rabbit hole gets interesting: in 1796, French inventor Joseph Michel Montgolfier — yes, that Montgolfier, of hot air balloon fame — looked at this destructive force and asked, "What if it's a feature?" He built a device called the hydraulic ram pump, which deliberately induces water hammer to lift a small portion of water to a great height using no external energy at all. A valve slams shut, the shock wave forces a fraction of water up through a one-way valve into a pressurized chamber, the valve reopens, and the cycle repeats — chug, chug, chug — for decades without electricity. Some are still running after a century.

The dark side is what engineers spend their careers preventing:

  • In hydroelectric plants, a sudden load drop can cause a turbine's intake valve to close fast, sending a shock back up the penstock that has, historically, burst pipes and flooded valleys.
  • Steam systems get the worst version: condensate-induced water hammer, where a slug of cool water meets superheated steam, the steam collapses instantly, and the resulting implosion can launch pipe fittings like cannonballs. The 1995 Knoxville steam accident killed a worker this way.
  • Even your arteries experience a form of it — the dicrotic notch in a pulse waveform is partially a hydraulic-shock echo from the aortic valve closing.

The standard mitigation is delightfully low-tech: an air chamber or "water hammer arrestor," basically a sealed pocket of compressed gas tee'd into the line that acts as a shock absorber. Your house probably has them. Over years they waterlog and stop working, which is why old plumbing eventually develops that signature bang.

So the next time your pipes thump, remember: you're hearing the same force that powered off-grid Victorian farms, that engineers fear in nuclear cooling loops, and that your own heart performs about 100,000 times a day.

Down the rabbit hole: The annoying bang in your plumbing is the same physics that lifted water uphill without electricity for a century — and the same physics that can turn a steam pipe into a fragmentation bomb.

Daily YT Documentary

Breakaway: The Refugee World Cup | Short Documentary

2026-06-09

Breakaway: The Refugee World Cup | Short Documentary

Channel: Jake Siam Solomon (671 subscribers)

Almost every other video in today's batch is a YouTube Short — 60-second hashtag-laden explainers, AI-generated wildlife footage, or single-paragraph history recaps. This is the only entry that looks like a real documentary: a short film about two refugees, Eh and Songolo, who fled Burma and the Democratic Republic of Congo respectively and ended up rebuilding their lives in Chicago through soccer.

The "Refugee World Cup" framing is doing a lot of work here. Resettlement stories are often told as statistics or political talking points; using an amateur soccer tournament as the lens lets the filmmaker show what integration actually looks like on the ground — the friendships, the language barriers, the small rituals of practice and travel that turn strangers into teammates. From a craft standpoint, it's also a good case study in how a single recurring event can anchor a documentary that would otherwise sprawl across continents and decades of conflict.

Jake Siam Solomon is a tiny channel (671 subscribers), which is exactly the kind of independent doc work worth surfacing before the algorithm buries it. The description is sparse but specific — two named subjects, two named conflicts, one shared city — which is usually a good sign the filmmaker did the reporting rather than scraping Wikipedia.

Why watch: A rare actual short documentary in a sea of hashtag Shorts — two refugees, one soccer tournament, and a grounded look at what resettlement really feels like.

Daily YT Electronics

Picoscope: The industry standard or crutch? This realization hurt my feelings too.

2026-06-09

Picoscope: The industry standard or crutch? This realization hurt my feelings too.

Channel: 710 Diagnostics and Fishing (2540 subscribers)

This video tackles a question that rarely gets honest treatment online: is the Picoscope — long considered the gold standard for automotive and electronics diagnostics — actually making technicians better, or has it become a tool people lean on instead of building real signal-analysis intuition?

The framing here is what makes it worth watching. Most oscilloscope content is either marketing-flavored ("look at all these features") or pure tutorial ("press this button"). A creator stepping back to question whether their primary diagnostic tool has become a crutch is rare, and that kind of self-critical reflection usually surfaces the deeper engineering principles: understanding what a waveform actually represents, knowing when a cheaper scope or even a multimeter would tell you the same story, and recognizing when fancy math channels and decoders are hiding rather than revealing the underlying physics.

For anyone learning oscilloscope work — whether for automotive sensor diagnosis, power electronics, or general circuit debugging — this kind of critique is more valuable than another "10 features you didn't know about" walkthrough. It pushes you to think about what you're measuring and why, instead of just trusting the pretty trace on the screen.

Note: the description field is empty, so the exact content depth is uncertain — but the title alone signals a thoughtful, opinionated take from a working diagnostician, which is usually where the best small-channel content lives.

Why watch: A working technician questioning whether the industry-standard scope is building skill or replacing it — the kind of honest tool critique you rarely see.

Daily YT Engineering

From Design to Flight: Introduction to the World of Aerospace Engineering

2026-06-09

From Design to Flight: Introduction to the World of Aerospace Engineering

Channel: Somali Society of Engineers (4 subscribers)

Note: today's batch was unusually weak — most candidates were Shorts, dealership ads, college brochures, or emoji-laden clickbait compilations. This was the clearest case of a real engineer actually teaching something.

This is a recorded SSE (Somali Society of Engineers) presentation by aerospace engineer Abdikarim Ibrahim, walking through the fundamentals of how aircraft and spacecraft get from a design sketch to actually flying. The framing — "from design to flight" — suggests it follows the engineering pipeline rather than just being a list of cool facts: requirements and mission profile, aerodynamic design, structural and propulsion choices, testing, and certification.

What makes this worth a viewer's time is that it's a professional engineer giving a structured talk to other engineers and students, not a content channel chasing views. Tiny channels like this (4 subscribers) often surface the most honest technical material because there's no algorithmic incentive to dumb it down or pad with B-roll. If you're a student trying to understand what aerospace engineering actually is as a discipline — versus the romanticized "rockets and planes" version — primary-source talks from working engineers are usually more useful than polished documentaries.

Expect lecture-style pacing and slides rather than cinematic production. Best watched if you're considering the field, transitioning into it from adjacent engineering, or want a grounded overview of the design-to-flight workflow.

Why watch: A working aerospace engineer giving a structured, lecture-style intro to the full design-to-flight pipeline — the kind of primary-source talk that small channels do better than polished ones.

Daily YT Maker

Miniature Space Station Build | Soldering, LEDs & Brass Frame

2026-06-09

Miniature Space Station Build | Soldering, LEDs & Brass Frame

Channel: MK Lattice Studio (1110 subscribers)

This build sits at the intersection of model-making, metalwork, and basic electronics — three skills that don't often appear together in a single project. The maker constructs a miniature orbital station using a hand-soldered brass frame, then wires LEDs into the structure to give it that lit-from-within satellite glow.

What makes this worth watching over the other candidates is the soldering on brass rod. Brass is a great beginner-friendly material for armature work because it cuts cleanly, takes solder readily with the right flux, and holds geometric shapes far better than wire alone. Seeing someone lay out an orthogonal frame, tack the joints, and then reflow them into a rigid lattice is a genuinely transferable skill — it's the same technique used in model railroad detailing, jewelry findings, and steampunk prop work.

The LED integration is the second educational layer. Running power through a conductive metal frame (or routing fine magnet wire alongside it) forces you to think about insulation, polarity, and current limiting in a constrained space. Even at a glance, this is more substantive than the typical "mini drill" or "bamboo gun" shorts in the feed, which tend to skip the why behind each step.

The acknowledged caveat: the title leans on ASMR/aesthetic tags, so expect minimal narration. You'll be learning by watching hands, not listening to explanation.

Why watch: A clean demonstration of brass-frame soldering combined with LED integration — two crossover skills useful for any small-scale fabrication or prop-making project.

Daily YT Welding

Building a Bomb-Proof Industrial Metal Table Frame!

2026-06-09

Building a Bomb-Proof Industrial Metal Table Frame!

Channel: Jaki official (6240 subscribers)

Of the day's candidates, this is the standout. Most of the others are either hashtag-spam Shorts, factory promotional reels for sink machines and tube lasers, or vague B-roll compilations with music. This one promises a full workshop build of an industrial-style metal table frame from start to finish — exactly the kind of long-form fabrication content worth slowing down for.

Industrial table frames look simple, but doing them well is a real test of fundamentals: getting square stock genuinely square, managing weld distortion across long rails, hiding or dressing seams cleanly, and keeping the legs co-planar so the finished table doesn't rock. A good build video will show how the maker tackles each of those — tack sequence, jigs or fixturing, the order of welds to balance heat, and finishing choices like grinding versus leaving weld beads visible for the industrial aesthetic.

The framing of the title — "bomb-proof" and a contrast with flimsy flat-pack furniture — suggests the maker is going to talk through material choices (likely heavy wall square tube) and joint design rather than just running a montage. At 6,240 subscribers, Jaki official is squarely in the small-channel range where you tend to get unhurried, hands-on explanation rather than overproduced filler.

If you're planning your own welded furniture project, this is a useful template to study before cutting any steel.

Why watch: A full-process welded furniture build is the best teacher for squaring, fixturing, and distortion control on long table frames.