Tailwind laid off 75% of their engineering team this week. Adam Wathan said they had six months of runway left before making the call. The reason? AI made their product less essential — LLMs can now generate and explain Tailwind classes better than their docs could sell. It's a stark reminder that disruption isn't just about who writes the code. But enough doom and gloom — this week I've also got a CSS deep dive, practical JavaScript tutorials, and some genuinely useful learning resources. Here's what's worth your time.
And please share some love this weeks sponsors:
📖 Featured
"We Had Six Months Left" — Adam Wathan on Tailwind's AI Crisis (30 min)
The Tailwind creator gets candid about what happened. Revenue dropped 80%, and it wasn't because people stopped using Tailwind — it's because AI can explain and generate Tailwind code better than their docs could sell. Essential listening for anyone building developer tools.
CSS Grid + Flexbox Mastery: Build Responsive UIs Faster (29 min)
A comprehensive walkthrough of modern CSS layout. Covers when to use Grid vs Flexbox, common patterns, and practical examples. If you've been meaning to level up your layout skills, this is a solid deep dive.
Stop Overengineering: How to Write Clean Code That Actually Ships (41 min)
Hard-won lessons on keeping code simple. The author spent years writing "brilliant" code that was impossible to maintain. This is the antidote to premature abstraction.
Streaming JSON in Just 200 Lines of JavaScript (5 min)
A minimal implementation of streaming JSON parsing. Great for understanding how streaming works under the hood, and useful if you're building anything that handles large JSON payloads.
Future CSS: :drag (and Maybe ::dragged-image?) (4 min)
CSS-Tricks covers upcoming drag-and-drop styling capabilities. Finally, native CSS support for styling elements while they're being dragged. Worth knowing about for future projects.
Designing Type-Safe Sync/Async Mode in TypeScript (5 min)
A clever pattern for APIs that need to work both synchronously and asynchronously. If you've ever struggled with this problem, this solution is elegant.
The Concise TypeScript Book (Free)
A comprehensive, community-maintained TypeScript reference. Good for both learning and as a quick lookup when you need to remember how something works.
When React Starts Acting Like jQuery (6 min)
How to spot (and fix) anti-patterns that turn React code into jQuery-style DOM manipulation. If you've inherited a React codebase that feels wrong, this might explain why.
LLMs Have Burned Billions But Couldn't Build Another Tailwind (5 min)
The counterpoint to the Tailwind doom: AI can use Tailwind, but it couldn't create Tailwind. A thoughtful piece on what AI actually disrupts versus what still requires human insight.
💡 Growth
New Grad to Principal Engineer (IC8) at Meta (30 min)
A detailed career story covering calculated risks, maximizing luck, and building visibility. One of the most thorough principal engineer retrospectives I've read.
Stop Forwarding Errors, Start Designing Them (5 min)
Most error handling is just passing errors up the stack. This piece argues for intentionally designing your error strategy. Small shift, big impact on code quality.
I'm Tired (Reddit Discussion)
An honest thread about developer burnout that resonated with hundreds. Sometimes the most valuable content is just knowing you're not alone.
We Didn't "Align" — We Argued (and Shipped a Better System) (2 min)
A short piece on why productive disagreement beats artificial consensus. Software projects fail because people quietly disagree, not because they argue.
🛠️ Tools
SVAR React v2.4: UI Library with Fast Datagrid & Gantt Chart
Extended UI library with performance-focused components. If you need data grids or Gantt charts in React, worth checking out.
Cereb: Lightweight Reactive Streams for Gesture Recognition (1.7KB)
Tiny library for handling gestures in JavaScript. Useful for touch interfaces or any project where you need gesture detection without a heavy dependency.
iCloud Photos Downloader
CLI tool to download your iCloud photos locally. Hit the HN front page — clearly a lot of people want their photos out of iCloud.
TINKER: Open-source Toolbox Desktop App
A collection of developer utilities in one desktop app. JSON formatting, encoding/decoding, regex testing, and more.
AudioQ: Multi-channel Audio Queue for Browsers
Manage multiple audio channels in the browser. Useful for games, music apps, or anything with complex audio requirements.
Cowork by Anthropic
Claude Code capabilities in the desktop app. Give Claude filesystem access, bash, and MCP server connections for agentic workflows.
▶️ Videos
Every Project Needs This NEW TanStack Library — Web Dev Simplified (10 min)
TanStack Pacer is the newest addition to the TanStack ecosystem. Kyle covers what it does and why you might want it in your projects.
"JavaScript Isn't a Good Tool for the Backend" — Syntax (10 min)
Hot take from Dimitri Metropolis that sparked debate. Scott and Wes dig into the argument. Whether you agree or not, it's a good discussion.
DOOM Running in TypeScript Types — Syntax (10 min)
Scott and Wes interview Dimitri Metropolis about running DOOM purely in TypeScript's type system. Wild, impressive, and surprisingly educational about what TypeScript can actually do.
Has AI Killed Tailwind? — Kevin Powell (10 min)
Kevin's breakdown of the Tailwind situation with context on what happened and what it means for CSS frameworks and developer tools.
The First Government Website to Not Suck? — Design Course (10 min)
Gary Simon reviews a government website that actually has good UX/UI. Rare enough to be newsworthy, with lessons for your own projects.
Why Frontend is HARDER for AI Than Backend — Matt Pocock (10 min)
Matt explains why AI struggles more with frontend work and introduces tools like Playwriter that are trying to bridge the gap.
⚡ Quick Links
Don't Fall Into the Anti-AI Hype (6 min) - Antirez (Redis creator) pushes back on doom narratives
Apple Picks Google's Gemini to Power Siri (6 min) - The biggest AI partnership of the year
CLI Agents Make Self-Hosting Fun (6 min) - Golden age of home servers thanks to AI tools
JavaScript Frameworks Heading into 2026 (8 min) - Annual framework landscape review
I Just Learned TypeScript and I Was Wrong About It (Reddit) - A convert's perspective
Azbuka: Treating CSS Like a Real Programming Language (5 min) - Interesting approach to CSS tooling
12 Architectural Concepts Developers Should Know (6 min) - Quick refresher on system design
YAML? That's Norway Problem (5 min) - The famous YAML Norway bug explained
Rich Hickey (Clojure Creator) on AI (5 min) - Thoughtful take on the AI moment
Old School Tech: Animate the Classic DVD Logo (4 min) - Fun CSS/JS tutorial
How to Create a Roller Coaster Builder (6 min) - React Three Fiber project walkthrough
This Week in Rust 633 (5 min) - Latest from the Rust ecosystem
We Might Have Abandoned Stack Overflow Slower If It Wasn't Toxic (5 min) - A retrospective on SO's decline
Linus Torvalds on AI Slop (5 min) - "NOT going to be solved with documentation"
LLVM: The Bad Parts (6 min) - Where LLVM could improve, from its maintainer
Security is a Developer Experience Problem (6 min) - Docker on shifting security left
AWS Weekly Roundup (4 min) - Lambda for .NET 10, Client VPN quickstart
Kubernetes v1.35: Exec Plugin Allowlist (4 min) - Security improvements for kubeconfig
Rust Compile-Time Reflection (Experimental) (5 min) - New nightly feature
That's it for this week. Reply if you have something I should include next time.
Until next week,
Niall