
🚨 We just launched the ui.dev Black Friday Sale and it’s the biggest discount we’ve ever offered: 50% off react.gg, query.gg, and all our other courses. Get it while it’s hot.
Today’s issue: Fixing bugs during Dancing with the Stars, the only way to stop the Shai-Hulud attacks, and using “the strange math of infinity” to survive your relatives during Thanksgiving.
Welcome to #444.


When my uncle asks me to fix his vibe-coded crypto betting app at Thanksgiving
As you gather ‘round the dinner table with family and frenemies on Thursday, be sure to pause and give thanks for the bounteous harvest of coding agents we’ve been blessed with in 2025 🫃.
Yes, they all start to feel the same after a while – but when AWS launched Kiro back in July, it immediately stood out for a couple reasons:
Wtf does that mean? TLDR: whenever you give it a prompt, Kiro first generates a full spec with user requirements, acceptance criteria, architecture, and tech stack. Once you approve the spec, it breaks it down into specific tasks, delegates those tasks to agents, and then starts writing code.
This might feel like overkill for solo projects, but for large teams working on complex software, SDD (spec-driven dev) might be the most scalable way to work with agents – without having them hallucinate a bunch of slop all over your huge existing codebase.
And Kiro just doubled down on that philosophy even more with last week’s GA launch. Here are the highlights:
Property-based testing to check spec correctness – Kiro now extracts general behaviors (aka “properties”) from your requirements and generates hundreds of random test cases to check your code and see if the implementation actually matches your intent.
Rewind changes with checkpointing – Kiro snapshots every agent action, so you can roll back any number of steps without losing progress or burning additional credits.
Kiro CLI + custom agents – Brings the same agents and steering files from the IDE into your terminal, and it lets you create specialized agents that only know your backend patterns, component library, or whatever small slice of your system you want them to focus on.
Bottom Line: If SDD really does let agents just work inside large, real-world codebases, then AWS might’ve just created the holy grail for enterprise software teams (again).
And if not, I’m sure the hosting startups will figure out how to slap a sleek UI on top and sell it back to us at a healthy markup soon.


How it feels writing my entire backend with TypeScript
You can use it to spin up a fullstack React + TanStack app with the npx command, create-start-app@latest.
Then, you can install the Convex package with npm install convex @convex-dev/react-query and get a full production-ready backend with a reactive database and lots more:
Check out the docs – and join the TanStack Start revolution.

Their next-gen code editor is shockingly fast because it’s written from scratch in Rust (not Electron), and it’s designed for easy collaboration with AI and other humans. Try it for free.
How can we improve this code?
async function completeCheckout(orderId) {
await updateAnalytics(orderId);
const order = await processOrder(orderId);
return order;
}

Shai-Hulud is wreaking havoc on the npm ecosystem again with a new supply-chain attack that’s infected over 27k GitHub repos via a fake Bun runtime. Somebody needs to teach Jarred Sumner how to do that weird little desert walk that Timothee Chalamet does in Dune, so we can avoid another one of these.
C1 by Thesys is a Generative UI API that augments LLMs to respond with interactive UIs like charts, forms, cards, slides, and reports instead of just text. It makes building AI frontend 10x faster and 80% cheaper, and is fully customizable and enterprise ready. [sponsored]
Just in time for Black Friday, Lazar Nikolov wrote about how to get instant load times using the Speculation Rules API.
Brian Hogan wrote about how Markdown could be holding you back when writing technical content. I don’t appreciate you subtweeting me like that after 444 MD-fueled Bytes issues, Brian.
The engineering leader AI imperative is a tactical guide created by Augment Code that shows how CTOs at Drata, Webflow, and Tilt are rolling out AI across their eng teams to boost PR velocity by 30% and get real productivity gains. [sponsored]
Will Larson explained why he believes good engineering management is a fad. A fad that was completely missed by every manager I’ve ever had, unfortunately.
TkDodo wrote about using Omit for Discriminated Unions in TypeScript.
Gildas Garcia wrote a simple tutorial on how to use RSC with Parcel. If only he had written a simple tutorial for Jon M. Chu on “how to cast actors in musicals who have sung before.”
Rocket is pioneering Vibe Solutioning, turning prompts or Figma designs into production-ready web and mobile apps. Use / and @ commands to execute tasks with precision and context, making repetitive workflows fast, accurate, and effortless. [sponsored]
use nemo is a Vite plugin that lets you create custom React-like directives in your JavaScript and TypeScript code. Just remember to not touch the butt.
Lalit Maganti wrote about why fixits are good for the soul. I look forward to seeing this expanded into a new Chicken Soup for the Soul book that my mom can read during the commercials of Dancing with the Stars.
Joseph Howlett wrote a heady piece on a new bridge that links the strange math of infinity to computer science. I’d recommend reading it on Thanksgiving morning, so that you can use the resulting existential crisis to distract yourself from the political debates your incel cousin is trying to bait you into.
How can we improve this code?
async function completeCheckout(orderId) {
await updateAnalytics(orderId);
const order = await processOrder(orderId);
return order;
}
Because processOrder doesn’t depend on the result of updateAnalytics, we can parallelize the two invocations.
async function completeCheckout(orderId) {
const [_, order] = await Promise.all([
updateAnalytics(orderId),
processOrder(orderId)
])
return order;
}