Sergey Developer

Over 9 years experience in the software industry. Proven ability to jump into new projects, exceed client expectations, and learn new technologies quickly. Managed complicated development projects from concept to completion across various industries, including financial services. Excellent communication skills with strong background working directly with coworkers and clients to identify business objectives and establish requirements. TECHNOLOGIES

Programming Languages: Ruby, JavaScript, basics of Elixir, Go, Python. Markup languages: HTML, CSS, HAML. Operating Systems: Linux, Mac. Testing Frameworks: RSpec, minitest. Web Servers: , Apache; Passenger, Unicorn; . Database Servers: MySQL, PostgreSQL. NoSQL databases: MongoDB. APIs: Facebook, Vkontakte, Twitter, Google. Ecommerce API: Paypal, Google Checkout. Frameworks: Ruby On Rails, Ember, React, , , . Project Management: Codebase, Pivotal, Jira, AgileZen, . Methodologies and Approaches: OOP, BDD, TDD, Agile Methodologies, RESTful web-services design. Source Control: Git. Other: JSON, YAML, Sass, RVM, rbenv, , Redis, Sidekiq, Solr, Docker, Bootstrap, APN, GCM, S3.

CAREER HISTORY

under NDA project August 2019 Position: Ruby on Rails developer

Swan June 2018 - August 2019 Position: Ruby on Rails developer Project description: Big monolith project, 10k+ commits, 160+ models. Tools and technologies: Ruby On Rails, Vue.js, CofeeScript, MySQL, S3, Bash Script, Solr, Github, Rubocop, Circle CI, Yarn, Slim, Bootstrap, Webpacker, Twilio, Stripe, Airbrake, New Relic, Mixpanel, Slack, PivotalTracker. gems: rails 4, active-admin, bootstrap, coffee-rails, fakes3, webpacker, -rails, active_model_serializers, cancan, wicked_pdf, mixpanel ruby, sunspot_rails, awesome_print, simple_form, sidekiq, sinatra, draper, interactor, phone, actsastaggable, airbrake, new_relic, foreman, fakes3, stripe, twilio-ruby, paranoia, omniauth google, omniauth facebook. Duties: • Add new complex (from business logic perspective) features from the first day, direct discussion with american customer/CTO; • 24 close and 6 open pull requests for the first 2 months; • Found a bug at ruby File#extname, contributed issue on bugs.ruby-lang.org (https:// bugs.rubylang.org/issues/15244); • Add sms feature, that counting unicode symbols and withdraw credits for sending sms (works through twilio); • Working with S3: add ability to rename filenames, add data json-exporter with result upload to s3; • Fix performance issues in ActiveAdmin (SQL); • Work with services (interactors), decorators, datatables (jQuery with custom ruby DSL wrapper), data migrations, thor tasks, mailers; • Make pulls request reviews, help junior guys; • Work with pdfs generated by application (wicked_pdf gem); • Add documentation comments to each changed class or module, prepare big spec documents for new features; • Work with front-end part on CoffeeScript and jQuery, add markup on Bootstrap; • Refactor code wrote by previous contributors; • Fix old well-known bugs, that no one wanted to fix before; • Add foundation code for request specs for Active Admin; • Working with rubocop, fix all connected with changed code offenses; • Covering code with specs on RSpec, initiate spec for active admin part via request specs.

Swan February 2018 – June 2018 Position: Full-stack Ruby on Rails developer [at Swan] Project description: 50k+ commits, 900+ models, 60+ bash scripts, TDD approach, test suite that passes for 27 hours on single machine (and ~100 Solano workers parallelism it), single unit test on RSpec can be up to 4000 lines. USA Government (Indiana Department of Child Services) management gateway for kids that need help. Tools and technologies: Ruby On Rails, ReactJS, PostgreSQL, jQuery, Bash Script, Docker, ElasticSearch, Github, RSpec, Karma, Jasmine, ESLint, Solano CI, npm, Yarn, Sass, Gulp, Vim, jQuery Migrate, Slack, PivotalTracker, Harvester, Jira. gems: rails 5, carrierwave, cancancan, coffee, devise, ffaker, haml, newrelic_rpm, rails-observers, resque, sass, sinatra, custom state_machines, typhoeus, unicorn, capybara, selenium-webdriver and more Duties: • Adding new functionality among the project and inner custom gems, using feature switchers (for switching on and off business logic). • Create resque jobs and optimise tasks. • Upgrade jQuery from 2 to 3, updating gems and node modules. • Removing NPM in favour of Yarn (change bash scripts, clean up). • Fixing and writing new validations for existing logic. • Refactoring legacy code, fixing SQL queries. • Writing specs on RSpec and Karma specs for front-end code. • Upgrade selenium-webdriver, geckodriver, firefox 60. • Taking part in pair-programming. • Fix plenty of bugs on the front-end and back-end side.

Bina.az, Tap.az June 2017 – December 2017 Position: Full-stack Ruby on Rails developer Project description: More than 6kk advertisement requests per day. Bina.Az is a universal platform providing services for all participants of the real estate market. The project provides buyers with convenient access to the largest database of offers for the sale and lease of real estate, and real estate agencies, construction firms and individuals - the best way to deliver information to their potential customers. The project was founded in 2008 and at the moment is the largest resource in the real estate sector in the Azerbaijani market. Tools and technologies: Ruby On Rails, JavaScript, CoffeeScript, PostgreSQL, Github, Circle CI, Slim, MiniTest, HipChat. gems: rails 4, rails 5, capybara, simple_form, slimrails, whenever, cells, torba-rails, sass-rails, cancancan, scss_lint, letter_opener, and another gems and custom gems made specially for project. Duties: • Enhancing banners advertising system: adding advertising balancer with ability to monitor banners ether and rearrange dynamically percentage of it’s showing based on current performance of system. • Internal wallet (virtual money within the project). • VIP advertisement items feature. • Refunding money and reverting services functionality. • Updating Binaaz application and shared submodule from Rails 4 to Rails 5 (by myself within the whole project. 17k lines of ruby code. And not including old.custom.gems that is 5 years old). • Adding new features to the “shared” submodule to use among projects. • Writing unit, functional and integration tests Mauris laoreet quam ut dolor egestas posuere. iRonin

September 2016 – May 2017 Position: Full-stack developer Project description: The EmployeeReferrals.com platform is the most sophisticated solution available, scaling from SMBs to Fortune 500s. Clients universally experience dramatic increases in referrals, as well as in applicants and hires from referrals. Jobs have been referred to over a million candidates worldwide and recruiters have been provided with an entirely new source of top quality passive candidates. Tools and technologies: Ruby On Rails, JavaScript, CoffeeScript, React.js, Backbone.js, MySQL, Sidekiq, Solr, Redis, Codebase, Github, Circle CI, HAML, 3Hub (for Amazon), HipChat. gems: sidekiq-pro, devise, rabl, paranoia, timecop, letter_opener, pry, rails 4 and 200 more. Duties: ● Diving into more than 265k lines of ruby code. ● Following best practices: decorators (draper), services, delegators and presenters (SimpleDelegator), queues (sidekiq), query objects, state transitions (state machine), policies (for conditions logic). ● Resolving critical tickets at the first month of working. ● Enhancements and changes on client side - React.js, Backbone.js, CoffeeScript and hamlc. ● Working with custom Chrome Extension for project (pure ). ● Adding rake tasks for simplifying running queues. ● Searching with Solr - indexing, conditions, pagination. ● Working with different ATS API. ● Error handling. ● Adding changes on UI, using Bootstrap. ● API versioning. ● Writing new functionality, doing enhancements, refactoring existing code. ● Writing specs (RSpec). ● Adding docs for new features to codebase Notebook. ● Using chat bot to perform merges and deploys. ● Using encrypted data (GPG) for db dump, letters, passwords. ● Close cooperation with the core team in both ways: real time and asynchronously. ● Working as full-stack developer on BE and FE sides

Time Tracker Position: Ruby on Rails Developers Project description: The internal project for tracking time and management. Tools and technologies: Ember.js, Emblem.js, Ruby On Rails, JavaScript, CoffeeScript, Postgres, Sidekiq, Redis, Codebase, Github, HipChat, Trello, Pivotal. gems: sidekiq-pro, devise, puma, figaro, pry, doorkeeper, cancancan, rails 4. Duties: • Developing project, that consist of front-end part on Ember.js, back-end part on Ruby on Rails and Chrome Extension on Ember.js. • Chrome Extension functional for Codebase, Github, Trello, Pivotal. • Using serializers (active_model_serializers), interactors (https://github.com/collectiveidea/interactor), Postgres enum data types, Pods in Ember.js FE project (http://www.programwitherik.com/ember-pods/), services. • Adding rake tasks. • Covering with RSpec tests.

Mind Studios March 2015 – August 2016 Position: Full-stack Ruby on Rails developer Project description: Project helps to find the best worldwide bartenders, develop cocktails and bar culture together by sharing great ideas, knowledge and passion. Tools and technologies: Ruby, Ruby On Rails, Javascript, PostgreSQL, Docker, nginx, Redis, Javascript, Git, Masonry. gems: acts-as-taggable-on, puma, carrierwave, sidekiq and others. Duties:

● Working as full-stack developer on BE and FE sides (Ruby on Rails, Javascript, ● HTML5/CSS/Bootstrap). ● Working with Docker. ● Collection groups with Masonry. ● Adding google analytics to most wanted parts of the application. ● Internationalisation for 6 languages. ● Writing new functionality, doing enhancements, refactoring for existing code.

Ciklum September 2014 – March 2015 Position: Ruby on Rails developer Project description: LoopMe uses big data and artificial intelligence to target audiences in real time and automatically optimise campaigns for the best possible results for advertisers and publishers. The LoopMe platform integrates with ad exchanges and direct publishers, including some of the world’s most popular apps, many of which have achieved over a billion downloads, giving LoopMe massive global reach. It is the largest mobile video DSP, reaching over 1 billion consumers world-wide. Tools and technologies: Ruby, Ruby On Rails, PostgreSQL, Elasticsearch, Redis, Highcharts, JS, Bootstrap, Travis, Sentry, Newrelic, Git, Linux, Pivotal. gems: sidekiq, state_machine, puma, carrierwave-aws. Duties: ● One of my major achievements on this project was understanding the whole dashboard reporting system and fixing major bugs in a period of a month. ● Developing Version 2 of Dashboard (UI part and interaction with ElasticSearch). ● Interaction with Segments Tool and Ad Server part (written in Clojure). ● Writing new workers, fixing old ones and writing new rake tasks for simplifying statistics gathering. ● Editing existing database queries for reducing response time. ● Customising Highcharts graphs. ● Struggling with deadlocks. ● Different warnings for clients based on campaign budget statuses. ● Add new functionalities for the Algorithm Data team. ● Simplifying and refactoring UI. ● Mail to users based on reports. ● Logging critical parts of code. ● Integration tests. ● Refactoring old code. ● Monitoring with Sentry. Intercloud Platform (Playfon) May 2013 – August 2014 Position: Ruby on Rails developer Project description: Firstly it was a project for files synchronisation between biggest social networks at Post Soviet space – Facebook, Vkontakte and Odnoklassniki. Then the project changed direction to become a tool for creating online-shops at vkontakte. Tools and technologies: Ruby, Ruby On Rails, Redis, Sinatra, RSpec, Facebook and Vkontakte API, Airbrake, Mixpanel, Git, Linux, Cron, HAML, JSON, YAML, Redmine. gems: sidekiq, rabl, memcached, dalli, ancestry, pulsemeter, apipie, nokogiri. Duties:

● One of my major achievements on this project was realisation of application's strategy generator. With help of it performance of the project has increased 3 times, because it became possible to use multiple Vkontakte applications for our single Rails project through the creation of generating such strategies. ● Responsibility for queries limiting logic to overcome social network's limits on uploads (using redis, sidekiq, semaphores). ● Custom web menu generator (generating menu for Vkontakte as wiki-markup based on suppliers categories). ● Custom URL shortener (with help of Redis and Sinatra). ● Creating payment modules (balance, payment / withdrawal, payment plans, fee, promotional codes , robokassa), using the project according to tariff plans. ● Keeping data's relevance between the project and the social networks (sync and data updates). ● Implementing treatment for “rotten” tokens (redis, clockwork/whenever, sidekiq). ● Implementing sidekiq optimisation (storing, cleaning). ● Creating internal API (rabl), specs for it. ● Creating External API, docs for it (apipie). ● Realisation of data caching (using memcached and dalli). ● Implementing API of FB (Koala), VK, Odnoklassniki. ● Using ancestry for nesting between records. ● Implementing metric based on pulsemeter (counting traffic, queries, etc). ● Implementing admin part (activeadmin) with custom addings. ● Import csv, symbols encoding, etc. ● Parsing YML files (YandexMarketLanguage) with help of Nokogiri. ● Feedback module, subscribers, mailer , etc. ● Referral module. ● Logging. ● Monitoring with Airbrake and Mixpanel.

Appsmakerstore June 2012 – April 2013 Position: Appsmakerstore Project description: This is a big project, which was started at DIMALEX over 3 years ago and had grown so well, that it became independent. I joined it, when all main architecture was already built. The main idea of this project is to allow users create and publish their own mobile apps online in a matter of a few clicks. Those apps supporting HTML5, iTunes, Android Market, Blackberry Marketplace, Windows Marketplace and Facebook. Users can create apps that will consist of different numbers of gadgets (for ex., About, Information, Take Away, Position). There were many tasks for adding new functionalities and gadgets for me, optimisation UI and server side. It was necessary to communicate a lot with IOS and Android developers, create API documentation. Also it was needed to plan a lot of schemas, write a lot of tests and to learn new techniques. Tools and technologies: Ruby, Ruby On Rails, Redis, RSpec, Git, Linux, Cron, HAML, YAML, AgileZen, APN, GCM, Paypal, Google Checkout. Duties:

● Understanding conventions of projects. ● Developing new gadgets: POI (IOS APN, Android C2DM, Google Maps); Take Away (PayPal; mail-notifiers; calculations; subproducts, sizes, statuses and other logic); Co2 (simple quiz for supporting environment). Livescore and Stats (games statistics from xml file). ● Making improvements for a lot of other gadgets. ● Message board where app's owner can send messages to end users apps via ● mobile notifications. ● Creating server-side part for custom cropper. ● Taking part in changes to adding user's ability for having several apps per ● account. ● Testing new code and old code with Rspec and Cucumber. ● Organising translations. ● Modules for searching within the whole project for special kinds of users. ● Placing and tuning CruiseControl.rb CIS for selftesting purposes. ● Implementation of tons of other new features (both client and server). ● Refactoring and optimisation for old code. ● Bug fixing (old bugs and production bugs).

DIMALEX April 2012 – May 2012 Position: Ruby on Rails developer Project description: In summer 2012 DIMALEX was transformed into 111Minutes, finding a new face. New site was also needed and the staff has chosen me as a developer for 111minutes.com. It was decided to build. Duties: • Understanding main features of Refinery CMS. • Developing custom modules for the site. • Optimising Refinery CMS features for our needs (forking refinerycms-portfolio). • Twitter news channel. • Navigation via jQuery. • Custom styles, etc.

DIMALEX October 2011 – March 2012 Position: Ruby on Rails developer Project description: Motto of this project is “HOT Hooters Calendar Girls for your phone!”. This is native application for IOS and Android devices, providing videos, backgrounds and wallpapers pictures for mobile applications. I wrote server-side and CMS code from scratch. It was decided to exchange data between server and client via JSON RPC, and using MySQL server like DB storage. After some meetings with mobile developers, we prepared documentation for API and started our work. The most difficult part was connected with the Android platform, because it's devices have a lot of weird mobile screens resolutions. So, I wrote an algorithm for cropper, which allowed me to use proper and general solutions. Duties: • Developing CMS (videos for IOS, wallpapers and backgrounds for Android, jokes, categories, etc). • API • Custom cropper for Android. • Temporary links logic for videos. • Purchasing for videos through “itunes”. • Purchasing for wallpapers through android's market. OYOF August 2011 – September 2011 Position: Ruby on Rails developer Project description: This project was also developed for IOS and Android platforms. It's dedicated to high school graduation and college enrollment. Application was intended to help students to enrol with help of preparatory videos, quizzes and college profiles. It was planned to run this project right in time for school rush hour - in September. It was the first server-side project for a mobile device in my career, so I got all my strength together. OYOF CMS consists of many different entities, such as: users, colleges, quizzes, videos, pictures, sublocations, devices, checkpoints and so on. Also I wrote an API for server-side using JSON RPC with all kinds of exceptions for client-side. Duties: • Developing CMS. • API. • Different types of questions in quizzes. • Statistics for quizzes and TOP users list, that finished existing quizzes • (searching, calculations, ratings). • Check In functionality for different user places. • Simple user roles. • APN and C2DM notifications for messages about updates.

Manager. June 2011 – July 2011 Position: Ruby on Rails developer Project description: This project was created with the aim to simplify work for the company's accountant and to automate some organisational processes. I made it with another Ruby On Rails developer. The main entities of the project were: employees list and their activities, departments, customers, projects, reports, salaries, milestones and so on.

The most interesting parts were milestones with custom calendars and detailed statistics for employees. In this project we also used jQuery for more viewable and comfort use.

Knowledge testing system April 2011 – June 2011 As I was in love with Ruby, I decided to write my degree work using Ruby On Rails. The main goal of application was to share educational materials for students and test their knowledge via quizzes. I built it from scratch, using foundational Ruby on Rails principles and conventions. Testing system has different roles, such as administrator, lecturer and student. Teachers have the ability to open quizzes for groups of students, add new materials, new questions and answers (which are divided on semesters), topics, set time for quiz timer and so on. The main part of the project is testing by itself. In addition to the features above, questions divided into 3 types: input (answer as text), radio (single answer) and check (multiple answers).

Different freelance projects [freelance] October 2010 – May 2011 Beside all above, I have also worked as a freelancer. There were different projects and mostly my tasks consisted in adding some new features and improving or fixing old functionalities of these projects. For one of the customers, I adapted Redmine and deployed the RoR application to a remote server, using Nginx and Unicorn. I also worked with “happy-studio” on projects http://komnatasveta.ru/ and “hellosport” for a short period of time. This studio had it's own kernel, which I started to learn, collecting at the same time new experience about Ruby on Rails techniques. These projects used POSTGRESQL, so I became familiar with it too. Also I developed new features for http://putivetra.ru/ and some other small studios and different customers. EDUCATION

Dnipropetrovsk National University of Rail Transport 2008 – 2013 Department: Computer Science Degree: Master LANGUAGES

English – Upper Intermediate