Roman Bekkiev

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

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

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

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

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

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

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

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
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

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 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

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