Gram / Skills (/)

🐍 Languages

Python

This is my favorite language, I've been in it since version 3.4 (2014). I know the source code of almost all stdlib, have many Python-based Open Source projects and public talks, always can pick the best library for any task.

Go

I'm quite proficient with Go. I reach to it when I need a good performance: games, small systems (thanks to TinyGo), CLI tools, and small but important APIs. Oh, and of course I have some open-source projects on Go. I work with Go since version 1.11 (2018).

Elixir

I enjoy Elixir and believe it's the best functional language. I know some good of chunk of Erlang, have experience with a basic web app on Phoenix with LiveView, understand Erlang concurrency, know some parts of OTP, and eager to dive deeper into this beautiful ecosystem.

HTML & CSS

I'm pretty fluent with HTML, CSS, and even the quirks of WebAPI. I might miss some modern features like flexbox, though. Mostly, because Bootstrap is sufficient for my projects and it abstracts away some markup complexity.

Frontend (JS)

With modern JS I'm less familiar. Mostly, I use for my projects AlpineJS, WASM, and LiveView. If you need a frontend developer, it's not me. But if you need from me just a good understanding of your frontend, I can easily crack it.

More!

I believe that every programming language has some beautiful ideas, and I like learning new ones. I have experience with Rust, Haskell, Gleam, Idris, RPython, Pony, Nim, Crystal, Clojure, Scala, JS, Ruby, and many other languages. I'm not afraid to read and fix code written in any language.

🧠 Hard skills

Distributed Systems

Distributed systems are hard because of the very nature of our world (damn you, speed of light!), and I enjoy cracking this complexity. I'm familiar with fundamental problems, design patterns, algorithms, formal verification techniques and tools (TLA+ and Alloy 6), and just in general can design reliable solutions and consider all possible corner cases.

Quality Assurance

Automated testing (unit, integration, acceptance, regression), static code analysis, formal verification, contract programming, mutation tests, and type theory. I like to push the boundaries of my code to see how it performs in extreme situations, to find interesting corner cases, and to dive into the math behind programming.

Security

I have an Information Security red diploma, interested in practical aspects of security, have many publications on different topics, visited some security conferences. I was a founder and leader of the CTF team that has gotten 6th place in an international contest (alert1 team). In the Smena team I've made global security audit, fixed many security issues, integrated some security systems like brute force protection and intrusion detection.

DS and ML

At the university, I worked in the linguistics department where I researched language and text influence, adopted Claude Shannon's information theory to natural languages. In Cindicator I wrote simple trading strategies that get information from crypto exchanges and make predictions about cryptocurrencies prices. In my free time I learn Machine Learning and build different cool models. See my projects for examples.

Software Architecture

I know design patterns, antipatterns, refactoring techniques, 12 factors, SOLID principles. In Cindicator, I was the architect for the trading platform from the first lines of code to the successful launch.

Linux

I live in Linux for 8 years and can solve any issue from a terminal. I've worked with different Linux distros (Ubuntu, Debian, CentOS), set up physical servers, VPS, Raspberry Pi, Orange Pi.

Logic

I'm familiar with formal logic basics, boolean logic, math logic, a little bit with proof theory. deal is my experiment on how good you can prove code automatically, without writing proofs at all.

Math

I math! I watch Numberphile, solve riddles and equations for fun, know how to apply math in my work to make code faster and even nicer.

🐋 DevOps

Docker

I've packed in Docker all the infrastructure of Farfor (when I worked in Smena), the ML pipeline and the trading platform in Cindicator. All of it still works perfectly in all environments from development to production.

Docker Compose

When I say "docker" I mean "docker-compose" as well. It's a cool tool, and all my dockerized projects have docker-compose.yml. And no, I haven't learned k8s yet, stop shaming me.

Ansible

All my websites (including this one) are hosted on my VPS and deployed by Ansible. Also, we had an Ansible-based deployment in Smena.

💾 Storages

PostgreSQL

I've completed DBA1, DBA2, and DBA3 courses from Postgres Professionals company. So, I little bit know how to set up, optimize and replicate the PostgreSQL database.

Redis

I like this storage for speed and simplicity. For example, my brute force protection tool works on top of it.

MySQL

I worked with MySQL in Smena a lot. Eventually, I know how to optimize queries, do replication and backups, set up a server, and debug a strange behavior.

MongoDB

I know how to set up and use it for the best security and performance, how to build good document structure. In Cindicator we had an ML pipeline heavily tightened with MongoDB. Also, I'm mongoengine contributor.

Elastic Stack

Elastic Stack (ex. ELK) is a huge monitoring system to aggregate logs, messages, and state from all parts of the system. It includes Elastic Search, Logstash, Kibana, MetricBeat, FileBeat etc. I can monitor with it all infrastructure. You can find my demo stand of this system in python-syslog-logstash repository.

🤝 Soft skills

Scrum

I'm working with it every day, know how to estimate tasks, make informative descriptions and track progress most effectively. Also, I'm familiar with Jira and know how to use filters, dashboards, boards, and search queries. In my hometown, I was a part of Atlassian User Group.

Kanban

This is my favorite Agile methodology. I organized processes in my team by Kanban and use Trello board to order my personal tasks. And it works great!

Leadership

I made my own web studio, CTF team, patronized newbies in Smena, built and coordinate software architecture in Cindicator team. I can create, distribute, delegate, control, and estimate tasks, work with people.

Part of the team

I like to discuss tasks, manage them, organize my work time, estimate and prioritize. I'm always happy to communicate, but avoid spending work time. In Smena and Cindicator I built perfect standups: fast and informative.

Public talks

I like to talk to people about my tasks and knowledge, spread cool ideas. You can discover some of my talks here. Most of them in Russian, but I'm going to fix it.