Обо мне

To get info about me,

please see my new CV:

https://goo.gl/I1fWB9

Профессиональные навыки
Опыт работы
Март 2016 — по настоящее время
FullStack JavaScript Developer
Франкфурт ам Майн
Обязанности и достижения

Developed a SPA-site for engineers who use DICE application called DICEhub (http://dicehub.net)

Frontend Tech Stack: Angular.js 1.x, ES6/ES7 (Babel), Webpack, Stylus, Jade, ESLint, Karma, Lodash, Moment.js + TZ, Socket.io, etc.

Backend Tech Stack: Node.js, Express.js, MongoDB + Mongoose, PM2, Socket.io, Redis, Passport.js, Chai/Mocha, GoLang, Elasticsearch, Docker, Amazon AWS SDK, Amazon Infrastructure, etc.

Developed Admin Area SPA for this site with all server-side controllers. I used own ACL implementation for access control, non-reloadable paginated tables.Developed some site parts and components like preloaders, notifications, sharing buttons and others

The biggest part in this project was a WIKI subsystem. Half part of the site content storing in markdown files in own closed git repositories. On start we used GItLab through HTTP API for store users content, but in production tests it showed bad performance - very high RAM usage in container, slow requests, frequent freezes, API's limitations. And I wrote own server in GoLang (Macaron + gogits/git-module) which implement everything we need, has a small RAM usage and 3x fastest API responses. It happend under expression from GOGS (https://gogs.io/) project. On the frontend I created directive for edit markdown files (using SimpleMDE, then ACE) and render (using markdown-it with markdown-it-katex and markdown-it-highlightjs plugins). To manage files in the repository (full-featured WIKI pages like in GitBook) we used customized angular-ui-tree and save file titles in SUMMARY.md files of each repository

Little bit in this project I refactored to a `true` Angular module system - when every component contains in separated folder with all relative files like controllers, styles, templates. During this refactoring I fixed lots of duplicated components (according to the DRY principle).

I added ESLint with strict rules (together with eslint-plugin-angular) to the project, adopted to exists codebase

Январь 2016 — Март 2016
Frontend JavaScript Developer
Сан-Франциско и район залива
Обязанности и достижения

Maintained and developed several applications in http://icons8.com site
We had everyday short meetings in Agile style in English

Tech stack: Vagrant, Angular 1.x, SASS, BEM, SVG, Yii, Git submodules (for maintain all project parts), Gulp

I leaved from this project too fast because it has no new technologies to learn and too many page layout

Май 2013 — Январь 2016
CloneFish/AST222
Senior JavaScript Developer/Ingame TeamLead
Петрозаводск
Обязанности и достижения

Developed 3 released (in)games - Candy Dale, Sweetland, Treasures of Pirate Bay 2, two non-released games and infrastructure instruments to easy maintain ingame content (spritesheets, 2d animations). Was used HTML5 Canvas for render games in browsers, wrapped with Angular.js and released to few social networks - facebook, vkontakte, odnoklassniki, mail.ru, etc.

In the first projects: Vanilla.js, HTML5 Canvas, Box2D, Sound.js, Preload.js, Hg/SVN/Git, Trello, Skype

Next games (match-3 genre) used this tech stack: Greeder.js (my framework for games), OOP, Vanilla.js, HTML5 Canvas / WebGL, ES5, Angular.js, Express.js, MongoDB + GridFS, CoffeeScript, Gulp/Grunt, JIRA/Scrum, Slack, Git + GitLab

Created internal infrastructure of applications for simplification 2d graphics development - Greeder.Spriter, Greeder.Animator. A 'free' version of sprites editor I released at http://spritos.com

Created replays system which remember player steps and random core seeds, encode for compression, send to server via lobby. Then any replay data can be replayed and we can see any user behavior

In the last year on this position I became a team lead of small 'ingame' team - make daily scrum meetings, tasks planning prioritizations, tried to complete sprints, make code reviews, RnD of new technologies, etc.

In any game I implemented game rendering, 2D animations (from scratch in my own framework on Canvas and WebGL shaders), player interactions (input events), levels structure, pseudo-physics of some game objects (in-space gravity, match-3 grid of falling-blocks, vectors of weapon shots, etc.), state machines, events cycles management, and other and other interesting things!

In any project I participated in I interacted with all teammates such as lobbyists, graphic designers, animators, game designers, mobile developers, QA, DevOps, their team leads, our chiefs, office cat and others. It's unforgettable experience in a very dynamic area of game development

And in produced projects I had many cycles of optimizations - fix memory leaks (together with Angular lobby wrapper), algorithms optimization, caching, app size decreasing. All these problems we have gotten from real users, analytics metrics or testers

Декабрь 2012 — Май 2013
ООО "Технодар"
Инженер-аналитик
Петрозаводск
Обязанности и достижения

Анализ данных КИП мониторинга транспорта. Взаимодействие с группами установок по корректировке данных.

Декабрь 2011 — Декабрь 2012
ООО "Стандарт. Сервис. Система"
Инженер-электронщик
Петрозаводск
Обязанности и достижения

Администрирование сети диспетчеризации городского лифтового оборудования, наладка устройств.

Разработка системы учета заявок, поступающих в диспетчерскую службу.

Высшее образование
Сентябрь 2008 — Июнь 2014
ПетрГУ
Физико-технический
Петрозаводск
Специализация и достижения

Graduated from Petrozavodsk State University with Honors Diploma, specialty "Automated systems of information processing and management"