Vasily Nemkov, Developer in Warsaw, Poland
Vasily is available for hire
Hire Vasily

Vasily Nemkov

Verified Expert  in Engineering

Software Design Developer

Location
Warsaw, Poland
Toptal Member Since
December 12, 2016

Vasily is a seasoned software engineer with over 15 years of commercial experience, proficient in designing and developing C++, Python, Svelte, Flutter, and Vanilla JS software. He loves solving complex issues and creating robust, efficient, and maintainable solutions. He learns new things on the go and spreads the knowledge, sharing it with colleagues and friends.

Portfolio

Multy
Processing, Interviews, Team Management, Go, C++, iOS, Android
Percona, LLC
Jenkins, Linux, Bash, MySQL, C, C++
Solarwinds MSP Technology
SQLite, Multithreading, Boost, FreeBSD, Linux, C++

Experience

Availability

Part-time

Preferred Environment

MacOS, C++, Linux, Python, Svelte

The most amazing...

...thing I've done is nourishing and growing a startup—shaping a team, environment, and processes, delivering the critical cross-platform component of the system.

Work Experience

CTO | Technical Advisor

2017 - 2019
Multy
  • Established and constantly improved the development experience of the team. Helped out in the identification and removal of impending factors. Established a process of peer and cross-reviews of the components of the system.
  • Led a team of 10 software engineers. Investigated and identified key areas and possible technical risks. Took part in and facilitated key technical design decisions of all parts of the solution: core, mobile apps, and back end.
  • Selected and set up CI integration for the core project component. Added jobs for C++, iOS, and Android that serve as a base for further improvement. Formalized the release process and created a step-by-step guide for both Android and iOS.
  • Refined Jira workflow to reduce ambiguity and streamline the process (review and ready for test phase).
  • Designed and developed a core cross-platform component of the system. Built a framework for adding new blockchain protocol families. Developed a procedure for adding new blockchain protocols or forks.
  • Chose an appropriate Git workflow, developed a guide, and conduct several training sessions. Educated and helped out fellow team members to improve their Git skills.
  • Administered GitHub and other services (adding and removing users, ensuring proper access level and permissions, etc.).
  • Took part and led the legal process. Chose an appropriate source code license, defined the license template and guidelines, and initiated and reviewed the CLA. Reviewed the privacy policy for the product.
  • Developed a list of requirements for potential candidates for hire, built the team profile, and curated the next-to-hire list. Conducted pre-screening, tech, and behavioral interviews and helped new hires understand the domain.
Technologies: Processing, Interviews, Team Management, Go, C++, iOS, Android

Software Engineer

2017 - 2018
Percona, LLC
  • Improved the test system to take half the time to run all the tests. That resulted in great reduction of CI load, improved fellow engineer performance, and improved overall product quality.
  • Fixed bugs and maintained a huge codebase of a MySQL fork.
  • Merged the new MySQL release into PXB, which is technically a fork of MySQL.
Technologies: Jenkins, Linux, Bash, MySQL, C, C++

Senior C++ Software Engineer

2016 - 2017
Solarwinds MSP Technology
  • Created a thread-safe SQLIte wrapper with a pool of prepared statements, which allows reuse of popular queries without recompiling. The wrapper also provides an additional layer of convenience and safety, allowing session termination while it is still being used from other threads.
  • Implemented a new binary storage format for backed up data that brings better storage efficiency, data consistency and better run-time performance. Implemented facilities for performance testing new vs old data formats vs. platform native file system operations.
  • Worked on migrating an existing solution from the old to the new meta-data storage back-end.
  • Upgraded and set up an existing build system and toolchain on CI server to support C++11 builds.
  • Led a small team of back-end engineers.
Technologies: SQLite, Multithreading, Boost, FreeBSD, Linux, C++

Python Software Engineer

2014 - 2016
Wargaming.net
  • Designed and implemented a data packing protocol for Node-to-Node and Node-to-Client communication in a distributed high-load system with significantly reduced amount of traffic in certain conditions (30% to 70% reduction on average). That allowed for rollout of a new game mode that would otherwise increase traffic spikes to a level that would cause significant lag and negatively affect user experience.
  • Implemented a matchmaking system for the bot sandbox mode.
  • Improved the tutorial system back-end for the "Funnel" project. Also performed refactoring of the quest engine.
  • Fixed lots of bugs and made improvements to the existing Python back-end of a high-load project.
Technologies: BigWorld, RabbitMQ, Subversion (SVN), Python

C++ Software Engineer

2014 - 2014
Yandex, LLC
  • Worked on a Chromium-based web browser, implementing various UI features and fixing bugs in legacy code.
  • Added unit and user interaction tests over existing and new functionality.
  • Resolved integration and merge issues.
Technologies: NinjaScript, Google Test, Stash, Jira, TeamCity, LLDB, GDB, Linux, MacOS, Windows, Python, Cocoa, Git, C++

C++ Software Engineer

2005 - 2013
ScienceSoft, Inc.
  • Improved performance of image decoding in an image-processing framework by using multi-threaded decoding, smart algorithms, and common scenes. Maintained, refactored, and fixed bugs for the same project.
  • Implemented an auto-update feature for Qt-based cross-platform VoIP client. Ported the application to the Linux platform and implemented platform-dependent startup code for both Linux and Windows platforms.
  • Built a Symbian app client for a synchronization service. Implemented synchronizing data to/from various data sources. Updated HTTP support to allow huge files downloads.
  • Worked on lots of other Symbian applications, but since Symbian has been dead for a long time now, there is little sense in describing it all here.
Technologies: Symbian, Linux, MacOS, Windows, CMake, Qt, Boost, Python, C++

Multy Core

https://github.com/Appscrunch/Multy-Core
Designed and developed a cross-platform mobile-first multi-blockchain wallet core.

Features:

- Single seed phrase for all your wallets
- Private\public blockchain-specific keys
- Creating and signing blockchain transactions
- Supports Bitcoin, Ethereum and Golos blockchains
- Testnet keys differ from Mainnet keys
- Supported BIPS: BIP32, BIP44, BIP125
- Paying to P2PKH and P2SH (+ Segwit) Bitcoin address
- Easy to add new blockchain protocol support into existing framework

Helped lead mobile and back-end teams in order to release a complete wallet solution with best UI, UX, and security possible.

Chess Game

This project involved creating part of a simple chess game written in C++11 with some help from Boost. This piece has basic piece move logic and user move verification. It was designed not to throw exceptions for portability and performance. The user interface was written in Qt Quick.

Languages

C++, Python, C++11, UML, C, Bash, Go, Processing, QML

Tools

Git, CMake, Jira, Buildbot, TeamCity, Stash, RabbitMQ, Jenkins, Subversion (SVN), CTest, Qmake, GDB, LLDB, Travis CI

Paradigms

Object-oriented Programming (OOP), Metaprogramming, Template Metaprogramming, Design Patterns

Frameworks

Google Test, Cocoa, Qt, Boost, Qt Quick, Svelte

Libraries/APIs

Standard Template Library (STL), NinjaScript

Platforms

Linux, Symbian, FreeBSD, Android, iOS, MacOS, Windows

Storage

SQLite, MySQL

Other

Technical Leadership, Software Design, Algorithms, Multithreading, Data Structures, Team Leadership, BigWorld, Team Management, Interviews

2003 - 2008

Bachelor's Degree in Telecommunication

Belarusian State University of Informatics and Radioelectronics - MInsk, Belarus

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