Welcome

I'm Vladimir Upirov,a Software Engineer,a JS Full Stack Dev

Programming is not just a job for me,
this is my passion.

Vladimir Upirov

About Me

Hello, my name is Vladimir Upirov, and I am a Software Engineer, and I specialized in JavaScript as a Full-Stack Developer. I'm conscientious, highly motivated, reliable, responsible, resourceful and detail-oriented. I always try to do my best, and I still work on improving my skills.

I finished Kharkiv National University of Internal Affairs in 2011 and got a Bachelor's degree in Computer Science. At the university, I studied such programming languages as Pascal, Delphi, Php and JavaScript. Currently, I'm concentrated on JavaScript and have in-depth knowledge of this language. However, I'm a little familiar with other languages such as Java, Objective-C, Dart and Python, but only on syntax level and the basic principles. Also, I'm passionate about graphic design using Adobe Photoshop and Illustrator. For instance, all the images on this website are produced by myself.

As a software engineer, I've been working since the beginning of 2013, and within this period, I worked on several long-term projects, including outsourcing, part-time, and remote. I gained lots of experience in web development using JavaScript and related technologies. Previously, I've been working with Backbone framework for three years, and in the last four years, I've been working with React/Redux and NodeJS stack. Since 2016 I've been working in Backendless team as a Senior Software Engineer.

Main Accomplishments

During my work as a programmer, I achieved lots of obligations, here are some of them that make me feel so proud.

Dashboards & Consoles

I worked on projects where an essential part of the product is either the admin console or customized desks. Unfortunately, I have no right to divulge information about most of them as they are for internal use only. However, there is one about which I can tell with pleasure. Backendless is a Mobile Backend as a Service (MBaaS) platform which developers use to speed up app development.

After a while, as I started working on this product, the task was to create new Console 4. For that, we decided to use the most modern technology stack: React/Redux, Webpack and NodeJS, and it was the right decision because if you take a look at the statistic of technologies usage in 2019, this stack remains quite modern, suitable and with a vast community around.

At the first stage, I was responsible for creating basic layouts and components along with sections such as Main Dashboard, Manage, Analytics and Date Service. I worked closely with both Frontend and Backend team members. And together, we were able to make the first release 4.0 in a reasonably short time.

On this project, I successfully implemented many complex components such as Charts, SmartTable, DateTimePicker, which can also be reused on other projects. Also, I have successfully done several services and features such as API Generation, Codeless, Push Notifications Designer, Real-Time Logging, etc.

Dashboards & Consoles image
Dashboards & Consoles mirror image

Rich Data Visualisations

One of my favourite parts in Frontend development is data visualization, uniquely interactive and well-styled visualizations. I have rich experience in building graphs of various types of complexity. I worked with many libraries such as Highcharts, Chart.js, FlotCharts, but also I like to create my own visualizations using D3.js library.

While working with maps, I've been working with various providers such as GoogleMaps, OpenStreetMap, BingMaps. I used D3.js for adding overlay visuals such as Heatmap, Geohash, Points, Lines and Arias.

Typically an integral part of the work was the introduction of interactivity into the visualization like DrillDown, Thresholds Sliders, Time-shifting. Where is was possible, I did Caching, Aggregations, Data Breakdowns on the client to increase performance and responsiveness.

Rich Data Visualisations image
Rich Data Visualisations mirror image

Real Time Server

Real-Time Server is one of the dominant services in the Backendless platform. We call it RT, and it is the link between the Backendless Core and the client application for the instant delivery of new data in real-time. The service includes features such as Real-Time Data, Messaging and RemoteSharedObject, etc.

A couple of years ago, I designed this system based on the socket.io library on NodeJS. I also implemented a client module RT-Client that is used both in the JS-SDK and on the Console. The server is capable to work with any Backendless SKD including Flutter-SDK which was added not so long ago. For load balancing, this service is well-scalable and easy to configure.

RT made it possible for our customers to have up-to-date data in their applications and in the Console as well. Throughout the implementation phase, I worked closely with other team members, including CEO, Core team and Android/IOS developers, and together we brought it to life.

Real Time Server image
Real Time Server mirror image

Reusable JS-CodeRunner Workers

Backendless provides customers with an ability to write Cloud Code. And JS CodeRunner is designed to process the code on Backendless' servers. For security, the Code Runner launches each task in a separate process, known as Worker. But for starting a new process and load all the necessary code and modules, NodeJS, takes about 100ms of time.

So, to improve performance, I added workers` cache. Each time when the Code Runner receives a new task, it can determine if there is a corresponding worker to process the job or launch a new one. Once the job is done, the worker goes to the pool of idle workers and will wait time to be profitable again. In case if the pool is already full, the last used worker will be removed to leave the place for a new one.

I also added priority consideration between low and high priority tasks. In general, these improvements accelerated task processing by about 30-40% which has a good effect on overall performance.

Reusable JS-CodeRunner Workers image
Reusable JS-CodeRunner Workers mirror image

Codeless

Codeless is based on Blockly library provided by Google, and this is an alternative to create Cloud Code in Backendless. Using an intuitive user interface you can represent your algorithm in two minutes. Since each block has an accurate description, the system might be used even by children.

I've built Codeless Designer a few years ago and since that time I've added numerous specific blocks for working with Backendless API and helper blocks as well. There were implemented many further features such as Blocks Search, Frequently Used, Custom Functions and etc.

Codeless became popular not only for customers who are not familiar with programming, but experienced developers and engineers. In the near feature, the Codeless will be used for building logic for Single Page Application in UI-Builder.

Codeless image
Codeless mirror image

React Native & JS-SDK

I've created the React-Native JS-SDK Patch, which consists of 2 native modules written on Java and Objective-C languages. The patch extends the capabilities of the Backendless JS-SDK in React Native environment.

The API for registering devices was simplified to avoid installing any additional modules for getting device information such as token, OS, version and etc. Additionally, I've added code for receiving remote push notifications out-of-box, along with an ability to use Push Notification Templates and Push Notification Actions.

With this module, Backendless customers have a more straightforward way to set up remote push notifications in their React Native applications. I've written how to use it in this two articles for iOS App and Android App

React Native & JS-SDK image
React Native & JS-SDK mirror image

Getafood Platform

Getafood is a young Ukrainian startup that is intended for searching and delivering home-made food. The service consists of an API Server, a WEB and Mobile applications.

I've built this project from scratch, starting with the designing database structure and ending with the automation deploy process to several servers. I was responsible for developing the server-side and also the WEB App. Plus, I created an API module that is used both on the WEB and Mobile applications. I've been mentoring a React Native developer, including assigning tasks, giving recommendations about architecture and best practices, and code review as well.

The main tech stack on the server includes Feathers, MongoDB and Redis. Web App is a SPA which is built using React/Redux and Material-UI. Along with typical login via email, a user able to login with Phone Number and Social Networks as well. Real-Time Data updates and Messaging is designed by using sockets and Redis. To improve performance, I've implemented a smart cache on the client-side, which can be updated from the server by necessary. For SEO, I've done server-side rendering with differentiation by GEO locations and languages.

Getafood Platform image
Getafood Platform mirror image

Main Skills

Any successful engineer has lots of professional skills, and here are some of mine.

Building From Scratch

There are several projects I've started from scratch with a team and personally as well. I like it because every new app is always much better rather than the last one. You can build on your previous experience and bring all the best practices into a new project. It is also a possibility to pick up a modern technology stack.

Architect

A well-designed architecture is key to the right product. When I'm designing a system, I always follow the main rule that tomorrow everything might be changed, and the system must be adapted quickly to the new requirements to save time and money. I love to be aware of the entire product's process.

UI/UX

The best interface is one that does not require any additional explanation. In my work, I try to strike a balance between beauty, convenience and productivity. I'm capable to work closely with graphic designers, or you can tell me what you need, and I'll build it for you. I always try to look through the eyes of the end user to make intuitive UI.

Team Player

It is impossible to build a large project one by one. For this, a strong team is always necessary. I like to share my experience and opinion with other team members and, from time to time, ask for advice on what is the best way for something.

Reusable Code

I frequently have to produce my own components, libraries, modules, or services, and I always look at the opportunity to reuse this code in the future. I always try to write code that can be transferred to another project with minimal efforts. It allows you to complete the task much faster and start a new one.

Problem Solving

I like to solve complex issues. The more challenging is the task, the more exciting and creative the solution will be. To solve problems, I usually use skills such as Analysis, Research, Creativity, Decision-making and Counselling. I am also able to solve problems quickly.

Code Style

Well-readable code is always only a big plus. All the teams I've worked in, we had certain agreements on the code style. When there is a stable project style, each team member can easily understand the code, and this increases overall productivity. On all the projects, we also had a robust code-review process.

Testing

I’m used to valuing my time and the time of my colleagues. Therefore, before transferring the completed task to QA department, I always double-check everything and try to predict problem areas in the code even if it wasn’t described in requirements. I also write both Unit and Functional tests.

Integrator

I have quite a lot of experience in integrating various 3rd party services into a project. Sometimes you have to read a lot of documentation, but sometimes you need to dig into the source code to understand how it works from inside and find a solution to get everything working together.

Companies

Please take a look at my journey, companies and projects what I worked at.

Backendless Corp
Getafood
Spirent Communications
Tektronix Communications/Netscout
Midnight Coders, Inc
Police Department

Backendless Corp

From January 2016 to the present (5 years)

Backendless is a software development platform designed to streamline and accelerate mobile application development process. The platform consists of a mobile backend-as-a-service (MBaaS) product, API management solution and a hosting environment. Using the platform developers can reach new levels of productivity without focusing on the complexity of the server-side.

Working at this company, I've archived lots of experience with Cloud Code, RealTime, Code Generation, Relational Databases and SQL.

JavaScript TypeScript Java Objective-C React Redux Webpack Bootstrap Less D3.js NodeJS Express Socket.io Redis SQL Docker Blockly

Getafood

From August 2018 to July 2019 (1 year)

GetAFood is a young startup from Ukraine. Across the globe, there are lots of people who adore homemade food, and the platform helps them to find the best ones and order it in a few clicks.

  • Developed API Server based on Feathers framework, designs NoSQL database structure and API
  • Developed API Client for using on both WEB and Mobile Apps
  • Developed WEB App using React/Redux, Material-UI and Express
  • Configured sending Emails and Remote Push Notifications along with notifications through Sockets if the client is online.
  • Implemented Server Side Rendering for SEO and generates dynamically sitemaps
  • Setup Automation Tests and bash scripts for deployment to several servers
  • Worked closely with the client to discuss improvements and plan the next iteration
  • Planned Tasks and Code Review
  • Mentored ReactNative developer

On this project, I've improved my skills of the entire development process and also gained experience in SSR and SEO for Single Page Applications.

JavaScript React Redux Material-UI Webpack NodeJS MongoDB Feathers Socket.io Redis SEO SSR

Spirent Communications

From November 2014 to December 2015 (1 year)

Spirent is the leading global provider of testing, assurance, analytics, and security solutions. From physical and virtual service provider networks and enterprise data centers to mobile communications and connected vehicles, Spirent works with leading innovators to help the world communicate and collaborate faster, better, and more securely to provide a superior user experience.

  • Starts rewriting old web app to Single Page Application for managing hardware tests, using Backbone, RequireJS, Handlebars and Bootstrap stack
  • Implemented base layout/components and basic screens
  • Implemented numerous popups/forms for configuring test's parameters
  • Integrated "take-a-tour" functionality
  • Integrated Help System
  • Writing End-to-End tests using Nightwatch.js and PhantomJS
  • Code Review

During this project, I received new experience in building new front-end projects from scratch, designing MVC architecture and working with complex forms with many options and cases.

JavaScript Backbone RequireJS Bootstrap Less Handlebars jQuery jQuery-UI Express NodeJS GruntJS

Tektronix Communications/Netscout

From March 2013 to January 2016 (3 years)

NETSCOUT Systems, Inc. is a provider of application and network performance management products. Headquartered in Westford, Massachusetts, NETSCOUT serves enterprises community, government agencies and telecommunications service providers. In July 2015, NETSCOUT acquired the communications business of Danaher Corporation, including Arbor Networks, Fluke Networks, Tektronix Communications and VSS Monitoring.

  • Developed several Single Page Web Applications for analytics using Backbone, RequireJS, jQuery and Bootstrap stack
  • Implemented complex, customizable dashlets for analytics, with many filters, aggregation and drill-down options
  • Implemented various visualizations using D3.js and Highcharts libraries
  • Implemented various composed visualizations based on maps
  • Implemented Smart Cache of large data sets on the client for improving performance
  • Developed graphical UI Query Builder for Elasticsearch
  • Code Review
  • Writing Unit and Integrations tests

I gained tremendous experience in developing complex, composite and interactive visualizations. Also, I obtained experience in working in an international team which contained developers from countries such as the US, Ireland and Ukraine

JavaScript Groovy Java Spring Backbone RequireJS Bootstrap Less D3.js jQuery jQuery-UI Highcharts.js Maps

Midnight Coders, Inc

From March 2013 to the present (8 years)

Midnight Coders is a leading provider of integration technology that enables universal client-server connectivity for desktop, browser and mobile clients that must communicate with services, data and media located anywhere, including Cloud Computing environments.

The company has an office in Ukraine where I've been working since 2013. The company develops outsource projects and own products as well. In this company I've worked at such companies as:

Since 2016 I've been working in Backendless team. I'm so proud to work at this company because of bright and intelligent people work here, and also interesting tasks always improve your tech skills.

Police Department

From June 2011 to March 2013 (2 years)

The militsiya was the national police service of Ukraine from the 1950s until 2015. The militsiya was formed whilst Ukraine was governed by the Ukrainian Soviet Socialist Republic, part of the Soviet Union, and continued to serve as a national police service in independent Ukraine until it was replaced by the National Police of Ukraine on 7 November 2015.

I graduated at 2011 and got Bachelor's degree in Computer Science, and since I've finished military university I was sent to Police Department by distribution. There weren't responsibilities related to programming, however, I gain lots of other skills which are not less important. For instance I was responsible of round-the-clock patrol program, I scheduled duty lists, assigned police officers and gave daily missions for each team. I loved to assign myself into team to see how it works from inside, and determine what I can improve the process to increase productivity of the program.

  • Prepared crime reports and made predictions for next periods.
  • Prepared a statistic of the Police Department productivity
  • Schedule duties and manage subordinates officers
  • Went to the round-the-clock patrol as a senior patrol officer
  • Controlled an emergency center by checking all the recorded phone calls

Working at the Police, I've archived lots of skills such as responsibility, leadership, analytics, planning and fast problem-solving.

Recommendations

The best way to understand who I am is by asking people I worked with.

Recent Articles

I love to share my experience with other developers through my articles and guides.

Social App Backend With Backendless (Part 1)
Social App Backend With Backendless (Part 1)

There are a lot of social applications around the world, such as Facebook, Twitter, WhatsApp, Instagram, etc. If we take a look under the hood, however, we can see they all share pretty standard features.

February 18, 2020 by

How to Create a Web App Using React and Backendless (Part 5)
How to Create a Web App Using React and Backendless (Part 5)

ReactJS remains one of the most popular hybrid frontend development languages on the market today. In this article, we are going to continue developing a React application using Backendless as the backend by showing how to add real-time alerts to your app.

November 6, 2019 by

How to Setup Push Notifications In a React Native App (iOS)
How to Setup Push Notifications In a React Native App (iOS)

Recently we published an article titled “How to Enable Push Notifications Using Backendless in a React Native App (Android)”. Now we are going to continue demonstrating how to enable push notifications, this time for iOS devices.

June 4, 2019 by

How to Build a Light REST Client with JavaScript for Backendless
How to Build a Light REST Client with JavaScript for Backendless

Some Backendless users choose to use REST APIs in their JavaScript projects. While many can simply use our pre-packaged JS-SDK, that SDK may not always be able to achieve the result the user is seeking. In this article, we’re going to show you how to build a custom and very light API client library for working with Backendless API.

March 14, 2019 by

Building Simple License Manager API Services
Building Simple License Manager API Services

One of the most powerful features that Backendless has available is the capability for you to implement your own License Manager for creating and checking licenses for your product/customers.

February 22, 2019 by

How to Monitor Real-Time Connections in an Angular App
How to Monitor Real-Time Connections in an Angular App

Today we will talk about how to monitor the client’s Real-Time Connections in your Angular application. This tutorial continues the guide on how to build Angular apps with Backendless.

June 16, 2018 by

Drop me a line

Please use the form below to contact me