Mikhail Ryzhov. Software Developer.
About
I've been the Senior Software Developer in Kiwi.com since July 2018. And that is what I have done:
- Optimized data flow between data generation service and flight search engine so dataset loading time decreased from around 10 minutes to less than 2 seconds and freshness of the data from 3 hours to just 10 minutes.
- Optimized memory usage of the flights search engine decreasing k8s request by 30%
- Developed fast and easy to use CatBoost evaluation library: github.com/kiwicom/catboost-cxx" (article)
- Worked on a prices prediction engines development using Machine Learning technologies. (TensorFlow, CatBoost, XGBoost)
- Developed Ground Routing engine in C++ using Google Transfer Patterns algorithm with optimizations.
- Started rewriting and refactoring flights search engine frontend from Python to Go.
In the year 2019 I was sixth in Telegram voice call quality measuring contest.
I used to work in Yandex LLC in Moscow as a Senior C++ developer in Yandex.Images search quality and base search runtime team. I worked on:
- Optimizing the base search daemon so it became 40% faster by adding an additional filtering stage.
- Preparing data in MapReduce system and training Neural Network for new factor based on text embeddings.
- Working on some other factors for the ranking formula.
Also I used to work in R-Alpha and Kurchatov's Institute. There I was a part of the team developing a custom operating system with strong cryptography mechanisms based on FreeBSD and cross-platform IPSec implementation in userspace using GObject/GIo.
Skills
- Languages: C, C++, Go, Python, UNIX shell, awk, JavaScript
- Tools: make, autotools, cmake, gdb, valgrind, docker
- ML tools: TensorFlow, CatBoost, numpy
- VCS: Git, cvs, Subversion, Mercurial
- Technologies: Backend development, Networks, Big data, Machine Learning
- Human languages: Russian (native), English, Czech.
Experience
-
Since July 2018
Kiwi.com. Senior C++ Developer in the Search Backend group.
- Worked on dataflow optimizations for flight search engine, that allowed to decrease time from data coming to a database to frontend from 3 hours to 10 minutes.
- Worked on memory optimizations in flight search daemon using memory alignments, variable precision types, and LZ4 based compressed data storages.
-
Developed CatBoost model evaluation library in C++ catboost-cxx
(article)
- Created infrastructure for training CatBoost Gradient Boosting model for prices prediction based on historical data. Tested tens of different models based on TensorFlow, CatBoost, dlib, XGBoost.
- Developed very fast timezone data manipulation library based on tz.js which allows to operate with local times in ground search engine. Here you can find it.
- Wrote prototype of flights search and ground search integration.
- Developed real-time ground routing search engine using Google's transfer patterns which is running in production.
- I've developed prototype of the flights search entry-point daemon rewritten from Python to Go with code refactoring. Now it is in production.
-
October 2016 - June 2018
Yandex. Senior C++ Developer in the Images search quality group.
- Developed code for MapReduce and runtime calculation of several new NeuralNet based ranking factors
- Increased base search daemon RPS by 45% by implementing additional ranking stage with specialized factors used to train Gradient Boosting formula
- I'm a part of the team which works on replacing old index types with the universal and fast new ones
- Implemented fast DotProduct/L1Distance/L2Distance libraries that could be found in tens of Yandex products, for example they are in use in CatBoost open source gradient boosting library
-
2006-2016
National Research Center Kurchatov Institute and R-Alpha. Senior Software Developer.
- Worked on fast asynchronous socket I/O implementation for software VPN solution that allowed to work on 1Gbit bandwidth with strong encryption. (It was in the year 2014, so 1Gbit on CPU was a miracle)
- Developed userspace components of custom FreeBSD-based operating system e.g. installer, certificate generation/revocation/accounting tool,...
- Used to be maintainer and developer of software PKCS#11 token implementation which could be found at atoken.sf.net
- Developed low-level drivers for Smart Cards
- I was writing code for cryptographic network tunnels and PKI utilities
Education
1999-2005
Moscow Aviation Institute. Application Mathematics and Physics
While learning in MAI I used to be a part of the Mathematics Olympic team and won Moscow group Olympics between technical universities twice and was second in personal accounting in Russian Olympics between technical universities.
Hobby
I like to solve mathematics and programming problems. Also I like riding the bicycle, tracking in mountains, juggling, playing pool and so on. I really like music and playing guitar. Also I like 3D printing and modeling things in CADs.
I'm the member of projecteuler.net and has result:
The last version of this CV can always be found at rymis.eu.org/cv.html