25 newsletters today.
Abandoned Futures
2026-06-19
On July 31, 1934, on the Scottish island of Scarp, a German engineer named Gerhard Zucker lit the fuse on a four-foot aluminum rocket packed with 1,200 letters bound for the neighboring island of Harris. It exploded on the launch rail, scattering scorched mail across the heather. The British Post Office watched, took notes, and declined to invest. That single failed launch β replayed in newsreels worldwide β became the public face of rocket mail, an idea that was neither crank nor fantasy but a serious transcontinental delivery proposal that absorbed three decades of engineering across Germany, Austria, India, and the United States.
The concept predated Zucker. Austrian engineer Friedrich Schmiedl flew the world's first successful rocket mail on February 2, 1931, lofting 102 letters between SchΓΆckl and Sankt Radegund using a solid-fuel rocket of his own design. Schmiedl completed 24 successful flights between 1931 and 1933 before the Austrian government banned private rocketry. He destroyed his blueprints in 1935 rather than hand them to the Nazis.
The most ambitious version came after the war. In 1959, U.S. Postmaster General Arthur Summerfield loaded 3,000 letters into a Regulus I cruise missile, fired from the submarine USS Barbero, and landed them at Mayport Naval Station, Florida, 22 minutes later. Summerfield declared: "Before man reaches the moon, mail will be delivered within hours from New York to California, to England, to India or to Australia by guided missiles." The Post Office projected coast-to-coast delivery in under an hour by 1965.
It died for entirely non-technical reasons:
Here's why 2026 changes the math. SpaceX's Starship is being explicitly marketed by Elon Musk for point-to-point Earth transport β anywhere on the planet in under 60 minutes. The economics that killed Summerfield's vision (single-use missiles costing millions) collapse if a fully reusable vehicle can fly the route for the cost of fuel and ground handling. A Starship cargo bay holds roughly 100 tons. At 20 grams per letter, that is five million envelopes per flight β or, more realistically, urgent high-value cargo: organs for transplant, blood products, semiconductor masks, classified diplomatic pouches.
The technical obstacles Schmiedl and Zucker faced β unreliable propellants, no guidance, no recovery β are solved problems. The remaining barriers are regulatory: overflight rights, sonic boom corridors, range safety. These are exactly the barriers supersonic mail faced in the Concorde era and that Boom Overture is now negotiating again. The Universal Postal Union's 2024 Riyadh Congress quietly added a working group on "high-velocity surface-independent delivery" β the first formal acknowledgment that rocket mail might return as a category.
ArXiv Paper Digest
2026-06-19
Back in 1986, Knight and Leveson ran a famous experiment in software engineering. They asked 27 programmers to independently write the same program from the same spec, hoping that if you ran several copies side-by-side and took a majority vote, you'd get a system more reliable than any single version. The disappointing result: the programmers tended to make the same mistakes on the same tricky inputs. Independent humans weren't actually that independent. This experiment essentially killed "N-version programming" as a practical reliability technique for decades.
This paper asks an obvious but timely question: what if we redo the experiment, but with AI coding agents instead of humans? Agents don't have shared educational backgrounds or office-water-cooler bias. You can vary the underlying LLM, the agent framework, and even the target programming language. Maybe that's enough diversity to make voting actually work.
The authors took the same spec Knight and Leveson used β the Launch Interceptor Program, which decides whether a missile defense system should fire β and generated 48 implementations using different combinations of agents, models, and languages. They then hammered each implementation with one million randomized test inputs and compared results.
The finding: diversity actually shows up this time. Different agent/model/language combinations produce meaningfully different failure modes. Where the 1986 humans clustered their bugs around the same hard cases, the AI agents spread their failures around more, which is exactly the property that makes majority voting useful. The variations across implementation languages (e.g., Python vs. Java vs. Rust) seemed to matter as much as variations across models.
A few things to keep in mind:
Still, the result is a quiet but significant update to a 40-year-old conclusion. Cheap, parallel code generation changes the economics of fault-tolerant software: it's now plausible to ship five versions of a critical component and vote between them, where in 1986 you'd have had to pay five teams of engineers.
Daily Automotive Engines
2026-06-19
The turbine housing volute is the spiral passage that wraps around the turbine wheel, collecting exhaust gas from the wastegate-fed entry and distributing it evenly around the wheel's circumference before it spirals inward through the blades. Think of it as the inverse of the compressor volute: instead of collecting flow from a spinning wheel, it feeds a spinning wheel from a tangential inlet.
The volute's cross-sectional area decreases continuously as you travel around the spiral toward the tongue (the sharp divider where the spiral meets itself). This area reduction is what defines the housing's A/R ratio β but more importantly, the volute's shape determines how uniformly exhaust energy gets delivered around the 360Β° of wheel circumference.
A well-designed volute maintains nearly constant flow velocity from the inlet to the tongue. If the area tapers too quickly, gas accelerates and pressure drops near the tongue, starving the last blades the gas reaches. If it tapers too slowly, you get separation and recirculation, which both rob spool energy and create pulsation that beats up the wheel.
Volute cross-section shape matters too. Older cast-iron housings used roughly circular cross-sections because they're easy to core-cast. Modern performance housings use pear-shaped or trapezoidal cross-sections that put the centroid of flow closer to the wheel's inducer, reducing the radial distance gas must travel to reach the blades. Shorter flow path = less heat loss to the housing wall = more energy delivered to the turbine.
Real-world example: The Garrett GTX3582R Gen II housing redesign moved from a circular volute cross-section to a pear-shape and shifted the volute tongue position by about 8Β°. Result: roughly 4% better turbine efficiency at the same A/R, which translates to ~200-300 RPM earlier spool on a typical 2.0L engine β without changing wheel geometry at all. The housing was doing the work.
Rule of thumb for volute sizing: The cross-sectional area at any angular position ΞΈ around the spiral should follow A(ΞΈ) β A_inlet Γ (1 β ΞΈ/360Β°). So at the halfway point (180Β°), the volute should be roughly half its inlet area. Deviate from this linear taper and you'll see either choking at the tongue or sluggish response from uneven blade loading.
The volute also handles thermal expansion brutally β exhaust gas at 1700Β°F slams into a casting that started at ambient. This is why turbine housings crack at the tongue and the volute floor first; those are the highest-stress zones where thermal gradients are sharpest.
Daily Debugging Puzzle
let _ = Lock Drop Trap: The Mutex You Acquired But Didn't Hold2026-06-19
This Logger uses a Mutex<()> as a coarse lock to serialize multi-part log lines so they don't interleave across threads. It compiles cleanly, the unwraps never trip, and a quick test on one thread looks fine. Under load with four threads, the output is jumbled β words from different lines spliced together.
use std::sync::{Arc, Mutex};
use std::thread;
struct Logger {
lock: Mutex<()>,
}
impl Logger {
fn log(&self, parts: &[&str]) {
let _ = self.lock.lock().unwrap(); // serialize the prints
for p in parts {
print!("{} ", p);
}
println!();
}
}
fn main() {
let logger = Arc::new(Logger { lock: Mutex::new(()) });
let mut handles = vec![];
for i in 0..4 {
let l = Arc::clone(&logger);
handles.push(thread::spawn(move || {
for j in 0..200 {
let a = format!("thread{}", i);
let b = format!("iter{}", j);
l.log(&[&a, &b, "done"]);
}
}));
}
for h in handles { h.join().unwrap(); }
}
let _ = self.lock.lock().unwrap(); looks like it binds the MutexGuard to _ and holds it for the rest of the function. It doesn't. In Rust, plain _ is not a binding β it's a wildcard pattern that matches and immediately discards the value. The MutexGuard is dropped before the next statement runs, releasing the lock before any of the print! calls execute.
This is fundamentally different from let _guard = .... A name that starts with an underscore (_guard, _x) is a real binding; it just silences the unused-variable warning. Its drop runs at end of scope, like any other local. The visual similarity between _ and _guard is what makes this so easy to miss in review.
The same trap fires with any RAII guard: File, scopeguard::defer, transaction handles, tracing::span::Entered. Writing let _ = file_lock.acquire()?; looks defensive; it does nothing. The borrow checker can't help β there's no borrow to track because the value is gone.
It's even worse than a no-op. If the data the lock protects is accessed through the guard (a normal Mutex<T>), the compiler stops you because the guard is gone. But with Mutex<()> used as a coarse external lock, or with re-locking like let _ = m.lock(); let g = m.lock();, the code compiles and runs β silently racing.
The fix is one character:
fn log(&self, parts: &[&str]) {
let _guard = self.lock.lock().unwrap(); // held to end of scope
for p in parts {
print!("{} ", p);
}
println!();
}
A few defensive habits worth adopting:
_. Always give it a name, even an underscore-prefixed one like _guard.let_underscore_lock lint β it catches exactly this for the standard sync primitives.Mutex<T> over Mutex<()> when feasible. Putting the protected data inside the mutex forces access through the guard, so dropping it early becomes a compile error rather than a race.drop(guard); explicitly. It's louder than let _ =, and it actually says what you mean.let _ = expr; discards the value immediately β for any RAII guard, that means the resource is released before the "protected" code even starts; use let _name = β¦ (a real binding) to hold it for the scope.
Daily Digital Circuits
2026-06-19
Domino logic chains dynamic gates together β each stage precharges its output node high during the precharge phase, then conditionally discharges through an NMOS pull-down network during evaluate. The classic structure has a footer transistor: an NMOS device in series with the pull-down network, gated by the clock. The footer's job is simple β it blocks the discharge path during precharge so the precharged node doesn't accidentally drain through the logic while the PMOS is also trying to pull it high. Footless domino removes that transistor.
Why remove it? The footer is in series with every input pattern, so it adds ~15-25% to evaluation delay on a typical 4-input NAND domino gate. In a deeply pipelined high-frequency datapath β think the integer ALU of a 5 GHz CPU β that's a critical-path tax you'd rather not pay. Footless domino drops the transistor, leaving the pull-down network connected directly to ground. Evaluate gets faster; layout shrinks.
The cost is real. Without the footer, the pull-down network is always connected to ground. During the precharge phase, if any input is high, the PMOS precharge transistor and the NMOS pull-down network fight each other β a brief contention current flows from VDD to GND. This wastes power and, more importantly, can leave the precharge node at a degraded voltage (maybe 0.8Β·VDD instead of full VDD). The next stage's noise margin shrinks. Worse: if inputs aren't monotonically rising during evaluate (the cardinal rule of domino), a footless gate can be discharged spuriously during precharge and never recover.
The rule of inputs: footless domino only works when its inputs come from the outputs of other domino gates in the same clock phase. Those outputs are guaranteed low during precharge (they were either discharged or untouched from the prior cycle's reset), so no contention occurs. The first stage of a domino chain β the one fed by static logic or flip-flops β must be footed, because static inputs can be high during precharge.
Real-world example: Intel's Pentium 4 used footless domino aggressively in its double-pumped integer ALU running at 2Γ the core clock. The first gate after each latch was footed (interfacing with static signals); internal gates in the cascade were footless to hit timing.
Rule of thumb: footer adds ~3 inverter-delays of delay and ~2% area; footless saves both but requires the previous stage to be domino. In a 6-stage domino cascade, footing only stage 1 saves you ~12% of the chain's delay versus footing everything.
Daily Electrical Circuits
2026-06-19
A resolver is a rotary transformer that reports shaft angle as the ratio of two analog signals. Unlike optical encoders, resolvers have no electronics in the rotating assembly β just copper windings on a laminated steel rotor and stator. That's why they survive in jet engines, missile actuators, EV traction motors, and steel mills where temperatures hit 200Β°C and vibration would shake an encoder to death.
How it works: The rotor carries a primary winding excited with a sinusoidal reference, typically 4β10 kHz at 2β7 VRMS. Two stator windings sit 90Β° apart mechanically. As the rotor turns through angle ΞΈ, the stator outputs are:
The carrier Οt is identical in both; only the envelope encodes ΞΈ. Take the arctangent of the demodulated envelopes and you have absolute angle β no homing required at power-up. A synchro is the older three-phase cousin (S1/S2/S3 at 120Β°); a Scott-T transformer pair converts synchro outputs to resolver-format sin/cos for modern processing.
The RDC (Resolver-to-Digital Converter): Chips like the AD2S1210 or AD2S1205 perform the demodulation and arctangent in hardware using a Type-II tracking loop. The loop drives an internal angle counter until sin(ΟΜ)Β·cos(ΞΈ) β cos(ΟΜ)Β·sin(ΞΈ) = sin(ΞΈ β ΟΜ) β 0. Output is a parallel digital word (10β16 bits) plus a velocity signal β useful for closing motor control loops without a separate tachometer.
Real-world example: A Toyota Prius traction motor uses a brushless resolver on the rotor shaft. The inverter excites it at 10 kHz, an AD2S1210 produces 12-bit angle (4096 counts/rev) at update rates above 200 kHz, and the field-oriented control algorithm uses that angle to commutate the IPM motor. The resolver tolerates the 150Β°C oil bath that would melt an optical encoder's LED.
Design rule of thumb: Pick your excitation frequency at least 10Γ your maximum mechanical rotation frequency to avoid envelope aliasing. For a 12,000 RPM motor (200 Hz), 4 kHz excitation works; for 30,000 RPM aerospace actuators, push to 10 kHz. Drive the rotor through a low-impedance buffer (β€10 Ξ©) β resolver primary impedance is typically 50β500 Ξ©, and any source impedance creates a phase shift that masquerades as angle error.
Watch out for: Quadrature error (sin and cos amplitudes mismatched) causes angle-dependent error that looks like a 2Γ harmonic. Most modern RDCs include automatic gain calibration to null this out.
Daily Engineering Lesson
2026-06-19
A rotameter is a flow meter you can read with your eyeballs and no electronics. It's a vertical, transparent tapered tube β narrow at the bottom, wider at the top β with a metal or plastic float inside. Fluid enters at the bottom and flows upward. The float rises until the annular area around it is large enough that the upward drag force balances the float's submerged weight. Higher flow β larger annular area needed β float sits higher. You read the flow rate off a scale etched on the tube at the float's reference edge (usually the widest diameter or the top, depending on the maker β get this wrong and you're off by several percent).
The force balance. At equilibrium:
where Vf and Οf are float volume and density, Ο is fluid density, and Af is the float's max cross-section. Because the tube tapers, the annular flow area increases roughly linearly with height β which is why most rotameters have a nearly linear scale.
Why the float shape matters. A sharp-edged float gives readings that are nearly independent of viscosity (drag is dominated by inertia). A ball float is viscosity-sensitive and is fine for water-like fluids but drifts badly on glycerin or oil. Industrial rotameters use machined floats with grooves that make them spin β the spin centers the float in the tube and improves repeatability.
Concrete example. A lab rotameter on a chromatography rig is rated 0β500 mL/min on air at 1 atm, 20Β°C. You're flowing nitrogen at 3 bar absolute. Gas rotameters scale with β(Οactual/Οcalibration). Nitrogen at 3 bar is roughly 3Γ denser than calibration air, so a reading of 300 mL/min on the scale actually means about 300 Γ β3 β 520 mL/min of actual nitrogen. Skip this correction and your column is overloaded.
Rules of thumb.
Rotameters lose to Coriolis and thermal mass flow meters on precision, but they win on cost, simplicity, and the fact that a power outage doesn't blind you.
Forgotten Darkroom
2026-06-19
Book: Platinum toning : including directions for the production of the sensitive paper by Clark, Lyonel (1892)
Read it: Internet Archive
Tucked into the back-matter advertisements of Lyonel Clark's 1892 treatise on platinum toning β a serious technical work on producing the most archival photographic prints ever devised β sits an equipment catalog from Perken, Son & Rayment that quietly documents a piece of stagecraft modern audiences have entirely forgotten: the dissolving view.
'OPTIMUS' MAGIC LANTERNS. Adapted for use with Limelight. For dissolving Two Lanterns are necessary. Each Magic Lantern is efficient for exhibitions⦠'OPTIMUS' BI-UNIAL FOR LIMELIGHT, The Top Lantern may be used separately with Oil Lamp.
That short note describes a technology that bridged still photography and cinema by nearly a generation. A "bi-unial" was two magic lanterns stacked vertically into a single mahogany cabinet, each aimed at the same screen. A skilled operator would project an image from the lower lantern, then slowly close its iris while opening the upper lantern's β making one painted or photographic slide dissolve seamlessly into the next.
The light source was the other piece of lost knowledge. The catalog notes:
The refulgent lamp has three wicks (or four wicks 2s. extra), yielding a brilliantly-illuminated picture.
For high-end shows, operators upgraded to limelight β a pellet of calcium oxide (quicklime) heated to incandescence by a directed oxyhydrogen flame. The result was a piercing white light visible across a theater, and the origin of the phrase still used today: to be "in the limelight." For a top-tier rig β the "TRIPLE LANTERN FOR LIMELIGHT," with three stacked projectors and compound condensers β Perken & Son charged Β£14 10s, roughly two months' wages for a skilled tradesman.
What's startling, looking back, is how much of modern presentation grammar these Victorians had already worked out:
Edison's Vitascope (1896) and the LumiΓ¨res' CinΓ©matographe (1895) would soon make all of this obsolete by adding motion. But for half a century before film, traveling lanternists had been performing what were essentially live multimedia shows β dissolving a daytime landscape into the same scene at night, fading a healthy face into a skeletal one, or layering an erupting volcano over a calm Italian villa. Audiences gasped. The vocabulary of cinematic transitions was being developed in front of them, by men cranking handles in the dark.
Forgotten Patent
2026-06-19
In 1883, Thomas Edison noticed something strange while tinkering with his light bulbs: an electric current would leap across the vacuum from the hot filament to a nearby metal plate β but only in one direction. He called it the "Edison effect," patented it (US 307,031) as a curiosity, and moved on. He had no idea what he'd just found.
Twenty-one years later, a British professor named John Ambrose Fleming β a consultant to Marconi's wireless company and a former Edison employee β realized the Edison effect was exactly the tool radio desperately needed. On November 16, 1904, he filed a British patent (GB 24,850) for what he called an "Oscillation Valve." The US version, US Patent 803,684 ("Instrument for Converting Alternating Electric Currents into Continuous Currents"), was granted November 7, 1905.
What it does: Inside a glass vacuum bulb, a heated filament (the cathode) boils off electrons. A cold metal plate (the anode) sits nearby. Apply positive voltage to the plate and electrons flow across; apply negative voltage and nothing happens. Current goes one way only. It's a one-way valve for electricity β a diode.
That sounds modest, but in 1904 it solved an unsolved problem. Early radio receivers used crude "coherers" β glass tubes of metal filings that clumped together when radio waves hit them. They were unreliable, slow, and needed mechanical tapping to reset. Fleming's valve rectified the alternating radio-frequency signal into a smooth DC pulse that drove a telephone earpiece directly. For the first time, you could hear radio cleanly.
The chain reaction it set off:
The patent war: Marconi held Fleming's patent and used it to block competitors for nearly two decades. In 1943, the US Supreme Court invalidated it (Marconi Wireless v. United States) β but only because prior art from Jagadish Chandra Bose and others showed semiconductor detection predated Fleming. The court didn't deny Fleming's importance; it denied Marconi's monopoly during wartime.
Built better now? Silicon Schottky diodes do Fleming's job a million times faster, in a package the size of a grain of sand, at one-thousandth the power. But β and this is the surprise β vacuum tube diodes never fully died. They're still preferred in high-voltage tube audio amplifiers (the "rectifier tube" guitar players obsess over), in some medical X-ray systems, and in radiation-hardened space electronics where solid-state diodes get fried by cosmic rays. A 2025 Fleming valve would look almost identical to a 1905 one, because the physics didn't change β only the manufacturing did.
Edison saw an inexplicable glow inside a bulb and shrugged. Fleming saw the first electronic device.
Daily GitHub Zero Stars
2026-06-19
Language: HTML
This repo is a quiet gem in the rapidly-growing space of agent skills β modular capability packs that extend AI coding assistants like Claude Code. Johan's contribution is a skill called better-planning, focused on collaborative product and feature planning between humans and AI agents.
What makes it stand out from the typical "prompt template" repo is its opinionated workflow:
The HTML language tag is misleading β the substance here is the skill manifest and prompt scaffolding, with HTML used purely as a presentation layer for the review companions. It's the kind of repo that's easy to skip past in a feed, but if you're already using Claude Code or a similar agentic IDE, it's a drop-in upgrade to how you scope feature work.
Who benefits: Product engineers and tech leads who do a lot of greenfield design with AI assistance, anyone frustrated by agents that jump to implementation before the problem is well-framed, and skill authors looking for a reference example of how to structure a well-scoped, opinionated skill rather than a kitchen-sink prompt.
Daily Hardware Architecture
2026-06-19
DRAM stores each bit as a charge in a tiny capacitor, and those capacitors leak. If you don't periodically read and rewrite each row, the data evaporates within milliseconds. The fix β refresh β is one of DRAM's dirtiest secrets: your memory regularly stops answering the CPU so it can remind itself what it's holding.
The JEDEC standard requires every row to be refreshed within a retention time (tREFI window) of 64 ms at normal temperatures, or 32 ms above 85Β°C. A modern DDR4/DDR5 bank holds ~32K-128K rows. The memory controller issues a refresh command (REF) every tREFI = 7.8 Β΅s (3.9 Β΅s in hot mode), and each refresh takes tRFC β anywhere from 350 ns on small DDR4 chips to 880 ns on a 32Gb DDR5 die.
The overhead math: tRFC / tREFI = 880 ns / 7800 ns β 11% of memory bandwidth literally vanishes on big DDR5 parts. On older 8Gb DDR4 it's closer to 3-4%. As capacities grow, refresh eats a larger slice β this is one reason DDR5 introduced same-bank refresh and fine-granularity refresh, letting the controller refresh one bank while others keep serving requests.
Real-world example: Rowhammer attacks exploit exactly this physics. By hammering a row thousands of times within the 64 ms refresh window, attackers induce charge leakage in adjacent rows fast enough to flip bits before the next refresh saves them. Modern DDR5 ships Refresh Management (RFM) and on-die Target Row Refresh (TRR): the chip counts row activations and sneaks in extra refreshes for victim neighbors. This costs bandwidth β your "11%" can climb to 15%+ under adversarial access patterns, and benchmarks like memtester show measurable slowdowns when TRR fires aggressively.
What it means for performance:
tRFC / tREFI. If your DIMM datasheet lists tRFC=550ns, you're losing ~7% bandwidth to refresh before anyone touches the memory bus.The cruel irony: DRAM density doubles, but tRFC scales roughly linearly with row count, so each generation pays more refresh tax than the last. ECC RAM, HBM, and persistent memory all dodge this differently β but commodity DDR remains stuck rewriting itself, forever.
Hacker News Deep Cuts
2026-06-19
Link: https://github.com/Wack0/entii-for-workcubes
HN Discussion: 1 points, 0 comments
This is exactly the kind of beautifully pointless engineering that the early web celebrated and modern HN often scrolls right past. Someone has ported Windows NT β specifically the PowerPC builds that Microsoft quietly shipped and then abandoned in the mid-1990s β to run on the Nintendo GameCube and Wii.
The technical lift here is genuinely impressive. Consider what's involved:
Why does this matter beyond the novelty? A few reasons a technical audience should care:
The repo name itself β entii-for-workcubes β is a delightful pun on "NT" and the GameCube's nickname, suggesting the author has both the humor and patience required for a project of this scope. This is the platonic ideal of a weekend hacker project that turns into years of work.
HN Jobs Teardown
2026-06-19
Source: HN Who is Hiring
Posted by: aeneaswiener
Cytora is a London-based B2B startup selling an API platform to commercial insurance underwriters. The CTO himself is posting, which is the first tell: this is a small team where engineering leadership is hands-on with hiring, not delegated to recruiters. That usually means a flatter org and faster decisions, but also that engineers will be measured directly by the person who built the stack.
The stack tells a story. Golang leads, followed by JavaScript and Python. Go as the primary language for an insurance data platform is a deliberate bet: they want concurrent, performant services for what is essentially a high-throughput risk-scoring API. Python almost certainly handles the data science and model training side; JavaScript is the thin frontend or internal tooling layer. The phrase "one of the best places to build data products in Go" is the giveaway β they are productizing ML/statistical models as Go services rather than the more common Python-FastAPI route. That's an opinionated choice that signals maturity around latency and ops.
What the posting reveals:
Green flags: CTO-as-recruiter, named stack, clear vertical focus, "cloud-native" architecture mentioned without buzzword soup. The "proud to be one of the best places to build data products in Go" line is a genuine pitch to a specific engineer archetype β the Go-curious data infra person β rather than generic "rockstar" filler.
Red flags: No salary band, no team size, no funding stage disclosed. "Laser focused" is mild jargon. Insurance is notoriously slow-sales and regulator-heavy, which can grind engineers down. And the WFH-due-to-COVID framing implies a strong onsite culture will return β remote-first candidates should self-select out.
Daily Low-Level Programming
2026-06-19
You allocate a 2MB huge page. The buddy allocator needs 512 physically contiguous 4KB pages aligned on a 2MB boundary. After hours of uptime, your free memory is shredded β plenty of free pages, but scattered. kcompactd is the kernel thread that quietly walks memory zones and moves pages around to manufacture contiguous regions.
How it works. Compaction runs two cursors against each other inside a memory zone:
Pages get migrated by atomically updating every PTE that maps them, copying contents, and freeing the old page. Pinned pages (DMA buffers, mlocked memory, kernel slab pages) are unmovable and act as compaction roadblocks β one unmovable page in the middle of a 2MB region kills that huge page candidate forever.
Triggers. kcompactd wakes on three signals: (1) khugepaged needs a 2MB region to promote, (2) a high-order allocation just failed and woke the per-node kcompactd thread, (3) /proc/sys/vm/compaction_proactiveness (default 20) tells it to run periodically even without pressure.
Real-world example. A Redis instance on a 256GB box runs for a month with THP enabled. grep HugePages /proc/meminfo shows AnonHugePages: 8GB when it should be 200GB. /proc/vmstat reveals compact_fail: 4M, compact_stall: 12M β kcompactd is trying constantly and failing. The fix: echo 1 > /proc/sys/vm/compact_memory forces a synchronous full compaction, which freezes allocations for ~3 seconds but reclaims 180GB of huge-page-able memory. Long-term fix: reduce slab pressure (those kernel objects pin pageblocks as unmovable).
Rule of thumb. Cost of compacting one 2MB region β copy 2MB + ~512 TLB shootdowns. On a 100GB/s memory subsystem with 1Β΅s IPI cost per shootdown, that's ~20Β΅s of copy + ~500Β΅s of cross-core stalls. The shootdowns dominate. If you see compact_stall climbing faster than 1000/sec in vmstat, your workload is paying real latency for THP.
Check /proc/pagetypeinfo to see fragmentation directly: it shows free blocks per order per migratetype. Lots of Order-0 free, zero Order-9 free in the Movable type = classic fragmentation, compaction is your only escape.
RFC Deep Dive
2026-06-19
For three decades, DNS was the internet's biggest, loudest privacy leak β and almost nobody talked about it. Every web page you visit, every email you send, every app that phones home generates DNS queries that, until very recently, traveled across the wire as plaintext UDP, readable by anyone on the path. RFC 7626 was the document that finally said this out loud, named the threats, and lit the fuse on the encrypted-DNS revolution we're living through now.
StΓ©phane Bortzmeyer β a French DNS engineer at AFNIC and one of the IETF's most prolific privacy voices β wrote it as an Informational RFC. No new protocol, no new bits on the wire. Just a careful, methodical threat model. That modesty is the point: you can't fix what you haven't articulated, and pre-2015 the DNS community largely treated query confidentiality as somebody else's problem.
The RFC's core contribution is splitting the threat surface into two cleanly separated pieces:
From this taxonomy the document enumerates specific leaks engineers had quietly ignored: QNAME being sent in full to root and TLD servers that don't need it; EDNS Client Subnet (RFC 7871) leaking subnet info to authoritatives for "better" geo-routing; cache snooping via non-recursive queries; reverse DNS revealing internal network topology; and the now-obvious fact that "private" data like usernames embedded in hostnames (think userid.dropbox.com-style patterns) was being broadcast in clear.
What makes RFC 7626 historically important is what came after it. Once the threat model existed, the standards work cascaded:
The quieter consequence is architectural. Bortzmeyer's framing forced the community to admit that encrypting transport doesn't solve the privacy problem if you also centralize the resolver. The current debates around Oblivious DoH (RFC 9230), local resolvers, and split-horizon corporate DNS all trace their vocabulary back to the wolf/sheep distinction in this document.
It's a useful reminder that some of the most influential RFCs ship zero new bytes on the wire. They just teach a generation of engineers a vocabulary precise enough to fix a problem that had been hiding in plain sight since 1983.
Stack Overflow Unanswered
2026-06-19
The asker is building a single-producer/single-consumer (SPSC) queue and wants to understand which shared microarchitectural resources a "busy reader" β a consumer that spins reloading a cache line β can saturate. The concern is subtle false sharing: even when producer and consumer touch logically distinct lines, they may contend on hidden structures the PMU doesn't expose cleanly.
Why it's hard: The memory subsystem on modern x86 is a stack of queues, buffers and trackers, many of which Intel/AMD only partially document. A spinning reader doesn't just "read memory" β it pushes traffic through:
A "busy reader" hitting the same line repeatedly mostly stays in L1 once warm, costing nothing. But the moment the producer writes β invalidating the line β the reader's next load takes a long round trip through the CHA to fetch the modified copy from the producer's core. That coherence handshake is the real cost, and the consumer's pending miss occupies an LFB the entire time.
Direction toward an answer:
L1D_PEND_MISS.FB_FULL, OFFCORE_REQUESTS_BUFFER.SQ_FULL, and uncore UNC_CHA_TOR_OCCUPANCY / UNC_CHA_REQUESTS. These do exist but you need the right CPU's uncore reference (Intel's Uncore Performance Monitoring Reference Manual per generation β Skylake-SP, Ice Lake-SP, Sapphire Rapids each differ).MEM_LOAD_L3_MISS_RETIRED.REMOTE_HITM or ...LOCAL_HITM β a load that found the line dirty in another core's cache.Gotchas: a single spinner on one line looks cheap because the LFB coalesces. Multiple readers, or a reader that touches neighboring lines (adjacent-line prefetcher pulls them in), can quietly cause snoops to lines the producer thought it owned exclusively. Padding to two cache lines (128B) β not one β is the conservative answer on Intel because of that prefetcher.
Daily Software Engineering
2026-06-19
You have a data structure read a million times per second and updated maybe ten times per minute β a routing table, a config map, a feature-flag registry. A mutex makes every read pay synchronization cost it almost never needs. Read-Copy-Update (RCU) flips the deal: readers pay nothing, writers do all the work.
The mechanic is simple. Readers dereference a pointer to the current version with no locks, no atomic operations beyond a plain load. A writer doesn't mutate in place β it copies the structure, modifies the copy, then atomically swaps the pointer to publish the new version. Old readers keep using the old version until they're done. Only after every pre-swap reader has finished can the old version be reclaimed β the famous "grace period."
Real example: the Linux kernel's routing table. Every packet looks up a route β millions per second on a busy box. Routes change on the scale of seconds. Linux uses RCU: packet-handling code reads the table lock-free, and route updates publish a new table via pointer swap. The reclamation happens after a grace period β typically after every CPU has performed a context switch, which proves no reader from before the swap is still running.
The rule of thumb: reach for RCU when your read:write ratio exceeds about 1000:1 and reads sit on a hot path. Below that ratio, the writer's copy cost (allocate + duplicate + reclaim) dominates and a reader-writer lock wins. Above it, eliminating the read-side barrier compounds into massive throughput gains.
What RCU costs you:
Where you'll meet it in user space: userspace-rcu (liburcu) powers parts of LTTng and DPDK. Java's CopyOnWriteArrayList is RCU's spiritual cousin β same publish-by-swap idea, just without the deferred reclamation because the GC handles it. Functional languages get RCU semantics nearly for free: persistent data structures and atomic root-pointer swaps are RCU.
Don't reach for RCU when writes are frequent, the structure is huge, or you need readers to see the latest write immediately. Reach for it when reads vastly outnumber writes and contention on the read path is killing you.
Tool Nobody Knows
2026-06-19
Every sysadmin has done the dance: an email isn't arriving, so you fire up openssl s_client -starttls smtp -connect mx:587, type EHLO me, copy-paste a base64'd password, hand-craft MAIL FROM:, miss a CRLF, get disconnected, start over. swaks β the Swiss Army Knife for SMTP, a single Perl script by John Jetmore β has been doing all of that for you since 2003. It's packaged in Debian, Ubuntu, Fedora, Homebrew, and the BSDs.
The simplest invocation is just a sanity check that a server accepts mail for an address:
swaks --to [email protected] --server mx1.example.com
You get a full, color-coded transcript of every SMTP verb, the server's banner, the EHLO capabilities, and the final 250 β or whatever error actually killed it. No more squinting at /var/log/mail.log hoping the MTA wrote enough.
Where it really earns its keep is the awful matrix of TLS + AUTH + submission ports. Test a Gmail-style submission with STARTTLS and LOGIN auth in one line:
swaks --to [email protected] --from [email protected] \
--server smtp.example.com:587 \
--tls --auth LOGIN \
--auth-user [email protected] \
--auth-password 'app-specific-password'
Need implicit TLS on 465 instead? Swap --tls for --tlsc. Need to force a specific auth mech? --auth CRAM-MD5. Need a client cert? --tls-cert / --tls-key. Need to pin a CA? --tls-ca-path.
The killer flag nobody mentions is --quit-after. You can probe whether a server would accept a recipient without actually delivering anything β perfect for testing relay/anti-spoof rules without spamming real people:
# Will mx.example.com relay for this address? Don't actually send.
swaks --to [email protected] --server mx.example.com --quit-after RCPT
Valid checkpoints are CONNECT, BANNER, FIRST-HELO, TLS, AUTH, MAIL, RCPT, DATA, DOT, and QUIT. Want to verify your STARTTLS cert chain without ever authenticating? --quit-after TLS.
Attachments work the way you'd hope a 2003 Perl script wouldn't:
swaks --to [email protected] --server mx --attach @report.pdf \
--header "Subject: nightly run" --body "see attached"
The @ means "file"; without it, the argument is treated as literal content. Same trick works for --body @message.txt and --data @full-rfc822.eml if you want to inject a pre-built message verbatim, headers and all β invaluable for reproducing a customer's bounced message.
A few one-liners that pay rent in my ~/.bash_history:
# Show literally every byte on the wire, including TLS handshake summary
swaks --to x@y --server mx -tls --show-raw-text
# Test DSN (delivery status notification) requests
swaks --to x@y --server mx --dsn SUCCESS,FAILURE --dsn-ret HDRS
# Pipeline 5 messages in one connection to test rate limits
swaks --to x@y --server mx --pipeline -n 5
# Use it as a smoke test from cron, exit nonzero on any SMTP error
swaks --to monitor@y --server mx --silent 2 || page-oncall
Compare to the alternatives: mail(1) hands off to the local MTA and you've lost visibility; sendmail -bs only talks to localhost; telnet can't do TLS; openssl s_client can do TLS but you're typing protocol by hand. swaks is the one tool that gives you scriptable, repeatable, full-fidelity SMTP β exactly the conversation a real client would have, with a transcript you can paste into a bug report.
swaks turns any TLS/auth/DSN/attachment combination into a one-line, scriptable, fully-logged transaction.
What If Engineering
2026-06-19
Seasonal thermal storage is the holy grail of decarbonized cooling: harvest winter's free cold, hoard it underground, then bleed it out through August. The Romans did a primitive version with snow pits. Let's scale it up to feed a million-person city.
The thermodynamic premise. Water's latent heat of fusion is 334 kJ/kg β melting 1 kg of ice absorbs the same heat as warming 80 kg of water by 1Β°C. That phase-change density is why ice batteries beat chilled-water tanks by roughly 5β7Γ per cubic meter.
Sizing the cooling load. A temperate city of 1 million people in a hot summer (think Minneapolis-meets-Phoenix) needs roughly 3 GW of cooling at peak, averaging maybe 1.5 GW over a 120-day cooling season. Total seasonal energy:
1.5 Γ 10βΉ W Γ 120 days Γ 86,400 s/day β 1.55 Γ 10ΒΉβΆ J
Dividing by ice's latent heat (334 kJ/kg) plus ~20Β°C of sensible cooling as meltwater warms (84 kJ/kg) gives ~420 kJ/kg of useful cold. We need:
1.55 Γ 10ΒΉβΆ J Γ· 4.2 Γ 10β΅ J/kg β 3.7 Γ 10ΒΉβ° kg of ice
That's 37 million tonnes, or ~40 million mΒ³ β a cube 342 m on a side. Equivalently: a lake 4 kmΒ² Γ 10 m deep, frozen solid.
The freezing problem. You can't just wait for winter β natural ice grows as βt because frozen ice insulates the water below. Stefan's equation gives ice thickness h β β(2kΒ·ΞTΒ·t / ΟΒ·L). At ΞT = 20Β°C and 90 days, you'd get only ~1.5 m of natural ice. We need 10 m.
Solution: spray-ice towers. Pump lake water into the air during sub-freezing nights; droplets freeze mid-flight and pile up. Alberta's tar-sands camps already do this. At -15Β°C with 5 m/s wind, you can manufacture ~50 kg/mΒ²/hour of ice. Covering 4 kmΒ² for 1,000 cold-hours/winter yields 200 million tonnes β 5Γ our requirement. Feasible.
Insulation: the make-or-break. An exposed ice pile melts at ~1 cm/day from solar gain alone (~200 W/mΒ² absorbed). Over 180 days that's 1.8 m gone β 18% loss for our 10-m pile. Cover it with 1 m of wood chips (k β 0.08 W/mΒ·K) and a reflective tarp, and conductive losses drop to ~2 W/mΒ², melting only ~5% of the pile per summer. Stockholm's Avesta district cooling system uses this exact trick at smaller scale.
Distribution. Melt water exits at 0Β°C, returns at ~12Β°C. That 12 K ΞT Γ 4.18 kJ/kgΒ·K means we need to circulate ~30,000 kg/s β a flow rate matching the Seine in low season. Manageable with 3-m district cooling mains, already standard in Helsinki and Paris.
The catch. Land area. 4 kmΒ² of urban-adjacent reservoir is hard to find. And climate change is winning: a warming winter that delivers only 700 cold-hours instead of 1,000 cuts ice production by 30%. The whole scheme has a built-in death spiral β it works best in exactly the climates that are warming fastest.
Wikipedia Rabbit Hole
2026-06-19
Wikipedia: Read the full article
In 1906, a New York inventor named Lee de Forest took a simple two-electrode vacuum tube and inserted a third element β a tiny zigzag of wire he called a "grid" β between the cathode and the plate. He didn't fully understand what he had built. He called it the "Audion" and marketed it as a radio detector. But that little grid was about to make the 20th century possible.
The genius of the triode is almost embarrassingly simple. A hot cathode boils off electrons. The plate, held at a positive voltage, attracts them. But the grid sits in between, and a tiny voltage change on the grid can choke off or unleash a torrent of electrons flowing to the plate. A whisper at the grid becomes a shout at the output. Amplification β the ability to make a weak signal bigger without distorting it β had never existed before in any practical form.
Everything you associate with the early electronic age cascades from this:
De Forest, meanwhile, spent years in court. Edwin Armstrong figured out the regenerative feedback circuit that made the Audion actually useful as an amplifier and oscillator. The two waged one of the longest, most bitter patent wars in American technological history β it ran for two decades and went to the Supreme Court twice. Armstrong was, by nearly every technical account, correct. De Forest won the legal case anyway. Armstrong took his own life in 1954; his widow eventually won most of the related patent disputes against major corporations.
What's wild is that the triode never really died. The transistor (1947) did everything the triode did, smaller and cooler and without needing to glow. But audiophiles still pay enormous sums for tube amplifiers because of how triodes distort β the harmonics they add when overdriven are mostly even-order, which the human ear perceives as warm and musical rather than harsh. Every screaming Marshall stack on every rock record you love runs on the same physics De Forest stumbled into in 1906.
Even stranger: triodes are still manufactured for high-power radio transmitters, industrial heating, and certain radar systems, because at very high powers and frequencies, glass and vacuum still beat silicon.
Daily YT Documentary
2026-06-19
Channel: Lost Design (27 subscribers)
For more than a century, reaching the North Pole on foot or by ship meant battling shifting pack ice that could crush a hull or swallow a sled team. This video tells the story of the engineer who proposed an idea so audacious his peers called it suicidal: instead of crossing the ice, dive beneath it.
The video traces the engineering reasoning behind under-ice navigation β why a submarine, rather than an icebreaker, was the only craft with a realistic chance of reaching the Pole. Expect discussion of the unique problems faced when operating beneath a continuous ceiling of ice: no surfacing to take a star fix, no radio contact, no escape route in an emergency, and inertial navigation systems that had to be accurate enough to find rare polynyas (open-water gaps) for emergency surfacing.
What makes this worth watching is the framing. Rather than a dry recounting of USS Nautilus's 1958 voyage, the video focuses on the conceptual leap β why every engineer initially rejected the idea, what changed, and the cascade of new technologies (under-ice sonar, gyrocompass refinements, reactor reliability) that had to mature simultaneously to make it possible. Good fit for anyone interested in how genuinely novel engineering proposals get from "insane" to "inevitable."
Daily YT Electronics
2026-06-19
Channel: Gabriel Barreras (57 subscribers)
Honestly, this batch is rough β most candidates are Shorts, hashtag spam, or low-effort "solder a wire to an LED" clips. Gabriel Barreras' wire-spool organizer is the least bad of the bunch, and actually has some genuine engineering value to it.
The video walks through designing and 3D printing a custom desk organizer for managing prop wiring and wire spools. For anyone who's built an electronics bench, you know the pain: tangled hookup wire, spools rolling off the desk, and the eternal hunt for the right gauge. A purpose-built holder that dispenses wire cleanly is one of those small quality-of-life upgrades that pays off every single session.
What makes this worth a look is the design-for-purpose angle β measuring spool diameters, thinking through how wire should feed out, and iterating on a print until it works. It's a nice example of using CAD and a 3D printer as practical shop tools rather than just toys. If you're new to Fusion 360 or OnShape and want a beginner-friendly project that produces something genuinely useful, a wire organizer is a great first build.
Caveat: the description is short and the channel is tiny, so depth of explanation may be limited. Treat it as inspiration rather than a full tutorial.
Daily YT Engineering
2026-06-19
Channel: Entertainment (5 subscribers)
Most of today's batch are beam analyses in commercial packages (ANSYS, STAAD Pro) or Excel calculators behind paywalls. This one stands out because it walks through the same problem β a cantilever beam under load β using Salome-Meca, the free and open-source FEA suite built on Code_Aster. That makes the workflow actually reproducible without a student license or institutional access.
A cantilever is the canonical FEA "hello world" problem: fixed at one end, loaded at the other, with a closed-form analytical solution (deflection = PLΒ³/3EI) you can check your simulation against. That makes it an ideal teaching vehicle. A complete tutorial should cover geometry creation, meshing decisions (element type, refinement near the fixed end where stress concentrates), boundary condition application, material assignment, solver setup, and post-processing of displacement and von Mises stress fields.
The channel is tiny (5 subscribers) and oddly named "Entertainment," which is a yellow flag, but Salome-Meca tutorials are genuinely scarce on YouTube compared to ANSYS content. If the creator actually demonstrates the full pipeline cleanly, this is more useful to a self-taught engineer than yet another ANSYS clickthrough. Caveat: quality unverified β the channel size and name suggest watching the first few minutes before committing.
Daily YT Maker
2026-06-19
Channel: Create It with Cole (643 subscribers)
Note: today's candidate pool was weak β one entry was a Short, another was hashtag-spam B-roll of kids with popsicle sticks. This invitation-style video from Cole is the least-bad pick, and it still has some substance worth a watch if you're curious about how a working artist runs a community studio.
Cole hosts a weekly open studio for visual artists β most Saturdays plus the occasional Wednesday through summer β and uses this video to walk through what the space actually offers. Expect a tour of the materials and stations available, plus a sense of how she structures drop-in sessions so painters, illustrators, and mixed-media folks can all share the room without stepping on each other.
The real value here is the operational picture of running a small maker's space: how to lay out a flexible studio, what supplies are worth keeping stocked for visitors, and how a single host manages an open-flow session. If you've ever thought about opening your garage, basement, or library room to other makers, this is a useful look at someone doing it on a small scale.
It's a community-building video more than a tutorial, but for solo creators thinking about hosting their own sessions, the logistical glimpses are genuinely informative.
Daily YT Welding
2026-06-19
Channel: Delusional Motorsports (33 subscribers)
Most of this week's crop is hashtag-spammed promo clips for imported modular welding tables β this one is the real deal: a hobbyist actually building a heavy-duty chassis table from scratch in a cramped two-car garage. That's a constraint a lot of home fabricators share, and watching someone solve it honestly is more useful than another factory showroom video.
A chassis table is a serious piece of kit β it has to be flat, rigid, and dimensionally stable enough that whatever you tack together on top of it comes off true. Building one yourself means wrestling with the core problems of fabrication: flattening warped stock, controlling distortion across long welds, squaring up a frame larger than your reference surfaces, and keeping the whole thing mobile without losing rigidity. Casters that don't deflect under load, leveling feet, and a frame stiff enough to resist racking when you roll it across uneven concrete are all non-trivial design problems.
With only 33 subscribers, the creator is genuinely early in their channel, and these scrappy garage builds tend to show the unglamorous reality β the bad tacks, the re-cuts, the on-the-fly adjustments β that polished shop channels edit out. That's where the actual learning lives.
