Refactor CV and Resume templates to use shared components for modularity. Updated README to reflect new structure and added links to latest PDFs. Enhanced GitHub Actions workflow for automatic release management, including a streamlined process for versioned releases.

This commit is contained in:
2024-12-11 13:31:28 -05:00
parent 7840d7f286
commit 55afdad907
10 changed files with 170 additions and 236 deletions

View File

@@ -67,9 +67,29 @@ jobs:
resume.pdf
cv.pdf
name: Latest PDFs
tag_name: release-${{ github.run_number }}
tag_name: latest
body: |
Latest version of resume and CV (public version)
This release is automatically updated with each push to main. For versioned releases, see the numbered releases.
prerelease: false
draft: false
fail_on_unmatched_files: true
generate_release_notes: false
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# Create a numbered release for version history
- name: Create Numbered Release
uses: softprops/action-gh-release@v1
with:
files: |
resume.pdf
cv.pdf
name: Release ${{ github.run_number }}
tag_name: release-${{ github.run_number }}
body: |
Version ${{ github.run_number }} of resume and CV (public version)
prerelease: false
draft: false
fail_on_unmatched_files: true

View File

@@ -12,16 +12,33 @@ This project demonstrates professional DevOps practices while providing a beauti
- Containerized local development with Docker
- Clean separation of content and styling
## Latest PDFs
The most recent public versions are always available at:
- Resume: `https://github.com/USERNAME/resume-cv/releases/download/latest/resume.pdf`
- CV: `https://github.com/USERNAME/resume-cv/releases/download/latest/cv.pdf`
Replace `USERNAME` with your GitHub username after forking.
## Project Structure
```
.
├── cv.tex # Extended CV template
├── resume.tex # Resume template
├── .secrets # Personal information (git-ignored)
├── build-local.sh # Local build script
├── cv.tex # Extended CV template
├── resume.tex # Resume template (subset of CV)
├── shared/ # Shared components
│ ├── style/ # Common LaTeX styles
│ │ └── common.tex # Shared style definitions
│ └── sections/ # Shared content sections
│ ├── header.tex # Contact information
│ ├── education.tex
│ ├── skills.tex
│ ├── coursework.tex
│ └── publications.tex
├── .secrets # Personal information (git-ignored)
├── build-local.sh # Local build script
└── subfiles/
└── refs.bib # BibTeX references
└── refs.bib # BibTeX references
```
## Using as a Template
@@ -33,11 +50,19 @@ This project demonstrates professional DevOps practices while providing a beauti
- Private version includes all personal details from `.secrets`
- The script automatically generates and cleans up temporary files
## Modifying Content
The project uses a modular structure to avoid duplication:
- Common sections are stored in `shared/sections/`
- Styling is defined in `shared/style/common.tex`
- The resume is a subset of the CV, reusing shared components
- Add new sections by creating files in `shared/sections/` and including them with `\input{}`
## CI/CD Pipeline
The repository showcases modern DevOps practices through GitHub Actions:
- Automated PDF generation on every push
- Public version published as GitHub release
- Public version published as GitHub release with stable URLs
- Private version securely generated for repository owner
- Environment variables managed through GitHub Secrets

111
cv.tex
View File

@@ -1,78 +1,15 @@
\documentclass{article}
\setlength{\parindent}{0pt}
\setlength{\parskip}{0em}
\usepackage{enumitem}
\usepackage{hyperref}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[left=0.5in,top=0.5in,right=0.5in,bottom=0.5in]{geometry}
% Define spacing variables
\newlength{\sectspaceabove}
\newlength{\sectspacebelow}
\setlength{\sectspaceabove}{-0em} % Space before section titles
\setlength{\sectspacebelow}{-0.5em} % Space after section titles
\usepackage{etoolbox}
\patchcmd{\thebibliography}{\section*{\refname}}{}{}{}
% Hide page numbers
\pagestyle{empty}
% Custom macro for small caps and bold
\newcommand{\textscbf}[1]{\textbf{\textsc{#1}}}
% Custom macro for section headers with controlled spacing
\newcommand{\resumesection}[1]{%
\vspace{\sectspaceabove}%
\begin{center}
\textscbf{#1}
\end{center}%
\vspace{\sectspacebelow}%
}
% Include common style
\input{shared/style/common}
% Include personal information
\input{personal_info}
\begin{document}
\begin{center}
{\large \textscbf{\personalName}}
\end{center}
\vspace{0.5em}
\noindent
\begin{minipage}[t]{0.33\textwidth}
\raggedright
\ifx\personalSchoolAddressLineOne\empty\else
\mbox{}\par\nobreak\vspace{-\baselineskip}
\personalSchoolAddressLineOne\\%
\personalSchoolAddressLineTwo\\%
\personalSchoolAddressLineThree%
\fi
\end{minipage}%
\hfill%
\begin{minipage}[t]{0.33\textwidth}
\centering
\href{mailto:\personalEmail}{\personalEmail}%
\ifx\personalSchoolEmail\empty\else
\\\href{mailto:\personalSchoolEmail}{\personalSchoolEmail}%
\fi
\\\href{https://\personalWebsite}{\personalWebsite}%
\ifx\personalPhone\empty\else
\\\personalPhone%
\fi
\end{minipage}%
\hfill%
\begin{minipage}[t]{0.33\textwidth}
\raggedleft
\ifx\personalHomeAddressLineOne\empty\else
\personalHomeAddressLineOne\\%
\personalHomeAddressLineTwo%
\fi
\end{minipage}
\vspace{1em}
% Header with contact information
\input{shared/sections/header}
% Professional Summary Section
\noindent
@@ -82,14 +19,8 @@
Published researcher in human-robot interaction with experience in both academic and commercial software development.
\end{minipage}
\resumesection{Education}
\textscbf{Bucknell University} \hfill \textscbf{Lewisburg, PA}
\textbf{Bachelor of Science in Computer Science and Engineering} \hfill \textbf{Expected Graduation: May 2026}
\begin{itemize}[noitemsep,topsep=2pt]
\item Cumulative Engineering GPA: 3.90. Dean's List: Fall 2022, Fall 2023, Spring 2024
\end{itemize}
% Education section
\input{shared/sections/education}
\resumesection{Experience}
@@ -119,7 +50,6 @@
\item Managed live production during race events, coordinating camera operators, replay, and graphics control
\end{itemize}
\textscbf{Bucknell University} \hfill \textscbf{Lewisburg, PA}
\textbf{Computer Science Researcher - Human-Robot Interaction} \hfill \textbf{Jan 2023 Present}
@@ -164,7 +94,6 @@
\item Assisted staff in one-laptop per person deployment and support in response to the COVID-19 pandemic, teaching students how to fully utilize newly-available remote learning tools and programs
\end{itemize}
\resumesection{Activities}
\textscbf{AIChE Chem-E-Car Competition Team} \hfill \textscbf{Lewisburg, PA}
@@ -225,29 +154,9 @@
\item Presented the design of our car in a poster session, heavily focusing on the safety-related aspects of our design
\end{itemize}
\resumesection{Publications}
\nocite{*}
\bibliography{subfiles/refs.bib}
\bibliographystyle{plain}
\resumesection{Relevant Coursework}
\textbf{Systems \& Architecture:} Computer Systems, Operating Systems Design, Computer Networks \& Security
\textbf{Software Development:} Software Engineering, Data Structures \& Algorithms, Research Methods, Ethics in Computing
\textbf{Mathematics:} Calculus II, Linear Algebra, Discrete Mathematics, Statistics, Applied Statistics with R, Data Mining
\resumesection{Skills \& Interests}
\textbf{Languages \& Frameworks:} Java, C/C++, Python, JavaScript/TypeScript, React, Next.js, PHP, SQL
\textbf{Backend \& DevOps:} REST APIs, MySQL, PostgreSQL, Docker, Apache Web Server, NGINX, ROS2
\textbf{Cloud \& Infrastructure:} AWS, GCP, Azure, Backblaze, Linux (RHEL/Debian), CI/CD
\textbf{Development Tools:} Git, JetBrains Suite, VS Code, Cursor, Linux CLI
% Shared sections
\input{shared/sections/publications}
\input{shared/sections/coursework}
\input{shared/sections/skills}
\end{document}

View File

@@ -1,87 +1,18 @@
\documentclass{article}
\setlength{\parindent}{0pt}
\setlength{\parskip}{0em}
\usepackage{enumitem}
\usepackage{hyperref}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[left=0.5in,top=0.5in,right=0.5in,bottom=0.5in]{geometry}
% Define spacing variables
\newlength{\sectspaceabove}
\newlength{\sectspacebelow}
\setlength{\sectspaceabove}{-0.5em} % Space before section titles
\setlength{\sectspacebelow}{-0.5em} % Space after section titles
\usepackage{etoolbox}
\patchcmd{\thebibliography}{\section*{\refname}}{}{}{}
% Hide page numbers
\pagestyle{empty}
% Custom macro for small caps and bold
\newcommand{\textscbf}[1]{\textbf{\textsc{#1}}}
% Custom macro for section headers with controlled spacing
\newcommand{\resumesection}[1]{%
\vspace{\sectspaceabove}%
\begin{center}
\textscbf{#1}
\end{center}%
\vspace{\sectspacebelow}%
}
% Include common style
\input{shared/style/common}
% Include personal information
\input{personal_info}
\begin{document}
\begin{center}
{\large \textscbf{\personalName}}
\end{center}
\vspace{0.5em}
% Header with contact information
\input{shared/sections/header}
\noindent
\begin{minipage}[t]{0.33\textwidth}
\raggedright
\ifx\personalSchoolAddressLineOne\empty\else
\mbox{}\par\nobreak\vspace{-\baselineskip}
\personalSchoolAddressLineOne\\%
\personalSchoolAddressLineTwo\\%
\personalSchoolAddressLineThree%
\fi
\end{minipage}%
\hfill%
\begin{minipage}[t]{0.33\textwidth}
\centering
\href{mailto:\personalEmail}{\personalEmail}%
\ifx\personalSchoolEmail\empty\else
\\\href{mailto:\personalSchoolEmail}{\personalSchoolEmail}%
\fi
\\\href{https://\personalWebsite}{\personalWebsite}%
\ifx\personalPhone\empty\else
\\\personalPhone%
\fi
\end{minipage}%
\hfill%
\begin{minipage}[t]{0.33\textwidth}
\raggedleft
\ifx\personalHomeAddressLineOne\empty\else
\personalHomeAddressLineOne\\%
\personalHomeAddressLineTwo%
\fi
\end{minipage}
\vspace{1em}
\resumesection{Education}
\textscbf{Bucknell University} \hfill \textscbf{Lewisburg, PA}
\textbf{Bachelor of Science in Computer Science and Engineering} \hfill \textbf{Expected Graduation: May 2026}
\begin{itemize}[noitemsep,topsep=2pt]
\item Cumulative Engineering GPA: 3.90. Dean's List: Fall 2022, Fall 2023, Spring 2024
\end{itemize}
% Education section
\input{shared/sections/education}
\resumesection{Experience}
@@ -95,28 +26,6 @@
\item Orchestrated migration to containerized architecture using Docker and implemented automated backup systems to improve reliability
\end{itemize}
%\textscbf{Bucknell University} \hfill \textscbf{Lewisburg, PA}
%
%\textbf{Computer Science Researcher - Human-Robot Interaction} \hfill \textbf{Jan 2023 Present}
%\begin{itemize}[noitemsep,topsep=2pt]
% \item Co-founded an interdisciplinary research lab and meeting group, engaging peers in the world of human-robot interaction
% \item Led ongoing development of a platform for Human-Robot Interaction experiments, resulting in a first-author publication
%\end{itemize}
%
%\textbf{Teaching Assistant and Tutor - Computer Science, Engineering, and Physics} \hfill \textbf{Aug 2023 - Present}
%\begin{itemize}[noitemsep,topsep=2pt]
%\item Mentored diverse student groups in Java programming, Arduino development, and physics lab experiments, adapting teaching methods to various learning styles
%\item Guided engineering teams through agile development cycles while emphasizing ethical design considerations and proper documentation
%\item Supported data analysis across disciplines using Excel, Logger Pro, and custom software tools
%\item Fostered inclusive learning environments through hands-on workshops and one-on-one tutoring sessions
%\end{itemize}
%
%\textbf{Computer Science Research Assistant - Chemical Engineering Department} \hfill \textbf{Aug 2023 Present}
%\begin{itemize}[noitemsep,topsep=2pt]
% \item Developed sensor systems to improve data collection in coffee-related biochemical research, enhancing accuracy and efficiency of experiments using custom software tools to streamline data analysis.
%\end{itemize}
%
\textscbf{Bucknell University} \hfill \textscbf{Lewisburg, PA}
\textbf{Computer Science Researcher - Human-Robot Interaction} \hfill \textbf{Jan 2023 Present}
@@ -138,16 +47,8 @@
\item Provided technical mentorship at the Engineering Study Spot, focusing on programming concepts and system design
\end{itemize}
\resumesection{Activities}
%\textscbf{Bucknell Coffee Society} \hfill \textscbf{Lewisburg, PA}
%
%\textbf{Treasurer} \hfill \textbf{Oct 2023 Present}
%\begin{itemize}[noitemsep,topsep=2pt]
% \item Co-established and launched a new campus organization, managing financial operations and coordinating event logistics.
%\end{itemize}
\textscbf{AIChE Chem-E-Car Competition Team} \hfill \textscbf{Lewisburg, PA}
\textbf{President, Electrical and Mechanical Team Lead} \hfill \textbf{Jan 2023 Present}
@@ -156,28 +57,9 @@
\item Implemented finite state machine architecture integrating spectrometer readings, relay control, and LED feedback for real-time reaction monitoring in isolated chamber conditions
\end{itemize}
\resumesection{Publications}
\nocite{*}
\bibliography{subfiles/refs.bib}
\bibliographystyle{plain}
\resumesection{Relevant Coursework}
\textbf{Systems \& Architecture:} Computer Systems, Operating Systems Design, Computer Networks \& Security
\textbf{Software Development:} Software Engineering, Data Structures \& Algorithms, Research Methods, Ethics in Computing
\textbf{Mathematics:} Calculus II, Linear Algebra, Discrete Mathematics, Statistics, Applied Statistics with R, Data Mining
\resumesection{Skills \& Interests}
\textbf{Languages \& Frameworks:} Java, C/C++, Python, JavaScript/TypeScript, React, Next.js, PHP, SQL
\textbf{Backend \& DevOps:} REST APIs, MySQL, PostgreSQL, Docker, Apache Web Server, NGINX, ROS2
\textbf{Cloud \& Infrastructure:} AWS, GCP, Azure, Backblaze, Linux (RHEL/Debian), CI/CD
\textbf{Development Tools:} Git, JetBrains Suite, VS Code, Cursor, Linux CLI
% Shared sections
\input{shared/sections/publications}
\input{shared/sections/coursework}
\input{shared/sections/skills}
\end{document}

View File

@@ -0,0 +1,7 @@
\resumesection{Relevant Coursework}
\textbf{Systems \& Architecture:} Computer Systems, Operating Systems Design, Computer Networks \& Security
\textbf{Software Development:} Software Engineering, Data Structures \& Algorithms, Research Methods, Ethics in Computing
\textbf{Mathematics:} Calculus II, Linear Algebra, Discrete Mathematics, Statistics, Applied Statistics with R, Data Mining

View File

@@ -0,0 +1,8 @@
\resumesection{Education}
\textscbf{Bucknell University} \hfill \textscbf{Lewisburg, PA}
\textbf{Bachelor of Science in Computer Science and Engineering} \hfill \textbf{Expected Graduation: May 2026}
\begin{itemize}[noitemsep,topsep=2pt]
\item Cumulative Engineering GPA: 3.90. Dean's List: Fall 2022, Fall 2023, Spring 2024
\end{itemize}

View File

@@ -0,0 +1,38 @@
\begin{center}
{\large \textscbf{\personalName}}
\end{center}
\vspace{0.5em}
\noindent
\begin{minipage}[t]{0.33\textwidth}
\raggedright
\ifx\personalSchoolAddressLineOne\empty\else
\mbox{}\par\nobreak\vspace{-\baselineskip}
\personalSchoolAddressLineOne\\%
\personalSchoolAddressLineTwo\\%
\personalSchoolAddressLineThree%
\fi
\end{minipage}%
\hfill%
\begin{minipage}[t]{0.33\textwidth}
\centering
\href{mailto:\personalEmail}{\personalEmail}%
\ifx\personalSchoolEmail\empty\else
\\\href{mailto:\personalSchoolEmail}{\personalSchoolEmail}%
\fi
\\\href{https://\personalWebsite}{\personalWebsite}%
\ifx\personalPhone\empty\else
\\\personalPhone%
\fi
\end{minipage}%
\hfill%
\begin{minipage}[t]{0.33\textwidth}
\raggedleft
\ifx\personalHomeAddressLineOne\empty\else
\personalHomeAddressLineOne\\%
\personalHomeAddressLineTwo%
\fi
\end{minipage}
\vspace{1em}

View File

@@ -0,0 +1,5 @@
\resumesection{Publications}
\nocite{*}
\bibliography{subfiles/refs.bib}
\bibliographystyle{plain}

View File

@@ -0,0 +1,9 @@
\resumesection{Skills \& Interests}
\textbf{Languages \& Frameworks:} Java, C/C++, Python, JavaScript/TypeScript, React, Next.js, PHP, SQL
\textbf{Backend \& DevOps:} REST APIs, MySQL, PostgreSQL, Docker, Apache Web Server, NGINX, ROS2
\textbf{Cloud \& Infrastructure:} AWS, GCP, Azure, Backblaze, Linux (RHEL/Debian), CI/CD
\textbf{Development Tools:} Git, JetBrains Suite, VS Code, Cursor, Linux CLI

31
shared/style/common.tex Normal file
View File

@@ -0,0 +1,31 @@
\setlength{\parindent}{0pt}
\setlength{\parskip}{0em}
\usepackage{enumitem}
\usepackage{hyperref}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[left=0.5in,top=0.5in,right=0.5in,bottom=0.5in]{geometry}
% Define spacing variables
\newlength{\sectspaceabove}
\newlength{\sectspacebelow}
\setlength{\sectspaceabove}{-0.5em} % Space before section titles
\setlength{\sectspacebelow}{-0.5em} % Space after section titles
\usepackage{etoolbox}
\patchcmd{\thebibliography}{\section*{\refname}}{}{}{}
% Hide page numbers
\pagestyle{empty}
% Custom macro for small caps and bold
\newcommand{\textscbf}[1]{\textbf{\textsc{#1}}}
% Custom macro for section headers with controlled spacing
\newcommand{\resumesection}[1]{%
\vspace{\sectspaceabove}%
\begin{center}
\textscbf{#1}
\end{center}%
\vspace{\sectspacebelow}%
}