From 09d7cd32a9164085cee1de9be6b8bb19f1a24ade Mon Sep 17 00:00:00 2001 From: Dmitrii Krosh Date: Mon, 27 Jul 2026 03:33:52 +0300 Subject: [PATCH] make resume in multiple files --- resume/resume-data.tex | 25 ++++++++++ resume/resume.tex | 99 ++++++++++++++++++++++++++++++++++++++ resume/translations/en.tex | 40 +++++++++++++++ resume/translations/ru.tex | 40 +++++++++++++++ 4 files changed, 204 insertions(+) create mode 100644 resume/resume-data.tex create mode 100644 resume/resume.tex create mode 100644 resume/translations/en.tex create mode 100644 resume/translations/ru.tex diff --git a/resume/resume-data.tex b/resume/resume-data.tex new file mode 100644 index 0000000..a277c40 --- /dev/null +++ b/resume/resume-data.tex @@ -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} diff --git a/resume/resume.tex b/resume/resume.tex new file mode 100644 index 0000000..d8b41bf --- /dev/null +++ b/resume/resume.tex @@ -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} diff --git a/resume/translations/en.tex b/resume/translations/en.tex new file mode 100644 index 0000000..c16e683 --- /dev/null +++ b/resume/translations/en.tex @@ -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.} diff --git a/resume/translations/ru.tex b/resume/translations/ru.tex new file mode 100644 index 0000000..241d389 --- /dev/null +++ b/resume/translations/ru.tex @@ -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.}