Dev
Story
view as CV

Konstantin Kharlamov

Senior Developer

Motivated and curious developer, who loves research and is not afraid of the unknown. Likes FOSS and believes it is the way for science to progress. Particularly fond of Linux ecosystem, and wants to help in making it better. Has developed strong stress-management skills through his past experiences. Open for relocation.

Contacts

  • E-Mail: Hi-Angel@yandex.ru
  • Telegram: https://t.me/Hi_Angel7
  • Mobile: +7 916 657 63 47

Hobby Experience

I have good knowledge and interest in low-level things, like system internals. I’m also very good at debugging and research. As one example: I made this library to create a bullet-time effect in any game, which I had no idea if it’s even possible at the beginning. As you can see it went very well. Another one: I have lots of contributions to Mesa (see below), but when I started contributing I had completely no idea of how graphics works. That was something I learned on the way to improving r600g driver.

Before becoming a student I loved reverse-engineering, and as part of that I managed to successfully patch out some annoying functionality in two arcade games. I also had experience with IDA Pro.

Programming languages I can code in, ordered from most to least knowledgeable: C, C++, Python, C#, Haskell, Bash, Rust, Elisp, Vala. Programming languages that would require to refresh my skills (e.g. either those I just dabbled with, or ones I haven’t used for a long time), same order: MiniZinc, Lua, JavaScript, Pascal/Delphi, PHP, Basic.

I have also worked (as a developer, not a user) with various build systems: Meson, CMake, Autotools, bare Makefiles. On a related note: I even contributed to ninja-build.

Notable publicly available records I’d like to point out:

  1. StackOverflow profile
  2. I am the creator of IMPP plugin (a protocol used by Trillian messenger) for pidgin.
  3. My commits to userspace graphics drivers (FTR, the lastname inconsistency is that the first commit have had it wrong, and then patchwork site has somehow cached it).
  4. My commits to libinput (it’s a modern library for handling HID devices which resides between kernel and Xorg/Compositors). I was also granted “Developer” permissions by libinput maintainer Peter Hutterer.
  5. I was actively contributing to Geary mail client.
  6. I have contributed a lot to Emacs plugin color-identifiers-mode.
  7. I contributed to yi-editor, a Emacs/Vim clone written in Haskell.
  8. I contributed to Way-Cooler, a Wayland compositor. As part of my work I learned a lot about nuances of Wayland protocol (the Compositor consisted of two processes, and I was focusing on a custom Wayland-based protocol for these two to commnunicate. That work didn’t get upstreamed though: I got the code, but stumbled upon some nuances that didn’t get resolved due to lack of spare time)
  9. I contributed to Sway, a Wayland compositor. Most notable ones is plumbing through the support for per-window keyboard layout and creating a plugin inactive-windows-transparency.py to make inactive windows transparent.
  10. I have contributed to ninja-build.
  11. I have contributed to scst.
  12. I have an assignment with FSF for contributing to GNU Emacs, and contributed patches and bugfixes.
  13. I have an assignment with FSF for contributing to GNU Libc (Though you won’t see me in the Glibc contributors list because my patches to Glibc got lost due to lack of reply by maintainers).
  14. My commits to Konsole terminal.
  15. Some fixes to marge-bot (it’s a bot used by gitlab-hosted projects to simplify merging a code).
  16. Fixing Macbook 2013 suspend in Linux kernel. Over time I’ve had some other minor patches too, but they all got lost.
  17. My commits to Pipewire. Mostly cleanups, but my first commits were important bugfix for Pipewire inability to switch to headphones when they’re plugged in.
  18. I fixed an old Wayland bug in mutter, where keyboard LED was always on in certain combination of factors.
  19. Small cleanups to XServer.
  20. I have an account on a popular russian site habrahabr (it is an IT-blog, where getting a non-read-only account requires writing a worthwhile article to get an invite. Which I did ☺).
  21. I’m in Golden League in this bots-programming game, at 1558 place out of 6166 players. Unfortunately, there doesn’t seem to be possible to share a link to the achievement. Anyway, I could do better, but at Golden League game rules changed to make it more boring, so I lost motivation to improve my bot any further. Still, leaving behind thousands of other programmers I guess is something.

I also had patches to many other projects, but it were either some trivial cleanups, or only 1-2 patches, so probably not worth mentioning here.

I have touch-type ability and elaborate keyboard-focused workflow that allows me rarely if ever touch the mouse, thus making me fast and more focused. The workflow comprises: α) a QtWebEngine-based browser Qutebrowser β) a tiling window manager i3wm γ) Emacs editor with vim-mode. As working in browser/editor/terminal and switching between them usually constitutes the most of my work, I think it’s fair to call my workflow well optimized. Tiling WM + workspaces allow me to keep applications maximized while being able to switch to the one I want instantly.

I am a dabbler at math, and I know some basic Category Theory.

I'm an expert with:

C++ C C# Python Emacs Lisp gdb Linux systems reverse-engineering Windows ≤ 7

I want to work with:

Rust C++ Haskell Lisp Linux reverse-engineering open-source

I don't want to work with:

C#

Filter Timeline:

Position • Nov, 2020 → Current (3 years, 6 months)

Senior Software Engineer at NPOBAUM (a subsidiary of Bauman Moscow State Technical University)

Technologies:

C python makefile meson git linux gitlab gitlab ci NAS gdb
  • Helped in maintenance and development of a large old SAN project
  • Authored and developed a testing framework
  • Developed and maintained a Gitlab CI
  • Experience in containerization, reworked a operating system creation to make use of Docker
  • Getting rid of foreign code in the repo by utilizing git-submodules
  • Studying, debugging and profiling of ZFS and SCST
  • Migrated the project from older Makefiles to a modern Meson build system
  • Lots of research for fixing bugs, adding new features, writing documentation and tests

Key achievements: automating various refactorings over a large codebase. Creating a test-suite that allowed to catch bugs in code-submissions early on, before they’d get into the codebase. Many cleanups and major modernization to the code.

Open source • Dec, 2017 → Current (6 years, 5 months)

purple-impp

Technologies:

reverse-engineering C++ C++17 cereal pidgin impp

A libpurple (aka pidgin) plugin implementing Trillian IMPP messenger communication.

It was meant to be a Kickstarter project, but for various financial reasons didn’t pun out. I no longer actively develop it, but it is maintained (at this point mostly in the form of accepting and reviewing others’ contributions).

Open source • Aug, 2017 → Current (6 years, 9 months)

color-identifiers-mode

Technologies:

emacs emacs lisp source code parsing

A Emacs minor mode that highlights each source code identifier uniquely based on its name. Inspired by a post by Evan Brooks.

I am a heavy user and a developer of this plugin.

Open source • Jan, 2019 → Current (5 years, 4 months)

clock_gettime_override

A library to slow down games (aka bullet-time or “matrix” effect), to be loaded with LD_PRELOAD

Position • Feb, 2018 → Feb, 2020 (2 years, 1 month)

Software Engineer at BAUM-INFORM (a subsidiary of Bauman Moscow State Technical University)

Technologies:

C++ C++17 meson cereal reed-solomon git linux gitlab gitlab ci gdb
  • Authored and developed a clustered file-system (in a way similar to CEPH. An option of reusing an existing FOSS project was rejected by employer, so it is developed from scratch)
  • Worked with C++17 and Meson build system
  • Studied and worked with Reed-Solomon codes
  • A lot of work with matrices
  • Gitlab CI and administration
  • Lots of work with git, helped to other people unfamiliar with it as well
  • Code review, and my first professional experience in collaboration with a team

Key achievements: diverse knowledge in development I had by this time allowed me to make the project and its development practices very robust. Project was highly resilient to memory leaks due to extensive use of C++ RAII. My Haskell experience proved to be useful in making the project easily maintainable. Defaulting to ASAN/UBSAN allowed to find many problems early. Disallowing any warnings in code helped in keeping it clean. And my experience with FOSS projects provided me with skills needed for code review and correct partitioning of git commits.

Position • May, 2014 → Jul, 2017 (3 years, 3 months)

Software Engineer of 3rd Category at Energomera

Technologies:

C++ C++11 C# Qt gdb gdbserver svn mercurial linux windows cross-platform Hayes-command-set embedded-systems
  • Created and maintained a project for updating services on an embedded Linux system. It featured:
    • Communication channels: network, RS-232 port, and GSM (the latter worked through Hayes command set)
    • It was comprised of a Linux daemon written in C++11 and a cross-platform GUI written in C# (.NET on Windows and Mono on Linux)
  • Got experience in remote debugging
  • Occasional refactoring and addition of features to other projects that I wasn’t generally familiar with
  • Some experience with Qt
  • Work with SVN and Mercurial

Commentary: this was a very influential position. As it was first serious programming experience, I was committing novice mistakes. Not only I had to maintain existing software, I also was tasked with writing one anew. And requirements were drastically changing multiple times. So that felt like a war zone to me, but it also brewed in me lots of understanding in software engineering: things that could go wrong, things you should not do and ones you should, etc. It was an immensely useful experience that was of a great help later in my career.

Position • Mar, 2014 → May, 2014 (3 months)

Internship at Energomera

Technologies:

C++ Qt gdb gdbserver svn mercurial linux windows cross-platform embedded-systems