Dmitry Zenovich, Developer in Moscow, Russia
Dmitry is available for hire
Hire Dmitry

Dmitry Zenovich

Verified Expert  in Engineering

C/C++ Developer

Location
Moscow, Russia
Toptal Member Since
November 26, 2015

Dmitry is a software engineer with more than fifteen years of​ working experience and over seven years of leadership experience. His proven track record includes contributing to the success of industry leaders such as Mail.ru Group, RosBusinessConsulting, and Begun.Ru.

Portfolio

Association France-ioi
Go, MySQL, APIs, Cucumber, Back-end, Back-end Development
NUVI (via Toptal)
Deis, CircleCI, Heroku, StatsD, Airbrake, MongoDB, PostgreSQL, Redis, RabbitMQ...
ImproveMedia.ru
Jira, GitLab, RSpec, Redis, PostgreSQL, Ruby on Rails (RoR), Ruby, Back-end...

Experience

Availability

Part-time

Preferred Environment

Git, Visual Studio Code (VS Code), Linux, MacOS, GoLand

The most amazing...

...projects I've coded include sound and music analysis, ML and data mining, interpreters, visual programming tools, test automation frameworks, and a web CMS.

Work Experience

Go Software Engineer

2019 - PRESENT
Association France-ioi
  • Developed a back end of the new Algorea education platform with 100% test coverage and automatically generated its REST JSON API documentation. The code is available at https://github.com/France-ioi/AlgoreaBackend/.
  • Fixed bugs in third-party open-source libraries: https://github.com/go-gorm/gorm, https://github.com/go-playground/validator, https://github.com/asaskevich/govalidator.
  • Configured Docker containers for testing platform modules.
Technologies: Go, MySQL, APIs, Cucumber, Back-end, Back-end Development

Senior Engineer

2016 - 2017
NUVI (via Toptal)
  • Implemented most of the data-collecting logic and a big part of data conversion and data unification for NUVI social media marketing suite. Was involved in the development of a data-filtering microservice. Helped create statistical reports and fixed some WebUI-related issues. Mentored juniors and interviewed candidates.
  • Designed and implemented a microservice (Golang) that got near-real-time activities directly from social networks and other data providers through their APIs according to users’ monitors and pushed data onto RabbitMQ and Redis with duplicate prevention. Implemented interactions with Instagram, Google+, YouTube, LexisNexis, Reddit, and VK; helped with Pinterest and StackOverflow; and reimplemented mots of the logic related to Facebook.
  • Implemented reliable and disconnection-tolerant RabbitMQ subscriptions and publishing for all the company’s Golang applications. Eliminated a very harmful and hard-to-catch issue in streadway/amqp.
  • Developed a microservice (Golang) for getting real-time data from social networks and other data providers and pushing them onto RabbitMQ.
  • Designed and implemented a microservice (Golang) for getting Twitter historical data through the Gnip APIs and pushing them to RabbitMQ and Redis. The microservice had a Rest API for getting data counts and previews, for creating/retrying jobs, and for querying their statuses. The jobs and their sub-jobs were being processed in parallel. Refactored the microservice so that it could become a universal solution for getting historical data from all the social networks.
  • Implemented reverse geocoding for getting ISO-3166-2 region code by geocoordinates in just one fast SQL query. (Created a complete world map with all the ISO-3166-2 regions’ shapes.).
  • Designed and implemented a microservice (Rails) that received near-real-time activities through DataSift API according to users’ monitors and pushed them onto RabbitMQ and Redis in internal data formats.
  • Developed a library (Golang) for URL normalization and concurrent resolution of redirects.
  • Made a library (Golang, Selenium) for conversion between usernames and user IDs for Instagram and Facebook.
  • Added support for LexisNexis and VK and implemented URL normalizing with redirect resolution and universal conversion of regions/countries names and codes into ISO-3166-1/2 along with reverse geocoding.
  • Implemented a social network users’ matcher, URL matcher, and HTML stripping for text search; added the ability to debug the microservice locally using copies of real data streams; and improved publishing to RabbitMQ and Redis, along with other fixes and refactoring.
  • Designed and implemented a microservice (Golang) to replay historical data from the company’s database to RabbitMQ and to convert data between formats. The microservice had a REST API and a CLI for creating jobs and for querying their statuses. The jobs and their sub-jobs were being processed in parallel.
  • Implemented a microservice (Rails) that read activities of various social networks from RabbitMQ and stored them into MongoDB. The microservice had a REST API and a CLI for getting data from the DB.
  • Designed and developed a web application (Rails) for collecting visitors’ social networks access tokens through OAuth APIs.
  • Created a library (Golang) for working with monitor data that were stored in PostgreSQL and updated in real-time via RabbitMQ messages. The library was employed in several microservices.
Technologies: Deis, CircleCI, Heroku, StatsD, Airbrake, MongoDB, PostgreSQL, Redis, RabbitMQ, Ruby on Rails (RoR), Ruby, GoLand, Go, Back-end, Back-end Development

CTO

2014 - 2015
ImproveMedia.ru
  • Built a software development team (Ruby on Rails) which outclassed all previous ones in its effectiveness. My team, with my direct participation, released InMyRoom.ru v2.0 and FamilyBoom.ru, reworked and recovered eCommerce features, developed new billing features, introduced a Rails engine based on the code of InMyRoom.ru to make it a framework for all projects, and moved InMyRoom.ru and FamilyBoom.ru onto it.
  • Established regular Scrum meetings and iteration plannings, organized a new task-tracking system and a documentation system, and established code-flow rules.
  • Organized, in collaboration with team members, a continuous integration system, fixed unit tests, and introduced new Selenium tests.
  • Found a system operator who joined the team and took all the tasks of a remote maintenance team. The code repositories were transferred onto the company's servers out from GitHub. Regular backups were tuned up. A monitoring system was introduced. A process for doing regular payments for hosting and other services was tuned up too.
Technologies: Jira, GitLab, RSpec, Redis, PostgreSQL, Ruby on Rails (RoR), Ruby, Back-end, Back-end Development

Head of Software Quality Assurance

2011 - 2013
Mail.Ru Group
  • Developed automated testing that is interesting for people working on it (super-team, infrastructure, testing, test automation, continuous integration, requirements management, interaction with product owners, project managers, developers, operators, HR team, and PR team).
  • Introduced the first stable multithreaded Selenium WebDriver service available on the company level, which now is being used in testing of many of company's products.
  • Directed and coordinated a team to build a large set of automated tests from scratch on Python for daemons written on C, for the main module of advertisement feeds, a company-wide common template engine, and main parts of web front-end of target.mail.ru.
  • Developed a testing infrastructure available on the company level (Xen virtualization with Convinture Convirt Open Source web-interface, configuration management with Opscode Chef, and continuous integration with Jenkins). This infrastructure became a home for continuous integration systems of different projects for our company.
  • Developed and applied a tool for database change management based on migrations.
Technologies: Chef, Selenium WebDriver, Xen, Linux, Nose, Pytest, Java, C, Python

Head of Software Development

2011 - 2011
Oversun Scalaxy
  • Built new features—confirmation of registration via mobile text messages and the "promised payment" feature—, fixed lots of bugs, accelerated the web interface by optimized the JavaScript code, and released the first stable version of the cloud.
  • Served as the head of the software development direction, head of the Ruby development department, head of the testing department, and one of the main Ruby on Rails and JavaScript developers.
  • Trained colleagues, assisted the tech-support team in solving technical issues, helped the accounting department with reports creating, and participated in meetings devoted to developing the product.
Technologies: Xen, RSpec, jQuery, JavaScript, Ruby on Rails (RoR), Ruby, PostgreSQL

Head of QA

2010 - 2011
Oversun Scalaxy
  • Built the testing process under an acute shortage of resources.
  • Communicated with software developers, operators, and technical support team, informing programmers about user complaints and speeding up bug fixes. Participated in the discussion on technical architecture of new project tasks.
  • Tested the company's software using automated, semi-automated, and manual approaches.
  • Regularly planned testing and development of auto-tests, verified both functional and load requirements, and composed tasks for defect elimination and monitoring of system development.
  • Trained colleagues to write Selenium tests with Cucumber.
  • Re-established browser Selenium tests (Cucumber, Ruby, Selenium-RC) and added them into the continuous integration system. Achieved parallel running of Selenium tests in various browsers after patching the Selenium-RC source on Java.
Technologies: Selenium Remote Control (RC), Java, Cucumber, Linux, C, RSpec, Ruby

Head of Software Quality Assurance Department

2007 - 2010
Begun.ru
  • Founded the quality assurance department of a Russian contextual auction-based advertising internet service, hired employees, and managed them. Planned teamwork, created the testing framework and environment, and communicated with software developers, operators, project managers, and business owners.
  • Created and designed core components of a system for automated testing of the company's web interfaces and scripts, daemons, JS-blocks, ActionScript VPAID library, etc.
  • Introduced a continuous integration system based on phpUnderControl. Helped introduce the company's coding standards; separated stable and current code using branches in the SVN repository. Coordinated product deployment.
  • Developed a tool that provides a way to write formal bug reports into the Trac.
  • Trained colleagues in software testing and the fine points of development for high-load systems, database optimization, and test-driven development.
  • Originated and carried out the entire software lifecycle for a feature that brings the company a few thousand dollars a day.
  • Created a PHP extension for internal use in the company and made a significant number of corrections of the PHP-extension runkit.
Technologies: RunKit, VPAID, Trac, Selenium Remote Control (RC), Zend Framework, PHPUnit, Linux, Flash ActionScript, C, PHP

Lead Developer

2006 - 2007
RosBusinessConsulting Media World (mail.qip.ru)
  • Improved the main web-mail features (representation, replying, messages formation, etc.) to support a variety of MIME combinations and encodings (this work was based on patching, optimizing and reintegrating the huge Horde Framework).
  • Designed database schemas to improve the efficiency and scalability of the system.
  • Sped up the web interface by rewriting code, modifying database structure and SQL queries, and caching data (on a file system or Memcached). Improved scalability of the web front-end (moved session data out from the local file system into the database).
  • Eliminated a huge number of possibilities for XSS injections and SQL injections in the project.
  • Designed and developed an internet-links catalog, added support for OpenID and RSS into the project, and authored a client-side part for a prototype of an online instant messenger on JavaScript and PHP.
Technologies: Horde, Web Security, MySQL, JavaScript, PHP, Back-end, Back-end Development

Web Developer

2003 - 2006
ARTall
  • Oversaw web development for the company.
  • Authored a new web CMS.
  • Created more than 40 websites with administrative interfaces (including a large e-shop) basing on the CMS.
  • Designed database models (MySQL) and regularly patched HTML templates and CSS stylesheets.
  • Operated Linux and FreeBSD, installed and configured Apache, PHP, MySQL, vsFTPd, Samba, and VPN (pptpd).
Technologies: CSS, HTML, MySQL, JavaScript, PHP, Back-end, Back-end Development

Programmer

2003 - 2003
Exat.ru
  • Coded regular expressions.
  • Wrote format converters of price lists on XSLT.
  • Contributed to technical analytics.
  • Wrote documentation on the XML format.
Technologies: XSLT, Regular Expressions

Web Developer

2001 - 2002
Renew
  • Automated the trainings.ru portal and added 16 new sections (including forum and search) into it.
  • Created six new sites from scratch.
  • Created a universal administrative interface for all sites in a very short time.
Technologies: XSLT, MySQL, PHPLIB, PHP, Back-end, Back-end Development

PHP Runkit Extension

http://php.net/runkit
The runkit extension is written in plain C and provides means to modify constants, user-defined functions, and user-defined classes. It also provides for custom superglobal variables and embeddable sub-interpreters via sandboxing.

I've been maintaining it on GitHub since 2009, and now I'm officially the project's leader.

More information is available at zenovich.blogspot.ru/2015/10/runkit-1.0.4.html.

Languages

PHP, Go, Regex, C, Ruby, XPath, Python, Assembler x86, SQL, HTML, C++, JavaScript, Sass, Java, XHTML, CSS, XML, XSLT, AS3, Sed, Curl Language, AWK, YAML, XML/XSLT, C#, Flash ActionScript

Frameworks

Selenium, Ruby on Rails (RoR), PHPUnit, Nose, Zend Framework, Horde, Slim, QUnit, JUnit, JNI, PEAR, Capybara, Django, Qt

Libraries/APIs

CarrierWave, Selenium Grid, Selenium WebDriver, DataSift API, Standard Template Library (STL), REST APIs, Devise, Sidekiq, jQuery, Mongoid, PHPLIB, Deis, Matplotlib, AMQP, Gnip API, Sockets, SAX, Google AdWords, Protobuf, FFTW, Microsoft Foundation Class (MFC) Library, GeoIP, AdWords API, jMock, libvirt, SciPy, NumPy, Microsoft Foundation Classes (MFC)

Tools

Jenkins, RSpec, Capistrano, Trac, GitLab, Jira, xUnit, Shell, Pytest, Microsoft Visual Studio, Vagrant, Firebug, Redmine, PhpMyAdmin, GitHub, Valgrind, GDB, Cucumber, Chef, Subversion (SVN), Xdebug, NGINX, Git, Vim Text Editor, Sublime Text, Selenium Remote Control (RC), RunKit, GoLand, RabbitMQ, Airbrake, CircleCI, Trello, PuTTY, Microsoft Visual C++, RVM, Qt Creator, VPN, Microsoft Project, VirtualBox, Apache JMeter, PHP-FPM, Open Office, Slack, rbenv, Zabbix, Microsoft Excel, MATLAB

Paradigms

Testing, Change Management, Test-driven Development (TDD), Behavior-driven Development (BDD), Object-oriented Programming (OOP), Continuous Integration (CI), Model View Controller (MVC), Continuous Deployment, REST, XP, DRY, Scrum, Concurrent Programming

Platforms

LAMP, Unix, Linux, MacOS, Heroku, Ubuntu, Win32, Windows, Xen, Firefox, BREW, Visual Studio Code (VS Code)

Other

Algorithms, Quality Assurance (QA), Web Development, Data Structures, Software Design, Source Control Management, XSS, QA Test Plan Management, Regular Expressions, Software QA, Software Development, Ajax, Software, Software Consultant, Back-end, Back-end Development, Debugging, Mathematics, Parsers, Workflow Modeling, HTTP, Technology Strategy & Architecture, Technical Project Management, WebDAV, Agile Software Testing, PHPDoc, Vi, VPAID, Web Security, StatsD, Digital Signal Processing, Optimization Algorithms, Doxygen, Outlook, SOAP, UDP, DOM, DHTML, CGI, OAuth, APIs, PHP Extensions

Storage

JSON, MyISAM, InnoDB, MySQLi, PostgreSQL, MySQL, VSFTPD, XML-RPC, LVM, Memcached, Redis, MongoDB

Industry Expertise

Project Management

FEBRUARY 2019 - PRESENT

Deep Learning Specialization

Coursera

FEBRUARY 2019 - PRESENT

Sequence Models

Coursera

JANUARY 2019 - PRESENT

Convolutional Neural Networks

Coursera

JANUARY 2019 - PRESENT

Structuring Machine Learning Projects

Coursera

OCTOBER 2018 - PRESENT

Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization

Coursera

OCTOBER 2018 - PRESENT

Neural Networks and Deep Learning

Coursera

Collaboration That Works

How to Work with Toptal

Toptal matches you directly with global industry experts from our network in hours—not weeks or months.

1

Share your needs

Discuss your requirements and refine your scope in a call with a Toptal domain expert.
2

Choose your talent

Get a short list of expertly matched talent within 24 hours to review, interview, and choose from.
3

Start your risk-free talent trial

Work with your chosen talent on a trial basis for up to two weeks. Pay only if you decide to hire them.

Top talent is in high demand.

Start hiring