Oleksandr Lotokhov

Slovenia · +386 40 760042 · oleksandr@lotokhov.com

I’m senior SW developer with competence in embedded systems and backup in the cloud, C++ and Python.

My formal CV is here.


Goal

Get a job in interesting/challenging project as a part of distributed team. Preferred way to work is working remotely from Slovenia, with onsite visits when it is needed.
Why remotely

Because it is possible now. Audio and video calls, fast and stable internet access, tools supporting remote working. The most inspiring description of the concept is in the "Rework" book from the Basecamp (ex. 37 Signals) company. Let me quote them:

We started out with four people, and today we’re a company of about 50 spread out across 32 different cities around the world. Our headquarters are in Chicago, but everyone at Basecamp is free to live and work wherever they want. Many of us love working remotely – we literally wrote the book on remote working! ... With such a diverse group of people, from so many different places, we bring a unique perspective to everything we do.

Almost all the time till now I have worked in geographically distributed teams. The first job (2001 – 2007) was in Iskratel, the team of 10-15 engineers was in Ukraine and the main company was in Slovenia. From 2007 I live and work in Slovenia. The current job (from 2007) is in slovenian company Comtrade/Hycu, the actual work was done for the companies in Germany, Austria and USA as a part of the distributed team. Why not to continue?


Experience

Senior Developer, Dehancer

Development and support of plugin for Adobe Premiere / Adobe AfterEffects, C++, Win/MacOS, CUDA/OpenCL

View project details

Dehancer is a software to make photo/video looking like they are made on film cameras.

My responsibilities are development of Adobe Ae/Pr plugin from scratch, deploy and bugfixing/support.

You can see details on the product page

2021 - now

Senior Developer, Comtrade (ex. Hermes Softlab) Slovenia

May 2007 - Present
J2Global, USA, backup in the cloud, C++/C#/MSSQL/ELK

Support, bug fixing, optimization and new features development for the backup in the cloud solution

View project details

Switching from embedded systems to Windows programming. Project with cca 1 million lines of code.

Tasks successfully solved:

  • Data integrity issues: discovery and fixing. Issues happen in production only, can't be reproducible on test environment. Production servers contain customer's sensitive data, so developers can't have access there. Data integrity issue was actual for cca 5 years and was not fixed even by authors of the SW. Finally discovered and fixed by me.
  • Optimization: in many places there were rooms for improvement with drastical effect: time of operation decreased from days or hours to minutes.
  • Refactoring: the worst thing for refactoring was hardcoded file path size (600+ places). Till Windows 10 it was OK, after 32000 symbols path was introduced in Windows 10 it became a huge issue. Refactored successfully.
  • Dashboard to monitor state of the infrastructure based on ELK stack. Successfully deployed.
2016 - Present
J2Global, USA, user portal for backup in the cloud solution, Django

Support, bug fixing, optimization and new features development for the portal helping users to operate the backup in the cloud solution

View project details

Another switching, now to WEB programming. Portal written on Django helping users to manage their backups in the cloud easier.

Although I have good knowledge of Python, Django framework was new for me, but I jumped in quickly. Relatively fresh project - from September 2019.

2019 - 2021
AVL DiTest, Austria, RPM measurement device

Production and field support for RPM measurement device. Bug fixes. STM32F4, C, Keil/uVision IDE

View project details

This device measures RPM of any engine (gas or diesel) with any number of cylinders automatically without any manual settings, using only one audio/vibration magnetic sensor. There are a lot of complex pathented algorithms and real-time signal processing to realize that.

I got the project at support phase, my goal was to investigate and fix the issues discovered during production and in field. For example, device failed to measure RPM on one car while successfully measured all available others. Or the second production run gave half of the devices unable to start. All issues were successfully fixed.

2015 – 2016
AVL DiTest, Austria, multifunctional measurement device for car repairing/service

FW development for "Next generation" multifunctional oscilloscope for car services, Atmel UC3A3256 + ATMEGA164/165, FreeRTOS, C, Atmel/AVR32 Studio IDE. From HW design planning/discussions to field and production support.

View project details

This project was also started from the new HW design, although there was similar project already in portfolio. There was very short timeline for the project, geographically distributed team (Austria, Slovenia, Serbia), five microcontrollers (main one: Atmel UC3A3256 and four smaller ones per each channel: ATMEGA164 and later ATMEGA165) and FPGA for fast sampling of the data. We developed the FW for all microcontrollers and code for FPGA. The customer developed HW and PC SW.

It had different probes support, external calibration and self-calibration, smart power management, self-testing at start-up. Sampled data passed to the PC through USB 2.0 interface.

Later product was extended with configurable signal generator and some other new features. Time pressure increased, the size of the team also increased. Before the deadline we were under big pressure, but the product was delivered on time. It is used over the world now.

Later the new version of the device was developed, some new features were added there, two channels scope was introduced. The code was ported to the new platform smoothly.

We have also developed automatic testing system for the product including probe and signal simulation. The system used for regression testing during development for both versions of the project.

Lessons learned: working under time pressure, team management, conflicts resolving, technical debt processing.

2011 – 2016
AVL DiTest, Austria, EV battery charger

FW development for charger/discharger/balancer for EV vehicles batteries, LPC1837, C, Keil/uVision IDE, CAN bus.

View project details

Another project started from scratch: hardware design, my role was FW development from low-level drivers to main business logic and API to the management platform on PC

Lessons learned: safety first. When you are working with battery containing enough energy to kill you or at least make a big fire, safety becomes important.

2012 - 2013
AVL DiTest, Austria, device for calibration

PC SW development for calibrator device. Later support in production and making calibration scripts/procedures, C++/Python, MS Visual Studio IDE.

2010 - 2011
AVL, Germany, oscilloscope for car services

FW developing, production support, tests and calibration, FreeScale MCF5235, uCOSII RTOS, C/C++/Python, CodeWarrior IDE.

View project details

Two channels scope for automotive use, with support of special sensors like current clamps, pressure, oil temperature etc. Sensors autodetection, auto-level and auto-trigger mode, self-testing, calibration, possibility to update both FW and bootloader – those are the main features of the project.

Team was geographically distributed: Germany, Austria and two cities in Slovenia. We developed bootloader and FW plus PC SW for FW update and calibration. The customer developed HW design and FPGA code.

We were involved in the project from the first revision of HW. At the first step we prepared special revision of FW to test all HW components onboard. After all HW issues were fixed, the main FW was developed. Fast sampling was done by FPGA and sampled picture processing and passing to the PC was made by MC in FW.

The platform was Freescale MCF5235 MC and uCOSII RTOS with TCP/IP stack from Micrium. We developed everything from low-level peripheral drivers to the business logic, captured pictures processing and sending them to PC, selftest functions and calibration.

The project was good learning for distributed team managing. Also sometimes non-trivial troubleshooting was required. One interesting example is the following: on I2C bus we had two devices: cross-switch matrix and EEPROM. The issue was that cross-switch chip reacted on it’s I2C address even if the address was in the middle of data transfer, not at address position. As a result if inside the data block written to EEPROM there was a byte equal to the cross-switch chip I2C address, chip started communication and caused bus collision. After the issue was found it had to be fixed, and it was also nice challenge.

Later we developed the system for automatic testing including probe and signal simulator. The system worked as regression testing system during development and as post-production test system after development was finished.

We delivered the project to the customer and it is still used over the world. We supported it in production and postproduction, although there were almost no errors reported from the end customers.

2008 - 2010
Keymile, Switzerland, DSLAM integrated management system

SW/FW developing for automated managment system for DSLAM, C++/Python

View project details

After changing company from Iskratel to Hermes Softlab and relocating to Slovenia I continued to work on embedded systems/network project: realization of Ethernet OAM on DSLAM.

Till now that project was the best one from organizational point of view. I’ve never communicated directly with the customer during the working. All communication was done through the architect. Tasks were defined very well, reporting was simple and helpful. Team size was relatively small: one architect + one developer for one year.

On the previous job on similar project (DSLAM) we have tried to improve one thing: the device had three different channels of configuration: CLI, DB triggers and the API itself. We had to realize all three configuration procedures separately after any changing or adding new configurable entity. The idea was simple: describe each configurable item once and automatically generate the appropriate code for all configuration procedures. Unfortunately I’ve left the company before we finished that concept. And I was pleasantly surprised when I’ve found almost the same concept already realized in my next product I worked on. They made well-designed C++ framework, where the configurable entities were described in XML with automatic code generation.

In that product the same good concept was used: stable functions were done by specially designed HW chip for the best performance, and features from draft revisions of standards were done by FW for flexibility. The IEEE standard for Ethernet OAM was in draft revision only during product development, but the feature was already requested to be a part of the project.

The main conclusion from that project: communication channels must be organized well and areas of responsibility should be defined. Well written framework could also make things better.

2007 - 2008

Iskratel Ukraine, developer, senior developer, team leader

DSL-Ethernet bridge

FW developing, Motorola PowerQUICCII/III, VxWorks, C/C++, Tornado IDE.

Low-level, software based level-two packets switching, early adoption to network standards.

View project details

My first big project was Ethernet-DSL bridge. It was a part of DSLAM device, including command-line interface (CLI), real-time database (RTDB) and many other modules. The platform was PowerQUICCII (later PowerQUICCIII) microcontroller, VxWorks RTOS onboard, flash disk with filesystem on it. We developed switching functionality only, all others including BSP were done by main company. The team was four developers at the beginning, later it was increased up to 15 engineers. I started as junior-to middle developer, and at the end of the project I was team leader of a 4 other developers.

Because controller was quite powerful, we could write our module using C++ and OOP model. Other parts were in plain C. We realized all Ethernet switching functionality in FW. The system was quite flexible although it’s performance was less than special HW switching solutions. At that time it was more important: xDSL technology was “cutting edge” and most of standards were not defined yet. Having all functionality in FW we could easily change/upgrade the FW according to the latest standards revisions and/or customer requests.

I.e. we have realized VLAN and IGMP functions even before the standards were finalized and sometimes we had to make changes “on the fly”, for example, on DSL forum when DSL interoperability tests were done between DSLAMs and DSL modems producers.

Because it was the first project I’ve learned a lot. The first experience with version control, bug tracking and code review was also on that project.

During the project we designed the test room where a lot of different modems, DSLAMS, traffic generators and other equipment could be flexibly cross-connected to each other. We also developed automated testing system for the most important tests like performance, stability etc.

I had learned also the fact that effective people communication is very important component of project success, especially in distributed teams. Well defined rules like bug reports templates, tasks definition etc. could help to improve communication.

I’ve also used static code analysis on that project for first time. The experience was very good and since then I think that static code analysis is necessary tool for every C/C++ project.

We have made four different revisions of the product (according to standards/customer requests), each time improving the weak places. The product in different revisions was running as a part of DSL environment at many telecommunication operators over the world.

I've passed two Cisco exams during working on the project: Cisco CCNA and Cisco CCNP Switching. Unfortunately they have expired already because my later work was not related to telecommunications.

Automated testing system for network equipment

Design, mounting, deployment and SW development, Spyrent Smartbit device as a core, C++.

View project details

As a producer of network equipment we needed a room for end-to-end testing. And we designed and build one, plus developed the SW to control its equipment.

June 2001 - May 2007

Education

Kharkiv's National University of Radioelectronics

Master degree
Computer Science - Security
1995 - 2000

Skills

Programming Languages & Tools
  • C & C++
  • Python
  • Microcontrollers
  • HW design
  • CI
  • Static Code Analysis
  • ELK & dashboard
  • Problems/issues solving
  • Optimization
  • Agile Development & Scrum
  • Ethical Hacking

Interests

Photography, books, flight simulator, yahting

Something between hobby and passion: giving support to a parents with newborn children during the first year of live, early children development practice


Books inspired me

  • "Rework" by Jason Fried
  • "The Great Game of Business: The Only Sensible Way to Run a Company" by Jack Stack
  • "The Toilet Paper Entrepreneur: The tell-it-like-it-is guide to cleaning up in business, even if you are at the end of your roll" by Mike Michalowicz
  • "Delivering Happiness: A Path to Profits, Passion, and Purpose" by Tony Hsieh
  • "The Goal: A Process of Ongoing Improvement" by Eliyahu M. Goldratt
  • "Waltzing With Bears: Managing Risk on Software Projects" by Tom DeMarco
  • "The Deadline: A Novel about Project Management" by Tom DeMarco
  • "Fooled by Randomness: The Hidden Role of Chance in Life and in the Markets" by Nassim Nicholas Taleb
  • "The Black Swan: The Impact of the Highly Improbable" by Nassim Nicholas Taleb
  • "Games People Play: The Basic Handbook of Transactional Analysis" by Eric Berne