25 newsletters today.
Abandoned Futures
2026-08-26
In 1974, in the middle of the OPEC oil shock, Edinburgh University professor Stephen Salter published a paper in Nature describing a cam-shaped floating device that would rock on incoming ocean waves, pumping hydraulic fluid through a generator. He called it the Nodding Duck. The world called it the Salter Duck.
The physics were extraordinary. A Duck sits with its rounded "back" facing the incoming waves. The wave rolls the Duck up and back; the Duck's cam profile is shaped so the far side barely moves β nearly all the wave's energy goes into rotation rather than transmitting past the device. In wave tanks at Edinburgh, prototype Ducks absorbed over 90% of incident wave energy across a broad frequency range. For comparison, a modern wind turbine's Betz limit is 59.3%. Nothing else in renewable energy comes close.
The UK Department of Energy funded the Wave Energy Programme from 1974 to 1982, spending about Β£15 million exploring Ducks, Cockerell rafts, and oscillating water columns. A commercial-scale Duck string β 300-meter spines carrying multiple Ducks, moored 15 km off the Hebrides β was projected to deliver baseload-scale power from the North Atlantic, where wave energy density averages 40-70 kW per meter of wave crest.
Then in 1982, the UK Atomic Energy Authority (UKAEA) β which had a direct institutional interest in nuclear winning the low-carbon race β delivered the assessment that killed the program. It calculated Duck electricity at roughly Β£0.46/kWh, making it uncompetitive with anything.
Salter spent the next decade proving the report was wrong. Reviews in the 1990s found that the UKAEA calculation had:
Corrected, the number came in around Β£0.05/kWh in 1980s money. The program was already dead. Salter wrote in 1993: "The wave programme was killed by people who had every incentive to kill it and no incentive to check their arithmetic."
Why it works now:
Salter is 88 in 2026, still at Edinburgh, still updating the Duck design. His current version uses a gyroscopic power take-off instead of hydraulics β no oil, no seals, sealed inside the hull for a 40-year service life. Nobody's funded a full-scale build.
ArXiv Paper Digest
2026-08-26
Imagine you're running a massive kitchen where hundreds of chefs need to hand ingredients to each other in a precise sequence to produce a complicated meal. The traditional way to organize this is to give every chef a copy of the recipe and hope they coordinate in real time β each one asking, "What do I do next? Where's my ingredient?" That's basically how modern GPUs work: thousands of threads independently fetch data and instructions, with a lot of overhead spent figuring out what to do next.
Microsoft's new Maia 200 chip takes a different approach. Instead of thread-centric computing, it uses what the authors call a Software Defined Locally Accessed Dataflow Architecture (SDLA). Think of it as pre-choreographing the entire kitchen: the compiler works out ahead of time exactly which data moves where, when, and through which specialized memory. The hardware then just executes that dance without wasting cycles asking questions.
The raw numbers are impressive:
For context, that FP8 number is competitive with NVIDIA's flagship datacenter chips, and the FP4 figure is very high. But the more interesting story isn't the peak numbers β it's the architectural bet. Maia 200 argues that as AI models get bigger, the bottleneck stops being "how fast can we do multiplications?" and becomes "how fast can we move data to the right place at the right time?" By making data movement a first-class thing the software controls explicitly β rather than an emergent property of thousands of threads competing for memory β you get better efficiency per watt and better scalability.
The tradeoff is that this puts enormous pressure on the compiler and software stack. If the hardware isn't figuring things out dynamically, the toolchain has to get the choreography right in advance. That's hard, but it's a bet that pays off if your workload is predictable β and large language model training and inference are, in fact, very predictable. You know the shape of every matrix multiplication in advance.
This is part of a broader trend of hyperscalers (Google's TPU, AWS's Trainium, Microsoft's Maia) building custom silicon tuned specifically to LLM workloads rather than paying NVIDIA margins for general-purpose GPUs.
Daily Automotive Engines
2026-08-26
Everyone talks about stroke and bore, but the single most important dimension for crankshaft strength is one most enthusiasts have never measured: journal overlap. It's the amount that the main journal and rod journal physically overlap when viewed from the end of the crank.
Picture the crankshaft looking down the centerline. The main journal is centered on the crank axis. The rod journal is offset by half the stroke. If the two journals are large enough in diameter relative to the stroke, they physically intersect β sharing metal in the cheek between them. That shared material is journal overlap.
The math is simple:
Example: A small-block Chevy 350 has a 2.45" main, 2.10" rod journal, and 3.48" stroke. Overlap = (1.225 + 1.05) β 1.74 = 0.535". Solid. Now stroke it to a 383 (3.75" stroke): overlap drops to 0.400". Stroke it further to a 400 crank (3.75" stroke with 2.65" mains): overlap climbs back to 0.425" β that's why the 400 block used bigger mains.
Why it matters: Overlap is the direct load path between the rod journal and the main journal. Combustion force on the piston twists the rod journal, and that torque has to travel through the crank cheek to the main bearing. More overlap = shorter, stiffer load path = less crank flex, less bearing wear, and higher fatigue life.
The stroker's dilemma: Long-stroke builds shrink overlap dramatically. A 4.100" stroke in a 350-based block can drop overlap under 0.200" β dangerously flexy. This is why serious stroker builds use small-journal rods (Honda 2.0" or "Chevy small journal" 2.00" rod journals) not to reduce friction, but to preserve overlap on the main side. Every 0.010" of rod journal diameter you keep is 0.005" of overlap you save.
Rule of thumb: Keep overlap above 0.400" for high-output street engines, above 0.500" for boosted or high-RPM builds. Below 0.300" and you're building a crank that will flex, walk bearings, and eventually crack at the fillet between the cheek and journal.
This is why diesel cranks look so overbuilt β a Cummins 5.9L has 2.99" mains and 2.76" rod journals with a 4.72" stroke, giving over 0.51" overlap despite the long stroke. That geometry is why the block survives 1000+ lb-ft.
Daily Debugging Puzzle
time.Time Equality Trap: The == That Diverges from .Equal() After a JSON Round Trip2026-08-26
This service records an event, hands it to a client, and later verifies that a returned event matches what's in the cache. The comparison uses ==, which feels natural for a plain struct. Tests pass locally. In staging, every verify call returns false.
package main
import (
"encoding/json"
"fmt"
"time"
)
type Event struct {
Name string
At time.Time
}
var cache = make(map[string]Event)
func Record(name string) Event {
e := Event{Name: name, At: time.Now()}
cache[name] = e
return e
}
// Verify confirms the caller-returned event matches the cached one.
func Verify(e Event) bool {
cached, ok := cache[e.Name]
if !ok {
return false
}
return cached == e
}
func main() {
original := Record("launch")
// The client round-trips the event through JSON before sending it back.
data, _ := json.Marshal(original)
var returned Event
json.Unmarshal(data, &returned)
fmt.Println(Verify(returned)) // prints: false
}
A time.Time is not just a wall-clock instant. Since Go 1.9, values produced by time.Now() also carry a monotonic clock reading, stored in a hidden field alongside the wall-clock seconds, nanoseconds, and location pointer. That monotonic reading is what makes durations like time.Since(t) immune to wall-clock jumps (NTP steps, DST, leap seconds).
Struct equality with == compares every field of time.Time, including the monotonic reading. JSON marshalling, on the other hand, only serializes the wall-clock instant as an RFC 3339 string. When you unmarshal, you get a time.Time with the same wall-clock reading but no monotonic component and possibly a different *Location pointer (time.UTC vs. a fresh pointer). So the returned event and the cached event represent the same instant but are not ==-equal.
The same trap fires for any operation that reconstructs a time from serialized form β protobuf, msgpack, database drivers, gRPC. Local tests miss it because you're comparing the freshly-created value to itself, monotonic intact.
The Go documentation is explicit: "Because the monotonic clock reading has no meaning outside the current process, serializing a t.Round(0)... will not preserve it." And: "Two Time values are equal if they represent the same time instant... Do not use == with Time values."
Use time.Time.Equal, which compares only the wall-clock instant:
func Verify(e Event) bool {
cached, ok := cache[e.Name]
if !ok {
return false
}
return cached.Name == e.Name && cached.At.Equal(e.At)
}
If you must keep struct-level == (e.g., for map keys), strip the monotonic reading at the boundary before caching:
e := Event{Name: name, At: time.Now().Round(0)} // Round(0) drops monotonic
Round(0) is idiomatic Go for "give me an instant without the monotonic tag." After that, values that go through JSON and come back will compare equal β provided the location also matches (call .UTC() to normalize).
Same lesson, different flavor: whenever a type has "hidden" state that some operations preserve and others discard, structural equality is a landmine. Reach for the type's own Equal method.
time.Time carries a hidden monotonic clock reading that == compares but serialization discards β always use t1.Equal(t2), or strip the monotonic part with .Round(0) before storing.
Daily Digital Circuits
2026-08-26
A processor running a tight inner loop β say, a memcpy or a DSP filter tap β fetches the exact same 4-16 instructions billions of times. Every fetch burns energy in the L1 I-cache (tag lookup, way selection, data array read, ~30-50 pJ per access on a modern node) and consumes fetch bandwidth that could go elsewhere. A zero-overhead loop buffer (also called a loop cache or loop stream detector) is a tiny fully-associative buffer sitting between fetch and decode that captures the instructions of a detected loop and replays them from an SRAM one-tenth the size of the I-cache.
The mechanism has three phases. Detection: a small state machine watches for a backward-taken branch whose target lies within the last N fetched instructions (typically N=16 to 64). When it fires twice in a row to the same PC, the buffer is armed. Fill: on the next iteration, fetched instructions are mirrored into the loop buffer as they pass through. Streaming: once the buffer contains the full loop body and the branch predictor keeps predicting the backedge taken, the I-cache and even the branch predictor are gated off, and decode is fed straight from the loop buffer. A misprediction, exception, or any control flow leaving the buffered region tears down the mode.
Real example: Intel's Loop Stream Detector (LSD). Introduced in Nehalem (2008), refined through Skylake, it holds up to 64 micro-ops post-decode. When active on a tight loop, the entire front-end β fetch, predecode, decode β is clock-gated. Agner Fog's measurements show ~10% overall power reduction on DSP-like workloads and, more importantly, the removal of front-end bottlenecks: the LSD delivers 4 Β΅ops/cycle every cycle regardless of instruction-cache pressure. ARM's Cortex-A78 has a similar 64-entry "MOP cache" that plays the same role.
Rule of thumb for the energy win: a loop buffer access costs roughly the ratio of the two SRAM sizes. For a 64-entry Γ 32-bit loop buffer (256 bytes) versus a 32 KB I-cache, that's ~1/128 the dynamic energy per fetch. On a loop that iterates a million times, this is the difference between the front-end burning 30 mJ and 0.25 mJ.
The catch is fragility. Any of these break the mode: a function call inside the loop, a self-modifying store, a variable-length instruction crossing the buffer boundary, or a loop just one instruction too big. Compilers therefore align hot loops and use pragmas (#pragma unroll, or on ARM, __attribute__((loop_align))) specifically to keep them buffer-eligible. When you see a benchmark cliff after adding "one more line" to an inner loop, the loop buffer falling out of lock is often why.
Daily Engineering Lesson
2026-08-26
A potentiometer is a three-terminal resistor with a movable wiper. How you wire those three terminals β not the part itself β determines whether you have a voltage divider (three wires, outputs a voltage) or a rheostat (two wires, controls a current). Confusing the two is one of the most common mistakes in analog design, and it burns up more pots than any other failure mode.
Voltage divider mode (3-terminal): Connect the outer terminals across a voltage source (say +5V and GND). The wiper outputs a voltage proportional to its position, from 0V to +5V. The current through the pot is fixed by the total resistance and supply voltage β it doesn't change as you turn the knob. This is how volume knobs on audio gear, joystick position sensors, and analog input pots for microcontroller ADCs are wired. A 10kΞ© pot across 5V draws a constant 0.5 mA regardless of wiper position.
Rheostat mode (2-terminal): Connect one outer terminal and the wiper in series with your load. The pot now acts as a variable resistor. Current through the load changes as you turn the knob β and critically, all of that load current flows through the wiper contact. This is how old-school motor speed controls, lamp dimmers, and current-limiting adjustments work.
Why this matters β the wiper current problem: Pot wipers are typically rated for only 100 mA or less because the contact area is tiny. In voltage divider mode, wiper current is nearly zero (it's just driving an op-amp input or ADC). In rheostat mode, the wiper carries the full load current. Turn the pot toward zero resistance while a 12V motor is drawing 2A, and you'll incinerate the wiper track in seconds.
Rule of thumb for rheostat sizing: Maximum load current should be no more than 50% of the pot's wiper rating, and the pot's power rating must exceed IΒ²R at minimum resistance setting β because that's when current peaks. For a 1W, 100Ξ© pot, max safe current is β(1W/100Ξ©) = 100 mA at full resistance, but at 10Ξ© the same 100 mA only dissipates 0.1W. Always check both ends of the sweep.
Practical tip: If you need a rheostat but only have a pot, tie the unused outer terminal to the wiper. If the wiper ever loses contact (dirt, wear), the pot fails to maximum resistance instead of open circuit β the load current drops to zero instead of arcing across the gap.
Forgotten Books
2026-08-26
Book: La T.S.F. des amateurs : tΓ©lΓ©graphie, tΓ©lΓ©phonie : manuel pour la construction et l'utilisation des appareils rΓ©cepteurs de tΓ©lΓ©graphie sans fil par ondes amorties et par ondes entretenues et des appareils de tΓ©lΓ©phonie sans fil by Franck Duroquier (1923)
Read it: Internet Archive
In 1923, a Frenchman named Franck Duroquier published the fourth edition of a manual assuming something modern readers would find astonishing: that an ordinary amateur, working at a kitchen table, could and should build every single component of a working radio receiver from raw materials. Not assemble a kit. Not solder a pre-designed board. Build.
The table of contents reads like a lost civilization's engineering curriculum:
IV. β APPAREILS D'ACCORD ET DE RΓGLAGE
1Β° Construction d'une bobine d'accord...
2Β° Construction d'un transformateur d'induction...
3Β° Construction de selfs...
4Β° Construction de condensateurs variables...
5Β° Bobines Γ plusieurs couches de fil...
VI. β RΓCEPTION DES ONDES ENTRETENUES
1Β° Construction de tikkers...
2Β° Construction d'un hΓ©tΓ©rodyne...
Chapter III instructs the reader on the "Construction et utilisation" of detectors and vacuum tubes β yes, hand-building vacuum tubes. Chapter IV walks you through winding your own inductors and rolling your own variable capacitors. Chapter VI covers the "tikker," a mechanical interrupter that let you demodulate continuous-wave signals in the pre-vacuum-tube era by chopping them into audible clicks.
The book was distributed by Masson et Cie, a prestigious Parisian scientific publisher (still around, now part of Elsevier). Duroquier had previously written La TΓ©lΓ©graphie sans fil pour tous, which received a Ministerial subscription β meaning the French government thought so highly of amateur radio education that it bought copies for public libraries and normal schools.
What's genuinely lost here isn't the specific circuits β you can still find those. It's the assumption that a curious amateur ought to understand their communications equipment at the level of vacuum physics and electromagnetic tuning. In 1923, "radio" meant you knew how a coupling coefficient worked because you had wrestled with one at your workbench.
Is any of this still valid? Absolutely. Modern amateur radio operators still occasionally wind their own toroidal inductors; the physics of a variable capacitor hasn't changed since Duroquier drew his "dessins, plans et croquis originaux." A homemade crystal radio built to these 1923 specifications will still pull AM broadcasts out of the air today, powered by nothing but the radio waves themselves. Vintage "tikker" demodulators are occasionally rebuilt by hobbyists exploring pre-1920 wireless history.
The connection to today is uncomfortable. We're surrounded by devices β phones, WiFi routers, Bluetooth earbuds β whose internals are literally sealed against user access. The 1923 amateur understood their radio the way a modern user understands... nothing they own. Duroquier's readers were expected to be their own tech support, their own manufacturer, and their own R&D department. The right-to-repair movement is trying to claw back a fraction of what was simply assumed a century ago.
Forgotten Darkroom
2026-08-26
Book: Pictorial photography in America by Pictorial Photographers of America (1921)
Read it: Internet Archive
In 1921, Arthur Wesley Dow β Professor of Fine Arts at Teachers College, Columbia University, and the man who taught Georgia O'Keeffe how to see β opened an essay in Pictorial Photography in America with a sentence that would have sounded absurd to most of his contemporaries:
The painter need not always paint with brushes, he can paint with light itself. Modern photography has brought light under control and made it as truly art-material as pigment or clay.
This was a radical claim in 1921. Photography was still widely dismissed as a mechanical trick β a way to record reality, not interpret it. Clarence H. White, president of the Pictorial Photographers of America, complained in the same volume's preceding issue that "to many people photography is merely a mechanical process." The Pictorialists were fighting a culture war: they wanted photography admitted to the fine arts, hung in museums, judged on composition and emotion rather than sharpness and accuracy.
Dow's argument went further than aesthetics. He made a technical claim about what the photographer could actually do:
He can control the quality of his lines, the spacing of his masses, the depth of his tones and the harmony of his gradations. He can eliminate detail, keeping only the significant. More than this, he can reveal the secrets of personality.
Read that list again. Line quality. Mass spacing. Tonal depth. Gradation harmony. Detail elimination. In 1921, achieving these effects required gum bichromate printing, bromoil transfers, hand-scratched negatives, and hours in a darkroom with soft-focus lenses. Today every one of those controls is a slider in Lightroom or a filter in Instagram. Dow was describing, with startling precision, the full toolkit of modern digital photo editing β a full century before it existed in most people's pockets.
What's more striking is that the Pictorialists lost their culture war for about seventy years. Straight photography β Ansel Adams, Edward Weston, the f/64 group β won the mid-century argument. Sharp focus, unmanipulated negatives, and "honest" documentation became the moral high ground. Manipulated images were derided as fake, sentimental, or worse. The Pictorialist project was largely written off as a Victorian embarrassment.
Then digital arrived, and everyone became a Pictorialist again. The moment we handed cameras to everyone with a phone, the first thing they did was reach for filters, soft-focus blur, painterly grading, and tonal manipulation β exactly the vocabulary Dow was defending in 1921. The Instagram aesthetic wars over "authentic" vs. "edited" photos are the same argument White and Dow were fighting, replayed with different tools.
Dow saw it coming. He understood that once light itself became controllable material, the argument would never be about the camera β it would be about the photographer's intent. "Neither light, nor chemicals, nor camera, nor nature tell us anything of Art," he wrote. The tool doesn't make the picture. The eye does.
Forgotten Patent
2026-08-26
On May 14, 1952, a helicopter-parts contractor named John T. Parsons and his chief engineer Frank L. Stulen filed a patent that would end craft manufacturing and start the era of computer-driven production. Six years later β January 14, 1958 β the U.S. Patent Office granted them US 2,820,187, titled "Motor Controlled Apparatus for Positioning Machine Tool." What it described was mundane on paper and revolutionary in practice: a milling machine whose cutter position was driven not by a human turning handwheels, but by numbers on a punched paper tape.
Parsons ran a small shop in Traverse City, Michigan, making rotor blades for Sikorsky. The blades were compound curves β hundreds of coordinate points, each hand-calculated by a room of "computers" (women with mechanical calculators), then transferred to templates and cut by hand. Errors were expensive and constant. In 1948, Parsons rented time on an IBM 602A tabulator to compute the coordinates automatically, then had the idea to keep going: what if the same punched cards drove the mill directly?
He pitched the Air Force, which was desperate for aircraft skins with variable thickness. In 1949 the contract went to Parsons; he subcontracted the servo work to the MIT Servomechanisms Laboratory β the same lab that, under Jay Forrester, was building Whirlwind. MIT delivered a working three-axis prototype in 1952, and the patent followed. The apparatus read binary coordinates from tape, drove synchronous motors through servo amplifiers to X, Y, and Z lead screws, and closed a feedback loop with position sensors. This is exactly the block diagram inside every CNC controller today.
Two things flowed immediately from the patent:
Now trace what runs on that architecture in 2026:
Parsons himself was inducted into the National Inventors Hall of Fame in 1985. He called his invention "the third industrial revolution." That sounded grandiose in 1958. In 2026, with software literally printing rocket engines and robots picking Amazon orders, it looks like an understatement. Parsons didn't just automate the milling machine; he made the physical world addressable by numbers β which is the precondition for everything that came after.
Daily GitHub Zero Stars
2026-08-26
Language: Unknown
Link: https://github.com/VismayaaRajan/placement-week-scheduler
Anyone who's lived through a university placement week knows the chaos: dozens of companies, hundreds of students, overlapping interview slots, last-minute cancellations, and a spreadsheet that turns to soup by Tuesday afternoon. placement-week-scheduler takes a swing at that exact problem β a constraint-based interview scheduler with something most homegrown scripts skip: live disruption replanning.
The one-line description hints at a genuinely non-trivial architecture:
This kind of problem sits in a sweet spot for solver libraries like Google OR-Tools, MiniZinc, or Python-constraint. It's the sort of side project where a student solves a real pain they experienced firsthand β usually the best kind of software.
Who might find this useful:
Zero stars, zero description on topics, and no README fanfare β but the problem framing is sharp and the "live disruption" angle suggests the author actually thought past the happy-path solve. Worth a look if you enjoy watching solvers do useful work.
Daily Hardware Architecture
2026-08-26
You've seen CAT (cache partitioning) and MBA (bandwidth throttling). Both need a prerequisite: knowing who's actually using the bandwidth. That's MBM β the read-only telemetry layer of Intel's Resource Director Technology (RDT). Without it, throttling is guesswork.
MBM works by tagging every L3 miss with an RMID (Resource Monitoring ID) assigned to the running thread via IA32_PQR_ASSOC MSR. When a miss escapes L3 and hits the memory controller, hardware increments a per-RMID counter in the uncore. Two counters exist per RMID:
Software reads these via IA32_QM_CTR after selecting the RMID+event through IA32_QM_EVTSEL. Linux exposes it through the resctrl filesystem β you echo a PID into /sys/fs/resctrl/mon_groups/foo/tasks and then cat mon_data/mon_L3_00/mbm_total_bytes.
Concrete example: a Redis instance and a batch analytics job share a 28-core Xeon. Latency on Redis spikes intermittently. Perf counters show low IPC but no obvious cache misses at L1/L2. You create two resctrl monitor groups, assign Redis to one and the analytics job to the other, and watch mbm_total_bytes over 10 seconds. Redis: 400 MB/s. Analytics: 38 GB/s β saturating the ~45 GB/s DDR4 channel budget. Now you know the analytics job is the noisy neighbor, so you apply MBA to cap it at 60% bandwidth. Redis p99 drops from 12ms to 800Β΅s.
The catch with counters: RMIDs are a finite hardware resource β typically 128 or 256 per socket. If you have more cgroups than RMIDs, resctrl multiplexes them, and readings become sampled rather than continuous. Also, the counters are event-count-based, not byte-precise: each increment represents a cache-line-sized transfer (64 bytes), so short bursts under one line get rounded.
Rule of thumb: if MBM shows a workload sustaining more than ~70% of your theoretical DRAM bandwidth (channels Γ transfer rate Γ 8 bytes), latency-sensitive co-tenants will suffer, because DRAM queueing delay explodes non-linearly past that point. That's the trigger to reach for MBA.
MBM is the "before" measurement that makes every other RDT knob defensible. Throttle without it and you're flying blind.
Hacker News Deep Cuts
2026-08-26
Link: https://widgetsandshit.com/teddziuba/2010/10/taco-bell-programming.html
HN Discussion: 1 points, 0 comments
Ted Dziuba's "Taco Bell Programming" is one of those rare essays from the late-2000s blogosphere that has quietly shaped how a generation of pragmatic engineers think about tooling. The premise borrows from the fast-food chain's famous business model: Taco Bell sells a dozen products, but they're really just seven ingredients rearranged. Dziuba argues that great engineering works the same way β most problems don't need a bespoke framework, a new database, or a distributed system. They need xargs, find, awk, and a willingness to think.
The canonical example in the piece: someone wants to build a distributed job queue to process a few million URLs. Dziuba's counter is that xargs -P on a single beefy machine will chew through the workload in an afternoon, with zero infrastructure, zero failure modes you didn't already understand, and zero on-call pages at 3am. The "boring" Unix toolbox often beats the shiny distributed system β not because distributed systems are bad, but because you rarely actually need one, and the ones you build yourself are almost always worse than the ones you didn't.
Why does this deserve attention in 2026? Because the trap has only gotten worse. Fifteen years after Dziuba wrote this, the industry has piled on Kubernetes, service meshes, event buses, vector databases, and now an entire ecosystem of "agentic" orchestration frameworks β all layered on top of problems that a shell one-liner and a cron job would have solved cleanly. Every senior engineer eventually rediscovers Taco Bell Programming under a different name: "worse is better," "boring technology," "just use Postgres," "the majestic monolith." Dziuba got there first, and did it with more humor.
The essay is also a useful lens for evaluating LLM-generated code. Models love to produce elaborate abstractions, custom classes, and heavy dependencies for problems that want a five-line script. Reading (or re-reading) this piece is a good calibration exercise: the question isn't "what's the most sophisticated solution?" but "what's the fewest moving parts that actually solves it?"
It's short, it's funny, it's from a defunct-feeling blog that miraculously still resolves, and it will genuinely make you a better engineer. That it's sitting at 1 point with zero comments is a small tragedy.
HN Jobs Teardown
2026-08-26
Source: HN Who is Hiring
Posted by: dbenamy
Of the ten postings, Datadog's is the most revealing because it casually name-drops infrastructure choices that most companies would treat as multi-year platform bets. The tell: "We build our own tsdb, distributed tracing tools, cutting edge visualizations... process trillions of events per day."
The stack decoded:
Go, Python, Java, React β a polyglot backend is a green flag for engineers who hate monocultures, but a signal that different teams own different services with different constraints (Go for hot paths, Java for JVM ecosystem integrations, Python for data/ML).Custom TSDB β they didn't adopt InfluxDB or Prometheus at scale; they built their own time-series database. This is a company that has passed the point where off-the-shelf storage engines can handle their cardinality.k8s, multi-region, multi-cloud β not just "we use Kubernetes" but explicit multi-cloud, which is expensive, complicated, and only justified when your customers demand cloud parity (or you're hedging against a single provider).What the posting reveals about stage and direction: Datadog is well past product-market fit and squarely in "scale eats everything" mode. The phrase "trillions of events per day" is the entire pitch β they're not selling a mission, they're selling the problem itself. Engineers who like monitoring will self-select in; everyone else bounces. That's a confident, mature recruiting move.
The three-office ONSITE list (Boston, NYC, Paris) plus REMOTE tells you they've committed to distributed work but still cluster engineering leadership on both coasts and in Europe β a hedge that gives them talent access without going fully async.
Skills/trends highlighted: The observability space is consolidating around vendors who own their storage layer. If you're a systems engineer with distributed-storage or query-engine experience, this posting is a beacon. It also confirms the industry-wide shift where "monitoring" companies are really "distributed database" companies wearing a UI.
Green flags: Concrete tech, concrete scale numbers, named regions, and the phrase "customers just like us" (dogfooding). Red flags: Extremely terse β no mention of comp, level, team structure, or what "Software Engineers" actually means at a company with hundreds of them. That vagueness is a filter; it works for Datadog because their brand does the recruiting, but it would sink a smaller company.
Daily Low-Level Programming
2026-08-26
A kprobe lets you attach a handler to almost any kernel instruction address at runtime. When that address executes, your handler runs, then the original instruction resumes. This is how bpftrace, perf probe, and ftrace's dynamic events work. The clever part is how the kernel diverts execution without stopping the world.
Registration, phase 1 β the INT3 trick. When you register a kprobe at address A:
A into a per-probe insn_slot (an executable page of saved instructions).A with 0xCC β the single-byte INT3 breakpoint instruction. This write is a single byte, so it is atomic on x86: no other CPU can observe a half-patched instruction.A, it traps into do_int3. The handler identifies the probe, calls your pre_handler, single-steps the saved instruction out of the insn_slot, calls your post_handler, then resumes at A + insn_len.Phase 2 β optimization to a JMP. INT3 costs ~1000 cycles per hit (trap, save state, dispatch, single-step, IRET). If the probe survives long enough, a workqueue upgrades it: the kernel patches a 5-byte relative JMP at A that jumps to a trampoline calling your handler directly. Cost drops to ~50 cycles.
But you can't atomically write 5 bytes on x86. The trick: write the INT3 first, then patch bytes 2β5, then overwrite byte 1 with the JMP opcode 0xE9. Any CPU that races through mid-patch sees the INT3 and takes the slow path β correct, just slower. The text_poke_bp() API implements this dance and issues IPIs to serialize instruction streams (Intel requires a serializing instruction after cross-modifying code, or you risk stale prefetch).
Concrete example. Attach to vfs_read:
echo 'p:myprobe vfs_read' >> /sys/kernel/tracing/kprobe_events echo 1 > /sys/kernel/tracing/events/kprobes/myprobe/enable
The first byte of vfs_read is now 0xCC. Within a few seconds, a JMP replaces it. Every read from every file on the system now takes a detour through your handler β and if that handler is empty, the overhead is roughly ~5ns per call.
Rule of thumb. An unoptimized kprobe adds ~1ΞΌs per hit; an optimized one adds ~50ns. If you probe a function called 10M times/sec, unoptimized = 10s of CPU/sec (fully saturated), optimized = 0.5s/sec (5% overhead). Always check /sys/kernel/debug/kprobes/list β probes marked [OPTIMIZED] are cheap; [DISABLED] or unmarked ones aren't.
What prevents optimization. The target must have 5 bytes of instructions with no jump target landing inside them (the JMP would clobber a branch destination). The kernel's decoder walks the function to check. Functions with tight backward branches in the prologue often stay stuck on the INT3 path forever.
text_poke_bp()'s "INT3 first, JMP last" sequence β trading a 20Γ cost reduction for a workqueue delay and a decoder check.
RFC Deep Dive
2026-08-26
In 1977 the ARPANET already had Telnet, but Telnet was, frankly, a scroll-of-glass protocol. It assumed a printing teletype: bytes go one way, characters come back, cursor addressing is somebody else's problem. Meanwhile, at MIT and Stanford the interesting terminals were display terminals β Datamedias, Imlacs, and the fabled Knight TVs on the ITS PDP-10s β with cursor movement, screen erase, reverse video, and a keyboard sprouting META, SUPER, and HYPER keys that Telnet had no vocabulary to describe. SUPDUP, short for SUPer-DUPer, was Mark Crispin's answer.
The core idea is a virtual display terminal. Where Telnet negotiates options like "will you echo?", SUPDUP opens the connection by exchanging a fixed initial handshake describing the physical terminal: rows, columns, and a bitmask of %TO options β does it have overprinting? A visible bell? Can it move the cursor backwards? Erase to end of line? Once the server knows what the terminal can actually do, it sends a small stream of single-byte opcodes: %TDMOV (absolute cursor move), %TDMV0 (fast move within the current line), %TDEOF (erase to end of screen), %TDBS, %TDCR, %TDNOP, and so on. The server maintains a model of what your screen looks like and sends the minimum diff to update it. Any capable terminal, whether Imlac or ADM-3A, could be driven by the same server code β a genuinely novel abstraction in 1977.
Several design choices are worth pausing on:
CONTROL, META, and TOP bits. This is where Emacs's C-M-x conventions came from β SUPDUP could actually carry the chord, whereas Telnet mashed it into ESC-prefix sequences.curses would later formalize on the client side.SUPDUP was standard on ITS, TOPS-20, and TENEX; you could SUPDUP from MIT to Stanford in the late '70s and get a properly responsive Emacs session. It lost to Telnet for prosaic reasons: Telnet was mandatory, SUPDUP was optional, Unix arrived without a SUPDUP daemon, and VT100 escape sequences became the de facto lingua franca once DEC shipped enough terminals. By the mid-'80s SUPDUP was a curiosity.
But its DNA is everywhere. Every time you resize an xterm and the shell reflows, every time ssh forwards a SIGWINCH, every time tmux maintains a screen model and sends deltas to reconnecting clients, you are using ideas SUPDUP articulated first. And Mark Crispin β a teenage MIT hacker when he wrote this β went on to design IMAP, which carries the same instinct: let the server hold the authoritative model, let the client render it. SUPDUP is the road not taken that turned out to be the road we're on anyway.
Stack Overflow Unanswered
2026-08-26
The asker compiles a trivial translation unit containing one initialized variable and one const, using -fdata-sections, and inspects the generated assembly. They notice GCC emits:
.section .data.i,"aw"
.section .rodata.c,"a"
Rather than the "full" form one might expect:
.section .data.i,"aw",@progbits
.section .rodata.c,"a",@progbits
Why did GCC stop emitting the @progbits type argument for these sections?
Why this is interesting. On the surface it looks cosmetic β GNU as will infer @progbits for .data* and .rodata* just fine, so the resulting object file is identical. But the question touches something subtle about how the assembler classifies sections. GAS maintains a table of "well-known" section names (.text, .data, .rodata, .bss, .tbss, .tdata, etc.). For those names β and for names beginning with those prefixes when -fdata-sections/-ffunction-sections is in play β the type is implied. Explicitly repeating @progbits is redundant and slightly increases the size of the emitted assembly, which matters for a compiler that emits enormous .s files through a pipe to the assembler.
The direction toward an answer. Search the GCC source (gcc/varasm.cc, function default_elf_asm_named_section). That function decides whether to emit the flags and type on a .section directive. It has logic that suppresses the type when the assembler is guaranteed to infer it, and it also handles the special case of .rodata β which is a SHF_ALLOC-only section (flag "a", no w or x), where @progbits is the only sensible type. The behavior change likely traces back to a commit that trimmed redundant type arguments to shrink assembly output; git-blaming default_elf_asm_named_section and looking at the GCC changelogs around the version transition (the asker uses 13.2.1) will give the definitive reason. Cross-referencing the GAS manual's section on the ELF flavor of .section confirms that omitting the type is valid for well-known names.
Gotchas. The inference only works for GNU as with ELF targets; other assemblers (LLVM's integrated assembler, some legacy toolchains) may be pickier. It also breaks down for sections whose name doesn't start with a well-known prefix β try .section .weirdname,"aw" and you'll get @progbits defaulted, but the semantics can differ per target. And for sections that could be @nobits (like .bss.*), the flag string must not contain "w" alone without triggering the right default β this is why .bss handling in the same function has its own branch.
Daily Software Engineering
2026-08-26
When you build a controller, watcher, or event handler, you make a fundamental choice: edge-triggered (react to changes) or level-triggered (react to current state). Most engineers reach for edge-triggered because it feels efficient β only do work when something changes. That instinct is usually wrong for distributed systems.
Edge-triggered means: "the desired replica count changed from 3 to 5, so start 2 pods." You process the delta. If you miss the event, you're broken forever β there's no way to recover without external intervention.
Level-triggered means: "the desired count is 5, the actual count is 3, so start 2 pods." You process the current state. Miss an event? The next reconciliation loop reads state again and does the right thing anyway.
Real-world example: Imagine a Deployment controller that watches for scale events. Edge-triggered version: "scale event: +2 pods" arrives, controller creates 2 pods, done. Now the API server restarts and the controller misses a "scale event: -1 pod" during the outage. The controller now thinks there are 5 pods when there are actually 4 β permanently drifted. Level-triggered version: controller just re-reads the Deployment spec (replicas: 4), counts running pods (5), deletes one. It doesn't matter what events it missed. State converges.
The rule of thumb: if losing a single event permanently breaks correctness, you're edge-triggered and you have a bug waiting to happen. Level-triggered systems tolerate arbitrary event loss because they always re-derive intent from observed state.
The trade-off is work per loop. Edge-triggered does O(delta) work; level-triggered does O(state) work every reconcile. For a Deployment with 10,000 pods, checking every pod every second is expensive. That's why real controllers combine both: events wake you up (edge as a hint), but reconciliation reads full state (level as the source of truth). Events are optimizations, not correctness mechanisms.
Practical guidelines:
Kubernetes' entire controller model is level-triggered specifically because networks drop packets, watchers disconnect, and controllers crash. Level-triggering makes those failures invisible.
Tool Nobody Knows
2026-08-26
You have a stream of lines. You want to transform one column, one regex match, or one byte range per line with some existing command β base64, dig, jq, whatever β and leave the rest untouched. The classical answers are all bad:
system() forks a subprocess per line. Fine for 20 lines, horror at 200,000.teip (by Yasuhiro Yamada, MIT-licensed Rust binary, in nixpkgs / brew / AUR / cargo install teip) is the tool for exactly this shape of problem. It masks the parts of stdin you don't want touched, streams only the masked substrings to a subcommand that runs once, then splices the transformed output back into the original positions verbatim.
# Uppercase only the 3rd whitespace field
$ echo "alpha bravo charlie delta" | teip -f 3 -- tr a-z A-Z
alpha bravo CHARLIE delta
# Reverse-lookup only the IPs in access-log lines
$ cat access.log | teip -og '\d+\.\d+\.\d+\.\d+' -- dig +short -x
router.lan. - - [26/Aug/2026:14:03:11] "GET / HTTP/1.1"
# jq only the JSON blob embedded in each syslog line
$ journalctl -u myapp | teip -og '\{.*\}' -- jq -c '.request_id'
# Base64-decode column 4 of a CSV (with proper quoting)
$ teip --csv -f 4 -- base64 -d < users.csv
# Redact credit-card-shaped numbers, everything else untouched
$ teip -og '\b\d{4}[- ]?\d{4}[- ]?\d{4}[- ]?\d{4}\b' -- \
sed 's/./*/g' < support-tickets.txt
# Parse only the timestamp column with dateutils
$ teip -D '\t' -f 2 -- dateutils.dconv -f '%s' < events.tsv
The flag zoo is small and orthogonal:
-f N β whitespace field N (or use -d , / -D REGEX for other delimiters)-c 5-12 β byte/character range, cut-style-l 3,5-8 β specific line numbers-g REGEX β transform whole regex match; -og matches "only" (grep-style)--csv β real CSV parsing, honours quoted commas-s β "solid" mode: pass the concatenated selection as one blob to the subcommand instead of line-by-line (needed when the transform collapses or multiplies lines)-I TAG β inline mode: put the selection where TAG appears in the command, so you can build up shell pipelines around itThe safety property is what makes teip trustworthy in production: unless you pass -s, teip refuses to splice back a subcommand output whose line count differs from what it sent. If your transform silently ate a line you get an error, not garbled output β the exact failure mode that eventually bites every hand-rolled awk-plus-system() pipeline.
Performance-wise, the subcommand runs once as a coprocess and streams. On a million-line log, replacing awk '{ "cmd " $3 | getline x; ... }' with teip commonly moves you from minutes to a couple of seconds because you stopped forking a million times.
Fun corner: teip -s -f 1- is a legitimate way to slurp all fields into a single subprocess call, which turns teip into a general "wrap this command around the whole stream, but I still want its output on the same lines" utility.
What If Engineering
2026-08-26
Highways shake. A fully loaded semi crossing an expansion joint dumps roughly 10β50 kN of impulsive load into the deck, and the deck rings at its natural frequency β typically 2β8 Hz for a long span. That energy currently dissipates as heat in the asphalt, sound in the air, and fatigue cracks in the rebar. What if we bolted a 300-meter steel tuning fork to the underside and tuned it to resonate with the traffic?
A tuning fork's frequency is f β (1.875Β² / 2Ο) Β· β(EI/ΟALβ΄). To hit 4 Hz with structural steel (E = 200 GPa, Ο = 7850 kg/mΒ³), a cantilevered tine of square cross-section a and length L gives us a design knob. Solve for L = 300 m and you need a β 4.2 m β a hollow box beam roughly the size of a subway car in cross-section, hanging in matched pairs from a rigid yoke anchored to bedrock beside the overpass. Total mass per tine: about 2,400 tonnes (using 40 mm plate steel, hollow).
The overpass deck deflects a few millimeters per truck axle. If the yoke transmits even 1 mm peak displacement to the base of the tines at resonance, the tine tips swing through amplitudes governed by the quality factor. Structural steel in bending has Q β 500β1000. At Q = 800, tip amplitude at steady state = 1 mm Γ 800 Γ (mode shape factor β 1.5) β 1.2 meters of tip swing. Peak strain in the root fibers: Ξ΅ β 3aΞ΄_tip/(2LΒ²) β 3Β·4.2Β·1.2/(2Β·300Β²) = 8.4Γ10β»β΅. Well under steel's fatigue limit of ~1500 microstrain, so the fork survives.
Line the root section (highest strain) with PZT-5H piezoelectric stacks, coupling coefficient kΒ² β 0.5, energy density ~500 J/mΒ³ per cycle at maximum strain. Coat 100 mΒ² of root surface Γ 5 cm thick = 5 mΒ³ of PZT. Energy per cycle: 5 mΒ³ Γ 500 J/mΒ³ Γ (Ξ΅/Ξ΅_max)Β² β 500 J. At 4 Hz, that's 2 kW average per tine, or 4 kW per fork under continuous heavy traffic.
A busy overpass sees maybe 100 heavy trucks/hour. Kinetic energy dumped into deck vibration per truck crossing: roughly 5 kJ (the rest goes to translation). That's 140 kW of vibrational input β and we harvest 4 kW. Efficiency: about 3%. The rest bleeds off through the deck bearings and abutments, which the fork cannot reach.
Capital cost estimate: 5,000 tonnes of fabricated steel (~$25M), $8M of PZT, $5M of foundation work β call it $40M for 35 MWh/year. Payback at grid prices: 400 years. A single wind turbine of the same capital cost produces 1,000Γ more energy.
What the fork is good for is tuned mass damping. That 2,400-tonne resonator, phase-shifted 90Β° from the deck, can suck 60β80% of the vibrational amplitude out of the bridge β extending fatigue life by decades. The 4 kW of electricity is essentially a byproduct that runs the deck's own sensors and lighting. Framed as an instrumented damper rather than a generator, the economics flip: bridge fatigue replacement is ~$100M and the fork defers it 40 years.
Wikipedia Rabbit Hole
2026-08-26
Wikipedia: Read the full article
Here's a question that sounds trivial until you actually try to answer it: why do we have seasons? Most people will say "because the Earth is tilted." Correct, but incomplete. The real magic isn't the tilt β it's that the tilt always points the same way, no matter where Earth is in its orbit. In June, the North Pole leans toward the Sun. Six months later, on the opposite side of a 940-million-kilometer orbit, the North Pole still leans in the exact same direction in space β now away from the Sun. Earth's axis is, essentially, frozen in place relative to the distant stars.
This property has a wonderfully old-fashioned name: axial parallelism, also called "rigidity in space" or gyroscopic stiffness. It's the same reason a spinning top resists being tipped over, and the same reason a bicycle stays upright once it's rolling. A rotating body wants to keep its axis of rotation pointing at whatever it was pointing at before. Earth is just a very, very large spinning top β one that's been holding its pose for about 4.5 billion years.
You can see this principle exploited in some strangely elegant places:
But here's the twist that makes axial parallelism genuinely weird: it isn't perfect. Earth's axis does slowly drift β it traces a giant circle in the sky over 26,000 years, a wobble called precession. This is why the "North Star" hasn't always been Polaris. In roughly 12,000 years, the star Vega will be our pole star. When the pyramids were built, the pole pointed at a star called Thuban in the constellation Draco. The Egyptians aligned shafts inside the Great Pyramid to it β and those shafts no longer point at anything in particular, because the sky itself has quietly rotated out from under them.
The cause? The same one that lets you spin a top: torque. The Sun and Moon tug gravitationally on Earth's equatorial bulge, and just as pushing sideways on a spinning gyroscope makes it precess rather than fall, Earth responds by slowly wobbling instead of tipping over.
So the next time you're enjoying a summer afternoon, remember: you're feeling the effect of a 6-sextillion-ton gyroscope, holding its aim at a fixed point in space, precisely because β like every spinning thing β it refuses to be told which way to point.
Daily YT Documentary
2026-08-26
Channel: The Daat (399 subscribers)
At the end of the 19th century, Chicago had a problem that was killing its citizens: the city was dumping its raw sewage into the Chicago River, which flowed straight into Lake Michigan β the same lake that supplied its drinking water. Typhoid and cholera outbreaks were rampant, and moving the water intake further offshore only bought temporary relief.
The solution was audacious: rather than clean up the sewage, engineers decided to reverse the flow of the river itself. By digging the Chicago Sanitary and Ship Canal β a 28-mile channel cut through solid rock and clay β they lowered the river's downstream elevation enough that gravity pulled it backwards, away from Lake Michigan and toward the Mississippi River basin instead.
The project was so large it drove innovations in earth-moving equipment that were later used on the Panama Canal, and it was named one of the Seven Wonders of American Engineering. It's also a fascinating case study in externalizing a pollution problem β St. Louis, downstream, was famously not amused and sued to stop it.
The Daat's short-form treatment packs the geography, the political drama, and the engineering ingenuity into a tight explainer. A great pick for anyone interested in civil engineering, public health history, or the surprisingly aggressive things cities have done to fix infrastructure problems.
Daily YT Electronics
2026-08-26
Channel: Muhammad Yunus (3540 subscribers)
This project hits a sweet spot for anyone curious about FPGAs, soft processors, or hardware hacking on a budget. The Colorlight 5A-75E is a cheap LED matrix receiver card (typically under $20 on the used market) built around a Lattice ECP5 25F FPGA β a chip well-known in the open-source FPGA community because it's fully supported by the Yosys/nextpnr toolchain. Repurposing these boards has become a rite of passage for FPGA hobbyists.
What makes this video worth watching is the specific workflow: instead of using the open-source toolchain, the creator uses Propel Builder (Lattice's official IDE) to synthesize a RISC-V soft processor onto the fabric. That means walking through IP integration, memory mapping, clock configuration, and finally programming the bitstream onto a board that was never intended to run a CPU. The result is a working RISC-V core on hardware that costs less than a nice lunch.
For viewers, the value is threefold: you learn how to salvage cheap production hardware for custom compute, you see the vendor-supported RISC-V flow (useful context even if you prefer open tools), and you get a concrete example of soft-core CPU deployment on real silicon.
Daily YT Engineering
2026-08-26
Channel: Engineers toolbox telugu (6920 subscribers)
Most videos in today's batch tackle broad topics β how a hydraulic jack works, how a gearbox works β the kind of first-week mechanical engineering material that's been explained ten thousand times. This one goes narrower and, because of that, deeper: it's about the dial indicator, the humble precision instrument that machinists actually reach for every day when they need to measure something to within 0.01mm.
The video promises to break down the internal parts (the rack-and-pinion gear train that converts tiny plunger movement into large pointer rotation), explain how the mechanical amplification achieves that hundredth-of-a-millimeter resolution, and walk through real uses β checking runout on a lathe chuck, trueing up a mill vise, measuring parallelism on a surface plate.
What makes a dial gauge interesting is that it's a purely mechanical analog computer: no electronics, no batteries, just gears and a spring. Understanding how the linkage inside works is a nice bite-sized lesson in mechanical advantage and precision manufacturing. The channel is small (under 7k subs) and the content is teaching-focused rather than clickbait β worth the ten minutes if you've ever wondered what's inside that little round face.
Daily YT Maker
2026-08-26
Channel: Edis Alic - Laserpreneur (2500 subscribers)
This entry from Edis Alic's daily laser project series tackles one of the most visually impressive techniques in the laser cutting world: the living hinge. By cutting a precise pattern of thin, interleaved slits into a flat sheet of rigid 3mm MDF, the material becomes flexible enough to curve and wrap β transforming a stiff panel into a functional, foldable glasses case.
What makes living hinges worth understanding is that they exploit the geometry of cuts to change a material's mechanical behavior without changing the material itself. The spacing, length, and offset of each slit determines the bend radius and how much stress the wood can handle before snapping. Get the pattern wrong and it either won't flex or it'll fracture on the first bend. Get it right and you have a hinge with no moving parts, no fasteners, and no assembly.
The video is also a good look at product thinking for makers β Edis frames the project around something you could actually sell, which forces decisions about material cost, cut time (3mm MDF is fast and cheap), and finished appearance. That's a useful mindset shift from "cool thing I made" to "repeatable product," and it's the same design constraint that shapes real manufacturing.
At roughly 2500 subscribers, this is exactly the kind of small-channel craft content where you get honest, unpolished technique demonstrations rather than sponsored gloss.
Daily YT Welding
2026-08-26
Channel: Liebs (2980 subscribers)
Honest note up front: this batch of candidates is thin. Most are hashtag-spam Shorts from Mukesh Lathe Turner, vague B2B promo clips from mold/factory channels, or an unboxing of a mini Amazon lathe. Liebs' rifler restoration is the only entry that promises real, sustained shop work β so it wins by a wide margin.
A rifler (or rifling machine) is a specialized piece of vintage machinery used to cut spiral grooves inside gun barrels β the kind of tool that rarely turns up outside of firearms manufacturing history or bespoke barrel makers. Getting one operational involves mechanical restoration, understanding of indexing and rate-of-twist gearing, cutter geometry, and coolant/chip management inside a deep, narrow bore. It's an unusual intersection of machining, metallurgy, and firearms engineering that you almost never see on YouTube.
Liebs frames this as the start of a long project, which is exactly the appeal β if you subscribe now, you get to follow the disassembly, diagnosis, and repair of a machine most machinists have never touched. Expect problem-solving around worn ways, drive linkages, and possibly custom-ground cutters. Even this intro clip is worth a look to see what a second rifler looks like in the wild and to bookmark the series before it takes off.
