Haz

@haz.dev

Co-founder @ariakit.com. Ex Automattic, WordPress. Posts about Design, JS, CSS, a11y. Neurodivergent, dad.

I don't want to pay for SaaS anymore. I want to buy a license to the source code so I can host the software myself and customize it exactly the way I want (using AI agents). If I need a feature in your software, I can just edit the code to add it.

AI is really bad at design, even Claude. But GPT models are painfully worse. Even when you're iterating, they're more likely to make suboptimal design decisions unless you guide them down to the tiniest detail. Claude (even Opus) will at least get *some* of those tiny details right.

I remember being super excited to share my new GitHub/npm projects, even the small ones. Now that AI has taken all the effort out of it, sharing doesn't feel the same. Anyway, here's a small project I spent a few Astra tokens on: github.com/diegohaz/oxl...

GitHub - diegohaz/oxlint-plugin-comment-reflow: Syntax-aware comment wrapping and safe trailing-comment placement for Oxlint.

Syntax-aware comment wrapping and safe trailing-comment placement for Oxlint. - diegohaz/oxlint-plugin-comment-reflow

github.com

My son made this drawing. He wants to know how many seconds it took you to figure out which character it is.

Colored badges that automatically adapt to any background color (CSS mix and relative color syntax). I'm back to UI design work this week. Inspiring posts incoming.

Four rounded panels labeled “Offset,” “Inverted,” “Brand,” and “Success” compare Plain, Brand, and Danger pill-button styles across dark gray, light gray, blue, and green backgrounds.

HTML forms are so broken. With every other element, you can do this: <div id="foo"> div⁠.⁠id // "foo" Forms work the same way too: <form id="bar"> form⁠.⁠id // "bar" But then: <form id="bar"> <input name="id"> form⁠.⁠id // the input element 🤡

The more I use other component libraries, the more convinced I am that Ariakit Components are necessary. We get so many details right, and the flexibility is unmatched.

Package statistics panel showing 1,157,131 weekly downloads with a rising purple trend chart, verified version 0.4.37, MIT license, last published 6 days ago, and four collaborator avatars.

Saw the eclipse today in León, Spain. My second totality, and it was even better than the first. I tried to capture it on camera, but there's simply no way to reproduce what you see. You either get a great close-up of the sun or a great shot of the surroundings with a tiny sun.

Ariakit has hundreds of component tests duplicated across happy-dom and Playwright. happy-dom is 6× faster, so humans and agents use it for quick feedback during dev. Playwright is authoritative and runs once when each task is complete. This setup has sped up development. Highly recommend it.

Design has become such an important skill these days. No matter how intelligent models become, we've evolved over 100s of thousands of years to detect nuance, intent, emotion. Theory of mind. We have a biological advantage here. That's why AI will never be good at Design.

We've made so many improvements to @ariakit.com components over the past 3 months. I'm especially excited about the performance gains. In the next version, the new ComboboxSelect component will be twice as fast as the current Combobox + Select combination used to build selects with search fields.

Ariakit React just hit 1M weekly downloads on npm 🎉 We're just getting started. Launching something big in September/October.

Weekly Downloads metric showing 1,084,779 downloads, with a purple sparkline trending upward despite several dips.

If you're already managing DNS on Cloudflare, consider transferring your domains there. I just saved $160/year by moving a few domains from GoDaddy to Cloudflare.

Due to the growing number of supply chain attacks on OSS, we've limited PRs to maintainers only. But that doesn't mean contributors don't get credit. In fact, they get even more credit now by:

I don't know if it's just me, but I often struggle with walls of text that lack code examples when trying to understand code decisions. That's why I use this custom instruction in ChatGPT. It really helps me follow its line of thinking during the session and in the final output.

A settings interface for Custom instructions prompting an AI to always include code examples.

We just removed .nvmrc from Ariakit and let pnpm manage Node.js too. If your project already uses pnpm, you may not need a separate Node version manager. Here’s the migration:

Terminal output showing the successful execution of the pnpm i command in the ariakit repository, adding node version 24.18.0

I started watching Peaky Blinders on Netflix and realized I don't understand English at all. Without subtitles, I can't understand even 20% of what they're saying. It's like watching The Boys except everyone's Butcher. Send help!

If you're using jsdom with Vitest, consider switching to happy-dom instead. It's much faster, but it comes with one caveat: its DOM spec coverage isn't as extensive as jsdom's. That's why I was using jsdom. But there's a better approach...

Console output comparison showing test duration dropping from 46.8 seconds with jsdom to 20.8 seconds with happy-dom

After spending 60% of my weekly limit in 2 days on Claude Max, I can confidently say that Codex/GPT-5.5 is significantly more reliable than Opus 4.8. The new workflow feature is fantastic. It spawned 300+ agents and generated 130 reports on a large codebase, most valid.

I’m testing the ChatGPT app on iOS. I can connect to my VPS over SSH, which is nice, but it doesn’t support worktrees, so I can’t really parallelize multiple tasks. How are you all handling this?

Not gonna lie, I love Astro, but the Astro/Cloudflare migration from v5 to v6 has been the most painful one I've ever gone through, even with help from Opus 4.7 and GPT 5.5. Am I the only one?

Best decision I made while working in the Codex app was archiving a chat as soon as the work is finished. You can still recover it if needed (I needed once), but seeing only my active chats in the UI really helps reduce mental overhead. Highly recommend.

I've generally avoided posting about AI on Bsky. I think that's because there was a lot of negative sentiment around AI here early on. Is that still true? Is it okay to talk about AI here now?