commit 1ec1de684cdc6be7ed2b5f4d5c9e22124edea072 Author: Alejandro Angulo Date: Fri Dec 9 20:58:09 2022 -0800 Initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..00593be --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +result +alejandro_resume.pdf diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 0000000..ae4a755 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,12 @@ +repos: + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v4.3.0 + hooks: + - id: trailing-whitespace + - id: end-of-file-fixer + - id: check-yaml + - id: check-added-large-files + - repo: https://github.com/kamadorueda/alejandra + rev: 3.0.0 + hooks: + - id: alejandra-system diff --git a/alejandro_resume.tex b/alejandro_resume.tex new file mode 100644 index 0000000..2ccfe62 --- /dev/null +++ b/alejandro_resume.tex @@ -0,0 +1,177 @@ +\documentclass{article} + +\usepackage{array} +\usepackage{enumitem} +\usepackage[letterpaper, portrait, margin=0.5in]{geometry} +\usepackage{hyperref} +\usepackage{multirow} +\usepackage{titlesec} +\usepackage{comment} +\usepackage[usenames, dvipsnames]{xcolor} + +\definecolor{blue}{HTML}{2079C7} +\definecolor{gray}{HTML}{666666} + +\newcolumntype{L}[1]{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{#1}} +\newcolumntype{C}[1]{>{\centering\let\newline\\\arraybackslash\hspace{0pt}}m{#1}} +\newcolumntype{R}[1]{>{\raggedleft\let\newline\\\arraybackslash\hspace{0pt}}m{#1}} + +\pagenumbering{gobble} + +\renewcommand{\familydefault}{\sfdefault} + +\setlist[itemize]{noitemsep} + +\titleformat{\section} + {\color{blue}\normalfont\Large\bfseries} + {\color{blue}\thesection}{1em}{\large\uppercase} +\titleformat{\subsection} + {\normalfont\Large\bfseries} + {\thesection}{1em}{\normalsize} +\titleformat{\subsubsection} + {\color{gray}\normalfont\Large\bfseries} + {\color{gray}\thesection}{1em}{\small} + +\titlespacing*{\section} + {0em}{0em}{0em} +\titlespacing*{\subsection} + {0em}{1em}{0em} +\titlespacing*{\subsubsection} + {0em}{0em}{0em} + +\begin{document} + +\noindent +\begin{minipage}[t]{\textwidth} +\begin{tabular}{L{.4\textwidth} l l} + \multirow{2}{*}{\Huge{ \textbf{Alejandro Angulo}}} & \href{https://github.com/alejandro-angulo}{https://github.com/alejandro-angulo} & \href{https://alejandr0angul0.dev}{https://alejandr0angul0.dev}\\ + & \href{mailto:\email}{\email} & \phonenumber\\ + \hline +\end{tabular} +\vspace{1em} +\end{minipage} +\begin{minipage}[t]{.8\textwidth} +\section*{Professional Experience} +\subsection*{Everbridge (formerly NC4) --- \textit{Software Engineer}} +\subsubsection*{October 2018 - Present} +\parbox[t]{.5\textwidth}{\raggedright% +\begin{itemize} +\vspace{-0.5em} + \item Develop and maintain Python and PHP applications + \item Migrate VCS from SVN to Git + \item Re-architect Python application to improve modularity + \item Introduce best practices (follow PEP8 for Python, begin linting code, etc.) +\end{itemize}} +\parbox[t]{.5\textwidth}{\raggedright% +\begin{itemize} +\vspace{-1.5em} + \item Streamline code review process (integrate with source control) + \item Maintain and develop a RESTful API written in Python capable of generating reports for end users + \item Work with product managers to implement "behind the scenes" changes (upgrading language versions, databases, etc.) +\end{itemize}} +\vspace{-1.5em} +\subsection*{MedQIA --- \textit{Software Engineer}} +\subsubsection*{April 2017 - September 2018} +\parbox[t]{.5\textwidth}{\raggedright% +\begin{itemize} +\vspace{-1.5em} + \item Develop and maintain a Java desktop application used by clinical readers and lab technologists to assist in clinical trials + \item Document and validate systems to comply with FDA regulations + \item Work on Python applications that keep track of the status of scans + \item Maintain and develop a web client written in PHP and JavaScript that provides a dashboard for the data team +\end{itemize}} +\parbox[t]{.5\textwidth}{\raggedright% +\vspace{-1.5em} +\begin{itemize} + \item Maintain and develop a RESTful API written in Python capable of generating reports for end users + \item Write Python scripts that plug in to a Java application in order to provide additional functionality (dynamic loading of patients, automating certain tasks for end users, etc.) + \item Automate build process for Java applications using Gradle +\end{itemize}} +\vspace{-1.5em} +\subsection*{UC Davis College of Engineering IT Shared Services --- \textit{Student Web Developer and Applications Programmer}} +\subsubsection*{May 2014 - April 2017} +\parbox[t]{.5\textwidth}{\raggedright% +\begin{itemize} +\vspace{-1.5em} + \item Migrate ITS's existing websites to a new server + \item Write PHP scripts to scrape data from third-party sites in order to visualize energy consumption +\end{itemize}} +\parbox[t]{.5\textwidth}{\raggedright% +\vspace{-1.5em} +\begin{itemize} + \item Ensure compliance with security standards + \item Design responsive layouts using CSS + \item Manage departmental sites (most running WordPress) +\end{itemize}} +\section*{Education} +\subsection*{UC Davis --- \textit{B.S. in Applied Physics}} +\subsubsection*{Sep 2012 - Jun 2016} +\parbox[t]{.5\textwidth}{\raggedright% +\textbf{Major Courses} +\begin{itemize} +\vspace{-0.6em} + \item Data Structures and Programming + \item Algorithm Design and Analysis + \item Computational Methods in Physics +\end{itemize}} +\hspace{0.3cm} +\parbox[t]{.5\textwidth}{\raggedright% +\textbf{Electives} +\begin{itemize}[topsep=0cm] + \item Theory of Computation + \item Numerical Analysis + \item Quantum Mechanics +\end{itemize} +} +\section*{Projects} +\subsection*{kilonull --- \textit{Personal Website}} +\subsubsection*{\href{https://kilonull.com/}{https://kilonull.com/}} +\begin{itemize} + \item CMS written in Python (Django app) + \item Server runs NGINX in conjunction with uWSGI on the backend + \item Tests set up to run using tox on Travis CI +\end{itemize} +\subsection*{List Category Posts --- \textit{WordPress Plugin}} +\subsubsection*{\href{https://wordpress.org/plugins/list-category-posts/}{https://wordpress.org/plugins/list-category-posts/}} +\begin{itemize} + \item Submit bug fixes and enhancements to an open source WordPress plugin written in PHP +\end{itemize} +\begin{comment} +\subsection*{Archfeed --- \textit{CLI RSS Reader}} +\subsubsection*{\href{https://github.com/vacuus/archfeed}{https://github.com/vacuus/archfeed}} +\begin{itemize} + \item RSS reader written in C + \item Fetches latest news for the Arch Linux distribution. +\end{itemize} +\end{comment} +\subsection*{Simulations for Physics Students --- \textit{Interactive Visualizations}} +\begin{itemize} + \item Developed two visualizations written in JavaScript to help students understand physical concepts. + \item Used Three.js library to simulate detection of active galactic nuclei. + \item Used Kinetic.js library to visualize how photon count can be used to detect a star's radius. +\end{itemize} +\end{minipage}% +\hspace*{0.5cm} +\begin{minipage}[t]{.2\textwidth} +\section*{Languages} +\vspace{0.8em} +\begin{itemize} + \item Python + \item PHP + \item JavaScript + \item SQL + \item BASH + \item Java +\end{itemize} +\section*{Toolset} +\vspace{0.8em} +\begin{itemize} + \item Apache + \item Django + \item Git + \item \LaTeX + \item NGINX + \item Linux +\end{itemize} +\end{minipage} +\end{document} diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..d2068d9 --- /dev/null +++ b/flake.lock @@ -0,0 +1,43 @@ +{ + "nodes": { + "flake-utils": { + "locked": { + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1670507980, + "narHash": "sha256-riNZa0xzM1it3pzxciwALeMs+0CsBMWIW2FqulzK8vM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "2787fc7d1e51404678614bf0fe92fc296746eec0", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": "nixpkgs" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..94101a5 --- /dev/null +++ b/flake.nix @@ -0,0 +1,92 @@ +{ + description = "Resume"; + + inputs = { + nixpkgs.url = github:NixOS/nixpkgs/nixos-unstable; + flake-utils.url = github:numtide/flake-utils; + }; + + outputs = { + self, + nixpkgs, + flake-utils, + }: + with flake-utils.lib; + eachSystem allSystems (system: let + pkgs = nixpkgs.legacyPackages.${system}; + tex = pkgs.texlive.combine { + # I'm being lazy and using scheme-full instead of specifying what's + # actually required + inherit (pkgs.texlive) scheme-full latex-bin latexmk; + }; + vars = ["email" "phonenumber"]; + # Create definitions like \def\email{1} + # Each variable will be set to the command line argument at the + # variable's position (first arg passed to resume generator will fill + # in usages of \email in the tex flie) + texvars = toString (pkgs.lib.imap1 (i: n: ''\def\${n}{${"$" + (toString i)}}'') vars); + in rec { + packages = { + alejandro-resume = pkgs.stdenvNoCC.mkDerivation rec { + name = "alejandro-resume"; + src = self; + propogatedBuildInputs = [pkgs.coreutils tex]; + phases = ["unpackPhase" "buildPhase" "installPhase"]; + SCRIPT = '' + #!/usr/bin/env bash + + prefix=${builtins.placeholder "out"} + export PATH="${pkgs.lib.makeBinPath propogatedBuildInputs}"; + DIR=$(mktemp -d) + RES=$(pwd)/alejandro_resume.pdf + + cd $prefix/share + mkdir -p "$DIR/.texcache/texmf-var" + + env TEXFMHOME="$DIR/.texcache" TEXMFVAR="$DIR/.texcache/texmf-var" \ + latexmk -interaction=nonstopmode -pdf -lualatex \ + -output-directory="$DIR" \ + -pretex="${texvars}"\ + -usepretex alejandro_resume.tex + + mv "$DIR/alejandro_resume.pdf" $RES + rm -rf $DIR + ''; + buildPhase = '' + printenv SCRIPT > alejandro-resume + ''; + installPhase = '' + mkdir -p $out/{bin,share} + cp alejandro_resume.tex $out/share/alejandro_resume.tex + cp alejandro-resume $out/bin/alejandro-resume + chmod u+x $out/bin/alejandro-resume + ''; + }; + }; + defaultPackage = packages.alejandro-resume; + + devShells = { + default = pkgs.mkShell { + name = "default"; + buildInputs = with pkgs; [ + alejandra + direnv + git + pre-commit + tex #TODO: Is this necessary? + zathura # PDF Viewer + ]; + + shellHook = '' + PATH=${pkgs.writeShellScriptBin "nix" '' + ${pkgs.nixVersions.stable}/bin/nix --experimental-features "nix-command flakes" "$@" + ''}/bin:$PATH + + if [ ! -f ".git/hooks/pre-commit" ]; then + pre-commit install &> /dev/null + fi + ''; + }; + }; + }); +}