
Today’s issue: Sending my agent a strongly worded email, importing text files for fun, and the most expensive blog post of all time.


Finally, a TypeScript release we can all be excited about
Usually when we write about TypeScript releases, it takes everything in me to pretend to be excited about things like “inferred type predicates”. Fortunately, in TypeScript 7, which finally came out this past week, there is something we can all get excited about: speed.
A little over a year ago, Anders Hejlsberg announced that the team at Microsoft was porting the TypeScript codebase from JavaScript to Go to make the compiler 10x faster. Fast forward to today and that work finally landed. Now you can see those red squiggles instantly when you open a file. Yay. Here are a few of the notable improvements the Go port unlocks.
Max Parallelization: In TypeScript 7 parsing, type-checking, and emitting file updates are mostly done in parallel. Since this can get a little memory hungry, they included a --singleThreaded flag to opt out on resource-constrained environments.
Better Editor Experience: The language server in version 7 is “more stable” than version 6 as a result of better fuzzing against existing codebases and supports auto-imports, expandable hovers, inlay hints, code lenses, go-to-source-definition, JSX linked editing and tag completions, and more.
Improved Watch Mode: Built on top of Parcel’s file-watcher, --watch mode is now more reliable across platforms, takes up less CPU time, and scales better for large projects.
There is still no programmatic API for version 7, so projects like MDX, Svelte, Vue, and Astro are stuck on version 6 for the time being.
Bottom Line: Roasting TypeScript nerds is one of my favorite activities, but today, we all feast at the table of performance gains thanks to Anders and friends.


Seeing if my agent passes the durability test
Getting agents to work on longer, more complex tasks is the challenge every team is trying to solve right now. Fortunately, Nick Lotz and the team at Orkes wrote an in-depth post about how to build durable agentic loops.
In this post you’ll learn:
If reading isn’t your thing, the TL;DR is that you need a great durable execution engine to do this well. Fortunately, that’s what Orkes does best. Their platform is open and extensible, and lets you build enterprise-ready workflows.

Ditch your scraper. Tabstack extracts structured data and automates the web in one API call, with no browser infrastructure to run. Clean JSON, TypeScript SDK. Built by Mozilla, so your data stays yours.
function safeUpdate(obj, key, value) {
if (!obj.hasOwnProperty(key)) {
obj.key = value;
}
}
const user = {
name: "Alice",
age: 30
};
safeUpdate(user, "country", "USA");

Jarred Sumner finally wrote the Bun 1.4 post he’s been promising for weeks. If it cost $165k in Fable to convert Bun to Rust, how much did this blog post cost?
The Nub team (yes that is what they call themselves 🫠) cracked the code on phantom dependencies in Node.js and wrote about the path to a 5x faster package manager.
The Open Source Pledge has raised over $7m for open source software. Get your company to join the Pledge. [sponsored]
SpaceXAI released Grok 4.5, an “Opus” level model. Cheers to petty king Elon for getting this out the day before OAI released Sol.
Speaking of Sol, OpenAI released GPT 5.6 to us plebes (the “cool kids” got it months ago, or so they’ve told us).
James Long built a custom tool to visually explore OpenCode and created a website that walks you through this journey.
Nicolas Solerieu from Expo wrote a blog about how to apply timeless design principles to improve your AI-driven app design process. [sponsored]
Vercel Labs released a toolkit called native for building native desktop apps. I wonder how hard Andrew Kelley is going to roast their Zig code.
David Wells wrote an article about how to kick off agents via email.
The React team added some new docs on <Suspense />. Personally, I don’t like to share what activates my suspense boundaries, but to each their own.
This one was for the beginners.
function safeUpdate(obj, key, value) {
if (!obj.hasOwnProperty(key)) {
obj.key = value;
}
}
Our bug is that we’re adding a literal key property to our object.
console.log(user.key) // "USA"
In JavaScript, if you want to use a variable as the key of an object, you need to use bracket notation instead of dot notation.
function safeUpdate(obj, key, value) {
if (!obj.hasOwnProperty(key)) {
obj[key] = value;
}
}