Blog posts

Talking FPV drones on Jay Boston show

Jay Boston invited me on his live show to talk about my experience with FPV drones.

It is a long conversation. We go deep into a range topics:

  • What FPV drones are. What makes them different from consumer drones such as DJI.
  • How to start with FPV.
  • Different classes of FPV drones.
  • Analogue vs digital FPV systems.
  • What equipment you need to fly FPV drones. What to buy and where to buy it.
  • Where to find more information about FPV.
  • Safety of FPV flying.
  • Rules and regulations of FPV flying.

I hope you’ll enjoy it.

Read more →

Blog posts

Introducing backstop-site-test - a visual regression checker for static sites

Person with blue plastic ruler on mouth

Photo by Linus Strandholm on Scopio

This site is built with Hugo static site generator. Being a static site, it doesn’t have a fancy back-end engine. No database either. Nothing breaks if left alone.

Still, Hugo team releases new versions from time to time. They add new features, fix some bugs and add new ones. I don’t upgrade to every new version. But occasionally I want to upgrade.

However, every time I do something breaks. Most often the thing that breaks is not on the front page, it somewhere else deep inside the site.

Time over time again I would upgrade the site and spin it up in a local environment. I would click around it, and everything would look ok. I’d push it to production. Then, days later, I would find a bug that affects quite a few pages. Because it is already in production, I would rush to fix it in the middle of the night till 3 am.

Having been through that a few time, I asked myself: can I do that better? Can I somehow test the entire site for regression and detect problems before I push the site into production?

I rolled up my sleeves and made a thing.

Say hello to backstop-site-test.

Read more →

Blog posts

Introduction to asynchronous operations in Javascript

Synchronous / Asynchronous

If you are learning JavaScript, you no doubt came across things like callbacks, promises, generators, and async / await. Those are asynchronous programming paradigms. In Javascript they are everywhere. If you want to understand JavaScript, you need to understand them. However, there is a problem.

Although there is no shortage of tutorials explaining callbacks, promises and async / await, most of them leave you scratching your head because they don’t answer one question:

What the heck asynchronous mean?

Most of the tutorials and articles I read just assume you already know that. What if you don’t? That’s why you are here.

Keep reading, and I will explain:

  • What synchronous and asynchronous mean
  • Why we need asynchronous operations
  • How asynchronous operations work
  • What kind of operations can be asynchronous in JavaScript
  • How you can make your own asynchronous operations
Read more →

Blog posts

Why are most React tutorials outdated?

Never stop learning

If you are learning React using a book or an online tutorial, you may be in for an unpleasant surprise. One minute you are following along, and then you get pissed off once you realise that the instructions you are following are hopelessly outdated. Even 5-star tutorials are best-selling books won’t protect you from that.

Read more →

Blog posts

Do I still need to bind React functions in 2019?

To bind or not to bind - that is the question

One of Reddit members asked me a question in follow-up to my answer to a question about this keyword:

Why do I need to bind a function if it’s in a class?

Short answer

You don’t need to use bind. If you use the following syntax to declare class methods, then this in them will be automatically bound to the current class instance. It’s magic.

It's magic
class MyComponent extends React.Component {
  myMethod1 = () => {
  myMethod2 = () => {

Note the absence of const keyword.

That syntax was introduced in ES6 class field declarations proposal and already widely supported. That is what you should do when you write React class-based components in 2019. bind is obsolete.

Read more →

Subscribe and receive an email when I publish a new article

* indicates required