Compare commits
10 Commits
dd3860a290
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
55435afe04 | ||
|
|
72801f59bb | ||
|
|
7ec6b46e81 | ||
|
|
5d5baeed34 | ||
|
|
61dec42d7d | ||
|
|
2d65a10504 | ||
|
|
b7a58e1da7 | ||
|
|
3ea2428ecd | ||
|
|
c4eee2e2c5 | ||
|
|
78b60ef367 |
14
README.md
Normal file
14
README.md
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
# Resume
|
||||||
|
|
||||||
|
This is my resume, now written almost entirely by myself, not using a template.
|
||||||
|
|
||||||
|
This is written in what I think is a pretty interesting style, using a yaml file to generate all of the actual details and settings. This approach makes things very easily customizable, since the latex file doesn't even need to be modified, simply change the yaml.
|
||||||
|
|
||||||
|
## Build Instructions
|
||||||
|
Also, this document includes a makefile so building is very easy. Simply run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
make
|
||||||
|
```
|
||||||
|
|
||||||
|
With pandoc and LaTeX installed to generate a file `output.pdf`.
|
||||||
4
colors.yaml
Normal file
4
colors.yaml
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
primary: "a0a19f"
|
||||||
|
secondary: "ffffff"
|
||||||
|
tertiary: "a08069"
|
||||||
|
text: "000000"
|
||||||
144
details.yml
Normal file
144
details.yml
Normal file
@@ -0,0 +1,144 @@
|
|||||||
|
---
|
||||||
|
# Personal details
|
||||||
|
name:
|
||||||
|
- Richard
|
||||||
|
- Connor
|
||||||
|
- Johnstone
|
||||||
|
address: 4805 Devonshire St, Boulder, CO
|
||||||
|
phone: "1 (502) 414-1242"
|
||||||
|
links:
|
||||||
|
- link: mailto:connor@richardconnorjohnstone.com
|
||||||
|
display: connor@richardconnorjohnstone.com
|
||||||
|
icon: "\\faEnvelope"
|
||||||
|
- link: http://www.rconnorjohnstone.com
|
||||||
|
display: rconnorjohnstone.com
|
||||||
|
icon: "\\faGlobe"
|
||||||
|
- link: http://www.github.com/rconnorjohnstone
|
||||||
|
display: rconnorjohnstone
|
||||||
|
icon: "\\faGithub"
|
||||||
|
- link: http://www.linkedin.com/rconnorjohnstone
|
||||||
|
display: rconnorjohnstone
|
||||||
|
icon: "\\faLinkedin"
|
||||||
|
# Sections
|
||||||
|
profile: Currently employed as an Aerospace Systems Engineer at Palski and Associates while earning a Master's in Aerospace Engineering, with a focus in Astrodynamics from the University of Colorado -- Boulder.
|
||||||
|
|
||||||
|
skills:
|
||||||
|
- skill: General Programming
|
||||||
|
info: Both high and low level languages in a variety of different styles, including functional and object-oriented
|
||||||
|
- skill: Web Development
|
||||||
|
info: Full stack web development (frontend, backend, database, some dev-ops) through career and personal projects
|
||||||
|
- skill: Astrodynamics
|
||||||
|
info: Experience writing software for a variety of satellite estimation applications, including Statistical Orbit Determination using Kalman Filters, batch estimators in standard \`\`range and angles\'\' (Lambert's) systems as well as \`\`three angles\'\' (Gauss, Gooding's).
|
||||||
|
- skill: Trajectory Optimization
|
||||||
|
info: Academic experience in optimizing trajectories for both low- and impulsive-thrust systems, utilizing gravity-assists
|
||||||
|
- skill: Attitude Control
|
||||||
|
info: Knowledge and applcation of attitude kinematics and controls using Lyapunov control theory
|
||||||
|
|
||||||
|
experience:
|
||||||
|
- employer: Palski and Associates
|
||||||
|
title: Associate Systems Engineer
|
||||||
|
city: Colorado Springs, CO
|
||||||
|
description: Maintained and improved both front and back end of a web application, written in Angular and deployed through AWS, that provides satellite commanding simulations for the US Air Force in conjunction with an educational training program designed to train upcoming satellite operators. Also spent several months working on a development initiative to leverage hardware and computer-vision tools to create a realistic laboratory simulation of common rendesvous and proximity satellite operations using a 1/32 scale model of an operational satellite as well as several months developing the tools to perform satellite observations and orbit determination using imagery generated from our in-house telescope.
|
||||||
|
show_dates: False
|
||||||
|
dates: May 2019 - Present
|
||||||
|
- employer: Lockheed Martin
|
||||||
|
title: Mechanical Design Engineer II
|
||||||
|
city: Lexington, KY
|
||||||
|
description: Performed product design and redesign for several important armoring subsystems of the GMV 1.1 military vehicle, including cost reduction, weight reduction, and armor performance improvements on the vehicle chassis and outer shell. Typically performed rapid brainstorming and turn-around time to provide support for Special Operations in the US Army.
|
||||||
|
show_dates: False
|
||||||
|
dates: Feb 2018 - Aug 2018
|
||||||
|
- employer: Rhodes Systems International
|
||||||
|
title: Lead Design Engineer
|
||||||
|
city: Louisville, KY
|
||||||
|
description: Completely redesigned the kickout/crossover box subsystems for industrial tow-line conveyor systems in heavy equipment finishing and manufacturing. Responsible for system-level design of several projects with sale prices over $1 Million. Also responsible for oversight of machining and project fabrication shop operations.
|
||||||
|
show_dates: False
|
||||||
|
dates: Aug 2016 - Feb 2018
|
||||||
|
|
||||||
|
research:
|
||||||
|
- title: Active/Passive Magnetic Shielding
|
||||||
|
university: University of Kentucky
|
||||||
|
city: Lexington, KY
|
||||||
|
description: Spent two years working on a project that utilized the passive magnetic field shielding capabilities of µ-metal material and combined it with an active shielding concept utilizing a Helmholtz-coil design. The project is currently under the process of exploring patent options.
|
||||||
|
- title: IEC Plasma Generation
|
||||||
|
university: University of Kentucky
|
||||||
|
city: Lexington, KY
|
||||||
|
description: As a Senior Capstone design project I led a team of Mechanical Engineering students to create an inertial-electrostatically confined plasma generated in a vaccuum environment using a Paaschen discharge event. Demonstrated applications in high voltage circuitry design and spectrographic analysis of plasma in a spacecraft propulsion capacity
|
||||||
|
|
||||||
|
education:
|
||||||
|
- major: Aerospace Engineering
|
||||||
|
university: University of Colorado Boulder
|
||||||
|
degree: Masters of Science
|
||||||
|
completed: false
|
||||||
|
- major: Mechanical Engineering
|
||||||
|
university: University of Kentucky
|
||||||
|
degree: Bachelor of Science
|
||||||
|
completed: true
|
||||||
|
- major: Physics
|
||||||
|
university: University of Kentucky
|
||||||
|
degree: Bachelor of Science
|
||||||
|
completed: true
|
||||||
|
|
||||||
|
proficiencies:
|
||||||
|
- name: Languages
|
||||||
|
list:
|
||||||
|
- Python
|
||||||
|
- Matlab
|
||||||
|
- C++
|
||||||
|
- Julia
|
||||||
|
- Haskell
|
||||||
|
- Javascript
|
||||||
|
- Bash
|
||||||
|
- HTML/CSS
|
||||||
|
- name: Frameworks
|
||||||
|
list:
|
||||||
|
- Angular
|
||||||
|
- React
|
||||||
|
- Flask
|
||||||
|
- Yesod
|
||||||
|
- Warp
|
||||||
|
- name: Guidance Software
|
||||||
|
list:
|
||||||
|
- GMAT
|
||||||
|
- STK
|
||||||
|
- name: CAD
|
||||||
|
list:
|
||||||
|
- PTC Creo
|
||||||
|
- Solidworks
|
||||||
|
- AutoCAD
|
||||||
|
- CATIA v5
|
||||||
|
- name: Other
|
||||||
|
list:
|
||||||
|
- Git
|
||||||
|
- Vim
|
||||||
|
- Microsoft Office
|
||||||
|
- LabVIEW
|
||||||
|
|
||||||
|
honors:
|
||||||
|
- US Interim Top Secret Clearance
|
||||||
|
- Private Pilot's License (PPL)
|
||||||
|
- NAUI Scuba Certified
|
||||||
|
- National Merit Finalist
|
||||||
|
- ACT 35/36
|
||||||
|
- GRE V167, Q167, W5.5
|
||||||
|
- Magna Cum Laude
|
||||||
|
- Patterson Scholar
|
||||||
|
|
||||||
|
# Settings
|
||||||
|
mainfont: Roboto
|
||||||
|
fontsize: 10pt
|
||||||
|
geometry: letterpaper, left=0in, right=0in, top=0in, bottom=0in, hmargin=0in, vmargin=0in
|
||||||
|
par_separation: 1em
|
||||||
|
contact_col: "0.32\\textwidth" #these add to 0.94?
|
||||||
|
profile_col: "0.62\\textwidth"
|
||||||
|
edu_col: "0.49\\textwidth"
|
||||||
|
lang_col: "0.49\\textwidth"
|
||||||
|
content:
|
||||||
|
color: "D7CEC7"
|
||||||
|
width: 0.67
|
||||||
|
sidebar:
|
||||||
|
color: "C09F80"
|
||||||
|
width: 0.33
|
||||||
|
text_color: "343434"
|
||||||
|
link_color: "76323F"
|
||||||
|
accent_color: "76323F"
|
||||||
|
---
|
||||||
664
main.tex
664
main.tex
@@ -1,664 +0,0 @@
|
|||||||
% !TEX TS-program = xelatex
|
|
||||||
% !TEX encoding = UTF-8 Unicode
|
|
||||||
|
|
||||||
\documentclass[9pt]{article}
|
|
||||||
|
|
||||||
% force US English hyphenation
|
|
||||||
\usepackage[USenglish]{babel}
|
|
||||||
|
|
||||||
% more advanced expressions in \setlength
|
|
||||||
\usepackage{calc}
|
|
||||||
|
|
||||||
% more advanced command declaration
|
|
||||||
\usepackage{xparse}
|
|
||||||
|
|
||||||
% provides some extra warnings regarding deprecated practices
|
|
||||||
\usepackage[l2tabu,orthodox]{nag}
|
|
||||||
|
|
||||||
% define margin
|
|
||||||
\newlength\cvMargin
|
|
||||||
\setlength\cvMargin{0.2in}
|
|
||||||
|
|
||||||
% set defined margin as paper margin
|
|
||||||
\usepackage[margin=\cvMargin,noheadfoot]{geometry}
|
|
||||||
|
|
||||||
% set the other lengths based on the margin
|
|
||||||
\newlength\cvSideWidth
|
|
||||||
\setlength\cvSideWidth{0.3\paperwidth-\cvMargin}
|
|
||||||
\newlength\cvMainWidth
|
|
||||||
\setlength\cvMainWidth{\paperwidth-4\cvMargin-\cvSideWidth}
|
|
||||||
|
|
||||||
\newlength\cvPictureWidth
|
|
||||||
\setlength\cvPictureWidth{1.5in}
|
|
||||||
|
|
||||||
% defining some lengths for the language bar
|
|
||||||
\newlength\cvLanguageBarWidth
|
|
||||||
\setlength\cvLanguageBarWidth{3em}
|
|
||||||
|
|
||||||
\newlength\cvLanguageBarHeight
|
|
||||||
\setlength\cvLanguageBarHeight{0.75em}
|
|
||||||
|
|
||||||
% defines spacing between a section and its icon
|
|
||||||
\newlength\cvTimeDotSep
|
|
||||||
\setlength\cvTimeDotSep{0.1in}
|
|
||||||
|
|
||||||
% spacing between two items in a section
|
|
||||||
\newlength{\cvSectionSep}
|
|
||||||
\setlength{\cvSectionSep}{0.1in}
|
|
||||||
|
|
||||||
% we will define this length later, based on the widest icon
|
|
||||||
\newlength\cvHeaderIconWidth
|
|
||||||
|
|
||||||
% Determines font styles
|
|
||||||
\newcommand{\cvSection}[1]{\Large\textbf{#1}}
|
|
||||||
\newcommand{\cvEducation}[3]{{\firaMedium #1}\\ #2\\ \emph{#3}}
|
|
||||||
\newcommand{\cvExperience}[5]{{\firaMedium #1}\\ \textsc{\selectfont #2}, #3. #4\\ \emph{#5}}
|
|
||||||
|
|
||||||
% allow for links
|
|
||||||
\usepackage{hyperref}
|
|
||||||
|
|
||||||
% advanced drawing
|
|
||||||
\usepackage{tikz}
|
|
||||||
\usetikzlibrary{calc,positioning,backgrounds,matrix,node-families} %requires node-families file
|
|
||||||
|
|
||||||
% pictures
|
|
||||||
\usepackage{graphicx}
|
|
||||||
|
|
||||||
% define four main colours
|
|
||||||
\definecolor{cvColor}{HTML}{5F9CA8}
|
|
||||||
\definecolor{cvColorLight}{HTML}{99D0DA}
|
|
||||||
\definecolor{cvDark}{HTML}{2F3142}
|
|
||||||
\definecolor{cvAccent}{HTML}{474A65}
|
|
||||||
|
|
||||||
% load external fonts
|
|
||||||
\usepackage{fontspec}
|
|
||||||
|
|
||||||
% icon font
|
|
||||||
\usepackage{fontawesome}
|
|
||||||
|
|
||||||
% load external fonts
|
|
||||||
\setmainfont[Numbers={OldStyle,Monospaced}]{Open Sans}
|
|
||||||
\setsansfont{Open Sans}
|
|
||||||
\setmonofont{Open Sans}
|
|
||||||
\newfontfamily\firaMedium{Open Sans}
|
|
||||||
|
|
||||||
\pagestyle{empty}
|
|
||||||
|
|
||||||
% update default paragraph indent, and header space
|
|
||||||
\setlength{\topskip}{0pt} % between header and text (0 needed for vertical centring)
|
|
||||||
\usepackage{parskip} % remove paragraph indents
|
|
||||||
|
|
||||||
% setting variable from before based on widest icon
|
|
||||||
\setlength{\cvHeaderIconWidth}{\maxof{\widthof{\faBriefcase}}{\widthof{\faGraduationCap}}}
|
|
||||||
|
|
||||||
% set TikZ styles
|
|
||||||
\tikzset{%
|
|
||||||
contactIcon/.style={%
|
|
||||||
minimum height=\baselineskip,
|
|
||||||
},
|
|
||||||
contactText/.style={%
|
|
||||||
minimum height=\baselineskip,
|
|
||||||
text depth=0pt,
|
|
||||||
},
|
|
||||||
headerIcon/.style={%
|
|
||||||
minimum width=\cvHeaderIconWidth,
|
|
||||||
anchor=center,
|
|
||||||
},
|
|
||||||
languageText/.style={%
|
|
||||||
font=\footnotesize,
|
|
||||||
minimum width=4em,
|
|
||||||
},
|
|
||||||
languageText2/.style={%
|
|
||||||
font=\footnotesize,
|
|
||||||
minimum width=5em,
|
|
||||||
},
|
|
||||||
progressArea/.style={%
|
|
||||||
draw,
|
|
||||||
rectangle,
|
|
||||||
minimum width=\cvLanguageBarWidth,
|
|
||||||
minimum height=\cvLanguageBarHeight,
|
|
||||||
cvColor},
|
|
||||||
progressBar/.style={%
|
|
||||||
minimum height=\cvLanguageBarHeight,
|
|
||||||
rectangle,
|
|
||||||
draw,
|
|
||||||
fill,
|
|
||||||
cvColor,
|
|
||||||
anchor=west},
|
|
||||||
sectionTitle/.style={%
|
|
||||||
anchor=north west,
|
|
||||||
align=left},
|
|
||||||
eventdottext/.style = {%
|
|
||||||
text width=\cvMainWidth-\cvTimeDotSep,
|
|
||||||
black,
|
|
||||||
%text depth=0pt,
|
|
||||||
anchor=north west,
|
|
||||||
},
|
|
||||||
sectionedutext/.style={%
|
|
||||||
eventdottext,
|
|
||||||
anchor=north west
|
|
||||||
},
|
|
||||||
invisibletimedot/.style = {%
|
|
||||||
circle,
|
|
||||||
minimum width=3pt,
|
|
||||||
anchor=center
|
|
||||||
},
|
|
||||||
timedot/.style = {%
|
|
||||||
invisibletimedot,
|
|
||||||
draw,
|
|
||||||
minimum width=3pt,
|
|
||||||
fill,
|
|
||||||
black,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
% based on https://tex.stackexchange.com/questions/65731
|
|
||||||
\makeatletter
|
|
||||||
\def\cv@hrulefill{{\color{cvColor}\leavevmode\leaders\hrule height 1pt\hfill\kern\z@}}
|
|
||||||
|
|
||||||
% line before and after text (some tweaking is required here)
|
|
||||||
% based on https://tex.stackexchange.com/questions/15119
|
|
||||||
\NewDocumentCommand{\ruleline}{m}{\par\noindent\raisebox{\baselineskip/4}{\makebox[\linewidth]{\cv@hrulefill\hspace{1ex}\raisebox{-\baselineskip/4}{#1}\hspace{1ex}\cv@hrulefill}}}
|
|
||||||
\makeatother
|
|
||||||
|
|
||||||
% update global colour
|
|
||||||
\makeatletter
|
|
||||||
\NewDocumentCommand{\globalcolor}{m}{%
|
|
||||||
\color{#1}\global\let\default@color\current@color
|
|
||||||
}
|
|
||||||
\makeatother
|
|
||||||
\AtBeginDocument{\globalcolor{cvDark}}
|
|
||||||
|
|
||||||
\NewDocumentCommand{\cvLanguage}{mm}{%
|
|
||||||
{\globaldefs=1\relax\pgfkeys{/cv/languages/lang\the\value{languages} = #2}}
|
|
||||||
|
|
||||||
\stepcounter{languages}
|
|
||||||
}
|
|
||||||
|
|
||||||
\makeatletter
|
|
||||||
\newcount\my@repeat@count
|
|
||||||
\newcommand{\cvSkill}[1]{%
|
|
||||||
\begingroup
|
|
||||||
\my@repeat@count=\z@
|
|
||||||
\@whilenum\my@repeat@count<#1\do{\faCircle\advance\my@repeat@count\@ne}%
|
|
||||||
\my@repeat@count=\numexpr5-\z@\relax
|
|
||||||
\@whilenum\my@repeat@count>#1\do{\faCircleO\advance\my@repeat@count\m@ne}%
|
|
||||||
\endgroup
|
|
||||||
}
|
|
||||||
\makeatother
|
|
||||||
|
|
||||||
\begin{document}
|
|
||||||
|
|
||||||
\vspace*{\fill}
|
|
||||||
% fill in sidebar
|
|
||||||
\begin{tikzpicture}[remember picture,overlay]
|
|
||||||
\fill[cvColorLight] (current page.north west) rectangle ++(\cvSideWidth+2\cvMargin,-\paperheight);
|
|
||||||
\end{tikzpicture}
|
|
||||||
|
|
||||||
% sidebar formatted as a minipage
|
|
||||||
\begin{minipage}{\cvSideWidth}
|
|
||||||
\begin{center}
|
|
||||||
|
|
||||||
% profile photo
|
|
||||||
\begin{tikzpicture}
|
|
||||||
\node[
|
|
||||||
rectangle,
|
|
||||||
minimum size=\cvPictureWidth,
|
|
||||||
path picture={%
|
|
||||||
\node at (path picture bounding box.center){%
|
|
||||||
\includegraphics[width=\cvPictureWidth]{img/profile_picture}
|
|
||||||
};
|
|
||||||
}]{};
|
|
||||||
\end{tikzpicture}
|
|
||||||
|
|
||||||
{\LARGE
|
|
||||||
Richard Connor
|
|
||||||
|
|
||||||
\vspace{10pt}
|
|
||||||
|
|
||||||
Johnstone}
|
|
||||||
|
|
||||||
\vspace{0.1in}
|
|
||||||
|
|
||||||
{\color{cvAccent} Aerospace Engineer}
|
|
||||||
|
|
||||||
\vspace{0.1in}
|
|
||||||
|
|
||||||
\ruleline{Profile}
|
|
||||||
|
|
||||||
\small
|
|
||||||
Currently pursuing employment as an Aerospace Software Engineer while
|
|
||||||
earning a Masters in Aerospace Engineering (focus in Astrodynamics) at the
|
|
||||||
University of Colorado -- Boulder.
|
|
||||||
|
|
||||||
\vspace{4pt}
|
|
||||||
|
|
||||||
\ruleline{Contact}
|
|
||||||
|
|
||||||
\vspace{8pt}
|
|
||||||
|
|
||||||
\begin{tikzpicture}[every node/.style={inner sep=0pt, outer sep=0pt}]
|
|
||||||
\matrix [
|
|
||||||
column 1/.style={anchor=center,contactIcon},
|
|
||||||
column 2/.style={anchor=west,align=left,contactIcon},
|
|
||||||
column sep=5pt,
|
|
||||||
row sep=5pt] (contact) {%
|
|
||||||
\node{\faEnvelope};
|
|
||||||
& \node{\href{mailto:connor@richardconnorjohnstone.com}{%
|
|
||||||
{\small connor@richardconnorjohnstone.com}}};\\
|
|
||||||
\node{\faMapMarker};
|
|
||||||
& \node{690 Inca Parkway\\Boulder, CO 80303};\\
|
|
||||||
\node{\faPhone};
|
|
||||||
& \node{+1 (502) 414-1242};\\
|
|
||||||
\node{\faGlobe};
|
|
||||||
&
|
|
||||||
\node{\href{https://richardconnorjohnstone.com}{%
|
|
||||||
richardconnorjohnstone.com}};\\
|
|
||||||
\node{\faGithub};
|
|
||||||
& \node{\href{https://github.com/rconnorjohnstone}{rconnorjohnstone}};\\
|
|
||||||
\node{\faLinkedinSquare};
|
|
||||||
& \node{\href{https://www.linkedin.com/rconnorjohnstone}{%
|
|
||||||
rconnorjohnstone}};\\
|
|
||||||
};
|
|
||||||
\end{tikzpicture}
|
|
||||||
|
|
||||||
\vspace{4pt}
|
|
||||||
|
|
||||||
\ruleline{Languages}
|
|
||||||
|
|
||||||
\vspace{4pt}
|
|
||||||
|
|
||||||
\begin{tikzpicture}[every node/.style={text depth=0pt,inner sep=0pt,outer sep=0pt}]
|
|
||||||
\matrix [column sep=5pt,row sep=3pt] (contact) {%
|
|
||||||
\node[languageText]{Python}; &
|
|
||||||
\node[progressArea](language 1) {}; &
|
|
||||||
\node[languageText2]{Julia}; &
|
|
||||||
\node[progressArea] (language 2) {}; \\
|
|
||||||
|
|
||||||
\node[languageText]{C++}; &
|
|
||||||
\node[progressArea] (language 3) {}; &
|
|
||||||
\node[languageText2]{MATLAB}; &
|
|
||||||
\node[progressArea] (language 4) {}; \\
|
|
||||||
|
|
||||||
\node[languageText]{\LaTeX}; &
|
|
||||||
\node[progressArea] (language 5) {}; &
|
|
||||||
\node[languageText2]{Mathematica}; &
|
|
||||||
\node[progressArea] (language 6) {}; \\
|
|
||||||
|
|
||||||
\node[languageText]{Rust}; &
|
|
||||||
\node[progressArea] (language 7) {}; \\
|
|
||||||
};
|
|
||||||
\draw (language 1.west)
|
|
||||||
node[progressBar,minimum width=5/5*\cvLanguageBarWidth] {};
|
|
||||||
\draw (language 2.west)
|
|
||||||
node[progressBar,minimum width=5/5*\cvLanguageBarWidth] {};
|
|
||||||
\draw (language 3.west)
|
|
||||||
node[progressBar,minimum width=4/5*\cvLanguageBarWidth] {};
|
|
||||||
\draw (language 4.west)
|
|
||||||
node[progressBar,minimum width=4/5*\cvLanguageBarWidth] {};
|
|
||||||
\draw (language 5.west)
|
|
||||||
node[progressBar,minimum width=4/5*\cvLanguageBarWidth] {};
|
|
||||||
\draw (language 6.west)
|
|
||||||
node[progressBar,minimum width=3/5*\cvLanguageBarWidth] {};
|
|
||||||
\draw (language 7.west)
|
|
||||||
node[progressBar,minimum width=1/5*\cvLanguageBarWidth] {};
|
|
||||||
\end{tikzpicture}
|
|
||||||
|
|
||||||
\vspace{4pt}
|
|
||||||
|
|
||||||
\ruleline{Guidance Software}
|
|
||||||
|
|
||||||
\vspace{4pt}
|
|
||||||
|
|
||||||
\begin{tikzpicture}[every node/.style={text depth=0pt,inner sep=0pt,outer sep=0pt}]
|
|
||||||
\matrix [column sep=5pt,row sep=3pt] (contact) {%
|
|
||||||
\node[languageText]{GMAT}; &
|
|
||||||
\node[progressArea](guidance 1) {}; &
|
|
||||||
\node[languageText2]{STK}; &
|
|
||||||
\node[progressArea] (guidance 2) {}; \\
|
|
||||||
};
|
|
||||||
\draw (guidance 1.west)
|
|
||||||
node[progressBar,minimum width=5/5*\cvLanguageBarWidth] {};
|
|
||||||
\draw (guidance 2.west)
|
|
||||||
node[progressBar,minimum width=3/5*\cvLanguageBarWidth] {};
|
|
||||||
\end{tikzpicture}
|
|
||||||
|
|
||||||
\vspace{4pt}
|
|
||||||
|
|
||||||
\ruleline{CAD Software}
|
|
||||||
|
|
||||||
\vspace{4pt}
|
|
||||||
|
|
||||||
\begin{tikzpicture}[every node/.style={text depth=0pt,inner sep=0pt,outer sep=0pt}]
|
|
||||||
\matrix [column sep=5pt,row sep=3pt] (contact) {%
|
|
||||||
\node[languageText]{PTC Creo}; &
|
|
||||||
\node[progressArea](cad 1) {}; &
|
|
||||||
\node[languageText2]{AutoCAD}; &
|
|
||||||
\node[progressArea] (cad 2) {}; \\
|
|
||||||
|
|
||||||
\node[languageText]{Solidworks}; &
|
|
||||||
\node[progressArea](cad 3) {}; &
|
|
||||||
\node[languageText2]{CATIA v5}; &
|
|
||||||
\node[progressArea] (cad 4) {}; \\
|
|
||||||
};
|
|
||||||
\draw (cad 1.west)
|
|
||||||
node[progressBar,minimum width=5/5*\cvLanguageBarWidth] {};
|
|
||||||
\draw (cad 2.west)
|
|
||||||
node[progressBar,minimum width=4/5*\cvLanguageBarWidth] {};
|
|
||||||
\draw (cad 3.west)
|
|
||||||
node[progressBar,minimum width=3/5*\cvLanguageBarWidth] {};
|
|
||||||
\draw (cad 4.west)
|
|
||||||
node[progressBar,minimum width=3/5*\cvLanguageBarWidth] {};
|
|
||||||
\end{tikzpicture}
|
|
||||||
|
|
||||||
\vspace{4pt}
|
|
||||||
|
|
||||||
\ruleline{Operating Systems}
|
|
||||||
|
|
||||||
\vspace{4pt}
|
|
||||||
|
|
||||||
\begin{tikzpicture}[every node/.style={text depth=0pt,inner sep=0pt,outer sep=0pt}]
|
|
||||||
\matrix [column sep=5pt,row sep=3pt] (contact) {%
|
|
||||||
\node[languageText]{Linux}; &
|
|
||||||
\node[progressArea](os 1) {}; &
|
|
||||||
\node[languageText2]{Windows}; &
|
|
||||||
\node[progressArea] (os 2) {}; \\
|
|
||||||
};
|
|
||||||
\draw (os 1.west)
|
|
||||||
node[progressBar,minimum width=5/5*\cvLanguageBarWidth] {};
|
|
||||||
\draw (os 2.west)
|
|
||||||
node[progressBar,minimum width=4/5*\cvLanguageBarWidth] {};
|
|
||||||
\end{tikzpicture}
|
|
||||||
|
|
||||||
\vspace{4pt}
|
|
||||||
|
|
||||||
\ruleline{Other}
|
|
||||||
|
|
||||||
\vspace{4pt}
|
|
||||||
|
|
||||||
\begin{tikzpicture}[every node/.style={text depth=0pt,inner sep=0pt,outer sep=0pt}]
|
|
||||||
\matrix [column sep=5pt,row sep=3pt] (contact) {%
|
|
||||||
\node[languageText]{Git}; &
|
|
||||||
\node[progressArea](other 1) {}; &
|
|
||||||
\node[languageText2]{Office}; &
|
|
||||||
\node[progressArea] (other 2) {}; \\
|
|
||||||
|
|
||||||
\node[languageText]{Vim}; &
|
|
||||||
\node[progressArea](other 3) {}; &
|
|
||||||
\node[languageText2]{LabVIEW}; &
|
|
||||||
\node[progressArea] (other 4) {}; \\
|
|
||||||
};
|
|
||||||
\draw (other 1.west)
|
|
||||||
node[progressBar,minimum width=4/5*\cvLanguageBarWidth] {};
|
|
||||||
\draw (other 2.west)
|
|
||||||
node[progressBar,minimum width=4/5*\cvLanguageBarWidth] {};
|
|
||||||
\draw (other 3.west)
|
|
||||||
node[progressBar,minimum width=4/5*\cvLanguageBarWidth] {};
|
|
||||||
\draw (other 4.west)
|
|
||||||
node[progressBar,minimum width=1/5*\cvLanguageBarWidth] {};
|
|
||||||
\end{tikzpicture}
|
|
||||||
|
|
||||||
\vspace{4pt}
|
|
||||||
|
|
||||||
\ruleline{Skills}
|
|
||||||
|
|
||||||
\vspace{4pt}
|
|
||||||
|
|
||||||
\end{center}
|
|
||||||
\footnotesize
|
|
||||||
Experience in programming in both low and high level languages for a wide
|
|
||||||
variety of aerospace engineering applications: Kalman Filtering,
|
|
||||||
trajectory design of Earth-based and interplanetary missions,
|
|
||||||
control theory for low-thrust mission design, control of attitude systems
|
|
||||||
using quaternions and Modified Rodriguez Parameters, and orbit
|
|
||||||
determination and proximity/rendesvous operations leveraging computer
|
|
||||||
vision. Some experience in containerizing platforms (Docker) for web-based
|
|
||||||
server deployment. Also some experience in Linux bash scripting.
|
|
||||||
|
|
||||||
\end{minipage}
|
|
||||||
\vspace*{\fill}
|
|
||||||
|
|
||||||
\begin{tikzpicture}[
|
|
||||||
every node/.style={
|
|
||||||
inner sep=0pt,
|
|
||||||
outer sep=0pt
|
|
||||||
},
|
|
||||||
remember picture,
|
|
||||||
overlay,
|
|
||||||
shift={($(current page.north west)%
|
|
||||||
+(\cvSideWidth+3\cvMargin+\cvTimeDotSep,-\cvMargin)$)}]
|
|
||||||
% main content
|
|
||||||
|
|
||||||
\node[sectionTitle] at (0,0) (title 1) {\cvSection{Education}};
|
|
||||||
\node[left=\cvTimeDotSep of title 1,headerIcon] {\faGraduationCap};
|
|
||||||
\begin{scope}[on background layer]
|
|
||||||
\draw[line width=2pt,cvColor]
|
|
||||||
let \p1=(title 1.south west),
|
|
||||||
\p2=(current page.east) in
|
|
||||||
(\x1,\y1-0.1cm) to (\x2,\y1-0.1cm);
|
|
||||||
\end{scope}
|
|
||||||
|
|
||||||
% University of Colorado -- Boulder
|
|
||||||
\node[
|
|
||||||
below=\cvSectionSep of title 1.south west,
|
|
||||||
eventdottext]
|
|
||||||
(item 1 header)
|
|
||||||
{\phantom{Evening}};
|
|
||||||
\node[
|
|
||||||
below=\cvSectionSep of title 1.south west,
|
|
||||||
sectionedutext]
|
|
||||||
(item 1)
|
|
||||||
{\cvEducation{
|
|
||||||
Masters of Aerospace Engineering}%
|
|
||||||
{University of Colorado -- Boulder, Boulder, CO, August 2018 -- Current}%
|
|
||||||
{Currently pursuing a Masters degree with a focus in astrodynamics.
|
|
||||||
GPA: 3.5/4.0}};
|
|
||||||
\node[
|
|
||||||
left=\cvTimeDotSep of item 1 header,
|
|
||||||
timedot]
|
|
||||||
(start)
|
|
||||||
{};
|
|
||||||
|
|
||||||
% University of Kentucky
|
|
||||||
\node[
|
|
||||||
below=\cvSectionSep of item 1.south west,
|
|
||||||
eventdottext]
|
|
||||||
(item 2 header)
|
|
||||||
{\phantom{Evening}};
|
|
||||||
\node[
|
|
||||||
below=\cvSectionSep of item 1.south west,
|
|
||||||
sectionedutext]
|
|
||||||
(item 2)
|
|
||||||
{\cvEducation{Bachelor of Science in Mechanical Engineering}%
|
|
||||||
{University of Kentucky, Lexington, KY. August 2011 -- May 2016}%
|
|
||||||
{General training in Mechanical Engineering practices including
|
|
||||||
product design, with an emphasis on orbital mechanics. GPA: 3.6/4.0}};
|
|
||||||
\node[
|
|
||||||
left=\cvTimeDotSep of item 2 header,
|
|
||||||
timedot]
|
|
||||||
{};
|
|
||||||
|
|
||||||
% University of Kentucky 2
|
|
||||||
\node[
|
|
||||||
below=\cvSectionSep of item 2.south west,
|
|
||||||
eventdottext]
|
|
||||||
(item 3 header)
|
|
||||||
{\phantom{Evening}};
|
|
||||||
\node[
|
|
||||||
below=\cvSectionSep of item 2.south west,
|
|
||||||
sectionedutext]
|
|
||||||
(item 3)
|
|
||||||
{\cvEducation{Bachelor of Science in Physics}%
|
|
||||||
{University of Kentucky, Lexington. August 2011 -- May 2016}%
|
|
||||||
{General training in all types of physical sciences, including
|
|
||||||
general and special relativity, electromagnetism, and quantum
|
|
||||||
mechanics. GPA: 3.6/4.0}};
|
|
||||||
\node[
|
|
||||||
left=\cvTimeDotSep of item 3 header,
|
|
||||||
timedot]
|
|
||||||
{};
|
|
||||||
\node[
|
|
||||||
left=\cvTimeDotSep of item 3.south west,
|
|
||||||
invisibletimedot]
|
|
||||||
(end)
|
|
||||||
{};
|
|
||||||
\draw (start) to (end.center);
|
|
||||||
|
|
||||||
%%%%%%%%%%%%%%
|
|
||||||
% Experience %
|
|
||||||
%%%%%%%%%%%%%%
|
|
||||||
|
|
||||||
\node[below=0.6cm of item 3.south west,sectionTitle] (title 2)
|
|
||||||
{\cvSection{Recent Experience}};
|
|
||||||
\node[left=\cvTimeDotSep of title 2,headerIcon] {\faBriefcase};
|
|
||||||
\node[below=0.6cm of item 3.south west,sectionTitle] (title 2 dummy) {\phantom{\cvSection{Education}}};
|
|
||||||
\begin{scope}[on background layer]
|
|
||||||
\draw[line width=2pt,cvColor]
|
|
||||||
let \p1=(title 2 dummy.south west),
|
|
||||||
\p2=(current page.east) in
|
|
||||||
(\x1,\y1-0.1cm) to (\x2,\y1-0.1cm);
|
|
||||||
\end{scope}
|
|
||||||
|
|
||||||
\node[
|
|
||||||
below=\cvSectionSep of title 2.south west,
|
|
||||||
eventdottext]
|
|
||||||
(item 1 header)
|
|
||||||
{\phantom{Evening}};
|
|
||||||
\node[
|
|
||||||
below=\cvSectionSep of title 2.south west,
|
|
||||||
sectionedutext]
|
|
||||||
(item 1)
|
|
||||||
{\cvExperience%
|
|
||||||
{Internship}%
|
|
||||||
{Palski And Associates}%
|
|
||||||
{Colorado Springs, CO}%
|
|
||||||
{Summer 2019}%
|
|
||||||
{Organized an effort to automate telescope observations to perform
|
|
||||||
satellite orbit state determination using purely visual information.
|
|
||||||
Developed a program to determine range, azimuth, and elevation information
|
|
||||||
from the observations and solve for state elements using Gooding's
|
|
||||||
approach to Lambert's problem.\\
|
|
||||||
Also developed flight-ready software for a variety of proximity/rendesvous
|
|
||||||
operations for a secondary observational cubesat during critical missions,
|
|
||||||
leveraging feature detection and recognition in point cloud, LIDAR, and
|
|
||||||
RGB image data.}};
|
|
||||||
\node[
|
|
||||||
left=\cvTimeDotSep of item 1 header,
|
|
||||||
timedot]
|
|
||||||
(start)
|
|
||||||
{};
|
|
||||||
|
|
||||||
% item 2
|
|
||||||
\node[
|
|
||||||
below=\cvSectionSep of item 1.south west,
|
|
||||||
eventdottext]
|
|
||||||
(item 2 header)
|
|
||||||
{\phantom{Evening}};
|
|
||||||
\node[
|
|
||||||
below=\cvSectionSep of item 1.south west,
|
|
||||||
sectionedutext]
|
|
||||||
(item 2)
|
|
||||||
{\cvExperience%
|
|
||||||
{Mechanical Design Engineer 2}%
|
|
||||||
{Lockheed Martin Missile and Fire Control}%
|
|
||||||
{Lexington, KY}%
|
|
||||||
{February 2018 -- August 2018}%
|
|
||||||
{Performed product design and redesign for several important armoring
|
|
||||||
subsystems of the GMV 1.1 military vehicle, including cost reduction,
|
|
||||||
weight reduction, and armor performance improvements on the vehicle
|
|
||||||
chassis and outer shell. Typically performed rapid brainstorming and
|
|
||||||
turn-around time to provide support for Special Operations in the US
|
|
||||||
Army.}};
|
|
||||||
\node[
|
|
||||||
left=\cvTimeDotSep of item 2 header,
|
|
||||||
timedot]
|
|
||||||
{};
|
|
||||||
|
|
||||||
% item 3
|
|
||||||
\node[
|
|
||||||
below=\cvSectionSep of item 2.south west,
|
|
||||||
eventdottext]
|
|
||||||
(item 3 header)
|
|
||||||
{\phantom{Evening}};
|
|
||||||
\node[
|
|
||||||
below=\cvSectionSep of item 2.south west,
|
|
||||||
sectionedutext]
|
|
||||||
(item 3)
|
|
||||||
{\cvExperience%
|
|
||||||
{Lead Design Engineer}%
|
|
||||||
{Rhodes Systems International}%
|
|
||||||
{Louisville, KY}%
|
|
||||||
{August 2016 -- February 2018}%
|
|
||||||
{Completely redesigned the kickout/crossover box subsystems for
|
|
||||||
industrial tow-line conveyor systems in heavy equipment finishing and
|
|
||||||
manufacturing. Responsible for system-level design of several projects
|
|
||||||
with sale prices over \$1 Million. Also responsible for oversight of
|
|
||||||
machining and project fabrication shop operations.}};
|
|
||||||
\node[
|
|
||||||
left=\cvTimeDotSep of item 3 header,
|
|
||||||
timedot]
|
|
||||||
{};
|
|
||||||
\node[
|
|
||||||
left=\cvTimeDotSep of item 3.south west,
|
|
||||||
invisibletimedot]
|
|
||||||
(end)
|
|
||||||
{};
|
|
||||||
\draw (start) to (end.center);
|
|
||||||
|
|
||||||
%%%%%%%%%%
|
|
||||||
% Skills %
|
|
||||||
%%%%%%%%%%
|
|
||||||
|
|
||||||
\node[below=0.6cm of item 3.south west,sectionTitle] (title 3) {\cvSection{Skills}};
|
|
||||||
\node[left=\cvTimeDotSep of title 3,headerIcon] {\faStar};
|
|
||||||
\node[below=0.6cm of item 3.south west,sectionTitle] (title 3 dummy) {\phantom{\cvSection{Education}}};
|
|
||||||
\begin{scope}[on background layer]
|
|
||||||
\draw[line width=2pt,cvColor]
|
|
||||||
let \p1=(title 3 dummy.south west),
|
|
||||||
\p2=(current page.east) in
|
|
||||||
(\x1,\y1-0.1cm) to (\x2,\y1-0.1cm);
|
|
||||||
\end{scope}
|
|
||||||
|
|
||||||
\matrix[matrix of nodes,
|
|
||||||
below=0.6cm of title 3.south west,
|
|
||||||
anchor=north west,
|
|
||||||
column sep=6pt,
|
|
||||||
row sep=6pt,
|
|
||||||
every node/.style={Text Depth=tdSkills},
|
|
||||||
column 1/.style={anchor=east,align=left},
|
|
||||||
column 2/.style={anchor=west},
|
|
||||||
column 3/.style={anchor=east,align=left},
|
|
||||||
column 4/.style={anchor=west}] (skills) {
|
|
||||||
\cvSkill{5} & MATLAB & \cvSkill{5} & \LaTeX \\
|
|
||||||
\cvSkill{4} & Python & \cvSkill{4} & VHDL \\
|
|
||||||
\cvSkill{4} & Microsoft Office & \cvSkill{4} & macOS \\
|
|
||||||
\cvSkill{3} & C, C++ & \cvSkill{3} & Electrical Engineering \\};
|
|
||||||
|
|
||||||
|
|
||||||
\node[below=0.6cm of skills.south west,sectionTitle] (title 4) {\cvSection{References}};
|
|
||||||
\node[left=\cvTimeDotSep of title 4,headerIcon] {\faLink};
|
|
||||||
\node[below=0.6cm of skills.south west,sectionTitle] (title 4 dummy) {\phantom{\cvSection{Education}}};
|
|
||||||
\begin{scope}[on background layer]
|
|
||||||
\draw[line width=2pt,cvColor]
|
|
||||||
let \p1=(title 4 dummy.south west),
|
|
||||||
\p2=(current page.east) in
|
|
||||||
(\x1,\y1-0.1cm) to (\x2,\y1-0.1cm);
|
|
||||||
\end{scope}
|
|
||||||
|
|
||||||
|
|
||||||
\matrix[matrix of nodes,
|
|
||||||
below=0.6cm of title 4.south west,
|
|
||||||
anchor=north west,
|
|
||||||
column sep=6pt,
|
|
||||||
row sep=6pt,
|
|
||||||
every node/.style={Text Depth=tdRefs,anchor=west}] {
|
|
||||||
Jane Smith & \\
|
|
||||||
Company ABC Co. Ltd. & \\
|
|
||||||
Job title & \\
|
|
||||||
Street lane 2 & \\
|
|
||||||
B-1150 Brussels & \\
|
|
||||||
+1 781 555 1212 & \\};
|
|
||||||
|
|
||||||
\end{tikzpicture}
|
|
||||||
|
|
||||||
\end{document}
|
|
||||||
21
makefile
Normal file
21
makefile
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
TEX = xelatex
|
||||||
|
src = single_page.tex colors.yaml logo.png
|
||||||
|
PRIMARY = $(shell yq e .primary colors.yaml)
|
||||||
|
SECONDARY = $(shell yq e .secondary colors.yaml)
|
||||||
|
TERTIARY = $(shell yq e .tertiary colors.yaml)
|
||||||
|
TEXT = $(shell yq e .text colors.yaml)
|
||||||
|
|
||||||
|
single_page.pdf : $(src)
|
||||||
|
sed -e "s/\$$primary/$(PRIMARY)/g" \
|
||||||
|
-e "s/\$$secondary/$(SECONDARY)/g" \
|
||||||
|
-e "s/\$$tertiary/$(TERTIARY)/g" \
|
||||||
|
-e "s/\$$text/$(TEXT)/g" \
|
||||||
|
single_page.tex > single_page_src.tex
|
||||||
|
$(TEX) -o $(FLAGS) single_page_src.tex
|
||||||
|
mv single_page_src.pdf single_page.pdf
|
||||||
|
rm single_page_src.*
|
||||||
|
rm *.log
|
||||||
|
|
||||||
|
.PHONY: clean
|
||||||
|
clean :
|
||||||
|
rm single_page.pdf single_page_src.tex
|
||||||
15
makefile.old
Normal file
15
makefile.old
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
TEX = pandoc
|
||||||
|
src = template.tex details.yml
|
||||||
|
src_contract = template_contract.tex details.yml
|
||||||
|
FLAGS = --pdf-engine=xelatex
|
||||||
|
|
||||||
|
output.pdf : $(src)
|
||||||
|
$(TEX) $(filter-out $<,$^ ) -o $@ --template=$< $(FLAGS)
|
||||||
|
|
||||||
|
.PHONY: contract
|
||||||
|
contract : $(src_contract)
|
||||||
|
$(TEX) $(filter-out $<,$^ ) -o output_contract.pdf --template=$< $(FLAGS)
|
||||||
|
|
||||||
|
.PHONY: clean
|
||||||
|
clean :
|
||||||
|
rm output.pdf output_contract.pdf
|
||||||
308
single_page.tex
Normal file
308
single_page.tex
Normal file
@@ -0,0 +1,308 @@
|
|||||||
|
%!TEX TS-program = xelatex
|
||||||
|
%!TEX encoding = UTF-8 Unicode
|
||||||
|
|
||||||
|
\documentclass[11pt, letterpaper]{article}
|
||||||
|
|
||||||
|
% LAYOUT
|
||||||
|
%--------------------------------
|
||||||
|
% Margins
|
||||||
|
\usepackage{geometry}
|
||||||
|
\geometry{margin=0in}
|
||||||
|
|
||||||
|
% Do not indent paragraphs
|
||||||
|
\setlength\parindent{0in}
|
||||||
|
|
||||||
|
% Enable multicolumns
|
||||||
|
\usepackage{vwcol}
|
||||||
|
\usepackage{multicol}
|
||||||
|
|
||||||
|
% Colors
|
||||||
|
\usepackage{xcolor}
|
||||||
|
\definecolor{sidebar}{HTML}{$primary}
|
||||||
|
\definecolor{content}{HTML}{$secondary}
|
||||||
|
\definecolor{topbar}{HTML}{$tertiary}
|
||||||
|
\definecolor{text}{HTML}{$text}
|
||||||
|
\definecolor{accent}{HTML}{$tertiary}
|
||||||
|
\color{text}
|
||||||
|
|
||||||
|
% Uncomment to suppress page numbers
|
||||||
|
\pagenumbering{gobble}
|
||||||
|
|
||||||
|
% LANGUAGE
|
||||||
|
%--------------------------------
|
||||||
|
% Set the main language
|
||||||
|
% List Indents
|
||||||
|
\usepackage{enumitem}
|
||||||
|
|
||||||
|
% TYPOGRAPHY
|
||||||
|
%--------------------------------
|
||||||
|
% Font Awesome
|
||||||
|
\usepackage{fontawesome5}
|
||||||
|
\usepackage{fontspec}
|
||||||
|
\usepackage{xunicode}
|
||||||
|
\usepackage{xltxtra}
|
||||||
|
% converts LaTeX specials (quotes, dashes etc.) to Unicode
|
||||||
|
\defaultfontfeatures{Mapping=tex-text}
|
||||||
|
\setromanfont [Ligatures={Common}, Numbers={OldStyle}]{Roboto}
|
||||||
|
\newfontfamily{\fallbackfont}{FiraCode Nerd Font}
|
||||||
|
% Special characters
|
||||||
|
\newcommand{\amper}{{\fontspec[Scale=.95]{Roboto}\selectfont\itshape\&}}
|
||||||
|
\newcommand{\fullstar}{{\scriptsize\faStar}}
|
||||||
|
\newcommand{\emptystar}{{\scriptsize\faStar[regular]}}
|
||||||
|
|
||||||
|
% GRAPHICS
|
||||||
|
\usepackage{tikz}
|
||||||
|
\usepackage{eso-pic}
|
||||||
|
|
||||||
|
% HEADINGS
|
||||||
|
%--------------------------------
|
||||||
|
\usepackage{sectsty}
|
||||||
|
\usepackage[normalem]{ulem}
|
||||||
|
\sectionfont{\rmfamily\mdseries}
|
||||||
|
\subsectionfont{\rmfamily\mdseries\scshape\normalsize}
|
||||||
|
\subsubsectionfont{\rmfamily\bfseries\upshape\normalsize}
|
||||||
|
|
||||||
|
% SHAMELESSLY STOLEN STUFF
|
||||||
|
% ----------------------------------------------------------------------------
|
||||||
|
% based on https://tex.stackexchange.com/questions/65731
|
||||||
|
\makeatletter
|
||||||
|
\def\cv@hrulefill{{\color{accent}\leavevmode\leaders\hrule height 1pt\hfill\kern\z@}}
|
||||||
|
|
||||||
|
% line before and after text (some tweaking is required here)
|
||||||
|
% based on https://tex.stackexchange.com/questions/15119
|
||||||
|
\NewDocumentCommand{\ruleline}{m}{\par\noindent\raisebox{\baselineskip/4}{\makebox[\linewidth]{\cv@hrulefill\hspace{1ex}\raisebox{-\baselineskip/4}{#1}\hspace{1ex}\cv@hrulefill}}}
|
||||||
|
\makeatother
|
||||||
|
|
||||||
|
% PDF SETUP
|
||||||
|
%--------------------------------
|
||||||
|
\usepackage{hyperref}
|
||||||
|
\hypersetup
|
||||||
|
{
|
||||||
|
pdfauthor={Connor Johnstone},
|
||||||
|
pdfsubject={Connor Johnstone's CV},
|
||||||
|
pdftitle={Connor Johnstone's CV},
|
||||||
|
colorlinks, breaklinks, xetex, bookmarks,
|
||||||
|
filecolor=black,
|
||||||
|
urlcolor=[HTML]{$tertiary},
|
||||||
|
linkcolor=[HTML]{$tertiary},
|
||||||
|
citecolor=[HTML]{$tertiary}
|
||||||
|
}
|
||||||
|
|
||||||
|
%=============================================================================
|
||||||
|
\begin{document}
|
||||||
|
|
||||||
|
% Basically the margins of each box section
|
||||||
|
\setlength\fboxsep{10pt}
|
||||||
|
% Set this to 1pt to see the box outlines
|
||||||
|
\setlength\fboxrule{0pt}
|
||||||
|
|
||||||
|
% BACKGROUND -----------------------------------------------------------------
|
||||||
|
\hspace{-10pt}
|
||||||
|
\vspace{0.15in}
|
||||||
|
\begin{tikzpicture}[remember picture, overlay]
|
||||||
|
\filldraw[sidebar, opacity=0.6] (current page.north west) -- (0in,-12in) -- (2.75in,-12in) -- (2.75in,1in) -- cycle;
|
||||||
|
\filldraw[topbar, opacity=0.6] (current page.north west) -- (0,-0.7in) -- (10in,-1.4in) -- (current page.north east) -- cycle;
|
||||||
|
\filldraw[white] (1.325in,-0.79275in) circle (0.6in);
|
||||||
|
\node (logo) at (1.325in,-0.79275in) {\includegraphics[width=1.25in]{logo.png}};
|
||||||
|
\end{tikzpicture}
|
||||||
|
|
||||||
|
% TOP BAR --------------------------------------------------------------------
|
||||||
|
\hspace{3.25in}
|
||||||
|
\noindent\fbox{%
|
||||||
|
\begin{minipage}[t][0.4in]{4.5in}
|
||||||
|
\begin{center}
|
||||||
|
\Huge Richard \strong{Connor} Johnstone
|
||||||
|
\end{center}
|
||||||
|
\end{minipage}}
|
||||||
|
\vspace{0.5in}
|
||||||
|
|
||||||
|
% LEFT SIDEBAR ---------------------------------------------------------------
|
||||||
|
\noindent\fbox{%
|
||||||
|
\begin{minipage}[t][9in]{2.35in}
|
||||||
|
\vspace{5pt}
|
||||||
|
\hspace{1.25pt}\href{mailto:c@rcjohnstone.com}{\faEnvelope \hspace{10pt} c@rcjohnstone.com}
|
||||||
|
|
||||||
|
\href{https://rcjohnstone.com}{\faWifi \hspace{9.25pt} rcjohnstone.com}
|
||||||
|
|
||||||
|
\hspace{1.25pt}\href{https://gitlab.rcjohnstone.com}{\faGitlab \hspace{10pt} gitlab.rcjohnstone.com}
|
||||||
|
|
||||||
|
\hspace{1.5pt}\href{https://www.linkedin.com/in/rconnorjohnstone/}{\faLinkedin \hspace{10pt} rconnorjohnstone}
|
||||||
|
|
||||||
|
\vspace{10pt}
|
||||||
|
|
||||||
|
\setlength\columnsep{2pt}
|
||||||
|
|
||||||
|
\ruleline{Programming Languages}
|
||||||
|
\vspace{-25pt}
|
||||||
|
\begin{multicols}{2}
|
||||||
|
\begin{flushright}
|
||||||
|
\footnotesize
|
||||||
|
Python \fullstar\fullstar\fullstar\fullstar \\
|
||||||
|
Rust \fullstar\fullstar\fullstar\fullstar \\
|
||||||
|
Julia \fullstar\fullstar\fullstar\fullstar \\
|
||||||
|
C++ \fullstar\fullstar\fullstar\emptystar \\
|
||||||
|
LaTeX \fullstar\fullstar\fullstar\emptystar \\
|
||||||
|
Javascript \fullstar\fullstar\fullstar\emptystar \\
|
||||||
|
HTML \fullstar\fullstar\fullstar\emptystar \\
|
||||||
|
Matlab \fullstar\fullstar\emptystar\emptystar \\
|
||||||
|
CSS \fullstar\fullstar\emptystar\emptystar \\
|
||||||
|
Haskell \fullstar\fullstar\emptystar\emptystar \\
|
||||||
|
Bash \fullstar\fullstar\emptystar\emptystar \\
|
||||||
|
FORTRAN \fullstar\fullstar\emptystar\emptystar
|
||||||
|
\end{flushright}
|
||||||
|
\end{multicols}
|
||||||
|
|
||||||
|
\ruleline{Languages}
|
||||||
|
\vspace{-25pt}
|
||||||
|
\begin{multicols}{2}
|
||||||
|
\begin{center}
|
||||||
|
\footnotesize
|
||||||
|
English (Native) \\
|
||||||
|
Italian (B2)
|
||||||
|
\end{center}
|
||||||
|
\end{multicols}
|
||||||
|
|
||||||
|
\ruleline{Technologies}
|
||||||
|
\vspace{-25pt}
|
||||||
|
\begin{multicols}{2}
|
||||||
|
\begin{flushright}
|
||||||
|
\footnotesize
|
||||||
|
Docker \fullstar\fullstar\fullstar\fullstar \\
|
||||||
|
REST \fullstar\fullstar\fullstar\fullstar \\
|
||||||
|
AWS \fullstar\fullstar\fullstar\emptystar \\
|
||||||
|
Actix-Web \fullstar\fullstar\fullstar\emptystar \\
|
||||||
|
Kubernetes \fullstar\fullstar\emptystar\emptystar
|
||||||
|
\end{flushright}
|
||||||
|
\end{multicols}
|
||||||
|
|
||||||
|
\ruleline{Other}
|
||||||
|
\vspace{-25pt}
|
||||||
|
\begin{multicols}{2}
|
||||||
|
\begin{center}
|
||||||
|
\footnotesize
|
||||||
|
Git \\
|
||||||
|
Vim \\
|
||||||
|
GNU/Linux \\
|
||||||
|
CI/CD \\
|
||||||
|
Microsoft Office365 \\
|
||||||
|
Agile
|
||||||
|
\end{center}
|
||||||
|
\end{multicols}
|
||||||
|
|
||||||
|
\ruleline{Skills}
|
||||||
|
|
||||||
|
\vspace{-35pt}
|
||||||
|
\subsection*{\center{\textbf{Astrodynamics}}}
|
||||||
|
\vspace{-5pt}
|
||||||
|
\footnotesize{
|
||||||
|
Experience writing software for satellite estimation, guidance, navigation, and control,
|
||||||
|
including statistical orbit determination using Kalman Filters, and orbital propagation
|
||||||
|
including multiple special perturbations.
|
||||||
|
}
|
||||||
|
|
||||||
|
\vspace{-35pt}
|
||||||
|
\subsection*{\center{\textbf{ADCS}}}
|
||||||
|
\vspace{-5pt}
|
||||||
|
\footnotesize{
|
||||||
|
Experience writing, testing, and debugging spacecraft attitude determination and control
|
||||||
|
software for multiple on-orbit spacecraft.
|
||||||
|
}
|
||||||
|
|
||||||
|
\vspace{-35pt}
|
||||||
|
\subsection*{\center{\textbf{Trajectory Optimization}}}
|
||||||
|
\vspace{-5pt}
|
||||||
|
\footnotesize{
|
||||||
|
Academic and on-the-job experience writing optimal control laws for low and impulsive thrust
|
||||||
|
spacecraft thrust systems.
|
||||||
|
}
|
||||||
|
|
||||||
|
\vspace{-35pt}
|
||||||
|
\subsection*{\center{\textbf{REST Microservices}}}
|
||||||
|
\vspace{-5pt}
|
||||||
|
\footnotesize{
|
||||||
|
Experience architecting, developing, and deploying operationalized assimilative
|
||||||
|
space-weather models as well as a handful of other projects. Well versed in the
|
||||||
|
lifecycle of RESTful HTTP microservice applications.
|
||||||
|
}
|
||||||
|
|
||||||
|
\vspace{-35pt}
|
||||||
|
\subsection*{\center{\textbf{Embedded Software}}}
|
||||||
|
\vspace{-5pt}
|
||||||
|
\footnotesize{
|
||||||
|
Some experience writing on-board satellite flight software for a variety of applications.
|
||||||
|
}
|
||||||
|
|
||||||
|
\end{minipage}}
|
||||||
|
\hspace{-5pt}
|
||||||
|
% MAIN CONTENT ---------------------------------------------------------------
|
||||||
|
\noindent\fbox{%
|
||||||
|
\begin{minipage}[t][9in]{\dimexpr\textwidth-4\fboxsep-2.35in\relax}
|
||||||
|
|
||||||
|
\vspace{-10pt}
|
||||||
|
|
||||||
|
\subsection*{\textbf{Education}}
|
||||||
|
\vspace{-18pt}
|
||||||
|
\hrulefill \\
|
||||||
|
Master's of Science -- \textbf{Aerospace Engineering} -- University of Colorado at Boulder \\
|
||||||
|
\textit{Focus Area: Astrodynamics} \\
|
||||||
|
\vspace{-5pt}
|
||||||
|
|
||||||
|
Bachelor's of Science -- \textbf{Mechanical Engineering} -- University of Kentucky \\
|
||||||
|
Bachelor's of Science -- \textbf{Physics} -- University of Kentucky \\
|
||||||
|
\textit{Magna Cum Laude, Patterson Scholar, Math Minor} \\
|
||||||
|
|
||||||
|
\vspace{-20pt}
|
||||||
|
|
||||||
|
\subsection*{\textbf{Experience}}
|
||||||
|
\vspace{-18pt}
|
||||||
|
\hrulefill \\
|
||||||
|
\textbf{Orion Space Solutions} -- Aerospace Software Engineer -- \textit{Louisville, CO} \\
|
||||||
|
Developed astrodynamics software and satellite control algorithms for multiple cube-sat projects
|
||||||
|
in LEO and VLEO (under 300km altitude). Also developed and debugged attitude and determination
|
||||||
|
software code for use in the validation of on-orbit ADCS systems.
|
||||||
|
|
||||||
|
Architected, led and contributed to numerous space-weather models of the thermosphere and
|
||||||
|
ionosphere. During this effort, I led the push to operationalize scientific code in Fortran and
|
||||||
|
IDL into a modern RESTful architecture of containerized micro-services, often beginning by
|
||||||
|
breaking down complicated scientific models into requisite components and leading a team to
|
||||||
|
develop the core components in modern Rust and Python-based API containers.
|
||||||
|
|
||||||
|
\vspace{5pt}
|
||||||
|
|
||||||
|
\textbf{Maxar Space Infrastructure} -- Satellite Flight Software Engineer -- \textit{Westminster, CO} \\
|
||||||
|
Developed several embedded algorithms onboard the RTOS flight software for the OSAM-1 satellite
|
||||||
|
re-fueling mission, including mission-critical Fault Detection and Recovery algorithms, as well
|
||||||
|
as operational solar array code. During this time, I also led a large push for the modernization
|
||||||
|
of Maxar SI's software development life cycle, including the inclusion of modern VCS and CI/CD
|
||||||
|
best practices.
|
||||||
|
|
||||||
|
\vspace{5pt}
|
||||||
|
|
||||||
|
\textbf{Palski and Associates} -- Associate Systems Engineer -- \textit{Colorado Springs, CO} \\
|
||||||
|
Maintained and improved both front and back end of a web application, written in Angular and
|
||||||
|
deployed through AWS, that provides satellite commanding simulations for the US Air Force in
|
||||||
|
conjunction with an educational training program designed to train upcoming satellite operators.
|
||||||
|
Also spent several months working on a development initiative to leverage hardware and
|
||||||
|
computer-vision tools to create a realistic laboratory simulation of common rendesvous and
|
||||||
|
proximity satellite operations using a 1/32 scale model of an operational satellite as well as
|
||||||
|
several months developing the tools to perform satellite observations and orbit determination
|
||||||
|
using imagery generated from our in-house telescope.
|
||||||
|
|
||||||
|
\subsection*{\textbf{Research}}
|
||||||
|
\vspace{-18pt}
|
||||||
|
\hrulefill \\
|
||||||
|
\textbf{University of Kentucky} -- Active/Passive Magnetic Shielding -- \textit{Lexington, KY} \\
|
||||||
|
Spent two years working on a project that utilized the passive magnetic field shielding
|
||||||
|
capabilities of µ-metal material and combined it with an active shielding concept utilizing a
|
||||||
|
Helmholtz-coil design.
|
||||||
|
|
||||||
|
\vspace{5pt}
|
||||||
|
|
||||||
|
\textbf{University of Kentucky} -- IEC Plasma Generation -- \textit{Lexington, KY} \\
|
||||||
|
As a Senior Capstone design project I led a team of Mechanical Engineering students to create an
|
||||||
|
inertial-electrostatically confined plasma generated in a vaccuum environment using a Paaschen
|
||||||
|
discharge event. Demonstrated applications in high voltage circuitry design and spectrographic
|
||||||
|
analysis of plasma in a spacecraft propulsion capacity
|
||||||
|
|
||||||
|
\end{minipage}}
|
||||||
|
\end{document}
|
||||||
229
template.tex
Normal file
229
template.tex
Normal file
@@ -0,0 +1,229 @@
|
|||||||
|
%!TEX TS-program = xelatex
|
||||||
|
%!TEX encoding = UTF-8 Unicode
|
||||||
|
|
||||||
|
\documentclass[$fontsize$, letterpaper]{article}
|
||||||
|
|
||||||
|
% LAYOUT
|
||||||
|
%--------------------------------
|
||||||
|
% Margins
|
||||||
|
\usepackage{geometry}
|
||||||
|
\geometry{$geometry$}
|
||||||
|
|
||||||
|
% Do not indent paragraphs
|
||||||
|
\setlength\parindent{0in}
|
||||||
|
|
||||||
|
% Enable multicolumns
|
||||||
|
\usepackage{vwcol}
|
||||||
|
\usepackage{multicol}
|
||||||
|
|
||||||
|
% Colors
|
||||||
|
\usepackage{xcolor}
|
||||||
|
\definecolor{sidebar}{HTML}{$sidebar.color$}
|
||||||
|
\definecolor{content}{HTML}{$content.color$}
|
||||||
|
\definecolor{text}{HTML}{$text_color$}
|
||||||
|
\definecolor{accent}{HTML}{$accent_color$}
|
||||||
|
\color{text}
|
||||||
|
|
||||||
|
% Uncomment to suppress page numbers
|
||||||
|
\pagenumbering{gobble}
|
||||||
|
|
||||||
|
% LANGUAGE
|
||||||
|
%--------------------------------
|
||||||
|
% Set the main language
|
||||||
|
$if(lang)$
|
||||||
|
\usepackage{polyglossia}
|
||||||
|
\setmainlanguage{$lang$}
|
||||||
|
$endif$
|
||||||
|
|
||||||
|
% List Indents
|
||||||
|
\usepackage{enumitem}
|
||||||
|
|
||||||
|
% TYPOGRAPHY
|
||||||
|
%--------------------------------
|
||||||
|
\usepackage{fontawesome5}
|
||||||
|
\usepackage{fontspec}
|
||||||
|
\usepackage{xunicode}
|
||||||
|
\usepackage{xltxtra}
|
||||||
|
% converts LaTeX specials (quotes, dashes etc.) to Unicode
|
||||||
|
\defaultfontfeatures{Mapping=tex-text}
|
||||||
|
\setromanfont [Ligatures={Common}, Numbers={OldStyle}]{$mainfont$}
|
||||||
|
% Cool ampersand
|
||||||
|
\newcommand{\amper}{{\fontspec[Scale=.95]{$mainfont$}\selectfont\itshape\&}}
|
||||||
|
% Font Awesome
|
||||||
|
|
||||||
|
% HEADINGS
|
||||||
|
%--------------------------------
|
||||||
|
\usepackage{sectsty}
|
||||||
|
\usepackage[normalem]{ulem}
|
||||||
|
\sectionfont{\rmfamily\mdseries}
|
||||||
|
\subsectionfont{\rmfamily\mdseries\scshape\normalsize}
|
||||||
|
\subsubsectionfont{\rmfamily\bfseries\upshape\normalsize}
|
||||||
|
|
||||||
|
% SHAMELESSLY STOLEN STUFF
|
||||||
|
% ----------------------------------------------------------------------------
|
||||||
|
% based on https://tex.stackexchange.com/questions/65731
|
||||||
|
\makeatletter
|
||||||
|
\def\cv@hrulefill{{\color{accent}\leavevmode\leaders\hrule height 1pt\hfill\kern\z@}}
|
||||||
|
|
||||||
|
% line before and after text (some tweaking is required here)
|
||||||
|
% based on https://tex.stackexchange.com/questions/15119
|
||||||
|
\NewDocumentCommand{\ruleline}{m}{\par\noindent\raisebox{\baselineskip/4}{\makebox[\linewidth]{\cv@hrulefill\hspace{1ex}\raisebox{-\baselineskip/4}{#1}\hspace{1ex}\cv@hrulefill}}}
|
||||||
|
\makeatother
|
||||||
|
|
||||||
|
% PDF SETUP
|
||||||
|
%--------------------------------
|
||||||
|
\usepackage{hyperref}
|
||||||
|
\hypersetup
|
||||||
|
{
|
||||||
|
pdfauthor={$name$},
|
||||||
|
pdfsubject={$name$'s CV},
|
||||||
|
pdftitle={$name$'s CV},
|
||||||
|
colorlinks, breaklinks, xetex, bookmarks,
|
||||||
|
filecolor=black,
|
||||||
|
urlcolor=[HTML]{$link_color$},
|
||||||
|
linkcolor=[HTML]{$link_color$},
|
||||||
|
citecolor=[HTML]{$link_color$}
|
||||||
|
}
|
||||||
|
|
||||||
|
%=============================================================================
|
||||||
|
\begin{document}
|
||||||
|
|
||||||
|
\setlength\fboxsep{0.2in}
|
||||||
|
\setlength\fboxrule{0pt}
|
||||||
|
|
||||||
|
% LEFT SIDEBAR
|
||||||
|
% ----------------------------------------------------------------------------
|
||||||
|
\noindent\fcolorbox{black}{sidebar}{%
|
||||||
|
\begin{minipage}[t][\dimexpr\textheight-2\fboxsep-2\fboxrule\relax]{\dimexpr$sidebar.width$\textwidth-2\fboxrule-2\fboxsep\relax}
|
||||||
|
|
||||||
|
\centering
|
||||||
|
\textbf{\textcolor{text}{{\LARGE $for(name)$$name$ $endfor$}}}\\
|
||||||
|
|
||||||
|
\vspace{0.5em}
|
||||||
|
\hrule
|
||||||
|
\vspace{0.5em}
|
||||||
|
|
||||||
|
\small{
|
||||||
|
$address$\\
|
||||||
|
$phone$\\
|
||||||
|
\vspace{-0.5em}
|
||||||
|
\begin{flushleft}
|
||||||
|
$for(links)$
|
||||||
|
\href{$links.link$}{$links.icon$ \hspace{0.3em} $links.display$}\\
|
||||||
|
$endfor$
|
||||||
|
\end{flushleft}
|
||||||
|
|
||||||
|
\ruleline{\normalsize{Profile}}
|
||||||
|
$if(profile)$
|
||||||
|
$profile$
|
||||||
|
$endif$
|
||||||
|
\vspace{1em}
|
||||||
|
|
||||||
|
$for(proficiencies)$
|
||||||
|
\ruleline{\normalsize{$proficiencies.name$}}
|
||||||
|
\vspace{-2.5em}
|
||||||
|
\begin{multicols}{2}
|
||||||
|
$for(proficiencies.list)$
|
||||||
|
$proficiencies.list$\\
|
||||||
|
$endfor$
|
||||||
|
\end{multicols}
|
||||||
|
\vspace{-0.5em}
|
||||||
|
$endfor$
|
||||||
|
|
||||||
|
\ruleline{Skills}
|
||||||
|
\vspace {-5em}
|
||||||
|
$for(skills)$
|
||||||
|
\subsection*{\center{\textbf{$skills.skill$}}}
|
||||||
|
\vspace{-0.5em}
|
||||||
|
\flushleft{
|
||||||
|
\emph{$skills.info$}\\
|
||||||
|
}
|
||||||
|
\vspace{-3.5em}
|
||||||
|
$endfor$
|
||||||
|
}
|
||||||
|
|
||||||
|
\end{minipage}}
|
||||||
|
\hspace{-5pt}
|
||||||
|
% MAIN CONTENT
|
||||||
|
% ----------------------------------------------------------------------------
|
||||||
|
\noindent\fcolorbox{black}{content}{%
|
||||||
|
\begin{minipage}[t][\dimexpr\textheight-2\fboxsep-2\fboxrule\relax]{\dimexpr$content.width$\textwidth-2\fboxrule-2\fboxsep\relax}
|
||||||
|
\section*{Education}
|
||||||
|
\vspace {-9pt}
|
||||||
|
\hrule
|
||||||
|
\vspace {2pt}
|
||||||
|
\noindent
|
||||||
|
$for(education)$
|
||||||
|
$education.degree$ in \textbf{$education.major$}\\
|
||||||
|
\emph{$education.university$}
|
||||||
|
$if(education.completed)$
|
||||||
|
\\[4pt]
|
||||||
|
$else$
|
||||||
|
-- Currently attending\\[4pt]
|
||||||
|
$endif$
|
||||||
|
$endfor$
|
||||||
|
\vspace{-10pt}
|
||||||
|
|
||||||
|
$if(languages)$
|
||||||
|
\section*{Languages and Frameworks}
|
||||||
|
\vspace {-11pt}
|
||||||
|
\hrule
|
||||||
|
\vspace {8pt}
|
||||||
|
\begin{vwcol}[widths={1in, 1in, 1in}, justify=center]
|
||||||
|
$for(languages)$
|
||||||
|
\emph{$languages$}\\
|
||||||
|
$endfor$
|
||||||
|
\emph{\LaTeX}\\
|
||||||
|
\end{vwcol}
|
||||||
|
\vspace{10pt}
|
||||||
|
\begin{vwcol}[widths={1in, 1in, 1in}, justify=center]
|
||||||
|
$for(frameworks)$
|
||||||
|
\emph{$frameworks$}\\
|
||||||
|
$endfor$ \end{vwcol} $endif$
|
||||||
|
|
||||||
|
\vspace{-1em}
|
||||||
|
\section*{Experience}
|
||||||
|
\vspace {-10pt}
|
||||||
|
\hrule
|
||||||
|
\vspace{2pt}
|
||||||
|
\noindent
|
||||||
|
$for(experience)$
|
||||||
|
\textbf{\textsc{$experience.employer$}} --
|
||||||
|
\emph{$experience.title$} --
|
||||||
|
$experience.city$\\
|
||||||
|
$if(experience.show_dates)$
|
||||||
|
$experience.dates$\\
|
||||||
|
$endif$
|
||||||
|
$experience.description$\\[$par_separation$]
|
||||||
|
$endfor$
|
||||||
|
|
||||||
|
\vspace{-2em}
|
||||||
|
\section*{Research}
|
||||||
|
\vspace {-10pt}
|
||||||
|
\hrule
|
||||||
|
\vspace{2pt}
|
||||||
|
\noindent
|
||||||
|
$for(research)$
|
||||||
|
\textbf{\textsc{$research.university$}} --
|
||||||
|
\emph{$research.title$} --
|
||||||
|
$research.city$\\
|
||||||
|
$research.description$\\[$par_separation$]
|
||||||
|
$endfor$
|
||||||
|
|
||||||
|
\vspace{-1em}
|
||||||
|
\section*{Honors, Certifications, Licenses}
|
||||||
|
\vspace {-10pt}
|
||||||
|
\hrule
|
||||||
|
\vspace{2pt}
|
||||||
|
\noindent
|
||||||
|
\begin{multicols}{3}
|
||||||
|
\small{
|
||||||
|
\begin{itemize}
|
||||||
|
$for(honors)$
|
||||||
|
\item $honors$\\
|
||||||
|
$endfor$
|
||||||
|
\end{itemize}
|
||||||
|
}
|
||||||
|
\end{multicols}
|
||||||
|
\end{minipage}}
|
||||||
|
\end{document}
|
||||||
221
template_contract.tex
Normal file
221
template_contract.tex
Normal file
@@ -0,0 +1,221 @@
|
|||||||
|
%!TEX TS-program = xelatex
|
||||||
|
%!TEX encoding = UTF-8 Unicode
|
||||||
|
|
||||||
|
\documentclass[$fontsize$, letterpaper]{article}
|
||||||
|
|
||||||
|
% LAYOUT
|
||||||
|
%--------------------------------
|
||||||
|
% Margins
|
||||||
|
\usepackage{geometry}
|
||||||
|
\geometry{$geometry$}
|
||||||
|
|
||||||
|
% Do not indent paragraphs
|
||||||
|
\setlength\parindent{0in}
|
||||||
|
|
||||||
|
% Enable multicolumns
|
||||||
|
\usepackage{vwcol}
|
||||||
|
\usepackage{multicol}
|
||||||
|
|
||||||
|
% Colors
|
||||||
|
\usepackage{xcolor}
|
||||||
|
\definecolor{sidebar}{HTML}{$sidebar.color$}
|
||||||
|
\definecolor{content}{HTML}{$content.color$}
|
||||||
|
\definecolor{text}{HTML}{$text_color$}
|
||||||
|
\definecolor{accent}{HTML}{$accent_color$}
|
||||||
|
\color{text}
|
||||||
|
|
||||||
|
% Uncomment to suppress page numbers
|
||||||
|
\pagenumbering{gobble}
|
||||||
|
|
||||||
|
% LANGUAGE
|
||||||
|
%--------------------------------
|
||||||
|
% Set the main language
|
||||||
|
$if(lang)$
|
||||||
|
\usepackage{polyglossia}
|
||||||
|
\setmainlanguage{$lang$}
|
||||||
|
$endif$
|
||||||
|
|
||||||
|
% List Indents
|
||||||
|
\usepackage{enumitem}
|
||||||
|
|
||||||
|
% TYPOGRAPHY
|
||||||
|
%--------------------------------
|
||||||
|
\usepackage{fontawesome}
|
||||||
|
\usepackage{fontspec}
|
||||||
|
\usepackage{xunicode}
|
||||||
|
\usepackage{xltxtra}
|
||||||
|
% converts LaTeX specials (quotes, dashes etc.) to Unicode
|
||||||
|
\defaultfontfeatures{Mapping=tex-text}
|
||||||
|
\setromanfont [Ligatures={Common}, Numbers={OldStyle}]{$mainfont$}
|
||||||
|
% Cool ampersand
|
||||||
|
\newcommand{\amper}{{\fontspec[Scale=.95]{$mainfont$}\selectfont\itshape\&}}
|
||||||
|
% Font Awesome
|
||||||
|
|
||||||
|
% HEADINGS
|
||||||
|
%--------------------------------
|
||||||
|
\usepackage{sectsty}
|
||||||
|
\usepackage[normalem]{ulem}
|
||||||
|
\sectionfont{\rmfamily\mdseries}
|
||||||
|
\subsectionfont{\rmfamily\mdseries\scshape\normalsize}
|
||||||
|
\subsubsectionfont{\rmfamily\bfseries\upshape\normalsize}
|
||||||
|
|
||||||
|
% SHAMELESSLY STOLEN STUFF
|
||||||
|
% ----------------------------------------------------------------------------
|
||||||
|
% based on https://tex.stackexchange.com/questions/65731
|
||||||
|
\makeatletter
|
||||||
|
\def\cv@hrulefill{{\color{accent}\leavevmode\leaders\hrule height 1pt\hfill\kern\z@}}
|
||||||
|
|
||||||
|
% line before and after text (some tweaking is required here)
|
||||||
|
% based on https://tex.stackexchange.com/questions/15119
|
||||||
|
\NewDocumentCommand{\ruleline}{m}{\par\noindent\raisebox{\baselineskip/4}{\makebox[\linewidth]{\cv@hrulefill\hspace{1ex}\raisebox{-\baselineskip/4}{#1}\hspace{1ex}\cv@hrulefill}}}
|
||||||
|
\makeatother
|
||||||
|
|
||||||
|
% PDF SETUP
|
||||||
|
%--------------------------------
|
||||||
|
\usepackage{hyperref}
|
||||||
|
\hypersetup
|
||||||
|
{
|
||||||
|
pdfauthor={$name$},
|
||||||
|
pdfsubject={$name$'s CV},
|
||||||
|
pdftitle={$name$'s CV},
|
||||||
|
colorlinks, breaklinks, xetex, bookmarks,
|
||||||
|
filecolor=black,
|
||||||
|
urlcolor=[HTML]{$link_color$},
|
||||||
|
linkcolor=[HTML]{$link_color$},
|
||||||
|
citecolor=[HTML]{$link_color$}
|
||||||
|
}
|
||||||
|
|
||||||
|
%=============================================================================
|
||||||
|
\begin{document}
|
||||||
|
|
||||||
|
\setlength\fboxsep{0.2in}
|
||||||
|
\setlength\fboxrule{0pt}
|
||||||
|
|
||||||
|
% LEFT SIDEBAR
|
||||||
|
% ----------------------------------------------------------------------------
|
||||||
|
\noindent\fcolorbox{black}{sidebar}{%
|
||||||
|
\begin{minipage}[t][\dimexpr\textheight-2\fboxsep-2\fboxrule\relax]{\dimexpr$sidebar.width$\textwidth-2\fboxrule-2\fboxsep\relax}
|
||||||
|
|
||||||
|
\centering
|
||||||
|
\textbf{\textcolor{text}{{\LARGE $for(name)$$name$ $endfor$}}}\\
|
||||||
|
|
||||||
|
\vspace{0.5em}
|
||||||
|
%\hrule
|
||||||
|
\vspace{0.5em}
|
||||||
|
|
||||||
|
\small{
|
||||||
|
|
||||||
|
\ruleline{\normalsize{Profile}}
|
||||||
|
$if(profile)$
|
||||||
|
$profile$
|
||||||
|
$endif$
|
||||||
|
\vspace{1em}
|
||||||
|
|
||||||
|
$for(proficiencies)$
|
||||||
|
\ruleline{\normalsize{$proficiencies.name$}}
|
||||||
|
\vspace{-2.5em}
|
||||||
|
\begin{multicols}{2}
|
||||||
|
$for(proficiencies.list)$
|
||||||
|
$proficiencies.list$\\
|
||||||
|
$endfor$
|
||||||
|
\end{multicols}
|
||||||
|
\vspace{-0.5em}
|
||||||
|
$endfor$
|
||||||
|
|
||||||
|
\ruleline{Skills}
|
||||||
|
\vspace {-5em}
|
||||||
|
$for(skills)$
|
||||||
|
\subsection*{\center{\textbf{$skills.skill$}}}
|
||||||
|
\vspace{-0.5em}
|
||||||
|
\flushleft{
|
||||||
|
\emph{$skills.info$}\\
|
||||||
|
}
|
||||||
|
\vspace{-3.5em}
|
||||||
|
$endfor$
|
||||||
|
}
|
||||||
|
|
||||||
|
\vspace{4em}
|
||||||
|
\includegraphics[width=15em]{img/palski.png}
|
||||||
|
|
||||||
|
\end{minipage}}
|
||||||
|
\hspace{-5pt}
|
||||||
|
% MAIN CONTENT
|
||||||
|
% ----------------------------------------------------------------------------
|
||||||
|
\noindent\fcolorbox{black}{content}{%
|
||||||
|
\begin{minipage}[t][\dimexpr\textheight-2\fboxsep-2\fboxrule\relax]{\dimexpr$content.width$\textwidth-2\fboxrule-2\fboxsep\relax}
|
||||||
|
\section*{Education}
|
||||||
|
\vspace {-9pt}
|
||||||
|
\hrule
|
||||||
|
\vspace {2pt}
|
||||||
|
\noindent
|
||||||
|
$for(education)$
|
||||||
|
$education.degree$ in \textbf{$education.major$}\\
|
||||||
|
\emph{$education.university$}
|
||||||
|
$if(education.completed)$
|
||||||
|
\\[4pt]
|
||||||
|
$else$
|
||||||
|
-- Currently attending\\[4pt]
|
||||||
|
$endif$
|
||||||
|
$endfor$
|
||||||
|
\vspace{-10pt}
|
||||||
|
|
||||||
|
$if(languages)$
|
||||||
|
\section*{Languages and Frameworks}
|
||||||
|
\vspace {-11pt}
|
||||||
|
\hrule
|
||||||
|
\vspace {8pt}
|
||||||
|
\begin{vwcol}[widths={1in, 1in, 1in}, justify=center]
|
||||||
|
$for(languages)$
|
||||||
|
\emph{$languages$}\\
|
||||||
|
$endfor$
|
||||||
|
\emph{\LaTeX}\\
|
||||||
|
\end{vwcol}
|
||||||
|
\vspace{10pt}
|
||||||
|
\begin{vwcol}[widths={1in, 1in, 1in}, justify=center]
|
||||||
|
$for(frameworks)$
|
||||||
|
\emph{$frameworks$}\\
|
||||||
|
$endfor$ \end{vwcol} $endif$
|
||||||
|
|
||||||
|
\vspace{-1em}
|
||||||
|
\section*{Experience}
|
||||||
|
\vspace {-10pt}
|
||||||
|
\hrule
|
||||||
|
\vspace{2pt}
|
||||||
|
\noindent
|
||||||
|
$for(experience)$
|
||||||
|
\textbf{\textsc{$experience.employer$}} --
|
||||||
|
\emph{$experience.title$} --
|
||||||
|
$experience.city$\\
|
||||||
|
$experience.description$\\[$par_separation$]
|
||||||
|
$endfor$
|
||||||
|
|
||||||
|
\vspace{-2em}
|
||||||
|
\section*{Research}
|
||||||
|
\vspace {-10pt}
|
||||||
|
\hrule
|
||||||
|
\vspace{2pt}
|
||||||
|
\noindent
|
||||||
|
$for(research)$
|
||||||
|
\textbf{\textsc{$research.university$}} --
|
||||||
|
\emph{$research.title$} --
|
||||||
|
$research.city$\\
|
||||||
|
$research.description$\\[$par_separation$]
|
||||||
|
$endfor$
|
||||||
|
|
||||||
|
\vspace{-1em}
|
||||||
|
\section*{Honors, Certifications, Licenses}
|
||||||
|
\vspace {-10pt}
|
||||||
|
\hrule
|
||||||
|
\vspace{2pt}
|
||||||
|
\noindent
|
||||||
|
\begin{multicols}{3}
|
||||||
|
\small{
|
||||||
|
\begin{itemize}
|
||||||
|
$for(honors)$
|
||||||
|
\item $honors$\\
|
||||||
|
$endfor$
|
||||||
|
\end{itemize}
|
||||||
|
}
|
||||||
|
\end{multicols}
|
||||||
|
\end{minipage}}
|
||||||
|
\end{document}
|
||||||
@@ -1,159 +0,0 @@
|
|||||||
\let\tikz@lib@nf@textheight\relax
|
|
||||||
\let\tikz@lib@nf@textdepth\relax
|
|
||||||
\let\tikz@lib@nf@textwidth\relax
|
|
||||||
\tikzset{
|
|
||||||
Minimum Width/.code={%
|
|
||||||
\pgfutil@ifundefined{\pgfpictureid @#1@width}{}{%
|
|
||||||
\tikzset{/tikz/minimum width/.expand twice=+\csname\pgfpictureid @#1@width\endcsname}%
|
|
||||||
}%
|
|
||||||
\tikz@addmode{\pgfmathsetlengthmacro\tikz@lib@nf@outerxsep{\pgfkeysvalueof{/pgf/outer xsep}}\global\let\tikz@lib@nf@outerxsep\tikz@lib@nf@outerxsep}%
|
|
||||||
\tikzset{
|
|
||||||
prefix after command={%
|
|
||||||
\pgfextra
|
|
||||||
\pgfinterruptpath
|
|
||||||
\pgfsettransform{\csname pgf@sh@nt@\tikzlastnode\endcsname}%
|
|
||||||
\pgfpointanchor{\tikzlastnode}{east}%
|
|
||||||
\pgf@xa=\pgf@x \pgf@ya=\pgf@y
|
|
||||||
\pgfpointanchor{\tikzlastnode}{west}%
|
|
||||||
\advance\pgf@xa-\pgf@x
|
|
||||||
\advance\pgf@ya-\pgf@y
|
|
||||||
\pgfmathveclen@{\pgf@sys@tonumber\pgf@xa}{\pgf@sys@tonumber\pgf@ya}%
|
|
||||||
\pgf@x\pgfmathresult pt\relax
|
|
||||||
\advance\pgf@x-\tikz@lib@nf@outerxsep
|
|
||||||
\advance\pgf@x-\tikz@lib@nf@outerxsep
|
|
||||||
\pgfutil@ifundefined{\pgfpictureid @#1@width}{%
|
|
||||||
\expandafter\xdef\csname\pgfpictureid @#1@width\endcsname{\the\pgf@x}%
|
|
||||||
}{%
|
|
||||||
\expandafter\ifdim\csname\pgfpictureid @#1@width\endcsname<\pgf@x
|
|
||||||
\expandafter\xdef\csname\pgfpictureid @#1@width\endcsname{\the\pgf@x}%
|
|
||||||
\fi
|
|
||||||
}%
|
|
||||||
\expandafter\expandafter\expandafter\gdef\expandafter\expandafter\expandafter
|
|
||||||
\tikz@atend@picture\expandafter\expandafter\expandafter{\expandafter\tikz@atend@picture\expandafter\tikz@lib@nf@save\expandafter{\pgfpictureid}{#1}{width}{width}}
|
|
||||||
\endpgfinterruptpath
|
|
||||||
\endpgfextra
|
|
||||||
}%
|
|
||||||
}%
|
|
||||||
},
|
|
||||||
Minimum Height/.code={%
|
|
||||||
\pgfutil@ifundefined{\pgfpictureid @#1@height}{}{%
|
|
||||||
\tikzset{/tikz/minimum height/.expand twice=+\csname\pgfpictureid @#1@height\endcsname}%
|
|
||||||
}%
|
|
||||||
\tikz@addmode{\pgfmathsetlengthmacro\tikz@lib@nf@outerysep{\pgfkeysvalueof{/pgf/outer ysep}}\global\let\tikz@lib@nf@outerysep\tikz@lib@nf@outerysep}%
|
|
||||||
\tikzset{
|
|
||||||
prefix after command={%
|
|
||||||
\pgfextra
|
|
||||||
\pgfinterruptpath
|
|
||||||
\pgfsettransform{\csname pgf@sh@nt@\tikzlastnode\endcsname}%
|
|
||||||
\pgfpointanchor{\tikzlastnode}{north}%
|
|
||||||
\pgf@xa=\pgf@x \pgf@ya=\pgf@y
|
|
||||||
\pgfpointanchor{\tikzlastnode}{south}%
|
|
||||||
\advance\pgf@xa-\pgf@x
|
|
||||||
\advance\pgf@ya-\pgf@y
|
|
||||||
\pgfmathveclen@{\pgf@sys@tonumber\pgf@xa}{\pgf@sys@tonumber\pgf@ya}%
|
|
||||||
\pgf@x\pgfmathresult pt\relax
|
|
||||||
\advance\pgf@x-\tikz@lib@nf@outerysep
|
|
||||||
\advance\pgf@x-\tikz@lib@nf@outerysep
|
|
||||||
\pgfutil@ifundefined{\pgfpictureid @#1@height}{%
|
|
||||||
\expandafter\xdef\csname\pgfpictureid @#1@height\endcsname{\the\pgf@x}%
|
|
||||||
}{%
|
|
||||||
\expandafter\ifdim\csname\pgfpictureid @#1@height\endcsname<\pgf@x
|
|
||||||
\expandafter\xdef\csname\pgfpictureid @#1@height\endcsname{\the\pgf@x}%
|
|
||||||
\fi
|
|
||||||
}%
|
|
||||||
\expandafter\expandafter\expandafter\gdef\expandafter\expandafter\expandafter
|
|
||||||
\tikz@atend@picture\expandafter\expandafter\expandafter{\expandafter\tikz@atend@picture\expandafter\tikz@lib@nf@save\expandafter{\pgfpictureid}{#1}{height}{height}}
|
|
||||||
\endpgfinterruptpath
|
|
||||||
\endpgfextra
|
|
||||||
}%
|
|
||||||
}%
|
|
||||||
},
|
|
||||||
Minimum Size/.style={
|
|
||||||
Minimum Height={#1},
|
|
||||||
Minimum Width={#1}},
|
|
||||||
Text Height/.code=\edef\tikz@lib@nf@textheight{#1},
|
|
||||||
Text Depth/.code= \edef\tikz@lib@nf@textdepth{#1},
|
|
||||||
Text Width/.code=%
|
|
||||||
\edef\tikz@lib@nf@textwidth{#1}%
|
|
||||||
\pgfutil@ifundefined{\pgfpictureid @#1@textwidth}{}{%
|
|
||||||
\tikzset{text width/.expand twice=+\csname\pgfpictureid @#1@textwidth\endcsname}%
|
|
||||||
}%
|
|
||||||
}
|
|
||||||
|
|
||||||
\def\tikz@lib@nf@text@#1#2#3{%
|
|
||||||
\expandafter\ifx\csname tikz@lib@nf@#3\endcsname\relax\else
|
|
||||||
\ifx#1\wd\def\tikz@temp{@}\else\let\tikz@temp\pgfutil@empty\fi
|
|
||||||
\expandafter\ifx\csname tikz@lib@nf@#3\tikz@temp\endcsname\pgfutil@empty\else
|
|
||||||
\pgfutil@ifundefined{\pgfpictureid @\csname tikz@lib@nf@#3\endcsname @#3\tikz@temp}{%
|
|
||||||
\expandafter\xdef\csname\pgfpictureid @\csname tikz@lib@nf@#3\endcsname @#3\tikz@temp\endcsname{\the#1#2}%
|
|
||||||
}{%
|
|
||||||
\ifdim\csname\pgfpictureid @\csname tikz@lib@nf@#3\endcsname @#3\tikz@temp\endcsname<#1#2
|
|
||||||
\expandafter\xdef\csname\pgfpictureid @\csname tikz@lib@nf@#3\endcsname @#3\tikz@temp\endcsname{\the#1#2}%
|
|
||||||
\else
|
|
||||||
\ifx#1\wd\else
|
|
||||||
#1#2=\csname\pgfpictureid @\csname tikz@lib@nf@#3\endcsname @#3\endcsname\relax
|
|
||||||
\fi
|
|
||||||
\fi
|
|
||||||
}%
|
|
||||||
\edef\tikz@temp{\noexpand\tikz@lib@nf@save{\pgfpictureid}{\csname tikz@lib@nf@#3\endcsname}{#3}{#3\tikz@temp}}%
|
|
||||||
\expandafter\expandafter\expandafter\gdef\expandafter\expandafter\expandafter
|
|
||||||
\tikz@atend@picture\expandafter\expandafter\expandafter{\expandafter\tikz@atend@picture\tikz@temp}%
|
|
||||||
\fi
|
|
||||||
\fi
|
|
||||||
}
|
|
||||||
%%% Redefinition
|
|
||||||
\def\tikz@fig@continue{%
|
|
||||||
\ifx\tikz@text@width\pgfutil@empty%
|
|
||||||
\else%
|
|
||||||
\pgfmathsetlength{\pgf@x}{\tikz@text@width}%
|
|
||||||
\wd\pgfnodeparttextbox=\pgf@x%
|
|
||||||
\fi%
|
|
||||||
\ifx\tikz@text@height\pgfutil@empty%
|
|
||||||
\else%
|
|
||||||
\pgfmathsetlength{\pgf@x}{\tikz@text@height}%
|
|
||||||
\ht\pgfnodeparttextbox=\pgf@x%
|
|
||||||
\fi%
|
|
||||||
\ifx\tikz@text@depth\pgfutil@empty%
|
|
||||||
\else%
|
|
||||||
\pgfmathsetlength{\pgf@x}{\tikz@text@depth}%
|
|
||||||
\dp\pgfnodeparttextbox=\pgf@x%
|
|
||||||
\fi%
|
|
||||||
%
|
|
||||||
%
|
|
||||||
%
|
|
||||||
\tikz@lib@nf@text@\ht\pgfnodeparttextbox{textheight}%
|
|
||||||
\tikz@lib@nf@text@\dp\pgfnodeparttextbox{textdepth}%
|
|
||||||
\tikz@lib@nf@text@\wd\pgfnodeparttextbox{textwidth}%
|
|
||||||
%
|
|
||||||
% Node transformation
|
|
||||||
%
|
|
||||||
\tikz@node@transformations
|
|
||||||
%
|
|
||||||
\setbox\tikz@figbox=\hbox{%
|
|
||||||
\setbox\pgfutil@tempboxa=\copy\tikz@figbox%
|
|
||||||
\unhbox\pgfutil@tempboxa%
|
|
||||||
\hbox{{%
|
|
||||||
\pgfinterruptpath%
|
|
||||||
\pgfscope%
|
|
||||||
\tikz@options%
|
|
||||||
\setbox\tikz@figbox=\box\pgfutil@voidb@x%
|
|
||||||
\pgfmultipartnode{\tikz@shape}{\tikz@anchor}{\tikz@fig@name}{%
|
|
||||||
\pgfutil@tempdima=\pgflinewidth%
|
|
||||||
{\begingroup\tikz@finish}%
|
|
||||||
\global\pgflinewidth=\pgfutil@tempdima%
|
|
||||||
}%
|
|
||||||
\endpgfscope
|
|
||||||
\endpgfinterruptpath%
|
|
||||||
}}%
|
|
||||||
}%
|
|
||||||
%
|
|
||||||
\tikz@alias%
|
|
||||||
\tikz@node@finish%
|
|
||||||
}
|
|
||||||
\def\tikz@lib@nf@save#1#2#3#4{%
|
|
||||||
\pgfutil@ifundefined{#1@#2@#3@done}{%
|
|
||||||
\expandafter\let\csname#1@#2@#3@done\endcsname\pgfutil@empty%
|
|
||||||
\immediate\write\pgfutil@auxout{\noexpand\expandafter\noexpand\gdef\noexpand\csname#1@#2@#3\endcsname{\csname#1@#2@#4\endcsname}}
|
|
||||||
}{}%
|
|
||||||
}
|
|
||||||
\endinput
|
|
||||||
Reference in New Issue
Block a user