Alexander Zaitsev

Software engineer (mostly C++/Rust)

Here should be a title

Hi, my name is Alex and I’m a yet another software engineer. I am mostly interested in developing any kind of robust modern applications (games, cloud-native apps, whatever else). Also I really like to administrate Linux-based systems (probably some piece of my soul was a DevOooooops in a previous life :)

I am mostly skilled in: C++. If you are interested in my skills in OS/Tools/PLs/any_other_buzzword, so this list is for you:

  • Languages: C++98/11/14/17/20 (since 2010-2011. Since 2016 in production), Rust (since 2020). Also have some experience with C#, Java, Python, Bash
  • Boring languages: Russian (native), English (really I don’t know the exact level. I think it’s something like Intermediate-Upper Intermediate)
  • OS: Linux (Debian and RedHat based, mostly Fedora), Windows (since XP). Prefer Linux as a workstation. Have experience with maintaining own home-based Linux server (Fedora Server). At work also have experience with administarting Linux-based machines (on-premise, VRA-based and EC2-based instances)
  • Target OS: Since I am mostly a C++/Rust developer, usually I write cross-platform programs. I have experience with native applications for Linux-based, Windows-based, FreeBSD, macOS, Android, iOS, AIX, Solaris platforms
  • Containers: Docker, podman, containerd, CRI-U (a little bit). Have experience with multi-stage builds, docker-compose and podman-compose
  • Orchestration: Kubernetes (minikube, k3s, kubeadm). At home maintain my own on-premise k8s single-node cluster for pet projects. Related to k8s projects, which I use or used at least a little bit: calico, cilium, Helm, ArgoCD. Also heard a little bit about Nomad, Docker Swarm, Mesos
  • Virtualization: Vagrant, VirtualBox, KVM, qemu. Had some experience with VMware Workstation
  • Automation: Ansible, Terraform, k6
  • IDE: Visual Studio (since 2010), CLion, Unity Editor. Prefer CLion as a default IDE (even if I don’t like Java :). Also have some experience with Qt Creator, Dev-C++, Eclipse, NetBeans, all Intelij-IDEA-based IDEs
  • Compilers: Clang, GCC, MSVC, a little bit ICC and EDG, rustc. Mostly use GCC, Clang and rustc. For caches and/or distributed build I’ve used icecc, sccache, ccache
  • Static analysis: PVS-Studio, Clang Static Analyzer, Clang Tidy, CppCheck. Have experience with implementing own Clang-Tidy checks
  • Formatters: Clang-Format, uncrustify
  • VCS: git (console, TortoiseGit, GitKraken, integrated into CLion), SVN (TortoiseSVN)
  • VCS providers: GitHub, GitLab, BitBucket, self-hosted Gitea
  • Code review: GitHub, BitBucket, Gerrit
  • Fuzzers: AFL, LibFuzzer. Have experience with implementing custom fuzzer checks in production (LibFuzzer-based)
  • Sanitizers: Google sanitizers, Valgrind (isn’t actually a sanitizer :)
  • Profilers: Intel VTune, perf, heaptrack, CodeXL, Valgrind, built-in into memory allocators profiler functionality
  • Build systems: CMake, Cargo, custom build systems, Visual Studio Solutions. Heard or at least looked through build scripts for: Meson, Bazel, Autotools
  • Dependency managers: Conan, Cargo, vcpkg (a little bit), managing dependencies with git submodules, SVN externals, downloading them from custom HTTP(S) server :)
  • CI: TeamCity, TravisCI, Appveyor, GitHub Actions (I prefer it for my own projects). Heard a little bit about Codefresh, CircleCI
  • CD: Blue-Green and Canary deployment strategies
  • Task trackers: JIRA, Phabricator, GitHub Projects. Have some experience with Trello
  • Workflow: Scrum, Kanban
  • Databases: SQLite, MySQL, PostgreSQL, DynamoDB. At university I’ve worked also with Oracle and MSSQL
  • Message queues: NATS, SNS + SQS. I’ve read a lot about Kafka (and C++ version - RedPanda) and RabbitMQ
  • Cloud providers: AWS (ECS, EKS, SNS, SQS, SES, etc.), Localstack (for local env). Investigated a little bit Microsoft Azure
  • Design principles: SOLID, Gang of Four, Domain-Driven Design (DDD), Entity Component System (ECS), CQRS, ES
  • Architecture principles: SOA, microservices, Event-Driven Architecture (EDA)
  • Other tools: asciidoc (for docs-as-a-code), plantuml (diagram-as-a-code), draw.io

Experience

SolarWinds

Software engineer (mostly C++)

February 2018 - Now

https://solarwinds.com
  • Work on Cloud-To-Cloud product - a backup solution for Office365. Here I’ve got the following experience:
  • Get huge experience with Microsoft Graph API, Exchange API, SharePoint Online REST API. Work in-touch with Microsoft Graph API team for several workarounds
  • Being a part of internal C++ committee. As a committee member, I’ve worked on internal C++ guidelines, adopting modern C++ features for the code base, investigating C++ Standard upgrade, choosing dependency manager, etc.
  • Being a speaker on internal knowledge-sharing events (we call it TechCafe)
  • Push using Clang-Format for our sources. Compared clang-format to another code formatting tools (like uncrustify), review several code styles, preparing clang-format builds and proper internal documentation
  • Investigate using fuzzers (AFL, Libfuzeer-based) for some parts of our code
  • Push forward continuous performance testing
  • Push forward using Google Sanitizers on CI as a part of internal workflow
  • Help with building our solution on Windows platform with Clang
  • Port our solution to ARM architecture (AWS Graviton CPUs)
  • Design from the scratch storage format for SharePoint feature
  • Implement several Proof-of-Concept for features like OneDrive restore
  • Debug on production several really difficult problems, related to C++ memory issues and undefined behaviours
  • Work with support team during as a on-duty developer
  • Participate in regular releases

CIB Software

Software engineer (C++)

June 2016 - February 2018

  • I’ve worked on several projects: CIB PDF Brewer (Windows desktop application which works with printers), CIB IPL (proprietary OpenCV-and-ImageMagick-based library with different classic computer vision algorithm), CIB OCR (proprietary Tesseract-based OCR system with several enchancements), CIB PDF (proprietary library for work with PDF files). Here I’ve got the following experience:
  • Being the only developer on IPL and OCR, so manage full lifecycle: several discussions with business and support, planning, make design and implementation, test (manual and with autotests), release
  • Do research & development (R&D) for different image-related algorithms like Mixed-Raster Compression (MRC), real-time edge detection, PDF reverse engineering, etc.
  • Intergrate the libraries with other products
  • Help with long and short-term design for the libraries
  • Port the libraries to CMake from a custom build system
  • Port the libraries to Android x64
  • Integrate the libraries with an Android application with SWIG and JNI
  • Integrate an application into MS Office (Word, Excel, PowerPoint) application as an addin
  • Use C++ <-> C# interop for MS Office Addins

Conferences

  • A program committee member in CoreHard, do talks review for CppNow, CppCon, CoreHard conferences
  • A semi-regular speaker (and regular attendee:) on a different conferences
  • CoreHard 2017 Spring “Boost.Algorithm” (ru)(video, pdf, odp)
  • CoreHard 2017 Autumn “CppNow 2017 trip report” (ru)(video, pdf, odp)
  • CoreHard 2017 Autumn lightning talk “Fuzzy search” (ru)(video)
  • C++ User Group 2017 Nizhniy Novgorod “Compare different C++ compilers optimizations” (ru)(pdf, odp)
  • LVEE 2018 Winter “Comparing of OCR tools” (ru)(pdf, odp)
  • Corehard 2018 Spring “Profiling programs for C++” (ru)(video)
  • LVEE 2018 Summer “Automatic bug search in C/C++” (ru)(video)
  • CoreHard 2018 Autumn “What cannot be optimized by C++ compilers” (ru)(video)
  • CoreHard Zoom-based talk about culture of coding in C++ community
  • Was an invited expert on C++ Russia 2020, moderated several talks

Publications

Pet projects

A have a bunch of small pet projects. For now I am working in a small team on a some game. The game uses client-server model. On the client we use Unity, backend is written mostly in Rust. I work on almost all parts of the game: game design, high-level and low-level architecture design, choosing technology stack, implementing a lot of PoC, actual coding, testing and of course DevOps part. Since we design it with scaling in mind, we actively use a lot of AWS services (and trying to accurately deal with possible vendor-lock)

Open Source activities

I really love all kind of open source projects, so I’m trying to do something cool and/or useful :)

  • In the past was an active Russian WG21 member (C++ standardization committee): writing and reviewing proposals
  • Conan (Bincrafters): packaging several libraries for Conan package manager - packed a lot of different libraries (especially core image libraries). Was a Conan advocate (now I am language-specific dependency manager advocate :)
  • Boost: added several utilities algorithms to Boost.Algorithm library. Work on fuzzy search algorithms
  • Clang: work on static analysis tools (Clang Tidy, Clang Static Analyzer, my own analyzer as a diploma project)
  • PRLib - a library with several image preprocessing algorithms: link
  • gImageReader: implemented better PDF support, small fixes
  • A lot of small fixes in several libraries and applications (see GitHub account history)
  • Set of Rust Teloxide-based Telegram based for several chats: Npaperbot, supapro, codedetection and others

Programming interests

I had and have different interests in different computer science areas. Some years ago I was really crazy about image pre and post OCR processing. I’ve read a lot of information, publications, even implemented PRLIB. But this area is too specific (at least I think so) and later I switched to another area: compilers and static analysis. Mostly I was (and a little am) interested in compiler optimizations and static analysis problems (you can check my diploma project).

Now for me is really interesting to design and develop modern cloud-based highly-scalable high-performance (throughput and latency) systems.

Certificates

Unity

Unity Essentials and Unity Junior pathways

2021

Education

Belarusian State Technological University

BSc Computer Science

2015 - 2019

Brest Regional Lyceum

Physics and Math

2013 - 2015

A Little More About Me

Alongside my interests in software engineering some of my other interests and hobbies are:

  • Gaming (especially RPG and slashers)
  • Anime