Photo by Chris Henry on Unsplash

I like simple things. Any complexity should be added for a reason, as yet another library in your project, it is additional complexity and there should be a reason for doing that.

Sometimes the reason is that a library decreases (encapsulates) app’s complexity. That’s good.

What if you have similar tasks to do on client-side and server-side for example and it is assumed by common sense that you need to use different tools for that. It is strong enough reason to have 2 look-a-like libraries in your app, well, maybe.

I would say that when I don’t have much time…

An attempt to answer this as simple as possible.

Photo by John Barkiple on Unsplash

Some time ago I read “Simplicity” by Edward De Bono. It was that rare time when a book resonated very deeply with my thoughts, it is not like when you agree with the idea it is like you had something to say, but had trouble to find words for that, and suddenly there is a book about it and the book explains everything super clear.

It happens so I’m front-end engineer and the reason that the book resonated so deep is that whole my career I was trying to find a…

TLDR; In this story, I want to show that frontend engineering can be quite theoretical and mathematically precise.

At Holloway, we try to make the best long-form text reading experience on the web and it includes rendering the whole book at once on a single page because we want to give a user the freedom to “flip”(scroll) pages of our books any way he wants and at any given time.

Obviously, non-paginated long reading content with interactivity is a bit of a challenge to render. We have lots of tooltips, suggestions, bookmarks and every week we add some more.


Learn how to simplify streams rendering with Kefir and React

TLDR; You don’t have to be a javascript ninja to start using streams with React. The article shows a few examples demonstrating how and the component that makes it all so simple.

Photo by Florian Wehde on Unsplash

Streams are awesome. Everything that happens on client-side can be reduced into a stream: a stream of DOM updates, a stream of redux state changes, a stream of scrolling events, etc.

It implies that mastering streams skill is a crucial part of modern client-side engineering.

Luckily, there is a very simple way of how to use/render streams with React. And by rendering a stream I mean converting data…

Photo by Ryoji Iwata on Unsplash

Usually, things like redux-thunk or redux middlewares are used to handle side-effects triggered by redux actions, which can be triggered by button clicks for example. But what if you need to handle a user interaction like mouse or scroll events? Would you create a component that pipes all the events into the redux store loop?

I don’t think so, there are some common-sense limitations for that. You have to deliver those events to your side-effects handling logic some other way.

The simplest solution would be to use addEventListerner and dispatch actions by callingstore.dispatchdirectly, but this is not ideal. We would…

Photo by Park Troopers on Unsplash

As a tech lead at Holloway, I think a lot about software from a theoretical standpoint, sometimes it can be pure philosophy or hardcore algebra. In software engineering interviews, math questions are often used to test analytical skills. But it’s not just in interviews that you need to think mathematically. I’ve found it’s wiser to spend a few days thinking and analyzing a problem before you write a line of code.

A few years ago, in an interview for an engineering role at Stripe, I got a question about building a data store that deletes values after some timeout (or…

TLDR; Sometimes I catch myself on a notion that fixing little things is infinitely boring. I know that it is not really true, it is more like an emotional state and there are ways to have fun most of the times. I would like to share a short story about that.

Photo by Mark Tegethoff on Unsplash

The code

Some time ago I met the code. It was something that makes me feel the same as when I about to hit a pothole and there is nothing I can do to avoid it. Then I hear that bumping sound and blame myself for being not attentive enough.


Photo by Daniel Leone on Unsplash


This article is not intended to “teach you react in 5 minutes” instead it gives a fishing rod, not a fish. So, prepare your patience and focus, you’ll need that.


So, how to start? That’s one the most painful question for me when I try to learn a new framework. Well, you can read all the docs, try all the examples, polish your “TODO app” but by the end, there could be not enough understanding of how things work.

Did I learn enough to start with real apps?

Is there something that I missed or simply got wrong?

And there…

This article is a humble preface for the post about how we build React application’s architecture at while working remotely from distant places with timezone difference up to 12 hours.

TLDR: Details about how information perceived and processed by the human brain could and should be taken in a count in software development as well. The software can be written in a way that makes it easy for a person to understand all the logical structures, a high-level introduction to things that matter described below.


An average human can remember about 5–7 elements in his short memory, a chimpanzee…

Dmitriy Kharchenko

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store