George Haidar
disintegrator.dev
George Haidar
@disintegrator.dev
Confused and coding. Building code generators @speakeasy.com.
I think it has super interesting uses that were tedious to pull off in the past. Here’s one way I take advantage of it.

blog.disintegrator.dev/posts/clean-...
Clean room tests with JavaScript's `using` keyword
And a slick approach to test encapsulation when you need a database
blog.disintegrator.dev
May 5, 2025 at 11:11 AM
There are 2 kinds of structs in a codebase: 1. structs that act as configuration/options for components in the system and 2. structs that carry state to/from DBs, to/from http endpoints, etc... In the case of 1. there is some affordance for unset fields but with 2. it can be really bad to miss one.
April 15, 2025 at 1:21 PM
Consider what happens to code shown below when a new field is added to the ProductResult struct. To compound the problem, imagine a larger codebase where you're creating `ProductResult` values in a few places. Similarly imagine adding a field to `Product` and forgetting to fill it out before INSERT.
April 15, 2025 at 1:11 PM
Incredible pun. Hat tip and 🫡.
April 15, 2025 at 12:45 PM
Oh my, that is spot on haha! Thanks for sharing :)
Here's hoping it gets more eyes.
April 7, 2025 at 10:15 PM
- Classes are confusing when used as types. Not nominally typed and you can mistakenly pass a compatible literal object.
- Classes cannot be augmented like interfaces iirc.
- Far easier to discriminate union of classes than union of object types that don’t have a natural discriminator key.
March 26, 2025 at 9:42 PM
I love the evolution of projects like TanStack Query where stewardship is shared/passed over to deeply aligned & invested folks. The way Query passed hands from Tanner to Dominik and the project only continued to thrive is inspiring. similar great examples on the Vue/Vite/VoidZero side of the world.
March 19, 2025 at 12:59 PM
I thought about this and I couldn’t come up with an example where open governance wasn’t ceased by big players or used to greatly slow down progress on an otherwise great project. I also don’t think I’m looking hard enough for counter-examples. To me @tanstack.com is setting an important standard.
March 19, 2025 at 12:54 PM
That’s actually genius hahaha
March 19, 2025 at 3:23 AM
Excitement intensifies!!!
March 6, 2025 at 9:36 AM
Waaaaaait what? Are we going to be able to support SSE APIs and various AI libraries with this?
March 6, 2025 at 2:08 AM
@dr-axel.de you might find this interesting after your recent post on enums too 🙂
March 2, 2025 at 5:11 PM
A great tip with exhaustiveness checks using switch blocks is to add a `value satisfies never;` expression to the default branch. This adds a compile time check and you'll spot that you missed a case in your IDE. Demo:
tsplay.dev/w2y48W
March 1, 2025 at 11:43 AM