LodeHQ
AI news for people who shipFree, by email

Dev · Wednesday, 26 August 2026 · Issue 88 · 14 stories

Packing, parsing, and Python's last mile

A Rust interpreter drops 17% latency by swapping an enum for a 64-bit word. Python's str.lower() quietly breaks IDNA. And EVE Online finally migrates off Stackless Python 2.7. Representation is the real lever.

Languages & Frameworks

Swap a Rust enum for a packed 64-bit word, and your interpreter runs 17% faster

A 16-byte Rust tagged enum was bloating every Value in the Plush interpreter, wasting half of each array slot on alignment padding. Packing the tag and payload into a single 64-bit word cut that overhead and sped up the interpreter by 17%, no algorithm changes needed. The post walks through NaN-boxing-style tricks and the cache-friendly wins. A good reminder that representation is a whole optimization lever before you touch bytecode.

pointersgonewild.com ↗25 min read at source

Python's str.lower() can quietly break IDNA, opening a security hole

The C library you write against and the spec you think you're implementing are not always the same thing. Python's StringPrep path calls str.lower(), which folds characters using whatever Unicode version the interpreter ships, not the Unicode 3.2.0 rules RFC 3454 actually requires. That mismatch changes how certain domain names encode, and attackers can exploit it for IDN spoofing. The fix deep-links the correct per-codepoint exceptions instead of trusting the runtime default.

sethmlarson.dev ↗3 min read at source

EVE Online finally dumps its 16-year-old Stackless Python 2 runtime

EVE Online has run New Eden on Stackless Python 2.7 since 2010, long past Python 2's end of life. Now the two-decade-old MMO is finally migrating, running `futurize` across 2.4 million lines of code so far, with manual review of roughly 20,000 spots where Python 2 and 3 behavior differs. The payoff, the studio says: better debuggers and profilers, and the largest language speedups in years. Migration is just starting; success is defined as being completely unnoticeable to players.

eveonline.com ↗7 min read at source

`flex-wrap: balance` kills orphaned nav items, ships in Chrome 150

A wrapped flex row often leaves one lone item stranded on a new line, so developers bolt on brittle media queries to force it back. A new `flex-wrap: balance` value, now in Chrome 150, reflows the row so the last line never holds a single orphan. Ahmad Shadeed breaks down the property and shows practical fallbacks with container queries for browsers that don't support it yet.

ishadeed.com ↗9 min read at source

AI-Assisted Development

Stop making TUIs: agents make native GUIs your default

Thomas Ptacek's argument is simple: with coding agents handling the tedious work, the old excuse for shipping yet another terminal tool is gone. He summoning a Markdown viewer, a SageMath frontend with LaTeX output, and an LLM-driven music player as proof that small native apps now cost almost nothing. If you're still reaching for a TUI for a personal tool, you're doing yourself a disservice.

sockpuppet.org ↗15 min read at source

Engineering Practice

All of Go's public module graph, mapped: 2.6M modules, 9.4M edges

Because Go has no central registry, an author rebuilt the whole ecosystem from Google's public module proxy and index. The resulting graph covers 2.6M modules and 9.4M declared dependencies, and reveals who actually holds the ecosystem up. The interactive explorer plus reproducible tooling let anyone tour which modules are load-bearing, how much runs on unmaintained code, and what shape the graph takes.

luislsousa.com ↗19 min read at source

Benchmarks lie. GitHub's playbook for testing LLM systems on real production data

A model can ace a clean benchmark and still fail on the messy cases that actually hit production. GitHub learned this building an LLM to cut false positives in secret scanning, and shares the practices that got it from prototype to deployable. The core move: start with the product decision, not the model, and treat recall as a hard safety constraint rather than a metric to weigh against precision.

github.blog ↗13 min read at source

"Strong" CPUs cheat on their own memory model all the time

Fabian Giesen dismantles the idea that strong and weak memory models describe how CPUs actually behave. In practice nearly every core executes optimistically and "trusts, but verifies," rolling back misordered accesses only when contention is detected. The result: real scalability differences between x86 and ARM are far smaller than the theory implies. A clarifying mental model for anyone writing lock-free code.

fgiesen.wordpress.com ↗7 min read at source

Why tshark chokes on 2.5GB PCAPs, and how streaming fixed it

A tshark wrapper that purred on small PCAPs collapsed at 2.5GB: six to seven hours of processing and repeated OOM crashes. The culprit was a triple read of the file, tshark's single-threaded core, and building full JSON in memory. The fix was consolidating to one query and streaming tshark's output into Go, collapsing the job to about 70 minutes. A sharp case study in why memory-bound designs fail at scale.

robinhayer.dev ↗4 min read at source

TanStack Table's "boring" refactor cut memory 90% and tripled its row ceiling

TanStack Table's biggest v9 performance win came not from its new plugin system but from a quieter behind-the-scenes refactor. Benchmarking shows V9 uses up to ~90% less retained JS heap on million-row tables, pushing the practical ceiling before browsers hit 4GB from ~1.5M to roughly 15M rows. The trick turns out to be a simple, largely downside-free pattern the article argues other libraries could borrow.

tanstack.com ↗12 min read at source

Careers & Open Source

Meta's $400K, $1M+ Retainer Equity Can't Halt Its Self-Made Resignation Wave

After cutting 10% of staff and force-reassigning engineers to data labeling, Meta is now losing senior engineers it never bothered countering before. The company is offering IC6+ staffers $400K-to-$1M+ retainer equity grants to stay, only for engineers to use the number to get Google and Anthropic to outbid Meta. Confirmations suggest the retention bid is already failing.

X Corp. kills Nitter and XCancel with legal threats, not code

After years of fighting Nitter with rate-limits and technical blocks, X Corp. finally reached for a lawyer. On August 24 it sent cease-and-desist letters demanding the permanent takedown of all Nitter instances and its repository, plus the Nitter-derived XCancel. The main instance is offline, development is paused, and the maintainer is seeking legal advice. For anyone who hosted or leant on these privacy front-ends, it's a reminder that a project's survival can hinge on one legal letter.

github.com ↗4 min read at source

You’re caught up.

That was all 14 stories in the 26 August issue.