Mateusz Gorzeliński
gorzelinski.com
Mateusz Gorzeliński
@gorzelinski.com
Software engineer with polymath aspirations.
Stop being afraid of the terminal! Get to know the difference between shell, CLI, and Bash. Learn about commands, file operations, pipes, and more.

gorzelinski.com/blog/jesus-c...
Jesus Christ, that's Bourne... Again Shell
Stop being afraid of the terminal! Get to know the difference between shell, CLI, and Bash. Learn about commands, file operations, pipes, and more.
gorzelinski.com
September 15, 2025 at 3:54 PM
Have you ever wondered why some codebases feel like a tangled mess while others are a joy to work with? It may be related to problems with software design.

gorzelinski.com/blog/the-big...
The biggest problem in software design
Learn how to spot and address common pitfalls in software projects. See how thoughtful design choices can lead to simpler, more robust code.
gorzelinski.com
June 14, 2025 at 3:16 PM
Recently, I was choosing between Cypress and Playwright. I prepared a detailed comparison of those E2E testing frameworks to make an informed decision, and now I'm sharing it with you. Maybe it will be helpful for someone.

gorzelinski.com/blog/playwri...
Playwright vs. Cypress - comparison of E2E testing frameworks
A detailed comparison of two popular testing E2E frameworks - Playwright and Cypress. What features are comparable, and which of them offers more?
gorzelinski.com
May 23, 2025 at 10:38 AM
In this post we will learn how to decorate our cak...code with a tasty TypeScript syntax.

gorzelinski.com/blog/typescr...
TypeScript Decorators
Let's learn how to decorate our cak... code with TypeScript Decorators. Decorators are a tasty addition to classes and provide meta-programming syntax.
gorzelinski.com
May 22, 2025 at 6:36 PM
This post wasn't generated using ChatGPT. Or was it? (No, it wasn't. Don't delegate thinking to AI.)

gorzelinski.com/blog/intro-t...
Intro to AI
Instead of boarding the ChatGPT hype train, let's learn the basics of AI first.
gorzelinski.com
May 10, 2025 at 9:56 AM
Programmers love to automate stuff. But automation is beneficial only when it takes less time than it returns. With GitHub Actions, we may achieve that profit.

gorzelinski.com/blog/take-ac...
Take action and learn GitHub Actions!
Programmers love to automate stuff. But automation is beneficial only when it takes less time than it returns. With GitHub Actions, we may achieve that profit.
gorzelinski.com
May 9, 2025 at 6:06 PM
I like to read books, but sometimes searching takes me more time than reading. So, like a real programmer, I spent more hours automating this process! I created a #Python web scraping script to find books online and wrote a post about it.

gorzelinski.com/blog/sssearc...
Sssearch for books like a programmer
I like to read books, and I spend many hours searching for them. So, I automated this process with a Python script that would scrape books from the web.
gorzelinski.com
May 6, 2025 at 2:14 PM
From the start of my blog, I was worried about the eclecticism of my content, but at the same time, I wanted to diversify it. So, my next post is not about writing code but just about writing.

gorzelinski.com/blog/the-att...
The attitude of writing
What attitude to take during writing?
gorzelinski.com
April 11, 2025 at 1:03 PM
JavaScript developers may be unfamiliar with generics. However, it's a fundamental concept in other programming languages, like C# or Python. Let's continue our series and learn about them in TypeScript.
gorzelinski.com/blog/typescr...
TypeScript Generics
Generics don't exist in JavaScript but are one of the essential concepts in TypeScript. They offer the best of both worlds: flexibility and type safety.
gorzelinski.com
February 22, 2025 at 11:34 AM
Is it Déjà vu? No, I created a post about OOP some time ago. Back then, I wrote it about JavaScript. Now it's time for TypeScript.
gorzelinski.com/blog/object-...
Object-Oriented Programming in TypeScript
Object-oriented programming is a foundation for many programming languages. So, we'll familiarize ourselves with the OOP TypeScript syntax and compare it to JavaScript.
gorzelinski.com
February 21, 2025 at 5:51 PM
I wouldn't call myself a TypeScript expert, but recently, I refreshed my knowledge. With the growing popularity, I think it's a good time to start learning the language. I wrote a few posts about it, so you can learn with me.
gorzelinski.com/blog/typescr...
TypeScript basic types
With the growing usage of TypeScript, I think it's time to start learning it. What is it? Why use it? We'll try to answer these questions and learn some basic types.
gorzelinski.com
February 16, 2025 at 4:33 PM
In this post, we will try to answer the question - what to put in our "heads" to save ourselves headaches caused by SEO problems?
gorzelinski.com/blog/seo-met...
SEO meta tags
In this post, we will try to answer the question - what to put in our "heads" to save ourselves headaches caused by SEO problems?
gorzelinski.com
February 15, 2025 at 4:32 PM
My last few posts were about programming. So, it's time to change the subject a bit. My latest post is about design. More specifically, it is about colors and their formats.
gorzelinski.com/blog/why-use...
Why use HSL in your next design system?
In this post, we will look at different color formats. We'll compare the most popular ones available in CSS: hex values, RGB and HSL. Why use the last one?
gorzelinski.com
February 14, 2025 at 2:07 PM
Modern CLIs like create-react-app or Gatsby abstract a lot of configuration from us. I've thought that learning module bundler like Webpack is now a waste of time. Oh, boy I was wrong.
gorzelinski.com/blog/webpack...
Webpack, Parcel, Babel, blah, blah. . .why do I need a module bundler?
A module bundler is a base for many projects and frameworks. Usually, we don't pay much attention to these underlying tools. But maybe we should?
gorzelinski.com
January 10, 2025 at 3:52 PM
Next.js is reaching 130k stars on GitHub. This meta-framework has gained massive popularity recently. But why? In this breif overview, I tried to answer this question.
gorzelinski.com/blog/next-js...
Next.js overview in 1000 words
Next.js is one of many static site generators. But it has one feature that stands out from the competition. In this brief overview, I'll try to describe it.
gorzelinski.com
January 4, 2025 at 2:20 PM
Programming is more than specific technologies. Recently I was writing about them, but in my first post, I announced I would write about theoretical fundamentals. It's time to fulfill the promise (JavaScript reference intended).
gorzelinski.com/blog/object-...
Object-Oriented Programming in JavaScript
Object-oriented programming is a foundation for many programming languages. So, we'll familiarize ourselves with this paradigm, put it in context and use it in practice.
gorzelinski.com
January 3, 2025 at 3:09 PM
Everyone knows WordPress. Ok, almost. But, if you're remotely interested in web dev, you're probably familiar with it. But there are good alternatives. In this post, I present one of the Git-based CMSes - Netlify CMS. I'll also integrate it with Gatsby.
gorzelinski.com/blog/gatsby-...
Gatsby with Netlify CMS
In this post, we will look closely at a Netlify CMS. It is an example of a new type of CMS that is git-based. We will integrate it with a Gatsby example project.
gorzelinski.com
January 1, 2025 at 3:50 PM
I am used to writing CSS-in-JS. I'm so used to it that I made a stupid mistake in a standard CSS file when I was converting design tokens. I used that mistake to learn some node.js.
Oh, and don't use double quotes in your CSS files.
gorzelinski.com/blog/convert...
Converting design tokens to CSS variables with Node.js
Converting design tokens is an error-prone process - I found about it the hard way. So, I made a simple Node.js script that will help me with that task.
gorzelinski.com
December 31, 2024 at 1:23 PM
Accessibility is often a neglected aspect of many websites. A moving UI can cause vertigo and motion sickness in some users. Keeping that in mind, I wrote a post about how to implement more accessible animations in React.
gorzelinski.com/blog/accessi...
Accessible animations in React
Or how not to spin your users round (like a record). Some animations can make users sick. We'll take care of them and make non-essential animations optional.
gorzelinski.com
December 27, 2024 at 1:30 PM
I like to read books, but sometimes searching takes me more time than reading. So, like a real programmer, I spent more hours automating this process! I created a #Python web scraping script to find books online and wrote a post about it.
gorzelinski.com/blog/sssearc...
Sssearch for books like a programmer
I like to read books, and I spend many hours searching for them. So, I automated this process with a Python script that would scrape books from the web.
gorzelinski.com
December 22, 2024 at 2:50 PM
Why write about gas stoves? Isn't it a boring kitchen appliance? Maybe, but it hides an interesting design issue. Why do we make mistakes igniting them? How does it relate to mapping, and what does it have to do with the Ghost of Tsushima? Look for answers in my post.
gorzelinski.com/blog/why-you...
Why your stove is hard to use?
In this post, I'll try to answer the burning question of stoves and their burners - why do we repeat mistakes when igniting them?
gorzelinski.com
December 21, 2024 at 3:30 PM
I wrote a post about. . .well, #writing. If you've tried to express yourself clearly this way, you know it can be difficult. I sometimes struggle to write a new blog post. So, I've gathered some principles and writing tips that should help us with this craft.

gorzelinski.com/blog/the-cra...
The craft of writing
What constitutes good writing?
gorzelinski.com
December 20, 2024 at 4:02 PM
There is a new JavaScript framework every 6 months - the old joke goes. Besides the ecosystem growing fast, the language itself is developing. The first time I created Gatsby project, I found unfamiliar syntax. This post is about this "encounter."
gorzelinski.com/blog/is-it-n...
Is it native JavaScript? Isn't it??
My first encounter with optional chaining and nullish coalescing operator.
gorzelinski.com
December 17, 2024 at 6:20 PM
I created my website with a static site generator - Next.js. It is a part of a new approach to creating websites - Jamstack. This post has nothing to do with a stack of jams, but it may be juicy regardless.
gorzelinski.com/blog/jamstac...
Jamstack. What, why, how?
Websites and apps created with this new architecture characterize performance, security, and scalability.
gorzelinski.com
December 14, 2024 at 4:00 PM
In this post, I present four universal #design principles. The acronym they create is nasty, but the effects of their use can be pleasant.
gorzelinski.com/blog/stylish...
Stylish design principles with a nasty acronym
In this post, we will look at four universal design principles that can improve any graphical work: website, slide, document, etc.
gorzelinski.com
December 8, 2024 at 12:10 PM