Vasilii Kovalev's Avatar

Vasilii Kovalev

@vasilii-kovalev

https://vasilii-kovalev.github.io/blog

12
Followers
55
Following
68
Posts
02.11.2024
Joined
Posts Following

Latest posts by Vasilii Kovalev @vasilii-kovalev

I'm afraid of the lock-in too. Plus, even though the tools focus on speed and a shared interface, there are other requirements (like customization, and mature ecosystem). Setting up individual tools manually is not that difficult, and one needs do it like 1 time, then adjust on update.

13.03.2026 09:51 πŸ‘ 1 πŸ” 1 πŸ’¬ 0 πŸ“Œ 0

Will it be available on GOG as well?

27.02.2026 02:58 πŸ‘ 1 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

@npmx.dev is gaining popularity, and bundlephobia doesn't work anymore. Time to share a link to my template engine TypeScript library in the new tool. I hope it will be of use for someone.
npmx.dev/package/hydr...

13.02.2026 17:55 πŸ‘ 2 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

Today I learned about contextual typing in TypeScript when trying to migrate from React's `FC<Props>` type to explicit `(props: Props) => ReactNode`. It highlighted some issues which weren't obvious before.
More information:
* github.com/Microsoft/Ty...
* github.com/microsoft/Ty...

13.02.2026 17:10 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

Maybe array normalization breaks the performance gains. I'm not sure if changing it to array back and having O(n) iteration complexity instead of O(1) is worth it.

12.01.2026 16:20 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

Solid too. Performed worse than React for my case, though.
The respository, if anybody is interested: github.com/vasilii-kova...

12.01.2026 16:18 πŸ‘ 1 πŸ” 0 πŸ’¬ 2 πŸ“Œ 0

Amazed by how accurately Fear Factory predicted today’s fears 30 years ago.

29.12.2025 23:38 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

That being said, even though I think Clair Obscur: Expedition 33 is a masterpiece, it is not an RPG IMHO, because there are no roles to be played and impactful/meaningful choices to be made.

04.12.2025 10:49 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

It means that a miracle should happen from story-telling perspective for TES 6 to become something interesting, or it would remain just another action game with RPG mechanics.

21.11.2025 14:27 πŸ‘ 2 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

I could only count less than 10 impactful choices in 300h (yes, it is not infinite), and it is still hard to deduce from them what kind of person your character is.
WotR gives you a TON of them in 400h to shape your character, and they become very distinctive. It is my litmus test for RPGs now.

21.11.2025 14:27 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

After playing Pathfinder: WotR by @owlcatgames.bsky.social, I realized, that most of the "RPG" games I played before were just using RPG mechanics (like classes), but didn't give you enough choices, that could make characters/playthroughs feel different (the "role-play" part). Skyrim is one of them.

21.11.2025 14:27 πŸ‘ 4 πŸ” 0 πŸ’¬ 2 πŸ“Œ 1

I don't use it, because Yarn works fine for me. Don't care much about speed, but I do care about correctness. In the thread, I tried them all, and pnpm also has issues with resolving optional peer dependencies, so you need to explicitly opt-in in not installing them.
bsky.app/profile/vasi...

17.10.2025 04:05 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

Some of them can't handle optional peer dependencies properly. Others can't remove the garbage properly. Speed is not the only measure.
bsky.app/profile/vasi...

16.10.2025 14:10 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

When using TypeScript's build mechanism, separate type imports do make the difference β€” the empty imports are removed.
But with Vite, there are no module imports in chunks, so in my example the size is exactly the same, and the build time is only 0.096s faster. So I stick with fewer imports.

08.10.2025 04:04 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

Also, since with the separate type imports approach the type imports are completely removed, there are no accidental side effects kicking off if the imported module contains them. But I don't have modules with side effects, so it is not relevant.

08.10.2025 04:04 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

The idea is with the separate type imports approach, the bundle size is smaller (because there are no empty imports left after removing the types), and the build is faster (because of the simplified decision algorithm).
www.typescriptlang.org/tsconfig/#ve...
typescript-eslint.io/blog/consist...

08.10.2025 04:04 πŸ‘ 2 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

Checked inline types vs. separate type imports and exports approaches ("import { type X, Y}" vs. "import type { X }, import { Y }") with "verbatimModuleSyntax" TypeScript setting on my pet project (React example): github.com/vasilii-kova...

08.10.2025 04:04 πŸ‘ 1 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
Preview
Hard Tabs Β· Issue #425 Β· rome/tools People are allowed to have opinions on how much visual indentation they want in their code. When I first started coding I found 4-space indentation to be really helpful when I would easily get lost...

Learned that from this discussion in Rome: github.com/rome/tools/i...

06.10.2025 15:05 πŸ‘ 2 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

Thanks to thunks architecture, I was able to create a function to batch actions AND read from the draft.
github.com/vasilii-kova...
I don't think it is even possible in other state managers. It would require sacrificing either code reusability or reading from the draft.

23.09.2025 06:52 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

I keep my notes in Markdown files and edit/view them in VS Code, that highlights the syntax and can render the result.

19.09.2025 09:00 πŸ‘ 0 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
node_modules after uninstalling all dependencies using different package managers (npm, Yarn, pnpm, and Bun). Yarn leaves it much cleaner than the others

node_modules after uninstalling all dependencies using different package managers (npm, Yarn, pnpm, and Bun). Yarn leaves it much cleaner than the others

Also, after uninstalling the last package, Yarn leaves `node_modules` much cleaner than the others. So I think I'll stick with it.

18.09.2025 18:37 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0

Yarn doesn't track and install peer dependencies by default. npm tracks them, but after the step 3 the lock file does become the same as on step 1.

18.09.2025 18:37 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

Maybe it should be this way, and I just miss something. Please, let me know about what's the point of keeping the history of installs in the lock file.

18.09.2025 18:37 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

The removed package won't be installed on fresh installs, but the lock file stays unnecessarily larger than it should be.

In pnpm, it helps to disable installing peer dependencies (setting `autoInstallPeers` to `false` in local/global config).

18.09.2025 18:37 πŸ‘ 1 πŸ” 0 πŸ’¬ 1 πŸ“Œ 1

After step 3, the lock file won't be the same as on step 1 - the package is not removed from the top level.

18.09.2025 18:37 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

Example:
1. Install `@tanstack/router-plugin`, which has an optional peer dependency to `@tanstack/react-router` (which is not installed since it is optional)
2. Install `@tanstack/react-router`
3. Remove `@tanstack/react-router`

18.09.2025 18:37 πŸ‘ 0 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0
Preview
`bun remove <package>` should remove the dependencies that the `package` depended on if they are no longer used Β· Issue #8662 Β· oven-sh/bun What version of Bun is running? 1.0.25+a8ff7be64 What platform is your computer? No response What steps can reproduce the bug? bun i react bun i typescript -d bun remove react What is the expected ...

Noticed today that @bun.sh doesn't remove dependencies in `node_modules` folder.
There is already a bug for it: github.com/oven-sh/bun/...
But what is more interesting is there is some mess in pnpm and Bun with optional peer dependencies.

18.09.2025 18:37 πŸ‘ 1 πŸ” 0 πŸ’¬ 1 πŸ“Œ 1

Maybe a silly question, but do I understand correctly that the "TypeScript-to-Rust" communication overhead won't be a bottleneck at some point for @vite.dev with @rolldown.rs, because it is not "communicating" data back?

13.09.2025 16:47 πŸ‘ 1 πŸ” 0 πŸ’¬ 1 πŸ“Œ 0

Trying AI on my pet projects.
An example: bsky.app/profile/vasi...

In my experience, they are good at providing information
* From the libraries' docs
* About best practices
* About the project (inconsistencies, best practices, etc.)

At adding/changing code β€” not so much. So I mostly use the chat.

29.08.2025 14:25 πŸ‘ 1 πŸ” 0 πŸ’¬ 0 πŸ“Œ 0
Meme image of a boxer saying "ok ima fight this code that is way too complicated for what i want it to do", and then the same boxer sitting on a stool drinking water, saying "damn, business logic got hands"

Meme image of a boxer saying "ok ima fight this code that is way too complicated for what i want it to do", and then the same boxer sitting on a stool drinking water, saying "damn, business logic got hands"

09.07.2025 18:54 πŸ‘ 99 πŸ” 14 πŸ’¬ 1 πŸ“Œ 0