25 newsletters today.
Abandoned Futures
2026-06-14
In 1956, Goodyear Aircraft Company in Akron, Ohio took twelve weeks and a stack of rubberized nylon fabric to build something nobody had ever seriously attempted: a fully inflatable, pilot-rated airplane that could be packed into a container the size of a footlocker, dropped to a downed airman behind enemy lines, inflated with a hand pump or a small compressor in six minutes, and flown out at 70 mph with 390 miles of range.
It worked. The Goodyear GA-468 Inflatoplane — and its larger two-seat sibling, the GA-447 — flew their first powered tests in February 1956 at Wingfoot Lake. The Army was interested enough to designate the program XAO-3 and later XAZ-1, and signed contracts for twelve aircraft between 1956 and 1959. The structure was a Goodyear-patented material called Airmat: two layers of rubberized nylon fabric held a precise airfoil shape by thousands of internal drop-threads, pressurized to about 7 psi. The wing was, structurally, a balloon that happened to be the exact shape of a NACA airfoil. A 40-hp Nelson H-63 two-stroke engine sat on a small rigid pylon. Empty weight: 240 pounds. Useful load: 240 pounds. Stall speed: 45 mph.
Test pilots flew it more than 200 times. It survived a hailstorm. It survived bird strikes. A bullet through the wing didn't bring it down — the redundant cell structure meant a single puncture leaked slowly enough to land. Goodyear engineers demonstrated packing it into a 44-cubic-foot container and inflating it on a golf course.
The Army cancelled it in 1973. The official reason, in a memo that has since become legendary in aviation circles, was that the Army "could not find a valid military use for an aircraft that could be brought down by a well-aimed bullet." This was, of course, also true of every helicopter in Vietnam. The real reasons were softer: the rescue-pilot mission didn't materialize (helicopters got better faster), the 40-hp two-stroke was unreliable, and a 1962 prototype crash killed a test pilot when a tow cable severed the inflation lines.
Why 2026 is the year to look again. Every objection has dissolved:
Goodyear still holds the original Airmat patents and tooling drawings. The aircraft are in museums in Akron and at Fort Eustis. The technology is sitting there, waiting.
ArXiv Paper Digest
2026-06-14
Authors: Ernest Ng, Nikil Shyamsunder, Francis Pham, Adrian Sampson
ArXiv: 2606.13659v1
PDF: Download PDF
Imagine you're building a chip — say, a piece of custom hardware that talks to a CPU over some protocol. To test that it works, hardware engineers traditionally write two separate programs:
These two programs are mirror images of each other. They encode the exact same protocol — just in opposite directions. But because they're written separately, by hand, for every new hardware module, engineers waste effort and frequently introduce subtle inconsistencies. The driver might think a handshake works one way; the monitor might decode it differently. Bugs hide in that gap.
The authors propose a refreshingly simple idea: write the protocol once, as a single program in a domain-specific language (DSL), and automatically generate both the driver and the monitor from it. The DSL lets you describe a transaction as a sequence of signal-level events — what bits go where, in what order, with what timing. From this single spec, their compiler produces:
The clever insight is treating communication itself as a program — a first-class artifact that can be compiled, analyzed, and reused. This is similar in spirit to how parser generators (like yacc or ANTLR) let you describe a grammar once and automatically produce both readers and writers for a language. Here, the "language" is a hardware protocol.
Why does this matter? Hardware verification is one of the most expensive parts of chip design — bugs found in silicon can cost millions. Anything that reduces hand-written boilerplate and eliminates a whole class of "the driver and monitor disagree" bugs has real economic value. It also opens the door to more advanced tooling: if protocols are programs, you can do things like formally verify that two modules' protocols are compatible, or automatically generate fuzz tests that explore edge cases of the handshake.
This work fits into a broader trend of bringing modern programming-language ideas — types, compilation, formal semantics — into the historically ad-hoc world of hardware design. It's a small idea with potentially large ripple effects.
Daily Automotive Engines
2026-06-14
After air leaves the diffuser, it still needs to get to your intercooler — and that's the volute's job. The volute (also called the compressor scroll or collector) is the spiral-shaped passage cast into the compressor housing that wraps around the diffuser and gathers high-pressure air into a single outlet. It looks simple, but its geometry has a massive effect on efficiency, pressure recovery, and how cleanly your turbo behaves across the map.
The volute works on the principle of constant angular momentum. As air spirals around the housing, the cross-sectional area grows progressively — typically following an Archimedean spiral — so that mass flow accumulating from the diffuser doesn't pile up and choke the passage. Done right, static pressure stays roughly constant around the circumference. Done wrong, you get circumferential pressure distortion that feeds back into the diffuser and wheel, killing efficiency and narrowing the surge margin.
Key design parameters:
Real-world example: Garrett's G-Series turbos (G25, G30, G35) introduced redesigned asymmetric volutes with optimized tongue clearance and a longer exit cone. On a G25-660, this pushed peak compressor efficiency from ~76% (old GTX2867 generation) to ~80%. On a 500hp build, that's roughly 30°F less charge air temperature at the intercooler inlet — meaningful timing margin.
Rule of thumb: volute throat area should be roughly 0.85 to 1.0 times the diffuser exit annular area at the design point. If the throat is too small, you choke top-end. Too large, and you lose pressure recovery and the compressor surges earlier because the diffuser sees uneven backpressure.
Tuners chasing peak power sometimes port the volute exit, but unless you also recontour the tongue, you'll just shift the surge line left without gaining flow. The volute is a system — every dimension talks to the others.
Daily Debugging Puzzle
JSON.parse Big Integer Trap: The Snowflake IDs That Quietly Collide2026-06-14
This deduplicates incoming events by ID before pushing them into a processing pipeline. The unit tests are green. The production logs are full of "Dropping duplicate" messages for events the upstream system swears it sent only once.
const seen = new Set();
function ingest(rawJson) {
const event = JSON.parse(rawJson);
if (seen.has(event.id)) {
console.log(`Dropping duplicate ${event.id}`);
return;
}
seen.add(event.id);
pipeline.push(event);
}
// Unit tests — small IDs, all green:
ingest('{"id": 1, "msg": "hi"}');
ingest('{"id": 2, "msg": "yo"}');
// Production — upstream emits 64-bit Snowflake IDs:
ingest('{"id": 9007199254740993, "msg": "first"}'); // accepted
ingest('{"id": 9007199254740995, "msg": "second"}'); // accepted
ingest('{"id": 9007199254740997, "msg": "third"}'); // "Dropping duplicate 9007199254740996"?!
The third event has ID ...997, but the log says ...996. That's not a typo — that's the bug confessing itself.
JavaScript has exactly one numeric type for JSON.parse: IEEE-754 double-precision float. The largest integer it can represent exactly is Number.MAX_SAFE_INTEGER = 253−1 = 9007199254740991. Past that, only even integers are representable; odd integers round to the nearest even neighbor.
Walk through what JSON.parse actually produces:
9007199254740993 → stored as 90071992547409929007199254740995 → stored as 90071992547409969007199254740997 → stored as 9007199254740996 ← collides with the previous oneThe set sees a "duplicate" because two distinct upstream IDs landed on the same float. The log even prints the rounded value, not the original — the original is gone before your code ever touches it. Snowflake IDs, Twitter status IDs, Discord IDs, and most database BIGINT primary keys all live happily above 253, so this hits any system that ingests them.
Tests pass because nobody seeds the fixtures with 16-digit IDs. The truncation happens inside the JSON parser, so even typeof event.id === "number" and Number.isInteger(event.id) return true on the corrupted value. There is no error, no warning, no obvious smell — just silently merged events.
You cannot recover precision after JSON.parse has touched the number — the original digits never made it into memory as a JS value. You have to intercept the raw text. Two real options:
Option 1: Send IDs as strings. This is what Twitter learned to do (the id_str field). If you control the producer, this is the cleanest fix:
// Upstream emits: {"id": "9007199254740997", "msg": "third"}
// Consumer treats event.id as an opaque string key. Set dedup still works.
Option 2: Parse to BigInt. If you don't control the producer, use a library that handles big integers, or write a reviver that catches them before Number swallows them:
import JSONbig from 'json-bigint';
const parse = JSONbig({ useNativeBigInt: true }).parse;
function ingest(rawJson) {
const event = parse(rawJson); // event.id is now a BigInt
if (seen.has(event.id)) { ... } // Set works with BigInt keys
...
}
A naive JSON.parse(rawJson, reviver) won't save you — by the time the reviver runs, the value is already a lossy Number. The fix has to live in the tokenizer.
JSON.parse coerces every number to an IEEE-754 double, so any integer above 253 can silently collide with its neighbors — if your IDs are 64-bit, treat them as strings or parse with BigInt support before they ever touch a Number.
Daily Digital Circuits
2026-06-14
A scalar pipeline fetches, decodes, and issues one instruction per cycle. A superscalar pipeline does several in parallel — typical desktop CPUs are 4-wide to 8-wide. The width is set by how many instructions the front-end can decode, how many can be dispatched into the reservation stations, and how many functional units can accept work in the same cycle. The tightest of those three is the real issue width.
The hard part isn't building more ALUs — it's the dispatch crossbar. To issue N instructions in a cycle, the scheduler must check N instructions against every reservation station entry, find N ready instructions, and route them to N functional units without conflicts. The dependency-check logic scales as O(N²): every instruction in the issue window must compare its source registers against every other in-flight destination. That's why going from 4-wide to 8-wide roughly quadruples the wakeup/select logic area and power, but only doubles peak throughput.
Concrete example: Apple's M1 Firestorm core. It decodes 8 instructions per cycle and can dispatch up to ~8 µops into a 630-entry reorder buffer. To make that work, Apple spent transistor budget on a massive 354-entry integer physical register file and parallel decoders that can each handle the fixed-length ARM64 instruction independently (no length-decoding serialization like x86 needs). Intel's contemporary Golden Cove was only 6-wide partly because variable-length x86 decoding forces a serial pre-decode step that limits parallelism — they need a µop cache to bypass it on hot paths.
The dependency wall. Average integer code has roughly 1.5–2 independent instructions per cycle available before you start tracking branches and memory aliasing. To extract more, you need aggressive branch prediction (covered earlier), register renaming, and a large reorder buffer to look further ahead. Doubling issue width from 4 to 8 typically yields only ~30% more IPC on real workloads — the rest is wasted slots.
Rule of thumb: useful sustained IPC ≈ √(issue_width × ROB_size / 30). For a 4-wide core with a 128-entry ROB, that's about 2.6 IPC sustained. For an 8-wide core with a 600-entry ROB, about 4.0 IPC. You can see why Apple paired wide issue with a huge ROB — narrow window kills wide issue.
The other limit is the issue port assignment. Most cores have asymmetric ports — e.g., only two ports can do loads, only one can do divides. Compilers and schedulers must spread instruction types to avoid port pressure, which is why microbenchmarks that hammer one operation type rarely hit peak issue width.
Daily Electrical Circuits
2026-06-14
A Transient Voltage Suppressor (TVS) diode is a specialized Zener-like device engineered to absorb fast, high-energy voltage spikes — ESD strikes, inductive kickback, lightning-induced surges on long cables — and clamp them to a safe level before they reach sensitive silicon. Unlike a regular Zener, a TVS has a huge die area, low parasitic inductance, and a response time measured in picoseconds, making it the right tool when nanosecond-scale transients are the threat.
Three voltages define every TVS:
Unidirectional TVS parts (one diode) protect DC rails where polarity is fixed. Bidirectional TVS parts (two back-to-back) protect AC lines or differential pairs like RS-485 and CAN bus.
Real-world example: protecting a USB data line. USB 2.0 D+/D- signals swing 0-3.3V but must survive ±8 kV contact ESD per IEC 61000-4-2. A part like the PESD5V0U1BA has VRWM = 5V (above the signal but below logic damage threshold), clamps to ~9V during an 8 kV strike, and has only ~0.5 pF capacitance — critical, because anything more would smear the 480 Mbps edges. Place it right at the connector, with the ground pin tied directly to chassis ground via the shortest possible trace.
Rule of thumb — sizing peak pulse current: For ESD applications, the standard 8/20 µs surge test injects energy roughly equal to:
IPP ≈ Vsurge / Zsource
For a typical 8 kV ESD event with ~330 Ω source impedance: IPP ≈ 24 A. Pick a TVS rated at least 2× that, because clamping voltage degrades and the part heats up near its limit. For lightning-induced surges on outdoor cabling (10/1000 µs waveform, much more energy), step up to a 600W+ part or stage protection with a gas discharge tube upstream and a TVS downstream.
Layout matters more than the part choice. A 10 nH of trace inductance, hit by a 1 A/ns ESD edge, develops 10V across itself — completely defeating a 5V clamp. Keep the loop from TVS to victim pin to ground tiny, and tie ground to a solid plane.
Daily Engineering Lesson
2026-06-14
Binder jetting is an additive process that builds parts by selectively depositing a liquid binder onto a bed of powder, one layer at a time. Unlike laser-based powder bed fusion (SLS, DMLS, EBM), no heat is applied during printing — an inkjet-style printhead simply glues powder particles together. The build platform drops, a fresh layer of powder is spread by a roller or blade, and the process repeats. When the build finishes, the part sits as a fragile "green" body inside the loose powder.
Because there's no thermal gradient during printing, binder jetting has two huge advantages over laser fusion: no residual stress (parts don't warp) and no support structures needed (surrounding powder holds overhangs). This lets you nest dozens of parts vertically in one build, dramatically improving throughput. Print speeds of 10,000+ cm³/hour are common — orders of magnitude faster than DMLS.
The catch: the green part is weak — roughly the strength of a sugar cube. It must go through post-processing:
Real-world example: GM and HP use binder jetting to produce stainless steel transmission shift fork components. A single build can produce hundreds of parts per cycle at a cost approaching investment casting, with the geometric freedom of additive manufacturing. Sand-mold binder jetting is also widely used in foundries — printers from ExOne and Voxeljet produce complex sand cores for casting engine blocks that would be impossible to make with traditional core boxes.
Shrinkage rule of thumb: if your finished metal part needs to be 50 mm long and you expect ~18% linear sintering shrinkage, scale the printed green geometry to 50 / (1 − 0.18) ≈ 61 mm. This isotropic shrinkage must be characterized per material and per furnace cycle — repeatability depends on consistent green density and packing.
Materials: stainless steels (316L, 17-4 PH), tool steels, Inconel, tungsten carbide, ceramics (alumina, silicon carbide), full-color sandstone (for visual prototypes), and foundry sand. Aluminum is notoriously difficult because its oxide layer resists sintering.
When to choose binder jetting: medium-to-high volumes (100–100,000 parts) where DMLS is too slow and casting tooling is too expensive — the classic "missing middle" of metal production.
Forgotten Darkroom
2026-06-14
Book: Practical photography on glass and paper: a manual containing simple directions for the production of portraits, views, etc. by the agency of light, including the collodion, albumen, calotype, waxed paper, and positive paper processes; to which is added a paper on the method of taking stereoscopic pictures by Long, Charles A. (1856)
Read it: Internet Archive
In 1856, if you wanted to take a photograph, you didn't buy a camera — you became a chemist. Charles A. Long's modest shilling pamphlet, sold at Bland & Long's optician shop on Fleet Street "by appointment to the Queen," promised to teach any enthusiast to capture light on glass and paper through no fewer than five distinct chemical processes: collodion, albumen, calotype, waxed paper, and positive paper.
Long opens with a striking admission about the state of the art:
"In the following pages I purpose to confine myself to a description of the Photographic processes on Paper and Glass, as being the two modes of fixing the luminous image that present the most difficulties to the beginner, and, moreover, are those which at the present time are occupying to the greatest extent the attention of the Photographic world."
What strikes the modern reader is the phrase "fixing the luminous image" — a beautifully precise description of what a camera actually does, before "taking a picture" became a thoughtless act performed by glass slabs in our pockets. In 1856, every photograph required handling silver nitrate, ether, collodion (gun-cotton dissolved in solvents — literally an explosive), and albumen (egg whites, painstakingly beaten and aged). The "waxed paper process" Long mentions involved literally ironing wax into paper to make it translucent enough to serve as a negative.
What was lost? The waxed paper process, developed by Gustave Le Gray in 1851, allowed photographers to prepare paper negatives days or even weeks in advance of exposure — a kind of slow-photography that doesn't exist today. A traveler could prepare a stack of sensitive sheets at home, carry them across Europe, expose them at leisure, and develop them upon returning. The wet collodion process Long champions had to be coated, exposed, and developed within about fifteen minutes, before the plate dried.
Modern photographers rediscovering "alternative process" photography — cyanotypes, salt prints, wet plate collodion — find that Long's 170-year-old instructions still produce images of haunting tonal richness that digital sensors cannot replicate. The albumen print, made with egg whites and silver, yields a warm chocolate-and-cream image with a glossy sheen no inkjet has matched.
Long's pamphlet also reveals a forgotten cultural fact: photography was a hobbyist's pursuit requiring laboratory skill. There was no separation between "photographer" and "chemist." The same Fleet Street shop sold you the lens, the chemicals, the recipe book, and the queen's endorsement — a one-stop entry into what was understood as a branch of applied science.
The next time your phone autocorrects a sunset's white balance, consider that someone once boiled their own egg whites to make the same picture last a century.
Forgotten Patent
2026-06-14
On January 19, 1915, French chemist and engineer Georges Claude received US Patent 1,125,476, titled "System of Illuminating by Luminescent Tubes." The filing — submitted in 1911 — described a method for sealing a rarefied gas inside a glass tube, passing a high-voltage current through electrodes at each end, and producing a steady, brilliant glow. Claude's specific contribution wasn't the glow itself (others had seen gas discharge since the 1850s) but rather the engineering: a practical electrode design that wouldn't sputter and destroy itself within hours, plus an industrial process for extracting pure neon from liquefied air.
The patent's claims read like an industrial recipe. Claude specified electrode materials, gas purification techniques, and voltage ranges that made the lamp commercially viable for the first time. Within a decade, Times Square glowed with his tubes. A Packard dealer in Los Angeles paid $24,000 (about $400,000 today) for two signs in 1923 — and people pulled their cars over to stare.
But the patent quietly contained the seed of half of modern photonics.
What Claude had built was the first practical, mass-producible cold-cathode gas-discharge device. Strip away the marketing layer and you have:
The deeper insight in the patent is one we now take for granted: that you can make light efficiently by exciting a gas instead of heating a filament. Edison's incandescent bulb wastes 95% of its energy as heat. Claude's tube — operating at a few hundred degrees rather than 2,500°C — was the first commercial demonstration that photons could be coaxed out of matter without setting it on fire. Every LED, every laser, every plasma cell traces its lineage back to that principle.
There's a tragic coda. Claude was also a brilliant cryogenic engineer (the Claude cycle for air liquefaction is still in use), but he became a Vichy collaborator during WWII and was imprisoned after the liberation. His scientific reputation never recovered, and his name vanished from textbooks even as his invention multiplied into trillions of devices.
Could it be built better now? It already has been — microplasma displays being developed at the University of Illinois use arrays of 50-micrometer Claude discharges as ultra-efficient UV sources for water sterilization and flexible lighting. The 1915 patent's physics is being rediscovered, one decimal place smaller, every decade.
Daily GitHub Zero Stars
2026-06-14
Language: Go
This is a terminal user interface (TUI) client for Ollama written in Go. For the uninitiated, Ollama is the popular tool for running local large language models — Llama, Mistral, Phi, Qwen and friends — on your own machine. The official Ollama experience is mostly CLI-driven or routed through a web UI, but tui-ollama-go aims to give you a keyboard-driven, full-screen terminal cockpit for chatting with your local models.
Why is this worth a look?
go install and you're done — easy to drop onto a home server, a Raspberry Pi, or a remote box you SSH into.Who would benefit? Terminal-dwelling developers running Ollama locally; Go programmers curious about Bubble Tea; homelab tinkerers who want a lightweight chat UI for a self-hosted model server; and anyone teaching themselves how the Ollama API actually works under the hood. With zero stars, it could clearly use a few testers and contributors to help it grow.
Daily Hardware Architecture
2026-06-14
Between the store buffer and the L1 cache (or between L1 and L2 on a write-through design) sits a small structure with a stopwatch: the write coalescing buffer. Its job is to hold dirty cache lines briefly so that multiple writes to the same line can be merged into a single downstream transaction. The "window" is the time budget — once it expires or the buffer fills, the line drains.
This matters because writes are expensive in ways loads aren't. A store that misses L1 triggers a read-for-ownership (RFO): the core must acquire the line in Modified state via the coherence fabric before the write can complete. Each RFO costs coherence traffic, snoop responses, and potentially evicting someone else's copy. If your code writes to the same line 8 times in quick succession, you want one RFO, not eight.
The coalescing buffer has three knobs that determine whether merging happens:
Concrete example: Initializing a 64-byte struct field-by-field with 8 quadword stores. With coalescing, those 8 stores merge into one cache line write that hits L1 once. Without it (say, fences between each store, or stores spread across a long dependency chain), each store may drain individually, costing 8× the L1 bandwidth and potentially 8× the RFO traffic if the line keeps getting stolen back.
The pathology to watch for: a producer-consumer pattern where one core writes a flag and another spins on it. The writer wants coalescing; the reader wants the line drained now. If the writer's coalescing window is 30 cycles and the reader polls every 10 cycles, you've just added ~30 cycles of latency to every flag update — invisible in single-core benchmarks, devastating in lock-free queues.
Rule of thumb: Back-to-back stores to the same 64-byte line cost roughly 1 store-port cycle each + 1 RFO per line. Stores spread across N different lines cost N RFOs. If you can pack writes into the same line and emit them within ~20 cycles of each other, coalescing usually wins. Add a fence between them and you've just disabled the optimization.
Hacker News Deep Cuts
2026-06-14
Link: https://ben3d.ca/blog/proof-of-possession-api-tokens
HN Discussion: 1 points, 0 comments
API token theft has become one of the most reliable paths to compromise in modern systems. A stolen bearer token — lifted from a logfile, an exposed environment variable, a misconfigured CI pipeline, or a compromised developer laptop — is fully usable by anyone who holds it. The token is the credential. There's nothing binding it to the legitimate client, which is why incidents like the Heroku/Travis CI OAuth breach, the CircleCI compromise, and countless npm-token leaks keep producing the same outcome: attacker exfiltrates a token, attacker becomes the user.
This post argues for adopting Proof of Possession (PoP) as a pragmatic fix. The idea is old in cryptographic circles but underused in everyday API design: instead of presenting a bearer token, the client proves it holds a private key bound to the token. Each request carries a short-lived signature over the request details (method, URL, body hash, timestamp), and the server verifies the signature using a public key registered when the token was issued. Steal the token alone, and you have nothing — the matching private key never leaves the legitimate client.
Why this deserves a technical audience's attention:
The honest tradeoffs are real: clients need key management, signature verification adds CPU cost, and clock skew becomes a correctness concern. But these are tractable problems with known solutions, and the industry has been paying the cost of bearer-token theft for over a decade. Anyone designing an API in 2026 — especially one issuing long-lived tokens to agents, CI systems, or LLM-driven clients (where token exfiltration risk is arguably higher than ever) — should at least understand why DPoP exists and when it's worth the complexity.
HN Jobs Teardown
2026-06-14
Source: HN Who is Hiring
Posted by: petrohi
Of the ten postings, Shoreline.io is the most strategically revealing. The pitch — "reduce tickets and improve availability by an order of magnitude through automation" — is short, but every word is doing work. Let's break down what's actually going on.
The tech stack (inferred from the framing): The posting explicitly recruits engineers who've "designed, built, and operated distributed systems" with a love for "correctness." That's code for: expect Go or Rust, Kubernetes-native control planes, Raft/Paxos-style consensus, and heavy use of feedback control loops. The founders explicitly cite experience with "mission critical databases, cloud services with millions of hosts, and self-tuning feedback control systems" — which is shorthand for an Oracle/AWS/Google SRE pedigree. The "self-tuning feedback control systems" phrasing is unusual; it signals they're applying classical control theory (PID-style loops) to ops, not just rule-based automation.
What the posting reveals about stage and direction:
Trends this highlights: The "AIOps" / autonomous-remediation category was crowded even in 2020 (PagerDuty, Moogsoft, BigPanda). Shoreline's bet is that the others are alerting tools while Shoreline will be a remediation tool — closing the loop, not just routing the page. That's a meaningful wedge.
Green flags: Founder pedigree implied by "millions of hosts." Narrow role (one specialty, not a kitchen-sink listing). Honest about being a distributed-systems shop — no buzzword soup.
Red flags: No mention of customers, design partners, or specific cloud integrations. "Reduce tickets by an order of magnitude" is a claim that needs evidence, and the posting offers none. Also, trinethire.com as the ATS suggests they haven't yet invested in employer branding — fine for stage, but worth noting.
Daily Low-Level Programming
2026-06-14
When you write to a regular DRAM page, the write lands in the store buffer, then the cache, and eventually the memory controller — and if the power fails, it's gone. With persistent memory (Intel Optane DC, CXL-attached NVDIMMs, battery-backed DRAM), the same cache hierarchy sits in front of byte-addressable non-volatile media. A store that's still in L1 is not durable. You need an explicit instruction to push that line to the persistence domain.
The old answer was CLFLUSH: invalidate the line and write it back. But CLFLUSH is serializing — it waits for prior stores to complete and blocks subsequent ones. Flushing a 4KB region was 64 serialized cache-line operations. Throughput collapsed.
CLFLUSHOPT (Skylake, 2015) removed the ordering: multiple CLFLUSHOPT instructions to different cache lines can execute in parallel. You only need an SFENCE at the end to guarantee they've all reached the memory controller. A 4KB flush dropped from ~3000 cycles to ~500.
CLWB (Cache Line Write Back) goes further: it writes the line back to memory but keeps it in the cache, in the Exclusive state. If you're going to read or write that line again — say, a hot log record header — you avoid the cold miss on the next access. CLFLUSHOPT invalidates; CLWB preserves.
Real-world example: Intel's PMDK (Persistent Memory Development Kit) implements a persistent transactional log. Each log append does: write the record (regular stores) → CLWB each cache line of the record → SFENCE → write a commit flag → CLWB + SFENCE. Using CLWB instead of CLFLUSH roughly doubled throughput on write-heavy workloads because subsequent reads of the just-written log tail stayed cached.
Rule of thumb: The persistence cost is dominated by the final SFENCE, not the flushes themselves. Batch your writes, then flush all the dirty lines, then one fence. A single SFENCE after 16 CLWBs costs roughly the same as one after a single CLWB — around 30–60 ns waiting for the memory controller's acknowledge. So: amortize fences across as many flushes as your consistency model allows.
One gotcha: CLWB is permitted to behave like CLFLUSHOPT (invalidate the line) on CPUs that don't implement the "keep in cache" semantics. Check CPUID leaf 7, EBX bit 24. Don't assume the line is hot after CLWB — measure.
CLWB + batched SFENCE is the modern recipe for durable writes to persistent memory — flush in parallel, fence once, and keep hot lines cached for the next access.
RFC Deep Dive
2026-06-14
RFC 3761 defines ENUM — a system for mapping plain old telephone numbers into the DNS, so that dialing +1-202-555-0100 could resolve to a SIP address, an email, a fax gateway, or any other URI. It's one of the most ambitious — and politically fraught — bridges ever built between two namespaces that grew up in completely different worlds: the ITU-T's E.164 numbering plan and the IETF's DNS.
The problem. By the early 2000s, VoIP was real. SIP could route calls over IP, but how do you find a user's SIP URI when all you have is their phone number printed on a business card? Operators had proprietary databases. Federation between carriers was nonexistent. The IETF's answer: stuff phone numbers into the DNS and let everyone query the world's largest distributed database.
The mechanism. Take a fully-qualified E.164 number like +442079460148. Strip the +, reverse the digits, separate with dots, and append .e164.arpa:
8.4.1.0.6.4.9.7.0.2.4.4.e164.arpaWhy reversed? So the DNS hierarchy matches the phone-number hierarchy: country code closest to the root, subscriber digits deepest. Now query that name for NAPTR records — the Naming Authority Pointer record type from the DDDS framework (RFC 3403). NAPTRs return a regular expression that rewrites the input into a URI, plus a service tag like E2U+sip or E2U+mailto, plus a priority. A single number can advertise multiple endpoints: try SIP first, fall back to PSTN, fall back to email.
Why DDDS? Faltstrom and Mealling didn't invent NAPTRs for ENUM — they reused the Dynamic Delegation Discovery System, a generalized rewriting framework. ENUM is technically just one DDDS application; the URN resolution system is another. This is classic IETF layering: don't bake telephony assumptions into the record type itself.
The politics. This is where ENUM gets interesting. Who controls e164.arpa? The ITU-T, which represents national governments, wanted authority over country-code delegations. The IETF runs .arpa. The compromise: each country code delegated only with consent of the relevant national regulator. Result — uneven, glacial deployment. Austria, the Netherlands, and a handful of others ran public ENUM tiers. The US essentially never did. By 2010 the dream of a universal public ENUM tree was effectively dead.
What survived. ENUM didn't die — it went private. Infrastructure ENUM and carrier ENUM (RFCs 5067, 6116) use the exact same NAPTR mechanism inside carrier networks and interconnect federations. Every time a SIP trunk provider routes a call, there's a good chance an internal ENUM-style lookup is happening. The technology won; the public namespace lost.
Modern relevance. If you've ever debugged a SIP routing problem and stared at a NAPTR record, you've touched ENUM. Microsoft Teams, Zoom Phone, Twilio, and basically every CPaaS routes calls through private ENUM-like databases. The pattern — reverse the identifier, encode as DNS labels, return rewrite rules — also shows up in reverse DNS for IP addresses (in-addr.arpa) and was the inspiration for several later directory schemes.
ENUM is also a cautionary tale about cross-SDO protocols: the technology was elegant, the governance question was unsolvable, and the deployment reflected the governance, not the engineering.
Stack Overflow Unanswered
2026-06-14
The asker is reverse-engineering a stripped x86_64 binary in GDB and wants to run "until" a specific instruction address. The documentation claims until and tbreak accept the same location syntax, including the *addr form for raw addresses. But in practice:
tbreak *0x401234 sets a one-shot breakpoint at exactly that address.until *0x401234 reports a memory-access error, and the resolved target looks like 0x1 — a nonsense value.Why this is interesting: it's a divergence inside GDB itself between two command implementations that document themselves as equivalent. The "0x1" smells like a parsing or dereference bug — GDB's expression evaluator is treating *0x401234 as "read a long from address 0x401234" (the C-style unary *) instead of as the linespec prefix that means "the literal address." tbreak dispatches to the linespec parser, which has a special case for the leading *; until appears to fall through to the generic expression evaluator, which interprets * as pointer dereference. The "0x1" the user sees is plausibly whatever low byte happened to live at 0x401234.
Direction toward an answer:
set debug expression 1 and set debug parser 1 — watch how each command tokenizes *0x401234.until_command in infcmd.c historically routes through parse_and_eval_address, whereas tbreak goes through decode_line_full / linespec.c. That's the asymmetry.tbreak *0x401234 followed by continue — semantically identical to until for a one-shot stop, and uses the parser that actually works.advance *0x401234 has the same documented syntax but is implemented closer to until, so it likely fails the same way — worth confirming, since the asker mentioned it.Gotchas: until also has a semantic constraint tbreak doesn't — it only stops if the target is within the current frame and at a higher address than the current PC. So even if the address parsing were fixed, until into an arbitrary stripped address can silently no-op (run to end of frame). For RE work on stripped binaries, tbreak + continue is genuinely the more robust idiom regardless of whether this is a bug.
This looks like a legitimate GDB bug worth filing against sourceware — the docs explicitly promise equivalence the implementation doesn't deliver.
Daily Software Engineering
2026-06-14
You set your transaction isolation to REPEATABLE READ thinking you're safe. You run the same query twice in one transaction and get different row counts. What happened? A phantom read: another transaction inserted (or deleted) rows that match your WHERE clause between your two reads. Repeatable Read protects rows you've already seen from being modified — it doesn't stop new rows from appearing.
The SQL standard defines four isolation levels by which anomalies they prevent:
Non-repeatable read vs phantom read: non-repeatable is the same row changing between reads (UPDATE). Phantom is the set of matching rows changing (INSERT/DELETE).
Real-world example. A bank runs end-of-day interest calculation:
SELECT SUM(balance) FROM accounts WHERE branch = 'NYC' → $10MSELECT COUNT(*) FROM accounts WHERE branch = 'NYC' → count includes the new rowUnder standard Repeatable Read, this is legal. The fix depends on your database:
SELECT ... FOR UPDATE).Rule of thumb. If your transaction makes a decision based on the absence of rows ("no account exists with this email, so insert one") or aggregates over a set ("sum all matching rows"), Repeatable Read is not enough. Use Serializable, or enforce the invariant with a unique constraint, advisory lock, or SELECT ... FOR UPDATE on a sentinel row.
Cost trade-off. Serializable on Postgres uses SSI (Serializable Snapshot Isolation), which adds ~10-30% overhead and can abort transactions with serialization failures. Your code must retry. Read Committed is cheap but lets anomalies through. Pick per-transaction, not per-database.
Tool Nobody Knows
2026-06-14
Every fsync() your build runs is the kernel asking the disk firmware to commit a write to physical media before returning. That's a promise the disk keeps with a real, measurable cost — single-digit milliseconds on spinning rust, hundreds of microseconds even on NVMe. SQLite calls it. Package managers call it. git calls it (a lot). Postgres' test mode calls it. Most of the time, when you're running CI or rebuilding a container, you do not care: the entire filesystem is going to evaporate in five minutes anyway.
eatmydata is a tiny LD_PRELOAD shim that turns fsync(), fdatasync(), msync(), sync_file_range(), and O_SYNC/O_DSYNC opens into no-ops. The name is the warning label. Born from OpenStack CI, packaged in Debian and Fedora, weighs about 8 KB.
$ sudo apt install eatmydata # Debian/Ubuntu
$ sudo dnf install libeatmydata # Fedora
Wrap any command:
$ eatmydata make install
$ eatmydata pytest -x
$ eatmydata dpkg -i ./big-package.deb
Real numbers from a Debian package install on a laptop SSD:
$ hyperfine -p 'sudo dpkg -P texlive-latex-base 2>/dev/null' \
'sudo dpkg -i texlive-latex-base_*.deb' \
'sudo eatmydata dpkg -i texlive-latex-base_*.deb'
Time (mean): 14.812 s (vanilla)
Time (mean): 2.301 s (eatmydata)
Summary: eatmydata ran 6.4× faster
The mechanism is simple enough to read in one sitting — it's libeatmydata.so, exporting interposers that just return 0. Inspect with:
$ ldd $(which eatmydata) | grep eat # actually it's a wrapper script
$ cat $(which eatmydata)
#!/bin/sh
LD_PRELOAD="libeatmydata.so${LD_PRELOAD:+:$LD_PRELOAD}" exec "$@"
That's the whole tool. The wrapper exists so the preload is inherited by every child — important because the durability calls are usually buried three forks deep inside make or cargo.
Where it shines:
eatmydata to your test command and watch SQLite-heavy suites halve their runtime.RUN apt-get install -y eatmydata early, then RUN eatmydata apt-get install -y … for the heavy layers. Image build minutes drop noticeably.fsync = off in postgresql.conf as belt-and-suspenders. eatmydata pg_ctl start covers anything you forgot.eatmydata mysql < dump.sql on a 20 GB dump can save you an hour.Where it will eat your data: anything you intend to keep. Power loss or kernel panic during an eatmydata session leaves writes potentially uncommitted. Don't wrap your editor. Don't wrap rsync to the NAS. The package even ships a nocache companion if you want the inverse — buying back page-cache thrashing rather than durability.
The deep cut: if you don't trust LD_PRELOAD scope, you can scope it more tightly with LD_PRELOAD=libeatmydata.so command in a single child, or — for true paranoia — run inside a mount namespace where / is a tmpfs overlay, which is what some CI runners do anyway. eatmydata is the cheaper, drop-in version of that idea.
eatmydata turns every fsync() into a no-op via an 8 KB LD_PRELOAD and routinely cuts wall-clock time by 5–10×.
What If Engineering
2026-06-14
Data centers dump roughly 40% of global server energy as low-grade heat — typically 30–45°C coolant return temperatures. District heating networks want 70–90°C. The thermodynamic gap is annoying but bridgeable. The bigger problem is distance: hyperscale data centers sit in cheap-land suburbs, while heat demand sits downtown. What if we connected them with a single giant gravity-assisted heat pipe — a sealed tube where evaporation at the hot end and condensation at the cold end move heat with no pumps, no moving parts, just phase change?
A heat pipe is wickedly efficient. Inside a sealed tube, a working fluid (water, ammonia, or naphthalene depending on temperature) evaporates at the hot end, the vapor rushes to the cold end at near-sonic velocities driven by tiny pressure differences, condenses, and returns by gravity or capillary action. Effective thermal conductivities reach 10,000–100,000 W/m·K — roughly 100× copper.
The scenario: a 10 km horizontal heat pipe, 2 m diameter, carrying 500 MW of waste heat from a 1.2 GW data center campus to a city center. Working fluid: water at ~80°C (vapor pressure 0.47 bar — sub-atmospheric, so a leak sucks air in, not steam out).
Back-of-envelope: at 80°C, water's latent heat of vaporization is 2308 kJ/kg. To move 500 MW we need:
ṁ = 500×10⁶ W / 2.308×10⁶ J/kg ≈ 217 kg/s of vapor
Saturated steam at 0.47 bar has density ~0.29 kg/m³. Volumetric flow:
Q = 217 / 0.29 ≈ 748 m³/s
Through a 2 m pipe (cross-section 3.14 m²), vapor velocity:
v = 748 / 3.14 ≈ 238 m/s — about Mach 0.7 in low-pressure steam
That's the sonic limit of heat pipe operation — push harder and you choke the flow. So 2 m diameter is roughly the minimum; a real design would go 3 m to stay subsonic with margin.
Condensate return is the sneaky problem. We need 217 kg/s of liquid water flowing back 10 km, against any vapor drag. Liquid water at 217 kg/s through a 10 cm return line: velocity ~28 m/s, friction head loss over 10 km ≈ 4000 m of water column. Gravity won't do it unless the data center sits 4 km uphill. Reality: you need a parallel insulated return line with a modest circulation pump (~200 kW — trivial compared to 500 MW transported).
Insulation: 10 cm of aerogel jacket gives U ≈ 0.15 W/m²·K. Surface area of 10 km × π × 2 m = 62,800 m². At 60°C temperature difference: heat loss = 565 kW — 0.1% loss over 10 km. Stunning.
The economics flip the script. A 500 MW thermal delivery would heat ~50,000 homes. At $0.08/kWh-thermal retail, that's $350 million/year of useful heat currently rejected to cooling towers. The pipe itself — stainless 316L, vacuum-jacketed, buried — runs maybe $200M. Payback under a year if you can sell the heat.
The catch: heat pipes are picky about tilt. A 10 km horizontal pipe needs the evaporator end no more than ~1 m higher than the condenser, or vapor pools and dry-out kills the wick. Surveying tolerance on a 10 km civil project is brutal. Also: a single rupture vents 30 tonnes of near-vacuum steam — loud, but not dangerous. The real risk is freeze-cracking during shutdown; you'd need ethylene glycol antifreeze, which drops latent heat by 15%.
Stockholm and Helsinki already do this with pumped hot-water loops. The heat pipe version trades pumping energy (~2% of transported heat) for engineering precision. At hyperscale, that's worth it.
Wikipedia Rabbit Hole
2026-06-14
Wikipedia: Read the full article
Somewhere inside the cell tower keeping your phone synced, the GPS satellite overhead, and the broadcast transmitter pumping out your local FM station, there is a tiny oven. It is heating a sliver of quartz to a temperature that never wavers — often held to within a thousandth of a degree Celsius. This is a crystal oven, and it exists because the universe refuses to leave a good quartz crystal alone.
Quartz crystals are piezoelectric: squeeze them and they generate a voltage, apply a voltage and they vibrate. Cut one to just the right shape and it will ring at a precise frequency like a struck tuning fork, which is why a $5 wristwatch can keep better time than a mechanical clock that took a Swiss master a year to assemble. But there is a catch — quartz changes its resonant frequency with temperature. A crystal that hums at exactly 10 MHz in your living room will drift noticeably if you carry it outside on a cold day.
For most applications, that drift is fine. Your watch only needs to be accurate to a few seconds per month. But for the systems that quietly underpin modern life — telecom networks, radar, GPS, scientific instruments — even parts-per-million drift is catastrophic. Enter the OCXO (Oven-Controlled Crystal Oscillator), the high-end solution that simply refuses to let the temperature change at all.
The trick is elegant. Engineers choose a quartz cut (the famous "AT-cut" or "SC-cut") that has a turnover temperature — a sweet spot where the frequency-vs-temperature curve flattens out. Then they build a small, insulated enclosure with a heater and a thermistor, and hold the crystal at that exact temperature, typically somewhere between 70 and 90°C. The oven is always slightly hotter than any environment the device will see, so the heater only ever needs to add warmth, never remove it.
The results are astonishing:
This is why cell tower equipment racks hum warm even on cold nights, and why high-end ham radios have a "warming up" indicator. It is also why GPS disciplined oscillators exist: the satellite's atomic clock provides absolute long-term accuracy, while the local OCXO provides short-term stability if the satellite signal drops out. They are partners, not rivals.
The wildest part? The crystal inside is often aged for months at temperature before being sold, because freshly-cut quartz changes as its internal stresses settle. Precision time isn't just engineered — it's cured, like fine cheese.
Daily YT Documentary
2026-06-14
Channel: Parmindar Singh (2 subscribers)
Most of us open Google Maps a dozen times a day without ever wondering how it actually knows what it knows. This mini documentary from a tiny two-subscriber channel takes a swing at that question, walking through the layered systems that make turn-by-turn navigation feel like magic.
The video covers the core pillars of the Maps stack: satellite imagery and Street View as the visual foundation, GPS trilateration for positioning your device, and the constantly-updated road graph that powers routing. It also touches on how anonymized location pings from millions of phones get aggregated into the live traffic data that reroutes you around a jam before you even see brake lights.
The most interesting thread is the shortest-path routing piece — how Maps applies graph algorithms (Dijkstra-style searches, with weights for traffic, road type, and speed limits) to compute a route in milliseconds across a planet-scale road network. It's a clean entry-level explanation of a problem that, at Google's scale, is genuinely hard computer science.
This is a small-channel production, so don't expect Nat Geo polish — but the explanation is structured, specific, and respects the viewer's time. A good 5-minute primer if you've ever been curious about the infrastructure behind the blue dot.
Daily YT Electronics
2026-06-14
Channel: Void Electronics (3850 subscribers)
Cold War-era test equipment is a fascinating window into how different industrial bases approached the same engineering problem under wildly different constraints. This video pits the IEMI E0104, a portable oscilloscope manufactured in communist-era Romania, against the Tektronix 213 — a similarly-sized portable scope from the American gold standard of the same vintage.
What makes this worth watching isn't just the novelty of the comparison. Side-by-side teardowns and bench tests of two scopes built for the same purpose with very different component supplies, manufacturing tolerances, and design philosophies reveal a lot about the why behind oscilloscope architecture. You see what corners can be cut, what corners shouldn't be cut, and how design decisions show up in real measurements: bandwidth, trigger stability, trace quality, and noise floor.
For anyone learning analog electronics, the IEMI's quirks are educational on their own — Eastern Bloc engineers often substituted clever circuit topologies for parts they couldn't source, and spotting those substitutions trains your eye for schematic reading. The Tektronix 213, meanwhile, is a benchmark for what tight engineering looked like in portable instrumentation. Comparing them directly is more instructive than reviewing either alone.
Void Electronics keeps the pace tight and grounds claims in actual measurements rather than just visual inspection, which is what separates a useful retro-scope video from nostalgia content.
Daily YT Engineering
2026-06-14
Channel: MeritHub (784 subscribers)
Most of today's candidate pool is shorts spam, clickbait reels, and internship advertorials. The genuinely substantive picks are the lecture-style videos, and this one stands out as the opening class of a structured Fluid Mechanics course — the kind of foundational material that's hard to find well-taught on small channels.
Fluid Kinematics is the branch of fluid mechanics concerned with describing motion without reference to the forces causing it. That sounds abstract, but it's where you learn the vocabulary the rest of the field is built on: Lagrangian vs. Eulerian descriptions (do you follow a single fluid particle, or watch a fixed point in space?), streamlines, pathlines, and streaklines (which only coincide in steady flow), and the material derivative that bridges the two viewpoints.
A good Class 1 lecture sets up the mental model you'll use for everything downstream — continuity, Navier-Stokes, boundary layers. Getting the kinematic framing right early prevents the common student trap of confusing "the flow at a point" with "what a particle is doing." For a self-learner or someone refreshing before a CFD course, a from-scratch lecture series from an instructor (rather than a 10-second short or a sponsored Ansys promo) is genuinely the most valuable item in this batch.
Daily YT Maker
2026-06-14
Channel: juicysantos (3670 subscribers)
Note: this is a weak batch of candidates. Two entries are hashtag-spam shorts, and one reads like AI-generated promotional content about "AI, Web3, and robotics" buzzwords. This Portuguese-language visit to a university maker space is the most genuine of the four.
"Tia Cris" tours the Espaço Maker at São Judas Campus Unimonte in Santos, Brazil — a hands-on fabrication lab inside a university campus. Maker space tours are useful when you're trying to understand what tooling actually goes into a working educational fab lab: which 3D printers and laser cutters get specified, how the benches are laid out, what safety infrastructure is in place, and how students rotate through projects.
For viewers who don't speak Portuguese, YouTube's auto-translate captions handle the narration reasonably well. The value here is visual — seeing the equipment loadout and floor plan of a mid-sized institutional makerspace, which is helpful reference if you're setting one up at a school, library, or community hub.
Don't expect a deep technical tutorial; this is a walkthrough, not a build video. But the channel has more subscribers than the others, suggesting the production quality is at least watchable, and the subject is a real physical space rather than synthetic marketing footage.
Daily YT Welding
2026-06-14
Channel: Faridul babu (5060 subscribers)
Today's crop is unusually thin — most candidates are hashtag-stuffed Shorts showing 90-degree joints with no real teaching. This Bengali-language explainer from Faridul babu is the standout because it actually attempts a comparative overview of the three workhorse arc-welding processes: MIG (GMAW), TIG (GTAW), and SMAW (stick).
Comparison videos like this are genuinely useful for beginners trying to figure out which process to learn first or which machine to buy. Each method has different strengths: MIG is fast and forgiving on clean steel, TIG gives the cleanest welds on thin material and exotic metals like stainless and aluminum but demands two-handed coordination, and SMAW (stick) handles dirty material outdoors and on thick structural steel where shielding gas would blow away.
A good walkthrough should cover the physics of each (consumable vs. non-consumable electrode, shielding gas vs. flux coating), the typical use cases, and the equipment cost and skill curve. If this video delivers on even half of that in a single sitting, it saves a beginner hours of fragmented research.
Note: the audio is in Bengali, so non-speakers will need auto-translated captions, but the visual demonstrations of each process should carry the core lessons across language barriers.
