25 newsletters today.
Abandoned Futures
2026-06-29
In 1963, the US Navy's Light Armed Reconnaissance Aircraft (LARA) competition asked for something nobody had built: a counter-insurgency (COIN) airplane that could take off in 800 feet from a jungle clearing, loiter for five hours, carry 2,400 pounds of ordnance, survive ground fire, and operate from a carrier deck. Nine companies bid. North American won with the OV-10 Bronco. Convair lost with the Model 48 Charger β an aircraft that, by every measurable metric in the flight test data, was the better airplane.
The Charger first flew on 25 November 1964 at Convair's San Diego plant, piloted by John Knebel. It was a twin-boom, twin-turboprop pusher-puller... wait, no β twin tractor configuration, with two Pratt & Whitney Canada PT6A-20 turboprops (650 shp each), a high wing with full-span double-slotted flaps, and β crucially β boundary layer control (BLC) blown across the flaps using bleed air. This was the trick. The Charger could fly controlled at 55 knots. It took off in 475 feet. It landed in 460 feet. The OV-10 needed 740 feet to take off and couldn't fly slower than 65 knots clean.
Top speed was 320 mph β 35 mph faster than the Bronco. Ferry range was 1,650 miles. It could carry five 500-lb bombs, four 7.62mm machine guns, and rocket pods on six hardpoints, or six paratroopers in the cargo bay aft of the cockpit. Sergei Sikorsky himself flew it and reportedly told a Convair engineer the STOL performance was "indecent."
So why don't you know its name? On 19 October 1965, on the 196th test flight, pilot J.D. McEachern brought the Charger in for landing at NAS North Island. He was distracted by a radio call about traffic, ran through the pre-landing checklist mentally, and convinced himself he'd already lowered the gear. He hadn't. The Charger belly-landed on the runway at about 70 knots. Nobody was hurt. The damage was repairable β the props were bent, the lower fuselage was scraped, the BLC ducting was crushed. Convair estimated repair at $1.2 million and four months.
Convair's board, looking at a contract they'd already lost to North American and a parent company (General Dynamics) hemorrhaging cash on the F-111 program, refused to fund the repair. The sole prototype was scrapped in early 1966. The tooling was destroyed. The OV-10 Bronco went on to serve in Vietnam, Desert Storm, and is still flying today in 2026 with the Philippine Air Force and a handful of US contractors.
Here's why the Charger deserves a second look in 2026: the COIN mission is back. The US Air Force's OA-1K Skyraider II (the Air Tractor AT-802U) entered service in 2024 to fill exactly this gap β armed overwatch, austere field operation, long loiter. It cruises at 200 mph and lands in 750 feet. The Charger beat it by 60 years on every spec. Modern materials (composite booms, FADEC turboprops at 1,100 shp, BLC replaced by distributed electric propulsion across the wing) would push STOL numbers below 300 feet. The PT6A-20 is now the PT6A-67, which puts out 1,200 shp at the same weight. You could build a Charger today with twin Pratt PT6E-67XPs and have an airplane that takes off from a 250-foot strip carrying 3,000 pounds of ordnance β exactly the mission Special Operations Command keeps writing requirements for.
The Charger lost not to a better airplane, but to an embarrassed checklist.
ArXiv Paper Digest
2026-06-29
Imagine a team where every developer is brilliant in isolation. Each one writes code that passes its own tests, ships features that work in demos, and never breaks a build on their own machine. Now imagine that after a year of this, the codebase is a tangled mess β duplicated logic everywhere, inconsistent naming, modules that barely fit together. Nobody did anything wrong individually. But collectively, the repository is suffering.
That, in a nutshell, is the problem Daniel Russo's paper raises about AI coding agents. Today's autonomous agents β the ones opening pull requests, fixing bugs, and merging code into shared repositories β are evaluated the way we've always evaluated software components: one at a time, on isolated benchmark tasks. Did the agent solve the ticket? Did its tests pass? Great, ship it.
But Russo argues this misses the real story. When dozens or hundreds of agents independently contribute to the same repository, problems emerge that no single contribution is responsible for. He calls this integration friction β the accumulating cost of stitching together work from many autonomous contributors who each optimized for their own local success.
The key insight is a shift in where we measure quality:
This matters because agentic coding is no longer a thought experiment. Tools like Claude Code, Cursor, Devin, and GitHub Copilot's agent mode are actively merging code into production repositories. The benchmarks we use to decide which agents to trust (SWE-bench and its cousins) treat each task as independent. They don't capture what happens when an agent's stylistic choices clash with the conventions of the surrounding code, or when ten agents independently re-implement nearly the same helper function, or when subtle semantic drift accumulates over hundreds of merges.
Russo's framing reframes the governance question, too. If the unit of risk is the repository, then mitigation belongs at the repository level: shared conventions enforced by tooling, architectural guardrails, automated detection of duplication and drift, and merge policies that account for who (or what) is contributing. The agent vendor can't fix this from the outside; it requires the repository owner to set the rules of the ecosystem.
It's a useful corrective to the dominant narrative around AI coding. We've been asking "how smart is this agent?" when the harder, more important question is "what happens to a codebase that lives with these agents for a year?"
Daily Automotive Engines
2026-06-29
You've already learned how four primary tubes meet at a collector. Now let's talk about the geometry of that meeting point β specifically the merge angle, the cone where individual pipes transition into a single outlet. Header builders obsess over primary length and diameter, but a poorly designed merge can throw away 15-20 horsepower that perfect primaries would have made.
The merge collector is where exhaust pulses from each cylinder must blend into a coherent flow. When cylinder 1 fires and sends a high-velocity slug down its primary, that slug arrives at the collector and creates a low-pressure wave that reflects back up the other three primaries. That reflected vacuum is what scavenges the next cylinder during valve overlap. The geometry of the merge controls how cleanly that wave forms.
The critical variable is the included angle β the angle between opposing primary tubes as they converge:
Real-world example: A small-block Chevy running a 4-into-1 header with a 4Β° per side merge (the famous "Tri-Y" style transitioned into single) on a dyno consistently makes 8-12 hp more peak than the same engine with a "stub-style" collector where primaries dump abruptly into a sudden expansion. The primaries are identical length and diameter β only the merge geometry changed.
Rule of thumb for collector length: The merge cone should be at least 3x the collector outlet diameter to allow pulses to blend properly. So a 3" collector wants a 9"+ merge cone. Anything shorter and you're slamming pulses together instead of merging them.
There's also an area ratio rule: the combined cross-sectional area of the four primaries should be roughly 1.6-1.8x the collector outlet area at the throat. Too small a collector chokes flow; too large and exhaust velocity drops, killing scavenging. For 1.75" primaries (2.4 sq in each, 9.6 sq in total), you want a collector throat around 5.5-6.0 sq in β that's a 2.65-2.75" outlet.
The cheapest headers crush four pipes into a flat plate with a hole in the middle. The expensive ones machine a billet merge spike that sits in the center of the cone, forcing pulses to wrap around it and meet tangentially. That spike is worth real horsepower.
Daily Debugging Puzzle
while (!feof(f)) Trap: The Last Line That Prints Twice2026-06-29
This function reads a config file line by line and prints each one. It's been in production for years. Then a user reports their final config entry is being applied twice, and on an empty file the program prints garbage.
#include <stdio.h>
void dump_lines(const char *path) {
FILE *f = fopen(path, "r");
if (!f) return;
char line[256];
while (!feof(f)) {
fgets(line, sizeof(line), f);
printf("> %s", line);
}
fclose(f);
}
int main(void) {
dump_lines("config.txt");
return 0;
}
If config.txt contains three lines, the output has four. If it's empty, you get one line of uninitialized stack memory. Why?
feof(f) does not predict whether the next read will succeed. It reports whether a previous read already failed because it crossed EOF. After the third fgets succeeds β reading the file's last line and consuming the trailing newline β the stream is positioned at EOF but the EOF flag is not yet set. No read has crossed the boundary yet; one has merely reached it.
So the loop condition is still false, and we iterate one more time. The fourth fgets finally hits EOF and returns NULL β but we ignore its return value. line still holds the contents of the previous read, so printf happily prints the last line a second time. On an empty file, the very first fgets fails, and we print whatever bytes happened to live in the uninitialized 256-byte buffer.
This isn't a quirk of fgets. The same trap lurks behind fscanf, fread, and fgetc when paired with !feof(f) as a loop guard. C++ commits the analogous sin with while (!stream.eof()). The naming is honest β programs that ask "have we reached the end of the file?" before the read are asking the wrong question.
Check the return value of the read itself. fgets returns NULL on EOF or error; that's your loop terminator:
char line[256];
while (fgets(line, sizeof(line), f)) {
printf("> %s", line);
}
If you need to distinguish EOF from a read error, call feof(f) or ferror(f) after the loop, on the failure path β not as the loop condition.
A subtler variant of the bug survives even after you stop using feof as a guard: fgets(line, n, f); if (feof(f)) break; process(line);. It looks cleaner, but if fgets returns NULL due to a read error rather than EOF, feof is false, the broken read goes undetected, and process gobbles the previous iteration's buffer. The only safe pattern is: branch on what the read function told you, not on what a separate flag suggests about the stream's overall mood.
The flag tells you what happened on some call. The return value tells you what happened on this one. Always trust the return value.
feof() reports that a past read hit EOF, not that the next read will β so loop on the return value of fgets/fread, never on !feof(f).
Daily Digital Circuits
2026-06-29
Every flip-flop we've discussed so far has a dirty secret: it needs both the clock and its inverse. A master-slave D flip-flop uses CLK on one latch and CLKΜ on the other. That means somewhere on the chip, an inverter generates CLKΜ, and that inverter has delay. If CLK and CLKΜ don't arrive at the latches at the same time (clock skew between the two phases), you get a window where both latches are transparent β or neither is. Data races through, or data gets lost. At high frequencies, this is fatal.
True Single-Phase Clocking (TSPC), invented by Yuan and Svensson in 1989, eliminates the inverted clock entirely. The flip-flop is built from three dynamic stages, each clocked by the same CLK wire. No CLKΜ anywhere. No skew between phases because there's only one phase.
The classic TSPC D flip-flop uses 9 transistors arranged as three cascaded inverter-like stages: a precharge stage (P-block), an evaluate stage (N-block), and an output stage. When CLK is low, the first stage samples D onto an internal node via charge storage. When CLK rises, the second stage evaluates and the third stage latches the result. The data ripples through on a single clock edge β but because each stage is gated differently by the same CLK signal, the structure behaves as edge-triggered.
Why hardware engineers love it:
Real-world example: TSPC dominated high-speed prescalers in PLLs for cellular radios in the 1990s-2000s. A 10 GHz divide-by-2 prescaler in a 0.18ΞΌm process needed flops that could toggle every 100ps. Traditional CMOS master-slave couldn't keep up. TSPC could.
The catch β it's dynamic logic: TSPC stores state on parasitic gate capacitance. If the clock stops, charge leaks away and state is lost within microseconds. Rule of thumb: TSPC needs a minimum clock frequency of roughly 1 MHz at room temperature, and significantly higher (10+ MHz) at elevated temperatures where leakage triples per 10Β°C. You cannot pause a TSPC clock for power gating β the flops forget. This is why TSPC is reserved for always-on, high-frequency blocks like clock dividers, never for general-purpose datapath logic that might be clock-gated.
Daily Electrical Circuits
2026-06-29
Modern Class-A output stages drive low-impedance speakers directly, burning enormous quiescent current. But before the transistor age β and still today in tube guitar amps and high-end audio β designers used a transformer to couple the output stage to the load. This trick lets a high-impedance, low-current device efficiently drive a low-impedance load like an 8 Ξ© speaker, while also providing DC isolation and a path for the collector current to flow through a near-zero DC resistance.
The key insight is impedance reflection. A transformer with turns ratio N = Np/Ns reflects the secondary load impedance ZL back to the primary as:
So an 8 Ξ© speaker on a 20:1 transformer looks like 400 Γ 8 = 3.2 kΞ© to the transistor β a perfectly reasonable collector load.
Real-world example: a single-ended 6V6 tube amp. The 6V6 wants to see roughly 5 kΞ© plate load for maximum undistorted power output. With an 8 Ξ© speaker, you'd choose a turns ratio of β(5000/8) β 25:1. The plate sits at +250 V DC, but because the primary's DC resistance is only ~200 Ξ©, the tube dissipates power only on the signal swing β not in heating a resistor.
The DC load line is nearly vertical; the AC load line is the slope that matters. The quiescent operating point sits at (VCC, IQ), but the signal swings symmetrically around it along the AC load line of slope β1/Zprimary. The peak voltage swing can actually exceed VCC β the transformer's inductive kick lets the collector swing up to roughly 2ΓVCC on the positive half-cycle. This is why a 250 V plate can swing to nearly 500 V peak.
Efficiency rule of thumb: a transformer-coupled Class-A stage tops out at 50% efficiency, versus 25% for resistor-coupled Class-A. The transformer eliminates the DC dissipation in the load resistor β that's where the doubled efficiency comes from.
Watch out for:
For a 5 W output stage, expect a transformer with primary inductance of 10β30 H and a gapped EI core sized for ~10 mA of DC bias without saturating.
Daily Engineering Lesson
2026-06-29
A centrifugal pump trades flow for pressure β push back hard enough and flow drops to zero. A positive displacement (PD) pump doesn't negotiate. Each revolution traps a fixed volume of fluid and shoves it downstream. Block the outlet and the pump will rupture the casing, snap the shaft, or trip the motor before it gives up that volume. This is why PD pumps require a relief valve on the discharge β not as a safety nice-to-have, but as a survival condition.
The main families:
The key behavior: flow rate is (almost) independent of discharge pressure. A PD pump's curve is nearly a vertical line on a flow-vs-pressure plot. Centrifugal pumps droop; PD pumps stand up. This makes them the choice when you need metered flow β chemical dosing, fuel injection, hydraulic actuators where speed must be predictable.
Rule of thumb β sizing a PD pump:
Theoretical flow = displacement per revolution Γ RPM. A gear pump with 10 cmΒ³/rev displacement at 1750 RPM delivers:
10 Γ 1750 = 17,500 cmΒ³/min β 17.5 L/min (about 4.6 GPM)
Subtract volumetric efficiency (typically 85β95% for gear pumps, dropping as pressure rises and internal leakage increases). At 3,000 psi a gear pump might deliver only 80% of theoretical; piston pumps stay above 95% even at high pressure, which is why they dominate high-pressure hydraulics.
Real-world example: an injection molding machine uses a variable-displacement axial piston pump. The swashplate angle changes during the cycle β high flow at low pressure to fill the mold fast, then low flow at high pressure to pack and hold. A centrifugal pump physically cannot do this; PD pump architecture makes it natural.
Forgotten Books
2026-06-29
Book: Chemists serve producers and users of tanning materials by F. P. Veitch (1932)
Read it: Internet Archive
In October 1932, in the depths of the Depression, Dr. F. P. Veitch of the U.S. Bureau of Chemistry and Soils stepped up to an NBC microphone on the National Farm and Home Hour, broadcast across a network of 48 stations. His subject sounds dry β tanning materials β but tucked inside the announcer's introduction is a casual reference to an entire vanished rural economy:
"Leather also means income to every farmer who sells a hide or a cord of tan bark."
A cord of tan bark. Read past it and you miss it. For nearly two centuries this was a real product on a real ledger line for American farmers β particularly in Pennsylvania, New York, West Virginia, and the southern Appalachians. Crews stripped hemlock and chestnut oak each spring when the sap rose and the bark slipped free of the trunk. The bark was stacked, dried, and sold by the cord to local tanneries, which ground it and leached out the tannins that turned hides into shoe leather.
The announcer's other boast β also forgotten β frames the scale:
"Did you know that the leather industry of the United States is the biggest in the world? We turn out a third of the world's total output of leather. Each of us Americans wear more shoes in a year than the individual citizen of any other country."
A third of all leather on Earth came out of American tanneries, and a huge fraction of those tanneries ran on bark peeled off American trees by American farmers.
What killed this economy is a small slice of chemistry that Veitch's own Bureau helped accelerate. Chrome tanning β patented by Augustus Schultz in 1884 and refined into a one-bath process by the 1890s β replaced months of vegetable tanning with hours of chromium-salt soaking. Synthetic tannins ("syntans") followed; the 1950 CIA report from Poland's tanneries describes the same global pivot:
"Experiments in shortening tanning processes are being conducted in a number of Polish tanneries⦠Successful experiments have also been made in the use of new synthetic tannins."
By the time Veitch was on the radio, the bark trade was already collapsing. The chestnut blight (1904 onward) wiped out one of the two great bark trees. Hemlocks were being clear-cut faster than they could regrow, often with the stripped trunks left rotting in the woods because only the bark had value. Within a generation, a cord of tan bark went from a reliable farm check to a curiosity.
The modern echo is everywhere in your closet. If you own boots labeled "veg tan" β Red Wing, Whites, the artisanal Horween stuff that costs $400 β you are paying a premium for a method that was once so ordinary the USDA mentioned its inputs in the same breath as a cattle hide. Vegetable tanning hasn't returned because it's better; it's returned because it's rare.
Forgotten Patent
2026-06-29
In 1928, Bell Telephone Laboratories hired a 23-year-old physicist named Karl Guthe Jansky with a mundane assignment: figure out what was hissing into their new transatlantic shortwave radiophone service. Static was ruining calls, and Bell wanted it gone. Jansky built a rotating directional antenna at the Holmdel, New Jersey field station β a 100-foot-long contraption of brass pipes and wooden trusses mounted on Ford Model-T wheels, nicknamed "Jansky's merry-go-round." It tuned to 20.5 MHz and could be aimed at any point on the horizon.
By 1932 he had cataloged three sources of static: nearby thunderstorms, distant thunderstorms, and a faint third hiss he couldn't explain. It rose and fell on a 23-hour-56-minute cycle β exactly one sidereal day, the rotation period of Earth relative to the stars, not the Sun. Whatever was making the noise wasn't on Earth. Jansky pointed his antenna and traced the signal to the constellation Sagittarius, toward the dense star clouds at the center of the Milky Way.
His work was filed as U.S. Patent 1,860,123 β "Directional Antenna" (May 1932, the merry-go-round design) and reported in his landmark paper "Electrical Disturbances Apparently of Extraterrestrial Origin" (Proceedings of the IRE, December 1933). The New York Times ran it on page one. Bell Labs, satisfied they'd identified the noise source as un-fixable cosmic background, reassigned Jansky to other projects. He never worked in astronomy again and died at 44 of a heart condition in 1950.
Why this was 30 years ahead of its time: Astronomers in 1932 saw the universe through one narrow window β visible light. Jansky proved that radio waves carried information from objects that optical telescopes couldn't see at all: ionized gas, magnetic fields, supernova remnants, and, eventually, black holes. He had detected synchrotron emission from Sagittarius A*, the supermassive black hole at our galaxy's center β 42 years before it was identified as such by Bruce Balick and Robert Brown in 1974.
The modern lineage is direct:
Could it be built better now? The merry-go-round had a sensitivity of roughly 10,000 Jy. A modern phased-array feed on a 100-meter dish reaches microjanskys β a billion times better. But the method Jansky pioneered β rotate, integrate, correlate against sidereal time β is exactly how the SKA (Square Kilometre Array, first light 2027) will hunt for fast radio bursts and pulsars. He didn't just invent radio astronomy. He invented its entire observational grammar.
Daily GitHub Zero Stars
2026-06-29
Language: Kotlin
This is one of those wonderfully focused little tools that solves a single, real-world annoyance β and solves it well. WebViewDev is a minimalist Android app written in Kotlin whose sole purpose is to load a web-based game (or any web app) from your local development machine into a native Android WebView, simply by prompting you for your dev machine's IP address.
If you've ever tried to debug a mobile web game during development, you know the pain: you're constantly deploying builds to a staging server, fiddling with port forwarding, or wrestling with Android Studio's emulator networking just to see how your code behaves on a real device. This repo sidesteps all that with a tiny app that you install once and then point at whatever local server you're running.
What makes it interesting:
logcat and chrome://inspect against it, which is huge for tracking down touch events, performance issues, and platform quirks.Who would benefit? Web game developers targeting mobile, anyone building Phaser/Three.js/PixiJS experiences, hybrid app developers prototyping with Cordova/Capacitor alternatives, and frontend engineers who just want to see how their site behaves inside a real Android WebView without shipping anything. It's also a clean reference for Android beginners curious about how WebView integration works in modern Kotlin.
The kind of repo that probably took an afternoon to build but saves its author hours every week β and could do the same for you.
Daily Hardware Architecture
2026-06-29
Every other basic arithmetic op on a modern CPU is fast. Add: 1 cycle. Multiply: 3β5 cycles, fully pipelined. Division? 10 to 95 cycles, and usually not pipelined at all. One in-flight divide blocks the next one.
The reason is algorithmic. Addition has a known fast structure (carry-lookahead). Multiplication parallelizes beautifully via a Wallace tree of partial-product reducers β wide hardware, shallow depth. Division has no equivalent. The classic algorithms β restoring, non-restoring, and SRT (Sweeney-Robertson-Tocher) β are fundamentally iterative: each digit of the quotient depends on the remainder produced by the previous digit. You can't compute bit 5 of the quotient until you know bits 6 and 7.
Modern CPUs use radix-16 or radix-256 SRT dividers that resolve multiple quotient bits per cycle, but you still iterate. A 64-bit integer divide on Intel Golden Cove takes 12β18 cycles latency, throughput one every 6β10 cycles. Double-precision FP divide: 13β14 cycles, throughput one per 5. Compare to FP multiply: 4 cycles latency, one per cycle throughput.
Concrete example. A loop computing histogram[x % 1024] in a hot path. The modulo compiles to an idiv β ~25 cycles each iteration, blocking subsequent divides. Change to histogram[x & 1023] (since 1024 is a power of two) and the operation becomes a single-cycle AND. Easy 20Γ speedup on that operation.
Compilers know this. When the divisor is a compile-time constant, GCC and Clang emit magic-number multiplication: x / 7 becomes a 64-bit multiply by 0x2492492492492493 followed by a shift. Two pipelined ops instead of one serial divide. But if the divisor is a runtime variable, you eat the full cost.
1.0/d once, multiply by it inside the loop. Loses ~1 ULP of accuracy; gains 5β10Γ.libdivide precompute the magic number at runtime β worth it after ~5 divides by the same value.The divider is also typically shared across the integer and FP pipelines (or across SMT siblings), so one thread issuing back-to-back divides can starve the other.
Hacker News Deep Cuts
2026-06-29
Link: https://alexwlchan.net/2026/bin-calendar/
HN Discussion: 1 points, 0 comments
Alex Chan writes consistently excellent posts about small, hand-crafted software solutions to everyday problems, and this one is a delightful exemplar: turning the council's bin collection schedule into a personalised calendar feed. It's the kind of project that sounds trivial until you actually try to do it β and then you discover a tangle of fortnightly cycles, bank holiday shifts, and inconsistent municipal data formats.
What makes this worth reading isn't the bin calendar itself. It's the genre: the small, personal, domain-specific tool. A technical audience often gets pulled toward scalable platforms and reusable abstractions, but there's a quiet craft in writing software that serves exactly one household, one street, one weirdly-specific need. These projects tend to teach surprisingly broad lessons:
Alex's blog has a long history of this style β small, well-documented projects with clear code samples and honest discussion of what didn't work. Past entries have covered things like building a personal photo archive, parsing iTunes libraries, and various Python tooling explorations. The writing tends to be unhurried and pedagogical without being preachy.
For technical readers, the value is twofold. First, it's a concrete walkthrough of integrating a real-world data source into a personal workflow β likely involving scraping, parsing, generating a valid ICS file, and serving it somewhere a calendar app can subscribe to. Second, it's a reminder that the most satisfying programming projects are often the ones with an audience of one. Not every script needs to become a SaaS.
The post probably also touches on the fragility of the approach: what happens when the council redesigns their site, or shifts the schedule for Christmas week? These are the kinds of considerations that scale up to much larger systems integration work.
HN Jobs Teardown
2026-06-29
Source: HN Who is Hiring
Posted by: salt-licker
Of the ten postings in this thread, Genesis Therapeutics (ID: 22666537) is the most strategically revealing because of what it doesn't ask for. A drug discovery company is openly recruiting engineers with "no biology or chemistry experience required." That single line is the entire thesis of the company encoded in a job ad.
The posting describes "novel neural networks to predict molecular properties." In 2020, that almost certainly means graph neural networks (GNNs) β molecules are graphs, and message-passing architectures were the hot research frontier for cheminformatics. Expect a Python/PyTorch shop with heavy GPU infrastructure, RDKit for molecule manipulation, and likely some interaction with wet-lab data pipelines. The interesting choice is what they're not doing: they're not buying QSAR software or licensing SchrΓΆdinger's stack. They're betting the entire R&D engine on deep learning replacing decades-old physics-based simulations.
The team description β "graduates from Stanford, UC Berkeley, MIT. Previously worked at Facebook..." β is classic early-stage pedigree signaling. They're recruiting on prestige because they don't yet have shipping product or clinical milestones to point to. "Small team of excellent software engineers" + "South San Francisco" (biotech corridor) + "flexible WFH" tells you: Series A or early B, probably ~15-30 people, building the platform before the pipeline.
Green: Honest about being a learning environment ("we all learn from each other"). Specific about the problem domain. Doesn't pretend to be a tech company that happens to do biology β owns the hybrid identity.
Yellow: No salary band, no equity range, no team size disclosed. The Stanford/MIT/FAANG name-dropping is a tell that pedigree filtering matters here, which can compress diversity of thought in a field that already suffers from groupthink. Also: onsite-required in SSF is a hard constraint right as the world is rethinking remote work.
Daily Low-Level Programming
2026-06-29
RCU readers don't take locks β they just dereference pointers. So when a writer swaps a pointer and wants to free the old object, how does the kernel know every reader that might have grabbed the old pointer has finished with it? The answer is the grace period detector, and its core trick is one of the most elegant hacks in the kernel.
The fundamental observation: RCU readers are forbidden from blocking. An RCU read-side critical section is bounded by rcu_read_lock() and rcu_read_unlock(), which in the classic kernel implementation are literally preempt_disable() and preempt_enable() β zero instructions on a non-preemptible kernel. This means: if a CPU has performed a context switch, it cannot be inside an RCU read-side critical section that started before that switch.
The algorithm: To declare a grace period complete, the kernel waits until every CPU has passed through a quiescent state β a context switch, a trip to idle, or a return to user mode. Once each CPU has been observed in one of these states at least once after the grace period began, every pre-existing reader is guaranteed to have finished. The old memory can be freed.
Concrete example: Writer updates a network routing table at T=0 and calls call_rcu(old_entry, kfree). The grace period detector records: "we need all 16 CPUs to quiesce after T=0." CPU 3 is running a long syscall β the detector waits. At T=12ms, CPU 3 returns to userspace (quiescent state). All 16 CPUs have now quiesced. The callback fires at T=12ms and frees the old routing entry. No reader can possibly still hold a pointer to it.
Implementation detail: The detector uses a hierarchical tree of rcu_node structures to avoid cache-line contention. On a 128-core box, leaf nodes group 16 CPUs each; only when all 16 in a group have quiesced does that leaf update its parent. Without the tree, every CPU would slam the same atomic counter on every context switch.
Rule of thumb: A grace period typically takes 10β100 ms on a busy server β bounded below by the scheduler tick. This is why call_rcu() is asynchronous and why memory reclamation in RCU-heavy workloads can lag noticeably. If you ever see rcu_sched detected stalls in dmesg, it means some CPU went 21+ seconds without quiescing β usually a stuck kernel thread or a runaway interrupt handler.
Synchronous variant: synchronize_rcu() blocks the caller until a full grace period elapses. Never call it from an atomic context, and never from a path that holds a lock readers might wait on β instant deadlock.
RFC Deep Dive
2026-06-29
By 1984, the Internet had a problem nobody had planned for: subnets. RFC 950 was carving Class A/B/C networks into smaller pieces with subnet masks, but the broadcasting model from RFC 919 assumed a flat network. If a host wants to shout "is anyone there?", what address does it use? And what should routers do with it? RFC 922, written by Jon Postel in October 1984, is the four-page document that answers those questions β and accidentally sets up some of the most consequential security incidents of the 1990s.
Postel distinguishes three kinds of broadcast:
255.255.255.255, an all-ones destination. It MUST NOT be forwarded by routers. It reaches only the local physical network. This is why DHCP clients (who don't yet have an IP) can still find a server: the discover packet goes to 255.255.255.255 and only the local link sees it.192.0.2.255 for a /24). A router treats this like a regular unicast until it reaches the destination network, then flood-delivers it.The clever design choice here is that broadcasts traverse the routed Internet as unicasts. A host in Berkeley could send one packet to 10.255.255.255 and every host on MIT's network 10 would receive it. In 1984 that felt elegant β a single packet, fan-out at the edge. It also meant Postel had to settle a religious war: should "all hosts" be encoded as all ones or all zeros? Both conventions existed in deployed code (BSD 4.2 used all-zeros). RFC 922 standardizes on all-ones and politely deprecates all-zeros, while acknowledging that fixing every host would take years.
And then the 1990s happened. In 1997, somebody noticed that directed broadcasts plus ICMP equals a force multiplier. Send one spoofed ICMP echo to x.y.z.255, the destination network turns it into hundreds of echo replies, all aimed at your victim. The Smurf attack was, in essence, RFC 922 working exactly as designed β just used by someone with bad intentions. The fix came in RFC 2644 (2000), which flipped the default: routers SHOULD NOT forward directed broadcasts. Cisco IOS made no ip directed-broadcast the default in 12.0. A core piece of Postel's elegant 1984 design was quietly amputated, and almost nobody noticed because almost nobody had been using directed broadcasts on purpose.
What survives from RFC 922 today is the part that's invisible until it isn't:
255.255.255.255 is still how DHCP, BOOTP, and some discovery protocols bootstrap.ifconfig, every routing stack, and every subnet calculator.tcpdump never sees a stranger's DHCP discover.It's also a reminder of how protocol design ages. Postel optimized for fan-out efficiency in a small, trusting network. Twenty years later we discovered that the same property is a denial-of-service weapon, and the right answer was to disable it. IPv6 took the lesson to heart β it has no broadcast at all, only multicast, where the sender must use an explicit group address and receivers opt in.
Stack Overflow Unanswered
2026-06-29
The asker is building a value-conversion class on an nRF9151 (Cortex-M33, 32-bit) under Zephyr. They wrap a lambda in std::function. When the lambda captures a double, the closure data is silently lost β the function object appears to "discard" the capture rather than throwing or producing a compile error.
The diagnosis is on the right track: std::function implementations have a fixed-size Small Buffer Optimization (SBO) region embedded in the object so that small callables avoid a heap allocation. The SBO storage has a declared alignment. On a 32-bit ARM target, libstdc++/libc++ typically aligns the SBO to alignof(void*) = 4 bytes. A lambda capturing a double needs 8-byte alignment. When the closure's required alignment exceeds the SBO's alignment, the implementation falls back to heap allocation β but on a freestanding/embedded toolchain with no operator new, or with exceptions disabled, that fallback can silently misbehave.
Why it's interesting:
double to be 8-byte aligned even on a 32-bit core, so this isn't a bug β it's the platform meeting STL implementation choices.operator new returning nullptr, combined with exceptions disabled (typical in Zephyr builds), gives undefined behavior that looks like "the lambda forgot its captures."Direction toward a solution:
-fno-exceptions visibility into __throw_bad_function_call and inspect std::__function::_Function_handler in your libstdc++. If the closure goes to the heap, ensure operator new is actually wired up in Zephyr (CONFIG_CPLUSPLUS + CONFIG_GLIBCXX_LIBCPP, plus a working allocator).float if precision allows. The nRF9151 has no double-precision FPU anyway β every double op is softfloat.std::function entirely. On embedded, prefer etl::delegate, tl::function_ref, or a hand-rolled type-erased callable with a statically-sized aligned buffer you control (alignas(8) std::byte storage[N]).Gotchas: Don't trust that "small lambda" means "fits in SBO" β alignment, not just size, can push you to heap. And in Zephyr, the C++ runtime is often only partially initialized, so heap-allocating function objects can fail at link or load time without a clear error.
Daily Software Engineering
2026-06-29
A deadlock isn't a bug in your locking code β it's an emergent property of multiple transactions acquiring locks in different orders. Transaction A holds lock on row 1 and wants row 2. Transaction B holds lock on row 2 and wants row 1. Both wait forever. Your timeouts will eventually fire, but by then you've burned connection pool slots and angered users.
The wait-for graph. Every lock manager that detects deadlocks builds the same data structure: a directed graph where nodes are transactions and edges point from "waiter" to "holder." If T1 waits for a lock held by T2, draw an edge T1 β T2. A cycle in this graph means a deadlock. Detection is just cycle detection β DFS with a visited set, O(V+E).
Detection vs. prevention. Two camps:
deadlock_timeout (default 1 second). MySQL InnoDB does it on every lock wait.Real-world example. A payments service processes transfers: debit account A, credit account B. Two concurrent transfers β one from AliceβBob, one from BobβAlice β will deadlock half the time if you lock rows in the order they appear in the request. Fix: always lock accounts in ascending account-ID order, regardless of debit/credit direction. The cycle becomes impossible because every transaction walks the same path.
Victim selection matters. When the detector finds a cycle, it picks one transaction to abort. Naive choice: youngest transaction (least work lost). Better: the one holding the fewest locks (least disruption when rolled back). PostgreSQL aborts the transaction that completes the cycle β whichever one's lock request triggered the check.
Rule of thumb. If you're seeing >1 deadlock per 1,000 transactions, it's not bad luck β it's an access-order problem. Profile which two locks are involved (PostgreSQL logs both transactions and their queries), then enforce ordering at the application layer. If deadlocks are rare (<1 per 100K), retry with backoff and move on.
The trap: distributed deadlocks across services. No single lock manager sees the whole graph. You need either timeouts (cheap, lossy) or a global coordinator (expensive, complex). Most teams pick timeouts and pretend the rare lost transaction was a network blip.
Tool Nobody Knows
2026-06-29
You write a struct in C, the compiler dutifully pads it out, and you have no idea your hot data structure just grew from 24 bytes to 40 because you put a char next to a long. pahole β short for "poke-a-hole" β ships in the dwarves package (Arnaldo Carvalho de Melo, perf maintainer). Point it at any binary compiled with -g and it prints every struct layout, the exact offset of every field, the size of every hole, and where you cross a cacheline boundary.
Compile something with debug info and ask:
$ cc -g -c thing.c -o thing.o
$ pahole -C my_packet thing.o
struct my_packet {
char flag; /* 0 1 */
/* XXX 3 bytes hole, try to pack */
int seq; /* 4 4 */
char type; /* 8 1 */
/* XXX 7 bytes hole, try to pack */
long payload; /* 16 8 */
/* size: 24, cachelines: 1, members: 4 */
/* sum members: 14, holes: 2, sum holes: 10 */
/* last cacheline: 24 bytes */
};
Ten wasted bytes out of 24 β that's 42% air. pahole will also reorganize for you:
$ pahole --reorganize -C my_packet thing.o
struct my_packet {
long payload; /* 0 8 */
int seq; /* 8 4 */
char flag; /* 12 1 */
char type; /* 13 1 */
/* size: 16, cachelines: 1, members: 4 */
};
/* saved 8 bytes! */
For a struct allocated a million times, that's 8 MB of RAM and L1 pressure gone, for free.
Where the mainstream alternative fails: you can stare at a sizeof() all day and not know why it's 40 instead of 32. gdb ptype /o shows offsets but not holes, doesn't suggest a packing, and won't scan every struct in an object file. __builtin_offsetof() at runtime means recompiling and printing. pahole works on already-shipped binaries β including ones you didn't build.
Real tricks worth knowing:
pahole --packable /usr/lib/debug/.../libfoo.so.debug lists every type that can be tightened, sorted by bytes saved.pahole --cacheline_size=64 --show_only_data_members thing.o | grep -B1 'cachelines: [2-9]' β anything hot that spans two lines is a perf bug waiting to happen.pahole -C task_struct /sys/kernel/btf/vmlinux dumps the live struct layout with no debuginfo download. Indispensable when writing BPF programs that need exact offsets.codiff -s old.o new.o (ships in the same package) tells you which structs grew, which functions changed signature, and by how many bytes. Great for catching ABI drift in a CI job.pfunct -P thing.o β better than nm because you get arguments and return types from DWARF.pahole --suggest_ptr_layout proposes pointer-first ordering for 32/64-bit portable code.If you write performance-sensitive C, kernel modules, BPF, or wire protocols, pahole turns invisible padding into an editable text file. The Linux kernel uses it in tree to keep task_struct from blowing up; you can use it to keep your hot path inside one cacheline.
sizeof() tells you the bill; pahole tells you exactly which padding bytes are on it and how to delete them.
What If Engineering
2026-06-29
Aluminum oxynitride β ALON, marketed as "transparent aluminum" β is a real, manufactured ceramic. The U.S. military uses it as bulletproof window armor: a 1.6-inch ALON pane stops a .50 BMG round that punches straight through 3.7 inches of laminated glass. So what happens if we stop using it for gun ports and start using it as the entire structural envelope of a 500-meter tower?
The material, by the numbers:
3.69 g/cmΒ³ (concrete: 2.4; steel: 7.85)~2,900 MPa (concrete: ~30 MPa)~700 MPa (structural steel yield: ~345 MPa)334 GPa (steel: 200)~2.4 MPaΒ·m^Β½ (steel: 50+)That last number is the catch. ALON is roughly 100Γ stronger than concrete in compression and stiffer than steel β but its fracture toughness is twenty times worse than mild steel. It's a glass-grade ceramic. Tap it with a hammer in the wrong place and a crack will sprint across it at ~6 km/s.
Sizing the columns. Take a Burj-class tower at ~500,000 tonnes. The base must carry ~5 Γ 10βΉ N. With concrete at 30 MPa working stress (and a safety factor of 4), you need ~670 mΒ² of column cross-section β which is why the Burj's basement looks like a forest of fat pillars. With ALON at a comparable safety factor on its 2,900 MPa compressive strength, you need just ~7 mΒ². The entire vertical load of a megatall could pass through four columns the diameter of a dinner table.
The building would be visually almost gone. Light transmission through 2-inch ALON exceeds 80% across the visible band. Stack thirty floors of it and you're still looking at a luminous crystal lattice, not a wall.
Why we shouldn't. Three problems, in increasing severity:
1. Brittleness under dynamic load. Wind gusts, seismic acceleration, and bird strikes all dump energy into a structure as transient stress. Steel absorbs this by yielding plastically. ALON cannot yield β it fractures. A 1% overstress event that would leave a steel beam slightly bent leaves an ALON beam in pieces. You'd have to over-design by perhaps 10Γ and pre-stress every member in compression, since ALON's tensile strength is half its compressive.
2. Thermal shock. Coefficient of thermal expansion is ~5.8 Γ 10β»βΆ/K. A 40 Β°C swing across a 100-meter column gives 23 mm of differential length change. Constrained, that's a stress of ~78 MPa β survivable, but a fire on one face creates gradients that will spall the column like dropped Pyrex.
3. Cost. ALON sells for roughly $10β15 per square inch at 2 inches thick β about $300,000 per cubic meter. The Burj Khalifa contains 330,000 mΒ³ of concrete at roughly $150/mΒ³ (~$50M). Substituting ALON volume-for-volume: ~$100 billion, or about 1.5Γ the GDP of Luxembourg, for the structural material alone. Manufacturing is the bottleneck: ALON is hot isostatically pressed in vacuum furnaces, and the world's total annual output is measured in tonnes, not kilotonnes.
Scale the production fifty-thousand-fold, solve the brittleness with a glass-laminate sandwich (two ALON skins around a ductile interlayer, like architectural laminated glass on steroids), and you get a building that weighs the same as a steel tower but disappears into the sky.
Wikipedia Rabbit Hole
2026-06-29
Wikipedia: Read the full article
Deep inside the Kamioka mine in Japan β the same mountain that houses the Nobel Prize-winning Super-Kamiokande neutrino detector β there sits a much smaller, stranger machine called CLIO: the Cryogenic Laser Interferometer Observatory. It's not trying to detect gravitational waves itself. It exists to solve a problem that almost killed gravitational wave astronomy before it started: the mirrors are too warm.
You might know about LIGO, the American detector that finally caught Einstein's gravitational waves in 2015 by measuring two 4-kilometer laser arms with such precision it could detect a length change one ten-thousandth the width of a proton. To do that, LIGO suspends 40-kilogram fused silica mirrors and bounces lasers between them. But mirrors at room temperature have a problem nobody can wish away: their atoms jitter. This thermal noise β the molecular vibration of the mirror substrate and its reflective coatings β produces a faint hiss that sets a hard floor on how quiet a detector can be.
Cool the mirrors, and the jitter dies down. Easy in principle. In practice: you're trying to cool a precision-suspended optical element to around 20 Kelvin (β253Β°C) without introducing the vibration of cryocoolers, without warping the suspension, and without letting residual gas freeze onto the mirror surface and ruin its reflectivity. This is what CLIO was built to figure out.
The choices CLIO made are wonderfully strange:
CLIO worked. It demonstrated that a cryogenic interferometer could actually reach its design sensitivity, which directly enabled its much larger successor, KAGRA β a 3-kilometer underground cryogenic detector in the same mine that joined the LIGO-Virgo collaboration in 2020. Every cooled mirror in KAGRA traces its lineage back to CLIO's tiny 100-meter arms.
Here's the part that bends the brain: the next generation of detectors β the proposed Einstein Telescope in Europe and Cosmic Explorer in the US β both plan to use cryogenic mirrors. The technique that started in a small Japanese prototype is becoming the default approach for hearing black hole collisions from the edge of the observable universe.
Daily YT Documentary
2026-06-29
Channel: The Evidence Room (4 subscribers)
Caveat up front: the candidate pool today is rough. Nine of the ten videos are from a single zero-subscriber channel pushing an "audio documentary" series called Stoolism Vol. II β formulaic titles, vague descriptions full of "every pattern leaves a trace" filler, and no indication of real reporting or research. They read as AI-generated content farm output, not investigative work.
That leaves The Evidence Room's Philadelphia true crime compilation as the only candidate with a plausible documentary premise. The channel (a modest 4 subscribers) frames the piece as an examination of ten widely reported Pennsylvania cases under the "Cold Case Hour" banner. Full-length true crime documentaries from small channels can be genuinely worthwhile when the creator takes the time to walk through case timelines, investigative dead-ends, and forensic breakthroughs β and Philadelphia has a deep, documented history of notable cases (the MOVE bombing, the Boy in the Box, the Kensington corridor cases) that reward careful retelling.
The risk is that compilation-style true crime can drift into sensationalism or recycled Wikipedia narration. But at feature length, with a stated focus on cases that "shocked the state," there's at least a chance the creator goes deep on investigative procedure, jurisdictional challenges, or the evolution of evidence handling over decades.
It's the only entry today that looks like an actual documentary made by a person.
Daily YT Electronics
2026-06-29
Channel: Qube 3D (14 subscribers)
Note: this week's batch was thin β most candidates were clickbait, hashtag spam, or unboxings. This Qube 3D project is the least bad pick, and the channel is genuinely tiny (14 subs), which is the spirit of the curation.
This is a homebrew Arduino device that scans the 2.4 GHz ISM band β the same crowded spectrum used by Wi-Fi, Bluetooth, Zigbee, and countless consumer remotes β and renders wireless activity in real time on a small OLED display. The setup is the kind of approachable project that bridges the gap between "blink an LED" and actual RF instrumentation.
What makes it worth a look: 2.4 GHz scanners are usually built around the nRF24L01+ module, which has an undocumented carrier-detect mode that lets you sweep all 126 channels and read RSSI per channel. Pairing that with an OLED gives you a poor-man's spectrum analyzer for under $5 in parts. It's a great way to see your home's RF environment β microwave interference, Wi-Fi channel congestion, Bluetooth beacons β instead of just reading about it.
The video is short and demo-focused rather than a step-by-step build, but it's a useful jumping-off point if you want to replicate the project. Pair it with the nRF24 datasheet and you've got a weekend build.
Daily YT Engineering
2026-06-29
Channel: Pakistan Tech News (1080 subscribers)
Note: today's candidate pool was unusually weak β mostly shorts, training-program ads, and clickbait "why are planes white" videos. This documentary is the least bad option and does at least promise real technical content.
The JF-17 Thunder is one of the more interesting case studies in modern fighter development: a joint Sino-Pakistani program designed to produce a capable multirole aircraft on a tight budget, intended as a replacement for aging Mirage III/V and F-7P fleets. This documentary covers the program's full arc from initial Block 1 induction in 2007 through the Block 3 variant with its AESA radar, helmet-mounted sight, and beyond-visual-range PL-15 integration.
What makes the JF-17 worth understanding technically is how the design team navigated constraints β a single Klimov RD-93 engine, fly-by-wire flight controls retrofitted across blocks, and avionics that evolved substantially between variants. The transition from mechanical to digital cockpit, the airframe refinements between blocks, and the export-oriented design philosophy (it's now flown by several air forces) are all genuine engineering stories.
For viewers interested in how a non-Western fighter program actually iterates over two decades β not just the politics, but the radar, weapons integration, and airframe changes β this should provide a useful overview.
Daily YT Maker
2026-06-29
Channel: Ben VGB (1590 subscribers)
Workshop organization is one of those quietly transformative upgrades β the kind of project that pays dividends every single time you reach for a tool and actually find it where you expect. Ben VGB tackles a full shop overhaul here, building custom tool racks and a pegboard system designed around his specific kit rather than dropping in a generic off-the-shelf panel.
What makes this kind of build worth watching is the decision-making behind it: how you measure and group tools by use frequency, how you lay out hook spacing to avoid the classic pegboard trap of tools that overlap or fall through, and how you mount the whole assembly to a wall so it actually holds weight. A well-executed pegboard is deceptively engineered β anchor placement, French cleat alternatives, and considering depth for things like clamps and squares all matter.
Ben's channel sits at the sweet spot of a real hobbyist sharing an honest workflow β no sponsor reads, no inflated production value, just a maker showing his process. For anyone setting up a garage shop, basement workbench, or even a hobby corner, this is exactly the sort of build to crib ideas from. Expect practical tips on material choice (likely plywood or MDF backing), hook hardware, and layout strategy.
A solid, non-flashy build video β the type of small-channel content that's genuinely more useful than the polished algorithm-bait alternatives.
Daily YT Welding
2026-06-29
Channel: Industrial Tech Master (112 subscribers)
Note: today's batch was unusually thin β nearly every candidate was a Short, a hashtag-spam clip, or a radiator b-roll loop. This is the least-bad pick, but it's still a modest workshop demo rather than a polished tutorial.
Stainless steel is one of the trickier materials a hobbyist welder encounters. It warps easily from heat input, suffers from chromium carbide precipitation (sensitization) in the heat-affected zone if you cook it too long, and shows every flaw because the surface stays shiny. A practical shop walkthrough β even a short one β is more useful than another sparks-flying montage.
This video from Industrial Tech Master demonstrates SS welding using practical workshop techniques rather than a clean studio setup, which tends to expose the real-world compromises: joint prep, electrode choice, travel speed, and managing heat to avoid burn-through or discoloration. For viewers learning to weld stainless on a budget rig, watching someone work through it in a regular industrial environment is genuinely instructive.
At 112 subscribers the channel is squarely in the small-creator bracket worth supporting. Treat it as a starting point β if the technique resonates, follow it up with deeper resources on shielding gas selection and post-weld passivation.
