RSSAmplifier

Blog

Tomas Pustelnik

Personal website of Tomas Pustelnik. A front-end developer with focus on HTML/CSS, React, performance and accessibility. Founder of Clipio.app and tooling addict.

pustelto.comRSS feed ↗22 posts

Latest posts

How I plan my year (after ruthlessly simplifying the process for 5 years)

Every January, I have a tradition. I rent a small cottage in the middle of the Czech Republic ( hotel Kouty , absolutely amazing place), disconnect from everything, and spend a weekend reflecting on the past year and thinking about the year ahead. This year was my fifth time doing it. And I’ve finally found a system that works. In the past, I always thought I had to get the most out of the…

Reverse engineering Linear - part 1: Header

With the advancement of AI, I’ve decided to try something different from building. Something that was previously very hard. I threw an AI at production, minified JavaScript code, and reverse engineered it back to readable JSX files and analyzed how it’s built. The goal : Learn from top-tier software engineers and share valuable lessons with others. Target : Linear - software I deeply admire for…

Reflecting on my indiehacking journey building Clipio

After over a year of development, I finally launched Clipio — a browser extension that lets you save web content effortlessly into Notion. This article is a reflection about my journey with highs and lows and lessons I have learned the hard way. First some numbers: Over 1 year of development, 18 upvotes on ProductHunt and #33 product of the day, made exactly 1 sale. Not an impressive numbers. But…

4+1 ways how to handle errors in your code

We, developers, love the “happy path”. We create a code that happily assumes everything will go perfectly well. But reality isn’t so kind. Servers crash, APIs fail, developers make mistakes, and users do unexpected things. Errors will happen in our apps. So let’s stop ignoring them and instead be ready to deal with them. In this article, I will walk you through 4 + 1 ways how to handle errors in…

My 2024 Post-Mortem: Honest review of a year that didn't go as planned

Let’s make it clear. My 2024? It wasn’t great. In many ways, it felt like a failure. I had systems, habits, and planning routines in place, yet I ended the year feeling that I had lost track of what really mattered. At the end of each year, our social media feeds are flooded with “the best year ever” posts. Although it feels good to celebrate wins, these posts can make us feel like failures if we…

How to do an efficient and valuable code review

Do you like code reviews? Or do you hate them? Have you ever received a code review that left you scratching your head? Have you been wondering if the reviewer even looked at your code? Or worse, have you been on the other side, struggling to provide valuable feedback? Well, you’re not alone. Code reviews are often a pain in the ass. They are a form of asynchronous dialog, which makes them really…

How to add Shadcn UI into an existing React app in Nx Monorepo

When integrating Shadcn UI into an Nx monorepo you can stumble upon few issues. At least I did when I decided to add Shadcn UI into Clipio . Due to Nx structure, running shadcn init will not work. So I have decided to write this article to help others have a smooth setup journey for Shadcn UI and Nx monorepo using pure React. Let’s get into it. NOTE: I'm not working with Next.js or any other…

How to implement Supabase auth in a browser extension

Supabase promise an easy authentication without a hasle. Turns out there was a lot to figure out. While building Clipio , I had to implement authentication in a browser extension without a regular website. I decide to use Supabase and Supabase UI to setup everthing quickly. And while Supabase does a lot of heavy lifting, there was still a lot of work. And resources for this topic are rare. In this…

Rust through the eyes of FE developer

Rust is a programming language that has gained a lot of popularity recently. As someone who has been interested in Rust for a while, I finally decided to play with it for a month. In this article, I’ll share my experience building a command-line tool with Rust and highlight what I loved about the language, as well as what I struggled with. What did I do Permalink to “What did I do” # I decided to…

I have switched from VS Code to VIM and I will never go back

Some time ago, I posted a tweet announcing I had switched from VS Code to VIM ( Neovim to be precise). Given that most of my colleagues looked at me in disbelief when I told them. I have decided to summarize my reasons behind this and outline the process for those brave enough to follow 😁. Why I ditched VS Code Permalink to “Why I ditched VS Code” # I would say my two main reasons are performance…

How to (not) make a button

Today’s web is a very interactive experience, yet we often fail to provide the same experience to everyone. Complex form widgets, interactive configurators, tables, shop listings, and the list goes on. We should use buttons and links to interact with those components. But often, we just put an onClick handler on a div and call it a day. That leads to a poor experience for some users. I want to…

5 easy steps to improve accessibility.

Want to get better at the accessibility, but you don’t know where to start? You can do a lot for the accessibility of your websites with only a few basic techniques. Below you will find a list of items, which are easy to use, but I see many websites doing mistakes in them. TLDR: Permalink to “TLDR:” # Use semantic HTML Add meaningful labels to interactive elements and page sections on the page…

How and why I've migrated from Netlify to Cloudflare

Up until recently, I have hosted my site on Netlify . They offer free hosting with great Github integration and a smooth developer experience. All this is supported by plenty of other great services. I was super happy with them. But then Cloudflare announced their new service Pages . So far, Cloudflare was known for its fast CDN and networking services. Given their reputation, I have decided to…

Real-world CSS vs. CSS-in-JS performance comparison

CSS-in-JS has taken a solid place in front-end tooling, and it seems this trend will continue in the near future. Especially in the React world. For example, out of 11492 people who participate in State of CSS survey in 2020 only 14.3% didn’t hear of Styled Components (a dominant CSS-in-JS library). And more than 40% of participants have used the library. I wanted to see an in-depth performance…

Freezing development of Qjub

TLDR: I don’t have enough time to focus on all my side-projects and activities. So I have decided to focus more on my blog than on the Qjub. For more detailed reasons, continue reading. Why I’ve decided that way? Permalink to “Why I’ve decided that way?” # A little bit of context first. I have a full-time job (last couple of months I worked only 4 days/week actually), two little kids, a few small…

What you might not know about sizing in CSS

A project I currently work on has a lot of different and sometimes non-trivial layouts. And it can be a struggle to get all the different elements sized correctly to avoid overflows and extra scrollbars. So I have deep dive into the CSS specification to learn about sizing and layout models as much as possible. And how to handle issues like this better in the future. I will share my findings with…

What I read to stay up-to-date

Some time ago I have published a post about tools I use in front-end development , and it had a bigger response than I expected (in a positive manner 😊). And quite a few people ask me how do I stay up-to-date with modern web dev. So I decided to share another list. This time it’s about blogs and other resources I watch and read to keep myself up-to-date with ever-evolving web development. What is…

Optimizing CSS for faster page loads

Not long ago I decided to improve the loading times of my website. It already loads pretty fast, but I knew there was still room for improvement and one of them was CSS loading. I will walk you through the process and show you how you can improve your load times as well. Why loading time matters? Permalink to “Why loading time matters?” # Because Time is money . That proverb is especially true for…

What have I learned when releasing Qjub

About two weeks ago, I have finally released Qjub in private beta. It was a great feeling to finally kick it off the door. And a big relief as well. However, getting to that moment was not an easy task. This week I had a little time to reflect on that journey. And I would like to share my experience and the lessons I learned with you. TLDR - Lessons I have learned Permalink to “TLDR - Lessons I…

Tools & resources I use for front-end development

Front-end development is quite a complex discipline and you will hardly ever need only a browser and code editor (at least for bigger projects). I have decided to post a list of the tools I use for development. I hope this will help others to find some great tools they can use in their workflow. Basic stuff Permalink to “Basic stuff” # Those are the tools I use daily and I couldn’t literary…

Don't ignore Fieldset and Legend HTML elements

Creating accessible forms (especially more complex ones) may be difficult. There are many moving parts and different kinds of inputs. And we often have to use JavaScript to make the form accessible for all (check this great summary from Dave Rupert to see what native HTML inputs are not accessible ). But on the other hand, there are HTML tags which can help us a lot with structuring our form and…

What every JavaScript developer should know about HTML and CSS

Writing web apps in React or other JS frameworks doesn’t mean you don’t need to have a solid foundation of HTML and CSS. While you may be fine most of the time with basic knowledge, having more in-depth knowledge will help you create a much more accessible, robust and maintainable code. And in the end, deliver better products to your users. I have put together several concepts and practices I…