Jan Martin
@hybrist.dev
Waiting for a shipment of Club-Mate or drinking Club-Mate.
Currently: Angular core team & TC39-adjacent things. Also, node.js collaborator.
Previously: Groupon
Currently: Angular core team & TC39-adjacent things. Also, node.js collaborator.
Previously: Groupon
It's been really fun to explore how API design and system prompt can come together to make code generation a lot more reliable over the past few weeks. And now anybody can! 🎉
I'm excited we've finally open-sourced one of the new things the Angular team has been working on lately: web-codegen-scorer
www.npmjs.com/package/web-...
github.com/angular/web-...
www.npmjs.com/package/web-...
github.com/angular/web-...
September 16, 2025 at 10:46 PM
It's been really fun to explore how API design and system prompt can come together to make code generation a lot more reliable over the past few weeks. And now anybody can! 🎉
Today’s first: Published my first security advisory write up!
If you’re running Angular SSR in production, this may apply to you: github.com/angular/angu...
If you’re running Angular SSR in production, this may apply to you: github.com/angular/angu...
Angular SSR: Global Platform Injector Race Condition Leads to Cross-Request Data Leakage
### Impact
Angular uses a DI container (the "platform injector") to hold request-specific state during server-side rendering. For historical reasons, the container was stored as a JavaScript mod...
github.com
September 10, 2025 at 9:24 PM
Today’s first: Published my first security advisory write up!
If you’re running Angular SSR in production, this may apply to you: github.com/angular/angu...
If you’re running Angular SSR in production, this may apply to you: github.com/angular/angu...
Had some fun getting my @storybook.js.org to correctly simulate a streaming genkit LLM response (using msw and/or fetch-mock). For future reference: gist.github.com/jkrems/ce62b... #storybook #genkit
Mock genkit streaming responses in Storybook
Mock genkit streaming responses in Storybook. GitHub Gist: instantly share code, notes, and snippets.
gist.github.com
September 6, 2025 at 10:23 PM
Had some fun getting my @storybook.js.org to correctly simulate a streaming genkit LLM response (using msw and/or fetch-mock). For future reference: gist.github.com/jkrems/ce62b... #storybook #genkit
Reposted by Jan Martin
Presenting the BRAND-NEW season - @dimension20.bsky.social On a Bus! 🚌
DM'd by Katie Marovitch, and as players: Aabria Iyengar, Brennan Lee Mulligan, Jasmine Bhullar, and Mark Mercer!
DM'd by Katie Marovitch, and as players: Aabria Iyengar, Brennan Lee Mulligan, Jasmine Bhullar, and Mark Mercer!
July 14, 2025 at 11:17 PM
Presenting the BRAND-NEW season - @dimension20.bsky.social On a Bus! 🚌
DM'd by Katie Marovitch, and as players: Aabria Iyengar, Brennan Lee Mulligan, Jasmine Bhullar, and Mark Mercer!
DM'd by Katie Marovitch, and as players: Aabria Iyengar, Brennan Lee Mulligan, Jasmine Bhullar, and Mark Mercer!
Reposted by Jan Martin
New blog post on serializing promises in React. Learn how RSC serializes data between the server and client.
twofoldframework.com/blog/you-can...
twofoldframework.com/blog/you-can...
You can serialize a promise in React
Use React to create a promise on the server and later finish it on the client.
twofoldframework.com
April 25, 2025 at 3:06 PM
New blog post on serializing promises in React. Learn how RSC serializes data between the server and client.
twofoldframework.com/blog/you-can...
twofoldframework.com/blog/you-can...
That’s so sad and just doesn’t make any sense. ☹️ Adam’s an amazing voice for the web and its users.
April 11, 2025 at 9:43 PM
That’s so sad and just doesn’t make any sense. ☹️ Adam’s an amazing voice for the web and its users.
Reposted by Jan Martin
Dark mode toggles should be a per-site browser preference, just like zoom.
Why are we still reinventing the wheel with JavaScript? Let's make dark mode a browser-native feature.
bit.ly/dark-mode-is...
Why are we still reinventing the wheel with JavaScript? Let's make dark mode a browser-native feature.
bit.ly/dark-mode-is...
switch.md
GitHub Gist: instantly share code, notes, and snippets.
bit.ly
April 8, 2025 at 10:35 PM
Dark mode toggles should be a per-site browser preference, just like zoom.
Why are we still reinventing the wheel with JavaScript? Let's make dark mode a browser-native feature.
bit.ly/dark-mode-is...
Why are we still reinventing the wheel with JavaScript? Let's make dark mode a browser-native feature.
bit.ly/dark-mode-is...
Our toddler discovered “Rock around the clock” tonight and I’m afraid he’s taking the lyrics a bit too literally.
April 2, 2025 at 2:58 AM
Our toddler discovered “Rock around the clock” tonight and I’m afraid he’s taking the lyrics a bit too literally.
Reposted by Jan Martin
Just released Node.js v23.8.0.
It includes an initial implementation of URLPattern, an new flag to load system certificates, zstd, and more!
nodejs.org/en/blog/rele...
It includes an initial implementation of URLPattern, an new flag to load system certificates, zstd, and more!
nodejs.org/en/blog/rele...
Node.js — Node v23.8.0 (Current)
Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.
nodejs.org
February 13, 2025 at 6:00 PM
Just released Node.js v23.8.0.
It includes an initial implementation of URLPattern, an new flag to load system certificates, zstd, and more!
nodejs.org/en/blog/rele...
It includes an initial implementation of URLPattern, an new flag to load system certificates, zstd, and more!
nodejs.org/en/blog/rele...
TIL: it’s easier to implement web sockets from scratch* than to teach various Java clients that bidirectional streaming over HTTP is possible.
January 30, 2025 at 4:46 PM
TIL: it’s easier to implement web sockets from scratch* than to teach various Java clients that bidirectional streaming over HTTP is possible.
I remember @seldo.com showing download stats as “share of registry” which removed some of the general ecosystem growth noise from the stats. Is there some site that offers those numbers today? Raw download counts are super hard to interpret correctly. :(
January 23, 2025 at 12:13 AM
I remember @seldo.com showing download stats as “share of registry” which removed some of the general ecosystem growth noise from the stats. Is there some site that offers those numbers today? Raw download counts are super hard to interpret correctly. :(
Reposted by Jan Martin
@soldair.bsky.social I knew it’s been a while since mana burn was removed. Didn’t realize it was in 2009 (!)…
January 18, 2025 at 3:12 AM
@soldair.bsky.social I knew it’s been a while since mana burn was removed. Didn’t realize it was in 2009 (!)…
Now just give me string concat in calc and I think we can call the web “done”. 🎉
🎉 OMG OMG OMG Chrome is shipping CSS attr() for every property!!! 🎉
I’ve been asking for this for over a decade!! w00t!!! 🤩
developer.chrome.com/blog/advance...
I’ve been asking for this for over a decade!! w00t!!! 🤩
developer.chrome.com/blog/advance...
CSS attr() gets an upgrade | Blog | Chrome for Developers
You can now use attr() with any CSS property–including custom properties–and it can parse values into data types other than strings.
developer.chrome.com
January 17, 2025 at 1:58 AM
Now just give me string concat in calc and I think we can call the web “done”. 🎉
What are some useful pattern you’d expect to work across bundlers? We’re collecting a list here: github.com/tc39/js-outr...
Tools: Common Conventions · Issue #49 · tc39/js-outreach-groups
There's a variety of behaviors in authored JavaScript that (web) developers may depend on that aren't described in any officially published spec. This is an attempt to collect them and link to the ...
github.com
January 7, 2025 at 9:58 PM
What are some useful pattern you’d expect to work across bundlers? We’re collecting a list here: github.com/tc39/js-outr...
The race is on: Will I get all post-holiday access issues resolved before the first meeting of the day? I’ll know in about 5 minutes.
January 6, 2025 at 6:24 PM
The race is on: Will I get all post-holiday access issues resolved before the first meeting of the day? I’ll know in about 5 minutes.
I'm starting to think that the hard part will be to turn this back into JS... Maybe something higher level than a generic loop node would be better after all.
December 21, 2024 at 4:18 AM
I'm starting to think that the hard part will be to turn this back into JS... Maybe something higher level than a generic loop node would be better after all.
TIL: Just by multiplying safe integers, you can reach NaN. Stupid floats.
December 17, 2024 at 2:45 AM
TIL: Just by multiplying safe integers, you can reach NaN. Stupid floats.
Achievement unlocked: Created my very first phi node. Wanted to learn more about both sea-of-node and Rust, so this was a great opportunity to check those off the list.
is.gd/8tSIE9
is.gd/8tSIE9
December 16, 2024 at 5:22 AM
Achievement unlocked: Created my very first phi node. Wanted to learn more about both sea-of-node and Rust, so this was a great opportunity to check those off the list.
is.gd/8tSIE9
is.gd/8tSIE9
Reposted by Jan Martin
Ecma just approved the 1st edition of the new "Source map format" standard, ECMA-426! 🎉
tc39.es/ecma426/2024/
tc39.es/ecma426/2024/
Source map format specification
tc39.es
December 11, 2024 at 7:01 PM
Ecma just approved the 1st edition of the new "Source map format" standard, ECMA-426! 🎉
tc39.es/ecma426/2024/
tc39.es/ecma426/2024/
A follow-up meeting was just scheduled for “next year” (January) and I’m not sure how I feel about that.
December 10, 2024 at 6:40 PM
A follow-up meeting was just scheduled for “next year” (January) and I’m not sure how I feel about that.
Reposted by Jan Martin
My talk from this year's We Love Speed is on YouTube! 👇
In "Tight Mode: how browsers REALLY load web pages", I take a very deep/very nerdy dive into why browsers sometimes intentionally delay loading resources, why they all do it differently, and why they should *stop clowning around* 🤡
#webperf
In "Tight Mode: how browsers REALLY load web pages", I take a very deep/very nerdy dive into why browsers sometimes intentionally delay loading resources, why they all do it differently, and why they should *stop clowning around* 🤡
#webperf
How browsers REALLY load Web pages — Robin Marx
YouTube video by We Love Speed
www.youtube.com
November 26, 2024 at 10:09 AM
My talk from this year's We Love Speed is on YouTube! 👇
In "Tight Mode: how browsers REALLY load web pages", I take a very deep/very nerdy dive into why browsers sometimes intentionally delay loading resources, why they all do it differently, and why they should *stop clowning around* 🤡
#webperf
In "Tight Mode: how browsers REALLY load web pages", I take a very deep/very nerdy dive into why browsers sometimes intentionally delay loading resources, why they all do it differently, and why they should *stop clowning around* 🤡
#webperf
Reposted by Jan Martin
🚨 @analogjs.org 1.10 is out!
⚡️ Big performance improvements for @vitest.dev
✍️ Introduced Form Server Actions
🤝 Support for #Angular v19
👀 Route debugging page
Release notes:
github.com/analogjs/ana...
⚡️ Big performance improvements for @vitest.dev
✍️ Introduced Form Server Actions
🤝 Support for #Angular v19
👀 Route debugging page
Release notes:
github.com/analogjs/ana...
Release v1.10.0 · analogjs/analog
What's Changed
perf(vite-plugin-angular): speed up tests by reusing compiler by @yjaaidi in #1444
feat(create-analog): update template for latest to Angular v19 by @brandonroberts in #1447
fix(rou...
github.com
December 4, 2024 at 7:36 PM
🚨 @analogjs.org 1.10 is out!
⚡️ Big performance improvements for @vitest.dev
✍️ Introduced Form Server Actions
🤝 Support for #Angular v19
👀 Route debugging page
Release notes:
github.com/analogjs/ana...
⚡️ Big performance improvements for @vitest.dev
✍️ Introduced Form Server Actions
🤝 Support for #Angular v19
👀 Route debugging page
Release notes:
github.com/analogjs/ana...
… and write Google Docs instead of Medium posts.
"a lot of what staff engineers do is influence decisions across the whole company"
So you are telling me that they are just influencers who use Zoom and Slack instead of YouTube and Twitter?
So you are telling me that they are just influencers who use Zoom and Slack instead of YouTube and Twitter?
December 3, 2024 at 3:44 PM
… and write Google Docs instead of Medium posts.
“Once you eliminate the impossible, whatever remains, no matter how improbable, must be the truth.”
I figured it out. @littledan.dev is in every standards group and GitHub issue because there’s an army of clones: the “little dans”. Big Dan only delegates.
I figured it out. @littledan.dev is in every standards group and GitHub issue because there’s an army of clones: the “little dans”. Big Dan only delegates.
November 27, 2024 at 8:18 PM
“Once you eliminate the impossible, whatever remains, no matter how improbable, must be the truth.”
I figured it out. @littledan.dev is in every standards group and GitHub issue because there’s an army of clones: the “little dans”. Big Dan only delegates.
I figured it out. @littledan.dev is in every standards group and GitHub issue because there’s an army of clones: the “little dans”. Big Dan only delegates.