← В ленту
Регистрация: 28.11.2022

Stepan Yakovenko

IT
senior
Специализация: C++ / Web / ML software developer

Портфолио

Inex Technologies

Created production-ready software for NVIDIA Jetson-based ALPR detection hardware from scratch. I have deployed pretrained license plate reading neural networks (YOLO and GRU-based CNN) on new hardware with TensorRT (https://www.inextechnologies.com/wp-content/uploads/2019/11/IZODPU-G.pdf). Implemented inference core in C++11 (video processing as multithreaded OpenCV/ffmpeg application), user web GUI and high-level logic code in nodejs. Also invented optimised CPU-based image downsampler, which significantly overperformed cv::resize in INTER_AREA mode in terms of performance with comparable image quality. Feature-engineered license plate aligner for license plate reader, which performed robustly on skewed and misaligned license plates and allowed to raise recognition precision from ~80% to ~90% on such plates. Took all major technical decisions, managed work of web developer and tester, collaborated with data scientists and technical writer. For another project, which focuses on detecting, measuring and counting axles on vehicles, implemented an algorithm for camera calibration from a single image. Together with object tracking and various 2D geometric approximations, this allowed to measure distance between axles with precision less then one decimeter from a camera, mounted on a toll plaza.

Gazprom-media

Built highload recommender service for online news site with ~300K users per day on average. Used java, mongodb, clickhouse, mapdb, apache hadoop, apache mahout, mlpack. Tried various recommender algorithms and libraries on real users with AB-tests. Used apache sparkml iALS in final version. Solved challenging problem of HTTP responce latency (<20ms per request on average in production under 20rps on peak). Managed to achieve ~20% increase of clicks on recommended compared to top material, ~100% increase compared to baseline random recommendations (measured in A/B tests).

ILFIRON

- Javascript kernel programming for Collab-office, online DOCX collaborative editor based on HTML5 canvas. Chosen technology, created prototype, invented approach for collaborative XML editing, reverse-engineered DOCX format, implemented layouter, solved cross-browser portability issues, implemented unit tests. - Created WebRTC-based web service www.visitele.com with nodejs, which allows customers to embed video chat into their websites and talk directly to customers. Implemented server side in nodejs, client side with AngularJs and pure javascript. Collected requirements from customer, prototyped different approaches, performed highload optimisation for production.

Скиллы

AJAX
Angularjs
ASP.NET
C++11
Debian/CentOS/Linux
Eclipse
Flash
Git
HTML/HTML5/CSS
IDEA
Java
Javascript
MySQL
Oracle
PHP
Python
STL

Опыт работы

Teacher
с 01.2019 - По настоящий момент |CSCenter, Yandex
Java, computer vision
Teaching students Java and computer vision.
Python / C++ / Web / Software developer
01.2019 - 01.2021 |Inex Technologies
Python, C++11, OpenCV
Created production-ready software for NVIDIA Jetson-based ALPR detection hardware from scratch. I have deployed pretrained license plate reading neural networks (YOLO and GRU-based CNN) on new hardware with TensorRT (https://www.inextechnologies.com/wp-content/uploads/2019/11/IZODPU-G.pdf). Implemented inference core in C++11 (video processing as multithreaded OpenCV/ffmpeg application), user web GUI and high-level logic code in nodejs. Also invented optimised CPU-based image downsampler, which significantly overperformed cv::resize in INTER_AREA mode in terms of performance with comparable image quality. Feature-engineered license plate aligner for license plate reader, which performed robustly on skewed and misaligned license plates and allowed to raise recognition precision from ~80% to ~90% on such plates. Took all major technical decisions, managed work of web developer and tester, collaborated with data scientists and technical writer. For another project, which focuses on detecting, measuring and counting axles on vehicles, implemented an algorithm for camera calibration from a single image. Together with object tracking and various 2D geometric approximations, this allowed to measure distance between axles with precision less then one decimeter from a camera, mounted on a toll plaza.
Data engineer / machine learning developer
01.2018 - 01.2019 |Gazprom-media
.
Built highload recommender service for online news site with ~300K users per day on average. Used java, mongodb, clickhouse, mapdb, apache hadoop, apache mahout, mlpack. Tried various recommender algorithms and libraries on real users with AB-tests. Used apache sparkml iALS in final version. Solved challenging problem of HTTP responce latency (<20ms per request on average in production under 20rps on peak). Managed to achieve ~20% increase of clicks on recommended compared to top material, ~100% increase compared to baseline random recommendations (measured in A/B tests).
Senior C++ developer
01.2018 - 01.2020 |Pro Vision Lab
C++, MSVC, OpenCV, cmake, QT
- Prototyped project for thread detection in sewing machine, proposed original algorithm, which worked stably where traditional approaches like Canny detector/ Hough line transform failed. Prototype was created with MSVC, OpenCV, cmake, QT. - Silhouette tracking algorithm for US startup counting people from CCTV media stream and collecting furniture usage statistics. Used SUBSENSE/Zvikovich algorithm for background subtraction, QT for user interface, OpenCV for video frame extraction and morphological operations. - Built prototype for crack detection software. Managed creation of labeled VOC2007 dataset with two other people, double-checked their labeling. Trained crack detection neural networks (UNET and FRCNN), deployed code to linux production server, implemented simple API for crack detection with nodejs. - Optimising OpenCV CSRT video tracker code to employ powerful 64 CPU hardware for airplane landing tracking software.
Computer vision C++ researcher
01.2017 - 01.2018 |Scoobe3D
C++, 3D
Prototyped and implemented various alorithms for 3D reconstruction for 3D scanner startup company. Developed, implemented and tested various algorithms for TOF camera, multiview/stereo point matching and cloud point averaging. Implemented effective subpixel camera position with ARUCO markers. Supervised junior with porting C++ code from Windows to Linux. Participated in assesment of existing MVG 3D reconstruction software and creating 3D datasets.
Java, Javascript Developer, Blockchain developer
01.2016 - 01.2017 |Logic Lab
.
- As a team lead of two developers created Proof of Concept of Android bytecode obfuscator utility for www.arxan.com. Prototype was able to obfuscate class/methods/fields names, insert opaque predicates, search for bytecode sequences, inline and split (inverse of inline) methods. Did huge research on Dalvik bytecode verification algorithm and implemented static bytecode analysis code to derive register types in order to be able to produce correct bytecode. - In the same team created prototype of blockchain ethereum-based system for encrypted storing of personal data for healthcare industry. Nodes in the network were of two types: trusted central nodes and user nodes. System contained sofisticated rules for sharing personal file access between nodes, while files themselves were stored at the nodes, no on the blockchain. Prototype was succesfully presented and deployed for the custormer.
Software Architect
с 01.2014 - По настоящий момент |ILFIRON
AngularJs, HTML5 canvas, XML
- Javascript kernel programming for Collab-office, online DOCX collaborative editor based on HTML5 canvas. Chosen technology, created prototype, invented approach for collaborative XML editing, reverse-engineered DOCX format, implemented layouter, solved cross-browser portability issues, implemented unit tests. - Created WebRTC-based web service www.visitele.com with nodejs, which allows customers to embed video chat into their websites and talk directly to customers. Implemented server side in nodejs, client side with AngularJs and pure javascript. Collected requirements from customer, prototyped different approaches, performed highload optimisation for production.
Java / Javascript Developer
01.2013 - 01.2014 |TripTop Technologies
.
- Participated in development of online travel booking services (flights, charters, hotels, transfers, etc) for, www.yestravel.co.il. GWT/angularjs web component is integrated into affiliates’ websites to allow direct booking by websites’ visitors. Tomcat was used as server, it accumulates travel products from travel service providers. Service consisted of four main GWT modules: service search interface, booking iterface, payment wizard and backend interface for affiliate registration and configuration. Server side was not only serving these interfaces, but communicating with travel services (GDS) like Amadeus or Sabre. - I’ve created personal cabinet, that allows to store user information, download documents. Ported payment wizard to angularjs from jsp pages, improved integration with Pelecard online payment system. I’ve created client part of online transfer booking system, also participated in improvinglegacy GWT code.
Java / C++ Developer
01.2010 - 01.2013 |Accusoft Pegasus
C#, C, Java, PHP, C#. VB.NET, JSP
- Worked with team of ~ ten developers (Indian, 5 Americans, and 4 Russians). Created product ImageGear Java, released beta version. Ported image compression algorithms (GIF, JPEG, PNG, TIFF and many others) from C#/C to Java, sometimes using JNI. Participated in development of Prizm ContentConnect in international team of 10 people. Fixed bugs in document conversion kernel, also fixed or ported web interfaces between platforms (PHP, C#. VB.NET, JSP). Supporting legacy FLASH viewer for SWF documents. Also proposed and promoted sophisticated solution of critical document rendering fidelity issues that saved product place in the market. This solution works in yahoo mailboxes.
C++ Developer
01.2008 - 12.2008 |BCS-IT
OpenGL 3D, Microsoft Visual Studio
- Developed extensions for Microsoft Remote Desktop with Microsoft Visual Studio. Created a prototype of the final system that was designed to speedup OpenGL 3D graphics that was transferred over RDP connection. OpenGL system DLL was replaced by version that sends OpenGL commands over RDP and executes them directly on the client screen instead of sending uncompressed images that slow down data exchange. Developed code-generation algorithm for serialization of OpenGL commands for final version.
Java / Javascript / C++ Developer
01.2008 - 01.2010 |Development On The Edge
Java, R, C++ WIN32
Worked on the following projects: - Territorial Information System of Novosibirsk Oblast (a federal subject of Russia). System stores data about people living in the region, their attributes (documents, addresses, marital status, social categories and so on) and calculates amounts of social welfare that these people receive every month. Developed javascript-based object web platform for displaying and editing detailed citizen's personal information. Created interface for editing KLADR (Russian State Address Database) that was also employed in another project (Federal Veteran Database) that is used in all regions of Russia. All the payment transactions are recorded using double-entry bookkeeping system that was implemented by me. System is implemented as Java web application for Apache Tomcat, database is Oracle 11g. - DatABEL, BigData package facilitating analysis of large (giga- to tera-bytes) matrices; matrix storage is organized in a way that either columns or rows are quickly accessible; primarily aimed to support genome-wide association analyzes. The package is a C++ plugin for R (a language and environment for statistical computing and graphics). Plugin allows to process, load, save, transpose large data even if they don't fit into memory. It is implemented in GNU C++, being built for four operating systems (Windows, Sun OS, Mac OS, Linux) with some parts implemented in R. Created project almost from scratch, improved speed, implemented caches, file handle pool, compared speed with other similar projects. - Short-term project for computer tomography. Supported (fixing bugs, improving interface) of Java applet and C++ WIN32 executable.
Java / Javascript Developer
01.2007 - 12.2007 |Softmotions
.
- Participated in development of university information system. This system stores and manages data that refers to all aspects of educational process: academic curriculums, students, exam results, faculty finances and so on. The system is deployed in Novosibirsk State University. Developed Hibernate and SQL queries, XUL pages, WEB applications, UJAC reports, maintained and created new javascript and java code.
Win32 C++ Developer
01.2006 - 12.2006 |DataDynamics
.
- COM developer at DataDynamics (www.datadynamics.com). At the beginning I was working on DynamiCube OLAP product. Shortly after, my responsibility was extended with three more projects (ActiveBar, SharpGrid and ActiveReports). My personal achievement in DataDynamics is creating of automated build system for ActiveReports and DynamiCube.
C++ Developer
01.2005 - 01.2006 |LEDAS
C++, CAD systems
- C++ developer of LGS3D solver at LEDAS. LGS3D is a computational component used in heavyweight CAD systems. During my work I have implemented support for spheres, created quick test platform. I've also inspired massive code refactor, that allowed to redouble solver speed using delicate tuning.

Образование

Physical informatics
2003 - 2005
Novosibirsk State University, Department of Physics
Quantum Optics
1998 - 2003
Novosibirsk State University, Department of Physics

Дополнительное образование

Supervised machine learning
01.2016 - 05.2016
Courserra

Языки

АнглийскийСвободно владеюРусскийРодной