Reformat code.

This commit is contained in:
Dmitry Voronin 2024-03-06 01:12:17 +03:00
parent a5eac7035d
commit 1625532413
52 changed files with 493 additions and 493 deletions

1
.gitignore vendored
View file

@ -1 +1,2 @@
build/*
.NixRoot*

View file

@ -3,10 +3,10 @@ photo = true
extra = true
build = $(CURDIR)/build
src = $(CURDIR)/tex
target = $(src)/main.tex
output = $(build)/main.pdf
outputen = $(build)/voronind_en.pdf
outputru = $(build)/voronind_ru.pdf
target = $(src)/Main.tex
output = $(build)/Main.pdf
outputen = $(build)/VoronindEn.pdf
outputru = $(build)/VoronindRu.pdf
export RESUME_COLOR := $(color)
export RESUME_PHOTO := $(photo)
@ -16,7 +16,7 @@ export RESUME_EXTRA := $(extra)
all: clean icon en ru open
.PHONY: clean
clean:
clean:
@rm -rf $(build)
.PHONY: icon

View file

@ -5,8 +5,7 @@
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
};
outputs = { self, nixpkgs } @inputs:
let
outputs = { self, nixpkgs } @inputs: let
system = "x86_64-linux";
lib = nixpkgs.lib;
pkgs = nixpkgs.legacyPackages.${system};

View file

Before

Width:  |  Height:  |  Size: 147 KiB

After

Width:  |  Height:  |  Size: 147 KiB

View file

Before

Width:  |  Height:  |  Size: 311 B

After

Width:  |  Height:  |  Size: 311 B

View file

Before

Width:  |  Height:  |  Size: 5.8 KiB

After

Width:  |  Height:  |  Size: 5.8 KiB

View file

Before

Width:  |  Height:  |  Size: 5.3 KiB

After

Width:  |  Height:  |  Size: 5.3 KiB

View file

Before

Width:  |  Height:  |  Size: 4.9 KiB

After

Width:  |  Height:  |  Size: 4.9 KiB

View file

Before

Width:  |  Height:  |  Size: 5 KiB

After

Width:  |  Height:  |  Size: 5 KiB

View file

Before

Width:  |  Height:  |  Size: 5.3 KiB

After

Width:  |  Height:  |  Size: 5.3 KiB

View file

Before

Width:  |  Height:  |  Size: 338 B

After

Width:  |  Height:  |  Size: 338 B

View file

Before

Width:  |  Height:  |  Size: 418 B

After

Width:  |  Height:  |  Size: 418 B

View file

Before

Width:  |  Height:  |  Size: 5.6 KiB

After

Width:  |  Height:  |  Size: 5.6 KiB

View file

Before

Width:  |  Height:  |  Size: 5.3 KiB

After

Width:  |  Height:  |  Size: 5.3 KiB

View file

Before

Width:  |  Height:  |  Size: 353 B

After

Width:  |  Height:  |  Size: 353 B

35
tex/Const.tex Normal file
View file

@ -0,0 +1,35 @@
% Switches.
\newif\ifPhoto % Show photo.
\newif\ifExtra % Show extra content.
\newif\ifEn % English language.
\newif\ifRu % Russian language.
\newcommand{\En}[1]{\ifEn#1\fi} % Print if English language.
\newcommand{\Ru}[1]{\ifRu#1\fi} % Print if Russian language.
% Read env variables.
\def\envTrue{true} % True.
\def\envFalse{false} % False.
\def\envEn{en} % English literal.
\def\envRu{ru} % Russian literal.
\def\envEmpty{} % Empty env value.
\getenv[\envPhoto]{RESUME_PHOTO} % Read photo shell variable.
\getenv[\envExtra]{RESUME_EXTRA} % Read extra shell variable.
\getenv[\envLang]{RESUME_LANG} % Read language shell variable.
\ifdefequal{\envPhoto}{\envTrue}{\Phototrue}{\Photofalse} % Show photo.
\ifdefequal{\envExtra}{\envTrue}{\Extratrue}{\Extrafalse} % Show extra content.
\ifdefequal{\envLang}{\envEn}{\Entrue}{} % Use English.
\ifdefequal{\envLang}{\envRu}{\Rutrue}{} % Use Russian.
\ifdefequal{\envLang}{\envEmpty}{\Entrue}{} % Use English by default.
% personal info.
\newcommand{\Name}{%
\En{Dmitry Voronin}%
\Ru{Дмитрий Воронин}
}
\newcommand{\Location}{%
\En{St. Petersburg, Russia}%
\Ru{Санкт-Петербург, Россия}
}
\newcommand{\Birthday}{\Jun 1998}
\newcommand{\Email}{job@voronind.com}
\newcommand{\Phone}{+7(905)836-68-86}

68
tex/Main.tex Normal file
View file

@ -0,0 +1,68 @@
\documentclass{article} % Basic document class (template).
\usepackage[T2A,T1]{fontenc} % Specify font encodings.
\usepackage[utf8]{inputenc} % Specify input file encodings.
\usepackage[bidi=default]{babel} % Use babel for i18n.
\usepackage{graphicx} % Image support.
\usepackage{xcolor} % Colored text support.
\usepackage{montserrat} % Custom font.
\usepackage{hyperref} % Hyperlinks.
\usepackage{indentfirst} % Auto indent for paragraphs.
\usepackage{luacode} % Lua scripts support.
\usepackage{tcolorbox} % Code blocks.
\usepackage{listofitems} % For loops.
\input{Shell} % Import shell support.
% Configure geometry.
\usepackage[
a4paper,
left = 0.5in,
right = 0.5in,
top = 0.5in,
bottom = 0.5in
]{geometry}
% Paragraph spacing.
\usepackage[
skip = 4pt,
indent = 20pt
]{parskip}
% Configure hyperlinks.
\hypersetup{
linktocpage = true,
colorlinks = true,
hidelinks = true,
linktoc = all
}
% Specify where images are stored.
\graphicspath{ {../image}{../build/image} }
\babelprovide[import]{russian} % Add Russian support.
\babelfont{rm}{montserrat} % Use custom serif font for English.
\babelfont{sf}{montserrat} % Use custom sans font for English.
\babelfont{tt}{montserrat} % Use custom mono font for English.
\babelfont[russian]{rm}{montserrat} % Use custom serif font for Russian.
\babelfont[russian]{sf}{montserrat} % Use custom sans font for Russian.
\babelfont[russian]{tt}{montserrat} % Use custom mono font for Russian.
\begin{document}
\input{Style} % Import common styles.
\input{Const} % Import constant values.
\input{Page} % Import pages info.
\input{i18n/Month} % Import month values.
\input{view/Radio} % Import radio view.
\input{view/Place} % Import place view.
\input{page/Title} % Import title.
\input{page/Experience} % Import experience info.
\clearpage\noindent % INFO: temprorary page break.
\input{page/Language} % Import languages info.
\Par\noindent
\input{page/Education} % Import education info.
\Par\noindent
\input{page/Skill} % Import skills info.
\Par\noindent
\input{page/Interest} % Import interests info.
\end{document}

21
tex/Page.tex Normal file
View file

@ -0,0 +1,21 @@
% this is used to create constant reference links within document.
\def\PageExperience{%
\En{WORK EXPERIENCE}%
\Ru{ОПЫТ РАБОТЫ}
}
\def\PageLanguage{%
\En{LANGUAGES}%
\Ru{ЯЗЫКИ}
}
\def\PageEducation{%
\En{EDUCATION}%
\Ru{ОБРАЗОВАНИЕ}
}
\def\PageSkill{%
\En{SKILLS}%
\Ru{НАВЫКИ}
}
\def\PageInterest{%
\En{INTERESTS}%
\Ru{ИНТЕРЕСЫ}
}

5
tex/Shell.tex Normal file
View file

@ -0,0 +1,5 @@
% \getenv[\HOME]{HOME} % Example: Store $HOME shell var into \HOME cmd.
\usepackage{catchfile}
\newcommand{\getenv}[2][]{%
\CatchFileEdef{\Temp}{"|kpsewhich --var-value #2"}{\endlinechar=-1}%
\if\relax\detokenize{#1}\relax\Temp\else\let#1\Temp\fi}

65
tex/Style.tex Normal file
View file

@ -0,0 +1,65 @@
% Colors.
\getenv[\ColorMain]{RESUME_COLOR}
\definecolor{ColorBlack}{RGB}{0,0,0}
\definecolor{ColorWhite}{RGB}{255,255,255}
\definecolor{ColorLink} {RGB}{46,116,181}
\definecolor{ColorMain} {HTML}{\ColorMain}
\definecolor{ColorGray} {RGB}{127,127,127}
\definecolor{ColorLgray}{RGB}{229,229,229}
\definecolor{ColorRef} {RGB}{53,82,105}
\definecolor{ColorCodeBackground}{RGB}{40,42,54}
\definecolor{ColorCodeText} {RGB}{248,248,242}
\definecolor{ColorCodeString} {RGB}{80,250,123}
\definecolor{ColorCodeLiteral} {RGB}{139,233,253}
\definecolor{ColorCodeProperty} {RGB}{139,233,253}
\definecolor{ColorCodeKeyword} {RGB}{255,184,108}
\definecolor{ColorCodeComment} {RGB}{98,114,164}
% code block.
\newtcolorbox{CodeBox}[1][]{
colback = ColorCodeBackground,
colframe = ColorCodeBackground,
fontupper = \ttfamily,
nobeforeafter
}
\newenvironment{Code}{\begin{CodeBox}\catcode33=12\obeylines}{\end{CodeBox}}
% styles.
\newcommand{\ResetStyle} [1]{\fontsize{12}{12}\selectfont\rm\color{ColorBlack}#1} % Reset font style.
\newcommand{\Par} [0]{\par} % Default paragraph break.
\newcommand{\Parn} [0]{\par\noindent} % Default paragraph break without indent.
\newcommand{\Text} [1]{\ResetStyle{#1}} % Default text.
\newcommand{\Itallic} [1]{\textit{#1}} % Itallic text.
\newcommand{\Bold} [1]{\textbf{#1}} % Bold text.
\newcommand{\Semibold} [1]{\fontseries{sb}{\selectfont{#1}}} % Semi-bold text.
\newcommand{\Underline} [1]{\underline{#1}} % Underline text.
\newcommand{\Link} [2]{\href{#1}{\textcolor{ColorLink}{\Underline{#2}}}} % Link webpage.
\newcommand{\TextName} [1]{\fontsize{21}{21}{\selectfont{\Semibold{#1}}}} % Name style.
\newcommand{\Color} [2]{\textcolor{#1}{#2}} % Text color alias.
\newcommand{\Icon} [1]{\raisebox{-1mm}{\includegraphics[height=5mm]{#1}}} % Icons.
\newcommand{\Href} [1]{\hyperlink{#1}{\textcolor{ColorLink}{\Underline{#1}}}} % Reference section.
\newcommand{\TextRef} [1]{\textcolor{ColorRef}{#1}} % Reference text.
\newcommand{\TextList} [1]{\textcolor{ColorLgray}{#1}} % List numbers.
\newcommand{\Bullet} [0]{\raisebox{0.5mm}{\bullet}\hspace{4mm}} % List bullet symbol.
\newcommand{\Title} [1]{\hypertarget{#1}{}\fontsize{11}{11}%
{\selectfont{\textcolor{ColorMain}{\Semibold{#1}}}}} % Section title.
\newcommand{\BlCompact}[0]{\renewcommand{\baselinestretch}{1.0}\normalsize} % Compact baseline size.
\newcommand{\BlDefault}[0]{\renewcommand{\baselinestretch}{1.5}\normalsize} % Default baseline size.
\newcommand{\CString} [1]{\textcolor{ColorCodeString}{#1}}
\newcommand{\CLiteral} [1]{\textcolor{ColorCodeLiteral}{#1}}
\newcommand{\CProperty}[1]{\textcolor{ColorCodeProperty}{#1}}
\newcommand{\CKeyword} [1]{\textcolor{ColorCodeKeyword}{#1}}
\newcommand{\CComment} [1]{\textcolor{ColorCodeComment}{#1}}
\newcommand{\JLink} [1]{\Icon{IcLink}\ \href{https://#1}{\Itallic{#1}}} % Job webpage.
\newcommand{\JPlace}[2]{\ResetStyle{\Semibold{#1}}\ResetStyle\hfill\fontsize%
{10}{10}\selectfont\textcolor{ColorGray}{(#2)}} % Job place.
% settings.
\linespread{1.5} % Height between non-breaking lines.
\sloppy % Correct word placement on newline.
\pagestyle{empty} % Suppress default styles, i.e. page numbers.
\BlDefault % Default baseline size.

View file

@ -1,35 +0,0 @@
% switches.
\newif\ifphoto % show photo.
\newif\ifextra % show extra content.
\newif\ifen % english language.
\newif\ifru % russian language.
\newcommand{\en}[1]{\ifen#1\fi} % print if english language.
\newcommand{\ru}[1]{\ifru#1\fi} % print if russian language.
% read env variables.
\def\envtrue{true} % true.
\def\envfalse{false} % false.
\def\enven{en} % english literal.
\def\envru{ru} % russian literal.
\def\envempty{} % empty env value.
\getenv[\envphoto]{RESUME_PHOTO} % read photo shell variable.
\getenv[\envextra]{RESUME_EXTRA} % read extra shell variable.
\getenv[\envlang]{RESUME_LANG} % read language shell variable.
\ifdefequal{\envphoto}{\envtrue}{\phototrue}{\photofalse} % show photo.
\ifdefequal{\envextra}{\envtrue}{\extratrue}{\extrafalse} % show extra content.
\ifdefequal{\envlang}{\enven}{\entrue}{} % use english.
\ifdefequal{\envlang}{\envru}{\rutrue}{} % use russian.
\ifdefequal{\envlang}{\envempty}{\entrue}{} % use english by default.
% personal info.
\newcommand{\name}{%
\en{Dmitry Voronin}%
\ru{Дмитрий Воронин}
}
\newcommand{\location}{%
\en{St. Petersburg, Russia}%
\ru{Санкт-Петербург, Россия}
}
\newcommand{\birthday}{\jun 1998}
\newcommand{\email}{job@voronind.com}
\newcommand{\phone}{+7(905)836-68-86}

49
tex/i18n/Month.tex Normal file
View file

@ -0,0 +1,49 @@
% months.
\newcommand{\Jan}{%
\En{January}%
\Ru{Январь}
}
\newcommand{\Feb}{%
\En{February}%
\Ru{Февраль}
}
\newcommand{\Mar}{%
\En{March}%
\Ru{Март}
}
\newcommand{\Apr}{%
\En{April}%
\Ru{Апрель}
}
\newcommand{\May}{%
\En{May}%
\Ru{Май}
}
\newcommand{\Jun}{%
\En{June}%
\Ru{Июнь}
}
\newcommand{\Jul}{%
\En{July}%
\Ru{Июль}
}
\newcommand{\Aug}{%
\En{August}%
\Ru{Август}
}
\newcommand{\Sep}{%
\En{September}%
\Ru{Сентябрь}
}
\newcommand{\Oct}{%
\En{October}%
\Ru{Октябрь}
}
\newcommand{\Nov}{%
\En{November}%
\Ru{Ноябрь}
}
\newcommand{\Dec}{%
\En{December}%
\Ru{Декабрь}
}

View file

@ -1,49 +0,0 @@
% months.
\newcommand{\jan}{%
\en{January}%
\ru{Январь}
}
\newcommand{\feb}{%
\en{February}%
\ru{Февраль}
}
\newcommand{\mar}{%
\en{March}%
\ru{Март}
}
\newcommand{\apr}{%
\en{April}%
\ru{Апрель}
}
\newcommand{\may}{%
\en{May}%
\ru{Май}
}
\newcommand{\jun}{%
\en{June}%
\ru{Июнь}
}
\newcommand{\jul}{%
\en{July}%
\ru{Июль}
}
\newcommand{\aug}{%
\en{August}%
\ru{Август}
}
\newcommand{\sep}{%
\en{September}%
\ru{Сентябрь}
}
\newcommand{\oct}{%
\en{October}%
\ru{Октябрь}
}
\newcommand{\nov}{%
\en{November}%
\ru{Ноябрь}
}
\newcommand{\dec}{%
\en{December}%
\ru{Декабрь}
}

View file

@ -1,68 +0,0 @@
\documentclass{article} % basic document class (template).
\usepackage[T2A,T1]{fontenc} % specify font encodings.
\usepackage[utf8]{inputenc} % specify input file encodings.
\usepackage[bidi=default]{babel} % use babel for i18n.
\usepackage{graphicx} % image support.
\usepackage{xcolor} % colored text support.
\usepackage{montserrat} % custom font.
\usepackage{hyperref} % hyperlinks.
\usepackage{indentfirst} % auto indent for paragraphs.
\usepackage{luacode} % lua scripts support.
\usepackage{tcolorbox} % code blocks.
\usepackage{listofitems} % for loops.
\input{shell} % import shell support.
% configure geometry.
\usepackage[
a4paper,
left = 0.5in,
right = 0.5in,
top = 0.5in,
bottom = 0.5in
]{geometry}
% paragraph spacing.
\usepackage[
skip = 4pt,
indent = 20pt
]{parskip}
% configure hyperlinks.
\hypersetup{
linktocpage = true,
colorlinks = true,
hidelinks = true,
linktoc = all
}
% specify where images are stored.
\graphicspath{ {../image}{../build/image} }
\babelprovide[import]{russian} % add russian support.
\babelfont{rm}{montserrat} % use custom serif font for english.
\babelfont{sf}{montserrat} % use custom sans font for english.
\babelfont{tt}{montserrat} % use custom mono font for english.
\babelfont[russian]{rm}{montserrat} % use custom serif font for russian.
\babelfont[russian]{sf}{montserrat} % use custom sans font for russian.
\babelfont[russian]{tt}{montserrat} % use custom mono font for russian.
\begin{document}
\input{style} % import common styles.
\input{const} % import constant values.
\input{page} % import pages info.
\input{i18n/month} % import month values.
\input{view/radio} % import radio view.
\input{view/place} % import place view.
\input{page/title} % import title.
\input{page/experience} % import experience info.
\clearpage\noindent % INFO: temprorary page break.
\input{page/language} % import languages info.
\spar\noindent
\input{page/education} % import education info.
\spar\noindent
\input{page/skill} % import skills info.
\spar\noindent
\input{page/interest} % import interests info.
\end{document}

View file

@ -1,21 +0,0 @@
% this is used to create constant reference links within document.
\def\pexperience{%
\en{WORK EXPERIENCE}%
\ru{ОПЫТ РАБОТЫ}
}
\def\planguage{%
\en{LANGUAGES}%
\ru{ЯЗЫКИ}
}
\def\peducation{%
\en{EDUCATION}%
\ru{ОБРАЗОВАНИЕ}
}
\def\pskill{%
\en{SKILLS}%
\ru{НАВЫКИ}
}
\def\pinterest{%
\en{INTERESTS}%
\ru{ИНТЕРЕСЫ}
}

14
tex/page/Education.tex Normal file
View file

@ -0,0 +1,14 @@
\Title{\PageEducation}\newline
\Place{%
\En{South Ural State University}%
\Ru{Южно-Уральский Государственный Университет}
}{%
\Aug 2016 - \Aug 2021%
}{%
\En{Bachelor, Computer Science}%
\Ru{Бакалавр, ЭВМ}\newline
\En{Main goal in education was to learn how to find optimal solutions to real problems and how to work with electronics from their structure to interfaces. I learned how to code completely by myself. I'd actually say it came to me like an essential skill. After three years I continued as a part-study. Mainly because I personally thought I'd outgrown the study curve my university provided. That was not only my opinion, but opinions of certain professors I had luck to work with.}%
\Ru{Главной целью в образовании было обучение поиску оптимальных решений реальных проблем и работе с электроникой от её структуры до интерфейсов. Я научился писать код полностью самостоятельно. Точнее сказать, этот навык стал для меня естественным. После трёх лет очного обучения я продолжил обучение заочно. Основной причиной стало ощущение, что обучение в университете стало слишком медленным для меня. Это было не только моё мнение, но и мнения некоторых профессоров с которыми мне посчастливилось работать.}
}{%
susu.ru
}{;}

6
tex/page/Experience.tex Normal file
View file

@ -0,0 +1,6 @@
\Title{\PageExperience}\newline
\input{place/Foresight2}
\input{place/Foresight}
\input{place/Freelance}
\input{place/Intersvyaz}
\input{place/DaoEngineering}

41
tex/page/Interest.tex Normal file
View file

@ -0,0 +1,41 @@
\Title{\PageInterest}\Par\vspace{-4mm}\noindent
\begin{minipage}[t]{0.5\textwidth}
\Text{\Semibold{%
\En{Self-Hosting}%
\Ru{Self-Hosting}
}}\newline
\Text{\raggedright %
\En{Hardware, Linux Administration, Networking, Data protection, Web Apps, IoT.}%
\Ru{Оборудование, Администрирование Linux, Сети, Защита данных, Web-приложения, IoT.}
}\newline
\end{minipage}
\begin{minipage}[t]{0.5\textwidth}
\Text{\Semibold{%
\En{3D Modeling}%
\Ru{3D Моделирование}
}}\newline
\Text{\raggedright Blender.}\newline
\end{minipage}
\begin{minipage}[t]{0.5\textwidth}
\Text{\Semibold{%
\En{Music}%
\Ru{Музыка}
}}\newline
\Text{\raggedright %
\En{Guitar, Synth.}%
\Ru{Гитара, Синтезатор.}
}
\end{minipage}
\begin{minipage}[t]{0.5\textwidth}
\Text{\Semibold{%
\En{Cooking}%
\Ru{Готовка}
}}\newline
\Text{\raggedright %
\En{Asian kitchen, Desserts.}%
\Ru{Азиатская кухня, Десерты.}
}
\end{minipage}
\Parn\Parn
\Icon{IcNoSmoke}
\Icon{IcNoAlcohol}

28
tex/page/Language.tex Normal file
View file

@ -0,0 +1,28 @@
\Title{\PageLanguage}\Par\vspace{1mm}\noindent
\begin{minipage}{0.33\textwidth}
\Text{\Semibold{%
\En{Russian}%
\Ru{Русский}
}}\newline
\Text{%
\En{Native}%
\Ru{Родной}
}\newline
\Radio{5}
\end{minipage}
\begin{minipage}{0.33\textwidth}
\Text{\Semibold{%
\En{English}%
\Ru{Английский}
}}\newline
\Text{C1}\newline
\Radio{5}
\end{minipage}
\begin{minipage}{0.33\textwidth}
\Text{\Semibold{%
\En{French}
\Ru{Французский}
}}\newline
\Text{A2}\newline
\Radio{2}
\end{minipage}

31
tex/page/Skill.tex Normal file
View file

@ -0,0 +1,31 @@
\Title{\PageSkill}\Par\vspace{-4mm}\noindent
\begin{minipage}[t]{0.5\textwidth}
\Text{\Semibold{%
\En{Mobile Development}%
\Ru{Мобильная разработка}
}}\newline
\Radio{5}\newline
\Text{\raggedright Android, Kotlin, Kotlin Multiplatform (KMP), Java, MVP/MVVM, Coroutines, AndroidX, Compose, Dagger/Hilt, NDK, Material, Android TV, Android ROM, React Native, Android lib.}\newline
\end{minipage}
\begin{minipage}[t]{0.5\textwidth}
\Text{\Semibold{%
\En{Web Development}%
\Ru{Вэб разработка}
}}\newline
\Radio{3}\newline
\Text{\raggedright Rust, Go, HTML, CSS, JS (jQuery), Bootstrap, Java EE (Spring, Struts, Hibernate), PHP (Yii, Laravel), Nginx, Clojure, Python (Django), SQL.}\newline
\end{minipage}\newline
\begin{minipage}[t]{0.5\textwidth}
\Text{\Semibold{%
\En{General}%
\Ru{Общее}
}}\newline
\Text{\raggedright \En{Algorithms}\Ru{Алгоритмы}, \En{Data structures}\Ru{Структуры данных}, Linux (\En{daily since}\Ru{ежедневно с} 2014), Docker/Compose, Git, \En{Reverse engineering}\Ru{Реверс-инжиниринг} (IDA, JD-GUI), \En{Cryptography}\Ru{Криптография}.}
\end{minipage}
\begin{minipage}[t]{0.5\textwidth}
\Text{\Semibold{%
\En{Other}%
\Ru{Другое}
}}\newline
\Text{\raggedright \LaTeX,\ Nix, Neovim, Bash, C/C++, Lua, Swing, OpenJFX, OpenCV, dlib, Smali, CTF, GIMP, Blender.}
\end{minipage}

View file

@ -1,32 +1,32 @@
\hspace{-8mm}
\ifphoto
\ifPhoto
\begin{minipage}{0.2\textwidth}
\includegraphics[width=3cm]{photo} % photo.
\includegraphics[width=3cm]{Photo} % photo.
\end{minipage}
\fi
\begin{minipage}{0.8\textwidth}
% name with required fix for montserrat font.
% \hspace{-3mm}
\sname{\name}
\TextName{\Name}
\vspace{4mm}
\newline
% location.
\sicon{ic_location}
\stext{\location}
\Icon{IcLocation}
\Text{\Location}
\vspace{2mm}
\newline
% birthday, email & phone number.
\sicon{ic_cake}
\stext{\birthday}
\Icon{IcCake}
\Text{\Birthday}
\hspace{2mm}
\sicon{ic_email}
\stext{\href{mailto:\email}{\ \email}}
\Icon{IcEmail}
\Text{\href{mailto:\Email}{\ \Email}}
\hspace{2mm}
\sicon{ic_call}
\stext{\href{https://t.me/voronind_com}{Telegram}}
\Icon{IcCall}
\Text{\href{https://t.me/voronind\_com}{Telegram}}
\end{minipage}
% separator.
\hspace{-8mm}{%
\color{lgray}{\rule{\linewidth}{1pt}}
\color{ColorLgray}{\rule{\linewidth}{1pt}}
}

View file

@ -1,14 +0,0 @@
\stitle{\peducation}\newline
\place{%
\en{South Ural State University}%
\ru{Южно-Уральский Государственный Университет}
}{%
\aug 2016 - \aug 2021%
}{%
\en{Bachelor, Computer Science}%
\ru{Бакалавр, ЭВМ}\newline
\en{Main goal in education was to learn how to find optimal solutions to real problems and how to work with electronics from their structure to interfaces. I learned how to code completely by myself. I'd actually say it came to me like an essential skill. After three years I continued as a part-study. Mainly because I personally thought I'd outgrown the study curve my university provided. That was not only my opinion, but opinions of certain professors I had luck to work with.}%
\ru{Главной целью в образовании было обучение поиску оптимальных решений реальных проблем и работе с электроникой от её структуры до интерфейсов. Я научился писать код полностью самостоятельно. Точнее сказать, этот навык стал для меня естественным. После трёх лет очного обучения я продолжил обучение заочно. Основной причиной стало ощущение, что обучение в университете стало слишком медленным для меня. Это было не только моё мнение, но и мнения некоторых профессоров с которыми мне посчастливилось работать.}
}{%
susu.ru
}{;}

View file

@ -1,6 +0,0 @@
\stitle{\pexperience}\newline
\input{place/foresight2}
\input{place/foresight}
\input{place/freelance}
\input{place/intersvyaz}
\input{place/daoengineering}

View file

@ -1,41 +0,0 @@
\stitle{\pinterest}\spar\vspace{-4mm}\noindent
\begin{minipage}[t]{0.5\textwidth}
\stext{\ssemibold{%
\en{Self-Hosting}%
\ru{Self-Hosting}
}}\newline
\stext{\raggedright %
\en{Hardware, Linux Administration, Networking, Data protection, Web Apps, IoT.}%
\ru{Оборудование, Администрирование Linux, Сети, Защита данных, Web-приложения, IoT.}
}\newline
\end{minipage}
\begin{minipage}[t]{0.5\textwidth}
\stext{\ssemibold{%
\en{3D Modeling}%
\ru{3D Моделирование}
}}\newline
\stext{\raggedright Blender.}\newline
\end{minipage}
\begin{minipage}[t]{0.5\textwidth}
\stext{\ssemibold{%
\en{Music}%
\ru{Музыка}
}}\newline
\stext{\raggedright %
\en{Guitar, Synth.}%
\ru{Гитара, Синтезатор.}
}
\end{minipage}
\begin{minipage}[t]{0.5\textwidth}
\stext{\ssemibold{%
\en{Cooking}%
\ru{Готовка}
}}\newline
\stext{\raggedright %
\en{Asian kitchen, Desserts.}%
\ru{Азиатская кухня, Десерты.}
}
\end{minipage}
\sparn\sparn
\sicon{ic_no_smoke}
\sicon{ic_no_alcohol}

View file

@ -1,28 +0,0 @@
\stitle{\planguage}\spar\vspace{1mm}\noindent
\begin{minipage}{0.33\textwidth}
\stext{\ssemibold{%
\en{Russian}%
\ru{Русский}
}}\newline
\stext{%
\en{Native}%
\ru{Родной}
}\newline
\radio{5}
\end{minipage}
\begin{minipage}{0.33\textwidth}
\stext{\ssemibold{%
\en{English}%
\ru{Английский}
}}\newline
\stext{C1}\newline
\radio{5}
\end{minipage}
\begin{minipage}{0.33\textwidth}
\stext{\ssemibold{%
\en{French}
\ru{Французский}
}}\newline
\stext{A2}\newline
\radio{2}
\end{minipage}

View file

@ -1,31 +0,0 @@
\stitle{\pskill}\spar\vspace{-4mm}\noindent
\begin{minipage}[t]{0.5\textwidth}
\stext{\ssemibold{%
\en{Mobile Development}%
\ru{Мобильная разработка}
}}\newline
\radio{5}\newline
\stext{\raggedright Android, Kotlin, Kotlin Multiplatform (KMP), Java, MVP/MVVM, Coroutines, AndroidX, Compose, Dagger/Hilt, NDK, Material, Android TV, Android ROM, React Native, Android lib.}\newline
\end{minipage}
\begin{minipage}[t]{0.5\textwidth}
\stext{\ssemibold{%
\en{Web Development}%
\ru{Вэб разработка}
}}\newline
\radio{3}\newline
\stext{\raggedright Rust, Go, HTML, CSS, JS (jQuery), Bootstrap, Java EE (Spring, Struts, Hibernate), PHP (Yii, Laravel), Nginx, Clojure, Python (Django), SQL.}\newline
\end{minipage}\newline
\begin{minipage}[t]{0.5\textwidth}
\stext{\ssemibold{%
\en{General}%
\ru{Общее}
}}\newline
\stext{\raggedright \en{Algorithms}\ru{Алгоритмы}, \en{Data structures}\ru{Структуры данных}, Linux (\en{daily since}\ru{ежедневно с} 2014), Docker/Compose, Git, \en{Reverse engineering}\ru{Реверс-инжиниринг} (IDA, JD-GUI), \en{Cryptography}\ru{Криптография}.}
\end{minipage}
\begin{minipage}[t]{0.5\textwidth}
\stext{\ssemibold{%
\en{Other}%
\ru{Другое}
}}\newline
\stext{\raggedright \LaTeX,\ Nix, Neovim, Bash, C/C++, Lua, Swing, OpenJFX, OpenCV, dlib, Smali, CTF, GIMP, Blender.}
\end{minipage}

View file

@ -0,0 +1,16 @@
\Place{%
DAO Engineering
}{%
\Sep 2017 - \Jun 2018%
}{%
\En{Android Developer}%
\Ru{Андроид Разработчик}
}{%
}{%
\En{Mainly Android development, also worked with Java, NDK, OpenCV, dlib.}%
\Ru{Основное время - Android разработка. Также работал с Java, NDK, OpenCV, dlib.};%
\En{Implemented facial regnitions and image post-processing.}%
\Ru{Реализовал распознавание лиц и пост-обработку изображений.};%
\En{Gathered experience of intense development with Android framework, including non-trivial custom View elements.}%
\Ru{Получил опыт интенсивной разработки с использованием фреймворка Android, включая нетривиальные кастомные View.}
}

18
tex/place/Foresight.tex Normal file
View file

@ -0,0 +1,18 @@
\Place{%
\En{Foresight}%
\Ru{Форсайт}
}{%
\Oct 2019 - \Oct 2021%
}{%
\En{Android Developer}%
\Ru{Андроид Разработчик}
}{%
fsight.ru
}{%
\En{Supporting middleware library and developing applications with it.}%
\Ru{Поддержка middleware библиотеки и разработка с ней приложений.};%
\En{Interviewing people.}%
\Ru{Проведение интервью.};%
\En{Technical presentation of platform.}%
\Ru{Техническая презентация платформы.}
}

26
tex/place/Foresight2.tex Normal file
View file

@ -0,0 +1,26 @@
\Place{%
\En{Foresight}%
\Ru{Форсайт}
}{%
\Oct 2021 - {\En{Present}\Ru{Сейчас}}%
}{%
\En{Mobile Team Lead}%
\Ru{Ведущий мобильный разработчик}
}{%
fsight.ru
}{%
\En{Supporting middleware library and developing applications with it.}%
\Ru{Поддержка middleware библиотеки и разработка с ней приложений.};%
\En{Providing vector for mobile development outside of roadmap.}%
\Ru{Предоставление вектора мобильной разработки вне дорожной карты.};%
\En{Delivery management.}%
\Ru{Ответственный за доставку продукта.};%
\En{Adaptation of new personnel.}%
\Ru{Адаптация новых членов команды.};%
\En{Main code-review.}%
\Ru{Ответственный за code-review.};%
\En{Technical consulting.}%
\Ru{Техническая консультация.};%
\En{Workshop speaker.}%
\Ru{Ведущий мастер-классов.}
}

13
tex/place/Freelance.tex Normal file
View file

@ -0,0 +1,13 @@
\Place{%
\En{Freelance}%
\Ru{Фриланс}
}{%
\Feb 2019 - \Oct 2019%
}{%
\En{Freelance}%
\Ru{Фриланс}
}{%
}{%
\En{Made complete web and mobile applications, support chat bots for local business.}%
\Ru{Создание web и мобильных приложений, чат-ботов для местного бизнеса.}
}

20
tex/place/Intersvyaz.tex Normal file
View file

@ -0,0 +1,20 @@
\Place{%
\En{Intersvyaz, federal ISP}%
\Ru{Интерсвязь}
}{%
\Jun 2018 - \Feb 2019%
}{%
\En{Software Engineer}%
\Ru{Инженер ПО}
}{%
is74.ru
}{%
\En{Used to solve tasks of mobile and web development.}%
\Ru{Решение задач мобильной и web разработки.};%
\En{Gathered experience with customizing Android ROM and reverse engineering.}%
\Ru{Получил опыт кастомизации прошивок Android и реверс-инжиниринга.};%
\En{Created firmware for Amlogic TV boxes based on firmware from similar device. Fixed completely broken building system, debugged and fixed many system problems.}%
\Ru{Создал прошивку для проигрывателей Amlogic TV на основе прошивки похожего устройства. Восстановил полностью нерабочую систему сборки, отладил и исправил множество системных проблем.};%
\En{Recieved experience of collecting video playback stats, multitreading. Processed, stored and represented big amounts of data.}%
\Ru{Получил опыт сбора статистики воспроизведения видео и многопоточной обработки. Обработал, сохранил и отобразил большое количество данных.}
}

View file

@ -1,16 +0,0 @@
\place{%
DAO Engineering
}{%
\sep 2017 - \jun 2018%
}{%
\en{Android Developer}%
\ru{Андроид Разработчик}
}{%
}{%
\en{Mainly Android development, also worked with Java, NDK, OpenCV, dlib.}%
\ru{Основное время - Android разработка. Также работал с Java, NDK, OpenCV, dlib.};%
\en{Implemented facial regnitions and image post-processing.}%
\ru{Реализовал распознавание лиц и пост-обработку изображений.};%
\en{Gathered experience of intense development with Android framework, including non-trivial custom View elements.}%
\ru{Получил опыт интенсивной разработки с использованием фреймворка Android, включая нетривиальные кастомные View.}
}

View file

@ -1,18 +0,0 @@
\place{%
\en{Foresight}%
\ru{Форсайт}
}{%
\oct 2019 - \oct 2021%
}{%
\en{Android Developer}%
\ru{Андроид Разработчик}
}{%
fsight.ru
}{%
\en{Supporting middleware library and developing applications with it.}%
\ru{Поддержка middleware библиотеки и разработка с ней приложений.};%
\en{Interviewing people.}%
\ru{Проведение интервью.};%
\en{Technical presentation of platform.}%
\ru{Техническая презентация платформы.}
}

View file

@ -1,26 +0,0 @@
\place{%
\en{Foresight}%
\ru{Форсайт}
}{%
\oct 2021 - {\en{Present}\ru{Сейчас}}%
}{%
\en{Mobile Team Lead}%
\ru{Ведущий мобильный разработчик}
}{%
fsight.ru
}{%
\en{Supporting middleware library and developing applications with it.}%
\ru{Поддержка middleware библиотеки и разработка с ней приложений.};%
\en{Providing vector for mobile development outside of roadmap.}%
\ru{Предоставление вектора мобильной разработки вне дорожной карты.};%
\en{Delivery management.}%
\ru{Ответственный за доставку продукта.};%
\en{Adaptation of new personnel.}%
\ru{Адаптация новых членов команды.};%
\en{Main code-review.}%
\ru{Ответственный за code-review.};%
\en{Technical consulting.}%
\ru{Техническая консультация.};%
\en{Workshop speaker.}%
\ru{Ведущий мастер-классов.}
}

View file

@ -1,13 +0,0 @@
\place{%
\en{Freelance}%
\ru{Фриланс}
}{%
\feb 2019 - \oct 2019%
}{%
\en{Freelance}%
\ru{Фриланс}
}{%
}{%
\en{Made complete web and mobile applications, support chat bots for local business.}%
\ru{Создание web и мобильных приложений, чат-ботов для местного бизнеса.}
}

View file

@ -1,20 +0,0 @@
\place{%
\en{Intersvyaz, federal ISP}%
\ru{Интерсвязь}
}{%
\jun 2018 - \feb 2019%
}{%
\en{Software Engineer}%
\ru{Инженер ПО}
}{%
is74.ru
}{%
\en{Used to solve tasks of mobile and web development.}%
\ru{Решение задач мобильной и web разработки.};%
\en{Gathered experience with customizing Android ROM and reverse engineering.}%
\ru{Получил опыт кастомизации прошивок Android и реверс-инжиниринга.};%
\en{Created firmware for Amlogic TV boxes based on firmware from similar device. Fixed completely broken building system, debugged and fixed many system problems.}%
\ru{Создал прошивку для проигрывателей Amlogic TV на основе прошивки похожего устройства. Восстановил полностью нерабочую систему сборки, отладил и исправил множество системных проблем.};%
\en{Recieved experience of collecting video playback stats, multitreading. Processed, stored and represented big amounts of data.}%
\ru{Получил опыт сбора статистики воспроизведения видео и многопоточной обработки. Обработал, сохранил и отобразил большое количество данных.}
}

View file

@ -1,5 +0,0 @@
% \getenv[\HOME]{HOME} % example: store $HOME shell var into \HOME cmd.
\usepackage{catchfile}
\newcommand{\getenv}[2][]{%
\CatchFileEdef{\temp}{"|kpsewhich --var-value #2"}{\endlinechar=-1}%
\if\relax\detokenize{#1}\relax\temp\else\let#1\temp\fi}

View file

@ -1,65 +0,0 @@
% colors.
\getenv[\colormain]{RESUME_COLOR}
\definecolor{black}{RGB}{0,0,0}
\definecolor{white}{RGB}{255,255,255} % default white.
\definecolor{link} {RGB}{46,116,181} % web link.
\definecolor{main} {HTML}{\colormain} % main.
\definecolor{gray} {RGB}{127,127,127} % gray.
\definecolor{lgray}{RGB}{229,229,229} % light gray.
\definecolor{ref} {RGB}{53,82,105} % reference color.
\definecolor{code_background}{RGB}{40,42,54} % code background.
\definecolor{code_text} {RGB}{248,248,242} % code default text.
\definecolor{code_string} {RGB}{80,250,123} % code string colors like "hello world".
\definecolor{code_literal} {RGB}{139,233,253} % code literal colors like "8L".
\definecolor{code_property} {RGB}{139,233,253} % code properties like variables and methods.
\definecolor{code_keyword} {RGB}{255,184,108} % code keywords like "val", "fun" etc.
\definecolor{code_comment} {RGB}{98,114,164} % code comment colors like // todo.
% code block.
\newtcolorbox{scodebox}[1][]{
colback = code_background,
colframe = code_background,
fontupper = \ttfamily,
nobeforeafter
}
\newenvironment{scode}{\begin{scodebox}\catcode33=12\obeylines}{\end{scodebox}}
% styles.
\newcommand{\sreset} [1]{\fontsize{12}{12}\selectfont\rm\color{black}#1} % reset font style.
\newcommand{\spar} [0]{\par} % default paragraph break.
\newcommand{\sparn} [0]{\par\noindent} % default paragraph break without indent.
\newcommand{\stext} [1]{\sreset{#1}} % default text.
\newcommand{\sitallic} [1]{\textit{#1}} % itallic text.
\newcommand{\sbold} [1]{\textbf{#1}} % bold text.
\newcommand{\ssemibold} [1]{\fontseries{sb}{\selectfont{#1}}} % semi-bold text.
\newcommand{\sunderline}[1]{\underline{#1}} % underline text.
\newcommand{\slink} [2]{\href{#1}{\textcolor{link}{\sunderline{#2}}}} % link webpage.
\newcommand{\sname} [1]{\fontsize{21}{21}{\selectfont{\ssemibold{#1}}}} % name style.
\newcommand{\scolor} [2]{\textcolor{#1}{#2}} % text color alias.
\newcommand{\sicon} [1]{\raisebox{-1mm}{\includegraphics[height=5mm]{#1}}} % icons.
\newcommand{\shref} [1]{\hyperlink{#1}{\textcolor{link}{\sunderline{#1}}}} % reference section.
\newcommand{\sref} [1]{\textcolor{ref}{#1}} % reference text.
\newcommand{\slist} [1]{\textcolor{lgray}{#1}} % list numbers.
\newcommand{\sbullet} [0]{\raisebox{0.5mm}{\bullet}\hspace{4mm}} % list bullet symbol.
\newcommand{\stitle} [1]{\hypertarget{#1}{}\fontsize{11}{11}%
{\selectfont{\textcolor{main}{\ssemibold{#1}}}}} % section title.
\newcommand{\sblcompact}[0]{\renewcommand{\baselinestretch}{1.0}\normalsize} % compact baseline size.
\newcommand{\sbldefault}[0]{\renewcommand{\baselinestretch}{1.5}\normalsize} % default baseline size.
\newcommand{\scstring} [1]{\textcolor{code_string}{#1}} % color code string.
\newcommand{\scliteral} [1]{\textcolor{code_literal}{#1}} % color code literal.
\newcommand{\scproperty}[1]{\textcolor{code_property}{#1}} % color code property.
\newcommand{\sckeyword} [1]{\textcolor{code_keyword}{#1}} % color code keyword.
\newcommand{\sccomment} [1]{\textcolor{code_comment}{#1}} % color code comment.
\newcommand{\sjlink} [1]{\sicon{ic_link}\ \href{https://#1}{\sitallic{#1}}} % job webpage.
\newcommand{\sjplace}[2]{\sreset{\ssemibold{#1}}\sreset\hfill\fontsize%
{10}{10}\selectfont\textcolor{gray}{(#2)}} % job place.
% settings.
\linespread{1.5} % height between non-breaking lines.
\sloppy % correct word placement on newline.
\pagestyle{empty} % suppress default styles, i.e. page numbers.
\sbldefault % default baseline size.

11
tex/view/Place.tex Normal file
View file

@ -0,0 +1,11 @@
% Args: Company's name, period, position, url, tasks (separated by ;).
\newcommand{\Place}[5]{%
\noindent
\JPlace{#1}{#2}\newline
\Text{#3}\newline
\setsepchar{;}%
\ignoreemptyitems%
\readlist\Tasks{#5}%
\foreachitem\Task\in\Tasks{\Text{\TextList{\Bullet}\ \Task}\newline}
\def\PLink{#4}\ifx\PLink\empty{}\else{\JLink{#4}\Par}\fi
}

7
tex/view/Radio.tex Normal file
View file

@ -0,0 +1,7 @@
\newcommand{\Radio}[1]{%
\ifnum#1>0{\Icon{IcRadioChecked}}\else{\Icon{IcRadioUnchecked}}\fi
\ifnum#1>1{\Icon{IcRadioChecked}}\else{\Icon{IcRadioUnchecked}}\fi
\ifnum#1>2{\Icon{IcRadioChecked}}\else{\Icon{IcRadioUnchecked}}\fi
\ifnum#1>3{\Icon{IcRadioChecked}}\else{\Icon{IcRadioUnchecked}}\fi
\ifnum#1>4{\Icon{IcRadioChecked}}\else{\Icon{IcRadioUnchecked}}\fi
}

View file

@ -1,11 +0,0 @@
% args: company's name, period, position, url, tasks (separated by ;).
\newcommand{\place}[5]{%
\noindent
\sjplace{#1}{#2}\newline
\stext{#3}\newline
\setsepchar{;}%
\ignoreemptyitems%
\readlist\tasks{#5}%
\foreachitem\task\in\tasks{\stext{\slist{\sbullet}\ \task}\newline}
\def\plink{#4}\ifx\plink\empty{}\else{\sjlink{#4}\spar}\fi
}

View file

@ -1,7 +0,0 @@
\newcommand{\radio}[1]{%
\ifnum#1>0{\sicon{ic_radio_checked}}\else{\sicon{ic_radio_unchecked}}\fi
\ifnum#1>1{\sicon{ic_radio_checked}}\else{\sicon{ic_radio_unchecked}}\fi
\ifnum#1>2{\sicon{ic_radio_checked}}\else{\sicon{ic_radio_unchecked}}\fi
\ifnum#1>3{\sicon{ic_radio_checked}}\else{\sicon{ic_radio_unchecked}}\fi
\ifnum#1>4{\sicon{ic_radio_checked}}\else{\sicon{ic_radio_unchecked}}\fi
}