Perhaps the oldest yet powerful technique of Functional Programming — Currying, which is basically the method of memoizing some of the function arguments and postponing its call until it gets all parameters.

An example of currying an add function that takes 3 arguments and can be called in several ways.
An example of currying an add function that takes 3 arguments and can be called in several ways.
An example of currying an add function that takes 3 arguments and can be called in several ways.

Getting Started

So when you curry a certain function with N parameters, and if you call it with M parameters, where M < N, it returns a new curried function, which memoizes already passed M parameters and expects the rest of the needed parameters (“N — M”).

NOTE: Currying of a function can be repeated not only once, but as many times as needed until it gets all parameters.


In this example, we will be creating a customizable Modal component with React.

Modal example screenshot

Getting Started

First, let’s see how we want to use our Modal component:

Note that we’re using Modal and Modal.Content. This way we’ll be able to customize from outside both background overlay and modal content element.


One of the best practices for displaying a Modal element is to render it in the body tag instead of inline rendering inside the parent component.

Reasons are:

  1. To avoid issues with z-index.
  2. To have the ability to show Modal even when the parent element is set to visibility: hidden.
  3. To avoid issues when showing nested Modal inside another Modal.

In a simple scenario, we…

Learning Neural Network usually seems difficult due to lots of math and terminologies used inside. However, to get started it is better to understand basic concepts first, without deep diving into underlying math and different variations of neural networks. In this article, we will walk through those fundamental concepts in order to get an idea of what is Neural Network, why we need it, and how it works.

Why use a Neural Network?

Usually, software engineers solve problems using an algorithmic approach.

However, sometimes it is difficult or even impossible to write an algorithm for certain types of problems, like image classification, speech recognition, etc…

A quick overview of what is CSS Modules, how it works, how it’s used together with React, plus some useful tips

What is CSS Modules?

A CSS Modules is a CSS file in which all class names and animation names are scoped locally by default.

CSS Modules is not an official specification nor a standard. It’s a sort of step in the CSS/JavaScript building process, which modifies CSS classes by appending some unique hash, thus ensuring, that your CSS styles are locally scoped and don’t overlap with each other.

How does CSS Modules work?

Your original CSS file will be compiled into a special ICSS (Interoperable CSS) format, which…

When working with Git CLI we usually type lots of verbose and boilerplate commands. However, Git has alias support that might be handy and save a lot of “typing” energy as well as increase your productivity.

Git history graph view alias output (see below examples)
Git history graph view alias output (see below examples)
Git history graph view alias output (see below examples)

Getting Started

Basically Git Alias gives the ability to save some command with different name/nickname.

There are 2 ways of adding new Git Alias:

  1. Adding to the git config file: $ git config --global --edit
co = commit

2. Using Git CLI: git config --global checkout

Note: This is just automated version of “Option 1” for adding single git alias.

  • So using the…

JavaScript nowadays is almost everywhere: on the backend, frontend, desktop, mobile, tooling, etc.

If your project consists of multiple JavaScript repositories, now, it’s much better to move them into a single/mono repository and control them using Lerna.

What is Lerna?

Lerna is a tool for managing JavaScript projects with multiple packages.

I recommend you take a look at lerna commands before we proceed.

Why Monorepo?

Monorepo is NOT about mixing everything together inside a project(do not confuse with monolith).
Monorepo is about having source codes of multiple applications, services, and libraries that belong to one domain inside a single repository.

Note: Monorepo can be organized…

This article shows how to create a simple Node.js app and setup Docker for running the app locally in watch mode inside a container.

Why use Docker for development?

  • Easy starting. New developers need only Docker CE as a prerequisite.
  • The same environment. Everyone working on the project will have the exact same environment (including Nodejs and npm versions, as well as node_modules, if using package-lock.json or yarn.lock). Also min diff with production environment, if app runs in docker container on prod.

Creating Node.js app

  1. Create a new project.
# Create new app directory 

Erzhan Torokulov

Sr. Software Engineer

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