Articles

Interface Segregation Principle in React

August 27, 2024

The SOLID principles were the first software design concepts I ever studied and to this day they remain the most influential piece of…

Common Sense Refactoring of a Messy React Component

July 31, 2024

One thing I’ve learned from all the consulting I’ve done is that rewrites rarely lead to anything good. Almost in all cases, when you have…

A Front-End Engineer's Take on LLMs

May 16, 2024

I dabbled in data science years ago but it’s just not my thing. The end product of creating a model is incredible, but long ago I conceded…

Locality of Behavior in React Components

May 01, 2024

You don’t need design patterns or principles to build software. You can write everything in a single file that executes from top to bottom…

How to Style a React Application

April 17, 2024

We don’t build web applications the same way we did a decade ago. We don’t think of pages, we think of components. We don’t pass data to the…

Building a Proper REST API

February 29, 2024

When I started my career, REST was at the peak of its adoption. It had become the de facto standard for designing web APIs with vast amounts…

Clean Architecture in React

February 09, 2024

The more information we have up front when we’re building a software product, the better it will come out. But I’ve only heard legends about…

Between Art and Algorithms

January 14, 2024

I was more of a humanities person in high school. Didn’t do great in math and informatics, loved history and philosophy. So most people were…

2023 Year in Review

December 20, 2023

When I sat down to write this I expected it to be a couple of short paragraphs. A few words about work, family, challenges, how much I’ve…

Setting Up the Project

December 15, 2023

You’ve got an initial grasp of the domain, you’ve settled on a tech stack, and now your fingers twitch to start writing this complex feature…

Picking a Tech Stack

November 17, 2023

Understanding our product’s domain is the first thing in our engineering checklist because it will help us identify the specific technical…

Write Things, Tell People

November 14, 2023

There’s this article that’s as old as the internet called Do Things, Tell People. It goes on about how success comes as a result of those…

Start With the Domain

October 30, 2023

So you have finally started working on this greenfield project! Or perhaps you just joined a new company or team? Maybe you got an…

Building Low Level Components the Radix Way

September 10, 2023

A few years ago, keeping up with the JS ecosystem was my part-time job. I’d spend weekends trying out libraries and staying informed about…

Managing State Outside of React

August 22, 2023

My blog is something of a trophy case of mine. Like a hunter who hangs the antlers of a stag on their wall, every time I solve a technical…

How BlueSky Structure Their App and Manage State

June 05, 2023

Browsing through libraries is an enriching experience, but they’re too focused and lack the architectural depth that building an entire…

Reflections on Building Tavern

May 24, 2023

The big idea of building startups in the last two decades was idea validation. Ensure you’re on the right track before investing excessive…

How to Structure Next Applications

April 30, 2023

React finally got better docs this year and right now they’re the best resource to learn the technology and its ecosystem. One of the…

An Ode to React Effects

March 31, 2023

Hooks got mixed responses when they were announced. I remember the miles-long GitHub thread explaining the new API and the avalanche of…

Reading Code - Chakra UI

February 27, 2023

I spent over a year as a principal engineer in one of News UK’s platform teams where we were building libraries and tooling for the other…

Use Databases Without Putting Domain Logic in Them

February 09, 2023

Even though I’m very passionate about front-end development now, I started my career with different intentions. For the first few years, I…

I'm Building Something

January 28, 2023

Most of my articles reflect on things I’ve built in the past. Trying to make sense of it all, I share insights about a challenge mixed with…

2022 Year in Review

December 16, 2022

I will spare you the pathos of how quickly time passes. But I will be overly emotional about how the last twelve months have changed me. I…

Hexagonal-Inspired Architecture in React

November 30, 2022

My grudge against the front-end community is that we’re too focused on improving low-level APIs and building new tools instead of thinking…

Accumulating Unintentional Tech Debt

October 31, 2022

I’ve consistently underestimated the effects of tech debt. All the books and blog posts have branded its negative impact in my mind, but I…

A Half-Hour to Learn JavaScript

September 30, 2022

I’ve been writing JavaScript on and off for nine years at the time of this writing. And if you’ve been close to a browser, chances are that…

We Don't Need Faster Frameworks, We Need Better Tooling

September 26, 2022

Around ten years ago, businesses realized that building desktop applications was not a resource-effective way to go. You must create…

My Writing & Publishing Pipeline

August 29, 2022

In early 2021 I set out to write Tao of React with nothing but raw ambition. I had finally decided to write a book, albeit a short one. So I…

Reading Code - GitHub Hotkey

August 21, 2022

After I read React’s code last month, I went on Twitter looking for recommendations about the next project to review here. There were some…

A Testing Philosophy

July 29, 2022

I’ve written a lot about software development, but I’ve been silent when it comes to testing. Quality assurance is not my strongest side and…

Reading Code - React

July 15, 2022

It’s daunting to even think about reading the code of a framework I’ve been using for years. I’ve always seen React as a black box that…

Why I Like Hexagonal Architecture

June 20, 2022

I haven’t written that much clean code in the last nine years. I’ve created features and entire products on my own. But looking at my code I…

Reading Code - React-Query

May 17, 2022

When I’m exploring an unfamiliar codebase I start with one of its public APIs. In this case, it was , arguably the most widely used React…

The Time I Built a Game

April 30, 2022

In the summer of 2021, I worked on one of the most complex projects I’ve ever put my hands on - a game. Gaming was the spark that sent many…

Functions, Objects and the Principles I Follow

April 11, 2022

I know my way around a React application or a REST API but when it comes to writing domain logic there is nothing to hold your hand anymore…

Things I've Learned About Interviewing People

March 30, 2022

I can feel my stomach turning before an exam no matter how much I’ve studied for it. But it’s nothing compared to the wave of emotions that…

Tao of Node - Design, Architecture & Best Practices

March 14, 2022

One of the main benefits of JavaScript is that it runs both in the browser and the server. As an engineer you need to master a single…

Ramblings About Clean Code

February 28, 2022

I learned to program in a bootcamp and together with all the introductory courses we had a brief lesson on high quality code. No matter how…

The Hard Things About Front-End Development

February 15, 2022

When I started programming there was a notion that front-end development is easy. At the time it was little more than arranging HTML…

The One Time I Needed Computer Science

January 25, 2022

When I was in high school, I would solve problems in math class, wondering when I would ever need to do this in life. Naturally, I was…

Reading Code - Redux

January 12, 2022

Few things have obsessed me throughout the years as much as programming. Maybe the only other activity that held such an important role in…

2021 Year in Review

December 28, 2021

Another twelve months have slipped by. In recent years I can’t keep up with the calendar’s pace and I finally understand what my grandmother…

The Perfect System Doesn't Exist

November 15, 2021

I am yet to meet a software developer or a construction worker who is satisfied with the job of the person before them. After more than…

Extracting Microservices from a Monolith

October 27, 2021

When I first started dabbling in distributed systems, I realized that some things I would have to grasp only theoretically. I understood how…

Migrating Legacy Monoliths With GraphQL

October 15, 2021

I can’t even fathom how much code is shelled out on a daily basis. Despite the hot market, putting together a team to deliver your company’s…

The Monopoly on Business Understanding

September 27, 2021

The cruelest thing to ever happen in the software industry is the belief that engineers don’t understand and they don’t have to understand…

One Line of Code Changed My Perception of Programming

August 26, 2021

In the first years of my career, I was fascinated by building products. I could masterfully chain together libraries and integrate third…

What Startups Taught Me About Writing

July 20, 2021

I’ve always wanted to write a book. Not sure how those aspirations started, but when I look at the colorful spines, ordered neatly on the…

On the Importance of Software Design

May 31, 2021

To get a deeper understanding of a concept we need to detach. To step away and find a new angle of observation. It’s surprising how much we…

Reflections on My Journey as a Developer

April 12, 2021

I don’t have the traditional programmer’s background. I don’t have CS degree, didn’t do well in math and wasn’t interested in programming in…

Reading Code - Lodash

February 28, 2021

What does it take to build a successful open source library? I imagined that most packages have complex structure, layers and abstractions…

Tao of React - Software Design, Architecture & Best Practices

January 18, 2021

I’ve been working with React since 2016 and still there isn’t a single best practice when it comes to application structure and design…

Reading Code - Express

January 11, 2021

I think that one of the best ways to learn about building software is to explore other code bases. Nothing beats seeing how a successful…

2020 Year in Review

December 22, 2020

We all started 2020 with the idea that it’s our year. In turned out it’s not. Everything was business as usual until March. Then Europe gets…

Conway's Law - The Reason Software Mirrors Organizations

September 26, 2020

A company grows and their now legacy monolithic software doesn’t perform well. Engineers are complaining, features take long to release and…

Why Do We Use Design Patterns

September 05, 2020

Something that I was thinking about a lot when I first started working as a developer was why do we use all those complicated design…

Chasing Errors in Unexpected Places

July 17, 2020

After a long break from personal projects, the situation around the virus inspired me to build something on the side again. I’ll spare you…

How To Write Good Comments

July 06, 2020

Comments - a powerful feature of each programming language that we either abuse or avoid as the plague. Undoubtedly one of the everlasting…

Encapsulate What Varies

June 15, 2020

The only constant thing about requirements is that they change. As engineers we need to translate the complicated patterns of the real world…

Avoid Passing Booleans to Functions

June 01, 2020

Proper software design is a challenge in which functions play a critical part. They are the fundamental building block that groups and…

Leaky Abstractions

May 27, 2020

Abstractions are used to hide broad and complex concepts behind a single idea which is easier to understand. We use them to remove the…

The Cost of Wrong Abstractions

May 18, 2020

You join a new team and after a brief onboarding you are given your first task. It’s a simple one - you need to display an additional input…

Bikeshedding and The Law of Triviality

April 29, 2020

A team of engineers are sitting in a conference room discussing a new service. They quickly decide on the API and storage. Availability…

Art, Details and Abstractions

April 25, 2020

The single thing that made me a better software engineer is understanding the concept of abstraction. To illustrate it, imagine this…

What Is Complexity?

March 31, 2020

What do we mean when we say that something is complex? A system, a module, a class - they can all have that quality. When we talk about…

The T-Shaped Engineer

March 12, 2020

The choice between being a specialist or a generalist is debated by many engineers. Nowadays, the industry may need something in between…

Tabs or Spaces

February 25, 2020

I don’t remember when I found out about the timeless debate on tabs and spaces. I’m a self taught developer and I’ve missed some of the…

The Economics of Technical Debt

February 04, 2020

Technical debt - a tool used to negotiate a refactor for the mess you made 6 months ago. It is often mentioned in the company of other…

Legacy Code and Chesterson's Fence

January 20, 2020

Ah, legacy code. Two words that can strike fear in the heart of any developer. Two words that if mentioned in front of your developer…

The Philosophy of Software Development

January 03, 2020

Software development is considered a field ruled by logic. Every decision we make is guided by rules that we can follow and understand…

2019 Year in Review

December 30, 2019

When I sat down in January I had quite the ambitious goals of where I want to be personally, professionally and spiritually in December…

To UI Engineering and Back Again

November 01, 2019

This is going to be one of those once upon a time articles so buckle up and prepare for a story. When I wrote my first lines of code I wasn…

How Good is TypeScript?

September 05, 2019

You may be asking yourself if using TypeScript for a project is a worthwhile investment of your time. The hype around it is high…

How to Structure of Express Applications

May 06, 2019

When I started my first job I worked with PHP. We built WordPress projects - sites, ecommerce and the occasional plugin. After I did that…

The Lean Design System

February 08, 2019

In the scope of this article I will explain what a design system is, how it works and the benefits it provides even for small hobby projects…

Jiu-Jitsu and Becoming a Better Developer

January 14, 2019

In the beginning of each year we start looking back at what we accomplished in the previous one and what we didn’t. We look back at the…