
Happy Monday! ☀️
Welcome to the 264 new hungry minds who have joined us since last Monday!
If you aren't subscribed yet, join smart, curious, and hungry folks by subscribing here.

📚 Software Engineering Articles
🗞️ Tech and AI Trends
👨🏻💻 Coding Tip
Use parking_lot mutex and Arc for memory-safe concurrent patterns
Time-to-digest: 5 minutes

In 2017, Yelp chose Flow over TypeScript for its typechecker. But by 2021, the landscape had shifted: TypeScript's DefinitelyTyped had vastly more packages, the Flow team refocused on Facebook's internal needs, and TypeScript proved more stable long-term. Starting in early 2022, Yelp began scoping a migration of its entire monorepo—over 1.4 million lines of code spread across 570+ packages.
The core challenge: migrate gradually without losing type safety or breaking the development experience. A single rewrite was infeasible. A code freeze was unrealistic. So Yelp had to run Flow and TypeScript side-by-side in production, converting one package at a time while maintaining complete type integrity across the entire system.
The challenge: Converting a million-line Flow monorepo to TypeScript without ever breaking typechecking or sacrificing type coverage.
Implementation highlights:
Automated tooling backbone. Used open-source
flowtsand later Stripe'sflow-to-typescript-codemodfor bulk conversions, augmented with custom codemods for edge cases. Manual effort was still required, but automation saved tens of thousands of engineer hours.Bidirectional type compatibility. Converted TypeScript packages back to Flow-compatible headers using
flowgen, allowing Flow code to safely import newly migrated packages. Yelp started with deepest dependencies and worked upward to avoid type integrity gaps.Monorepo-level tooling. The Lerna monorepo structure enabled single-PR toolchain updates across all JavaScript code, rather than hundreds of individual package repos. Each package was small enough (a few thousand lines) to migrate in a day or two.
Extensive dogfooding. Webcore and Design Systems converted ~90 foundational packages before launching to feature teams. This exposed toolchain issues early and built confidence in the new developer experience.
Data-driven unblocking. Built graph analysis tools that scored packages by their "importance"—prioritizing conversions that would unblock the most downstream packages. Used visualizations to coordinate the final push to completion.
Results and learnings:
Type coverage improved significantly. Overall type coverage rose from 83.15% (Flow) to 96.44% (TypeScript), with only ~6,000
@ts-expect-errordirectives across 1.4M SLoC.Developer experience won converts. 82% of surveyed engineers reported increased productivity in TypeScript, with 45% calling it "significant." LLMs also perform better on TypeScript code due to larger training datasets.
Preserved trust through consistency. Only one brief typechecking outage occurred during the three-year-seven-month migration. Never compromising type safety meant teams stayed confident in their tools—the opposite of migrations that accumulate type-ignore comments like technical debt.
The real lesson: a gradual migration with polished tooling and extensive communication beats any quick rewrite. Yelp's three-year journey turned what could have been a painful flag day into a steady conversion that teams eventually embraced. Just don't rely on 2023-era LLMs to do the heavy lifting—they're still better at pretending to fix your types than actually fixing them.

ARTICLE (math beats megabytes)
Saving another 100TB of RAM with math (and Rust)
ARTICLE (ai modernizes the monolith)
How To Prepare For AI-Driven Code Modernization Projects
ARTICLE (agents need guardrails)
Brownfield agentic engineering
ESSENTIAL (just ship the thing)
Grit your teeth and ship it
ARTICLE (devkit keeps evolving)
What's been going on in w64devkit the past year
ARTICLE (models eat your stack)
What Happens When the Model Eats the Stack? Rethinking the Research Agenda for Data Agents to Withstand the Bitter Lesson
ARTICLE (test postgres fast)
pgsql-test: Real Postgres Testing for Faster Development Loops
Want to reach 200,000+ engineers?
Let’s work together! Whether it’s your product, service, or event, we’d love to help you connect with this awesome community.

Brief: OpenAI released GPT-6 Sol and Luna, more affordable models trained with Astra's methods, cutting API prices by 50% compared to their GPT-5.6 predecessors.
Brief: Anthropic launched Claude Opus 5.5, delivering 40% lower costs and 30% faster output while matching Claude Fable 5.1 performance on most tasks.
Brief: Grok 4.7 improves coding and reasoning capabilities with better self-verification while maintaining the same price as Grok 4.6.
Brief: Anthropic's Claude AI discovered a novel enzyme system with CRISPR-like properties in bacteriophage DNA by autonomously analyzing massive sequence databases.
Brief: Cloudflare now supports HTTP Vary headers in Cache Rules, letting customers control how the company handles request header variations to improve cache efficiency across all plans.

This week’s tip:
Memory-Safe Concurrent Patterns with Arc and Parking Lot
Replacing std::sync::Mutex with parking_lot::Mutex and leveraging Arc for shared ownership eliminates poisoning semantics while reducing lock contention in high-throughput concurrent systems, critical for building performant server applications.

Wen?
When building low-latency services where Mutex poisoning or lock fairness becomes a bottleneck
When implementing lock-free read patterns where readers vastly outnumber writers
When migrating from std synchronization primitives shows measurable contention in profiling data
Sometimes you have to travel a long way to find what is near.
Paulo Coelho


That’s it for today! ☀️
Enjoyed this issue? Send it to your friends here to sign up, or share it on Twitter!
If you want to submit a section to the newsletter or tell us what you think about today’s issue, reply to this email or DM me on Twitter! 🐦
Thanks for spending part of your Monday morning with Hungry Minds.
See you in a week — Alex.
Icons by Icons8.
*I may earn a commission if you get a subscription through the links marked with “aff.” (at no extra cost to you).




