Today’s issue: Hacking the React internals, getting gaslit during family game night, and the Flavor Flav AI reveal no one saw coming.
Welcome to #357.
iTerm2 watching me run 'brew install ghostty'
I’ll admit that I was a little surprised to see how many developers were foaming at the mouth when Ghostty 1.0 came out last month.
But hey, I’m trying to kink shame people less in 2025 – so instead of judging, let’s take a closer look at Ghostty and try to understand the reasons for all the hype.
How we got here: Ghostty is a cross-platform terminal emulator created by Mitchell Hashimoto. He’s the founder of HashiCorp and creator of legendary projects like Terraform (tool for managing cloud infrastructure) and Vagrant (tool for managing development environments).
Mitchell left HashiCorp a couple years back and has spent most of his time since working on Ghostty, because that’s the kind of thing you do when you’re a 35-year-old billionaire – apparently.
Combine Mitchell’s track record with a cute ghost logo and a FOMO-inducing private beta phase, and you’ve got some solid ingredients for a developer hype machine. But what makes Ghostty different than other terminals?
Performance: Ghostty is written in blazingly-fast Zig code and aims to provide the fastest startup time, scrolling speed, IO throughput, control sequence throughput, and frame rates.
Features: It supports features at the application level, so things like native GUI, split screen, and key commands just work out of the box. It also has support for programs that run in the terminal like Neovim and graphics applications.
Cross-platform core: Ghostty’s biggest selling point is libghostty
, its cross-platform core that’s also written in Zig. It provides all the functionality for terminal emulation, font handling, and other rendering – but it lives independently from the UI layer. This allows it to act as a platform for developers to build their own terminal UI on top of.
Bottom Line: I can’t wait until I’m in my “billionaire who builds stuff for fun” era.
Me and Gemini teaming up to save the day again
It’s built on the popular Code OSS project and runs on pre-configured VMs on Google Cloud. This allows it to provide a web-based development environment that’s safe, reliable, and fully customizable – just like your local env.
It was created by Google, and it combines a bunch of their services and features to help you build and ship faster:
Code suggestions from Gemini help you generate new code, write unit tests, explain code, and more.
Web and mobile emulators give you a live preview of your full-stack, multi-platform apps across devices.
Templates for frameworks like Next.js, Angular, Astro, React, and Flutter let you spin up a new project instantly.
Workspace sharing lets you share a project with others like you’re sharing a Google Doc.
One-click deploys to Firebase or Cloud Run, or you can spin up your own DB with Postgres, MySQL, and more.
Try spinning up an IDX project for yourself – you’ll be surprised by how powerful it is.
They just launched Neon Authorize, which lets you manage auth directly within Postgres and replace security at other layers of your application.
function reverseString(str) {
return str.split("").reverse().join("");
}
let reversedString = reverseString("Hello, 👋!");
console.log(reversedString);
Simon Willison wrote a long post about things we learned about LLMs in 2024. Personally, I was surprised to learn that Flavor Flav’s entire personality has been AI-generated since 2007 – but I probably should’ve guessed that.
bippy is a toolkit to hack into the React internals, lol.
PostHog co-founder, James Hawkins wrote about how product management is broken, and engineers can fix it. And if that’s not a perfect encapsulation of the PM–engineer relationship, I don’t know what is. [sponsored]
Boardgame.io is an engine for creating turn-based games using JavaScript. Just know that no matter what game you create, my family members will find a way to both cheat and gaslight you about it for hours.
Steve Krouse wrote about what he and his team at Val Town learned from copying all the best code assistants.
Ahmad Shadeed wrote an interactive article on balancing text in CSS. He already wrote about it once a couple years ago, but some of you still refuse to get the message.
CarbonQA provides high-quality QA services that scale. Their US-based testers will break your app repeatedly and do all the manual testing you hate doing yourself. [sponsored]
DongYoon Kang proposed an idea to completely prevent supply chain attacks. Sound too good to be true? Well, could I interest you in a super-fun-and-totally-casual game of Settlers of Catan with my family later?
21st.dev is a community registry of React UI components where you can publish Tailwind & Radix UI components and install components via npx shadcn
.
Allen Pike wrote a quick article about how sometimes magic is just someone spending more time on something than anyone else might reasonably expect. Just something to keep in mind next time this newsletter hits your inbox a few hours later than normal 🙏.
This bug occurs because the split
method treats the string as an array of 16-bit units, not as an array of characters resulting the unexpected output: !�� ,olleH
. By using Array.from(str)
or [...str]
the string is split into an array of actual characters, respecting the surrogate pairs.
Using Array.from
:
function reverseString(str) {
return Array.from(str).reverse().join("");
}
let reversedString = reverseString("Hello, 👋!");
console.log(reversedString);
Using the spread operator:
function reverseString(str) {
return [...str].reverse().join("");
}
let reversedString = reverseString("Hello, 👋!");
console.log(reversedString);