26 newsletters today.
Abandoned Futures
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:
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.
ArXiv Paper Digest
2026-06-09
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:
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.
Daily Automotive Engines
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.
Daily Debugging Puzzle
assert Side-Effect Trap: The Code That Vanishes in Release Builds2026-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 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.
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
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:
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.
Daily Electrical Circuits
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:
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.
Daily Engineering Lesson
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).
Forgotten Books
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.
Forgotten Darkroom
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:
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.
Forgotten Patent
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:
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:
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.
Daily GitHub Zero Stars
2026-06-09
Language: Unknown
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:
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.
Daily Hardware Architecture
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 rspmov rbp, rsppop rbp — load from [rsp], increment rspWithout 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.
Hacker News Deep Cuts
2026-06-09
Link: https://blog.brownplt.org/2026/06/09/pick.html
HN Discussion: 1 points, 0 comments
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:
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.
HN Jobs Teardown
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:
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.
Daily Low-Level Programming
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 CLOSecho "L3:0=0xff000;1=0xff000" > schemata — give it the upper 8 ways on both socketsecho $PID > tasks — assign a processReal-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.
RFC Deep Dive
2026-06-09
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:
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.
Stack Overflow Unanswered
2026-06-09
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:
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.Channel or select of button/timer futures, translates them into Events, calls step, and dispatches Effects back to hardware.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:
CancelTimer and StartTimer are emitted in the same step, the adapter must apply them in order.OutputPin behind dyn; embedded-hal traits exist for this, generics keep zero-cost.Signal in the core — it's a synchronization primitive, not a domain concept.Daily Software Engineering
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:
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.
Tool Nobody Knows
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 2022tinkering-with-elasticsearch/~/Downloads/old-laptop-backup/ you copied "temporarily"~/.cache/ from a half-dozen tools you no longer runCompared to du piped through find -atime +365:
find re-walks the FS every time you change your mind about the cutoff. agedu's index answers any age query instantly.find output and mentally roll up sizes by directory.--scan on the box with the data, scp the .dat off, browse it on your laptop later.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:
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.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.
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
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.
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.
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.
$1.6 trillion just for the working fluid. For one corridor.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.
Wikipedia Rabbit Hole
2026-06-09
Wikipedia: Read the full article
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:
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.
Daily YT Documentary
2026-06-09
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.
Daily YT Electronics
2026-06-09
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.
Daily YT Engineering
2026-06-09
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.
Daily YT Maker
2026-06-09
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.
Daily YT Welding
2026-06-09
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.
