
Today’s issue: npm makes a breaking change, a win for the Vuebies, and paying homage to 4 lines of code.
Welcome to #495.


Choking down as many Fable 5 credits as I can before June 23
Four days after frantically warning the world to stop building AI because it’s becoming too powerful and dangerous (again), Anthropic dropped Claude Fable 5: a Mythos-class model they were able to “make safe” for us normies 🙇♂️.
I assume they chose to name it Fable because Dario is a real-life incarnation of The Boy Who Cried Wolf, except he also owns the wolf and charges the villagers billions of dollars to use it.
Fable is just Mythos with a bunch of safety classifiers bolted on, so any time a task touches cybersecurity, bio/chem, or distillation, your prompt gets silently handed off to Opus 4.8 instead.
Lots of developers are complaining that this feels like another example of Anthropic’s overly performative “terrorism-as-marketing” strategy. But even with the training wheels, it’s clear that Fable 5 is the real deal (for the most part). Here’s what people are saying:
Bottom Line: Maybe Dario was hoping he could convince everyone to “pause” AI research long enough so Anthropic could lick their wounds and burn slightly less cash ahead of their IPO. But he should’ve known that in the prisoner’s dilemma, it’s always the smart move to defect.
Sadly, the rest of us are also the prisoners who are just along for the ride at this point. But hey, at least Fable 5 was able to hit 80.3% on SWE-Bench-Pro.


Me finding out I don't have to maintain our e2e test suite anymore
QA Wolf built a self-directed agent that plans its own approach, explores your app autonomously, then gives you a detailed map of how your product really works.
Just prompt it to map out your app, and it will get started:
Try it out for free to see it in action.

Datadog made a guide for frontend testing best practices that covers creating and maintaining tests, CI/CD, and testing private internal applications.
function Animal(name, type) {
this.name = name;
this.type = type;
this.age = 0;
}
Animal.prototype.birthday = function () {
this.age++;
};
const winston = Animal("Winston", "Dog");

George Zahariev wrote about how to do pattern matching in JavaScript using Flow. TIL people are still using Flow.
Apple announced container, a tool for running containers on your Mac.
Dominic Gannaway is already rethinking TSRX, getting rid of implicit returns and making it look a lot more like JSX but also somehow more like Angular?
The Sentry team wrote a detailed walkthrough on routing your AI SDK spans into Sentry without ripping out OpenTelemetry. [sponsored]
Hayden Bleasel just released version 1.8 of files-sdk, which gives you one API to search, monitor, and operate on remote file systems like S3 or R2.
The GitHub team is working on npm version 12 to fix some of the security issues in the ecosystem. Unfortunately, it also includes breaking changes.
Christian and Cosmin created Maizzle, a framework that lets you build email templates with Vue and Tailwind. Let the Vuebies rejoice.
Only idiots write manual tests - modern engineering teams like Notion, Dropbox and LaunchDarkly use Meticulous to maintain e2e UI tests that cover every edge case of your web app. [sponsored]
Lauren Tan released Noodle a skills-based agent orchestrator that “runs itself”. If you can’t get it to work, it’s likely a skill issue (sorry).
Expo figured out how to talk to JSI in Swift. It sounds similar to what got me banned from the Eras Tour.
function Animal(name, type) {
this.name = name;
this.type = type;
this.age = 0;
}
Animal.prototype.birthday = function () {
this.age++;
};
const winston = Animal("Winston", "Dog");
Inside our Animal constructor function, we’re relying on JavaScript to create a this object for us. But constructor functions only get that new object when we invoke them with the new keyword.
Without new, this will either be undefined in strict mode or point to the global object in sloppy mode. Either way, winston won’t be the animal object we wanted.
function Animal(name, type) {
this.name = name;
this.type = type;
this.age = 0;
}
Animal.prototype.birthday = function () {
this.age++;
};
const winston = new Animal("Winston", "Dog");