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.
Haz
@haz.dev
Co-founder @ariakit.com. Ex Automattic, WordPress. Posts about Design, JS, CSS, a11y. Neurodivergent, dad.
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.
Published another small project: github.com/diegohaz/rol... I (and my agents) will never write React.forwardRef again 🙏🏼
GitHub - diegohaz/rolldown-plugin-react-forward-ref: Transform React ref props into forwardRef components for React 18 with Rolldown and Vite.
Transform React ref props into forwardRef components for React 18 with Rolldown and Vite. - diegohaz/rolldown-plugin-react-forward-ref
github.com
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
Another drawing my son made. How long did it take you to recognize the character?
My son made this drawing. He wants to know how many seconds it took you to figure out which character it is.
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.
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.
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.
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.
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:
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...
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.
Just released constate v4. It's ESM-only now. It was about time! github.com/diegohaz/con...
Release constate@4.0.0 · diegohaz/constate
ESM-only package BREAKING if you load constate via require(), a <script src="https://unpkg.com/constate"> UMD tag, or a bundler that resolves package entries through the legacy main/module/types fi...
github.com
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?
Pull requests have become a serious attack vector in open-source projects. Sadly, until GitHub comes up with a better solution, restricting them to collaborators only is the best move.
I'm considering this for all my open-source projects. I prefer a detailed issue/discussion. I don't mind if it's AI-generated as long as it's valid and heads in the right direction. High-quality PRs from external contributors are much rarer, whether they're from humans or AI.