Denis Savenok

Full-stack Javascript Developer

denissavenok@gmail.com

View My GitHub Profile

I concentrate on different architecture solutions in frontend development, including concept development and strategic research of using an isomorphic javascript for full-stack and frontend-based web application.

I have a broad experience in developing complex web applications from scratch, as well as an experience of refactoring legacy code for the purpose of improvement of base project architecture.

Technologies and frameworks I've worked with:

  1. Frontend: pure javascript (plus transpilers/typechecking: babel/typescript). Module bundlers: webpack, browserify, rollup. Functional reactive programming: rx.js, most.js, kefir.js, bacon.js. Virtual-dom approach: vue.js + vuex, react.js + redux, redux-saga (SPA & isomorphic way). cycle.js with elm architecture as alternative. Test suites: karma.js, mocha.js, chai.js, supertest.js, jasmine.js, sinon.js, etc, Build system: gulp. Markup: html5, css, bootstrap 4, sass/less, bem. Data interchange: json, xml, soap ets. Design APIs: raml. Everyday libraries: axios, lodash, moment.js. Template engines: handlebars, mustache. Kunst: cujo.js: wire.js with decorators as composition layer, falcor.js, vidom.js, backbone & marionette and so on...; actionscript in early days (flash/flex/air).
  2. Backend: node.js (express, koa, hapi, sails), php (laravel, yii, symfony, slim, drupal, wordpress, sphinx etc.), java (spring, jsf/jsp, jboss seam). DTrace and flame graphs profiling.
  3. NoSql & sql databases, ORM: mongo, mongoose, mysql, doctrine, sequelize, sqlite etc.
  4. Version control: git, hg, svn
  5. IDE: sublime editor with plugins + gulp tasks
  6. CI: gitlab, teamcity, travis
  7. Tasks management: jira, asana
  8. Unix shell
  9. Methodology: Agile + Scrum

Senior Frontend Developer at Agent.ru

Implementation of highly modular and unit-testable front-end architecture for new product platform:

  1. Development of the mobile application for airline tickets reservation system.
  2. Development of the one-page application framework in asynchronous Promises/A paradigm for the mobile version of the site.
  3. Creating reusable plugins and customizable, highly flexible components with DSL specifications.
  4. Building full-stack Javascript mock system of all the expected Service API methods and data objects.
  5. Creating a Grunt-based system for running automated integration tests, building and deploying frontend applications on the environment.

Technology stack: Grunt.js, Bower.io, Node.js, Connect.js/Express.js (with Middleware), Esprima, Selenium-webdriver, CoffeeScript; Cujo.js parts: wire.js, when.js, meld.js, cola.js, rest.js; Require.js with plugins (i18n, text, hbs, json loading, etc); Underscore.js/Lodash.js, Handlebars.js, Less, Moment.js, Crossroads.js, JS-Signals, FRP (bacon.js, kefir.js), TDD with Jasmine.js, etc.

Frontend Developer at Wobot

Building frontend one-page application with Backbone.js, Underscore.js, Handlebars.js, Closure Library, Moment.js, LESS.

I was able to assess the advantages and disadvantages of the use of Backbone in an high-end single-page application in the face of considerable extensibility of the initial code base, and to find the best opportunities for integration views and sub-views via Handlebars.

Web Developer, self employed

  1. Building RESTful data driven single page applications: Require.js, Backbone.js, Marionette.js, Handlebars.js, d3.js, google and yandex.maps API, and with mocks built on the top of Sinon.js.
  2. Support and development a streaming music service based on PHP MySQL technology stack.

It was a time to return again to the processing system and back office application for entertainment industry tickets reservation project, that I and my colleagues developed about four years ago: JAVA Oracle JSF(Jboss Seam) technology stack, SOAP web services. This activity leaded to the thoughts about a migration from usage JSF for client to high-flexible single-page application, possibly divided into several bundles.

Full Stack Developer at VitaPortal

Backend works (PHP MySQL technology stack on the top of Drupal CMF system):

  1. Implemented billing system for settlements with a group of authors.
  2. Implemented statistic administration module, Google Chart Tools integrated for the best visualization of the statistic information.
  3. Implemented the automatic mailing.
  4. Implemented the functional for social network community module.
  5. Implemented a community notification system about the actions of the users.
  6. There were also implemented server scripts for correcting the data in the database tables of the project after migration.
  7. Implemented web-services on the top of Drupal modules for Flex symptom navigator.
  8. Implemented web-services for iPhone-app: dictionary of drugs, search for drugs in pharmacies and information on first aid.

Frontend works:

  1. Implemented frontend single page application for body weight control (jQuery, Vanilla.js).
  2. Implemented multistage interface for managing mailing lists.
  3. Implemented multistage registration interface.
  4. Implemented data-driven application "Symptom-navigator" on Flex ActionScript technology stack on the client.

Freelance Programmer, Full Stack Developer, self employed

  1. ActionScript, Flash, Flex projects.
  2. Implemented a frontend applications for education project: chinese-russian dictionary, integration with module for building online-lessons, WYSIWYG editor for creating chinese hieroglyphs, application for searching hieroglyph in data base via recognizing of drawing (ActionScript, Flash, Flex, Drupal web-services modules).
  3. Implemented a streaming music service on PHP MySQL technology stack (Drupal-based system, ActionScript, Flash on the client).
  4. Implemented a processing system and back office application for entertainment industry tickets reservation project: JAVA Oracle JSF(Jboss Seam) technology stack, SOAP web services.

Windows System Administrator at IEA RAS

  1. System administration, Windows.
  2. Web-development, LAMP.

Troubleshooting of hardware and software issues.

Skills

Education

  1. Lomonosov Moscow State University (MSU) - Faculty of Philosophy
  2. Moscow Aviation Institute - Faculty of Cosmonautics, Department of Programming

A short extract from portfolio

Drive.ru

Backend, frontend. Drive.ru

Agent.ru airline tickets reservation system

Here are a few links to the different parts of the one-page application, created in Agent.ru:

I had a pleasure to play a key role in project dedicated to airline tickets reservation: I created the architecture of the frontend framework in asynchronous Promises/A+ paradigm for the mobile version of the site. Also I wrote reusable plugins implemented in cujo.js style with the following functionality:
  1. customisable routing system
  2. components loading system with context caching
  3. form validation
  4. two-way data-binding
  5. server errors and warnings notification
  6. runtime errors logging
  7. switching between real rest-services and mocks
and so on.

Wire.js + Handlebars.js + Webpack.js

Car news represented in channels.

Being a full-stack developer I created the isomorphic framework for this project based on Wire.js with template rendering engine based on Handlebars.js.

Wire.js + Marionette.js + Backbone.js plugins, Highcharts.js

Interaction with browser localStorage. All selected cars and selection statistic will be stored.

It's the further development of wire.js plugins: now for Marionette.js and Backbone.js integration.

Github repo

Vue.js SPA

Integration with Google Maps API

Wire.js + Marionette.js + Backbone.js single page application

Modules container is most important part of the modular architecture. I explain here 1) the way Nicholas C. Zakas offered for building complex and scalable one-page applications 2) it's custom realization in wire.js based project.

Github repo

Experiments...

Note, that the next instances hosted on `heroku` are not active and need several seconds for them to be loaded and displayed.

Marionette.js + Express.js 4, Sequelize ORM 3v, Sqlite3 application

Github repo

React.js + Express.js 4, Sequelize ORM 3v, Sqlite3 application

Github repo