
Today’s issue: Cl*nkers (derogatory), the dangers of databasing, and COVID-era sourdough yeast.
Welcome to #491.


Getting ready to write about Deno for the 16th time
Ryan Dahl is sick of being vegan, and as much as the man wants to enjoy a juicy steak, he can’t because he’s a man of principle. Relatable… because as someone who’s maybe a little sick of farming content from writing about Deno, I was hoping for a little bit of a break. But this week, when they dropped 2.8, their “biggest minor release ever”, I knew I had to lock in. Principles.
What’s new in 2.8?
While there were some improvements worth mentioning, like 6 new subcommands and TypeScript 6 as the default compiler, most of the changes fit into three buckets: Node compatibility, Web API compatibility, and fixing npm.
registerHooks, which allows you to customize module loading at runtime.OffscreenCanvas and letting you take advantage of WebGPU with the addition of the web’s Geometry Interfaces.npm: With improved support for workspaces, new ways to audit packages, and deno install now defaulting un-prefixed packages to npm, it’s clear “fixing” npm has become much more of a focus than replacing it.Bottom Line: Deno 2.8 is a meaningful step forward for the JavaScript ecosystem, but when Deno (and Bun) finally achieve their goal of being a “drop-in replacement for Node,” are we going to look back and think we’re in a much better place than when we started? I sure hope so.


When you catch a slow release before you get a 1-star review
You accidentally shipped a slow release on Tuesday, but you don’t know about it until Friday when you start getting bad reviews in the App Store.
Expo Observe closes that loop to hours. Ship in the morning and see by tonight whether the app got faster, slower, or worse for any specific route, device, or update version. No instrumentation hooks, no extra dashboards to babysit.
When something regresses, hit “Handoff to AI” for a written hypothesis with code pointers. Or pipe the CLI output into Claude and let your agent draft the fix while you sleep.
Open beta now. Free up to 10k MAU for three months.

Armin Ronacher wrote about why we should call agents “clankers”. We all know he’s not invited to the cookout after the robot uprising.
The React Aria team just released version 1.18.0, which has new features for Calendar like multiple date selection, updates to Slider that make it easier to style, and some sourdough yeast Devon had leftover after COVID.
Vandana Verma Sehgal from Snyk is doing a live workshop June 4 on MCP security. You’ll learn how to avoid MCP failure modes like prompt injection, excessive permissions, unsafe tool execution, and context leakage. [sponsored]
Nolan Lawson makes the case that LLMs don’t have to be slop cannons and that you can use them to write better code more slowly.
If you combine Elm’s architecture, Effect’s type safety guarantees, and TypeScript, you get the most pretentious front end framework of all time foldkit.dev, “the front end framework for correctness”.
Callstack made a custom coding model for React Native. It knows framework conventions and cross platform details, but stops working if you call it a cl*nker.
Clerk added Application Logs to their dashboard so you can track things like sign-ins, sign-ups, user updates, organization changes, billing events, and more. [sponsored]
Andrey Sitnik (the author of postcss and autoprefixer) wrote a helpful article on how to stop burning tokens teaching your coding agent how to use pre-commit hooks.
Sunkanmi Fafowora dove into the age-old problem of styling checkmarks.
Convex made a video on data access patterns for modern web applications and the architectural tradeoffs around row-level security. [sponsored]
Astro jumped on the “rewrite it in Rust” hype train and overhauled their markdown processor in version 6.4.
Nanda Syahrasyad wrote a step-by-step guide on how to build a key-value database from scratch. Read at your own risk because when front end devs try and database, it does not end well.