├── en.typ ├── ru.typ ├── cv.pdf ├── en.pdf ├── en.png ├── ru.pdf ├── Makefile ├── README.md ├── LICENSE ├── cv.typ ├── ru.yml ├── .gitignore └── en.yml /en.typ: -------------------------------------------------------------------------------- 1 | #import "cv.typ": cv 2 | 3 | #cv("en.yml") 4 | -------------------------------------------------------------------------------- /ru.typ: -------------------------------------------------------------------------------- 1 | #import "cv.typ": cv 2 | 3 | #cv("ru.yml") 4 | -------------------------------------------------------------------------------- /cv.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daxartio/cv/HEAD/cv.pdf -------------------------------------------------------------------------------- /en.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daxartio/cv/HEAD/en.pdf -------------------------------------------------------------------------------- /en.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daxartio/cv/HEAD/en.png -------------------------------------------------------------------------------- /ru.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/daxartio/cv/HEAD/ru.pdf -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | .DEFAULT_GOAL := generate 2 | 3 | .PHONY: generate 4 | generate: 5 | typst c ru.typ 6 | typst c en.typ 7 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # CV/Resume 2 | 3 | Programmatic generation of high-quality CVs. From YAML to PDF. 4 | 5 | ## Usage 6 | 7 | ```shell 8 | typst c en.typ 9 | ``` 10 | 11 | Built by [Typst](https://typst.app/) 12 | 13 | ## Example 14 | 15 | ![cv](en.png) 16 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2024 Danil Akhtarov 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /cv.typ: -------------------------------------------------------------------------------- 1 | #let cv( 2 | file, 3 | ) = [ 4 | #let content = yaml(file) 5 | 6 | #set document( 7 | title: (content.name + "'s CV"), 8 | author: content.name, 9 | ) 10 | #set page(numbering: "1",) 11 | #show heading: set text(font: "Linux Biolinum") 12 | 13 | 14 | #[ 15 | #set align(center) 16 | = CV 17 | ] 18 | 19 | == #content.name 20 | 21 | #grid( 22 | columns: (30%, 30%), 23 | column-gutter: 3em, 24 | [ 25 | #set list(marker: "") 26 | - #content.email 27 | #for address in content.address [ 28 | - #address 29 | ] 30 | ], 31 | [ 32 | #set list(marker: "") 33 | #for url in content.urls [ 34 | - #url 35 | ] 36 | ], 37 | ) 38 | 39 | #content.intro 40 | 41 | == #content.sections.skills 42 | 43 | #box(height: 60pt, 44 | columns(3, gutter: 11pt)[ 45 | #for skill in content.skills [ 46 | - #skill 47 | ] 48 | ] 49 | ) 50 | == #content.sections.experience 51 | 52 | #for experience in content.experience [ 53 | #grid( 54 | columns: (15%, auto), 55 | column-gutter: 1em, 56 | [ 57 | #experience.years 58 | ], 59 | [ 60 | *#experience.position* 61 | 62 | _ #experience.job _ / #experience.city 63 | 64 | #experience.summary 65 | ], 66 | ) 67 | ] 68 | 69 | == #content.sections.education 70 | 71 | #for education in content.education [ 72 | #grid( 73 | columns: (15%, auto), 74 | column-gutter: 1em, 75 | [ 76 | #education.years 77 | ], 78 | [ 79 | *#education.subject* 80 | 81 | _ #education.institute _ / #education.city 82 | ], 83 | ) 84 | ] 85 | 86 | == #content.sections.projects 87 | 88 | #for project in content.projects [ 89 | - *#project.name* 90 | 91 | #project.language / #project.repo 92 | 93 | _ #project.summary _ 94 | 95 | ] 96 | 97 | == #content.sections.conferences 98 | 99 | #for conference in content.conferences [ 100 | #grid( 101 | columns: (15%, auto), 102 | column-gutter: 1em, 103 | [ 104 | #conference.year 105 | ], 106 | [ 107 | *#conference.subject* 108 | ], 109 | ) 110 | ] 111 | 112 | == #content.sections.languages 113 | 114 | #for language in content.languages [ 115 | - #language.language (#language.proficiency) 116 | ] 117 | 118 | == #content.sections.certificates 119 | 120 | #for certificate in content.certificates [ 121 | #grid( 122 | columns: (15%, auto), 123 | column-gutter: 1em, 124 | [ 125 | #certificate.year 126 | ], 127 | [ 128 | *#certificate.name* 129 | 130 | #set text(10pt) 131 | 132 | #certificate.link 133 | ], 134 | ) 135 | ] 136 | ] 137 | -------------------------------------------------------------------------------- /ru.yml: -------------------------------------------------------------------------------- 1 | name: Ахтаров Данил 2 | address: 3 | - Удаленная работа 4 | email: daxartio@gmail.com 5 | urls: 6 | - github.com/daxartio 7 | - t.me/daxtar 8 | 9 | sections: 10 | skills: Навыки 11 | experience: Опыт работы 12 | education: Образование 13 | languages: Языки 14 | projects: Проекты 15 | conferences: Спикер на конференции 16 | certificates: Сертификаты 17 | 18 | intro: | 19 | Разработчик с опытом в web backend части больше 10 лет. Использую языки программирования: Python, Rust, Go. Есть большая экспертиза в system design нагруженных и распределённых систем. 20 | Внедряю практики разработки ПО в большие команды: внутренние библиотеки, шаблоны сервисов, CI/CD, тестирование кода. 21 | В последнее время занимал должности архитектора/тех лида/principal engineer. 22 | 23 | skills: 24 | - Rust 25 | - Python 26 | - Go 27 | - Kafka 28 | - Postgresql 29 | - DynamoDB 30 | - Clickhouse 31 | - Redis 32 | - AWS 33 | - TeamCity 34 | - GitLab CI 35 | - Github Actions 36 | 37 | experience: 38 | - years: 2024-now 39 | position: Senior Software Engineer 40 | job: Workato 41 | city: Remote 42 | summary: | 43 | Языки: Rust, Python 44 | Технологии: Poem, AWS, Github Actions 45 | - years: 2024-2024 46 | position: Программист 47 | job: Playrix 48 | city: Remote 49 | summary: | 50 | Языки: Go, Python 51 | Технологии: REST, AWS, DynamoDB, SQS, Redis, Postgresql 52 | Разработка и поддержка backend сервисов для игр. 53 | Playrix — международный разработчик мобильных игр со штаб-квартирой в Дублине, Ирландия. Имеет больше 100 млн пользователей. 54 | - years: 2019—2023 55 | position: Архитектор/Программист/Python Core Lead 56 | job: Желтый банк 57 | city: Санкт-Петербург 58 | summary: | 59 | Языки: Python, Go, Rust 60 | Технологии: REST, gRPC, Kafka (avro), Redis, Postgresql, FastAPI, Sqlalchemy 61 | Описание: Проектировал микросервисы, ориентированные на высокую производительность и доступность. Создавал инструменты для разработки. 62 | - years: 2017—2019 63 | position: Программист 64 | job: Уральский Центр Систем Безопасности 65 | city: Екатеринбург 66 | summary: | 67 | Языки: Python, Go, Typescript 68 | Технологии: REST, RabbitMQ (json), aiohttp, sqlalchemy, ... 69 | Описание: Разрабатывал систему безопасности для промышленных предприятий. Разрабатывал интеграции с различными низкоуровневыми системами. 70 | - years: 2016—2017 71 | position: Программист 72 | job: Bodysite 73 | city: Екатеринбург 74 | summary: | 75 | Языки: PHP, Typescript, Javascript 76 | Разработка и поддержка плагинов для e-commerce 77 | 78 | projects: 79 | - name: sportorg 80 | language: Python 81 | summary: | 82 | Программа для организации спортивных соревнований по ориентированию, рогейну и тп. 83 | Используется в нескольких странах СНГ и с помощью нее проводили соревнования Кубка Мира и Чемпионата Европы 84 | repo: github.com/sportorg/pysport 85 | - name: kdbx 86 | language: Rust 87 | summary: | 88 | Консольная утилита для работы с паролями KeePass. 89 | repo: github.com/daxartio/kdbx 90 | - name: taskline 91 | language: Rust 92 | summary: | 93 | Библиотека для выполнения задач по расписанию. Celery на минималках, но на Rust 94 | repo: github.com/daxartio/taskline 95 | 96 | conferences: 97 | - year: 2025 98 | subject: Podlodka PythonCrew (Python + Rust) 99 | - year: 2023 100 | subject: PiterPy (Python + Rust) 101 | - year: 2022 102 | subject: PiterPy 103 | - year: 2022 104 | subject: PyCon Weekend Russia (Функциональное программирование) 105 | - year: 2021 106 | subject: PyCon Russia 107 | 108 | education: 109 | - years: 2013—2017 110 | subject: Инфокоммуникационные технологии и системы связи (бакалавр) 111 | institute: Уральский Федеральный Университет 112 | city: Екатеринбург 113 | 114 | languages: 115 | - language: Russian 116 | proficiency: native 117 | - language: English 118 | proficiency: intermediate 119 | 120 | certificates: 121 | - name: Podlodka PythonCrew (Python + Rust) 122 | year: 2025 123 | link: https://certificate.podlodka.io/python4/ru/pdldke5914478d228ff6269fd42e538555f3c.png 124 | - name: "DevOps: Kubernetes, Terraform, CI/CD, Helm" 125 | year: 2023 126 | link: https://edu.slurm.io/certificate/ffec3261-8317-4825-bcde-d9f4b1883b01 127 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ## Core latex/pdflatex auxiliary files: 2 | *.aux 3 | *.lof 4 | *.log 5 | *.lot 6 | *.fls 7 | *.out 8 | *.toc 9 | *.fmt 10 | *.fot 11 | *.cb 12 | *.cb2 13 | .*.lb 14 | 15 | ## Intermediate documents: 16 | *.dvi 17 | *.xdv 18 | *-converted-to.* 19 | # these rules might exclude image files for figures etc. 20 | # *.ps 21 | # *.eps 22 | # *.pdf 23 | 24 | ## Generated if empty string is given at "Please type another file name for output:" 25 | .pdf 26 | 27 | ## Bibliography auxiliary files (bibtex/biblatex/biber): 28 | *.bbl 29 | *.bcf 30 | *.blg 31 | *-blx.aux 32 | *-blx.bib 33 | *.run.xml 34 | 35 | ## Build tool auxiliary files: 36 | *.fdb_latexmk 37 | *.synctex 38 | *.synctex(busy) 39 | *.synctex.gz 40 | *.synctex.gz(busy) 41 | *.pdfsync 42 | 43 | ## Build tool directories for auxiliary files 44 | # latexrun 45 | latex.out/ 46 | 47 | ## Auxiliary and intermediate files from other packages: 48 | # algorithms 49 | *.alg 50 | *.loa 51 | 52 | # achemso 53 | acs-*.bib 54 | 55 | # amsthm 56 | *.thm 57 | 58 | # beamer 59 | *.nav 60 | *.pre 61 | *.snm 62 | *.vrb 63 | 64 | # changes 65 | *.soc 66 | 67 | # comment 68 | *.cut 69 | 70 | # cprotect 71 | *.cpt 72 | 73 | # elsarticle (documentclass of Elsevier journals) 74 | *.spl 75 | 76 | # endnotes 77 | *.ent 78 | 79 | # fixme 80 | *.lox 81 | 82 | # feynmf/feynmp 83 | *.mf 84 | *.mp 85 | *.t[1-9] 86 | *.t[1-9][0-9] 87 | *.tfm 88 | 89 | #(r)(e)ledmac/(r)(e)ledpar 90 | *.end 91 | *.?end 92 | *.[1-9] 93 | *.[1-9][0-9] 94 | *.[1-9][0-9][0-9] 95 | *.[1-9]R 96 | *.[1-9][0-9]R 97 | *.[1-9][0-9][0-9]R 98 | *.eledsec[1-9] 99 | *.eledsec[1-9]R 100 | *.eledsec[1-9][0-9] 101 | *.eledsec[1-9][0-9]R 102 | *.eledsec[1-9][0-9][0-9] 103 | *.eledsec[1-9][0-9][0-9]R 104 | 105 | # glossaries 106 | *.acn 107 | *.acr 108 | *.glg 109 | *.glo 110 | *.gls 111 | *.glsdefs 112 | *.lzo 113 | *.lzs 114 | *.slg 115 | *.slo 116 | *.sls 117 | 118 | # uncomment this for glossaries-extra (will ignore makeindex's style files!) 119 | # *.ist 120 | 121 | # gnuplot 122 | *.gnuplot 123 | *.table 124 | 125 | # gnuplottex 126 | *-gnuplottex-* 127 | 128 | # gregoriotex 129 | *.gaux 130 | *.glog 131 | *.gtex 132 | 133 | # htlatex 134 | *.4ct 135 | *.4tc 136 | *.idv 137 | *.lg 138 | *.trc 139 | *.xref 140 | 141 | # hyperref 142 | *.brf 143 | 144 | # knitr 145 | *-concordance.tex 146 | # TODO Uncomment the next line if you use knitr and want to ignore its generated tikz files 147 | # *.tikz 148 | *-tikzDictionary 149 | 150 | # listings 151 | *.lol 152 | 153 | # luatexja-ruby 154 | *.ltjruby 155 | 156 | # makeidx 157 | *.idx 158 | *.ilg 159 | *.ind 160 | 161 | # minitoc 162 | *.maf 163 | *.mlf 164 | *.mlt 165 | *.mtc[0-9]* 166 | *.slf[0-9]* 167 | *.slt[0-9]* 168 | *.stc[0-9]* 169 | 170 | # minted 171 | _minted* 172 | *.pyg 173 | 174 | # morewrites 175 | *.mw 176 | 177 | # newpax 178 | *.newpax 179 | 180 | # nomencl 181 | *.nlg 182 | *.nlo 183 | *.nls 184 | 185 | # pax 186 | *.pax 187 | 188 | # pdfpcnotes 189 | *.pdfpc 190 | 191 | # sagetex 192 | *.sagetex.sage 193 | *.sagetex.py 194 | *.sagetex.scmd 195 | 196 | # scrwfile 197 | *.wrt 198 | 199 | # svg 200 | svg-inkscape/ 201 | 202 | # sympy 203 | *.sout 204 | *.sympy 205 | sympy-plots-for-*.tex/ 206 | 207 | # pdfcomment 208 | *.upa 209 | *.upb 210 | 211 | # pythontex 212 | *.pytxcode 213 | pythontex-files-*/ 214 | 215 | # tcolorbox 216 | *.listing 217 | 218 | # thmtools 219 | *.loe 220 | 221 | # TikZ & PGF 222 | *.dpth 223 | *.md5 224 | *.auxlock 225 | 226 | # titletoc 227 | *.ptc 228 | 229 | # todonotes 230 | *.tdo 231 | 232 | # vhistory 233 | *.hst 234 | *.ver 235 | 236 | # easy-todo 237 | *.lod 238 | 239 | # xcolor 240 | *.xcp 241 | 242 | # xmpincl 243 | *.xmpi 244 | 245 | # xindy 246 | *.xdy 247 | 248 | # xypic precompiled matrices and outlines 249 | *.xyc 250 | *.xyd 251 | 252 | # endfloat 253 | *.ttt 254 | *.fff 255 | 256 | # Latexian 257 | TSWLatexianTemp* 258 | 259 | ## Editors: 260 | # WinEdt 261 | *.bak 262 | *.sav 263 | 264 | # Texpad 265 | .texpadtmp 266 | 267 | # LyX 268 | *.lyx~ 269 | 270 | # Kile 271 | *.backup 272 | 273 | # gummi 274 | .*.swp 275 | 276 | # KBibTeX 277 | *~[0-9]* 278 | 279 | # TeXnicCenter 280 | *.tps 281 | 282 | # auto folder when using emacs and auctex 283 | ./auto/* 284 | *.el 285 | 286 | # expex forward references with \gathertags 287 | *-tags.tex 288 | 289 | # standalone packages 290 | *.sta 291 | 292 | # Makeindex log files 293 | *.lpz 294 | 295 | # xwatermark package 296 | *.xwm 297 | 298 | # REVTeX puts footnotes in the bibliography by default, unless the nofootinbib 299 | # option is specified. Footnotes are the stored in a file with suffix Notes.bib. 300 | # Uncomment the next line to have this generated file ignored. 301 | #*Notes.bib 302 | 303 | cv.yml 304 | template.pdf 305 | -------------------------------------------------------------------------------- /en.yml: -------------------------------------------------------------------------------- 1 | name: Danil Akhtarov 2 | address: 3 | - Remote 4 | email: daxartio@gmail.com 5 | urls: 6 | - github.com/daxartio 7 | - t.me/daxtar 8 | 9 | sections: 10 | skills: Skills 11 | experience: Work Experience 12 | education: Education 13 | languages: Languages 14 | projects: Projects 15 | conferences: Conferences (speaker) 16 | certificates: Certificates 17 | 18 | intro: | 19 | A developer with over 10 years of experience in web backend development. I use programming languages such as Python, Rust, and Go. I have extensive expertise in the system design of high-load and distributed systems. I implement software development practices in large teams, including internal libraries, service templates, CI/CD, and code testing. Recently, 20 | I have held positions such as architect, tech lead, and principal engineer. 21 | 22 | skills: 23 | - Rust 24 | - Python 25 | - Go 26 | - Kafka 27 | - Postgresql 28 | - DynamoDB 29 | - Clickhouse 30 | - Redis 31 | - AWS 32 | - TeamCity 33 | - GitLab CI 34 | - Github Actions 35 | 36 | experience: 37 | - years: 2024-now 38 | position: Senior Software Engineer 39 | job: Workato 40 | city: Remote 41 | summary: | 42 | Languages: Rust, Python 43 | Technologies: Poem, AWS, Github Actions 44 | - years: 2024-2024 45 | position: Principal Software Engineer 46 | job: Playrix 47 | city: Remote 48 | summary: | 49 | Languages: Go, Python 50 | Technologies: REST, FastAPI, Sqlalchemy, AWS, DynamoDB, Postgresql, Redis 51 | Summary: Microservices, AWS. Playrix is a developer of free-to-play mobile games behind titles such as Township, Fishdom, Homescapes, and Gardenscapes. 52 | - years: 2019—2023 53 | position: Software Architect/Software Engineer/Python Core Lead 54 | job: Tinkoff.ru 55 | city: Saint Petersburg, Remote 56 | summary: | 57 | Languages: Python, Go, Rust 58 | Technologies: REST, gRPC, Kafka (avro), Postgresql, Redis, FastAPI, Sqlalchemy 59 | Summary: According to Global Finance - Best Digital Bank Award 2020. We serve over 25 million users worldwide, employing a robust infrastructure with more than 100 microservices to handle over 100000 requests per second. Our focus on highload, high availability, and high performance ensures a seamless experience for our users. 60 | - years: 2017—2019 61 | position: Software Engineer 62 | job: USSC.ru 63 | city: Yekaterinburg 64 | summary: | 65 | Languages: Python, Go, Typescript 66 | Technologies: REST, RabbitMQ (json), aiohttp, sqlalchemy 67 | Summary: I developed a security system for factories, which involved creating numerous microservices. 68 | Additionally, I implemented various integrations with different systems. 69 | - years: 2016—2017 70 | position: Software Engineer 71 | job: Bodysite.ru 72 | city: Yekaterinburg 73 | summary: | 74 | Languages: PHP, Javascript, Typescript 75 | 76 | projects: 77 | - name: sportorg 78 | language: Python 79 | summary: | 80 | I have developed a program for organizing sports competitions in orienteering, rogaine, and related activities. 81 | This software has been utilized in multiple CIS countries and has facilitated the successful execution of events like the World Cup and European Championship competitions 82 | repo: github.com/sportorg/pysport 83 | - name: kdbx 84 | language: Rust 85 | summary: | 86 | A secure hole for your passwords (Keepass CLI) 87 | repo: github.com/daxartio/kdbx 88 | - name: taskline 89 | language: Rust 90 | summary: | 91 | This library enables the creation of scheduled tasks via Redis in Rust. It can be thought of as an analogue to Celery, but designed for Rust 92 | repo: github.com/daxartio/taskline 93 | 94 | conferences: 95 | - year: 2025 96 | subject: Podlodka PythonCrew (Python + Rust) 97 | - year: 2023 98 | subject: PiterPy (Python + Rust) 99 | - year: 2022 100 | subject: PiterPy 101 | - year: 2022 102 | subject: PyCon Weekend Russia (Functional programming) 103 | - year: 2021 104 | subject: PyCon Russia 105 | 106 | education: 107 | - years: 2013—2017 108 | subject: Infocommunication technologies and communication systems (bachelor) 109 | institute: Ural Federal University 110 | city: Yekaterinburg 111 | 112 | languages: 113 | - language: Russian 114 | proficiency: native 115 | - language: English 116 | proficiency: intermediate 117 | 118 | certificates: 119 | - name: Podlodka PythonCrew (Python + Rust) 120 | year: 2025 121 | link: https://certificate.podlodka.io/python4/en/pdldke5914478d228ff6269fd42e538555f3c.png 122 | - name: "DevOps: Kubernetes, Terraform, CI/CD, Helm" 123 | year: 2023 124 | link: https://edu.slurm.io/certificate/ffec3261-8317-4825-bcde-d9f4b1883b01 125 | --------------------------------------------------------------------------------