Karl Horky
banner
karlhorky.com
Karl Horky
@karlhorky.com
Technical Founder, Curriculum Engineer @upleveled.io
Org Team React Amsterdam, AmsterdamJS, @reactvienna.com
Canadian, Austrian, he/him
📍Amsterdam https://github.com/karlhorky
npx-safe by @rafaelgss.dev :

Use the Node.js permissions model to make running npx on untrusted packages safer 🔥

github.com/RafaelGSS/do...
October 16, 2025 at 9:43 AM
Why?

Dependabot security alert appears and update generated -> fails because the update is for a pnpm transitive dependency with the error:

Dependabot doesn't support the 'updating transitive dependencies' feature for pnpm package_manager
September 25, 2025 at 1:09 PM
My request for Dependabot: Full support for @pnpm.io

(updates to transitive deps fail currently)

Voice support in the issue 🙌

github.com/dependabot/d...
September 25, 2025 at 1:09 PM
Codemods for Node.js 😍

Looking great, thanks to all contributors!
August 30, 2025 at 4:06 PM
@netlify.com multiple users reporting Netlify edge functions being down, in case you didn't know yet

Maybe you can update the status page with the outage?

answers.netlify.com/t/the-site-s...
August 11, 2025 at 5:59 PM
VS Code 1.103 (Jul 2025) finally has expandable hovers in JavaScript and TypeScript 😍

for when the hover info is showing the type name instead of the object / array / etc

code.visualstudio.com/updates/v1_1...
August 9, 2025 at 3:49 PM
Looks like `experimental.typedRoutes` is coming to Next.js Turbopack, thanks to Ben Gubler 🚀 🎉

github.com/vercel/next....
July 17, 2025 at 9:07 AM
My work in open source, from fixing papercuts to support students to discussing standards 🚀

Thanks so much to the Open Source Initiative @opensource.org for featuring me as a maintainer for Maintainer Month 2025!

opensource.org/maintainers/...
May 21, 2025 at 10:04 AM
AI-generated image alt text in HTML and Markdown in VS Code April 2025 (1.100) 😍

code.visualstudio.com/updates/v1_1...
May 8, 2025 at 11:39 PM
Oh nice, looks like the 2019 idea I had to "skip parameters in function parameter lists" may come to life in @chronicles.org's proposal "void Discard Bindings for ECMAScript" 😍
May 7, 2025 at 11:44 PM
GritQL Biome plugins looking great 🔥

More options for simpler linting plugins 👍

ESLint `no-restricted-syntax` is almost there, but esquery can get pretty verbose...
March 24, 2025 at 2:49 PM
`Cannot find matching keyid` error with latest pnpm?

Upgrade to Node.js v22.14.0, which updates to the fixed Corepack 0.31.0 version:

Windows: choco upgrade nodejs # or nodejs-lts

macOS: brew upgrade node # or node@22

Ubuntu: sudo apt-get --only-upgrade install nodejs
February 11, 2025 at 11:47 AM
Thanks for the great talk at React Amsterdam @mickey.studio 🎉

Great to see more about this topic in design systems creation:

- Drawbacks of rigid, highly-coupled components
- Patterns of fine-grained component factoring and composition to counter these drawbacks
January 24, 2025 at 8:53 AM
> if you use the demo code and print `.get('a[]')` you get the value, right?

you get a string - that was the point

there is no way to receive an array value, which was the vulnerability

forked sandbox: codesandbox.io/p/devbox/pen...
January 13, 2025 at 2:49 PM
This is what we teach to students in the first lecture about TypeScript, that narrowing with runtime code is sometimes required
January 13, 2025 at 2:34 PM
PostgreSQL: Ever wanted to insert test data with explicit `id`s into a table with an identity column eg. `GENERATED ALWAYS AS IDENTITY`?

Added a new trick to PostgreSQL Tricks with a seeder script which achieves this (short version: detect + drop + re-add the identity)

github.com/karlhorky/po...
January 6, 2025 at 1:06 PM
one last edge case where I can imagine TS has only partial errors:

overlapping identically-named APIs between different types (Array.prototype.concat and String.prototype.concat)

but more uncommon, and I guess could be caught by types in other parts of program or other tooling like linters
December 6, 2024 at 10:40 PM
In case this is still not clear, here's a demo

In this demo, tsc (with @types/node and @types/sanitize-html) will not allow building type-unsafe, insecure JS, because of the type error on line 25

(see tsc error in alt text, or just run `pnpm tsc` in the sandbox)

codesandbox.io/p/devbox/l7w...
December 6, 2024 at 5:45 PM
Or in Next.js use, you can't even pass in an array without special handling - everything is strings

(I think that's my favorite - secure by default, make the insecure thing harder)

codesandbox.io/p/devbox/sto...
December 5, 2024 at 9:03 AM
Yeah, I guess I'm used to TypeScript param types catching these things for me already, eg. Express query param types:

www.typescriptlang.org/play/#code/J...
December 5, 2024 at 8:53 AM
Ah interesting, and in the case of Dust, it seems like it was to avoid XSS vulnerabilities caused by missing encoding

github.com/linkedin/dus...
December 5, 2024 at 8:25 AM
it's crazy how often a new typescript-eslint rule ends up teaching JavaScript and TypeScript fundamentals 😮 🚀

typescript-eslint.io/rules/return...
November 28, 2024 at 10:19 AM
Playwright 1.49's new `.toMatchAriaSnapshot()` 😍

Nice and compact YAML syntax to test multiple elements in an accessibility tree 🎉

Thanks Pavel Feldman, @max.sh , @skn0tt.bsky.social , Dmitry Gozman and everyone else involved!

playwright.dev/docs/release...
November 26, 2024 at 5:57 PM
nice!

some before and after code shots from the video (with alt text)
November 24, 2024 at 5:57 PM
I like the overall idea behind privacy protections for users 👍

But cookie banners / similar are a bad technical implementation, imposing bad UX on millions of users

This makes a noticeable impact on user frustration, not to mention Europe's productivity and economy

legiscope.com/blog/hidden-...
November 17, 2024 at 11:17 AM