Roman Bekkiev

Roman Bekkiev's photo

Software engineer with about eight years of experience

Expert in JavaScript. I have wide experience in creating client-side JS applications based on modern MVC/MVVM/FRP frameworks (Knockout, Backbone, Flux[Redux]+React) and with vanilla JS as well. I also have some experience in server-side development (Node, Express, Koa, MongoDB etc.) and, of course, in automation scripting (Gulp, Webpack etc).

Master in HTML and CSS including HTML5 and CSS3 (+SASS, BEM etc.).

Solid understanding of design patterns and programming principles (DRY, SOLID, functional approaches etc.).

GNU/Linux and FOSS fan.

Self-educated; constantly evolving.

Demos

Small pet projects and porjects performed as a test assignments

VR experiments

Task: I was allways frustrated that such a powerfull technology as VR used only for recreational goals. However, to use it for something more meaningfull there is evident lack of controls. So why not to use familar PC controls every body used to? In this demo I work on thing that will sync your PC with VR view in Chrome for Android so you can use mouse and keyboard as ususlly.

Tech stack:

  • THREE.js
  • Socket.io (p2p addon)
  • Webpack

Notes: To be able to move camera view you should to open the same page on your mobile device.

Date: Currently under construction

Data analyst

Task: create a SPA with suite of diagrams. User can click on diagram and open it's full-size version. User can change title of diagram or axis. SPA should contain "help" section.

Predefined tech stack:

  • Backbone
  • Require.js
  • Grunt
  • Highcharts

Notes: I made application with something big in mind. Therefore user can load "suite" – a set of diagrams and dataset separately via network (in examples used GitHub API). I focused on scalability and maintainability, therefore I added few additional layers of abstraction, e.g. drivers for visualisation libraries - in case if it will be decided to switch to D3 or something once.

Cool stuff: Help page is written in markdown and compiles to HTML in browser.

Design: mine, inspired by Material UI

Date: Feb, 2015

File manager

Task: create a SPA that will get from specified API list of files and show them. User should be able to sort files by date, size, filter them, enter folders etc.

Used tech stack: (no predefined requirements)

  • React
  • Flux
  • Browserify
  • Gulp
  • Babel
  • Jest

Notes: In this assignment one of the main problem to solve was to pick the tech stack. I used React/Flux based stack because there was no obvious controllers but obvious components and it looked that there was no need for two-way data binding. I was very satisfied with this decision and this stack (with Redux and Webpack instead of Facebook's Flux and Browserify) became my favorite. Only Jest was a nightmare. I never tried to use it sice that.

Cool stuff: Mocked API was generated with api-mock library by apiary.

Design: mine, based on Material UI

Date: Apr, 2015

Github viewer

Task: create a SPA that will show issues from selected github repo using public github API. It should use browser history (via hash) have pagination etc.

Used tech stack:

  • Backbone
  • (Predefined)
  • Gulp
  • Karma + Mocha + Chai

Notes: This assignment was focused on robustness and stability, so I spent significant time hunting bugs and stuff. One of the main requirments was use as few third party libraries as possible. App also "should not be another standard Bootstrap app" so I created look and feel from scratch but with inspiration in my favorite Google's Material UI. Taks-giver also asked not to publish sources in public repos.

Design: mine, inspired by Material UI

Date: June, 2015

Component editor

The very first prototype of what later became Skem.io (see projects section). In this app user can place onto workspace React-Bootstrap components, extract parts as a new components, edit styles and properties of components. Finally, whole app and its components can be "exported" as JSX billets.

Used tech stack:

  • React
  • Browserify
  • Gulp
  • Babel

Cool stuff: When I started work on Skem.io I had to throw away almost all code from this prototype.

Design: Bootstrap

Date: June, 2015

Calendar

Task: create a calendar app using .psd mockup. User should be able to add, remove, expand events. Events should not been removed after page reload.

Used tech:

  • KnockountJS

Cool stuff: It was the simpliest test assignment. I even didn't use in it any dependency management system.

Design: provided in task

Date: Apr, 2014

Projects

My open-source projects or startup remains

Skem.io V1

The first version of Skem.io is basically an graphical user interface upon React with built-in visual functional programming language which is compiled to javascript and adds custom logic into components. User can create application, views and components; add elements into them, edit their appearance, using CSS WYSIWYG editor; compose logic schema of components manipulating function blocks and connecting them with wires.

Tech stack:

  • React
  • Redux
  • Babel
  • Webpack
  • Karma-Mocha-Chai

Design: mine, Bootstrap (SpaceLab), A. Sidorov

Date: Jul, 2015 – Feb 2016

Skem.io V2

In second version of Skem.io we got rid of visual programming language (because it turned up that it is still too hard for end user). Instead we added an interface for Redux data flow and make everything working at the same time and place where user edit it. There is no public preview yet but there is a teaser demo video.

Tech stack: mostly the same

Design: UX mine, design by A. Sidorov

Date: Feb, 2015 – May 2016

Canvas-tree

The library to render tree structures on a canvas in a declarative way. You just feed to the library object that looks pretty similar to DOM and canvas will draw that object every time. The nodes of that object contains "geometry" - the function returning Path2D, styles to be applied and event listeners. The library was developed for Skem.io visual programming language editor.

Date: Feb 2016

Scilance V1

Scilance was intended as freelance platform and kind of social network for scientists and engineers. It was my first big internet project because of which I came into industry at all.

Tech stack:

  • PHP
  • CodeIgniter
  • MySQL
  • jQuery

Design: mine, inspired by LinkedIn (of that time)

Date: Dec, 2009 – Jan 2012

Scilance V1

Later I realised that freelance in projects that involves serious R&D is not very desirable thing, I tried to pivot the platform towards something like expert bank. It was my first SPA, by the way, based on my own MVC jQuery-based framework (yes, I tried to reinvent BackBone ☺️).

Tech stack: mostly the same

Design: mine, inspired by Clarity.fm (of that time)

Date: Jan, 2012 – Jun 2013

Experience

Software Engineer

Genestack

May 2016 – Current

Genestack is a cloud-based bioinformatics platform that allows bioinformaticians to store, organize and porcess their data.

My responsibilities are to create core UI components that used across the platform as well as specific bioinformatic tools. I also responsible for modernizing frontend working environment (e.g. introducing NPM, ES215 transpilation, static code analisys, unit-testing environment etc.).

Tech stack: jQuery Java Maven Webpack Node.js Jasmine BEM

Lead Software Engineer & Co Founder

Skem.io

December 2015 – May 2016

Skem.io is a proof-of-concept of a platform that allows people with weak tech skills to create modern single page web applications. My main responsibility is to create a platform itself. It was initially based on my early prototype of React component builder (available on http://rblab.net/demos/ce/). Next version included some kind of visual functional programming language (this version is available on http://ide.skem.io/). The most recent version was basically GUI for React+Redux stack (this version currently is not public but you can check out it's preview demo on https://youtu.be/ftX2n6D1lvg). Obviously, tech stack of the platform included React and Redux (and Webpack, SASS etc.). In second version there was big part that dialed with Canvas. My second responsibility was to coordinate work of a small team behind the project.

Tech stack: React Redux Canvas Webpack BEM SASS Karma-Mocha Babel

Software Engineer (front-end)

SPB TV

April 2014 – December 2015

My main responsibility in SPB TV AG was to maintain and develop "Amediateka" Video-on-Demand service. It was a big (more than 20,000 js sloc) single-page application based on Knockout.js and SPB TV's own MVC framework with REST-full JSON-based API in backend. But sometimes I also create other stuff (Chromecast app, landing pages etc.).

Later I start work on Smart-TV application for Lebara Play video service. This application based on cutting age React+Redux technology stack.

Tech stack: Knockout jQuery SASS BEM Jira Mocha Sinon Gulp Redux React Webpack

Software Engeneer (full-stack, freelance)

Elance (mainly Faceflow.com)

November 2013 – May 2014

I built new version of text & video chat that used node.js and websockets as it's transport layer. Initial intention was also use WebRTC but we declined it due to lack of support.

Tech stack: Node.js Knockout Socket.io Sass Mocha Browserify

Researcher

Amplituda

September 2011 – August 2013

Actually I worked as a software engineer in Amplituda Ltd. I started work there as freelancer in early 2011 and created server API to gather and store the data from mobile nuclear monitoring units via GPRS. Later I also created the user interface for that server with mapping and simple querying capabilities.

And then I was hired to maintain and develop that software because no one in company hadn't any experience in server programming as well as in modern front-end. Later, of course, other projects launched. The biggest one was SCADA-like solution to gather data from dozens of autonomous sensors connected via Ethernet end GPRS with Tomcat + PostgreSQL on back-end and SPA on front-end and WebSockets as data transport.

I've got a lot of exciting experience in that company (for example creating a page for autonomous sensor with a small web-server running on STM-32 micro controller, the whole page with interactive real-time spectrum graph and basic math analysis should to be less then 4 kib).

Tech stack: Java-ee PHP PostgreSQL SVG VBScript OpenLayers jQuery

Founder

SciLance

February 2009 – February 2013

SciLance was my internet startup (unsuccessful). It was intended to be a freelance service for scientists and engineers with social network capabilities. I managed a small constantly changed team of freelancers and enthusiasts as well as maintained most of website code base.

Tech stack: PHP CodeIgniter jQuery MySQL