Skip to content

0x7f454c46/resume

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

61 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

to 0pt Last update on 2023-10-20   Kernel Engineer

0x7f454c46@gmail.com  [-1em][-1em]   github.com/0x7f454c46  [-1em][-1em]   linkedin.com/in/0x7f454c46
Currently in Dublin, Ireland


Summary {#summary .unnumbered}

::: multicols 2 Low-level Engineer, opensource contributor and maintainer. Focused on long-term projects, that have priority on correctness and "doing the right thing". Takes self-testing seriously. Author of long email-threads and many code reviews that significantly decreased coding issues per LOC.

Born in USSR/Russia. Got a university degree of an engineer and self-taught Linux. Eventually fell from regression analysis, numerical methods, differential equations and statistical C++ projects into assembly, kernel C and multi-threaded Linux memory ordering developments.

Started as home-projects enthusiast that recompiled OpenBSD kernel on a home-server and learned Linux virtualization/replication basics. Moved to bash-scripting projects, including a home web-scrapper that gathered some data and statistics (a scripting skill that was very handy since then).

Got a chance to participate in many wonderful projects. From being an author of PoC on non-documented hardware to creator of GCC compiler plugin. One of CRIU (Checkpoint Restore in Userspace) contributors and maintainers. Author of some thousands lines in upstream Linux kernel. Contributed to many parts, including x86, memory management, networking, selftests, tty drivers and core code.

Emigrated to Ireland in 2017. Since then, worked remotely from other team members. :::


Experience {#experience .unnumbered}

::: list [Dublin, Ireland]{.smallcaps}

::: list Linux kernel engineerSept 17 -- present

::: list Currently working on Linux kernel support. I've spent time designing ; writing kernel selftests to verify the functionality and to discover corner-cases; writing documentation on the project. Together with my colleagues, we wrote code that implements in Linux kernel; we communicated with the userspace team to get feedback and worked with the network interoperability testing team for verification and scale testing. Besides writing the code, I was reviewing all the changes and did some Gitlab automation. Later I polished the result, implemented missing features, debugged the code and split it apart into upstreamable patches.
At the moment of writing the patch set is version 15, it received approvals from some of the network maintainers and reviewers and all pre-required changes that I've made (crypto, jump_label and ) were merged. I'm addressing the feedback from reviews, fixing items from my todo-list and writing more selftests in the background. I'm quite pleased with the result: it has about 5.5 thousand good-quality code changes, that are properly split into patches, well documented and tested. The project went smoothly, the customers are satisfied, no fires lit. :::

::: list Previously I participated in Linux kernel upgrade projects. The goal was to move from older kernels to newer LTS (Long Term Support) kernels, porting company-specific patches and addressing any issues that arise on testing. During these projects, I've focused on reviewing non-upstream company kernel code and attempting to either eliminate it or upstream it. That decreased the future work (technical debt) for maintaining and upgrading the Linux kernel in the company as well as improved the quality. Participating in that project involved fixing proprietary drivers from different allocation issues (leaks/use-after-free) to scaling issues and introducing proper locking. A little cherry on top was debugging GNU/Make to fix a race in jobserver that was rarely hitting the build system. :::

::: list One of the exciting things during my time here was debugging 2 CPU issues in one of the major x86 vendors. Another issue I'm quite proud to have debugged and fixed was missed locking in the generic tty driver. The reason is that besides missing semaphore in tty_reopen(), I had to fix the tty semaphore realization itself: from missed wake-up on reader/writer contention, a theoretical issue on non-default timeout, providing more priority to line discipline changes rather than write/read and optimizing the fast-path by not taking the writer lock. It was quite challenging to fix this tty mess as for most of those fixes I had only one report which was dmesg log from syzbot or a person. From that little log I've managed to find and fix the issues in semaphore realization!
Another big and interesting project that I did in the background was fixing IPSec/XFRM tunnels on ia32. It ended up also having a nice selftest. :::

::: list At this job, I participated in investigating customers' kernel escalations, analyzing and doing triage for kernel issues in the testing lab. I also mentored two people: one who joined on full-time and an intern. ::: ::: :::

::: list []{.smallcaps}

::: list Maintainers teamDec 16 -- present

::: list ::: displayquote ...a project by various mad Russians... :::

Likely, the most interesting project I've worked on. It involves everything: understanding CPU architecture, adding and modifying Linux kernel code, network stack and etc. I was working on various things in this project. From maintaining build/Makefiles and adding cross-compilation for different architectures, to making arm/arm64 work. I made Linux kernel patches to support 32-bit x86 (ia32) Checkpoint/Restore. Addressed issues with x86 mmap allocator and added support to CRIU itself. Together with my good friend Andrei, we introduced a new time namespace in Linux kernel, that helps migrating containers.
Today CRIU is used by hosting providers, Google task manager (Borg) and even by Microsoft's ChatGPT. Unfortunately, these days I'm not as active contributor to CRIU project, as I wished to be, but I'm trying. ::: ::: :::

::: list [Moscow, Russia]{.smallcaps}

::: list Kernel engineerJan 16 -- Jul 17

::: list I was working on VZ kernel (based on RHEL7, Linux v3.10). I was fixing kernel crashes, adding OpenVZ-specific features and addressing bugs from testing or customers. That's where I started working and contributing to CRIU, being responsible for VZ CRIU (product version of CRIU). I was reviewing patches, creating releases, backporting needed commits and being liable for the resulting product. ::: ::: :::

::: list [Moscow, Russia]{.smallcaps}

::: list Kernel engineerDec 15 -- Jan 16

::: list Started working in a team that later was separated into Virtuozzo company. ::: ::: :::

::: list [Moscow, Russia]{.smallcaps}

::: list Kernel engineerJul 14 -- Nov 15

::: list Developing Samsung Tizen TV kernel (Linux v3.10 based). I've worked on feature requests on different parts of the kernel: IRQ handling, process scheduler, memory management, etc. Also, that job involved analyzing crash logs and providing bug fixes. :::

::: list One of the interesting projects I did by myself was adding FIQ support to Linux and to closed-source Samsung Secure OS (running in ARM TrustZone extension). That provided a reliable way to interrupt another ARM CPU core, even if it was running in an IRQs-disabled context. :::

::: list Another PoC/research project that was made by me solo was a GPU swap. That added functionality to an open-source Mali GPU driver that we didn't have specifications for. As a result, it created a project that preserved 150 - 200 MB on a 1.5 - 2 GB Tizen TV set and similar Android Tablets/Phones by moving inactive GPU pages into ZRAM (compressed graphical memory swapping). :::

::: list I was in a team that worked on ARM big.LITTLE Linux high-performance scheduler. One of the most interesting bugs I was proud of fixing was the incorrect voltage set for one of the CPU frequencies. That made Linux kernel crash on overnight stress-testing in various random places. Ouch! ::: ::: :::


Education {#education .unnumbered}

::: list [Moscow, Russia]{.smallcaps}

::: list Engineer Specialist degree in Informational Systems and Technologies2008 -- 2014

::: list Diploma thesis was "Developing an algorithm for searching ground objects in UAV live video stream". Quite glad I didn't continue this project in PhD as that would likely have been used in illegal invasion in Ukraine. ::: ::: :::


Skills {#skills .unnumbered}

::: basedescript Linux, multi-threaded kernel-version of C, bash, x86 and ARM assembly, GNU/Make, Git, Vim. :::

::: basedescript Russian (native), English (fluent), Spanish (elementary), Ukrainian (elementary), Greek (beginner) and Latin (beginner). :::


Interests/hobbies {#interestshobbies .unnumbered}

::: basedescript Book-worm (esp. non-fiction), culture-learning, functional programming, hiking, learning languages, math/statistics, motorcycling and vegetarian cooking. :::

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TeX 96.4%
  • Makefile 3.6%