26 newsletters today.
Abandoned Futures
2026-07-01
Everyone remembers the Concorde. Almost nobody remembers that by 1975, Aérospatiale and the British Aircraft Corporation had already designed its replacement — the Concorde B — and were within months of cutting metal when the program was quietly strangled in the crib.
The original Concorde, which entered commercial service on 21 January 1976, was a compromise aircraft. Its Olympus 593 engines needed afterburners to break the sound barrier, burning roughly 25% more fuel than cruise required and generating the notorious takeoff noise that got it banned from most American airports. Its range of 3,900 nautical miles left it stranded on Pacific routes. Its cabin held only 100 passengers because the fuselage had been frozen in 1965 to hit the delivery timeline.
The Concorde B fixed all of it. The design was frozen in 1975 by a joint Aérospatiale/BAC team led by Lucien Servanty's successors at Toulouse. The changes were not exotic:
Development cost was estimated at £250 million — trivial compared to the £1.3 billion already sunk into the original. British Airways and Air France had provisionally ordered 16 airframes between them. First flight was projected for 1980.
Then, on 4 February 1976 — two weeks after Concorde's commercial debut — the British government withdrew funding. The French followed within months. The stated reason was the 1973 oil shock and pessimistic sales forecasts. The real reason was that Boeing had killed the 2707 SST in 1971, and without an American competitor there was no political prize left to win. The B was cancelled before the A had even completed its first year of revenue service.
Why now? Every technical problem the B was solving has since been solved in fragments: variable-cycle engines (GE's XA100), advanced CFD-shaped wings, sonic-boom-shaping fuselages (NASA's X-59), and modern composite fuel tanks. Boom Supersonic's Overture is essentially reinventing the Concorde B airframe with 50-year-newer materials and 40% less fuel burn per seat. The Rolls-Royce archive in Derby still holds the Mk 622 combustor drawings. The ONERA wind tunnel data still exists. A modern reboot would not be a research project — it would be an engineering exercise on a design that was 90% complete when it was shelved.
We spent 27 years flying the compromise aircraft and zero years flying the one that fixed it.
ArXiv Paper Digest
2026-07-01
Imagine you're handed a piece of code where every variable is named a1, b2, c3, the control flow has been scrambled into a knot, and dead branches have been sprinkled in to throw you off. That's code obfuscation: deliberately messing up code so it still runs correctly but becomes painful for a human to read. Malware authors use it to hide what their programs do. Companies use it to protect intellectual property. Reverse engineers hate it.
We already know a fair bit about how obfuscation breaks human understanding. But here's a fresh question: do large language models (LLMs) — the same AI systems that increasingly help us read, review, and reverse-engineer code — struggle in the same places humans do? Or do they fail in totally different ways?
This paper takes a recent human study on code comprehension and rerouts the same experiment through several LLMs. The researchers used a framework called the Block Model, which slices "understanding code" into four layers:
They ran LLMs through five escalating tiers of obfuscation and measured where comprehension broke down at each level.
The key finding: LLMs and humans don't fail in the same way. Humans tend to stumble first at the local, low-level details — once variable names and structure are scrambled, working memory gets overwhelmed and everything downstream collapses. LLMs, by contrast, are surprisingly resilient at the atom and block levels (they can chew through weird identifiers just fine) but tend to fall apart at the relational and macro layers — the "what is this program actually doing, end to end" reasoning that requires holding a mental model together across the whole file.
That mismatch matters for anyone leaning on AI to help with reverse engineering, malware analysis, or auditing minified/obfuscated code. It suggests LLMs are useful for the tedious surface-level cleanup work — renaming variables, un-tangling a function — but shouldn't be trusted alone for the big-picture "what does this malware do?" question. And it points to a real weakness: obfuscation techniques designed to defeat humans by exhausting local working memory may not fool an LLM, while techniques that shred cross-function relationships will.
Daily Automotive Engines
2026-07-01
You spent months picking primary tube diameter, merge angle, and collector length. Then you bolt a 3-inch exhaust to a 2.5-inch collector exit and undo half your work. The collector exit pipe — that short stub of tubing between the merge cone and your exhaust flange — is the handoff point where header tuning meets the rest of the exhaust system, and getting the diameter wrong bottlenecks everything upstream.
Why exit diameter matters: After the merge collector diffuses spent gases and drops velocity, the exit pipe carries that flow to the downpipe or X/H-pipe. Too small, and you create backpressure that stalls scavenging at the merge point — the vacuum wave never fully forms because gases can't evacuate downstream fast enough. Too large, and gas velocity crashes below the ~240–300 ft/sec sweet spot needed to maintain momentum, killing low-end torque and creating a lazy, boomy exhaust note.
The sizing rule of thumb: Collector exit area should roughly match the sum of primary tube areas divided by 1.4 to 1.6. For a 4-into-1 with 1.75" primaries (2.405 sq in each = 9.62 sq in total), divide by 1.5 and you need ~6.4 sq in — that's a 2.85" exit, so you round to 3-inch. Twin-turbo V8s with 1.625" primaries typically land on 2.5" exits per bank.
Real-world example: The C6 Corvette Z06 (LS7, 7.0L, 505 hp) uses 1.875" primaries into a merge collector with a 3-inch exit — feeding directly into 3-inch X-pipe. GM's dyno data showed that shrinking the exit to 2.5" cost 12 hp at peak and 18 lb-ft at 3,500 rpm. Bumping it to 3.5" cost 8 lb-ft below 3,000 rpm and added nothing up top. The 3-inch exit was the compromise that kept both scavenging velocity and top-end flow.
The transition matters too: A sudden step from a 2.5" collector to a 3" exhaust creates a turbulent expansion zone that reflects pressure waves backward. Best practice: gradually transition inside the collector's diffuser cone itself, or use a 2–3" long tapered adapter. Straight step-flanges cost 3–5 hp on most builds.
Daily Debugging Puzzle
snprintf Return Value Trap: The Buffer Chain That Overflows Itself2026-07-01
This function builds a URL by chaining snprintf calls into a fixed-size buffer, advancing a cursor after each write. It looks defensive — every return value is checked, and there's a final overflow guard.
#include <stdio.h>
#include <string.h>
/* Append base + "?key=value" into buf. Return 0 on success, -1 on overflow. */
int build_url(char *buf, size_t bufsize,
const char *base,
const char *key, const char *value) {
size_t used = 0;
int n;
n = snprintf(buf + used, bufsize - used, "%s", base);
if (n < 0) return -1;
used += n;
n = snprintf(buf + used, bufsize - used, "?%s=", key);
if (n < 0) return -1;
used += n;
n = snprintf(buf + used, bufsize - used, "%s", value);
if (n < 0) return -1;
used += n;
if (used >= bufsize) return -1; /* the "safety net" */
return 0;
}
Fuzz it with a 32-byte buffer and a 100-byte value, and you get a heap corruption crash — sometimes. Other times it silently writes a mile past the buffer. The final if (used >= bufsize) check does fire, but only after the damage is done.
snprintf returns the number of characters that would have been written if the buffer were large enough, excluding the null terminator — not the number actually written. C99 was explicit about this to let callers size buffers by probing. But it means used += n can advance the cursor past bufsize.
Now watch what happens on the next call: bufsize - used. Both are size_t, which is unsigned. Subtracting a larger unsigned from a smaller one wraps around to a value near SIZE_MAX. So the next snprintf is told: "you have 18 quintillion bytes at buf + used, go wild." It obliges, writing far past the end of the allocation. By the time the trailing used >= bufsize check runs, you've already scribbled across the heap.
The seductive part: on small inputs everything works. Tests pass. The overflow only surfaces when the middle field truncates — the first-and-last-field cases behave. And the checked return values feel like belt-and-suspenders safety, which makes the reviewer's eye slide right past.
Detect truncation at each step by comparing the return value against the remaining space before advancing:
int build_url(char *buf, size_t bufsize,
const char *base,
const char *key, const char *value) {
size_t used = 0;
int n;
const char *parts[] = { base, "?", key, "=", value };
for (size_t i = 0; i < 5; i++) {
size_t remaining = bufsize - used;
n = snprintf(buf + used, remaining, "%s", parts[i]);
if (n < 0) return -1;
if ((size_t)n >= remaining) return -1; /* truncated — bail */
used += n;
}
return 0;
}
The key line is (size_t)n >= remaining. snprintf writes at most remaining - 1 real characters plus a null, so any n >= remaining means truncation occurred — stop before used can overshoot.
Static analyzers rarely catch this because both individual calls look correct. Compile with -fsanitize=address and fuzz the field lengths; ASan will flag the heap-buffer-overflow on the very first oversized input.
snprintf returns the length it wanted to write, not what it did — blindly adding that to a cursor lets your buffer walk off a cliff on the very next call.
Daily Digital Circuits
2026-07-01
A pipelined CPU issues a new instruction every cycle, but sometimes the next instruction literally cannot execute yet — its inputs aren't ready, or a resource is busy. The hardware that detects this and freezes the pipeline is called an interlock. Get it wrong and your CPU silently computes with stale data.
Three classes of hazards trigger interlocks:
LOAD R1, [R2] followed by ADD R3, R1, R4. R1 isn't in the register file yet when the ADD reaches decode.The hazard detection unit sits in the decode stage. It compares source register IDs of the instruction being decoded against destination register IDs of every instruction currently in EX, MEM, and WB. If any match AND the producer hasn't written back yet AND no bypass path exists, it asserts stall: PC and IF/ID register hold their values, and the ID/EX register is filled with a bubble (a NOP with all control signals deasserted).
Concrete example — classic MIPS load-use hazard:
LW R1, 0(R2) in IFADD R3, R1, R4 in IFRule of thumb: Every load-use pair costs exactly one bubble on a classic 5-stage pipeline (assuming MEM→EX forwarding). Compilers reorder instructions to fill this slot — this is why old MIPS had the "load delay slot" architecturally visible.
The interlock logic itself is trivial in gates: a few comparators (source_reg == dest_reg_in_EX?) ANDed with valid/write-enable bits, ORed together. But getting it wrong is catastrophic — the CPU computes with garbage, and nothing crashes. It just produces wrong answers, silently.
Daily Electrical Circuits
2026-07-01
When you drive a bipolar junction transistor hard into saturation as a switch, you get a nice low VCE(sat) — often 100-200 mV — but you pay a brutal price when you try to turn it off. Excess minority carriers pile up in the base region, and until they recombine or get swept out, the transistor stubbornly refuses to turn off. This storage time (ts) can be hundreds of nanoseconds to microseconds, murdering your switching frequency and dumping heat into your device during the slow turn-off transition.
The Baker clamp is an elegant fix, invented by Richard Baker at MIT Lincoln Labs in the 1950s. The idea: prevent the transistor from ever entering deep saturation in the first place. You clamp VCB so the collector-base junction can't forward-bias significantly, keeping the BJT in the quasi-saturation region where VCE is low-ish but stored charge stays minimal.
The classic implementation: put a Schottky diode from base to collector. When VCE tries to drop below VBE − VSchottky (about 0.7 − 0.3 = 0.4 V), the Schottky forward-biases and shunts excess base drive directly to the collector instead of piling up as stored charge. The transistor sits at VCE ≈ 0.4 V — not as low as true saturation's 0.1 V, but the payoff is dramatic.
Real-world example: A 2N2222 driven hard into saturation with IB = 5 mA and IC = 50 mA has a spec'd storage time around 225 ns. Add a 1N5817 Schottky as a Baker clamp and ts drops to under 20 ns — a 10× improvement. This was the trick that made TTL logic families like 74S (Schottky TTL) and 74LS practical at tens of MHz back when everything was bipolar.
Enhanced Baker clamp with steering diode: Add a series silicon diode in the base drive path and connect the Schottky from the base drive node (before that diode) to the collector. Now the clamp point is VBE + VD(Si) − VSchottky ≈ 0.7 + 0.7 − 0.3 = 1.1 V above collector, giving you tighter control over quasi-saturation depth.
Rule of thumb: If your BJT switch's storage time exceeds ~10% of your switching period, add a Baker clamp. Use a Schottky with VF at least 300 mV below your BJT's VBE(on) at operating current — otherwise the clamp never conducts.
Modern designs mostly use MOSFETs to sidestep this problem entirely, but Baker clamps still appear in high-voltage BJT flyback drives, older industrial gear, and anywhere you need a rugged bipolar switch to run fast.
Daily Engineering Lesson
2026-07-01
A diaphragm pump moves fluid by flexing a flexible membrane back and forth inside a chamber. On the suction stroke, the diaphragm pulls away from the chamber, creating a low-pressure region that opens an inlet check valve and draws fluid in. On the discharge stroke, the diaphragm pushes back, closing the inlet valve and forcing fluid through the outlet check valve. The pumped fluid only touches the diaphragm, the check valves, and the chamber wetted surfaces — never any shaft, seal, or bearing.
That isolation is the whole point. Because there's no rotating shaft passing into the pumped fluid, there's no dynamic seal to leak. This makes diaphragm pumps the default choice for:
Actuation types: Mechanically actuated pumps use a crankshaft or eccentric — simple but limited to low pressures. Air-operated double diaphragm (AODD) pumps use compressed air alternately on the back side of two linked diaphragms; they're the workhorse of industrial transfer duty because they stall safely against a closed valve (no overpressure, no motor overload). Hydraulically actuated diaphragm pumps use oil behind the diaphragm and can hit 5,000+ psi for metering applications.
Rule of thumb for AODD sizing: Flow rate is roughly proportional to inlet air pressure and inversely proportional to discharge pressure. Air consumption is typically 1 to 1.5 SCFM per GPM of water at moderate discharge pressures. So a pump moving 20 GPM will burn through 20–30 SCFM of compressed air — meaning you often need a much bigger compressor than the pump nameplate suggests. This is why AODD pumps are cheap to buy but expensive to run: compressed air is one of the least efficient energy carriers in a plant.
Real-world example: A paint manufacturing plant transfers thick pigment dispersions from mixing tanks to filling lines. An AODD pump with EPDM diaphragms handles the shear-sensitive paint without damaging it, self-primes when tanks run low, and safely dead-heads when the filling line pauses — no controls, no VFD, no seal maintenance. When operators want more flow, they open the air regulator.
Diaphragm life is the failure mode to watch. Every stroke flexes the membrane; fatigue eventually cracks it. PTFE lasts longest chemically but flexes poorly; elastomers like Santoprene flex well but have narrower chemistry compatibility. Expect 10–100 million cycles depending on material, pressure, and temperature.
Forgotten Books
2026-07-01
Book: TM 11-405 Photographic Darkroom Equipment Processing Equipment PH-406 by United States. War Department (1943)
Read it: Internet Archive
Buried in the parts list of a wartime Signal Corps darkroom manual is a single item that hides an entire lost craft:
12 Plates PH-152 or PH-152-A, ferrotype.
This was the standard field-darkroom kit issued to Army photographers in 1943, printed by the War Department to teach soldiers how to develop, fix, and finish photographic prints under combat conditions. Twelve ferrotype plates traveled with every kit. Why twelve? Because in 1943, if you wanted a glossy photograph, you had to make it glossy — the paper alone would not do it.
A ferrotype plate was a sheet of chromium-plated steel (or japanned tin) polished to a mirror finish. After a print was washed, the photographer would squeegee it face-down onto the plate and let it dry. As the emulsion contracted against the polished surface, it took on a perfect physical replica of that mirror. When the print popped free — often with an audible tick — it had a shine no modern inkjet can match. The gloss you were looking at was not paint or coating. It was the reflection of the steel, transferred into the gelatin itself.
The technique demanded near-religious cleanliness. A single fingerprint or fleck of dust on the plate would be reproduced, in glossy relief, on every print pressed against it. Photographers waxed their plates with beeswax or a proprietary "ferrotype solution," buffed them to a haze, and stored them wrapped like fine silverware. When a plate got scratched, it was ruined — hence the Army packing a dozen spares.
What killed the ferrotype plate?
By 1985, ferrotype plates had vanished from photo supply catalogs. Today, a photographer under fifty has likely never seen one. Yet those glossy black-and-white portraits you find in grandparents' albums — the ones with the impossibly deep blacks and a shine like wet ink — almost all owe their look to a piece of polished steel that the Army thought important enough to issue in dozens.
There is a modern echo: fine-art printers using platinum-palladium or silver gelatin still occasionally hunt down old ferrotype plates on eBay because nothing since has produced quite the same optical effect. The gloss of a 1943 print is not a coating you can buy. It is a fossil of a mirror.
Forgotten Darkroom
2026-07-01
Book: R & D Catalog Form by CIA Reading Room (1966)
Read it: Internet Archive
Buried inside a routine 1966 CIA Research & Development Catalog Form — the kind of dry, mimeographed budget paperwork that filled Langley's filing cabinets — sits a reference to a color reproduction technology that has almost entirely vanished from public memory: Electrocolor.
The form describes a study, budgeted for fiscal year 1967, aimed at "Evaluation and determination of potential improvements of present electrocolor system." The document lays out why the National Photographic Interpretation Center (NPIC) cared:
The electrocolor process shows potential for producing color reflection prints for exploitation use. Its unique characteristic of individual color contrast control of the three basic colors, red, green and blue, indicates that this product would be extremely usef[ul]...
And earlier in the form:
The increasing use of color reconnaissance photography necessitates thorough investigation of all color reproduction systems to determine those advantages which can be applied to Center requirements.
The categories of effort listed are telling: "Electrocolor Plating — Materials — Equipment — Reproduction Techniques and Materials." This wasn't ordinary chemical dye-transfer printing. Electrocolor was an electrochemical process — sometimes called electrolytic color anodizing — in which colors were deposited into a porous, anodized metal surface (typically aluminum) via electrical current controlling the migration of metal salts into the pores. The color wasn't a dye layer on top; it was inside the oxide.
What made it attractive for spy photography was exactly what the CIA form flags: independent, granular contrast control over each of the three primaries. In an era when a U-2 or CORONA satellite might return a canister of color negative that had to be interpreted for a general's briefing the next morning, a print process that let an analyst pull green foliage down while pushing red vehicle paint up was genuinely valuable.
So where did it go? A few threads survived:
The modern parallel is striking: what a 1966 CIA contractor was trying to build with plated metals and electrical current is now the "Curves" tool in Photoshop, or the per-channel tone mapping in Lightroom. Every phone photographer casually adjusts red, green, and blue contrast independently — a capability that once required a classified R&D program.
The document is also a reminder that Cold War intelligence quietly bankrolled a huge amount of imaging science. The National Photographic Interpretation Center's need to squeeze more information out of a frame of film drove real chemistry, real optics, and real engineering — most of which was declassified only decades later, by which time the digital sensor had made the underlying problem obsolete.
Forgotten Patent
2026-07-01
In October 1938, a British engineer working at ITT's Paris laboratory quietly filed a patent that described, in complete detail, how to turn any analog signal — voice, music, video — into a stream of numbers, transmit those numbers, and reconstruct the original signal at the far end with essentially zero cumulative noise. He called it Pulse Code Modulation. His name was Alec Harley Reeves, and the patent was French Patent 852,183, followed by US Patent 2,272,070 (filed November 1939, granted February 1942) and British Patent 535,860.
The idea is the one that runs every phone call, streaming service, Blu-ray disc, and Zoom meeting today:
Reeves's patent drawings show exactly this: a sampler, a quantizer producing 5-bit codes, a serial pulse transmitter, and a decoder at the far end reading the pulses off a rotating commutator. He even understood the killer feature: because a receiver only has to distinguish pulse present from pulse absent, noise accumulated along the line can be regenerated away at every repeater. Analog signals degrade with distance. Digital ones don't.
The problem was that nothing on Earth could actually run it. A telephone-quality PCM signal needs about 64,000 bits per second. In 1938, the fastest practical electronics were mechanical commutators and slow vacuum tubes. Reeves built a proof-of-concept using gas-discharge tubes, but a real PCM telephone system would have required thousands of tubes running hot enough to melt themselves. The patent sat on the shelf.
Then the transistor arrived (1948), then the integrated circuit (1959), and suddenly Reeves's 1938 blueprint became buildable. Bell Labs' T1 carrier system (1962) — the first commercial digital telephone trunk line — is Reeves's patent implemented in silicon, 24 voice channels multiplexed as PCM at 1.544 Mbit/s. That same T1 line rate is still the atomic unit of telecom billing today.
From there PCM ate the world:
Reeves lived until 1971 and watched his patent become the foundation of the digital age. He also spent his later career at Standard Telecommunication Laboratories in Harlow, where — in a delightful bit of continuity — his colleague Charles Kao would win the 2009 Nobel Prize for figuring out how to send Reeves's PCM pulses down glass fiber instead of copper wire.
Reeves's patent is the rare filing that was fully correct and completely unbuildable at the same time. The math was right in 1938. The transistors just hadn't been invented yet.
Daily GitHub Zero Stars
2026-07-01
Language: Unknown
Link: https://github.com/shrinidhitin/Calculate-Intersection-between-3-Planes
This little repo tackles a classic problem from linear algebra and 3D geometry: given three planes in space, find the single point (if one exists) where all three intersect. It's the kind of exercise that shows up in first-year engineering courses, computer graphics classes, and computational geometry tutorials — but rarely gets a clean, dedicated implementation you can just drop into a project.
Under the hood, the math is straightforward: each plane is defined by an equation of the form ax + by + cz = d, and three such equations form a 3×3 linear system. Solve it (Cramer's rule, Gaussian elimination, or a matrix inverse) and you have your point. The interesting edge cases are what make this worth writing:
A well-written solver for this problem needs to check the determinant, handle degenerate configurations gracefully, and return meaningful results rather than crashing or silently producing garbage.
Who would benefit? Students working through linear algebra homework who want to check their answers. Game developers computing corner points where three collision surfaces meet. CAD and 3D modeling hobbyists building constraint solvers. Robotics folks doing kinematics or sensor fusion involving planar constraints. And anyone teaching computational geometry who wants a minimal reference implementation to point students at.
The repo is tiny and focused — exactly the kind of single-purpose utility that's easier to understand and audit than a monolithic geometry library. Even if you end up rewriting it in your language of choice, it's a nice starting point for thinking through the edge cases.
Daily Hardware Architecture
2026-07-01
IEEE 754 defines a class of numbers called denormals (or subnormals): values so small that the exponent is zero and the mantissa loses its implicit leading 1. They exist to give gradual underflow — the gap between the smallest normal number and zero gets filled with progressively less precise values instead of a hard cliff. This is mathematically elegant. It is also a performance disaster.
The floating-point unit's fast path assumes normalized inputs: the hidden bit is 1, the exponent is in range, alignment shifters have bounded work. When a denormal shows up, most CPUs cannot handle it in the pipelined FPU. Instead, the operation gets kicked out to a microcode assist — a slow path that takes tens or hundreds of cycles, stalls dependent ops, and often drains the pipeline behind it.
Concrete numbers on Intel Skylake and later: a normal FMUL is 4 cycles, fully pipelined. Feed it a denormal input and you get a microcode assist costing roughly 150-200 cycles. That's a 40x slowdown per operation. Producing a denormal result triggers the same penalty on the store side.
Real-world example: audio processing. A reverb tail decays exponentially toward zero. Once samples drop below ~1e-38 (single precision) or ~1e-308 (double), every subsequent multiply hits the denormal path. A reverb plugin that runs at 2% CPU during a loud signal can spike to 60% CPU when the tail decays — the classic "denormal storm." The fix is Flush-to-Zero (FTZ) and Denormals-Are-Zero (DAZ) mode bits in MXCSR (x86) or FPCR (ARM). Set them, and the hardware treats denormal inputs and outputs as zero, bypassing microcode entirely.
Rule of thumb: if your workload can produce values below ~1e-38 (float) or has any decaying signal touching zero, enable FTZ/DAZ. In gcc: _mm_setcsr(_mm_getcsr() | 0x8040). Cost: you lose gradual underflow (values below the normal range snap to zero). Benefit: guaranteed constant-time FP.
Rounding modes matter too. IEEE 754 defines four: round-to-nearest-even (default), toward zero, toward +∞, toward -∞. Changing the mode via MXCSR forces a pipeline flush on most x86 cores — the FPU caches the mode in its scheduler. Games and DSP code that toggle rounding modes per-operation (for fast float-to-int conversion, historically) paid huge hidden costs. This is why SSE cvttss2si (truncate) exists: it bakes the rounding mode into the opcode, no MXCSR change needed.
Hacker News Deep Cuts
2026-07-01
Link: https://github.com/hajoon22/icmp-nat-traversal
HN Discussion: 3 points, 1 comments
NAT traversal is one of those problems that seems solved until you actually try to punch a hole through a symmetric NAT sitting in front of a mobile carrier or a corporate firewall. The standard toolbox — STUN, TURN, ICE, UDP hole punching — works most of the time, but the failure modes are ugly enough that TURN relays remain a permanent tax on every serious P2P system, from WebRTC video to game netcode to Tailscale.
This project takes an unusually clever angle: it abuses ICMP Destination Unreachable packets as a signaling and traversal primitive. The trick is subtle but elegant. When a router generates an ICMP error, it embeds the original triggering IP header and the first several bytes of the offending transport payload inside the ICMP body. That embedded copy is treated as legitimate by NAT state machines along the return path — meaning you can smuggle a packet through a mapping that wouldn't otherwise accept unsolicited inbound traffic.
Why this matters for a technical audience:
The repo is small enough to read in one sitting, which is exactly the right size for a proof of concept like this. Expect Go or C, raw sockets, and a lot of hand-crafted packet construction. Even if the technique turns out to be fragile in the wild (many stateful firewalls now validate the embedded 5-tuple against active connections), the exercise of reading through the implementation is a masterclass in how NAT state actually works — knowledge that's increasingly rare as developers hide behind higher-level libraries.
This is the kind of Show HN that used to routinely hit the front page a decade ago: one person, one weird trick, one repo. It deserves a look before it disappears into the new-page abyss.
HN Jobs Teardown
2026-07-01
Source: HN Who is Hiring
Posted by: rssathe
Of the ten postings in this thread, Nightfall AI's is the most strategically revealing because its stack quietly telegraphs an ambition much bigger than "another DLP vendor." Let's unpack it.
The stack tells a story. Nightfall lists Go, Node.js, React, Python, Cassandra, Redis, Terraform, Docker, Kubernetes. Notice what's happening:
What the posting reveals about stage. They mention "$20M+ raised" (the sentence is truncated but this reads like a Series A/B). They're hiring across Backend, Systems, ML, Full Stack, and DevOps simultaneously — that's a company that has product-market fit signals and is now scaling every axis at once. Two offices (SF + Lehi, UT) suggests they're already building a cost-optimized engineering hub outside the Bay.
Skills and trends highlighted. The phrase "intersection of deep learning, information security, and distributed systems" is the entire modern security-tools thesis in one line. The industry has decided that regex-based DLP is dead, and ML-based classification of sensitive data across sprawling SaaS surfaces is the future. Nightfall is betting the company on it.
Green flags: Specific stack (not buzzword soup), concrete funding number, clear technical thesis, hiring across the full stack (indicating real product depth, not just a demo). The ML/security/distributed-systems trifecta is genuinely hard to hire for, and they know it.
Red flags: Truncated posting (minor — HN character limits). More substantively: "discover, classify, and protect sensitive data across cloud footprint" is an enormous scope for a Series A team. Executing on SaaS + data infra + APIs simultaneously is how startups spread thin. Also, no mention of compliance certifications (SOC 2, FedRAMP) — for a security vendor scanning customer data, that's the table stakes they'll be asked about on every sales call.
Daily Low-Level Programming
2026-07-01
When you write a value to memory and immediately read it back, the CPU faces a problem: the store hasn't committed to the L1 cache yet — it's sitting in the store buffer. A naïve implementation would stall the load until the store retired. Instead, modern CPUs implement store-to-load forwarding (STLF): the load-store unit snoops the store buffer and hands the load its data directly, bypassing the cache entirely. On Intel, this saves ~4–5 cycles per dependent load.
The catch: forwarding only works when the store and load fully overlap and are aligned. If the load reads bytes the store didn't write — even partially — the CPU falls back to a store forwarding stall: the load waits for the store to drain to L1 (typically 10–20 cycles), then re-issues. The rule of thumb on Skylake and later: the load's address range must be entirely contained within one prior store's address range, and the load must not straddle a cache line. A 4-byte load from a prior 8-byte store at the same address forwards fine. A 4-byte load starting one byte into a prior 4-byte store does not.
Real-world example — the classic union bug:
uint64_t to a union, then read the low uint32_t back. Forwards cleanly — the load is fully contained.uint32_ts to adjacent slots, then read them as one uint64_t. The load overlaps two stores, so forwarding fails and you eat a stall.This is why serializers that do byte-wise writes followed by word-wise reads (or vice versa) tank throughput. It's also why memcpy implementations avoid mixing store widths near a subsequent read of the destination.
Quick calculation: A store forwarding stall costs roughly the same as an L1 miss to L2 (~12 cycles). In a hot loop running 1 billion iterations, one avoidable stall per iteration = ~4 seconds of wasted CPU time on a 3 GHz core. Aligning your stores to match subsequent load widths is one of the highest-ROI micro-optimizations.
How to detect it: On Intel, use perf stat -e ld_blocks.store_forward. Any nonzero count in a tight loop is worth investigating. On AMD, look at ls_stlf events.
The mitigation is usually structural, not local: either widen your stores to match the largest subsequent read, or separate the write-then-read pair by enough independent work that the store drains before the load issues. Compilers don't fix this for you because they can't prove the aliasing in most cases.
RFC Deep Dive
2026-07-01
The internet has a deep, quiet architectural bug: the IP address is asked to do two jobs at once. It says who a host is (identifier — what TCP binds to, what your ACLs trust, what DNS resolves to) and where it is (locator — how packets are routed to it). For the first two decades this conflation was fine because hosts sat still. Then came laptops, phones, multi-homed servers, and NATs — and every mobility, multi-homing, and renumbering headache we still fight can be traced back to that conflation.
The core idea. HIP inserts a new namespace between the transport layer and the network layer: the Host Identity (HI), which is literally a public key. A host is its key. The 128-bit Host Identity Tag (HIT) is a hash of that key, shaped to fit exactly where an IPv6 address goes so sockets, ACLs, and applications don't have to change their APIs. TCP and UDP bind to HITs. IP addresses become pure locators — they can change mid-connection without breaking anything above.
How it works in practice. Two hosts run a four-packet Base Exchange:
I1: initiator says "let's talk"R1: responder returns a signed puzzle (DoS-resistance — you must burn CPU before the responder allocates state) plus its public keyI2: initiator returns the puzzle solution, its own key, and a Diffie-Hellman shareR2: responder confirms; both sides now share keysPayload traffic flows in IPsec ESP tunnels between HITs. When a host moves, it sends an UPDATE announcing new locators; the peer verifies with a return-routability check and keeps the connection alive. No new TCP handshake, no application-visible break.
Design decisions worth noting. HITs are self-certifying: because a HIT is a hash of the public key, you can verify that a peer owns its identifier without any PKI or third party. This is the same trick Tor onion addresses, IPFS CIDs, and Bitcoin addresses use — but HIP got there in 1999. The puzzle mechanism is one of the earliest deployed uses of client puzzles for DoS defence in a real IETF protocol. And critically, HIP is deliberately a shim: it does not require new APIs, new socket types, or app-layer changes. Legacy code gets identifier/locator separation for free.
Where you've actually met it. Boeing runs HIP in production on its 787 fleet to secure and multi-home aircraft-to-ground links across shifting cellular, satellite, and Wi-Fi paths. Tempered Networks (now Zscaler's Airgap) built industrial network segmentation on HIP. And the intellectual DNA is everywhere in modern protocols: QUIC's connection IDs solve the same "survive an address change" problem HIP identified; LISP, ILNP, and SCION all sit on some flavor of the loc/ID split; WireGuard's "the peer is its public key" model is essentially a stripped-down HIP.
The history. Moskowitz began sketching HIP in 1999, frustrated with IPsec's dependence on IP addresses as identity. Pekka Nikander's team at Ericsson NomadicLab in Finland did much of the protocol engineering. RFC 4423 is the architecture document (Informational); the protocol itself was standardized in RFC 5201 and refined in RFC 7401 (HIPv2, 2015), which swapped SHA-1 for SHA-256 and added modern crypto agility.
Stack Overflow Unanswered
2026-07-01
The asker is parsing PT_NOTE segments and SHT_NOTE sections in real ELF binaries and finds that the format documented in elf(5) — a 12-byte header (namesz, descsz, type) followed by name and desc, each padded to a 4-byte boundary — doesn't match everything they see in the wild. They're asking why there appears to be a second, undocumented layout.
Why this is a real trap, not a mistake. The confusion isn't imaginary: the ELF gABI, glibc, binutils, and the Linux kernel have historically disagreed on the alignment rule for 64-bit notes. Three positions coexist in the ecosystem:
Elf64_Nhdr)..note.* sections use 4-byte alignment even on 64-bit ELF. This is what elf(5) documents, and it's what binutils emits.NT_FILE or NT_GNU_PROPERTY_TYPE_0) whose internal layout depends on ELF class and looks like "a second format" if you're only inspecting the outer bytes.Approach. Trust the section/segment's sh_addralign/p_align field — that's the alignment the producer intended, and modern binutils sets it correctly (usually 4, occasionally 8). Then:
namesz bytes for the name, then align to sh_addralign.descsz bytes for the desc, then align again.For the well-known GNU notes (NT_GNU_BUILD_ID, NT_GNU_PROPERTY_TYPE_0, NT_GNU_ABI_TAG), and for core-dump notes (NT_PRSTATUS, NT_FILE, NT_PRPSINFO), the desc payload has its own structured layout — that's likely the "second format" the asker is seeing. It isn't a second note format; it's a typed payload inside the note.
Gotchas. The Linux kernel's fs/binfmt_elf.c historically padded to 4 bytes for core notes regardless of ELF class, so a strictly gABI-conformant parser will misread real Linux core files. Cross-check against readelf -n, which handles both conventions. And watch for NT_GNU_PROPERTY_TYPE_0: its outer alignment matches the section's, but its inner property array is aligned to sizeof(void*), which really does differ between ELF32 and ELF64.
Daily Software Engineering
2026-07-01
You have a service that fetches user profiles from a slow upstream API. A hot user's profile expires from cache. In the next 50ms, 200 requests all miss the cache and stampede the upstream. You just turned one cache miss into 200 duplicate fetches — burning latency, quota, and money on identical work.
Singleflight (popularized by Go's golang.org/x/sync/singleflight) solves this: when N goroutines ask for the same key at the same time, exactly one does the work, and the other N-1 wait for its result. It's dogpile prevention scoped to a single process — no Redis, no distributed locks, no coordination overhead.
How it works: a map keyed by the request identifier holds an in-flight call object (a promise, essentially). First caller inserts the entry and starts the fetch. Subsequent callers find the existing entry and block on its completion channel. When the fetch returns, everyone gets the same result — success or error — and the entry is deleted.
Concrete example: a GraphQL resolver that loads product details by SKU. Under load, the same SKU appears in dozens of concurrent queries. Wrap the loader:
result, err, shared := group.Do("sku:" + id, func() { return db.LoadProduct(id) })shared boolean tells you whether the result was piggybacked — useful for metrics.The math: if your fetch takes 100ms and you get 500 requests/second for a hot key, without singleflight you do ~50 concurrent fetches at any moment. With singleflight, you do one. Load reduction ≈ concurrent requests per key during the fetch window. Higher fanout, bigger win.
The gotchas:
DoChan with a timeout so slow leaders don't hold everyone hostage."user:123" is wrong if the fetch varies by locale — use "user:123:en-US".Singleflight is one of those 30-line patterns that pays for itself the first time a hot key expires under load. Reach for it whenever your read path has expensive, idempotent, keyable work behind it.
Tool Nobody Knows
2026-07-01
tar was designed for magnetic tape in 1979. Every design choice — sequential access, no index, incrementals via full filesystem walks, "let me stream the whole thing to find one file" — makes sense on a spinning reel. On a 20 TB spinning disk with a home directory full of Docker layers, it's malpractice. dar (Disk ARchive, first release 2002, still actively maintained) is what tar would be if it were designed for random-access media.
The killer feature: every dar archive ends with a catalog — a compressed index of every file, its inode metadata, its position in the archive, and its compression parameters. Listing, extracting, or diffing goes straight to the catalog. No streaming 800 GB to check whether photos/2019/ is in there.
# Full backup, per-file gzip, skip already-compressed extensions
dar -c /backup/full -R /home/shaun -z -Z "*.jpg" -Z "*.mp4" -Z "*.zst"
# List contents — reads the catalog at the tail, not the payload
dar -l /backup/full | head
# Random-access extraction of one file
dar -x /backup/full -R /tmp/restore -g monitoring-stack/router/network-config.yaml
Real incremental backups. tar's --listed-incremental requires walking the entire tree and comparing to a snapshot file. dar reads the previous catalog and diffs against inode ctime/mtime — the archive itself is the snapshot:
# Yesterday's full is the reference. Only changed files land in the incremental.
dar -c /backup/2026-07-01-incr -A /backup/full -R /home/shaun -z
# Chain of incrementals — restore replays them in order
dar -x /backup/2026-07-01-incr -A /backup/full -R /tmp/restore
Isolated catalogs. Want to plan a restore from an archive stored on a slow S3 tier? Extract just the catalog — a few megabytes — and browse it locally:
dar -C /local/catalog_only -A /slow-storage/full
dar -l /local/catalog_only # instant, no cloud round-trip
Slicing that actually resumes. tar's -M multi-volume is a foot-cannon; dar slices are self-describing, resumable, and each carries a copy of the catalog if you ask:
# 4 GB slices, extract executes a hook when a slice is needed (mount media, fetch from S3…)
dar -c /backup/vol -R /home/shaun -s 4G -E 'aws s3 cp %p s3://bucket/'
Filesystem-diff mode. Not a backup — an audit. Compare a live tree against a known-good archive without extracting anything:
dar -d /backup/full -R /home/shaun
# reports: modified, added, deleted, permission changes, xattr changes, ACL changes
dar also handles sparse files properly (tar corrupts them into dense files unless you remember --sparse), preserves Linux xattrs and POSIX ACLs by default, supports strong encryption (-K aes:) with the key derived per-slice so a torn slice doesn't leak the rest, and has a stable libdar C++ library plus Python bindings if you want to build a UI on top.
The one honest downside: the CLI syntax is 2002-flavored. -c creates, -x extracts, -l lists, -t tests, -d diffs, -C isolates a catalog, -A supplies a reference archive, and -R is the root. Once it's in your muscle memory, you'll wonder why we all still tar tzf | grep a 400 GB tarball to find one config file.
What If Engineering
2026-07-01
A space elevator needs a cable stronger than any material we can make. A space fountain, proposed by Robert Forward in the 1980s, sidesteps the strength problem entirely: instead of a static structure supported by tension, it's a dynamic tower held up by the momentum of a continuously circulating stream of pellets. Turn off the pellet stream, and it collapses like a sand castle.
Here's the trick. A ground-based accelerator shoots iron slugs straight up at high velocity. At the top of the tower — say 100 km up, at the Kármán line — magnetic deflectors reverse the pellets' direction. The reaction force from that deflection pushes up on the tower. The pellets then decelerate on the way down, get caught, re-accelerated, and launched again. The tower stands on a fountain of upward-flowing metal.
The numbers. Launch pellets at v₀ = 2,000 m/s. Gravity bleeds them down: v_top² = v₀² − 2gh = 4×10⁶ − 2(9.8)(10⁵) ≈ 2×10⁶, so they arrive at 100 km with v_top ≈ 1,414 m/s. Deflect them into a downward path and the momentum change per pellet is Δv ≈ 2,828 m/s.
Say we want to support a 5,000-tonne tower structure (plausibly light — mostly thin magnetic guideway, no compression load). Required upward force: F = mg ≈ 5×10⁷ N. The mass flow rate of pellets we need:
ṁ = F / Δv = 5×10⁷ / 2,828 ≈ 17,700 kg/s
Nearly 18 tonnes of iron per second in continuous flight. The pellet stream mass aloft at any instant, averaged over the trajectory, is roughly ṁ × 2h/v_avg ≈ 17,700 × 200,000/1,700 ≈ 2,000 tonnes. There's literally a small ship's worth of iron hovering above you.
The power bill. Kinetic energy flux at launch: P = ½ṁv₀² = 0.5 × 17,700 × 4×10⁶ ≈ 35 GW. That's the entire output of ~30 nuclear reactors just to keep the tower standing. With regenerative catchers recovering the returning pellets' KE, and ideally recovering the deflection energy magnetically at the top, losses might drop to 5–10% — call it 2–4 GW steady-state, roughly a Hoover Dam's worth. Not free, but tractable.
Why bother? Because now you have a launch platform sitting above 99.9997% of the atmosphere. Ride an elevator up the guideway, hop onto the pellet stream (or a linear motor running along its length), and get accelerated horizontally at the top station. A 5-g horizontal push over ~160 km gets you to orbital velocity (7.8 km/s) without needing a rocket. The tower doubles as the first stage of every launch.
The failure modes are spectacular. Lose power to the pellet accelerator and the tower deflates in about a minute — the last pellets already aloft finish their arcs, and then nothing is pushing up anymore. You need triple-redundant power, and the ground station must catch a decelerating rain of iron slugs safely. A single deflection misalignment at the top could send a 1-kg pellet at 1.4 km/s (roughly a tank shell) off in an arbitrary direction.
Materials-wise, everything is soft magnetics, superconducting coils, and vacuum tubes — all off-the-shelf. Unlike a space elevator, no unobtainium required. The engineering is power management and control loops, not tensile strength.
Wikipedia Rabbit Hole
2026-07-01
Wikipedia: Read the full article
Imagine a power plant with no moving parts. No spinning turbines, no whirling shafts, no bearings to wear out. Just a jet of white-hot glowing gas screaming through a magnetic field, and electricity pouring out the sides. This isn't science fiction — it's a magnetohydrodynamic (MHD) generator, and the Soviets built working ones that fed power into the national grid.
The physics is elegantly simple, and it's the same principle as a bicycle dynamo turned inside out. In a normal generator, you move a copper wire through a magnetic field to push electrons along it. In an MHD generator, you skip the wire entirely: you shoot an electrically conductive fluid — usually ionized gas (plasma) or liquid metal — through a magnetic field. The Lorentz force shoves positive ions one way and electrons the other. Stick electrodes on opposite walls of the channel, and you've got a direct-current power source with no rotating machinery.
Why bother? Because thermodynamics loves high temperatures. A conventional steam turbine tops out around 600°C — push hotter and the blades melt. But an MHD generator has no blades. It can happily run on plasma at 2,000–3,000°C, which means it can extract useful work from heat that would destroy any conventional turbine. Chain an MHD generator to a normal steam plant as a "topping cycle," and combined efficiency can exceed 60% — a huge jump over the ~40% of typical fossil plants.
The Soviet Union took this seriously. The U-25 plant near Moscow, commissioned in 1971, was a real 25-megawatt MHD generator burning natural gas seeded with potassium (to boost ionization) and it actually sold electricity to the Moscow grid for years. The US built a coal-fired test facility in Montana. Japan, India, and China all had major programs.
So why don't we have MHD plants today? A few nasty engineering problems:
The technology never quite crossed the commercial finish line, but it hasn't died. MHD is still used in naval propulsion research — Japan's Yamato-1 ship actually sailed in 1992 using seawater as the working fluid, propelled silently by magnetic fields with no propeller at all. And the same principles govern how the sun's corona works, how tokamak fusion reactors confine plasma, and how NASA plans to slow spacecraft in Martian atmospheres.
The really wild part: the human body contains a working MHD generator. Blood is a weakly conductive fluid, and inside an MRI scanner's strong magnetic field, the flow of blood through your aorta generates a measurable voltage on your skin — the "MHD artifact" that radiologists have to filter out of ECG traces.
Daily YT Documentary
2026-07-01
Channel: Fact Check (11 subscribers)
Of the candidates on offer — a pile of movie recaps, hashtag-spammed Shorts, and film trailers — this is the only entry that genuinely tries to teach something. It takes a deceptively simple question ("does the color red exist?") and uses it as a doorway into the hard problem of consciousness, the physics of light, and the neuroscience of perception.
The premise sounds like clickbait, but it's a well-worn puzzle in philosophy of mind called the qualia problem: photons of a certain wavelength hit your retina, your brain constructs an experience of "redness," but nothing in the physical description of the wavelength is red. Red is a private mental event. There's no scientific instrument that can measure whether your red looks like my red — a thought experiment known as the inverted spectrum.
A good short-form treatment of this topic can introduce viewers to concepts like metamers (different light spectra that produce identical color sensations), the trichromatic structure of human cone cells, and why the "brown" and "magenta" you see aren't wavelengths at all — the brain invents them. It's one of those ideas that permanently changes how you think about your own senses.
With only 11 subscribers, the production quality is likely rough, but the topic itself is legitimately educational and the least clickbait-adjacent option in this batch.
Daily YT Electronics
2026-07-01
Channel: Embedded DSP Design (335 subscribers)
Clock Domain Crossing is one of those FPGA topics that trips up nearly every engineer at some point — metastability, data loss, and subtle timing bugs that only appear on hardware are notoriously hard to debug. What makes this video stand out is that it doesn't teach CDC in the abstract: it walks through a real signal-processing pipeline where an ADC feeds samples into a FIR filter over an AXI Stream interface, which then hands data off to a DAC — and each stage may live in a different clock domain.
That end-to-end framing is genuinely valuable. Most CDC tutorials show a toy two-flop synchronizer and stop there, but production DSP systems require careful thought about which CDC technique fits which crossing: two-flop synchronizers for single-bit control signals, gray-coded pointers for async FIFOs carrying multi-bit sample buses, and handshake protocols for AXI Stream backpressure across domains. Seeing these choices made in context — with the constraints of a live ADC/DAC pipeline — is far more instructive than a whiteboard walkthrough.
The channel is tiny (335 subscribers) but the topic is aimed squarely at practicing FPGA engineers doing real DSP work. If you've ever wondered why your simulation passes but hardware occasionally glitches, or you're designing anything with mixed sample-rate and processing clocks, this is the kind of applied content that's hard to find outside of paid training.
Daily YT Engineering
2026-07-01
Channel: Crazy Physics (286 subscribers)
Note: this batch is heavy on Shorts and hashtag-spam thumbnails. This is the least-bad pick — a handwritten-notes lecture aimed at MSc physics students, not a Short.
The eutectic point is one of those concepts that sits at the intersection of thermodynamics, metallurgy, and solid-state physics — and it's genuinely hard to grok from a static textbook diagram. It's the unique composition where a liquid alloy freezes directly into two solid phases at a single temperature, lower than either pure component's melting point. That property is why solders work, why Wood's metal melts in hot water, and why cast irons behave the way they do.
A whiteboard-style walkthrough shines here because you actually watch the phase diagram get constructed — the liquidus and solidus lines meeting at the invariant point, the two-phase regions on either side, and the lever-rule geometry that tells you how much of each phase forms as you cool through the mushy zone. The channel is small (286 subs) and the format is unpretentious handwritten notes, which usually means the presenter is teaching rather than performing.
If you've ever squinted at an iron-carbon or lead-tin diagram and wondered why the eutectic notch matters, this should clear it up in one sitting.
Daily YT Maker
2026-07-01
Channel: LED WORLD (1430 subscribers)
Note: this batch was mostly Shorts and low-effort clips. This is the least-bad pick — a full-length engineering build with a real working mechanism.
This video documents a working pneumatic plate-forming machine built as a mechanical engineering college project. Unlike most maker shorts, it demonstrates a complete pneumatic power system: a compressor drives a cylinder that presses a flat blank into a die, forming a shaped plate in a single stroke.
What makes it educational is that it touches several concepts at once — pneumatic actuation (pressure, cylinder sizing, valve control), die/punch design (matching male and female tooling), and frame construction (the rigid structure needed to resist forming loads without flex). Viewers considering a capstone or hobby fabrication project can see how those subsystems fit together in a working prototype rather than a rendered animation.
The description hints at a "ready-to-submit" build, so expect the video to walk through the actual assembled machine, the pneumatic circuit, and a live demo of a plate being pressed. For students, it's a reference model; for hobbyists, it's a useful primer on adapting cheap air cylinders into forming tools instead of buying an expensive hydraulic press.
Daily YT Welding
2026-07-01
Channel: US Farmland (962 subscribers)
Note: today's batch was thin — almost every candidate was a hashtag-spam short or a generic "satisfying forging" clip with no explanation. This one is the least bad because it at least has a specific, unusual premise.
The video documents turning a large fishing hook into a small working knife. That's a genuinely interesting starting stock choice: fishing hooks are typically made from high-carbon steel (often 1055–1095 or similar) that's been heat-treated for spring temper, which makes them a plausible — if unconventional — source for a blade.
What makes this worth a look for someone learning forging is the reduction problem. A hook is a curved, tapered piece of wire. To turn it into a knife you have to straighten it, then upset or draw out the steel to get enough mass for a blade profile and tang. Watching how the smith redistributes that limited material is the real lesson, even without narration.
It's also a good "scrap-to-tool" exercise: the video implicitly shows that usable blade steel is everywhere if you know what to look for, which is a foundational mindset for hobby bladesmithing before you start buying bar stock.
