Denis Zhbankov

CTOFull Stack Engineer

profile picture

About

Passionate and open-minded person, who embraces infinite self-improvement and education.

Email GitHub StackOverflow

Growth

  • 8 years experience in professional programming and system engineering in both large corporations and startups. Started from Java and Oracle in 2011, then switched to JavaScript, NodeJS and AngularJS in 2014, then to TypeScript and ReactJS in 2017, now I'm experimenting with Go.
  • Got master's degree in computer science and information security in 2011 at MSU (Moscow State University: #1 Russian, #90 globally).
  • In 2018 received an IELTS certificate (international English language test).
  • In 2021 I'm going to complete an international MBA course (Master of Business Administration, #1 program in a local rating).

Character

  • I want to stay on the edge of technologies and trends. I learn constantly: if you justify I need a new thing, you name it and tomorrow we'll discuss it.
  • I am attentive to details and doing my best to make things consistent and logical.
  • I am extremely motivated, goal oriented and can work really hard. Moreover, I really like to. That's why I'm not really into calm average 9-to-5 offers. I'd like to give more and expect more. Also I do need at least our middle term goals to be aligned nicely, because without constant moving I fade in approximately 1.5 years.

Interests

Position

  • Domestic: executive or manager with part time coding
  • Remote: senior engineer with relocation perspectives

Technologies

  • TypeScript
  • ReactJS
  • NodeJS
  • Go

Assessments

Pluralsight

Badges could be seen at StackOverflow's Developer Story.

  • HTML5: 99th percentile
  • JavaScript: 98th percentile
  • React: 97th percentile
  • CSS: 97th percentile

IELTS

In 2018 (going to improve until 2021). On a scale from 1.0 to 9.0:

  • Reading: 9.0
  • Listening: 8.5
  • Speaking: 7.0
  • Writing: 6.0

Education

Master of Business Administration

Oct 2018 Jan 2021

Russian Presidential Academy of National Economy and Public Administration

Institute of Business Studies

Entrepreneurship and Corporate Management

IBS RANEPA

Specialist in Mathematics and System Programming

Sep 2005 Jul 2011

GPA 4.47 from a 5.0 scale

Lomonosov Moscow State University

Faculty of Computational Mathematics and Cybernetics

CMC MSU

Specialist in Information Security

Sep 2007 Jul 2010

Lomonosov Moscow State University

Military Training Faculty

MT MSU

Additional Courses

May 2012 Jul 2012

  • EDU-IBM-R08: Writing effective use cases
  • EDU-SS-01: Domain modelling for creating business regulation documents and technical requirements

Interface Ltd.

IT Training and Consulting Center

interface.ru

Publications

Experience

Management

Product

  • Placement: use cases, scenarios, workflows
  • Plan: strategy, goal & risk management
  • Tasks: Asana, Jira, YouTrack, magnet board
  • Sprints: plannings, meetings, retrospectives
  • Tests: unit, e2e, A/B, usability
  • Analysis: SQL & PLSQL, UML | BPMN | IDEF

Development

  • Branching models
  • Design patterns
  • Best practices
  • Code review

Team

  • Candidate interviews
  • Communication
  • Motivation

Development

Languages

  • Academic: C, C++, C#, Python
  • Production: JavaScript, Java

General

  • VC: Git, SVN
  • ECMA: 5+
  • Types: TypeScript, Flow
  • Transpilers: TypeScript, Babel
  • Bundlers: Webpack, Gulp, Browserify
  • Packages: Yarn, NPM, Lerna, Bower

Backend

  • Frameworks: Node, Express
  • DB: PostgreSQL, MongoDB, Redis, RabbitMQ, Neo4j
  • Tests: Mocha, Chai, Jest, Supertest
  • Cloud: AWS, Heroku, Kubernetes

Frontend

  • Frameworks: React, React Native, AngularJS, Knockout
  • State: Flux, Redux, Saga, Thunk, Context
  • Styles: PostCSS, SASS, LESS
  • Tests: Karma, Protractor, Selenium
  • Visualization: D3, SVG, ThreeJS
  • Realtime: WebSockets, SSE, SocketIO
  • UI: Bootstrap, Blueprint, AntDesign, NativeBase

Employment

Head of Frontend

Jun 2017 today

SMMplanner | Company

Automated SMM (social media marketing) tools and services: scheduled posting to multiple social media, advertisement campains (audience parsing, targeting), services for technical support.

smmplanner.ru pepper.ninja

Projects [NDA]

  • Legacy frontend for the main application: AngularJS, Gulp, Vanilla JS, jQuery.
  • New frontend for the main application: TypeScript, React, Redux, Sagas, code splitting, full internationalization. The main challenge was to design the new system to be: a) developed and released in little portions; b) highly modular and spread across different programmers with little to no interconnections; c) gradually integrated into the highly coupled and entangled legacy one with dynamic (lazy) loading of code chunks, where every chunk might have custom reducers and sometimes its own middleware.
  • Completely new service written from scratch featuring web and mobile versions: Lerna, TypeScript, React, React Native, React Context with custom Redux Devtools integration, fair amount of abstraction, monorepo approach with shared REST API, business logic, context (data itself and data manipulations), utilities, language features. All logic is separated, so the app can be easily ported to a different UI system, e.g. desktop.
  • HTML5 video editor, which allows to preview, crop, trim, add and free transform image overlays on a video right in browser: Ffmpeg (custom build ported with AsmJS), TypeScript, React, Canvas.
  • Realtime notification service: SSE, Websockets, TypeScript, React, Node, Express, RabbitMQ, Redis.
  • A tool to mimic Instagram stickers and overlays, which uses quite complex and low level text measurement, positioning and aligning calculations: TypeScript, Vanilla JS, Canvas.
  • More libs, e.g. custom UTM management, cookies; more pull requests: Ghost blog, Material colors, Angular intro, etc.

Typical tasks

  • Design a new feature | system | process | logic
  • Implement most complex concepts | integrations | components
  • Help, consultations, architectural decisions, API validation
  • Code review, repo and branch management
  • Choosing and adopting tools, e.g. TSLint, Prettier, pre-commit hooks
  • Team planning, scrum meetings, board management
  • Interviews if any
  • Some UX

Lead Frontend Engineer

Jan 2017 Jun 2017

Pronto Media | Holding

The holding owned few popular job search and general classified ads websites in Russia. Unfortunately, it went bankrupt.

pronto-media.ru irr.ru job.ru

Highlights

  • Legacy and partially new frontend for the classified ads board: jQuery, Vanilla JS, ExtJS, PHP templates, then we entered React, Redux, Webpack.
  • The legacy code survived few transfers between different teams and contractors, including foreign ones. Discussions were very limited and nobody really cared about quality until the main investor got tired of losing money and decided to give it the last try. They started to hire smart people, but the task of reviving the system was really challenging. Indeed, we had made a decent progress, but the additional investments ran dry nonetheless.

Typical tasks

  • Refactor a little feature
  • Fix some production bugs
  • Code review, mentorship
  • A lot of interviews

CTO & Full Stack Engineer

Jan 2014 Jan 2017

Gigman | Startup

New way of concert organization which delivers low cost tickets. Instead of usual fixed price customers would get a market exchange-like service. Sadly, the project was postponed a few times in spite of 100% technical readiness, has experienced vast number of organizational issues, and now is freezed.

gigman.com [freezed]

Highlights

  • Truly realtime market via SocketIO and PostgreSQL notifications.
  • Backend on Heroku, Amazon S3, Godaddy, PostgreSQL, Redis, TypeScript, Node, Express. All business logic is fully covered with tests and implemented via (fairly complex) DB prodecures with transactions, SQL/PLSQL part alone is ~5000 LOC, the rest backend is rather thin and scales mostly to handle concurrent websocket connections.
  • Frontend utilizes AngularJS, Gulp, ESLint and is fully responsive from mobile to large desktops.
  • More then 550 unit and integration tests (including multiple OAuth-autorized users trading assets and communicating through SocketIO), done in several browsers through Mocha, Chai, Superagent, Protractor, Selenium, Karma.
  • Also, everything (migrations, backend, frontend, tests) is decoupled and placed in different packages inside a mono repository.

Typical tasks

  • Being a CTO and full stack engineer, I designed and implemented everything by myself.

Lead Java Engineer

Feb 2013 Apr 2014

Trading System Administrator | Corporation

TSA runs the wholesale market of electric power in Russia (roughly similar business to stock exchanges).

atsenergo.ru

Highlights

  • Adapted a primary internal backend framework for a modern Java and Oracle: moved forward few major versions, nobody else wanted to do this.
  • Proposed and started to use frontend frameworks instead of primitive JS or at best jQuery.
  • Complimented for the best UI among new internal projects.
  • Outside of work created for business analysts a friendly wrapper around Jira (which was also extremely outdated) with extra functionality.

Typical tasks

  • Create or modify one of internal proprietary subsystems to align with new government or market regulations.
  • Backend worked on Java and Oracle PLSQL, while frontend was usually written in Vanilla JS or jQuery, later I started using Knockout and then Angular.

Business Analyst

Oct 2011 Feb 2013

Trading System Administrator | Corporation

TSA runs the wholesale market of electric power in Russia (roughly similar business to stock exchanges).

atsenergo.ru

Highlights

  • Pioneered a move forward from the extremely outdated IDEF (Integration DEFinition) notation and tools to UML (Unified Modeling Language) and BPMN (Business Process Model and Notation), which eventually was accepted as a company-wide standard.
  • Refactored from scratch a number of internal systems of business processes.

Hobby

Here are the most notable private projects (among 17 total), which I've managed in my spare time.

Option Toolbox

Sep 2014 Jan 2017

Online risk assessment and hedging toolbox for options traders on US stock exchanges. Initially created for myself as a much more user-friendly and functional replacement of broker's software, but exposed to the public later. The project was under active development when I was using it almost every day to manage my own portfolio. Also has a blog, where I had occasionally posted some relevant thoughts and ideas.

optionpnl.info

Highlights

  • Fully interactive mobile-friendly 2D (SVG) and 3D (WebGL) charts.
  • Black-Scholes financial model calculations done with my own open-source AngularJS module.
  • Delayed financial data from Google and Yahoo.
  • Realtime market quotes from the local Interactive Brokers' terminal through SocketIO.
  • AngularJS, NodeJS, Heroku.

Private Ads

Jul 2014 Jan 2015

Classified advertisements' place with additional features, intended to level up the usefulness of service. The project is currently turned off as a consequence of the time and advertisement budget underestimation. I thought it would be possible to run a full service by myself, I was wrong.

private-ads.info [closed]

Highlights

  • Introduced flexible user-defined tags instead of predefined classification (tag relations and weights are stored in a graph database for handy search and suggesting)
  • Ability to add a desired map area to the search criteria (e.g. to find nearest offers)
  • Full i18n, live FX exchange quotes and UI translation on the fly
  • AngularJS, NodeJS, Neo4j, Heroku, Google Maps

Open source

Here are the most notable open source projects (among 34 total), where I've done full or a majority of work.

Kubernator

Jun 2017 Nov 2017

Kubernator is an alternative Kubernetes UI. In contrast to high-level Kubernetes Dashboard, it provides low level control and clean view on all objects in a cluster with the ability to create new ones, edit and resolve conflicts. As an entirely client-side app (like kubectl), it doesn't require any backend except Kubernetes API server itself, and also respects cluster's access control.

kubernator

Highlights

  • 358 stars
  • 21 fork
  • 2 contributors
  • React, Redux, Sagas, Kubernetes
  • The tool is being actively used in our company for almost 2 years now without updates and any frontend issues

Sticky Cluster

May 2016 Oct 2016

In cluster environment SocketIO requires you to use sticky sessions, to ensure that a given client hits the same process every time, otherwise its handshake mechanism won't work properly. To accomplish that, manuals suggest the sticky-session module. My module is based on the same principles as sticky-session, but utilizes a more efficient hash function and also works asynchronously out of the box.

sticky-cluster

Highlights

  • 86 stars
  • 18 forks
  • 2 contributors
  • NodeJS
  • up to 10x faster than sticky-session
  • much better scattering over the worker processes than that of sticky-session
  • asynchronous out of the box, just run a callback when you're done initializing everything else
  • works correctly with IPv6

Angular Evaporate

Sep 2014 Oct 2017

AngularJS module for the EvaporateJS library (uploading files in chunks to Amazon S3 with pause/resume), with a complete example. Reinforces the EvaporateJS library to allow AngularJS-specific usage along with all the native functionality plus additional features.

angular-evaporate

Highlights

  • 27 stars
  • 14 forks
  • 4 contributors
  • AngularJS