
Today’s issue: A githook psyop, what happens when CEOs get bored and a language that is “basically really very good”.
Welcome to #515.


When your new boss’s wife starts pitching you her startup idea
Bun is officially a Rust project as of Bun 1.4, which fixed over 2,900 issues, made a major jump in Node.js compatibility, and improved memory usage. But now that the Rust migration side quest is over and Jared is sleeping again, this release is getting back to Bun’s original vision: being an all-in-one toolchain for JS/TS.
Even though they advertised it as their “smallest release ever”, the Bun team shipped a bunch of new features that further collapse the tools you need to be productive by providing them directly in the runtime.
Here’s a quick look at your new toys tools:
Bun.Image: Bun now provides a built-in image manipulation tool that’s 1.38× faster than Sharp.
Bun.WebView: Instead of reaching for Puppeteer or Playwright, Bun now has a built-in headless browser implementation. On macOS it uses the system’s WebKit with nothing to install, but it can also drive an installed Chromium / Chrome / Edge browser.
Bun.markdown: There is now a Markdown parser built into Bun that supports GFM extensions, custom rendering callbacks, and a new method that converts Markdown to React.
Bun.cron(): Bun’s cron implementation can run a callback on a schedule, or register OS-level jobs that can survive restarts.
Bun.Terminal: Now you can create interactive terminal applications with Bun’s built-in PTY support, which makes subprocesses behave as though they’re running in a real terminal.
Bottom Line: If this continues, npm’s biggest threat isn’t supply-chain attacks; it’s Jarred Sumner and his army of Claude bots building every package directly into the runtime.


When you combine Gitar and SonarQube and find out it’s the best of both worlds
Code review tools that only use an LLM to find bugs are mostly just guessing. Fortunately, Sonar combines agentic code review with formal verification. Best of all, when it’s done, it fixes your code.
Here’s how it works:
When you create a PR, SonarQube (formal code verification) and Gitar (AI-native) both review your code.
When it finds an issue, it doesn’t just flag it - it generates the fix and pushes it straight to the branch.
It also debugs your CI and makes sure everything stays green.
Try Gitar for free today and don’t just guess and check - get the best of both worlds.

Want AI agents to interact with your website through WebMCP? Take Agility CMS’s 2-minute readiness assessment before you start building.
function makeCamelCase(text) {
const changeCase = import('https://cdn.skypack.dev/change-case')
return changeCase.camelCase(text)
}

Alistair Smith wrote about compiling Gleam applications using Bun. Why? “Basically Gleam is really very good”.
Yagiz Nizipli wrote about how to eliminate branches in C++ loops. If you want to parse URLs yourself, read this, otherwise, go thank our boy for making X.com faster.
Abstract Conf is happening in San Francisco on September 2. Speakers like Theo Browne, David Cramer, and more will teach about core engineering principles that matter more than ever in the age of AI. Register before this Friday. [sponsored]
Tobi read “Git at any scale” and decided to vibe-code his own Rust-based distributed system for Git called walgit. This is going to make me miss when bored CEOs bought race cars, isn’t it?
Jake Archibald wrote about controlling when custom properties are computed in CSS.
Ryan Carniato wrote about how async works in Solid 2.0. Some are saying he’s “solved async”.
Trigger.dev’s chat.agent gives every conversation its own durable machine, so the API route you’d normally maintain just disappears. Build with the AI SDK you already use; turns run without serverless timeouts, survive tab closes, and pause at zero idle cost. Try chat.agent now. [sponsored]
Almog Gavra wrote another article about object storage and how to build “correct” applications without external coordination.
José Valim went in depth on WebSockets vs. Server-Sent Events.
Jeff Dickey created hk, a githook manager built in Rust. As someone who feels like Husky is a psyop, this is good news.
This import statement is actually a dynamic import. When it is first called, it fetches and parses the module asynchronously, which means import() returns a promise. Use await to access the module.
async function makeCamelCase(text) {
const changeCase = await import('https://cdn.skypack.dev/change-case')
return changeCase.camelCase(text)
}