12 min read

For some reason, I always limited myself to using either Prism.js or highlight.js for code highlighting, and recently I've learned of Shiki, a better (but much heavier) highlighter, and decided to try it out. It uses the same engine and grammars to parse code as VS Code, so it'd go really well with the VS Code theme I've been using!

In this post I'll compare TypeScript support specifically of the three mentioned highlighters and highlight some issues in them. I've also implemented switching between highlighters in my code blocks, so you'll be able to see how each one performs right here in this post!

7 min read

Recently I've discovered some interesting information about the empty object type, {}, and some weird features and tricks that it provides.

It's not "just an empty object literal" as some might think, and there are several very interesting and useful ways of utilizing its unique properties, that you could use in many different scenarios.

12 min read
Last edited:

This month I decided to make a website for myself. One, that's just right. One, that will stick. One, that I won't abandon like the rest of my side projects... There were many challenges I had to overcome, but, in the end, I finally did it!

In this post I'll just write down my thought processes and decisions. It's not a step-by-step tutorial to creating your own website, but instead a record of a journey. You can view the website's source code as you read through this post, to learn how some stuff works.

8 min read

React Server Components are pretty cool. It was a tough concept to understand at first, since not many guides explained how it all works internally, but eventually I got the hang of it.

But, as I developed reusable components, I found out that I had to create separate implementations (and therefore add separate exports) for React Server Components and Client Components. That wasn't ideal, because I wanted to put all of the code in one place and have it behave differently depending on what environment it was imported from.

So, I learned a lot of new information about the inner workings of RSC, SSR and CSR, figured out how to differentiate between RSC and SSR environments, and "invented" a solution for this problem, — "Hybrid" Shared Components.