Compare commits

...
10 Commits
Author SHA1 Message Date
krosh 8a54ec4696 revert upload mechanism
Build resume PDFs / Build Russian and English resumes (push) Failing after 4m1s
2026-07-27 05:03:02 +03:00
krosh 09d7cd32a9 make resume in multiple files 2026-07-27 03:33:52 +03:00
krosh 2dfd0abe6d make resume in multiple files 2026-07-27 03:33:33 +03:00
krosh ea849df4ca Split resume PDF artifacts 2026-07-27 03:18:21 +03:00
krosh 62f9ced139 add github ci for resume.pdf 2026-07-27 02:37:39 +03:00
krosh 4e06308351 add en and ru resume 2026-07-27 00:52:51 +03:00
krosh 199dd3816f update readme 2026-07-26 23:50:27 +03:00
krosh fd878dd9d6 Revert "docs: update profile for current DevOps work"
This reverts commit 9e9cb01137.
2026-07-26 23:32:35 +03:00
krosh 9e9cb01137 docs: update profile for current DevOps work 2026-07-26 23:30:34 +03:00
kroshandGitHub 392d9430cf Add experience section to README
Added experience section with Yandex internship details.
2026-03-23 21:55:12 +03:00
9 changed files with 313 additions and 40 deletions
+51
View File
@@ -0,0 +1,51 @@
name: Build resume PDFs
on:
push:
paths:
- "resume/**/*.tex"
- ".github/workflows/build-resume.yml"
pull_request:
paths:
- "resume/**/*.tex"
- ".github/workflows/build-resume.yml"
workflow_dispatch:
permissions:
contents: read
concurrency:
group: resume-pdfs-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
build:
name: Build Russian and English resumes
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- name: Check out repository
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- name: Compile PDFs with XeLaTeX
uses: xu-cheng/latex-action@6549dc21effb2730855a1281407ecfcececc6c1b # v4.1.0
with:
root_file: |
resume_ru.tex
resume_en.tex
working_directory: resume
latexmk_use_xelatex: true
texlive_version: 2026
os: debian
extra_system_packages: fonts-dejavu-core
- name: Upload PDF artifact
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: resume-pdfs
path: |
resume/resume_ru.pdf
resume/resume_en.pdf
if-no-files-found: error
retention-days: 30
+1
View File
@@ -0,0 +1 @@
*.pdf
+45 -40
View File
@@ -1,48 +1,68 @@
# Hi there! 👋 I'm Dmitrii Gudov (kr0sh512)
I'm a passionate developer and Computer Science student at [CMC MSU](https://cmc.msu.ru/). I enjoy creating projects that make everyday tasks simpler and learning new technologies to expand my skill set. Welcome to my GitHub, where you can explore my latest coding endeavors!
I'm a DevOps-oriented developer and Computer Science student at [CMC MSU](https://cmc.msu.ru/). I build and operate Linux infrastructure, automate repeatable work, develop system and backend tools. My current focus is ALT Linux and RPM internals, Kubernetes, containers, CI/CD, and Python/C systems tooling.
---
## 🚀 About Me
- 🎓 **Student at CMC MSU**
- 💻 Interested in **System Programming and Bot Development**
- 🌱 Currently exploring **Python, C++ and Shell Scripting**
- 🎓 **Computer Science student at CMC MSU**
- 🐧 Interested in **DevOps, Linux infrastructure, system programming, and networking**
- 🛠️ Operating and troubleshooting multi-node infrastructure with **K3s/RKE2, Docker/OCI, Ansible, TLS automation and more**
- 🔬 Researching and optimizing **ALT Linux RPM `set:version` dependency processing**
- 📫 Reach me at **gudovdo@my.msu.ru**
---
## 💼 Experience
- **BaseALT** — Linux/RPM tooling and systems research — _Current_
- **Yandex Intern**, **DevTools Team, Autonomous Transport**_Fall 2025_
---
## 🔧 Skills
- **Languages**: Python, C++
- **Frameworks/Tools**: Git, Linux, Docker
- **Database Management**: Postgres, MongoDB
- **Other**: Web Automation, Telegram Bot Development, Problem Solving
- **Languages**: Python, C, C++, Shell, SQL
- **Infrastructure & DevOps**: Linux, Docker/OCI, Kubernetes, K3s, RKE2, Helm, Ansible, Traefik, systemd, SSH
- **CI/CD**: GitHub Actions, GHCR, multi-architecture container builds, automated testing and packaging
- **Backend & Data**: FastAPI, SQLAlchemy, Pydantic, PostgreSQL, SQLite, MongoDB
- **Engineering Practices**: pytest, mypy, Black, sanitizers, differential testing, benchmarking, and reproducible build workflows
---
## 🖥️ Projects
### [ALT RPM Set Version Research](https://github.com/kr0sh512/alt-rpm-set-version)
Research into ALT Linux RPM's encoded symbol sets and dependency comparison. The project covers C implementation work, hashing, compatibility testing, sanitizer checks, and benchmarks against realistic RPM/APT workflows.
### [nexus-sync](https://github.com/kr0sh512/nexus-sync)
A client-server system for centrally managing computers and dispatching approved commands. Built with FastAPI and SQLAlchemy, with a CLI, YAML-configured clients, systemd units, standalone builds, tests, type checks, and CI packaging.
### Personal Infrastructure Automation
Ansible playbooks for automating Linux servers and repeatable administration. My broader infrastructure work includes multi-node K3s clusters, container deployment, ingress and ServiceLB networking, TLS lifecycle automation, and remote troubleshooting.
### [Pomodoro](https://github.com/kr0sh512/pomodoro)
A customizable browser-based Pomodoro timer and clock built with React, TypeScript, and Vite. GitHub Actions tests and packages it as an unprivileged multi-architecture container published to GHCR.
### [Network Diagrams Tool](https://github.com/kr0sh512/network-diagrams-tool)
A Python tool for building and visualizing network topologies, developed for networking and infrastructure coursework at CMC MSU.
### [Marzban Telegram VPN Bot](https://github.com/kr0sh512/profhome-vpn-bot)
A containerized Python Telegram bot that integrates with the Marzban API, manages one-time invitations and user lifecycle, and persists local state in SQLite.
### [Syncing Spotify with Telegram Bio](https://github.com/kr0sh512/spotify-to-tg-bio)
**Description**: A script that syncs the playing track from spotify in the background with the Bio column in the user's telegram.
### [Random Coffe Bot](https://github.com/kr0sh512/rc-tgbot)
**Description**: This Telegram bot was created for the cmc msu student union for a speed dating event.
### [Telegram Bot Schedule](https://github.com/kr0sh512/Telegram-bot-schedule)
**Description**: A Telegram bot that sends reminders about events a set time before they start.
### [Calendar of Life](https://github.com/kr0sh512/calendar-of-life)
**Description**: A PHP-based reminder tool to encourage users to make the most of their time.
### [Sudoku Solver](https://github.com/kr0sh512/sudoku-solver)
**Description**: A command-line tool to solve Sudoku puzzles using C++.
### [SimpleCountdownTimer](https://github.com/kr0sh512/SimpleCountdownTimer)
**Description**: A web timer with cookie support to retain settings across sessions.
A script that syncs the playing track from spotify in the background with the Bio column in the user's telegram.
---
<!--
## 📈 GitHub Stats
@@ -52,6 +72,7 @@ I'm a passionate developer and Computer Science student at [CMC MSU](https://cmc
---
-->
## 🌐 Connect with Me
[![Telegram](https://img.shields.io/badge/Telegram-Kr0sH_512-blue?style=flat&logo=telegram)](https://t.me/kr0sh_512)
@@ -59,20 +80,4 @@ I'm a passionate developer and Computer Science student at [CMC MSU](https://cmc
---
Thanks for visiting my profile! Feel free to reach out for collaboration or to discuss technology.
<!--
**kr0sh512/kr0sh512** is a ✨ _special_ ✨ repository because its `README.md` (this file) appears on your GitHub profile.
Here are some ideas to get you started:
- 🔭 Im currently working on ...
- 🌱 Im currently learning ...
- 👯 Im looking to collaborate on ...
- 🤔 Im looking for help with ...
- 💬 Ask me about ...
- 📫 How to reach me: ...
- 😄 Pronouns: ...
- ⚡ Fun fact: ...
-->
Thanks for visiting my profile! Feel free to reach out for collaboration, Linux infrastructure, systems programming, or DevOps projects.
+25
View File
@@ -0,0 +1,25 @@
% Shared contact details, links, project names, and technology lists.
% Language-specific prose belongs in translations/*.tex.
\newcommand{\ResumeEmail}{gudovdo@my.msu.ru}
\newcommand{\ResumeGitHubHandle}{kr0sh512}
\newcommand{\ResumeTelegramHandle}{kr0sh\_512}
\newcommand{\ResumeGitHubUrl}{https://github.com/kr0sh512}
\newcommand{\ResumeTelegramUrl}{https://t.me/kr0sh_512}
\newcommand{\ResumeDevOpsStack}{Linux, Docker/OCI, Kubernetes, K3s, RKE2, Helm, Ansible, Traefik, systemd, SSH, Let's Encrypt}
\newcommand{\ResumeCiTools}{GitHub Actions, GHCR}
\newcommand{\ResumeDevelopmentStack}{Python, C, C++, TypeScript, Shell, SQL; FastAPI, SQLAlchemy, Pydantic, React, Vite}
\newcommand{\ResumeDataStores}{PostgreSQL, SQLite, MongoDB}
\newcommand{\ResumeQualityTools}{pytest, mypy, Black}
\newcommand{\ResumeAltRpmName}{ALT RPM Set Version Research}
\newcommand{\ResumeAltRpmUrl}{https://github.com/kr0sh512/alt-rpm-set-version}
\newcommand{\ResumeNexusSyncName}{nexus-sync}
\newcommand{\ResumeNexusSyncUrl}{https://github.com/kr0sh512/nexus-sync}
\newcommand{\ResumePomodoroName}{Pomodoro}
\newcommand{\ResumePomodoroUrl}{https://github.com/kr0sh512/pomodoro}
\newcommand{\ResumeNetworkDiagramsName}{Network Diagrams Tool}
\newcommand{\ResumeNetworkDiagramsUrl}{https://github.com/kr0sh512/network-diagrams-tool}
\newcommand{\ResumeVpnBotName}{Marzban Telegram VPN Bot}
\newcommand{\ResumeVpnBotUrl}{https://github.com/kr0sh512/profhome-vpn-bot}
+99
View File
@@ -0,0 +1,99 @@
% Shared resume layout. Compile resume_ru.tex or resume_en.tex instead.
\documentclass[10pt,a4paper]{article}
\usepackage[margin=1.35cm]{geometry}
\usepackage{fontspec}
\setmainfont{DejaVu Sans}
\usepackage[english,russian]{babel}
\usepackage{xcolor}
\usepackage{hyperref}
\usepackage{enumitem}
\usepackage{titlesec}
\usepackage{tabularx}
\usepackage{microtype}
\input{resume-data.tex}
\input{translations/\ResumeLanguage.tex}
\pagestyle{empty}
\setlength{\parindent}{0pt}
\setlength{\parskip}{0pt}
\setlength{\emergencystretch}{2em}
\linespread{1.04}
\setlist[itemize]{
leftmargin=1.35em,
itemsep=2pt,
topsep=4pt,
partopsep=0pt,
parsep=0pt
}
\definecolor{accent}{HTML}{1F4E79}
\definecolor{muted}{HTML}{555555}
\hypersetup{
colorlinks=true,
urlcolor=accent,
linkcolor=accent,
pdfauthor={\ResumeName},
pdftitle={\ResumePdfTitle}
}
\titleformat{\section}
{\large\bfseries\color{accent}}
{}{0pt}{}
[\color{accent}\titlerule]
\titlespacing*{\section}{0pt}{10pt}{5pt}
\newcommand{\entry}[3]{%
\noindent\begin{tabularx}{\textwidth}{@{}Xr@{}}
\textbf{#1} & \textcolor{muted}{#2}
\end{tabularx}\par
\vspace{1pt}
#3\par\vspace{3pt}
}
\newcommand{\project}[2]{\textbf{#1} — #2\par\vspace{3pt}}
\begin{document}
\selectlanguage{\ResumeDocumentLanguage}
\raggedright
\begin{minipage}{\textwidth}
{\LARGE\bfseries \ResumeName}\par
\vspace{3pt}
{\large\color{accent} \ResumeHeadline}\par
\vspace{6pt}
\href{mailto:\ResumeEmail}{\ResumeEmail}
\quad·\quad
\href{\ResumeGitHubUrl}{github.com/\ResumeGitHubHandle}
\quad·\quad
\href{\ResumeTelegramUrl}{t.me/\ResumeTelegramHandle}
\end{minipage}\par
\section{\ResumeSummarySection}
\ResumeSummaryText
\section{\ResumeExperienceSection}
\entry{BaseALT}{\ResumeBaseAltDate}{\ResumeBaseAltDescription}
\entry{\ResumeYandexRole}{\ResumeYandexDate}{\ResumeYandexDescription}
\section{\ResumeEducationSection}
\entry{\ResumeUniversityName}{\ResumeEducationDate}{\ResumeEducationDescription}
\section{\ResumeSkillsSection}
\begin{itemize}
\item \textbf{\ResumeDevOpsSkillLabel:} \ResumeDevOpsSkillText.
\item \textbf{\ResumeCiSkillLabel:} \ResumeCiSkillText.
\item \textbf{\ResumeDevelopmentSkillLabel:} \ResumeDevelopmentSkillText.
\item \textbf{\ResumeDataSkillLabel:} \ResumeDataSkillText.
\end{itemize}
\section{\ResumeProjectsSection}
\project{\href{\ResumeAltRpmUrl}{\ResumeAltRpmName}}{\ResumeAltRpmDescription}
\project{\href{\ResumeNexusSyncUrl}{\ResumeNexusSyncName}}{\ResumeNexusSyncDescription}
\project{\ResumeInfrastructureName}{\ResumeInfrastructureDescription}
\project{\href{\ResumePomodoroUrl}{\ResumePomodoroName}}{\ResumePomodoroDescription}
\project{\href{\ResumeNetworkDiagramsUrl}{\ResumeNetworkDiagramsName}}{\ResumeNetworkDiagramsDescription}
\project{\href{\ResumeVpnBotUrl}{\ResumeVpnBotName}}{\ResumeVpnBotDescription}
\end{document}
+6
View File
@@ -0,0 +1,6 @@
% English resume build entry point.
\def\ResumeLanguage{en}
\makeatletter
\def\input@path{{resume/}}
\makeatother
\input{resume.tex}
+6
View File
@@ -0,0 +1,6 @@
% Russian resume build entry point.
\def\ResumeLanguage{ru}
\makeatletter
\def\input@path{{resume/}}
\makeatother
\input{resume.tex}
+40
View File
@@ -0,0 +1,40 @@
% English strings for resume.tex.
\newcommand{\ResumeDocumentLanguage}{english}
\newcommand{\ResumeName}{Dmitrii Gudov}
\newcommand{\ResumePdfTitle}{Resume — Dmitrii Gudov}
\newcommand{\ResumeHeadline}{DevOps / Linux Engineer · Systems and Backend Developer}
\newcommand{\ResumeSummarySection}{Professional Summary}
\newcommand{\ResumeSummaryText}{DevOps-oriented developer and Computer Science student at CMC MSU. I build and operate Linux infrastructure, automate repeatable work, and develop systems and backend tools. My primary interests are ALT Linux and RPM internals, Kubernetes, containers, CI/CD, Python, and C.}
\newcommand{\ResumeExperienceSection}{Experience}
\newcommand{\ResumeBaseAltDate}{Present}
\newcommand{\ResumeBaseAltDescription}{Linux/RPM tooling and systems research, including ALT Linux dependency mechanisms, RPM performance, and compatibility.}
\newcommand{\ResumeYandexRole}{Yandex — DevTools Intern, Autonomous Transport}
\newcommand{\ResumeYandexDate}{Fall 2025}
\newcommand{\ResumeYandexDescription}{Software development in a developer tooling team.}
\newcommand{\ResumeEducationSection}{Education}
\newcommand{\ResumeUniversityName}{Lomonosov Moscow State University}
\newcommand{\ResumeEducationDate}{Current}
\newcommand{\ResumeEducationDescription}{Faculty of Computational Mathematics and Cybernetics, Computer Science.}
\newcommand{\ResumeSkillsSection}{Core Skills}
\newcommand{\ResumeDevOpsSkillLabel}{DevOps and infrastructure}
\newcommand{\ResumeDevOpsSkillText}{\ResumeDevOpsStack}
\newcommand{\ResumeCiSkillLabel}{CI/CD}
\newcommand{\ResumeCiSkillText}{\ResumeCiTools, multi-architecture container builds, automated testing, packaging, and publishing}
\newcommand{\ResumeDevelopmentSkillLabel}{Development}
\newcommand{\ResumeDevelopmentSkillText}{\ResumeDevelopmentStack}
\newcommand{\ResumeDataSkillLabel}{Data and quality}
\newcommand{\ResumeDataSkillText}{\ResumeDataStores; \ResumeQualityTools, sanitizers, differential testing, benchmarking}
\newcommand{\ResumeProjectsSection}{Selected Projects}
\newcommand{\ResumeAltRpmDescription}{research into encoded symbol sets and RPM dependency comparison, covering C implementations, hashing, compatibility, sanitizer checks, and APT/RPM benchmarks.}
\newcommand{\ResumeNexusSyncDescription}{a client-server system for centralized computer management and approved command dispatch. FastAPI, SQLAlchemy, CLI, YAML configuration, systemd, standalone builds, and CI.}
\newcommand{\ResumeInfrastructureName}{Personal infrastructure}
\newcommand{\ResumeInfrastructureDescription}{Linux server automation with Ansible, multi-node K3s/RKE2 operations, container deployment, ingress and ServiceLB networking, TLS automation, and remote troubleshooting.}
\newcommand{\ResumePomodoroDescription}{a browser timer built with React, TypeScript, and Vite; tested and published by GitHub Actions as an unprivileged multi-architecture image in GHCR.}
\newcommand{\ResumeNetworkDiagramsDescription}{a Python tool for building and visualizing network topologies.}
\newcommand{\ResumeVpnBotDescription}{a containerized Python bot for managing invitations and user lifecycle through the Marzban API.}
+40
View File
@@ -0,0 +1,40 @@
% Russian strings for resume.tex.
\newcommand{\ResumeDocumentLanguage}{russian}
\newcommand{\ResumeName}{Дмитрий Гудов}
\newcommand{\ResumePdfTitle}{Резюме — Дмитрий Гудов}
\newcommand{\ResumeHeadline}{DevOps / Linux-инженер · системный и backend-разработчик}
\newcommand{\ResumeSummarySection}{Профессиональный профиль}
\newcommand{\ResumeSummaryText}{DevOps-ориентированный разработчик и студент ВМК МГУ. Разрабатываю и сопровождаю Linux-инфраструктуру, автоматизирую повторяемые операции и создаю системные и backend-инструменты. Основные направления: ALT Linux и внутреннее устройство RPM, Kubernetes, контейнеризация, CI/CD, Python и C.}
\newcommand{\ResumeExperienceSection}{Опыт}
\newcommand{\ResumeBaseAltDate}{по настоящее время}
\newcommand{\ResumeBaseAltDescription}{Инструменты для Linux/RPM и системные исследования: механизмы зависимостей ALT Linux, производительность и совместимость RPM.}
\newcommand{\ResumeYandexRole}{Яндекс — стажёр, команда DevTools автономного транспорта}
\newcommand{\ResumeYandexDate}{осень 2025}
\newcommand{\ResumeYandexDescription}{Разработка в команде инструментов для разработчиков.}
\newcommand{\ResumeEducationSection}{Образование}
\newcommand{\ResumeUniversityName}{Московский государственный университет имени М. В. Ломоносова}
\newcommand{\ResumeEducationDate}{обучаюсь}
\newcommand{\ResumeEducationDescription}{Факультет вычислительной математики и кибернетики, Computer Science.}
\newcommand{\ResumeSkillsSection}{Ключевые навыки}
\newcommand{\ResumeDevOpsSkillLabel}{DevOps и инфраструктура}
\newcommand{\ResumeDevOpsSkillText}{\ResumeDevOpsStack}
\newcommand{\ResumeCiSkillLabel}{CI/CD}
\newcommand{\ResumeCiSkillText}{\ResumeCiTools, мультиархитектурные сборки контейнеров, автоматизированное тестирование, упаковка и публикация}
\newcommand{\ResumeDevelopmentSkillLabel}{Разработка}
\newcommand{\ResumeDevelopmentSkillText}{\ResumeDevelopmentStack}
\newcommand{\ResumeDataSkillLabel}{Данные и качество}
\newcommand{\ResumeDataSkillText}{\ResumeDataStores; \ResumeQualityTools, санитайзеры, дифференциальное тестирование, бенчмаркинг}
\newcommand{\ResumeProjectsSection}{Избранные проекты}
\newcommand{\ResumeAltRpmDescription}{исследование кодированных множеств символов и сравнения зависимостей RPM: C-реализации, хеширование, совместимость, проверки с санитайзерами и APT/RPM-бенчмарки.}
\newcommand{\ResumeNexusSyncDescription}{клиент-серверная система централизованного управления компьютерами и запуска разрешённых команд. FastAPI, SQLAlchemy, CLI, YAML-конфигурация, systemd, автономные сборки и CI.}
\newcommand{\ResumeInfrastructureName}{Персональная инфраструктура}
\newcommand{\ResumeInfrastructureDescription}{автоматизация Linux-серверов через Ansible, эксплуатация многоузловых K3s/RKE2, контейнерные развёртывания, ingress/ServiceLB, автоматизация TLS и удалённая диагностика.}
\newcommand{\ResumePomodoroDescription}{браузерный таймер на React, TypeScript и Vite; тестируется и публикуется GitHub Actions как непривилегированный мультиархитектурный образ в GHCR.}
\newcommand{\ResumeNetworkDiagramsDescription}{Python-инструмент для построения и визуализации сетевых топологий.}
\newcommand{\ResumeVpnBotDescription}{контейнеризированный Python-бот для управления приглашениями и жизненным циклом пользователей через Marzban API.}