Merge branch 'typst-refactor' into 'Development'
feat!: migrate resume to typst with nix flakes backing See merge request philler/resume!1
This commit is contained in:
commit
0620015792
12
.gitignore
vendored
12
.gitignore
vendored
@ -1,8 +1,4 @@
|
|||||||
*
|
result
|
||||||
!.gitignore
|
conf.typ
|
||||||
!developercv.cls
|
*.pdf
|
||||||
!fontawesome.pdf
|
*.gz
|
||||||
!resume.tex
|
|
||||||
!.gitlab-ci.yml
|
|
||||||
!TODO.norg
|
|
||||||
!README.md
|
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
stages:
|
stages:
|
||||||
|
- setup
|
||||||
- build
|
- build
|
||||||
- upload
|
- upload
|
||||||
- release
|
- release
|
||||||
@ -11,36 +12,10 @@ variables:
|
|||||||
|
|
||||||
build:
|
build:
|
||||||
stage: build
|
stage: build
|
||||||
image: alpine:latest
|
image: nixos/nix:latest
|
||||||
variables:
|
|
||||||
TECTONIC_DEPS_CACHE_PATH: "${CI_PROJECT_DIR}/.cache/Tectonic"
|
|
||||||
TECTONIC_BIN_CACHE_PATH: "${CI_PROJECT_DIR}/tectonic"
|
|
||||||
cache:
|
|
||||||
policy: pull-push
|
|
||||||
when: on_success
|
|
||||||
paths:
|
|
||||||
- "${TECTONIC_DEPS_CACHE_PATH}"
|
|
||||||
- "${TECTONIC_BIN_CACHE_PATH}"
|
|
||||||
script: |
|
script: |
|
||||||
mkdir -p "${CI_PROJECT_DIR}/.cache"
|
nix --extra-experimental-features "flakes nix-command" build
|
||||||
mkdir -p "${HOME}/.cache"
|
mv "./result/${RESUME_FILE}" $(pwd)
|
||||||
if [ -r "${TECTONIC_DEPS_CACHE_PATH}" ]; then
|
|
||||||
mv "${TECTONIC_DEPS_CACHE_PATH}" "${HOME}/.cache"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if ! [ -x ./tectonic ]; then
|
|
||||||
echo "Cache miss, tectonic binary not in cache! Redownloading!"
|
|
||||||
apk update
|
|
||||||
apk add curl
|
|
||||||
curl -L0 https://github.com/tectonic-typesetting/tectonic/releases/download/tectonic%400.14.1/tectonic-0.14.1-x86_64-unknown-linux-musl.tar.gz --output tectonic.tar.gz
|
|
||||||
tar -xf tectonic.tar.gz
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "Compiling resume!"
|
|
||||||
./tectonic -X compile --keep-logs ./resume.tex
|
|
||||||
echo "Finished compiling resume, saving caches"
|
|
||||||
|
|
||||||
mv "${HOME}/.cache/Tectonic" "${CI_PROJECT_DIR}/.cache/Tectonic"
|
|
||||||
artifacts:
|
artifacts:
|
||||||
expire_in: 1 week
|
expire_in: 1 week
|
||||||
paths:
|
paths:
|
||||||
|
252
developercv.cls
252
developercv.cls
@ -1,252 +0,0 @@
|
|||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
||||||
% Developer CV
|
|
||||||
% LaTeX Class
|
|
||||||
% Version 1.0 (28/1/19)
|
|
||||||
%
|
|
||||||
% This class originates from:
|
|
||||||
% http://www.LaTeXTemplates.com
|
|
||||||
%
|
|
||||||
% Authors:
|
|
||||||
% Jan Vorisek (jan@vorisek.me)
|
|
||||||
% Based on a template by Jan Küster (info@jankuester.com)
|
|
||||||
% Modified for LaTeX Templates by Vel (vel@LaTeXTemplates.com)
|
|
||||||
%
|
|
||||||
% License:
|
|
||||||
% The MIT License (see included LICENSE file)
|
|
||||||
%
|
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
||||||
|
|
||||||
%----------------------------------------------------------------------------------------
|
|
||||||
% Colors
|
|
||||||
%----------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
\usepackage{pagecolor}
|
|
||||||
\definecolor{SumiInk0}{HTML}{16161D}
|
|
||||||
\definecolor{SumiInk1}{HTML}{181820}
|
|
||||||
\definecolor{SumiInk2}{HTML}{1a1a22}
|
|
||||||
\definecolor{SumiInk3}{HTML}{1F1F28}
|
|
||||||
\definecolor{SumiInk4}{HTML}{2A2A37}
|
|
||||||
\definecolor{SumiInk5}{HTML}{363646}
|
|
||||||
\definecolor{SumiInk6}{HTML}{54546D}
|
|
||||||
\definecolor{WaveBlue1}{HTML}{223249}
|
|
||||||
\definecolor{WaveBlue2}{HTML}{2D4F67}
|
|
||||||
\definecolor{WinterGreen}{HTML}{2B3328}
|
|
||||||
\definecolor{WinterYellow}{HTML}{49443C}
|
|
||||||
\definecolor{WinterRed}{HTML}{43242B}
|
|
||||||
\definecolor{WinterBlue}{HTML}{252535}
|
|
||||||
\definecolor{AutumnGreen}{HTML}{76946A}
|
|
||||||
\definecolor{AutumnRed}{HTML}{C34043}
|
|
||||||
\definecolor{AutumnYellow}{HTML}{DCA561}
|
|
||||||
\definecolor{SamuraiRed}{HTML}{E82424}
|
|
||||||
\definecolor{RoninYellow}{HTML}{FF9E3B}
|
|
||||||
\definecolor{WaveAqua1}{HTML}{6A9589}
|
|
||||||
\definecolor{DragonBlue}{HTML}{658594}
|
|
||||||
\definecolor{OldWhite}{HTML}{C8C093}
|
|
||||||
\definecolor{FujiWhite}{HTML}{DCD7BA}
|
|
||||||
\definecolor{FujiGray}{HTML}{727169}
|
|
||||||
\definecolor{OniViolet}{HTML}{957FB8}
|
|
||||||
\definecolor{OniViolet2}{HTML}{b8b4d0}
|
|
||||||
\definecolor{CrystalBlue}{HTML}{7E9CD8}
|
|
||||||
\definecolor{SpringViolet1}{HTML}{938AA9}
|
|
||||||
\definecolor{SpringViolet2}{HTML}{9CABCA}
|
|
||||||
\definecolor{SpringBlue}{HTML}{7FB4CA}
|
|
||||||
\definecolor{LightBlue}{HTML}{A3D4D5}
|
|
||||||
\definecolor{WaveAqua2}{HTML}{7AA89F}
|
|
||||||
\definecolor{SpringGreen}{HTML}{98BB6C}
|
|
||||||
\definecolor{BoatYellow1}{HTML}{938056}
|
|
||||||
\definecolor{BoatYellow2}{HTML}{C0A36E}
|
|
||||||
\definecolor{CarpYellow}{HTML}{E6C384}
|
|
||||||
\definecolor{SakuraPink}{HTML}{D27E99}
|
|
||||||
\definecolor{WaveRed}{HTML}{E46876}
|
|
||||||
\definecolor{PeachRed}{HTML}{FF5D62}
|
|
||||||
\definecolor{SurimiOrange}{HTML}{FFA066}
|
|
||||||
\definecolor{KatanaGray}{HTML}{717C7C}
|
|
||||||
|
|
||||||
%----------------------------------------------------------------------------------------
|
|
||||||
% CLASS CONFIGURATION
|
|
||||||
%----------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
\NeedsTeXFormat{LaTeX2e}
|
|
||||||
\ProvidesClass{developercv}[2019/01/28 Developer CV class v1.0]
|
|
||||||
|
|
||||||
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{extarticle}} % Pass through any options to the base class
|
|
||||||
\ProcessOptions\relax % Process given options
|
|
||||||
|
|
||||||
\LoadClass{extarticle} % Load the base class
|
|
||||||
|
|
||||||
%----------------------------------------------------------------------------------------
|
|
||||||
% PACKAGES AND OTHER DOCUMENT CONFIGURATIONS
|
|
||||||
%----------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
\setlength{\parindent}{0mm} % Suppress paragraph indentation
|
|
||||||
|
|
||||||
\usepackage[hidelinks]{hyperref} % Required for links but hide the default boxes around links
|
|
||||||
|
|
||||||
\newcommand{\lorem}{Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus.} % Dummy text
|
|
||||||
|
|
||||||
\pagestyle{empty} % No headers or footers
|
|
||||||
|
|
||||||
\usepackage{moresize} % Provides more font size commands (\HUGE and \ssmall)
|
|
||||||
|
|
||||||
%----------------------------------------------------------------------------------------
|
|
||||||
% PAGE LAYOUT
|
|
||||||
%----------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
\usepackage{geometry} % Required for adjusting page dimensions and margins
|
|
||||||
|
|
||||||
\geometry{
|
|
||||||
paper=a4paper, % Paper size, change to letterpaper for US letter size
|
|
||||||
top=1.75cm, % Top margin
|
|
||||||
bottom=1.75cm, % Bottom margin
|
|
||||||
left=2cm, % Left margin
|
|
||||||
right=2cm, % Right margin
|
|
||||||
headheight=0.75cm, % Header height
|
|
||||||
footskip=1cm, % Space from the bottom margin to the baseline of the footer
|
|
||||||
headsep=0.5cm, % Space from the top margin to the baseline of the header
|
|
||||||
%showframe, % Uncomment to show how the type block is set on the page
|
|
||||||
}
|
|
||||||
|
|
||||||
%----------------------------------------------------------------------------------------
|
|
||||||
% FONTS
|
|
||||||
%----------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
\usepackage[utf8]{inputenc} % Required for inputting international characters
|
|
||||||
\usepackage[T1]{fontenc} % Output font encoding for international characters
|
|
||||||
|
|
||||||
\usepackage[default]{raleway}
|
|
||||||
%\usepackage[defaultsans]{droidsans}
|
|
||||||
%\usepackage{cmbright}
|
|
||||||
%\usepackage{fetamont}
|
|
||||||
%\usepackage[default]{gillius}
|
|
||||||
%\usepackage{roboto}
|
|
||||||
|
|
||||||
\renewcommand*\familydefault{\sfdefault} % Force the sans-serif version of any font used
|
|
||||||
|
|
||||||
%------------------------------------------------
|
|
||||||
|
|
||||||
\usepackage{fontawesome} % Required for FontAwesome icons
|
|
||||||
|
|
||||||
% Command to output an icon in a SumiInk5 square box with text to the right
|
|
||||||
\newcommand{\icon}[3]{% The first parameter is the FontAwesome icon name, the second is the box size and the third is the text
|
|
||||||
\vcenteredhbox{\colorbox{SumiInk5}{\makebox(#2, #2){\textcolor{FujiWhite}{\large\csname fa#1\endcsname}}}}% Icon and box
|
|
||||||
\hspace{0.2cm}% FujiWhitespace
|
|
||||||
\vcenteredhbox{\textcolor{FujiWhite}{#3}}% Text
|
|
||||||
}
|
|
||||||
|
|
||||||
%----------------------------------------------------------------------------------------
|
|
||||||
% GRAPHICS DEFINITIONS
|
|
||||||
%----------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
\usepackage{tikz} % Required for creating the plots
|
|
||||||
\usetikzlibrary{shapes, backgrounds}
|
|
||||||
\tikzset{x=1cm, y=1cm} % Default tikz units
|
|
||||||
|
|
||||||
% Command to vertically centre adjacent content
|
|
||||||
\newcommand{\vcenteredhbox}[1]{% The only parameter is for the content to centre
|
|
||||||
\begingroup%
|
|
||||||
\setbox0=\hbox{#1}\parbox{\wd0}{\box0}%
|
|
||||||
\endgroup%
|
|
||||||
}
|
|
||||||
|
|
||||||
%----------------------------------------------------------------------------------------
|
|
||||||
% CHARTS
|
|
||||||
%----------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
\newcounter{barcount}
|
|
||||||
|
|
||||||
% Environment to hold a new bar chart
|
|
||||||
\newenvironment{barchart}[1]{ % The only parameter is the maximum bar width, in cm
|
|
||||||
\newcommand{\barwidth}{0.35}
|
|
||||||
\newcommand{\barsep}{0.2}
|
|
||||||
|
|
||||||
% Command to add a bar to the bar chart
|
|
||||||
\newcommand{\baritem}[2]{ % The first argument is the bar label and the second is the percentage the current bar should take up of the total width
|
|
||||||
\pgfmathparse{##2}
|
|
||||||
\let\perc\pgfmathresult
|
|
||||||
|
|
||||||
\pgfmathparse{#1}
|
|
||||||
\let\barsize\pgfmathresult
|
|
||||||
|
|
||||||
\pgfmathparse{\barsize*##2/100}
|
|
||||||
\let\barone\pgfmathresult
|
|
||||||
|
|
||||||
\pgfmathparse{(\barwidth*\thebarcount)+(\barsep*\thebarcount)}
|
|
||||||
\let\barx\pgfmathresult
|
|
||||||
|
|
||||||
\filldraw[fill=SurimiOrange, draw=none] (0,-\barx) rectangle (\barone,-\barx-\barwidth);
|
|
||||||
|
|
||||||
\node [label=180:\colorbox{SumiInk5}{\textcolor{SurimiOrange}{##1}}] at (0,-\barx-0.175) {};
|
|
||||||
\addtocounter{barcount}{1}
|
|
||||||
}
|
|
||||||
\begin{tikzpicture}
|
|
||||||
\setcounter{barcount}{0}
|
|
||||||
}{
|
|
||||||
\end{tikzpicture}
|
|
||||||
}
|
|
||||||
|
|
||||||
%------------------------------------------------
|
|
||||||
|
|
||||||
\newcounter{a}
|
|
||||||
\newcounter{b}
|
|
||||||
\newcounter{c}
|
|
||||||
|
|
||||||
% Command to output a number of automatically-sized bubbles from a string in the format of '<size>/<label>', e.g. \bubbles{5/Eclipse, 6/git, 4/Office, 3/Inkscape, 3/Blender}
|
|
||||||
\newcommand{\bubbles}[1]{
|
|
||||||
% Reset counters
|
|
||||||
\setcounter{a}{0}
|
|
||||||
\setcounter{c}{150}
|
|
||||||
|
|
||||||
\begin{tikzpicture}[scale=3]
|
|
||||||
\foreach \p/\t in {#1} {
|
|
||||||
\addtocounter{a}{1}
|
|
||||||
\bubble{\thea/2}{\theb}{\p/25}{\t}{1\p0}
|
|
||||||
}
|
|
||||||
\end{tikzpicture}
|
|
||||||
}
|
|
||||||
|
|
||||||
% Command to output a bubble at a specific position with a specific size
|
|
||||||
\newcommand{\bubble}[5]{
|
|
||||||
\filldraw[fill=SumiInk5, draw=none] (#1,0.5) circle (#3); % Bubble
|
|
||||||
\node[label=\textcolor{SumiInk5}{#4}] at (#1,0.7) {}; % Label
|
|
||||||
}
|
|
||||||
|
|
||||||
%----------------------------------------------------------------------------------------
|
|
||||||
% CUSTOM SECTIONS
|
|
||||||
%----------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
% Command to output section title headings
|
|
||||||
\newcommand{\cvsect}[1]{% The only parameter is the section text
|
|
||||||
\vspace{\baselineskip} % FujiWhitespace before the section title
|
|
||||||
\colorbox{SumiInk5}{\textcolor{FujiWhite}{\MakeUppercase{\textbf{#1}}}}\\% Section title
|
|
||||||
}
|
|
||||||
|
|
||||||
%----------------------------------------------------------------------------------------
|
|
||||||
% ENTRY LIST
|
|
||||||
%----------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
\usepackage{longtable} % Required for tables that span multiple pages
|
|
||||||
\setlength{\LTpre}{0pt} % Remove default FujiWhitespace before longtable
|
|
||||||
\setlength{\LTpost}{0pt} % Remove default FujiWhitespace after longtable
|
|
||||||
|
|
||||||
\setlength{\tabcolsep}{0pt} % No spacing between table columns
|
|
||||||
|
|
||||||
% Environment to hold a new list of entries
|
|
||||||
\newenvironment{entrylist}{
|
|
||||||
\begin{longtable}[H]{l l}
|
|
||||||
}{
|
|
||||||
\end{longtable}
|
|
||||||
}
|
|
||||||
|
|
||||||
\newcommand{\entry}[4]{% First argument for the leftmost date(s) text, second is for the bold entry heading, third is for the bold right-aligned entry qualifier and the fourth is for the entry description
|
|
||||||
\parbox[t]{0.175\textwidth}{% 17.5% of the text width of the page
|
|
||||||
#1 % Leftmost entry date(s) text
|
|
||||||
}%
|
|
||||||
&\parbox[t]{0.825\textwidth}{% 82.5% of the text width of the page
|
|
||||||
\textbf{#2}% Entry heading text
|
|
||||||
\hfill% Horizontal FujiWhitespace
|
|
||||||
{\footnotesize \textbf{\textcolor{OldWhite}{#3}}}\\% Right-aligned entry qualifier text
|
|
||||||
#4 % Entry description text
|
|
||||||
}\\\\}
|
|
||||||
|
|
||||||
% Command to output a separator slash between lists, e.g. ' / '
|
|
||||||
\newcommand{\slashsep}{\hspace{3mm}/\hspace{3mm}}
|
|
170
flake.lock
Normal file
170
flake.lock
Normal file
@ -0,0 +1,170 @@
|
|||||||
|
{
|
||||||
|
"nodes": {
|
||||||
|
"crane": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"typst",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1698166613,
|
||||||
|
"narHash": "sha256-y4rdN4flxRiROqNi1waMYIZj/Fs7L2OrszFk/1ry9vU=",
|
||||||
|
"owner": "ipetkov",
|
||||||
|
"repo": "crane",
|
||||||
|
"rev": "b7db46f0f1751f7b1d1911f6be7daf568ad5bc65",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "ipetkov",
|
||||||
|
"repo": "crane",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-parts": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs-lib": "nixpkgs-lib"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1696343447,
|
||||||
|
"narHash": "sha256-B2xAZKLkkeRFG5XcHHSXXcP7To9Xzr59KXeZiRf4vdQ=",
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "flake-parts",
|
||||||
|
"rev": "c9afaba3dfa4085dbd2ccb38dfade5141e33d9d4",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"id": "flake-parts",
|
||||||
|
"type": "indirect"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-utils": {
|
||||||
|
"inputs": {
|
||||||
|
"systems": "systems"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1705309234,
|
||||||
|
"narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1705677747,
|
||||||
|
"narHash": "sha256-eyM3okYtMgYDgmYukoUzrmuoY4xl4FUujnsv/P6I/zI=",
|
||||||
|
"owner": "nixos",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "bbe7d8f876fbbe7c959c90ba2ae2852220573261",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nixos",
|
||||||
|
"ref": "nixos-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs-lib": {
|
||||||
|
"locked": {
|
||||||
|
"dir": "lib",
|
||||||
|
"lastModified": 1696019113,
|
||||||
|
"narHash": "sha256-X3+DKYWJm93DRSdC5M6K5hLqzSya9BjibtBsuARoPco=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "f5892ddac112a1e9b3612c39af1b72987ee5783a",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"dir": "lib",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixos-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_2": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1698318101,
|
||||||
|
"narHash": "sha256-gUihHt3yPD7bVqg+k/UVHgngyaJ3DMEBchbymBMvK1E=",
|
||||||
|
"owner": "nixos",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "63678e9f3d3afecfeafa0acead6239cdb447574c",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nixos",
|
||||||
|
"ref": "nixos-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-utils": "flake-utils",
|
||||||
|
"nixpkgs": "nixpkgs",
|
||||||
|
"typst": "typst"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems_2": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"typst": {
|
||||||
|
"inputs": {
|
||||||
|
"crane": "crane",
|
||||||
|
"flake-parts": "flake-parts",
|
||||||
|
"nixpkgs": "nixpkgs_2",
|
||||||
|
"systems": "systems_2"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1705584441,
|
||||||
|
"narHash": "sha256-xTat1Xc46hSLy7rkNnSnqgnB4YVvG6EkL6vpsWHcUv0=",
|
||||||
|
"owner": "typst",
|
||||||
|
"repo": "typst",
|
||||||
|
"rev": "f27321b269e8e258cdb1322ed399c22711bbfaa8",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "typst",
|
||||||
|
"repo": "typst",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": "root",
|
||||||
|
"version": 7
|
||||||
|
}
|
32
flake.nix
Normal file
32
flake.nix
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
{
|
||||||
|
description = "Price Hiller's Resume";
|
||||||
|
inputs = {
|
||||||
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||||
|
typst.url = "github:typst/typst";
|
||||||
|
flake-utils.url = "github:numtide/flake-utils";
|
||||||
|
};
|
||||||
|
|
||||||
|
outputs = { self, nixpkgs, typst, flake-utils }:
|
||||||
|
flake-utils.lib.eachDefaultSystem (system:
|
||||||
|
let pkgs = nixpkgs.legacyPackages.${system};
|
||||||
|
in rec {
|
||||||
|
packages.default = pkgs.stdenvNoCC.mkDerivation {
|
||||||
|
name = "priceh-resume";
|
||||||
|
src = self;
|
||||||
|
buildInputs = [ typst.packages.${system}.typst-dev ];
|
||||||
|
buildPhase = ''
|
||||||
|
ls -alh
|
||||||
|
typst compile ./resume.typ
|
||||||
|
'';
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p "$out"
|
||||||
|
rm -rf "$out/*" || true
|
||||||
|
cp resume.pdf $out/
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
overlays.default = packages.default;
|
||||||
|
# Rust dev environment
|
||||||
|
devShells.default =
|
||||||
|
pkgs.mkShell { packages = with pkgs; [ typst typstfmt ]; };
|
||||||
|
});
|
||||||
|
}
|
BIN
fontawesome.pdf
BIN
fontawesome.pdf
Binary file not shown.
217
resume.tex
217
resume.tex
@ -1,217 +0,0 @@
|
|||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
||||||
% Developer CV
|
|
||||||
% LaTeX Template
|
|
||||||
% Version 1.0 (28/1/19)
|
|
||||||
%
|
|
||||||
% This template originates from:
|
|
||||||
% http://www.LaTeXTemplates.com
|
|
||||||
%
|
|
||||||
% Authors:
|
|
||||||
% Jan Vorisek (jan@vorisek.me) <- This guy is a chad, I modified some of this stuff quite heavily. Still, credit where
|
|
||||||
% it's due
|
|
||||||
% Based on a template by Jan Küster (info@jankuester.com)
|
|
||||||
% Modified for LaTeX Templates by Vel (vel@LaTeXTemplates.com)
|
|
||||||
%
|
|
||||||
% License:
|
|
||||||
% The MIT License
|
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
||||||
|
|
||||||
%----------------------------------------------------------------------------------------
|
|
||||||
% PACKAGES AND OTHER DOCUMENT CONFIGURATIONS
|
|
||||||
%----------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
\documentclass[9pt]{developercv} % Default font size, values from 8-12pt are recommended
|
|
||||||
\pagecolor{SumiInk2}
|
|
||||||
\color{FujiWhite}
|
|
||||||
\usepackage{hyperref}
|
|
||||||
\hypersetup{
|
|
||||||
colorlinks=true,
|
|
||||||
urlcolor=SpringGreen,
|
|
||||||
}
|
|
||||||
\geometry{
|
|
||||||
top=1.2cm, % Top margin
|
|
||||||
bottom=1.2cm, % Bottom margin
|
|
||||||
left=2.25cm, % Left margin
|
|
||||||
right=2.25cm, % Right margin
|
|
||||||
}
|
|
||||||
|
|
||||||
%----------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
\begin{document}
|
|
||||||
|
|
||||||
|
|
||||||
%----------------------------------------------------------------------------------------
|
|
||||||
% TITLE AND CONTACT INFORMATION
|
|
||||||
%----------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
\begin{minipage}[t]{0.35\textwidth} % 45% of the page width for name
|
|
||||||
\vspace{-\baselineskip} % Required for vertically aligning minipages
|
|
||||||
|
|
||||||
% If your name is very short, use just one of the lines below
|
|
||||||
% If your name is very long, reduce the font size or make the minipage wider and reduce the others proportionately
|
|
||||||
\colorbox{SumiInk5}{{\HUGE{\textbf{\MakeUppercase{Price}}}}} % First name
|
|
||||||
|
|
||||||
\colorbox{SumiInk5}{{\HUGE{\textbf{\MakeUppercase{Hiller}}}}} % Last name
|
|
||||||
\end{minipage}
|
|
||||||
\begin{minipage}[t]{0.3\textwidth} % 27.5% of the page width for the first row of icons
|
|
||||||
\vspace{-\baselineskip} % Required for vertically aligning minipages
|
|
||||||
|
|
||||||
% The first parameter is the FontAwesome icon name, the second is the box size and the third is the text
|
|
||||||
% Other icons can be found by referring to fontawesome.pdf (supplied with the template) and using the word after \fa in the command for the icon you want
|
|
||||||
\icon{MapMarker}{12}{\href{https://en.wikipedia.org/wiki/San_Antonio}{San Antonio, Texas}}\\
|
|
||||||
\icon{Phone}{12}{\href{tel:+1210-571-4297}{+1 210 571-4297}}\\
|
|
||||||
\icon{At}{12}{\href{mailto:price@orion-technologies.io}{price@orion-technologies.io}}\\
|
|
||||||
\end{minipage}
|
|
||||||
\begin{minipage}[t]{0.3\textwidth} % 27.5% of the page width for the second row of icons
|
|
||||||
\vspace{-\baselineskip} % Required for vertically aligning minipages
|
|
||||||
|
|
||||||
% The first parameter is the FontAwesome icon name, the second is the box size and the third is the text
|
|
||||||
% Other icons can be found by referring to fontawesome.pdf (supplied with the template) and using the word after \fa in the command for the icon you want
|
|
||||||
\icon{Globe}{12}{\href{https://blog.orion-technologies.io}{blog.orion-technologies.io}}\\
|
|
||||||
\icon{Github}{12}{\href{https://github.com/treatybreaker}{github.com/treatybreaker}}\\
|
|
||||||
\icon{Gitlab}{12}{\href{https://gitlab.orion-technologies.io/philler}{gitlab.orion-technologies.io/philler}}
|
|
||||||
\end{minipage}
|
|
||||||
|
|
||||||
\vspace{0cm}
|
|
||||||
|
|
||||||
%----------------------------------------------------------------------------------------
|
|
||||||
% INTRODUCTION, SKILLS AND TECHNOLOGIES
|
|
||||||
%----------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
\cvsect{About Me}
|
|
||||||
|
|
||||||
\begin{minipage}[t]{0.4\textwidth} % 40% of the page width for the introduction text
|
|
||||||
\vspace{-\baselineskip} % Required for vertically aligning minipages
|
|
||||||
|
|
||||||
I am a programmer and Linux user who has an outsized level of pride in my
|
|
||||||
\href{https://gitlab.orion-technologies.io/philler/dots/-/tree/Development/dots/.config/nvim?ref_type=heads}{Neovim
|
|
||||||
configuration}. I deploy said configuration via my
|
|
||||||
\href{https://gitlab.orion-technologies.io/ansible/dot-files}{Ansible Dot File Playbook}. I currently write most of my
|
|
||||||
code in \href{https://www.lua.org/}{Lua} for configurations and \href{https://www.rust-lang.org/}{Rust} for actual
|
|
||||||
full on programming. I am highly invested in reproducibility, expressed via \href{https://www.docker.com/}{Docker} and
|
|
||||||
\href{https://www.ansible.com/}{Ansible} (and lately some
|
|
||||||
\href{https://nixos.org/manual/nix/unstable/introduction}{Nix}). I currently use Arch Linux (btw) as my operating
|
|
||||||
system and live almost entirely in the
|
|
||||||
\href{https://gitlab.orion-technologies.io/philler/dots/-/tree/Development/dots/.config/wezterm?ref_type=heads}{terminal}.
|
|
||||||
This \href{https://gitlab.orion-technologies.io/philler/resume/-/tree/Development?ref_type=heads}{resume}, for
|
|
||||||
instance, was written in vim and compiled with Tectonic.\\
|
|
||||||
\end{minipage}
|
|
||||||
\hfill % Whitespace between
|
|
||||||
\begin{minipage}[t]{0.5\textwidth} % 50% of the page for the skills bar chart
|
|
||||||
\vspace{-\baselineskip} % Required for vertically aligning minipages
|
|
||||||
\begin{barchart}{5.5}
|
|
||||||
\baritem{Ansible}{90}
|
|
||||||
\baritem{Rust}{70}
|
|
||||||
\baritem{Lua}{100}
|
|
||||||
\baritem{Git}{80}
|
|
||||||
\baritem{CI/CD}{90}
|
|
||||||
\baritem{Linux}{70}
|
|
||||||
\baritem{Python}{50}
|
|
||||||
\baritem{Docker}{60}
|
|
||||||
\end{barchart}
|
|
||||||
\end{minipage}
|
|
||||||
|
|
||||||
%----------------------------------------------------------------------------------------
|
|
||||||
% EXPERIENCE
|
|
||||||
%----------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
\cvsect{Experience}
|
|
||||||
|
|
||||||
\begin{entrylist}
|
|
||||||
\entry
|
|
||||||
% June 2022 -> June 2023
|
|
||||||
{2022 - 2023\\\footnotesize{part time}}
|
|
||||||
{Systems Integration Intern}
|
|
||||||
{Security Service Federal Credit Union}
|
|
||||||
{I was primarily involved with pipelines and overhauling legacy projects. I overhauled the in-use pipelines to
|
|
||||||
"Pipelines V3" with significant modularity improvements and major performance gains. The average speedup was 8x,
|
|
||||||
with the highest speed up being 20x. These pipelines were responsible for testing, building, and deploying code at
|
|
||||||
SSFCU. \\ \texttt{C\#}\slashsep\texttt{Powershell}\slashsep\texttt{Azure/Github
|
|
||||||
CI/CD}\slashsep\texttt{Bash}\slashsep\texttt{Docker}\slashsep\texttt{Windows Server}}
|
|
||||||
\entry
|
|
||||||
% October 2021 -> June 2022
|
|
||||||
{2021 -- 2022\\\footnotesize{part time}}
|
|
||||||
{Junior Systems Administrator}
|
|
||||||
{Vircio}
|
|
||||||
{I introduced Ansible automation as part of a project to leave the legacy CFEngine automation platform behind. I
|
|
||||||
created Ansible playbooks that managed several hundred hosts in various customer locations along with implementing
|
|
||||||
Gitlab CI/CD to lint and run these playbooks on git integration. All systems were Linux based that I automated and
|
|
||||||
worked on.\\
|
|
||||||
\texttt{Linux}\slashsep\texttt{Bash}\slashsep\texttt{Ansible}\slashsep\texttt{CFEngine}\slashsep\texttt{Networking}\slashsep\texttt{Bind9}\slashsep\texttt{Gitlab
|
|
||||||
CI/CD}}
|
|
||||||
\entry
|
|
||||||
% August 2021 -> December 2021
|
|
||||||
{2021 - 2021\\\footnotesize{part time}}
|
|
||||||
{Peer Advisor/Tutor}
|
|
||||||
{San Antonio College}
|
|
||||||
{I did IT tutoring primarily for students working towards their Cisco Certified Network Associate certification. This
|
|
||||||
included teaching subnetting, IPv6, TCP/IP, and more.}
|
|
||||||
\entry
|
|
||||||
% June 2019 -> October 2020
|
|
||||||
{2019 - 2020\\\footnotesize{part time}}
|
|
||||||
{Information Analyst II Intern}
|
|
||||||
{Booz Allen Hamilton}
|
|
||||||
{I was on a team doing machine learning work. I helped with applying the target dataset we used, filtering, and
|
|
||||||
gathering of data for the machine learning system in Python.\\ \texttt{Python}\slashsep\texttt{Linux}\slashsep\texttt{Elastic
|
|
||||||
Search}\slashsep\texttt{Kibana}\slashsep\texttt{Logstash}\slashsep\texttt{Bash}}
|
|
||||||
\end{entrylist}
|
|
||||||
|
|
||||||
%----------------------------------------------------------------------------------------
|
|
||||||
% EDUCATION
|
|
||||||
%----------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
\cvsect{Education}
|
|
||||||
|
|
||||||
\begin{entrylist}
|
|
||||||
\entry
|
|
||||||
{2024 -- FUTURE}
|
|
||||||
{Finishing Bachelor's Degree}
|
|
||||||
{University of Texas at San Antonio}
|
|
||||||
{After my current semester at San Antonio College I intend to go back to UTSA and get my full bachelor's in business
|
|
||||||
with a cybersecurity specialization starting spring of 2024.}
|
|
||||||
\entry
|
|
||||||
{2021 - PRESENT}
|
|
||||||
{Associates in Business}
|
|
||||||
{San Antonio College}
|
|
||||||
{I came to SAC to get my prerequisite courses finished and have qualified for an associates degree in business which I
|
|
||||||
will receive fall of 2023.}
|
|
||||||
\entry
|
|
||||||
{2019 -- 2021}
|
|
||||||
{Seeking Bachelor's Degree in Business}
|
|
||||||
{University of Texas at San Antonio}
|
|
||||||
{I began on my path to getting a Bachelor's Business degree with a specialization in Cybersecurity in fall of 2019. I
|
|
||||||
left in 2021 to San Antonio Colleges to finish out prerequisite courses and get my associates degree.}
|
|
||||||
\end{entrylist}
|
|
||||||
|
|
||||||
%----------------------------------------------------------------------------------------
|
|
||||||
% ADDITIONAL INFORMATION
|
|
||||||
%----------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
\begin{minipage}[t]{0.45\textwidth}
|
|
||||||
\vspace{-\baselineskip} % Required for vertically aligning minipages
|
|
||||||
|
|
||||||
\cvsect{Projects}
|
|
||||||
|
|
||||||
\textbf{\href{https://github.com/AsgardEternal}{Squad Server Automation}}\\Squad Server Deployments
|
|
||||||
and Management\\
|
|
||||||
\textbf{\href{https://gitlab.orion-technologies.io/blog/blog}{Blog Static Site Generator}}\\Rust Code Powering a Blog\\
|
|
||||||
\textbf{\href{https://pypi.org/project/avents/}{Avents}}\\Python Asynchronous Event Framework
|
|
||||||
\end{minipage}
|
|
||||||
\hfill
|
|
||||||
\begin{minipage}[t]{0.6\textwidth}
|
|
||||||
\vspace{-\baselineskip} % Required for vertically aligning minipages
|
|
||||||
|
|
||||||
\cvsect{Some Code I've Written}
|
|
||||||
|
|
||||||
- {\href{https://github.com/NeogitOrg/neogit/pull/616}{Test Overhauls For Neogit}}\\
|
|
||||||
- {\href{https://github.com/treatybreaker/mfc_elo_api}{MFC ELO API}}\\
|
|
||||||
- {\href{https://github.com/neovim/neovim/pull/23925}{Injecting Cmake Variable into Neovim}}\\
|
|
||||||
- {\href{https://github.com/krivahtoo/silicon.nvim/pull/28}{Modifying ABI Call in Silicon.nvim}}\\
|
|
||||||
- {\href{https://github.com/neovim/nvim-lspconfig/pull/2493}{Adding the Azure Pipelines Language Server to Nvim-Lspconfig}}\\
|
|
||||||
- {\href{https://gitlab.orion-technologies.io/philler/bash-scripts/-/blob/Development/Misc/Templater.bash?ref_type=heads}{A
|
|
||||||
Templating System Written in 100\% Pure Bash}}
|
|
||||||
\end{minipage}
|
|
||||||
|
|
||||||
%----------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
\end{document}
|
|
197
resume.typ
Normal file
197
resume.typ
Normal file
@ -0,0 +1,197 @@
|
|||||||
|
#let section(name) = {
|
||||||
|
[= #name]
|
||||||
|
v(-5pt)
|
||||||
|
line(length: 100%, stroke: .5pt + black)
|
||||||
|
v(-2pt)
|
||||||
|
}
|
||||||
|
|
||||||
|
#let resume(name: none, info: (), skills: (), jobs: (), education: (), doc) = {
|
||||||
|
set par(justify: true, leading: 0.5em)
|
||||||
|
set text(font: "Liberation Sans", size: 10pt)
|
||||||
|
align(center)[
|
||||||
|
#grid(
|
||||||
|
columns: 1,
|
||||||
|
row-gutter: 1.2em,
|
||||||
|
text(24pt)[*#name*],
|
||||||
|
info.join(" " + $diamond.stroked.dot$ + " "),
|
||||||
|
)
|
||||||
|
]
|
||||||
|
section("Technical Skills")
|
||||||
|
grid(columns: 5, column-gutter: 1fr, row-gutter: .5em, ..skills)
|
||||||
|
section("Experience")
|
||||||
|
for job in jobs {
|
||||||
|
grid(
|
||||||
|
columns: 2,
|
||||||
|
column-gutter: 1fr,
|
||||||
|
row-gutter: 0.4em,
|
||||||
|
[*#job.company*],
|
||||||
|
align(right)[*#job.dates.start.display("[month repr:short] [year]") —
|
||||||
|
#job.dates.end.display("[month repr:short] [year]")*],
|
||||||
|
text(.9em, style: "italic")[#job.title],
|
||||||
|
align(right, text(.9em, style: "italic")[#job.location]),
|
||||||
|
)
|
||||||
|
v(-.7em)
|
||||||
|
pad(left: 1em)[#job.info]
|
||||||
|
}
|
||||||
|
section("Education")
|
||||||
|
for edu in education {
|
||||||
|
grid(
|
||||||
|
columns: 2,
|
||||||
|
column-gutter: 1fr,
|
||||||
|
row-gutter: 0.4em,
|
||||||
|
[*#edu.university*],
|
||||||
|
align(right)[*#edu.dates.start.display("[month repr:short] [year]") —
|
||||||
|
#edu.dates.end.display("[month repr:short] [year]")*],
|
||||||
|
text(.9em, style: "italic")[#edu.major],
|
||||||
|
align(right, text(.9em, style: "italic")[#edu.location]),
|
||||||
|
)
|
||||||
|
v(-.7em)
|
||||||
|
pad(left: 1em)[#edu.info]
|
||||||
|
}
|
||||||
|
doc
|
||||||
|
}
|
||||||
|
#set page(paper: "us-letter", margin: (x: 1in, y: 1in))
|
||||||
|
#show heading: h => [
|
||||||
|
#set text(15pt)
|
||||||
|
#h.body
|
||||||
|
]
|
||||||
|
#show: doc => resume(
|
||||||
|
name: "Price Hiller",
|
||||||
|
info: (
|
||||||
|
link("mailto:price@orion-technologies.io"),
|
||||||
|
link("tel:1-210-571-4279", "(210) 571-4297"),
|
||||||
|
"San Antonio, TX",
|
||||||
|
text(blue, link("https://gitlab.orion-technologies.io/philler", "Gitlab")),
|
||||||
|
text(blue, link("https://github.com/treatybreaker", "Github")),
|
||||||
|
text(blue, link("https://blog.orion-technologies.io", "Blog")),
|
||||||
|
),
|
||||||
|
skills: (
|
||||||
|
"Linux",
|
||||||
|
"Bash",
|
||||||
|
"Powershell",
|
||||||
|
"Ansible",
|
||||||
|
"Networking",
|
||||||
|
"Git",
|
||||||
|
"Gitlab CI/CD",
|
||||||
|
"Github CI/CD",
|
||||||
|
"Docker",
|
||||||
|
"Rust",
|
||||||
|
"Python",
|
||||||
|
"Lua",
|
||||||
|
"Javascript",
|
||||||
|
"Nix",
|
||||||
|
),
|
||||||
|
// June 2022 -> June 2023
|
||||||
|
jobs: (
|
||||||
|
(
|
||||||
|
company: "Security Service Federal Credit Union",
|
||||||
|
dates: (
|
||||||
|
start: datetime(year: 2022, month: 5, day: 1),
|
||||||
|
end: datetime(year: 2023, month: 6, day: 22),
|
||||||
|
),
|
||||||
|
location: "San Antonio, TX",
|
||||||
|
title: "Systems Integration Intern",
|
||||||
|
info: [
|
||||||
|
- Overhauled preexisting CI/CD systems to "Pipelines V3" in Azure DevOps
|
||||||
|
- Significant reduction in pipeline durations
|
||||||
|
- Improved modularity, allowing pipeline reuse even across teams
|
||||||
|
- Integrated pulling secrets from CyberArk in pipelines
|
||||||
|
- Implemented limited canary deployments for critical services
|
||||||
|
- Initial implementation of Docker on a critical service
|
||||||
|
- Updated _many_ legacy `C#` projects to .NET Core 3 or higher and their
|
||||||
|
corresponding pipelines
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
company: "Vircio",
|
||||||
|
dates: (
|
||||||
|
start: datetime(year: 2021, month: 10, day: 1),
|
||||||
|
end: datetime(year: 2022, month: 5, day: 1),
|
||||||
|
),
|
||||||
|
location: "Austin, TX",
|
||||||
|
title: "Junior Systems Administrator",
|
||||||
|
info: [
|
||||||
|
- Implemented Ansible to modernize management of remote Linux Servers improving
|
||||||
|
stability of the network
|
||||||
|
- Introduced GitOps to manage system configurations in Gitlab
|
||||||
|
- Automatically validated the Ansible configurations on every update
|
||||||
|
- Automatically deployed the new system configurations if validation passed
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
company: "San Antonio College",
|
||||||
|
dates: (
|
||||||
|
start: datetime(year: 2021, month: 8, day: 1),
|
||||||
|
end: datetime(year: 2021, month: 12, day: 13),
|
||||||
|
),
|
||||||
|
location: "San Antonio, TX",
|
||||||
|
title: "Peer Advisor",
|
||||||
|
info: [
|
||||||
|
- Tutored students in Information Technology, Programming, and more
|
||||||
|
- Covered Networking topics such as IPv6, TCP/IP, subnetting, routing, etc.
|
||||||
|
- Covered Programming topics such as OOP, Java, Python
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(
|
||||||
|
company: "Booz Allen Hamilton",
|
||||||
|
dates: (
|
||||||
|
start: datetime(year: 2019, month: 6, day: 1),
|
||||||
|
end: datetime(year: 2020, month: 8, day: 1),
|
||||||
|
),
|
||||||
|
location: "San Antonio, TX",
|
||||||
|
title: "Infomation Analyst II Intern",
|
||||||
|
info: [
|
||||||
|
- Gathered and categorized data for machine learning systems in the Cybersecurity
|
||||||
|
realm
|
||||||
|
- Worked with the ELK stack to visualize and filter datasets
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
education: (
|
||||||
|
(
|
||||||
|
university: "University of Texas at San Antonio",
|
||||||
|
dates: (
|
||||||
|
start: datetime(year: 2024, month: 01, day: 16),
|
||||||
|
end: datetime(year: 2025, month: 12, day: 08),
|
||||||
|
),
|
||||||
|
major: "BS Computer Science (In Progress)",
|
||||||
|
location: "San Antonio, TX",
|
||||||
|
info: [
|
||||||
|
- Currently working towards a Bachelors of Computer Science
|
||||||
|
],
|
||||||
|
),
|
||||||
|
(university: "San Antonio College", dates: (
|
||||||
|
start: datetime(year: 2021, month: 08, day: 01),
|
||||||
|
end: datetime(year: 2023, month: 12, day: 08),
|
||||||
|
), major: "AA Business", location: "San Antonio, TX", info: [
|
||||||
|
- Completed an Associates of Business degree at San Antonio College
|
||||||
|
- Part of the Cybersecurity Club
|
||||||
|
]),
|
||||||
|
// (
|
||||||
|
// university: "University of Texas at San Antonio",
|
||||||
|
// dates: (
|
||||||
|
// start: datetime(year: 2019, month: 01, day: 16),
|
||||||
|
// end: datetime(year: 2021, month: 06, day: 01),
|
||||||
|
// ),
|
||||||
|
// major: "Cybersecurity (incomplete)",
|
||||||
|
// location: "San Antonio, TX",
|
||||||
|
// info: [ ],
|
||||||
|
// ),
|
||||||
|
),
|
||||||
|
[
|
||||||
|
#section("Projects")
|
||||||
|
- #text(blue, link("https://github.com/AsgardEternal/Squad.nix", "Squad.nix")):
|
||||||
|
Configuring Squad game servers for NixOS, a immutable, reproducible distribution
|
||||||
|
of Linux
|
||||||
|
- #text(blue, link(
|
||||||
|
"https://github.com/AsgardEternal/Ubuntu-Ansible-Setup",
|
||||||
|
"Ubuntu Server Configuration",
|
||||||
|
)): Automated configuration of a Ubuntu Server deployed on every git push
|
||||||
|
- #text(blue, link("https://github.com/treatybreaker/blog", "Blog")): Source code
|
||||||
|
of my blog, all written in Rust, packaged with a Nix Flake, and deployed on my
|
||||||
|
home server #text(
|
||||||
|
blue,
|
||||||
|
link("https://gitlab.orion-technologies.io/philler/nixos", "here"),
|
||||||
|
)
|
||||||
|
],
|
||||||
|
)
|
Loading…
Reference in New Issue
Block a user