Justin Fagnani
@justinfagnani
Building something new... Previously at Google. Web maximalist. Web components. WebAssembly. Creator of Lit. Oakland.
Removed the bootstrap TypeScript-based compiler from Zena today 🥳 Thanks TypeScript, you served us well!
Hey @developers.google.com Feedback is broken in Antigravity, and I don't see any other way to provide feedback on the broken feedback. I also don't see an Antigravity account here, but I sure as hell am not going to "join the conversation" on Twitter.
I'm seeing Sylvan Esso tonight at pretty much the smallest venue I can imagine then playing at. Easily 20x smaller than I've seen them at before. Like a preschool gym!
This is one of the dumbest things I've ever seen. Bad teams should have a chance to get better. This destroys the pre-lotto value of picks, so the only thing bad teams have left is the ability to take on bad contracts - but that was usually done for picks! How are teams supposed to get better?
Working on a design for data oriented design within Zena. I think I have smthng that works based on "inline classes" - non-heap classes whose fields are always scalar replaced to locals. Then a struct-of-arrays wrapping class can hold state for the arrays and its index, but not pay any deref cost
Yep. It's fairly close and could switch in the future, but it's been relatively stable for years:
A small DX win in Zena: I chose `as` as the renaming operator for destructuring - so `{x as a}` instead of `{x : a}`. This frees up `{x : a}` for use as function parameter destructuring with an included type, instead of the `{x} : {x : String}` that you have to do in TypeScript. Nice and clean!
Writing a self-hosted compiler is awesome, because as soon as you want a new feature to make writing the compiler easier, you can just change the language and then use it! My Zena AST was getting too verbose, so I added sealed and data classes (kind of like tagged unions) to make it more compact.
I believe it's plausible - there's mechanism & precedent. It'd be unbelievable if there _weren't_ a heat island effect. But 6.2 miles away? On the same magnitude as major cities? I really want to know how they control for other nearby development. This chart shows a clear time correlation, though:
Nice result in @zeroheight.com's 2026 Design Systems Report: report.zeroheight.com#your-tools Web components are the second-most used "framework" among the respondents. This makes sense: if you build web components you support all the frameworks. Otherwise, you'd probably only support React.
I just noticed that @lit.dev crossed the 5M downloads/week mark on npm! 🎉 That's more than 2x in the last year, and 6x in the last three years 🚀
npm monorepo users: Update to npm v11.11.1 and add `install-strategy=linked` to your .npmrc Every workspace package and each installed package will get its own isolated set of dependencies, in its ow node_modules folder, symlinked into a repo-central store. docs.npmjs.com/cli/v9/comma...
Few people know that Polymer was the first web framework* in space, powering the Crew Dragon Capsule UI! * library, actually. Polymer just makes web components.
Also, this Brian Eno quote has been really stuck in my head for weeks: "The great benefit of computer sequencers is that they remove the issue of skill, and replace it with the issue of judgement. ... the question then is, "Of all the things you can now do, which do you choose to do?""
This is incredible! That gap and proper outline behavior are just impossible today.
Here's a trickier example: export main = () => "hello"; That uses the String class, and since WASM doesn't have strings, we need to export functions to read the length and byes from strings. Output is still very small!
CSS corner-shape is awesome, but I wish there were some kind of `inset` option so that I could more easily make shapes like these, and actually get the borders to behave correctly. `inset` would invert the bevel, so it pointed inward instead of outward.
I really don't love the new feed icons. They're brighter than just about everything else on the page. Very distracting.