Today’s issue: Claude Code starts dating someone new, a browser breaks our hearts, and we go to a petting zoo with Hindley-Milner.
Welcome to #417.
Prepare to be transformed
If your childhood was anything like mine, then you probably remember tagging along with your stepmom to visit the local “alchemist” who claimed he could turn your family’s scrap metal into gold.
Looking back, I’m 90% sure that guy was just a drug dealer, but the new Alchemy IaC library is out to prove that it is possible to turn simple TypeScript functions into pure infrastructure gold ✨.
Here’s how: Instead of wrestling with Terraform’s 1,000-line config files and bespoke DSLs, Alchemy lets you define and deploy your infrastructure with nothing but good ol’ TypeScript. Your infra becomes simple async functions you can await
, and state lives right in your repo as JSON.
This means you can do fun things like spinning up a Cloudflare Worker with one function call:
import { Worker } from "alchemy/cloudflare";
// inside alchemy.run.ts after `await alchemy("my-app")`
const worker = await Worker("api", {
entrypoint: "./src/api.ts",
});
Here are a few more highlights:
TypeScript-native – No YAML, HCL, or config boilerplate. Your infra is just pure ESM-native TS code you can run anywhere (Bun, Node, even the browser).
Embeddable & extensible – Resources are functions, so you can roll your own or have AI scaffold them for you.
No lock-in – State is just plain JSON files in your repo, not stuck behind a SaaS tool’s dashboard paywall 🙏.
Bottom Line: It’s still early days for Alchemy, but if it really will let us transmute TypeScript into full-on cloud infrastructure, I promise I’ll go extra hard on my Edward Elric cosplay at next year’s Comic Con.
![]() ![]() ![]() ![]() |
Me realizing our ‘test suite’ is just a TODO comment from 2021
…with zero effort from your team.
QA Wolf built and automated 1,300 tests for Meow Wolf’s mobile app in 3 months, saving 40+ hours of testing time per release cycle (watch case study).
And they can do it for your team too. Here’s how:
Their engineers build out a full outline of your app, with test cases prioritized by need and value
They write out tests in plain English for you to review and approve
They run all your tests in 100% parallel, and they maintain all tests as your product changes
Get a personalized demo for your team – and see why Napster’s Engineering Director said, “It would take 4 people to build this much coverage, and they’d never do it this quickly.”
They provide Web RUM and Mobile RUM that shows you which issues matter based on actual user impact, not just how many times they happen.
function getNumber() {
return new Promise((resolve, reject) => {
setTimeout(() => {
const randomNumber = Math.random();
if (randomNumber > 0.5) {
resolve(randomNumber);
} else {
reject("Number is too low");
}
}, 1000);
});
}
async function printNumber() {
const number = await getNumber();
console.log("The number is:", number);
}
printNumber();
Claudia is a free and open-source desktop companion app for Claude Code that gives you a GUI for creating custom agents, managing your projects, and tracking your token usage. Thankfully, it looks a lot more helpful and a lot less damaging to society than the other “AI companion apps” that have emerged recently.
Astro 5.13 comes with experimental improvements to environment variables, experimental Chrome DevTools workspace support, and more.
Clerk just announced their M2M Tokens Public Beta – designed specifically for authenticating requests machine-to-machine within your backend infrastructure, so all your services can securely communicate. [sponsored]
The Amp team wrote about how they evaluate new models. Turns out, most LLMs are closer to passing the Turing Test than Peter Thiel.
Typechecker Zoo walks you through creating minimal implementations of the most successful type systems of the last 50 years. Just in case you ever wanted to get up close and personal with Hindley-Milner.
CodeRabbit’s free VS Code extension gives you advanced-level AI code reviews right in your editor. It understands the context of your whole codebase and gives you line-by-line feedback with one-click fix suggestions you can implement instantly. [sponsored]
HMPL.js is a small template language for displaying UI from server to client that takes a different approach to htmx. And by “different” we mean “less fedoras.”
Armin Ronacher wrote about how your MCP doesn’t need 30 tools, all it needs is love code.
Monitoring Modern Infrastructure is a free ebook created by the Datadog team that provides multiple techniques and tools for systematically monitoring your entire infrastructure at scale. [sponsored]
Biome v2.2 comes with a new JS formatter operator line break, more intelligent scanner, and more.
Gilles Ferrand wrote about NX state management architecture.
Ben Werdmuller wrote about why he’s all-in on Zen Browser after being burned by Arc’s pivot. Because it’s better to have browsed and lost, than to have never browsed at all.
The printNumber
function is not handling the promise rejection. To fix this, you can add a try/catch
block around the await
statement:
function getNumber() {
return new Promise((resolve, reject) => {
setTimeout(() => {
const randomNumber = Math.random();
if (randomNumber > 0.5) {
resolve(randomNumber);
} else {
reject("Number is too low");
}
}, 1000);
});
}
async function printNumber() {
try {
const number = await getNumber();
console.log("The number is:", number);
} catch (error) {
console.log("Whoops:", error);
}
}
printNumber();