Download PDF

Summary

All I can say about me is that I'm always looking to learn new things and improve my skills in an effort to make the world a better place.

Work experience

2017Present

Senior Software Engineer

elastic.io

elastic.io is a hybrid integration platform. Make a long story short, it means, that you can sync your data across cloud-based and on-premises data sources, using easy-2-use UI designer for that or implementing your own integration component.

Though, 99% you don't need your own integration component, 'cause elastic.io provides a lot of connectors for common cases. Otherwise, it provides with all tools that helps to build your own integration component.

Each of yours integration flows are running on multi-tenant platform that is a combination of Docker containers, connected to each other via queue. So that, each of steps in your integration flow can be scaled independently.

For instance, the problem elastic.io try to solve. Let us assume integration flow that synchronize stock data for products from SAP to Magento. With elastic.io, you can configure flow in UI designer, by defining the following steps: "Query Products from SAP" -> "Map data" -> "Update inventory in Magento". These 3 steps are actually 3 different components you can use in designer and configure them without any code. That's a rough explanation of what's going on and why that.

Technical stack:

  • Backend: NodeJS, JavaScript, Express, Mongoose, Mocha, Jasmine;
  • Infrastructure: DC/OS, Kubernetes, Mesos, Marathon, Docker, RabbitMQ;
20162017

Senior NodeJS Developer \ Technical Leader

Dev-Pro

I was participating in a project, which is responsible for provide integration to different kind of devices: thermal\impact printers, barcode scanners, line displays, magnetic stripe recorders (MSR), card readers, etc... All of these devices can be connected to a system via different types of protocols: TCP\IP, USB, RS-232, Bluetooth, etc...

In scope of our development is to provide an npm library which acts as an SDK for main application - Point of Sale system.

Target platforms for SDK the following: NodeJS, Cordova, Browser, NW.js, Electron.

A short list of devices I was working on:

  • Printers: Epson, Bixolon;
  • Line Displays: Bematech;
  • Payment Terminals: PAX;

My responsibilities:

  • Code review;
  • Technical consultations;
  • Building an architecture, software design of the SDK;
  • Writing a lot of code;
  • R&D;
20142016

Backend/Frontend Developer

Onix-Systems

I rewritten the standalone application, written in PHP, in NodeJS. The project is known as adoric. Was responsible for architecture, code-reviews, tech leading, etc... on that project.

Also, during that time, I built NodeJS department and was responsible for consulting on other projects there.

  • Software architecture;
  • NodeJS development with Sails framework;
  • Frontend JavaScript development and framework's core developer;
  • Interactive Drag-n-Drop editor for HTML;
  • Realtime searching\indexing for metadata over 20 000 radio stations;
  • Coaching NodeJS team;
  • Technology evangelist inside the company;
20132014

Backend/Frontend Developer

Onix-Systems

I was responsible for supporting WordPress plugin which allowed users to build banners for their WordPress-based website. Soon, plugin was rewritten as a standalone application with different types of integration with customer's site.

  • JavaScript, jQuery, svgedit;
  • PHP, WordPress;
20122013

Backend/Frontend Developer

MAA

I was responsible for processing data from GPS devices and rendering it on the client-side. That way, managers could view vehicle's exact location from browser in realtime. Also, they could build tracks from archive data and play timelines, based on that.

  • JavaScript, jQuery, OpenLayers, Google Maps API, OpenStreetMap API;
  • PHP (without frameworks);

Education

Projects

Here are some projects I've worked on.

adoric - is a project that helps you effectively convert your website traffic into customers and maximizing your conversion rate. The main idea behind this is to build HTML-based banners via Drag-n-Drop editor which can be integrated in any website. Afterwards, it provides you with a statistic like impressions count, clicks count, CTR, etc... that you can track in your dashboard.

Jumperstreaming realtime videos from your phone to your followers. Same way Periscope does it, but we were trying to do this a long time before Periscope was born. I was responsible for REST API development based on NodeJS\Sails and highload configuration for Flussonic streaming servers.

generator-sails-rest-apiYeoman generator for scaffolding Sails REST API with predefined features. Most of the projects during my job was based on REST APIs. So, I've decided to create a scaffolder that simplifies most of the issues with REST API development. That way, it decreases estimates for a "project from scratch" by 2-3 times.

pascal-interpreter - I was driven by idea to get know how do compilers and interpreters work. That's why I created a simple interpreter for Pascal language in NodeJS. It supports all the basic constructions in Pascal and even can support some basic scopes and symbol tables in those.

KittikJS is an engine for creating presentations in terminal via ASCII graphics. It's bundled as SDK you can use it in your NodeJS projects or you can use CLI tool to create YAML files with presentation declaration. KittikJS supports different shapes, animations, embedding code, etc...

SimpleOS - I was inspired to know more about OS internals and how do they work. So, I've started to read a lot of articles\guides\tutorials\white papers and implement my own simple operating system with C and Assembly. It has few drivers for screen and keyboard support and a simple echo shell.

NodeJS - When I have free time, I'm participating in NodeJS development. Currently, I am an outside collaborator of JavaScript part of NodeJS.

Publications

Public Speeches

I've started participating in JavaScript community at 2014 and became a speaker at 2015. This portfolio contains some of my public speeches.