Compare commits

..
19 Commits
Author SHA1 Message Date
krosh 493382008f little fix
Build and publish site container / build (push) Canceled after 0s
2026-08-16 03:40:23 +03:00
krosh 062491301d publish container to ghcr 2026-08-16 03:32:49 +03:00
krosh 4058b9a596 add simple site with container
Build site container / build (push) Canceled after 0s
2026-08-16 03:23:20 +03:00
krosh 936d8d4e47 FIN. add en version
Build resume PDFs / Build Russian and English resumes (push) Failing after 11s
2026-08-06 23:19:30 +03:00
krosh 08f79026c0 WIP. add more info about myself 2026-08-06 23:13:12 +03:00
krosh 1b1d55a09e WIP. Refine resume skills and headline 2026-08-06 22:41:40 +03:00
krosh 3562955ce1 move paragraphs 2026-08-06 22:03:30 +03:00
krosh 6b1f4c3c3f add some links
Build resume PDFs / Build Russian and English resumes (push) Failing after 2m9s
2026-08-06 14:04:16 +03:00
krosh 40b46f7c44 small edit
Build resume PDFs / Build Russian and English resumes (push) Canceled after 3m18s
2026-08-06 14:01:16 +03:00
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
13 changed files with 683 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
@@ -0,0 +1,67 @@
name: Build and publish site container
on:
push:
branches: [main]
tags:
- "v*"
paths:
- "site/**"
- ".github/workflows/build-site-container.yml"
pull_request:
paths:
- "site/**"
- ".github/workflows/build-site-container.yml"
workflow_dispatch:
permissions:
contents: read
packages: write
env:
REGISTRY: ghcr.io
IMAGE_NAME: ${{ github.repository }}
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Log in to GHCR
if: github.event_name != 'pull_request'
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Generate image metadata
id: metadata
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
tags: |
type=raw,value=latest,enable={{is_default_branch}}
type=ref,event=branch
type=ref,event=tag
type=sha
- name: Build and publish container
uses: docker/build-push-action@v6
with:
context: ./site
platforms: linux/amd64
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.metadata.outputs.tags }}
labels: ${{ steps.metadata.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max
+1
View File
@@ -0,0 +1 @@
*.pdf
+47 -40
View File
@@ -1,48 +1,70 @@
# Hi there! 👋 I'm Dmitrii Gudov (kr0sh512) # 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 ## 🚀 About Me
- 🎓 **Student at CMC MSU** - 🎓 **Computer Science student at CMC MSU**
- 💻 Interested in **System Programming and Bot Development** - 🐧 Interested in **DevOps, Linux infrastructure, system programming, and networking**
- 🌱 Currently exploring **Python, C++ and Shell Scripting** - 🛠️ 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** - 📫 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 ## 🔧 Skills
- **Languages**: Python, C++ - **Languages**: Python, C, C++, Shell, SQL
- **Frameworks/Tools**: Git, Linux, Docker - **Infrastructure & DevOps**: Linux, Docker/OCI, Kubernetes, K3s, RKE2, Helm, Ansible, Traefik, systemd, SSH
- **Database Management**: Postgres, MongoDB - **CI/CD**: GitHub Actions, GHCR, multi-architecture container builds, automated testing and packaging
- **Other**: Web Automation, Telegram Bot Development, Problem Solving - **Backend & Data**: FastAPI, SQLAlchemy, Pydantic, PostgreSQL, SQLite, MongoDB
- **Engineering Practices**: pytest, mypy, Black, sanitizers, differential testing, benchmarking, and reproducible build workflows
--- ---
## 🖥️ Projects ## 🖥️ 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.
### 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.
For example, [Gitea Instance](https://git.krosh.dev)
### [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.
### [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. Aviable on [pom.krosh.dev](https://pom.krosh.dev)
### [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) ### [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) A script that syncs the playing track from spotify in the background with the Bio column in the user's telegram.
**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.
--- ---
<!-- <!--
## 📈 GitHub Stats ## 📈 GitHub Stats
@@ -52,6 +74,7 @@ I'm a passionate developer and Computer Science student at [CMC MSU](https://cmc
--- ---
--> -->
## 🌐 Connect with Me ## 🌐 Connect with Me
[![Telegram](https://img.shields.io/badge/Telegram-Kr0sH_512-blue?style=flat&logo=telegram)](https://t.me/kr0sh_512) [![Telegram](https://img.shields.io/badge/Telegram-Kr0sH_512-blue?style=flat&logo=telegram)](https://t.me/kr0sh_512)
@@ -59,20 +82,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. Thanks for visiting my profile! Feel free to reach out for collaboration, Linux infrastructure, systems programming, or DevOps projects.
<!--
**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: ...
-->
+28
View File
@@ -0,0 +1,28 @@
% 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{\ResumeGiteaHandle}{self-hosted Gitea}
\newcommand{\ResumeTelegramHandle}{kr0sh\_512}
\newcommand{\ResumeGitHubUrl}{https://github.com/kr0sh512}
\newcommand{\ResumeGiteaUrl}{https://git.krosh.dev}
\newcommand{\ResumeTelegramUrl}{https://t.me/kr0sh_512}
\newcommand{\ResumeLinuxStack}{ALT \& Arch Linux, systemd, SSH, Bash, TCP/IP, DNS, TLS}
\newcommand{\ResumeContainersStack}{Docker/OCI, Kubernetes, K3s, RKE2,
Helm, Traefik}
\newcommand{\ResumeCiTools}{Ansible, Git, GitHub Actions, GHCR}
\newcommand{\ResumeDevelopmentStack}{Python, C, C++, SQL; FastAPI, SQLAlchemy, pytest}
\newcommand{\ResumeObservabilityTools}{Prometheus, Grafana, Alertmanager, Node Exporter}
\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}
+105
View File
@@ -0,0 +1,105 @@
% 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{\ResumeGiteaUrl}{\ResumeGiteaHandle}
\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{\ResumeLinuxSkillLabel:} \ResumeLinuxSkillText.
\item \textbf{\ResumeContainersSkillLabel:} \ResumeContainersSkillText.
\item \textbf{\ResumeCiSkillLabel:} \ResumeCiSkillText.
\item \textbf{\ResumeObservabilitySkillLabel:} \ResumeObservabilitySkillText.
\item \textbf{\ResumeDevelopmentSkillLabel:} \ResumeDevelopmentSkillText.
\ifdefined\ResumeLanguagesSkillLabel
\item \textbf{\ResumeLanguagesSkillLabel:} \ResumeLanguagesSkillText.
\fi
\end{itemize}
\section{\ResumeProjectsSection}
\project{\ResumeInfrastructureName}{\ResumeInfrastructureDescription}
\project{\href{\ResumeAltRpmUrl}{\ResumeAltRpmName}}{\ResumeAltRpmDescription}
% \project{\href{\ResumeNetworkDiagramsUrl}{\ResumeNetworkDiagramsName}}{\ResumeNetworkDiagramsDescription}
\project{\href{\ResumeNexusSyncUrl}{\ResumeNexusSyncName}}{\ResumeNexusSyncDescription}
% \project{\href{\ResumeVpnBotUrl}{\ResumeVpnBotName}}{\ResumeVpnBotDescription}
\project{\href{\ResumePomodoroUrl}{\ResumePomodoroName}}{\ResumePomodoroDescription}
\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}
+56
View File
@@ -0,0 +1,56 @@
% English strings for resume.tex.
\newcommand{\ResumeDocumentLanguage}{english}
\newcommand{\ResumeName}{Dmitrii Gudov}
\newcommand{\ResumePdfTitle}{Resume — Dmitrii Gudov}
\newcommand{\ResumeHeadline}{DevOps / Linux Engineer · Infrastructure Automation}
\newcommand{\ResumeSummarySection}{Professional Summary}
\newcommand{\ResumeSummaryText}{Fourth-year student at the Faculty of Computational Mathematics and Cybernetics, Lomonosov Moscow State University, with hands-on experience operating Linux servers, a multi-node K3s cluster, and infrastructure automation. I deploy containerized services, configure CI/CD, monitoring, TLS, and DNS, and automate server configuration with Ansible. I develop systems tools in Python and C and have worked on teams at BaseALT and Yandex. I am seeking a DevOps/Linux internship focused on automation, operations, and troubleshooting.}
\newcommand{\ResumeExperienceSection}{Experience}
\newcommand{\ResumeBaseAltDate}{Present}
\newcommand{\ResumeBaseAltDescription}{%
\begin{itemize}
\item Researched the set:version mechanism in ALT RPM and developed an alternative implementation for comparing encoded dependency sets.
\item Built a test bench for A/B testing librpm variants against real APT scenarios: check, install, upgrade, autoremove, and dist-upgrade.
\item Validated compatibility with differential testing and sanitizers and analyzed performance using hasher and perf.
\end{itemize}}
\newcommand{\ResumeYandexRole}{Yandex — DevTools Intern, Autonomous Transport}
\newcommand{\ResumeYandexDate}{Fall 2025}
\newcommand{\ResumeYandexDescription}{%
\begin{itemize}
\item Used Python multithreading to speed up builds of internal components.
\item Added block-level tests to CI to support retiring legacy code.
\item Refactored Go code to reduce the overall size of rover firmware.
\end{itemize}}
\newcommand{\ResumeEducationSection}{Education}
\newcommand{\ResumeUniversityName}{Lomonosov Moscow State University}
\newcommand{\ResumeEducationDate}{2023--2027}
\newcommand{\ResumeEducationDescription}{Faculty of Computational Mathematics and Cybernetics, Bachelor's degree program in Applied Mathematics and Computer Science. Department of Computer Systems Automation (ASVK).}
\newcommand{\ResumeSkillsSection}{Core Skills}
\newcommand{\ResumeLinuxSkillLabel}{Linux and networking}
\newcommand{\ResumeLinuxSkillText}{\ResumeLinuxStack}
\newcommand{\ResumeContainersSkillLabel}{Containers and orchestration}
\newcommand{\ResumeContainersSkillText}{\ResumeContainersStack}
\newcommand{\ResumeCiSkillLabel}{Automation and CI/CD}
\newcommand{\ResumeCiSkillText}{\ResumeCiTools, multi-architecture container builds, testing, packaging, and publishing}
\newcommand{\ResumeObservabilitySkillLabel}{Observability}
\newcommand{\ResumeObservabilitySkillText}{\ResumeObservabilityTools}
\newcommand{\ResumeDevelopmentSkillLabel}{Development}
\newcommand{\ResumeDevelopmentSkillText}{\ResumeDevelopmentStack}
\newcommand{\ResumeDataSkillLabel}{Data and quality}
\newcommand{\ResumeDataSkillText}{\ResumeDataStores; \ResumeQualityTools, sanitizers, differential testing, benchmarking}
\newcommand{\ResumeLanguagesSkillLabel}{Languages}
\newcommand{\ResumeLanguagesSkillText}{English — B2}
\newcommand{\ResumeProjectsSection}{Selected Projects}
\newcommand{\ResumeAltRpmDescription}{research into encoded symbol sets and RPM dependency comparison in ALT Linux, covering C implementations, hashing, compatibility, sanitizer checks, and APT/RPM benchmarks.}
\newcommand{\ResumeNexusSyncDescription}{a client-server system for centralized computer management and approved command execution. FastAPI, SQLAlchemy, CLI, YAML configuration, systemd, standalone builds, and CI.}
\newcommand{\ResumeInfrastructureName}{Seven-node K3s homelab}
\newcommand{\ResumeInfrastructureDescription}{operating containerized services; configuring Traefik ingress, ServiceLB, TLS certificates, and DNS; monitoring with Prometheus, Grafana, and Node Exporter; alerting with Alertmanager; automating Linux server configuration with Ansible; and troubleshooting network and system issues.}
\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.}
\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.}
+63
View File
@@ -0,0 +1,63 @@
% Russian strings for resume.tex.
\newcommand{\ResumeDocumentLanguage}{russian}
\newcommand{\ResumeName}{Дмитрий Гудов}
\newcommand{\ResumePdfTitle}{Резюме — Дмитрий Гудов}
\newcommand{\ResumeHeadline}{DevOps / Linux-инженер · Автоматизация инфраструктуры}
\newcommand{\ResumeSummarySection}{Профессиональный профиль}
\newcommand{\ResumeSummaryText}{Студент 4 курса ВМК МГУ с практическим опытом эксплуатации Linux-серверов,
многоузлового K3s-кластера и автоматизации инфраструктуры. Разворачиваю
контейнерные сервисы, настраиваю CI/CD, мониторинг, TLS и DNS, автоматизирую
конфигурацию серверов с помощью Ansible. Разрабатываю системные инструменты
на Python и C; работал в командах BaseALT и Яндекса. Ищу стажировку в области
DevOps/Linux с задачами автоматизации, эксплуатации и диагностики.}
\newcommand{\ResumeExperienceSection}{Опыт}
\newcommand{\ResumeBaseAltDate}{по настоящее время}
\newcommand{\ResumeBaseAltDescription}{%
\begin{itemize}
\item Исследовал механизм set:version в ALT RPM и разработал альтернативную реализацию сравнения кодированных множеств зависимостей.
\item Создал стенд для A/B-тестирования вариантов librpm на реальных сценариях APT: check, install, upgrade, autoremove и dist-upgrade.
\item Проверял совместимость дифференциальными тестами и санитайзерами, анализировал производительность с помощью hasher и perf.
\end{itemize}}
\newcommand{\ResumeYandexRole}{Яндекс — стажёр, команда DevTools автономного транспорта}
\newcommand{\ResumeYandexDate}{осень 2025}
\newcommand{\ResumeYandexDescription}{%
\begin{itemize}
\item С помощью MultiThreading в python ускорил сборку внутренних компонент.
\item Добавление в CI блок-тестов для отказа от legacy-кода.
\item Рефактор golang кода для уменьшения общего размера прошивки роверов.
\end{itemize}}
\newcommand{\ResumeEducationSection}{Образование}
\newcommand{\ResumeUniversityName}{Московский государственный университет имени М. В. Ломоносова}
\newcommand{\ResumeEducationDate}{2023--2027}
\newcommand{\ResumeEducationDescription}{Факультет вычислительной математики и кибернетики, бакалавриат, направление «Прикладная математика и информатика» (ПМИ). Кафедра автоматизации систем вычислительных комплексов (АСВК).}
\newcommand{\ResumeSkillsSection}{Ключевые навыки}
\newcommand{\ResumeLinuxSkillLabel}{Linux и сети}
\newcommand{\ResumeLinuxSkillText}{\ResumeLinuxStack}
\newcommand{\ResumeContainersSkillLabel}{Контейнеры и оркестрация}
\newcommand{\ResumeContainersSkillText}{\ResumeContainersStack}
\newcommand{\ResumeCiSkillLabel}{Автоматизация и CI/CD}
\newcommand{\ResumeCiSkillText}{\ResumeCiTools, мультиархитектурные сборки контейнеров, тестирование, упаковка и публикация}
\newcommand{\ResumeObservabilitySkillLabel}{Наблюдаемость}
\newcommand{\ResumeObservabilitySkillText}{\ResumeObservabilityTools}
\newcommand{\ResumeDevelopmentSkillLabel}{Разработка}
\newcommand{\ResumeDevelopmentSkillText}{\ResumeDevelopmentStack}
\newcommand{\ResumeDataSkillLabel}{Данные и качество}
\newcommand{\ResumeDataSkillText}{\ResumeDataStores; \ResumeQualityTools, санитайзеры, дифференциальное тестирование, бенчмаркинг}
\newcommand{\ResumeLanguagesSkillLabel}{Языки}
\newcommand{\ResumeLanguagesSkillText}{английский B2}
\newcommand{\ResumeProjectsSection}{Избранные проекты}
\newcommand{\ResumeAltRpmDescription}{исследование кодированных множеств символов и сравнения зависимостей RPM в ALT Linux: C-реализации, хеширование, совместимость, проверки с санитайзерами и APT/RPM-бенчмарки.}
\newcommand{\ResumeNexusSyncDescription}{клиент-серверная система централизованного управления компьютерами и запуска разрешённых команд. FastAPI, SQLAlchemy, CLI, YAML-конфигурация, systemd, автономные сборки и CI.}
\newcommand{\ResumeInfrastructureName}{"Домашний" кластер}
\newcommand{\ResumeInfrastructureDescription}{Homelab: семи-узловой K3s-кластер — эксплуатация контейнерных сервисов,
настройка Traefik ingress и ServiceLB, TLS-сертификатов и DNS. Мониторинг через Prometheus, Grafana и Node Exporter, алертинг через Alertmanager.
Автоматизация конфигурации Linux-серверов с помощью Ansible; диагностика сетевых и системных неисправностей.}
\newcommand{\ResumeNetworkDiagramsDescription}{Python-инструмент для построения и визуализации сетевых топологий.}
\newcommand{\ResumeVpnBotDescription}{контейнеризированный Python-бот для управления приглашениями и жизненным циклом пользователей через Marzban API.}
\newcommand{\ResumePomodoroDescription}{браузерный таймер на React, TypeScript и Vite; тестируется и публикуется GitHub Actions как непривилегированный мультиархитектурный образ в GHCR.}
+6
View File
@@ -0,0 +1,6 @@
FROM docker.io/nginxinc/nginx-unprivileged:alpine
COPY --chown=101:101 --chmod=644 nginx.conf /etc/nginx/conf.d/default.conf
COPY --chown=101:101 index.html /usr/share/nginx/html/index.html
EXPOSE 8080
+222
View File
@@ -0,0 +1,222 @@
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Dmitrii Gudov | kr0sh512</title>
<meta name="description" content="DevOps-oriented developer and Computer Science student at CMC MSU">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600&display=swap" rel="stylesheet">
<style>
:root {
--bg-color: #ffffff;
--text-color: #1a1a1a;
--text-secondary: #666666;
--accent-color: #2563eb;
--border-color: #e5e7eb;
--container-width: 800px;
}
@media (prefers-color-scheme: dark) {
:root {
--bg-color: #1a1a1a;
--text-color: #f0f0f0;
--text-secondary: #999999;
--accent-color: #3b82f6;
--border-color: #333333;
}
}
* { margin: 0; padding: 0; box-sizing: border-box; }
body {
font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
background-color: var(--bg-color);
color: var(--text-color);
line-height: 1.6;
font-size: 16px;
}
.container { max-width: var(--container-width); margin: 0 auto; padding: 0 20px; }
.header { padding: 60px 0; text-align: center; }
.header-title { font-size: 2.5rem; font-weight: 600; margin-bottom: 8px; }
.header-link { color: var(--text-color); text-decoration: none; }
.header-link:hover { color: var(--accent-color); }
.header-subtitle { font-size: 1.25rem; color: var(--text-secondary); font-weight: 400; }
.main { padding-bottom: 60px; }
.section { padding: 40px 0; border-top: 1px solid var(--border-color); }
.section:first-of-type { border-top: none; }
.section-title { font-size: 1.75rem; font-weight: 600; margin-bottom: 24px; color: var(--text-color); }
.about-content p { margin-bottom: 16px; font-size: 1.1rem; }
.about-content a { color: var(--accent-color); text-decoration: none; }
.about-content a:hover { text-decoration: underline; }
.experience-list { display: flex; flex-direction: column; gap: 20px; }
.experience-item {
display: flex; justify-content: space-between; align-items: flex-start;
padding: 16px 0; border-bottom: 1px solid var(--border-color);
}
.experience-item:last-of-type { border-bottom: none; }
.experience-header { display: flex; flex-direction: column; gap: 4px; }
.experience-company { font-weight: 600; font-size: 1.1rem; }
.experience-role { color: var(--text-secondary); font-size: 1rem; }
.experience-period { color: var(--text-secondary); font-size: 0.9rem; white-space: nowrap; }
.skills-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 24px; }
.skills-category-title { font-size: 1rem; font-weight: 600; margin-bottom: 12px; color: var(--text-color); }
.skills-list { list-style: none; display: flex; flex-wrap: wrap; gap: 8px; }
.skills-list li {
font-size: 0.9rem; color: var(--text-secondary);
background-color: var(--border-color); padding: 4px 12px; border-radius: 20px;
}
.projects-list { display: flex; flex-direction: column; gap: 24px; }
.project-card {
padding: 20px; border: 1px solid var(--border-color);
border-radius: 8px; transition: border-color 0.2s ease;
}
.project-card:hover { border-color: var(--accent-color); }
.project-title { font-size: 1.25rem; font-weight: 600; margin-bottom: 8px; }
.project-title a { color: var(--text-color); text-decoration: none; }
.project-title a:hover { color: var(--accent-color); }
.project-description { color: var(--text-secondary); margin-bottom: 12px; font-size: 1rem; }
.project-tech { font-size: 0.85rem; color: var(--accent-color); font-weight: 500; }
.contact-links { display: flex; flex-direction: column; gap: 12px; }
.contact-link {
color: var(--text-color); text-decoration: none;
font-size: 1.1rem; transition: color 0.2s ease;
}
.contact-link:hover { color: var(--accent-color); }
.footer { padding: 40px 0; text-align: center; border-top: 1px solid var(--border-color); }
.footer-text { color: var(--text-secondary); font-size: 0.9rem; }
@media (max-width: 768px) {
.header-title { font-size: 2rem; }
.header-subtitle { font-size: 1rem; }
.section-title { font-size: 1.5rem; }
.experience-item { flex-direction: column; gap: 8px; }
.experience-period { white-space: normal; }
.skills-grid { grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); }
}
</style>
</head>
<body>
<header class="header">
<div class="container">
<h1 class="header-title"><a href="/" class="header-link">Dmitrii Gudov</a></h1>
<p class="header-subtitle">DevOps Engineer & CS Student</p>
</div>
</header>
<main class="main">
<section class="section about">
<div class="container">
<h2 class="section-title">About Me</h2>
<div class="about-content">
<p>I'm a <strong>DevOps-oriented developer</strong> and <strong>Computer Science student</strong> at <a href="https://cmc.msu.ru/" target="_blank" rel="noopener">CMC MSU</a>.</p>
<p>I build and operate Linux infrastructure, automate repeatable work, and develop system and backend tools. My current focus is <strong>ALT Linux and RPM internals</strong>, Kubernetes, containers, CI/CD, and Python/C systems tooling.</p>
</div>
</div>
</section>
<section class="section experience">
<div class="container">
<h2 class="section-title">Experience</h2>
<div class="experience-list">
<div class="experience-item">
<div class="experience-header">
<span class="experience-company">BaseALT</span>
<span class="experience-role">Linux/RPM Tooling & Systems Research</span>
</div>
<span class="experience-period">Current</span>
</div>
<div class="experience-item">
<div class="experience-header">
<span class="experience-company">Yandex</span>
<span class="experience-role">DevTools Team, Autonomous Transport</span>
</div>
<span class="experience-period">Fall 2025 Intern</span>
</div>
</div>
</div>
</section>
<section class="section skills">
<div class="container">
<h2 class="section-title">Skills</h2>
<div class="skills-grid">
<div class="skills-category">
<h3 class="skills-category-title">Languages</h3>
<ul class="skills-list"><li>Python</li><li>C</li><li>C++</li><li>Shell</li><li>SQL</li></ul>
</div>
<div class="skills-category">
<h3 class="skills-category-title">Infrastructure & DevOps</h3>
<ul class="skills-list"><li>Linux</li><li>Docker</li><li>Kubernetes</li><li>K3s</li><li>Helm</li><li>Ansible</li><li>Traefik</li><li>systemd</li></ul>
</div>
<div class="skills-category">
<h3 class="skills-category-title">CI/CD</h3>
<ul class="skills-list"><li>GitHub Actions</li><li>GHCR</li><li>Multi-arch</li><li>Automated testing</li></ul>
</div>
<div class="skills-category">
<h3 class="skills-category-title">Backend & Data</h3>
<ul class="skills-list"><li>FastAPI</li><li>SQLAlchemy</li><li>PostgreSQL</li><li>SQLite</li><li>MongoDB</li></ul>
</div>
<div class="skills-category">
<h3 class="skills-category-title">Practices</h3>
<ul class="skills-list"><li>pytest</li><li>mypy</li><li>Black</li><li>Sanitizers</li></ul>
</div>
</div>
</div>
</section>
<section class="section projects">
<div class="container">
<h2 class="section-title">Projects</h2>
<div class="projects-list">
<article class="project-card">
<h3 class="project-title"><a href="https://github.com/kr0sh512/alt-rpm-set-version" target="_blank" rel="noopener">ALT RPM Set Version Research</a></h3>
<p class="project-description">Research into ALT Linux RPM's encoded symbol sets and dependency comparison. C implementation, hashing, compatibility testing, and benchmarks.</p>
<div class="project-tech">C, RPM, ALT Linux</div>
</article>
<article class="project-card">
<h3 class="project-title"><a href="https://pom.krosh.dev" target="_blank" rel="noopener">Pomodoro</a></h3>
<p class="project-description">Customizable browser-based Pomodoro timer and clock built with React and TypeScript.</p>
<div class="project-tech">React, TypeScript, Vite</div>
</article>
<article class="project-card">
<h3 class="project-title"><a href="https://github.com/kr0sh512/nexus-sync" target="_blank" rel="noopener">nexus-sync</a></h3>
<p class="project-description">Client-server system for centrally managing computers and dispatching approved commands.</p>
<div class="project-tech">FastAPI, SQLAlchemy, Python</div>
</article>
<article class="project-card">
<h3 class="project-title"><a href="https://github.com/kr0sh512/network-diagrams-tool" target="_blank" rel="noopener">Network Diagrams Tool</a></h3>
<p class="project-description">Python tool for building and visualizing network topologies for CMC MSU coursework.</p>
<div class="project-tech">Python, Networking</div>
</article>
<article class="project-card">
<h3 class="project-title"><a href="https://github.com/kr0sh512/profhome-vpn-bot" target="_blank" rel="noopener">Marzban Telegram VPN Bot</a></h3>
<p class="project-description">Containerized Python Telegram bot that integrates with Marzban API for VPN management.</p>
<div class="project-tech">Python, Telegram API, SQLite</div>
</article>
<article class="project-card">
<h3 class="project-title"><a href="https://github.com/kr0sh512/spotify-to-tg-bio" target="_blank" rel="noopener">Spotify to Telegram Bio</a></h3>
<p class="project-description">Script that syncs playing Spotify track with Telegram bio in real-time.</p>
<div class="project-tech">Python, Spotify API, Telegram API</div>
</article>
</div>
</div>
</section>
<section class="section contact">
<div class="container">
<h2 class="section-title">Connect with Me</h2>
<div class="contact-links">
<a href="https://t.me/kr0sh_512" target="_blank" rel="noopener" class="contact-link">Telegram: @kr0sh_512</a>
<a href="mailto:gudovdo@my.msu.ru" target="_blank" rel="noopener" class="contact-link">Email: gudovdo@my.msu.ru</a>
<a href="https://github.com/kr0sh512" target="_blank" rel="noopener" class="contact-link">GitHub: kr0sh512</a>
<a href="https://git.krosh.dev" target="_blank" rel="noopener" class="contact-link">Gitea: git.krosh.dev</a>
</div>
</div>
</section>
</main>
<footer class="footer">
<div class="container">
<p class="footer-text">© 2026 Dmitrii Gudov. All rights reserved.</p>
</div>
</footer>
</body>
</html>
+25
View File
@@ -0,0 +1,25 @@
server {
listen 8080;
listen [::]:8080;
server_name _;
root /usr/share/nginx/html;
server_tokens off;
absolute_redirect off;
location = / {
try_files /index.html =404;
}
location = /index.html {
return 308 /;
}
location / {
try_files $uri $uri/ @mainpage;
}
location @mainpage {
try_files /index.html =404;
}
}