Artem Zakharchenko
@kettanaito.com
3.9K followers 200 following 3.5K posts
Software engineer. Helping you master automated testing at http://EpicWeb.dev. Author mswjs.io. Instructor egghead.io. I tell stories @zakarcher.com. My debut book "LOGGERHEADS" it out 👇 https://zakarcher.com/books/loggerheads
Posts Media Videos Starter Packs
Pinned
kettanaito.com
Huge news! I've written a book.

This is a story of light and dark that won't leave you indifferent. Illustrated, atmospheric, and meaningful. The kind that stays with you.

Please enjoy this cover reveal for Loggerheads:
zakarcher.com/blog/cover-...

📚💙
Cover reveal: Loggerheads
zakarcher.com
kettanaito.com
iirc, I have trusted publishing set up but I still need a token to actually publish. Aren't those layers to the process, not exclusives?
kettanaito.com
Does that not defeat the purpose of expiring tokens being safe?
kettanaito.com
Can someone explain to me how I am supposed to handle automation tokens on NPM that expire? Re-roll them every X days/months? Sounds like a chore.
kettanaito.com
Don't let it hold you back. Accents are awesome. They add flavor to speech. It would've been a boring world if everyone sounded like they're from San Francisco.
kettanaito.com
Okay, I'm totally slow today, it just hit me.

I shall coin that Proxy usage "linkinparking". Cause it crawls in your skin.
kettanaito.com
Indeed! Thinking whether I should ditch URLPattern in favor of RoutePattern in MSW 3.0. The library looks extremely promising.
kettanaito.com
No, no, thankfully nothing like that. Just odd promise flow, I suspect. Would you be interested in poking at it? Can prove a fun exercise.
kettanaito.com
There is something profoundly humbling that, no matter how much I study and perfect English, I will never be able to feel it as natives do. Not wield but feel. That much is true about any skill. You learn not to master but to understand the craft and, before all, yourself.
kettanaito.com
Oh, did I mention the call stack jumps between libraries, too? Hah.
kettanaito.com
I'm looking at two pieces of the same async code arranged differently and one works while the other doesn't. Should be doing the same thing in the same order but, clearly, they aren't! Imagine being 5-7 levels of async/await deep spread across different modules you lose track.
kettanaito.com
You don't wanna look at what we do in MSW.
Jokes aside, we use this sparingly. Kind of. Makes for a great spy though!
kettanaito.com
I like Remix 3 model of explicit component updates. Practices shows that it's times easier to figure out where you forgot to update than to find the spot where faulty extra update breaks your component. Inverse flow. Will be fun.
kettanaito.com
I could really use some test runner feature where it would run the same test on `main` and let me inspect both that and my feature branch live.

I really don't want to stash all my changes, go to main, run there, go back, unstash, run again, compare the diff in my head.
kettanaito.com
I am always using Proxy to spy over methods so I'd love for a .reverse() method to undo that spy. I know that's outside of the proxy's responsibility, but it appears odd to me as I've never seen anyone use proxies like

let p = new Proxy(o)

only

o = new Proxy(o)

Might be a me thing.
kettanaito.com
I am two days deep into the new architecture for MSW and it's looking pretty good. That is how the library was always meant to work. Migrating the existing APIs to release this without breaking changes.
kettanaito.com
Need to get it together and propose a revocable Proxy to the committee because Proxy.revocable() does not do what you think it does.

It does not revoke. It nukes the proxy. It starts throwing. Quite odd!
kettanaito.com
Got a type testing question: why do these two examples produce two different type errors?

I'd like to assert the *first* error (about the symbol mismatch). I'm getting something else though once I use type expect.
kettanaito.com
No big spoilers, but MSW 3.0 will be about controlling the network. Not requests or events. The network. Such a beautiful, layering change.
kettanaito.com
Just wish those weren't people authoring 10m+ downloads packages.
kettanaito.com
I freaking love automated tests. I can do crazy changes, full rewrites sometimes, and I've got these little fellows giving me rock-solid confidence I'm not breaking consumers (or tell me how exactly I'm breaking them). Love that.
kettanaito.com
I will never, ever understand some maintainer's hardcore commitment to CJS-only in 2025.

- Made-up module syntax.
- Doesn't work without a bundler.
- Thoroughly archaic and weird.
- Huge pain in the ass for other OSS maintainers.

Do not get it.
kettanaito.com
You know you are 10 layers deep into the abstraction when you reach out for a whiteboard. Cannot hold that all in my head anymore.