The Weekly Dev's Brew #14 ☕

The Weekly Dev's Brew #14 ☕

TLDR: Microsoft finally acknowledged what we've all known – compiling JavaScript with JavaScript is architectural masochism. Their solution? TypeScript Native with 10x performance gains, proving that sometimes the answer isn't more abstraction layers. Meanwhile, ESLint publishes a retrospective on why documentation doesn't fix bad UX, Chrome ships CSS that might actually solve decade-old layout sins, and Vietnamese coffee entrepreneurs understand vertical integration better than most developers.

TypeScript Native: When Microsoft Accidentally Admits JavaScript Was the Problem

Microsoft dropped TypeScript Native Previews this week, and the subtext is more damning than the headline. After years of developers accepting 60+ second compilation times as "just how TypeScript works," they've delivered a 10x performance improvement by doing the unthinkable: not using JavaScript to compile JavaScript. And no they didn’t use Rust!

The Technical Reality:

# TypeScript 5.8 - The "optimized" version we've been suffering with
$ tsc -p . --noEmit --extendedDiagnostics
Files: 9306
Memory used: 3356832K
Total time: 72.81s

# TypeScript Native (Go-based) - What happens when you use real tools
$ tsgo -p . --noEmit --extendedDiagnostics
Files: 9292
Memory used: 3892267K
Total time: 6.761s

That's not incremental improvement – that's an indictment of the entire JavaScript-as-compilation-target philosophy. The Sentry codebase drops from 72 seconds to under 7 seconds. Your CI pipelines just became 10x more tolerable.

The Architectural Shift:

  • Language Choice: Go with shared memory parallelism (revolutionary concept: using threads)

  • Concurrency Model: Actual parallelism instead of JavaScript's event loop theater

  • Memory Management: Real memory management instead of garbage collection guessing games

Developer Misconceptions Exposed: Most developers have internalized slow TypeScript compilation as "normal." We've built entire development workflows around these artificial constraints – watch mode, incremental compilation, splitting tsconfig files. The native preview reveals how much cognitive overhead we've accepted as unavoidable.

Chrome 137: CSS Finally Addresses Layout Crimes

Chrome 137 shipped with solutions to problems we've normalized as "just CSS things":

CSS reading-flow – Finally fixing the accessibility disaster that CSS Grid and Flexbox created. You know, when your visually perfect layout sends keyboard users on a DOM order mystery tour that would make a maze designer proud.

.grid-container {
  display: grid;
  reading-flow: grid-rows; /* Radical concept: visual order = tab order */
}

.flex-container {
  display: flex;
  reading-flow: flex-visual; /* Who knew this should be default behavior? */
}

Technical Reality Check: The reading-flow property exists because CSS layout methods prioritized visual flexibility over semantic coherence. We've spent years using tabindex hacks and aria-owns attributes to paper over fundamental design flaws in flexbox and grid specifications.

CSS if() Function:


css
div {
  color: var(--color);
  background-color: if(style(--color: white): black; else: white);
}

.dark { --color: black; }
.light { --color: white; }

The if() function evaluates condition-value pairs and returns the first matching result. It's conditional logic in CSS – only took two decades to acknowledge that developers need basic programming constructs in stylesheets. Previously, achieving conditional styling required elaborate CSS custom property chains, calc() abuse, or JavaScript intervention. Now you can express "if this property has this value, use that style" directly in CSS, making theme switching and responsive design significantly cleaner.

Una also made a stellar video about this, if you are more the visual learner.

Quick Sips ☕

ESLint's v9.0.0 Retrospective: A candid self-assessment of their challenging v9 launch. Key insight: "Users often do not have time to thoroughly read release notes or migration guides." The reality is that developers typically install updates first, encounter issues, then seek documentation. Their takeaway? Prioritize automated tooling and migration utilities over extensive documentation.

Pinia Colada 0.16.0 & 0.16.1: The team delivered their biggest release yet, introducing dynamic typed keys and deeply nested object support for query matching. The internal cache structure got a complete overhaul - simpler, faster, and smaller. Key highlight: queryCache.getEntries() now supports partial matching against nested objects, making query invalidation much more flexible. Version 0.16.1 followed quickly with SSR timezone fixes.

Baseline Tooling Integration: Google's Web Platform Dashboard now integrates with browserslist, ESLint, JetBrains IDEs, and VS Code. The tooling ecosystem is finally admitting that browser compatibility decisions should be data-driven rather than vibes-based.

Claude 4: AI Coding Gets Serious

Anthropic released Claude 4 this week, and the numbers suggest we're past the "AI writes Hello World" phase. Claude Opus 4 leads SWE-bench at 72.5% – a benchmark for real software engineering tasks, not coding interview puzzles. Claude Sonnet 4 matches that performance at 72.7%, making it a practical upgrade for everyday use.

What Actually Matters: Both models are hybrid systems offering instant responses for simple queries and extended thinking for complex problems. The extended thinking mode can now use tools like web search during reasoning, creating a feedback loop between research and problem-solving.

Claude Code Goes GA: The terminal-based coding agent is now generally available with JetBrains and VS Code extensions. Claude's proposed edits appear inline in your files, streamlining review within your existing editor workflow.

Coffee Fact of the Week ☕

While developers debate whether 10x TypeScript performance improvements are "good enough," Every Half Coffee secured $3 million in pre-series A funding for their Vietnamese specialty coffee operation. Founded in 2021, they've expanded to 14 stores across Ho Chi Minh City with a 150% growth target for 2025.

Their business model: complete vertical integration from seed selection to service delivery. Meanwhile, the average JavaScript project depends on 47,000+ npm packages, most of which implement functionality that could fit in a single file. Perhaps there's something to be said for controlling your entire supply chain instead of trusting the Commons to remain tragedy-free.

The technical lesson? Sometimes the solution isn't more abstraction layers – it's owning the problem end-to-end.

Happy coding & brewing!

JOIN THE BREW CREW

Don't miss the next episode and stay up to date completely for free