26 newsletters today.
Abandoned Futures
2026-05-19
In February 1932, on the beach at Weston-super-Mare, England, Dr. John Archibald Purves climbed inside a ten-foot-tall steel ring, sat on a seat suspended at its center, and drove down the sand at 30 mph. The vehicle was called the Dynasphere, and it had exactly one wheel. The passenger sat inside the wheel. Purves had patented it the year before (British Patent 367,481), inspired by a sketch his father had made decades earlier after reading Leonardo da Vinci.
The mechanics were elegant. The outer ring was a lattice of steel held together by spokes, riding on rollers. An electric or petrol motor drove the rollers, which pushed the ring forward like a hamster wheel turned outward. Two versions were built: a 1,000-pound electric model and a heavier petrol version capable of carrying two people. Contemporary newsreels show it climbing modest grades, turning by shifting the rider's weight, and braking without theatrics.
Purves made a startling claim: because a monowheel has only one wheel, it has zero rolling resistance loss to a second axle, no differential, no drivetrain torque split. He calculated the Dynasphere needed roughly one-quarter the horsepower of a conventional car of comparable mass to maintain cruising speed. Modern analysis of single-track rolling vehicles broadly supports this โ the energy advantage is real.
So why did it die? Three reasons, all of them solvable now:
Now look at 2026. Every single failure mode has a commodity solution:
The deeper case for the Dynasphere now: urban last-mile delivery is hunting for a vehicle the Dynasphere already is. It has a tiny footprint (a 10-foot ring rolls in a single lane width), enormous cargo volume relative to mass (the entire interior is usable), and inherent compliance with curbs and potholes because the contact patch is enormous and the suspension is the deformation of the ring itself. A modern composite-ring Dynasphere with hub-mounted lidar would weigh under 600 lbs, carry 400 lbs of cargo, and run for 8 hours on a 5 kWh battery.
Purves filed his patent at the bottom of the Depression. Nobody was buying experimental vehicles. By 1933 he was out of money, and by 1940 the monowheel was a curiosity for newsreels. But the physics never changed โ only the supporting technology caught up.
Daily Automotive Engines
2026-05-19
The top of the piston โ the crown โ isn't just a flat disc. Its shape is one of the most consequential design choices in the engine, dictating compression ratio, flame propagation, and whether your valves and pistons can occupy the same space without meeting catastrophically.
Three basic crown geometries:
Valve reliefs (eyebrows): Those scalloped pockets you see machined into the crown exist because at TDC during valve overlap, the intake and exhaust valves are both open and dangling into the cylinder. On an interference engine with aggressive cams, the piston would smack the valves without the reliefs. Reliefs cost a little compression and create a small shrouded volume, but they're cheap insurance.
Real-world example: The LS3 6.2L uses a flat-top piston with small valve reliefs to achieve 10.7:1 compression with its 68cc heads. Swap to LS3 heads on a smaller-chamber LS1 block (which had dished pistons for 10.25:1), and you'd lose compression โ the bigger chamber volume isn't offset by the flat-top crown. Builders do the opposite trick: keep flat-tops, mill the heads to shrink chambers, gain compression.
Quick calculation โ piston-to-valve clearance check: Lay a strip of soft modeling clay across the valve reliefs, install the head with old gasket, rotate the engine through TDC by hand, then measure the squished clay thickness. Minimum safe clearance is roughly 0.080" on the intake and 0.100" on the exhaust (exhaust runs hotter and stretches more). Less than that, and you fly-cut the pistons deeper or back off cam advance.
The crown also carries the top ring land โ too thin a deck above the top ring and detonation can crack it off, which is why turbo pistons have thicker ring lands and the top ring moved down 0.200" or more from the crown edge.
Daily Debugging Puzzle
BigDecimal(double) Constructor Trap: The Precision Tool That Imports Imprecision2026-05-19
Below is a daily-compound interest routine. The team chose BigDecimal precisely because double arithmetic isn't safe for money. The auditors then reported a $0.83 drift on a single account against their reference spreadsheet. The code compiles, the unit tests on small inputs pass, and the setScale at the end looks responsible. Where is the rot?
import java.math.BigDecimal;
import java.math.RoundingMode;
public class InterestCalculator {
// Apply daily compounding for `days` days at `dailyRate` on `balance`.
public static BigDecimal compound(double balance, double dailyRate, int days) {
BigDecimal b = new BigDecimal(balance);
BigDecimal rate = BigDecimal.ONE.add(new BigDecimal(dailyRate));
for (int i = 0; i < days; i++) {
b = b.multiply(rate);
}
return b.setScale(2, RoundingMode.HALF_UP);
}
public static void main(String[] args) {
// $1,000,000 at 0.0001337 per day for 365 days.
BigDecimal result = compound(1_000_000.00, 0.0001337, 365);
System.out.println("Final balance: $" + result);
// Reference value: $1,051,287.41
// This prints: $1,051,288.24
}
}
The defect is on a single line: new BigDecimal(dailyRate). Developers reach for BigDecimal assuming it preserves the number they wrote. But the BigDecimal(double) constructor takes the exact IEEE-754 representation of the double and converts that, not the decimal literal the programmer typed.
The literal 0.0001337 cannot be represented exactly in binary floating point. The nearest double is approximately:
0.00013370000000000000713783100009625104...
So new BigDecimal(0.0001337) produces a 50-digit BigDecimal whose value is that long tail, not 0.0001337. Multiply that by itself 365 times and the tiny excess in the 18th digit compounds into a visible discrepancy in the cents column. The auditors aren't wrong; the code is.
What makes this trap particularly nasty:
double argument, even though there is no safe lossless conversion..setScale(2, HALF_UP) at the end looks like it sanitizes the result, but rounding the final answer doesn't undo 365 multiplications that each carried bogus low-order digits.Two correct approaches:
double hold a money value in the first place. Take a String at the boundary and feed it to new BigDecimal(String), which parses the decimal literally.double from a legacy API, use BigDecimal.valueOf(double). It routes through Double.toString(), which produces the shortest decimal that round-trips to the same double โ i.e., the number the programmer most likely intended.public static BigDecimal compound(String balance, String dailyRate, int days) {
BigDecimal b = new BigDecimal(balance);
BigDecimal rate = BigDecimal.ONE.add(new BigDecimal(dailyRate));
// Carry enough precision through the loop; only round at the end.
java.math.MathContext mc = new java.math.MathContext(20);
for (int i = 0; i < days; i++) {
b = b.multiply(rate, mc);
}
return b.setScale(2, RoundingMode.HALF_UP);
}
// Caller:
compound("1000000.00", "0.0001337", 365); // -> 1051287.41
Equivalent rescue when only a double is available:
BigDecimal rate = BigDecimal.ONE.add(BigDecimal.valueOf(dailyRate));
Effective Java item 60 says it directly: "Avoid float and double if exact answers are required." The moment money touches a double, the precision is already gone โ wrapping it in BigDecimal afterward just encodes the error with more digits.
new BigDecimal(double) preserves the binary float's exact value, not the decimal you wrote โ use BigDecimal.valueOf(d) or, better, pass a String so the imprecise double never enters the pipeline.
Daily Digital Circuits
2026-05-19
At nanometer geometries, the wire between two gates often delays your signal more than the gates themselves. Every metal trace on a chip has resistance (because copper isn't a perfect conductor) and capacitance (because it sits next to other wires and the substrate). Together they form a distributed RC network that low-pass filters your edge.
The classic model is the Elmore delay: for a wire of length L with per-unit resistance r and per-unit capacitance c, the delay to the far end is approximately 0.5 ยท r ยท c ยท Lยฒ. The Lยฒ is what kills you โ doubling wire length quadruples delay. This is why long global signals (clocks, resets, bus enables) get buffered every few millimeters instead of being run as one long trace.
A concrete number: In a 7nm process, a typical M3 metal wire has r โ 200 ฮฉ/mm and c โ 200 fF/mm. A 1mm unbuffered wire then has Elmore delay โ 0.5 ร 200 ร 200ร10โปยนโต ร 1ยฒ = 20 ps. That sounds tiny โ until you realize a gate in the same process switches in 5 ps. The wire is 4ร slower than the logic it's connecting.
The rule of thumb: Insert a buffer when wire delay exceeds the delay of two inverters. Optimal buffer insertion spaces repeaters so that segment delay equals buffer delay โ this converts the Lยฒ curve into a linear delay-vs-length line. Modern place-and-route tools do this automatically during a step called buffer insertion or repeater planning.
Wire load models matter even before layout exists. During synthesis, the tool has no idea how long wires will be, so it uses a statistical wire load model โ a lookup table that estimates capacitance based on fanout and block size. These are notoriously optimistic for large blocks, which is why pre-layout timing reports often look great and post-layout reports look terrible. The fix in modern flows is physical synthesis: the synthesizer does a rough placement so it can estimate real wire lengths.
Wire capacitance also creates coupling between adjacent traces. A switching aggressor can inject noise onto a quiet victim wire โ up to 30% of VDD in dense routing. Tools mitigate this by spacing critical nets, shielding with grounded wires, or routing them on different layers.
The takeaway for designers: at advanced nodes, RTL changes that "shouldn't matter" โ moving a register across a block boundary, increasing fanout from 4 to 16 โ can blow your timing not because of added logic, but because of added wire.
Daily Electrical Circuits
2026-05-19
A Voltage-Controlled Amplifier takes two inputs โ a signal and a control voltage โ and outputs the signal scaled by a gain that the control voltage determines. VCAs are the heart of audio compressors, automatic gain control (AGC) loops, synthesizer envelopes, and lock-in amplifiers. Unlike a PGA (which steps gain digitally), a VCA varies gain continuously and smoothly, which matters when you need to modulate amplitude without zipper noise.
The core trick: a current-controlled element. Most VCAs exploit the exponential I-V relationship of a BJT base-emitter junction, or a translinear multiplier cell. The classic Gilbert cell uses two cross-coupled differential pairs sharing a tail current. When the tail current changes, the transconductance (gm) of the pairs scales linearly with it โ and since gm sets the gain, you've built a multiplier. The output voltage equals (signal ร control current) / reference current.
OTA-based VCAs are simpler for hobbyist builds. An Operational Transconductance Amplifier like the LM13700 or CA3080 outputs a current proportional to input voltage times the bias current Iabc. Gain is set by:
Practical example โ audio compressor sidechain: You want to reduce gain by 6 dB when input exceeds -10 dBu. Feed your audio through an LM13700 OTA. A precision rectifier detects peak level; an op-amp integrator with a 10 ms attack / 100 ms release time constant produces a control voltage. That control voltage drives a current mirror that sets Iabc. At nominal level, Iabc = 500 ยตA gives unity gain through a 10 kฮฉ load. To drop 6 dB, halve Iabc to 250 ยตA.
Watch out for these gotchas:
Rule of thumb: For audio-grade VCAs, budget at least 80 dB of control range and keep signal levels at ~10 mV peak at the OTA input. If you need better than 0.1% THD, skip discrete OTAs and use a dedicated chip like the THAT2180 โ it's worth the $5.
Daily Engineering Lesson
2026-05-19
Pressurized pipe flow uses Darcy-Weisbach or Hazen-Williams, but the moment water has a free surface โ a storm sewer flowing half full, a drainage swale, a concrete-lined channel, a culvert โ gravity drives the flow and roughness fights it. Manning's equation is the workhorse civil engineers reach for in this regime, and it's been the standard since 1889 because it's empirical, simple, and accurate enough.
The equation (SI units):
V = (1/n) ยท R2/3 ยท S1/2
Where V is mean velocity (m/s), n is Manning's roughness coefficient (dimensionless), R is the hydraulic radius (flow area รท wetted perimeter, in meters), and S is the slope of the energy grade line (m/m, often approximated as channel slope). Flow rate Q = V ยท A.
The key insight: velocity depends on the shape of the wetted cross-section, not just its area. Hydraulic radius R rewards "deep and narrow" over "wide and shallow" because less perimeter means less friction per unit of flow area. A 1 m ร 1 m square channel running full has R = 1/4 = 0.25 m. The same area as a 2 m ร 0.5 m channel has R = 1/6 โ 0.17 m โ 30% lower, so it carries roughly 22% less flow at the same slope.
Typical Manning's n values worth memorizing:
Worked example: A 600 mm concrete storm pipe (n = 0.012) at 1% slope, flowing full. R for a full circular pipe = D/4 = 0.15 m. V = (1/0.012) ยท (0.15)2/3 ยท (0.01)1/2 = 83.3 ยท 0.282 ยท 0.1 = 2.35 m/s. Area = ฯ(0.3)2 = 0.283 mยฒ. Q = 0.67 mยณ/s, or about 600 L/s.
Two practical gotchas:
Engineers don't usually solve Manning's by hand for non-circular partial flow โ it's an iterative trig problem. Spreadsheets, nomographs, or tools like HydroCAD and StormCAD do the lookup. But understanding what drives the answer (R and n, both raised to fractional powers) tells you immediately why lining a ditch with concrete can shrink it by half.
Forgotten Books
2026-05-19
Book: Woman's Institute Library of Cookery (Volume 5) by Woman's Institute of Domestic Arts and Sciences (1923)
Read it: Internet Archive
Buried in the preface of a 1921 cookbook for housewives is an offhand observation that, in hindsight, marks one of the great quiet revolutions of the 20th century. The Woman's Institute of Domestic Arts and Sciences โ a correspondence school based in Scranton, Pennsylvania, that mailed cookery instruction to women across America โ wrote this in the preface to its fifth volume:
With fruits becoming less seasonal and more a daily food, an understanding of them is of great value to the housewife.
Read that again. In 1921, a domestic-arts textbook felt compelled to explain fruit to its readers, because fruit had just stopped being a seasonal luxury and become something you could expect on the table every day. The book's table of contents reflects the transition: it pairs Fruit and Fruit Desserts with Canning and Drying and Jelly Making, Preserving, and Pickling โ preservation knowledge a homemaker still needed, alongside guidance for a new world where you didn't always have to preserve at all.
What the Woman's Institute was witnessing in real time was the birth of the modern produce aisle. The 1910s and 1920s were when refrigerated rail cars, mechanical icing stations, and the United Fruit Company's banana fleet finally fused into a continental cold chain. California oranges, Florida grapefruit, and Central American bananas began arriving in northern cities year-round. The U.S. banana โ virtually unknown to most Americans in 1880 โ was, by the time this book was printed, the country's most-consumed fresh fruit.
For housewives raised on the rhythm of seasons โ strawberries in June, apples in October, citrus as a Christmas treat โ this was disorienting. The cookbook's authors are essentially saying: you used to know what to do with fruit because you only saw it for two weeks a year. Now it's always here. We have to teach you again.
It's worth noting what got lost in this transition. The same volume devotes serious space to Canning and Drying and Jelly Making, Preserving, and Pickling โ skills that had been load-bearing knowledge for centuries. Within two generations, most American households would lose them entirely. The pressure canner, the jelly bag, and the working knowledge of pectin set-points would migrate from "every kitchen" to "specialty hobby."
Modern readers will recognize the pattern. The same thing has now happened to bread (we forgot it within a generation, then rediscovered it during 2020), to fermentation, and arguably to cooking itself. The Woman's Institute was writing at the inflection point โ when industrial logistics first started replacing household skills with convenience. They saw it clearly enough to write a textbook about it. They probably did not see that the textbook itself would, within fifty years, become as obsolete as the seasonal knowledge it was meant to update.
Forgotten Darkroom
2026-05-19
Book: Bibliography of the metals of the platinum group : platinum, palladium, iridium, rhodium, osmium, ruthenium, 1748-1917 by Howe, James Lewis, 1859- author (1919)
Read it: Internet Archive
In 1919, the U.S. Geological Survey published Bulletin 694 โ a quietly astonishing book. It was not a treatise, not a textbook, not a discovery. It was a list. But the list spanned 169 years of human attention to six of the rarest substances on Earth.
James Lewis Howe, professor of chemistry at Washington and Lee University and the leading American authority on platinum-group metals, opened his preface with a modest statement of intent:
"The purpose of this bibliography is to enumerate the articles upon the metals of the platinum group found in scientific literature to the end of the year 1917. It has been my aim to make the record of the chemistry of these metals as complete as possibleโฆ"
The starting year โ 1748 โ is the forgotten knowledge here. That date is not arbitrary. It marks the year the Spanish naval officer Antonio de Ulloa formally published his account of a strange, infusible white metal found in the riverbeds of New Granada (modern Colombia), a metal the local miners called platina, "little silver." The Spanish Crown considered it a nuisance: it was so dense and inert that counterfeiters mixed it into gold coins, and royal decree once ordered tons of it dumped into the Rio Bogotรก and the sea.
Howe's bibliography is therefore a complete map of how humanity went from throwing platinum into rivers to recognizing it as essential โ and he did it just in time. By 1917:
What's been lost is not a recipe or a remedy. It's the habit of compiling exhaustive bibliographies of an entire scientific discipline. Before databases, before DOIs, before Google Scholar, one chemist sat down and physically read or cataloged every article ever published on six elements โ across seven languages and 169 years. The result, Howe wrote, was intended to be "as complete as possible," and the book's 455-page index suggests he came close.
Modern readers will recognize the underlying problem immediately: catalytic converters, fuel cells, cancer drugs (cisplatin), and every hard-drive read head depend on platinum-group metals, and yet we have no comparable single-volume index of their literature today. We have search engines that index everything and remember nothing. Howe's bulletin remembers.
It is also a quiet reminder that the chemistry of these metals โ now worth more per ounce than gold โ was once obscure enough that a single scholar in rural Virginia could plausibly know all of it.
Forgotten Patent
2026-05-19
In 1898, a 29-year-old Danish telephone engineer named Valdemar Poulsen filed Danish Patent 2653 โ followed by US Patent 661,619, granted November 13, 1900 โ for an invention he called the Telegraphone. It was the first machine ever built that could record sound magnetically, play it back, and erase it to record again. Oberlin Smith had described the idea on paper a decade earlier, but Poulsen actually built one that worked.
The mechanism was startlingly simple. A steel piano wire was strung between two pulleys. An electromagnet โ connected to a telephone microphone โ rode along the wire on a tiny carriage, magnetizing the steel in patterns that matched the sound waves hitting the microphone. To play back, you reversed the carriage, and the magnetized wire induced a current in the electromagnet's coil, driving an earpiece. To erase, you ran a steady current through the magnet as the carriage traveled. Record, play, erase, repeat โ every function of a modern tape deck, in 1898.
Poulsen demonstrated it at the 1900 Paris Exposition, where he recorded the voice of Emperor Franz Joseph of Austria โ the oldest surviving magnetic recording in existence, still playable today at the Danish Museum of Science and Technology. The Telegraphone won the Grand Prix.
Poulsen's real ambition wasn't a recording novelty โ it was the answering machine. His US patent explicitly describes attaching the device to a telephone line so that "messages may be received and stored when the called party is absent." That sentence, written in 1900, is voicemail. The American Telegraphone Company sold the devices to businesses through the 1900s and 1910s as office dictation machines, and a few telephone exchanges trialed them as automatic message recorders. The technology was sound; the market wasn't ready. The company collapsed in the 1920s after a fraud scandal.
The deeper consequence was the storage medium itself. Poulsen's steel wire became wire recording, used heavily by the US military in WWII for cockpit voice recorders and field dictation. In 1928, German engineer Fritz Pfleumer patented coating paper (later plastic) with iron oxide powder โ a flexible tape doing exactly what Poulsen's wire did, but easier to splice and store. That became magnetic tape: reel-to-reel, cassette, VHS, the IBM tape libraries that ran every bank and airline through the 1970s, and the streaming-quality reel formats that recorded every record album from the 1950s onward.
The magnetization-on-a-moving-medium concept didn't stop at tape. When IBM built the RAMAC 305 in 1956 โ the first hard disk drive โ they were doing exactly what Poulsen did, but on a spinning platter instead of a moving wire. Modern hard drives still use the same fundamental physics: an electromagnet writes patterns onto a ferromagnetic surface, and an inductive (or magnetoresistive) sensor reads them back. The 18TB drive in a modern data center is Poulsen's telegraphone with 120 years of geometry optimization.
And his original product idea? Voicemail finally arrived in 1979 when Gordon Matthews patented the digital voice message system (US 4,371,752) for VMX Inc. โ solving, with semiconductors, the exact problem Poulsen had solved with steel wire eight decades earlier.
Daily GitHub Zero Stars
2026-05-19
Language: TypeScript
This is a delightfully niche find: an unofficial wiki for Destiny, a private server for the cult-classic MMO Phantasy Star Online Blue Burst. Originally released by Sega in 2000 and brought to PC in 2004, PSO:BB has been kept alive for two decades by dedicated private server communities long after official servers shut down. celestial-fusion appears to be a TypeScript-based companion knowledge base for one of those communities.
What makes this interesting from a developer perspective:
Who might find it useful:
With zero stars and a fresh push, it's clearly in its early days, but the niche it serves is real and the technical approach is sensible.
Daily Hardware Architecture
2026-05-19
You've seen reservation stations and issue queues, but the actual mechanism that turns "waiting" into "ready" is a piece of hardware most people never hear about: the wakeup array. It's a CAM (content-addressable memory) that sits inside the scheduler and answers one question, every cycle, for every parked instruction: did my operand just arrive?
Here's how it works. Each entry in the issue queue stores the physical register tags it's waiting on โ typically two source tags per instruction. When a functional unit finishes (or is about to finish) an operation, it broadcasts the destination tag on a result bus. Every waiting instruction compares that tag against its source tags in parallel. A match flips a "ready" bit. Once both source ready bits are set, the instruction becomes eligible for the select logic, which picks winners for issue this cycle.
The brutal part: wakeup must complete in a single cycle for back-to-back dependent instructions to issue on consecutive cycles. If ADD r3, r1, r2 finishes at cycle N, the dependent SUB r4, r3, r5 needs to be selected at cycle N+1. That means broadcast, compare, ready-bit set, and select all happen in one clock. This is why wakeup is one of the most timing-critical loops in the whole pipeline.
Concrete example โ Intel Sunny Cove: the unified scheduler holds 160 entries, each with two source tag comparators. At 4 GHz, each entry performs ~8 billion tag comparisons per second. With 8 result buses broadcasting per cycle, that's 160 ร 2 ร 8 = 2,560 comparisons per cycle. The CAM area and power for this single structure is comparable to a small L1 cache.
Why scheduler size hits a wall: wakeup delay scales roughly with โN where N is the queue size, because the broadcast wires get longer and the comparator fan-out grows. Rule of thumb: doubling the issue queue roughly increases wakeup delay by 40%. This is why modern CPUs don't just build 1000-entry schedulers โ past ~200 entries, you'd need to pipeline wakeup, which breaks back-to-back issue and tanks performance on dependent chains.
Speculative wakeup: for variable-latency ops (mostly loads), the scheduler wakes dependents assuming an L1 hit. If the load misses, dependents must be replayed โ yanked back from the pipeline and re-issued later. This is why load-use latency dominates pointer-chasing code: every miss triggers a replay cascade through the wakeup array.
Hacker News Deep Cuts
2026-05-19
Link: https://hacktivis.me/articles/no-noscript-element
HN Discussion: 1 points, 0 comments
Every web developer has reached for <noscript> at some point, usually with the best intentions: "show this message to users who have JavaScript disabled." It feels like the obvious accessibility move, the polite fallback. This article argues that the element is actually a trap โ one that does the opposite of what most developers think it does.
The core problem is a category error in how <noscript> is defined. The element doesn't ask "can this user run JavaScript?" It asks "is JavaScript currently enabled in the browser?" Those sound identical but they aren't. Consider the failure modes:
<noscript> fallback never renders. The user sees a broken page with no explanation.<noscript> sits silently in the DOM, suppressed.The piece likely walks through what to do instead. The standard recommendation is progressive enhancement done correctly: render the working HTML first, then let JavaScript enhance it. If your page needs JS to function at all, a <noscript> tag isn't going to save the experience for the small slice of users without it โ and it actively hides failures from the much larger slice whose JS broke for some other reason.
There's also a subtler point worth flagging: <noscript> creates a false sense of robustness. Developers who add it feel they've handled the edge case and stop thinking about graceful degradation. That's worse than having no fallback, because no fallback at least forces honest design choices.
This is the kind of article that takes a piece of HTML folklore everyone has internalized and shows it was wrong the whole time. Short, sharp, and changes how you write markup โ exactly the genre that does well on HN once it gets noticed.
HN Jobs Teardown
2026-05-19
Source: HN Who is Hiring
Posted by: adamilardi
eBay's posting for an Applied Researcher on the NYC recommender systems team is the most revealing in the batch โ it's a snapshot of how a legacy marketplace giant is fighting to stay relevant against Amazon's recommendation engine and Shopify's fragmented commerce model.
The stack tells a story of pragmatic scale:
Spark/YARN โ thousands of nodes, suggesting Hadoop-era infrastructure that's been kept alive rather than ripped out for Kubernetes/Ray. This is "we have petabytes and we're not migrating just for fashion."XGBoost alongside deep learning โ eBay isn't drinking the all-neural-nets Kool-Aid. Gradient boosting still wins on tabular click data, and admitting that publicly is refreshing.Online learning โ the interesting one. This signals real-time model updates, which matters when inventory is auction-driven and item lifetimes are measured in days, not the months Amazon enjoys with catalog SKUs.What the posting reveals about stage and direction: The phrase "reinvent the recommender systems experience" combined with linking to a literal item page (ebay.com/itm/391756623227) is telling. They're not pitching greenfield work โ they're pitching the chance to fix something visible and broken. That's a mature-company tell: the surface area is the product, and they know it's underperforming. The "true grit" and "most challenging codebases" line is HR-speak for "expect legacy Java and undocumented Scala jobs."
Skills/trends highlighted:
Red flags: The "most challenging codebases and the most elegant systems alike" phrasing is a polite warning that you'll spend time in both. The terse posting and direct-email application ([email protected]) suggest a hiring manager bypassing the corporate funnel โ which is great for response time but means onboarding may be lonely.
Green flags: VISA sponsorship, junior-friendly, real production scale, and an honest scope (improve this specific page) rather than vague "transform the business" language.
Daily Low-Level Programming
2026-05-19
When you write to memory, the normal path is: store hits L1, propagates through MESI, eventually drains to DRAM. That's great for data you'll re-read soon. It's terrible when you're streaming โ writing a gigabyte of data once and never touching it again. You pollute the cache, evict useful lines, and waste coherence traffic on data nobody will read.
Intel and AMD CPUs solve this with write-combining (WC) buffers โ a small set of typically 4โ10 line-sized buffers (64 bytes each on x86) that sit between the store buffer and memory. Stores marked as write-combining accumulate in a WC buffer until the buffer is full, then get flushed as a single burst write to DRAM. The cache hierarchy is bypassed entirely.
You access WC behavior two ways:
MOVNTDQ, MOVNTPS, VMOVNTDQ (and the intrinsic _mm_stream_si128). These are write-combining regardless of memory type.Real-world example: memcpy for large buffers. glibc's optimized memcpy switches to non-temporal stores once the destination exceeds roughly the L3 size (often ~8MB threshold). Below that, normal stores win because the data stays cache-resident for the caller. Above it, NT stores win because they skip the read-for-ownership (RFO) โ a normal store first reads the cache line into Modified state, doubling memory bandwidth. NT stores skip the read entirely.
The catch: WC buffers are weakly ordered. A normal store followed by an NT store can become globally visible in the opposite order. You must issue SFENCE before any thread reads the destination, or before signaling completion. Forget the fence and you'll see partially-written buffers that look like memory corruption.
Rule of thumb: if your write working set exceeds half of L3, and you won't read the data within ~100ยตs, non-temporal stores will roughly double your write throughput by eliminating RFO traffic. A 32GB/s DRAM channel that delivers 16GB/s of useful writes under normal stores delivers ~30GB/s under NT stores.
Diagnose it with perf stat -e l2_rqsts.all_rfo. If RFO count equals your store count on a write-only workload, you're missing the NT-store optimization. After conversion, RFO should drop to near zero and offcore_requests.all_data_rd stays flat while uncore_imc_writes climbs.
Reddit Small Subs
2026-05-19
Subreddit: r/AskElectronics
Discussion: View on Reddit (16 points, 18 comments)
This thread is a small gem because it tackles one of the most counterintuitive ideas in electronics: how do you get more voltage out of a circuit than you put in, without violating conservation of energy? The asker compares a boost converter to a capacitor, which is a reasonable first guess but ultimately wrong โ and the comment section walks through why with admirable patience.
The core trick of a boost converter is the inductor, not the capacitor. Here's the intuition the thread builds up:
What's educational here isn't just the mechanism โ it's the conservation-of-energy framing several commenters use. You don't get "free" voltage. Power in (roughly) equals power out, minus losses. If you boost 5 V to 20 V, you're trading current: the input draws about 4ร the current the output delivers. That single insight unlocks why boost converters can't magically run a 100 W device off a coin cell.
The thread also touches on the practical cousins โ buck (step-down), buck-boost, and SEPIC topologies โ and why switching converters dominate modern electronics over linear regulators (efficiency, often 85โ95% versus a linear regulator's wasted heat).
For a beginner, the OP's instinct to reach for the capacitor analogy is telling. Capacitors store energy in an electric field and resist voltage changes; inductors store energy in a magnetic field and resist current changes. Boost converters exploit that current-inertia property in a way capacitors simply can't replicate alone. Understanding this duality is one of the bigger conceptual leaps in learning analog electronics.
RFC Deep Dive
2026-05-19
Before Reddit, before web forums, before mailing lists became the default, there was Usenet โ a globally distributed discussion system that, by the mid-1980s, was creaking under its own weight. RFC 977 defined NNTP, the Network News Transfer Protocol, and quietly became one of the most influential โ and most forgotten โ application protocols of the early internet.
The problem. Usenet originally moved articles between hosts using UUCP (Unix-to-Unix Copy) over dial-up modems. Each site would phone its neighbors, flood-fill new articles, and hang up. This worked fine when there were a few dozen sites exchanging a few hundred messages a day. By 1986, with TCP/IP spreading and traffic exploding, the model was untenable: every site stored every article whether anyone read it or not, and dial-up batch transfers were both slow and expensive.
Kantor and Lapsley's insight was that the new always-on internet allowed a fundamentally different model: instead of pushing the entire news feed to every reader's local machine, let news readers talk directly to news servers over TCP, fetching only what they wanted. The server holds the spool; clients query it.
Key design decisions:
250 OK in a mail log, NNTP will feel instantly familiar.comp.lang.c, rec.arts.sf.written), and articles within a group are numbered sequentially per server. Clients track a high-water mark and ask NEWNEWS or GROUP + NEXT to walk forward.IHAVE command. One protocol replaced two distinct mechanisms.<local@host>), letting servers deduplicate articles arriving from multiple peers โ essential for flood-fill propagation that converges instead of looping.Why it matters today. NNTP is mostly a ghost โ most ISPs dropped their news servers in the 2000s โ but its DNA is everywhere:
yEnc encoding and the later RFC 3977 revision) is still a thriving piracy and archival backbone, with commercial providers offering multi-year retention. NNTP outlived its mainstream purpose by becoming an underground CDN.git exchanges objects, how IPFS resolves content, and how ActivityPub federates posts.gmane.org to browse a mailing list as a newsgroup, you've touched NNTP this decade.The backstory. Lapsley wrote much of the reference implementation as a Berkeley undergraduate; the protocol was prototyped at UCSD and Berkeley in 1985 and standardized the following year. It's a rare case where a graduate-student-and-friends weekend project became the de facto protocol for global discussion for nearly two decades. The 1986 RFC stood essentially unmodified until RFC 3977 finally replaced it in 2006 โ a 20-year run on the original spec.
Stack Overflow Unanswered
2026-05-19
The asker is building a 16-bit real-mode kernel in C using Open Watcom. Local variables work fine โ they can print to VGA memory at 0xB8000 โ but as soon as they promote those variables to file-scope globals, the kernel misbehaves. This is one of the most classic OSdev rites of passage, and the answer almost always lives at the seam between the compiler, the linker script, and the boot loader.
Why it's interesting: a hosted C program gets BSS zeroing and DATA initialization for free from the C runtime startup (crt0). A freestanding kernel has no such luxury. When you transition from locals to globals, you suddenly depend on three invariants that nobody set up for you:
.data section's initialized contents must actually be loaded from disk into RAM at the address the linker assigned..bss section must be zeroed before main runs.DS (and often SS) must point at the segment where those sections live โ otherwise the CPU happily reads/writes garbage at the wrong physical address.Direction toward a solution:
wlink ... option map) and inspect where .data and .bss were placed. Compare those addresses to what your boot loader is actually loading. If the boot loader only reads the .text bytes from disk, globals with initializers will be uninitialized in RAM.DS setup. A common bug: setting CS via a far jump but leaving DS=0, so accesses to a global at linear address 0x10000 get resolved relative to segment 0._bss_start to _bss_end writing zeros.-ms (small), -mc (compact), -ml (large) change how the compiler emits pointer references to globals. A model mismatch between the kernel and its boot stub leads to exactly this "locals work, globals don't" symptom.Gotchas: VGA_MEM 0xB8000000UL in the snippet looks like a far pointer encoding (segment 0xB800, offset 0x0000) โ fine if Watcom's far qualifier is honored, but if a global pointer is dereferenced via the default DS, the whole computation collapses. Also: if the boot loader loads the kernel above the 64 KB boundary, any 16-bit near pointer to a global silently truncates.
Daily Software Engineering
2026-05-19
Every database connection costs more than you think. A fresh PostgreSQL connection requires a TCP handshake, TLS negotiation, authentication, and backend process fork โ typically 20-50ms before you've sent a single byte of SQL. Your average query might take 2ms. You're spending 10-25x more on setup than on actual work.
A connection pool keeps a set of pre-established connections warm and hands them out to application threads on demand. When the thread finishes, the connection returns to the pool instead of being destroyed.
The three knobs that matter:
The rule of thumb for sizing: connections = ((core_count ร 2) + effective_spindle_count). For a typical 8-core app server hitting SSD-backed Postgres, that's around 17 connections. Most developers reflexively set max pool to 100 and wonder why their database melts under load. More connections is not more throughput โ past a certain point, the database spends more time context-switching than executing queries.
Real-world example: A team I worked with had 20 app instances, each with a pool size of 50, hitting a Postgres instance configured for 200 max connections. Under load, half the app instances couldn't get connections at all, and the database was at 100% CPU thrashing between 200 backend processes. We dropped pool size to 10 per instance (200 total, matching DB capacity), latency dropped 40%, and p99 stopped spiking. Less was more.
Watch for these pitfalls:
server_check_query, HikariCP's connectionTestQuery) to avoid serving dead socketsAdd a layer when needed: For high-fanout architectures (many small services, serverless functions), put PgBouncer in transaction-pooling mode between your apps and the database. It multiplexes thousands of client connections onto dozens of real backend connections.
Tool Nobody Knows
2026-05-19
Everyone reaches for nice when a background job hammers the CPU. nice is a hint. The scheduler weighs it against runtime, sleep history, and a dozen heuristics, then does roughly whatever it wants. If you need the kernel to actually care, you need chrt.
chrt (from util-linux, already on every Linux box) sets a process's scheduling policy, not just its weighting inside one policy. The policies are the levers the kernel actually pulls.
SCHED_IDLE โ runs only when nothing else wants the CPU. Stronger than nice 19: an idle-class task can sit on a busy core forever and never preempt a regular task. Perfect for rsync backups, video encodes, or anything that should disappear until the box is bored.
chrt -i 0 ffmpeg -i source.mkv -c:v libx264 output.mkv
SCHED_FIFO / SCHED_RR โ soft real-time. The process preempts every normal task on its CPU until it blocks. Audio engines (jackd, pipewire), trading loops, and ROS nodes live here. Priority 1โ99; higher beats lower.
sudo chrt -f 50 jackd -dalsa
Find out what a running process actually is:
$ chrt -p 12345
pid 12345's current scheduling policy: SCHED_OTHER
pid 12345's current scheduling priority: 0
Move a runaway rebuild to the idle class without killing it:
sudo chrt -i -p 0 $(pgrep -f "cargo build")
That's the wizard move โ your build keeps going, your tmux pane stays responsive, your video call doesn't stutter, and you didn't have to kill -STOP anything.
Scheduling policy controls CPU contention. taskset controls which CPUs the task can touch. ionice controls disk contention. They're orthogonal, and together they carve out actual cores and bandwidth.
# Pin to CPU 7, idle scheduling, idle I/O class
taskset -c 7 chrt -i 0 ionice -c3 restic backup /home
That backup will not perceptibly slow anything you're doing. It will also finish, eventually, because SCHED_IDLE still runs โ it just yields to anything else that wants the cycles.
nice -n 19 still gets meaningful CPU time when the system is loaded, because CFS gives every runnable task some share. SCHED_IDLE gets nothing while other tasks are runnable. The difference shows up the moment you have a CPU-bound foreground task โ nice 19 stutters, chrt -i 0 doesn't.
For real-time the comparison is even more lopsided: no nice level will preempt a regular task on a busy core. Only a real-time policy can do that, and chrt is how you opt in without writing C and calling sched_setscheduler(2) yourself.
CAP_SYS_NICE. Without it you'll get EPERM. Either run as root or grant the cap: setcap cap_sys_nice+ep ./your-binary.sleep() or blocking syscall will lock up a core. The kernel's RT throttler saves you (default: 950ms per second of wall clock), but don't rely on it.chrt -m prints the valid priority ranges for each policy on your running kernel โ useful when a script assumes 1โ99 and you're on something exotic.chrt -i 0 idles every grandchild too โ usually what you want, occasionally a foot-gun.nice asks the scheduler politely; chrt picks the policy class the scheduler actually enforces, and that's the only knob that matters once the system is loaded.
What If Engineering
2026-05-19
Air conditioning is brute-force thermodynamics: pump heat from inside to outside using compressors that burn ~10% of global electricity. But there's a colder reservoir we ignore โ outer space, sitting at 3 K. Between us and it lies an atmospheric transmission window from 8โ13 ฮผm where our atmosphere is nearly transparent to infrared. A surface tuned to radiate strongly in that band, while reflecting incoming sunlight, can dump heat directly into the cosmic void. No compressor. No electricity. Even at noon.
The physics is set by Planck's law and Kirchhoff's law. A blackbody at 300 K (room temp) radiates peak emission near 10 ฮผm โ right in the sky window. Stanford's Fan group demonstrated this in 2014 with a photonic stack of HfOโ and SiOโ layers, achieving ~5 ยฐC below ambient in direct sunlight. Subsequent metasurfaces and polymer films (PDMS on silver) have pushed practical cooling power to ~100 W/mยฒ during the day and ~150 W/mยฒ at night under clear skies.
The household math. A typical U.S. single-family home has a peak cooling load of about 3.5 kW (a 1-ton AC unit). At 100 W/mยฒ:
Area needed = 3,500 W / 100 W/mยฒ = 35 mยฒ
That's roughly a third of a 100 mยฒ roof. Plausible โ until you account for the COP problem. A modern AC has COP โ 4, so it delivers 3.5 kW of cooling for ~900 W of electricity. The sky cooler delivers cooling for free, but it can't deliver it where you want without a heat exchanger and a coolant loop. Add a small circulating pump (~50 W) and you're still beating AC by a factor of 15 in electricity.
Scaling to a city. New York City peaks around 10 GW of summer AC demand. To replace it:
Sky-cooler area = 10 ร 10โน W / 100 W/mยฒ = 10โธ mยฒ = 100 kmยฒ
NYC's land area is 778 kmยฒ. You'd need ~13% of the city covered in radiative film โ essentially every flat rooftop. The rooftop area of NYC is estimated at ~100 kmยฒ. The numbers just barely close.
Where the physics bites back:
The honest answer: replace 60โ80% of AC load in dry climates (Phoenix, Madrid, Denver), 20โ30% in humid ones. Globally, that's still a few hundred terawatt-hours of electricity recovered annually โ and the only moving parts are the photons leaving Earth.
Wikipedia Rabbit Hole
2026-05-19
Wikipedia: Read the full article
Imagine a surgical instrument that can slice through dense bone in milliseconds but, if you pressed it against your fingertip, would do nothing at all. This isn't science fiction โ it's a real device sitting in oral surgery clinics right now, and it works by exploiting a peculiar quirk of physics that Pierre Curie discovered in 1880.
Piezoelectric surgery uses ultrasonic vibrations โ typically 24โ36 kHz โ driven by a piezoelectric crystal that physically deforms when electricity is applied to it. The tip oscillates at microscopic amplitudes (60โ200 micrometers), and that frantic micro-hammering shatters the mineralized matrix of bone. But here's the magic: soft tissue is too elastic to be cut at those frequencies. Nerves, blood vessels, the membrane lining your sinuses โ they simply absorb the vibration and bounce back unharmed.
This selectivity solved a problem that had quietly tormented surgeons for centuries. Traditional bone saws and burs are essentially miniature lumberjack tools โ they don't know the difference between a femur and the femoral artery running alongside it. A slip of the wrist during a sinus lift, a third molar extraction, or a spinal procedure could mean a severed nerve or a torn dural membrane. Piezosurgery, patented by Italian oral surgeon Tomaso Vercellotti in the late 1990s, made these procedures dramatically safer.
The applications have spread well beyond dentistry:
There's a bonus effect too. The ultrasonic tip is paired with a cooling saline irrigant, and the cavitation produced by the vibrations creates a "blood-free" surgical field โ the same micro-bubble physics that powers ultrasonic jewelry cleaners is, in this case, blasting debris and blood out of the cut so the surgeon can actually see what they're doing.
The connection to everyday life is closer than you'd think. The same piezoelectric principle is what makes the click in your gas grill lighter, the beep in your microwave, and the quartz oscillator in your wristwatch tick exactly 32,768 times per second. Squeeze a quartz crystal, get voltage; apply voltage to a quartz crystal, get motion. Curie's brothers thought it was a curiosity. A century later, it cuts bone.
The deeper implication is almost philosophical: surgery has historically advanced by getting sharper โ better steel, finer edges, laser precision. Piezosurgery advances by getting more selective, exploiting the fact that different tissues have different mechanical resonances. The instrument doesn't need to be smarter than the surgeon's hand; it just needs to be deaf to the tissues it shouldn't touch.
Daily YT Documentary
2026-05-19
Channel: History on Everyday (226 subscribers)
We use a toothbrush twice a day without ever wondering where it came from โ and the answer turns out to be far stranger than expected. This mini documentary traces the toothbrush from its surprising origin in a 1770 English prison cell, where an inmate named William Addis carved the first bristled handle out of a leftover bone and some pig hair, to its transformation into a global hygiene staple.
The most interesting beat is the wartime pivot. Brushing teeth was a niche habit well into the 20th century, considered fussy or even effeminate in many places. It took military mandates during World War II โ when armies issued toothbrushes to every soldier and drilled daily brushing into the routine โ for the practice to spread into civilian households worldwide. Returning soldiers brought the habit home, and oral hygiene quietly became universal almost by accident.
Along the way the video touches on the shift from boar bristles to nylon (a DuPont innovation), the rise of fluoride, and why dentistry as a profession lagged behind the tool itself. It's the kind of small, focused history that reframes a mundane object as the product of prisons, pandemics, chemistry, and war logistics. A tight, well-researched watch from a tiny channel that deserves more eyes.
Daily YT Electronics
2026-05-19
Channel: STEM PARK (390 subscribers)
Of a fairly thin batch of candidates (lots of shorts, clickbait amplifier circuits, and vague "build cool stuff" videos), this is the one that actually teaches a concrete, replicable project with several distinct learning concepts bundled together.
The electronic dice build is a classic beginner Arduino project because it touches on so many fundamentals in one small package. You get digital input handling via the push button (with the inevitable debouncing question), pseudo-random number generation using random() seeded properly so you don't get the same sequence on every reset, and 7-segment display driving โ either directly through seven GPIO pins or via a decoder IC like the 74HC4511. Mapping the digits 1-6 to the correct segment patterns is a nice exercise in bit manipulation or lookup tables.
It's also a project where you can see the abstraction layers: the physical button โ digital signal โ software logic โ visual output. For someone just past blink-an-LED, this is the right next step. If the host walks through the wiring and code rather than just showing a finished build, it's genuinely useful weekend material.
Note: this batch was weak overall โ most other entries were shorts or clickbait-emoji "secret circuit" videos, so this won partly by default.
Daily YT Engineering
2026-05-19
Channel: What Holds It Up (37 subscribers)
This is a genuine engineering explainer about a counterintuitive design principle: controlled failure. Modern turbofan engines use hollow titanium fan blades โ and rather than being engineered for maximum strength at all costs, they're tuned to fail in a predictable, contained way when something goes catastrophically wrong, like a bird strike or fan blade out (FBO) event.
The reason this matters: an uncontained blade release at 10,000+ RPM turns a fan blade into a high-energy projectile capable of severing fuel lines, hydraulics, or cutting into the passenger cabin. So designers deliberately engineer the blade root, the containment ring, and the surrounding casing as a system โ the blade is allowed to shear off cleanly, and the Kevlar-wrapped containment shroud absorbs the energy. Certification literally requires demonstrating this with a live bird-strike test on the rig.
The hollow titanium construction is itself a clever bit of engineering โ diffusion-bonded and superplastically formed to get a stiff, light blade with internal trusswork. It's lighter (better fuel burn), and the geometry also tunes the failure mode.
From a 37-subscriber channel, so this is exactly the kind of small-creator technical content worth surfacing. The description suggests a real explanation rather than stock footage with narration.
Daily YT Maker
2026-05-19
Channel: SmartTools (8490 subscribers)
This pick comes from a slim field โ most of today's candidates are RC truck assembly montages, Shorts, or workshop b-roll with little instruction. SmartTools at least shows a complete scrap-to-tool fabrication sequence, which has real educational value if you're learning metalwork on a budget.
The build repurposes a discarded motorcycle sprocket โ already hardened steel with precision-cut teeth โ into a functional wrench. That's a smart material choice worth understanding on its own: sprockets are typically made from medium-carbon steel (often 1045 or similar), heat-treated for wear resistance, which makes them excellent stock for tools that need to resist deformation under torque.
Expect to see the usual scrap-metal-channel workflow: marking and layout, angle grinder cutting, drilling, shaping the jaw profile, and finishing. The interesting takeaways are less about copying the exact wrench and more about the general technique โ how to identify scrap stock with useful properties, how to lay out a jaw to fit a specific fastener, and how to clean up grinder work into something that looks intentional.
Caveat: SmartTools-style channels lean heavily on satisfying visuals and rarely narrate their reasoning. Watch with the sound off and pay attention to the jig setups, grinder angles, and order of operations โ that's where the real lessons live.
Daily YT Welding
2026-05-19
Channel: Ninja Steel present (144 subscribers)
Caveat up front: today's batch is almost entirely hashtag-spam shorts from tiny channels, with no clear long-form educational content available. This pick is the least-bad of a weak field โ choose accordingly.
Of what's on offer, "Welding mistakes that are ruining your metal projects" at least frames itself around a teachable premise: common errors that produce weak or ugly beads, and how to avoid them. The description points toward cleaner, stronger beads by addressing root causes โ typically things like contaminated base metal, wrong amperage for the rod or wire, poor travel speed, incorrect work angle, or insufficient joint preparation.
For a beginner or self-taught hobbyist, a "mistakes" format can be genuinely useful because it inverts the usual tutorial: instead of one correct technique to memorize, you see the failure modes that explain why your welds look porous, undercut, or piled up. That diagnostic framing tends to stick.
That said, manage expectations โ at 144 subscribers and a short-form hashtag-heavy title, this is likely a brief clip rather than a deep dive. Treat it as a quick checklist to cross-reference against your own work, not a substitute for a proper tutorial from a more established teaching channel.
