resume

Unnamed repository; edit this file 'description' to name the repository.
git clone git://git.mattfehrenbach.xyz/resume.git
Log | Files | Refs

commit 53f8563ad89ae8c5a4b3e8216ef88db8528a15f3
Author: MF <m.fehrenbach@pm.me>
Date:   Sat,  1 Aug 2020 22:00:49 +0100

Initial commit

Diffstat:
Aawesome-cv.cls | 610++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Afonts/FontAwesome.ttf | 0
Afonts/Roboto-Bold.ttf | 0
Afonts/Roboto-BoldItalic.ttf | 0
Afonts/Roboto-Italic.ttf | 0
Afonts/Roboto-Light.ttf | 0
Afonts/Roboto-LightItalic.ttf | 0
Afonts/Roboto-Medium.ttf | 0
Afonts/Roboto-MediumItalic.ttf | 0
Afonts/Roboto-Regular.ttf | 0
Afonts/Roboto-Thin.ttf | 0
Afonts/Roboto-ThinItalic.ttf | 0
Aresume.tex | 102+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aresume/education.tex | 17+++++++++++++++++
Aresume/experience.tex | 84+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aresume/projects.tex | 43+++++++++++++++++++++++++++++++++++++++++++
Aresume/skills.tex | 16++++++++++++++++
17 files changed, 872 insertions(+), 0 deletions(-)

diff --git a/awesome-cv.cls b/awesome-cv.cls @@ -0,0 +1,610 @@ +%% Start of file `awesome-cv.cls'. +% Awesome CV Class File +% +% This class has been downloaded from: +% https://github.com/posquit0/Awesome-CV +% +% Author: +% Claud D. Park <posquit0.bj@gmail.com> +% http://www.posquit0.com +% +% Notes: +% 1) This class file defines the structure and layout of the template file (cv.tex, resume.tex). +% 2) It has been written in such a way that under most circumstances you +% should not need to edit it. +% +% Class license: +% LPPL v1.3c (http://www.latex-project.org/lppl) +% + + +%------------------------------------------------------------------------------- +% Identification +%------------------------------------------------------------------------------- +\ProvidesClass{awesome-cv}[2017/02/05 v1.6.1 Awesome Curriculum Vitae Class] +\NeedsTeXFormat{LaTeX2e} + + +%------------------------------------------------------------------------------- +% Class options +% +% (need to be done before the external package loading, for example because +% we need \paperwidth, \paperheight and \@ptsize to be defined before loading +% geometry and fancyhdr) +%------------------------------------------------------------------------------- +% Options for draft or final +\DeclareOption{draft}{\setlength\overfullrule{5pt}} +\DeclareOption{final}{\setlength\overfullrule{0pt}} +% Inherit options of article +\DeclareOption*{% + \PassOptionsToClass{\CurrentOption}{article} +} +\ProcessOptions\relax +\LoadClass{article} + + +%------------------------------------------------------------------------------- +% 3rd party packages +%------------------------------------------------------------------------------- +% Needed to make fixed length table +\RequirePackage{array} +% Needed to handle list environment +\RequirePackage{enumitem} +% Needed to handle text alignment +\RequirePackage{ragged2e} +% Needed to configure page layout +\RequirePackage{geometry} +% Needed to make header & footer effeciently +\RequirePackage{fancyhdr} +% Needed to manage colors +\RequirePackage{xcolor} +% Needed to use \ifxetex-\else-\fi statement +\RequirePackage{ifxetex} +% Needed to use \if-\then-\else statement +\RequirePackage{xifthen} +% Needed to use a toolbox of programming tools +\RequirePackage{etoolbox} +% Needed to change line spacing in specific environment +\RequirePackage{setspace} +% Needed to manage fonts +\RequirePackage[quiet]{fontspec} +% To support LaTeX quoting style +\defaultfontfeatures{Ligatures=TeX} +% Needed to manage math fonts +\RequirePackage{unicode-math} +% Needed to use icons from font-awesome +% (https://github.com/posquit0/latex-fontawesome) +\RequirePackage{fontawesome} +\RequirePackage[default,opentype]{sourcesanspro} +% Needed for the photo ID +\RequirePackage[skins]{tcolorbox} +% Needed to deal a paragraphs +\RequirePackage{parskip} +% Needed to deal hyperlink +\RequirePackage[hidelinks,unicode]{hyperref} +\hypersetup{% + pdftitle={}, + pdfauthor={}, + pdfsubject={}, + pdfkeywords={} +} + + +%------------------------------------------------------------------------------- +% Configuration for directory locations +%------------------------------------------------------------------------------- +% Configure a directory location for fonts(default: 'fonts/') +\newcommand*{\fontdir}[1][fonts/]{\def\@fontdir{#1}} +\fontdir + + +%------------------------------------------------------------------------------- +% Configuration for layout +%------------------------------------------------------------------------------- +%% Page Layout +% Configure page margins with geometry +\geometry{left=2.0cm, top=1.5cm, right=2.0cm, bottom=2.0cm, footskip=.5cm, includehead} + +%% Header & Footer +% Set offset to each header and footer +\fancyhfoffset{0em} +% Remove head rule +\renewcommand{\headrulewidth}{0pt} +% Clear all header & footer fields +\fancyhf{} +% Enable if you want to make header or footer using fancyhdr +\pagestyle{fancy} + + +%------------------------------------------------------------------------------- +% Configuration for colors +%------------------------------------------------------------------------------- +% Gray-scale colors +\definecolor{white}{HTML}{FFFFFF} +\definecolor{black}{HTML}{000000} +\definecolor{darkgray}{HTML}{333333} +\definecolor{gray}{HTML}{5D5D5D} +\definecolor{lightgray}{HTML}{999999} +% Basic colors +\definecolor{green}{HTML}{C2E15F} +\definecolor{orange}{HTML}{FDA333} +\definecolor{purple}{HTML}{D3A4F9} +\definecolor{red}{HTML}{FB4485} +\definecolor{blue}{HTML}{6CE0F1} +% Text colors +\definecolor{darktext}{HTML}{414141} +\colorlet{text}{darkgray} +\colorlet{graytext}{gray} +\colorlet{lighttext}{lightgray} +% Awesome colors +\definecolor{awesome-emerald}{HTML}{00A388} +\definecolor{awesome-skyblue}{HTML}{0395DE} +\definecolor{awesome-red}{HTML}{DC3522} +\definecolor{awesome-pink}{HTML}{EF4089} +\definecolor{awesome-orange}{HTML}{FF6138} +\definecolor{awesome-nephritis}{HTML}{27AE60} +\definecolor{awesome-concrete}{HTML}{95A5A6} +\definecolor{awesome-darknight}{HTML}{131A28} +\colorlet{awesome}{awesome-red} + +% Boolean value to switch section color highlighting +\newbool{acvSectionColorHighlight} +\setbool{acvSectionColorHighlight}{true} + +% Awesome section color +\newcommand*{\sectioncolor}[1]{% + \ifbool{acvSectionColorHighlight}{{\color{awesome}#1}}{#1} +} + +%------------------------------------------------------------------------------- +% Configuration for fonts +%------------------------------------------------------------------------------- +% Set the FontAwesome font to be up-to-date. +\newfontfamily\FA[Path=\@fontdir]{FontAwesome} +% Set font for header (default is Roboto) +\newfontfamily\headerfont[ + Path=\@fontdir, + UprightFont=*-Regular, + ItalicFont=*-Italic, + BoldFont=*-Bold, + BoldItalicFont=*-BoldItalic, +]{Roboto} + +\newfontfamily\headerfontlight[ + Path=\@fontdir, + UprightFont=*-Thin, + ItalicFont=*-ThinItalic, + BoldFont=*-Medium, + BoldItalicFont=*-MediumItalic, +]{Roboto} + +\newcommand*{\footerfont}{\sourcesanspro} +\newcommand*{\bodyfont}{\sourcesanspro} +\newcommand*{\bodyfontlight}{\sourcesansprolight} + +%------------------------------------------------------------------------------- +% Configuration for styles +%------------------------------------------------------------------------------- +% Configure styles for each CV elements +% For fundamental structures +\newcommand*{\headerfirstnamestyle}[1]{{\fontsize{32pt}{1em}\headerfont\bfseries\color{text} #1}} +\newcommand*{\headerlastnamestyle}[1]{{\fontsize{32pt}{1em}\headerfont\bfseries\color{text} #1}} +\newcommand*{\headerpositionstyle}[1]{{\fontsize{7.6pt}{1em}\bodyfont\scshape\color{awesome} #1}} +\newcommand*{\headeraddressstyle}[1]{{\fontsize{8pt}{1em}\headerfont\itshape\color{lighttext} #1}} +\newcommand*{\headersocialstyle}[1]{{\fontsize{6.8pt}{1em}\headerfont\color{text} #1}} +\newcommand*{\headerquotestyle}[1]{{\fontsize{9pt}{1em}\bodyfont\itshape\color{darktext} #1}} +\newcommand*{\footerstyle}[1]{{\fontsize{8pt}{1em}\footerfont\scshape\color{lighttext} #1}} +\newcommand*{\sectionstyle}[1]{{\fontsize{16pt}{1em}\bodyfont\bfseries\color{text}\sectioncolor{#1}}} +\newcommand*{\subsectionstyle}[1]{{\fontsize{12pt}{1em}\bodyfont\scshape\textcolor{text}{#1}}} +\newcommand*{\paragraphstyle}{\fontsize{9pt}{1em}\bodyfontlight\upshape\color{text}} + +% For elements of entry +\newcommand*{\entrytitlestyle}[1]{{\fontsize{10pt}{1em}\bodyfont\bfseries\color{darktext} #1}} +\newcommand*{\entrypositionstyle}[1]{{\fontsize{8pt}{1em}\bodyfont\scshape\color{graytext} #1}} +\newcommand*{\entrydatestyle}[1]{{\fontsize{8pt}{1em}\bodyfontlight\slshape\color{graytext} #1}} +\newcommand*{\entrylocationstyle}[1]{{\fontsize{9pt}{1em}\bodyfontlight\slshape\color{awesome} #1}} +\newcommand*{\descriptionstyle}[1]{{\fontsize{9pt}{1em}\bodyfontlight\upshape\color{text} #1}} + +% For elements of subentry +\newcommand*{\subentrytitlestyle}[1]{{\fontsize{8pt}{1em}\bodyfont\mdseries\color{graytext} #1}} +\newcommand*{\subentrypositionstyle}[1]{{\fontsize{7pt}{1em}\bodyfont\scshape\color{graytext} #1}} +\newcommand*{\subentrydatestyle}[1]{{\fontsize{7pt}{1em}\bodyfontlight\slshape\color{graytext} #1}} +\newcommand*{\subentrylocationstyle}[1]{{\fontsize{7pt}{1em}\bodyfontlight\slshape\color{awesome} #1}} +\newcommand*{\subdescriptionstyle}[1]{{\fontsize{8pt}{1em}\bodyfontlight\upshape\color{text} #1}} + +% For elements of honor +\newcommand*{\honortitlestyle}[1]{{\fontsize{9pt}{1em}\bodyfont\color{graytext} #1}} +\newcommand*{\honorpositionstyle}[1]{{\fontsize{9pt}{1em}\bodyfont\bfseries\color{darktext} #1}} +\newcommand*{\honordatestyle}[1]{{\fontsize{9pt}{1em}\bodyfont\color{graytext} #1}} +\newcommand*{\honorlocationstyle}[1]{{\fontsize{9pt}{1em}\bodyfontlight\slshape\color{awesome} #1}} + +% For elements of skill +\newcommand*{\skilltypestyle}[1]{{\fontsize{10pt}{1em}\bodyfont\bfseries\color{darktext} #1}} +\newcommand*{\skillsetstyle}[1]{{\fontsize{9pt}{1em}\bodyfontlight\color{text} #1}} + + +%------------------------------------------------------------------------------- +% Commands for personal information +%------------------------------------------------------------------------------- +% Define photo ID +% Usage: \photo[circle|rectangle,edge|noedge,left|right]{<path-to-image>} +\newcommand{\photo}[2][circle,edge,left]{% + \def\@photo{#2} + \@for\tmp:=#1\do{% + \ifthenelse{\equal{\tmp}{circle} \or \equal{\tmp}{rectangle}}% + {\let\@photoshape\tmp}{}% + \ifthenelse{\equal{\tmp}{edge} \or \equal{\tmp}{noedge}}% + {\let\@photoedge\tmp}{}% + \ifthenelse{\equal{\tmp}{left} \or \equal{\tmp}{right}}% + {\let\@photoalign\tmp}{}% + }% +} +\def\@photoshape{circle} +\def\@photoedge{edge} +\def\@photoalign{left} + +% Define writer's name +% Usage: \name{<firstname>}{<lastname>} +% Usage: \firstname{<firstname>} +% Usage: \lastname{<lastname>} +% Usage: \familyname{<familyname>} +\newcommand*{\name}[2]{\def\@firstname{#1}\def\@lastname{#2}} +\newcommand*{\firstname}[1]{\def\@firstname{#1}} +\newcommand*{\lastname}[1]{\def\@lastname{#1}} +\newcommand*{\familyname}[1]{\def\@lastname{#1}} +\def\@familyname{\@lastname} + +% Define writer's address +% Usage: \address{<address>} +\newcommand*{\address}[1]{\def\@address{#1}} + +% Define writer's position +% Usage: \name{<position>} +\newcommand*{\position}[1]{\def\@position{#1}} + +% Defines writer's mobile (optional) +% Usage: \mobile{<mobile number>} +\newcommand*{\mobile}[1]{\def\@mobile{#1}} + +% Defines writer's email (optional) +% Usage: \email{<email adress>} +\newcommand*{\email}[1]{\def\@email{#1}} + +% Defines writer's homepage (optional) +% Usage: \homepage{<url>} +\newcommand*{\homepage}[1]{\def\@homepage{#1}} + +% Defines writer's github (optional) +% Usage: \github{<github-nick>} +\newcommand*{\github}[1]{\def\@github{#1}} + +% Defines writer's gitlab (optional) +% Usage: \gitlab{<gitlab-nick>} +\newcommand*{\gitlab}[1]{\def\@gitlab{#1}} + +% Defines writer's stackoverflow profile (optional) +% Usage: \stackoverflow{<so userid>}{<so username>} +% e.g.https://stackoverflow.com/users/123456/sam-smith +% would be \stackoverflow{123456}{sam-smith} +\newcommand*{\stackoverflow}[2]{\def\@stackoverflowid{#1}\def\@stackoverflowname{#2}} + +% Defines writer's linked-in (optional) +% Usage: \linkedin{<linked-in-nick>} +\newcommand*{\linkedin}[1]{\def\@linkedin{#1}} + +% Usage: \twitter{<twitter handle>} +\newcommand*{\twitter}[1]{\def\@twitter{#1}} + +% Defines writer's skype (optional) +% Usage: \skype{<skype account>} +\newcommand*{\skype}[1]{\def\@skype{#1}} + +% Defines writer's reddit (optional) +% Usage: \reddit{<reddit account>} +\newcommand*{\reddit}[1]{\def\@reddit{#1}} + +% Defines writer's xing (optional) +% Usage: \xing{<xing name>} +\newcommand*{\xing}[1]{\def\@xing{#1}} + +% Defines writer's twitter (optional) +% Defines writer's extra informations (optional) +% Usage: \extrainfo{<extra informations>} +\newcommand*{\extrainfo}[1]{\def\@extrainfo{#1}} + +% Defines writer's quote (optional) +% Usage: \quote{<quote>} +\renewcommand*{\quote}[1]{\def\@quote{#1}} + + +%------------------------------------------------------------------------------- +% Commands for extra +%------------------------------------------------------------------------------- +%% Define helper macros a user can change easily +% Header +\newcommand{\acvHeaderNameDelim}{\space} +\newcommand{\acvHeaderAfterNameSkip}{.4mm} +\newcommand{\acvHeaderAfterPositionSkip}{.4mm} +\newcommand{\acvHeaderAfterAddressSkip}{-.5mm} +\newcommand{\acvHeaderIconSep}{\space} +\newcommand{\acvHeaderSocialSep}{\quad\textbar\quad} +\newcommand{\acvHeaderAfterSocialSkip}{6mm} +\newcommand{\acvHeaderAfterQuoteSkip}{5mm} + +% Others +\newcommand{\acvSectionTopSkip}{3mm} +\newcommand{\acvSectionContentTopSkip}{2.5mm} + + +%------------------------------------------------------------------------------- +% Commands for utilities +%------------------------------------------------------------------------------- +% Use to align an element of tabular table +\newcolumntype{L}[1]{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{#1}} +\newcolumntype{C}[1]{>{\centering\let\newline\\\arraybackslash\hspace{0pt}}m{#1}} +\newcolumntype{R}[1]{>{\raggedleft\let\newline\\\arraybackslash\hspace{0pt}}m{#1}} + +% Use to draw horizontal line with specific thickness +\def\vhrulefill#1{\leavevmode\leaders\hrule\@height#1\hfill \kern\z@} + +% Use to execute conditional statements by checking empty string +\newcommand*{\ifempty}[3]{\ifthenelse{\isempty{#1}}{#2}{#3}} + + +%------------------------------------------------------------------------------- +% Commands for elements of CV structure +%------------------------------------------------------------------------------- +% Define a header for CV +% Usage: \makecvheader +\newcommand*{\makecvheader}[1][C]{% + \newcommand*{\drawphoto}{% + \ifthenelse{\isundefined{\@photo}}{}{% + \newlength{\photodim} + \ifthenelse{\equal{\@photoshape}{circle}}% + {\setlength{\photodim}{1.3cm}}% + {\setlength{\photodim}{1.8cm}}% + \ifthenelse{\equal{\@photoedge}{edge}}% + {\def\@photoborder{darkgray}}% + {\def\@photoborder{none}}% + \begin{tikzpicture}% + \node[\@photoshape, draw=\@photoborder, line width=0.3mm, inner sep=\photodim, fill overzoom image=\@photo] () {}; + \end{tikzpicture} + }% + } + \newlength{\headertextwidth} + \newlength{\headerphotowidth} + \ifthenelse{\isundefined{\@photo}}{ + \setlength{\headertextwidth}{\textwidth} + \setlength{\headerphotowidth}{0cm} + }{% + \setlength{\headertextwidth}{0.76\textwidth} + \setlength{\headerphotowidth}{0.24\textwidth} + }% + \begin{minipage}[c]{\headerphotowidth}% + \ifthenelse{\equal{\@photoalign}{left}}{\raggedright\drawphoto}{} + \end{minipage} + \begin{minipage}[c]{\headertextwidth} + \ifthenelse{\equal{#1}{L}}{\raggedright}{\ifthenelse{\equal{#1}{R}}{\raggedleft}{\centering}} + \headerfirstnamestyle{\@firstname}\headerlastnamestyle{{}\acvHeaderNameDelim\@lastname}% + \\[\acvHeaderAfterNameSkip]% + \ifthenelse{\isundefined{\@position}}{}{\headerpositionstyle{\@position\\[\acvHeaderAfterPositionSkip]}}% + \ifthenelse{\isundefined{\@address}}{}{\headeraddressstyle{\@address\\[\acvHeaderAfterAddressSkip]}}% + \headersocialstyle{% + \newbool{isstart}% + \setbool{isstart}{true}% + \ifthenelse{\isundefined{\@mobile}}% + {}% + {% + \faPhone\acvHeaderIconSep\@mobile% + \setbool{isstart}{false}% + }% + \ifthenelse{\isundefined{\@email}}% + {}% + {% + \ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}% + \href{mailto:\@email}{\faEnvelopeO\acvHeaderIconSep\@email}% + }% + \ifthenelse{\isundefined{\@homepage}}% + {}% + {% + \ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}% + \href{http://\@homepage}{\faHome\acvHeaderIconSep\@homepage}% + }% + \ifthenelse{\isundefined{\@github}}% + {}% + {% + \ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}% + \href{https://github.com/\@github}{\faGithub\acvHeaderIconSep\@github}% + }% + \ifthenelse{\isundefined{\@gitlab}}% + {}% + {% + \ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}% + \href{https://gitlab.com/\@gitlab}{\faGitlab\acvHeaderIconSep\@gitlab}% + }% + \ifthenelse{\isundefined{\@stackoverflowid}}% + {}% + {% + \ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}% + \href{https://stackoverflow.com/users/\@stackoverflowid}{\faStackOverflow\acvHeaderIconSep\@stackoverflowname}% + }% + \ifthenelse{\isundefined{\@linkedin}}% + {}% + {% + \ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}% + \href{https://www.linkedin.com/in/\@linkedin}{\faLinkedin\acvHeaderIconSep\@linkedin}% + }% + \ifthenelse{\isundefined{\@twitter}}% + {}% + {% + \ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}% + \href{https://twitter.com/\@twitter}{\faTwitter\acvHeaderIconSep\@twitter}% + }% + \ifthenelse{\isundefined{\@skype}}% + {}% + {% + \ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}% + \faSkype\acvHeaderIconSep\@skype% + }% + \ifthenelse{\isundefined{\@reddit}}% + {}% + {% + \ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}% + \href{https://www.reddit.com/user/\@reddit}{\faReddit\acvHeaderIconSep\@reddit}% + }% + \ifthenelse{\isundefined{\@xing}}% + {}% + {% + \ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}% + \href{https://www.xing.com/profile/\@xing}{\faXingSquare\acvHeaderIconSep\@xing} + }% + \ifthenelse{\isundefined{\@extrainfo}}% + {}% + {% + \ifbool{isstart}{\setbool{isstart}{false}}{\acvHeaderSocialSep}% + \@extrainfo% + }% + } \\[\acvHeaderAfterSocialSkip]% + \ifthenelse{\isundefined{\@quote}}% + {}% + {\headerquotestyle{\@quote\\}\vspace{\acvHeaderAfterQuoteSkip}}% + \end{minipage}% + \begin{minipage}[c]{\headerphotowidth}% + \ifthenelse{\equal{\@photoalign}{right}}{\raggedleft\drawphoto}{} + \end{minipage} +} + +% Define a footer for CV +% Usage: \makecvfooter{<left>}{<center>}{<right>} +\newcommand*{\makecvfooter}[3]{% + \fancyfoot{} + \fancyfoot[L]{\footerstyle{#1}} + \fancyfoot[C]{\footerstyle{#2}} + \fancyfoot[R]{\footerstyle{#3}} +} + +% Define a section for CV +% Usage: \cvsection{<section-title>} +\newcommand{\cvsection}[1]{% + \vspace{\acvSectionTopSkip} + \sectionstyle{#1} + \phantomsection + \color{gray}\vhrulefill{0.9pt} +} + +% Define a subsection for CV +% Usage: \cvsubsection{<subsection-title>} +\newcommand{\cvsubsection}[1]{% + \vspace{\acvSectionContentTopSkip} + \vspace{-3mm} + \subsectionstyle{#1} + \phantomsection +} + +% Define a paragraph for CV +\newenvironment{cvparagraph}{% + \vspace{\acvSectionContentTopSkip} + \vspace{-3mm} + \paragraphstyle +}{% + \par + \vspace{2mm} +} + +% Define an environment for cventry +\newenvironment{cventries}{% + \vspace{\acvSectionContentTopSkip} + \begin{center} +}{% + \end{center} +} +% Define an entry of cv information +% Usage: \cventry{<position>}{<title>}{<location>}{<date>}{<description>} +\newcommand*{\cventry}[5]{% + \vspace{-2.0mm} + \setlength\tabcolsep{0pt} + \setlength{\extrarowheight}{0pt} + \begin{tabular*}{\textwidth}{@{\extracolsep{\fill}} L{\textwidth - 4.5cm} R{4.5cm}} + \ifempty{#1#3#4} + {\entrytitlestyle{#2} \\ + \multicolumn{1}{L{\textwidth}}{\descriptionstyle{#5}}} + {\ifempty{#2#3} + {\entrypositionstyle{#1} & \entrydatestyle{#4} \\} + {\entrytitlestyle{#2} & \entrylocationstyle{#3} \\ + \entrypositionstyle{#1} & \entrydatestyle{#4} \\} + \multicolumn{2}{L{\textwidth}}{\descriptionstyle{#5}}} + \end{tabular*}% +} + +% Define an environment for cvsubentry +\newenvironment{cvsubentries}{% + \begin{center} +}{% + \end{center} +} +% Define a subentry of cv information +% Usage: \cvsubentry{<position>}{<title>}{<date>}{<description>} +\newcommand*{\cvsubentry}[4]{% + \setlength\tabcolsep{0pt} + \setlength{\extrarowheight}{0pt} + \begin{tabular*}{\textwidth}{@{\extracolsep{\fill}} L{\textwidth - 4.5cm} R{4.5cm}} + \setlength\leftskip{0.2cm} + \subentrytitlestyle{#2} & \ifthenelse{\equal{#1}{}} + {\subentrydatestyle{#3}}{} + \ifthenelse{\equal{#1}{}} + {} + {\subentrypositionstyle{#1} & \subentrydatestyle{#3} \\} + \ifthenelse{\equal{#4}{}} + {} + {\multicolumn{2}{L{17.0cm}}{\subdescriptionstyle{#4}} \\} + \end{tabular*} +} + +% Define an environment for cvhonor +\newenvironment{cvhonors}{% + \vspace{\acvSectionContentTopSkip} + \vspace{-2mm} + \begin{center} + \setlength\tabcolsep{0pt} + \setlength{\extrarowheight}{0pt} + \begin{tabular*}{\textwidth}{@{\extracolsep{\fill}} C{1.5cm} L{\textwidth - 4.0cm} R{2.5cm}} +}{% + \end{tabular*} + \end{center} +} +% Define a line of cv information(honor, award or something else) +% Usage: \cvhonor{<position>}{<title>}{<location>}{<date>} +\newcommand*{\cvhonor}[4]{% + \honordatestyle{#4} & \honorpositionstyle{#1}, \honortitlestyle{#2} & \honorlocationstyle{#3} \\ +} + +% Define an environment for cvskill +\newenvironment{cvskills}{% + \vspace{\acvSectionContentTopSkip} + \vspace{-2.0mm} + \begin{center} + \setlength\tabcolsep{1ex} + \setlength{\extrarowheight}{0pt} + \begin{tabular*}{\textwidth}{@{\extracolsep{\fill}} r L{\textwidth * \real{0.9}}} +}{% + \end{tabular*} + \end{center} +} +% Define a line of cv information(skill) +% Usage: \cvskill{<type>}{<skillset>} +\newcommand*{\cvskill}[2]{% + \skilltypestyle{#1} & \skillsetstyle{#2} \\ +} + +% Define an environment for cvitems(for cventry) +\newenvironment{cvitems}{% + \vspace{-4.0mm} + \begin{justify} + \begin{itemize}[leftmargin=2ex, nosep, noitemsep] + \setlength{\parskip}{0pt} + \renewcommand{\labelitemi}{\bullet} +}{% + \end{itemize} + \end{justify} + \vspace{-4.0mm} +} diff --git a/fonts/FontAwesome.ttf b/fonts/FontAwesome.ttf Binary files differ. diff --git a/fonts/Roboto-Bold.ttf b/fonts/Roboto-Bold.ttf Binary files differ. diff --git a/fonts/Roboto-BoldItalic.ttf b/fonts/Roboto-BoldItalic.ttf Binary files differ. diff --git a/fonts/Roboto-Italic.ttf b/fonts/Roboto-Italic.ttf Binary files differ. diff --git a/fonts/Roboto-Light.ttf b/fonts/Roboto-Light.ttf Binary files differ. diff --git a/fonts/Roboto-LightItalic.ttf b/fonts/Roboto-LightItalic.ttf Binary files differ. diff --git a/fonts/Roboto-Medium.ttf b/fonts/Roboto-Medium.ttf Binary files differ. diff --git a/fonts/Roboto-MediumItalic.ttf b/fonts/Roboto-MediumItalic.ttf Binary files differ. diff --git a/fonts/Roboto-Regular.ttf b/fonts/Roboto-Regular.ttf Binary files differ. diff --git a/fonts/Roboto-Thin.ttf b/fonts/Roboto-Thin.ttf Binary files differ. diff --git a/fonts/Roboto-ThinItalic.ttf b/fonts/Roboto-ThinItalic.ttf Binary files differ. diff --git a/resume.tex b/resume.tex @@ -0,0 +1,102 @@ +%!TEX TS-program = xelatex +%!TEX encoding = UTF-8 Unicode +% Awesome CV LaTeX Template for CV/Resume +% +% This template has been downloaded from: +% https://github.com/posquit0/Awesome-CV +% +% Original author: +% Claud D. Park <posquit0.bj@gmail.com> +% http://www.posquit0.com +% +% Modifications by: +% Junhao Dong <junhao.dong96@gmail.com> +% +% Template license: +% CC BY-SA 4.0 (https://creativecommons.org/licenses/by-sa/4.0/) +% + + +%------------------------------------------------------------------------------- +% CONFIGURATIONS +%------------------------------------------------------------------------------- +% A4 paper size by default, use 'letterpaper' for US letter +\documentclass[11pt, a4paper]{awesome-cv} + +% Configure page margins with geometry +\geometry{left=1.4cm, top=.8cm, right=1.4cm, bottom=1.8cm, footskip=.5cm} + +% Specify the location of the included fonts +\fontdir[fonts/] + +% Color for highlights +% Awesome Colors: awesome-emerald, awesome-skyblue, awesome-red, awesome-pink, awesome-orange +% awesome-nephritis, awesome-concrete, awesome-darknight +\colorlet{awesome}{awesome-orange} +% Uncomment if you would like to specify your own color +% \definecolor{awesome}{HTML}{CA63A8} + +% Colors for text +% Uncomment if you would like to specify your own color +% \definecolor{darktext}{HTML}{414141} +% \definecolor{text}{HTML}{333333} +% \definecolor{graytext}{HTML}{5D5D5D} +% \definecolor{lighttext}{HTML}{999999} + +% Set false if you don't want to highlight section with awesome color +\setbool{acvSectionColorHighlight}{true} + +% If you would like to change the social information separator from a pipe (|) to something else +\renewcommand{\acvHeaderSocialSep}{\quad\textbar\quad} + +\makeatletter +\patchcmd{\@sectioncolor}{\color}{\mdseries\color}{}{} +\makeatother + +%------------------------------------------------------------------------------- +% PERSONAL INFORMATION +% Comment any of the lines below if they are not required +%------------------------------------------------------------------------------- +% Available options: circle|rectangle,edge/noedge,left/right +% \photo[rectangle,edge,right]{profile} +\name{Matt}{Fehrenbach} +\position{DevOps \& Software Engineer} +\address{8a Avenues Court, Princes Avenue, Hull, HU5 3DJ} + +\mobile{07784 146016} +\email{m.fehrenbach@protonmail.com} +% \homepage{homepage} +%\github{junhaodong} +%\linkedin{junhaodong} +% \gitlab{gitlab-id} +% \stackoverflow{SO-id}{SO-name} +% \twitter{@twit} +% \skype{skype-id} +% \reddit{reddit-id} +% \extrainfo{extra informations} + +%------------------------------------------------------------------------------- +\begin{document} + +% Print the header with above personal informations +% Give optional argument to change alignment(C: center, L: left, R: right) +\makecvheader[C] + +% Print the footer with 3 arguments(<left>, <center>, <right>) +% Leave any of these blank if they are not needed +% \makecvfooter +% {\today} +% {Junhao Dong~~~·~~~Résumé} +% {\thepage} + +%------------------------------------------------------------------------------- +% CV/RESUME CONTENT +% Each section is imported separately, open each file in turn to modify content +%------------------------------------------------------------------------------- +\input{resume/education.tex} +\input{resume/skills.tex} +\input{resume/experience.tex} +\input{resume/projects.tex} + +%------------------------------------------------------------------------------- +\end{document} diff --git a/resume/education.tex b/resume/education.tex @@ -0,0 +1,16 @@ +\cvsection{Education} + +\begin{cventries} + \cventry + {Master of Science in Computer Science; First Class} % Degree + {University of Hull} % Institution + {Kingston upon Hull, United Kingdom} % Location + {Sep. 2015 -- May 2019} % Date(s) + { + \begin{cvitems} % Description(s) bullet points + % \item {\textbf{Member of Freeside}, free software club --- \entrydatestyle{2015/16}} + % \vspace{0.5mm} + % \item {\textbf{Aquincum Institute of Technology}, Budapest, Hungary --- \entrydatestyle{Semester Abroad Fall 2017}} + \end{cvitems} + } +\end{cventries}+ \ No newline at end of file diff --git a/resume/experience.tex b/resume/experience.tex @@ -0,0 +1,84 @@ +\cvsection{Experience} + +\begin{cventries} + \cventry + {Software Engineer / DevOps Engineer} % Job title + {APD Communications} % Organization + {Kingston upon Hull, United Kingdom} % Location + {Aug. 2019 -- Present} % Date(s) + { + \begin{cvitems} % Description(s) of tasks/responsibilities + \item {.NET framework contact management system used by emergency service operators. Worked on APIs and database tier that interacted with a desktop application presentation tier.} + \item {Using Gherkin via Specflow to perform behaviour-driven development as well as test-driven development, where all tests are run during continuous integration.} + \item {Using an Ubuntu Server virtual machine, I created a Team Foundation Server build agent which handled the continuous integration and publishing of Nuget packages via infrastructure as code.} + \item {Created and maintained various virtual machines to host databases and build agents.} + \item {Deployed a containerised web API with Docker in a Linux virtual machine.} + \end{cvitems} + } + + \cventry + {Web Developer (Part Time)} % Job title + {Atom Beer} % Organization + {Kingston upon Hull, United Kingdom} % Location + {Sep. 2018 -- May 2019} % Date(s) + { + \begin{cvitems} % Description(s) of tasks/responsibilities + \item {Developing client facing website using ASP.NET Core that implemented the Model-View-Controller pattern.} + \item {Used the Agile methodology Scrum as the development paradigm, as well as test driven development and pair programming.} + \end{cvitems} + } + + \cventry + {Laboratory Demonstrator} % Job title + {University of Hull} % Organization + {Kingston upon Hull, United Kingdom} % Location + {Sep. 2018 -- Dec. 2018} % Date(s) + { + \begin{cvitems} % Description(s) of tasks/responsibilities + %\item {Implemented a re-designed onboarding flow for new retailer customers, improving the onboarding process for account managers and customers with automated Salesforce integration.} + \item {Helped junior students with practical programming work.} + \item {Demonstrated punctuality and subject knowledge.} + \item {Developed team working and interpersonal skills working with fellow demonstrators.} + \end{cvitems} + } + + \cventry + {Consultant Internship} % Job title + {Medical Market Research Group} % Organization + {Guildford, United Kingdom} % Location + {Summer 2016} % Date(s) + { + \begin{cvitems} % Description(s) of tasks/responsibilities + \item {Developed software written in Visual Basic for Applications to process spreadsheets.} + \item {Independently programmed project.} + \item {Proactively got feedback both in person and over e-mail correspondence.} + \item {As a result reduced the process from hours to minutes and increased company productivity.} + %\item {Helped migrate the Instagram Django web server to perform parallel IO operations and handle concurrent requests within each worker process to reduce latency and increase capacity as the web framework scales with users, servers, and developers.} + %\item {Created a framework to safely predict the performance and correctness of server worker processes handling concurrent requests from a production environment. Preemptively caught and fixed regressions related to increased cpu instructions, caching, and global state contamination} + \end{cvitems} + } + + %\cventry + %{Software Engineer Intern} % Job title + %{Toast} % Organization + %{Boston, MA} % Location + %{Jan. 2017 - Aug. 2017} % Date(s) + %{ + % \begin{cvitems} % Description(s) of tasks/responsibilities + % \item {Built a microservice, database schema, and related web pages to manage customer accounts --- 50,000+ created within the first two months.} + % \item {Designed and helped implement a second microservice as a month-long architecture refactor to reduce technical debt and build the infrastructure for upcoming payment features.} + % \item {Enhanced the audit tool to query real-time data from restaurants' Android devices, proactively resolving customers' configuration bugs.} + % \end{cvitems} + %} + + %\cventry + % {Programming Mentor, TA} % Job title + % {CSTUY Hacking Sessions} % Organization + % {New York, NY} % Location + % {Sept. 2014 - Mar. 2015} % Date(s) + % { + % \begin{cvitems} % Description(s) of tasks/responsibilities + % \item {Taught programming concepts to high school students using Java and Processing while providing input for lesson plans and project ideas.} + % \end{cvitems} + % } +\end{cventries} diff --git a/resume/projects.tex b/resume/projects.tex @@ -0,0 +1,42 @@ +\cvsection{Projects} + +\begin{cventries} + \cventry + {} % Empty position + {Mod Organizer 2 archive packer} % Project + {} % Empty location + {} % Empty date + { + \begin{cvitems} % Description(s) bullet points + \item {Open source Qt5 plugin for the Mod Organizer 2 tool that packages files into archive format supported by Gamebryo and Creation Engine games.} + %\item {A command line interface based on the Unix Bash shell, written in C.} + %\item {Supports EOF (Ctrl-D) and SIGINT (Ctrl-C), multiple commands per line, and chained redirection and piping.} + \end{cvitems} + } + + \cventry + {} % Empty position + {Virtual machine project} % Project + {} % Empty location + {} % Empty date + { + \begin{cvitems} % Description(s) bullet points + \item {Wrote a JIT-compiler for a custom language in C\#.} + \item {Supported branches and loops in language, as well as breakpoints.} + %\item {Semifinalist out of 200 teams in MIT's international high school programming competition in C.} + %\item {Implemented 3D vector physics and game strategy for an autonomous satellite simulation using the ZR API.} + \end{cvitems} + } + + \cventry + {} % Empty position + {Virtual machine with hardware pass-through on Linux} % Project + {} % Empty location + {} % Empty date + { + \begin{cvitems} % Description(s) bullet points + \item {Created a Windows virtual machine with QEMU/KVM.} + \item {Enabled PCI device hardware pass-through by loading kernel modules, resulting in better performance in GPU accelerated tasks.} + \end{cvitems} + } +\end{cventries}+ \ No newline at end of file diff --git a/resume/skills.tex b/resume/skills.tex @@ -0,0 +1,16 @@ +\cvsection{Technical Strengths} + +\begin{cvskills} + \cvskill + {Languages} % Type + {C\#, C/C++, CMake, Bash, JavaScript, SQL} % Skillset + + \cvskill + {Tools} % Type + {Azure DevOps, Docker, Git, Hyper-V, IIS, \textrm{\LaTeX}} % Skillset + + \cvskill + {Databases} % Type + {Microsoft SQL Server, SQLite} % Skillset + +\end{cvskills}