4 Commits

12 changed files with 322 additions and 307 deletions

View File

@@ -67,9 +67,29 @@ jobs:
resume.pdf resume.pdf
cv.pdf cv.pdf
name: Latest PDFs name: Latest PDFs
tag_name: release-${{ github.run_number }} tag_name: latest
body: | body: |
Latest version of resume and CV (public version) 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 prerelease: false
draft: false draft: false
fail_on_unmatched_files: true fail_on_unmatched_files: true

120
README.md
View File

@@ -1,77 +1,73 @@
# LaTeX Resume and CV Template # Resume & CV Generator
This repository contains a LaTeX template for creating both a resume and an extended CV. The template is designed to handle both public and private versions of your documents, making it perfect for sharing on GitHub while keeping sensitive information private. A LaTeX-based resume and CV generator with automated builds for both public and private versions. This repository serves two purposes:
1. An actively maintained resume/CV using modern CI/CD practices
2. A template that anyone can fork and customize for their own use
## Features ## Overview
- Clean, professional LaTeX template for both resume and CV This project demonstrates professional DevOps practices while providing a beautiful LaTeX resume:
- Handles sensitive information securely using GitHub Secrets - Automated builds via GitHub Actions for continuous deployment
- Automated PDF generation using GitHub Actions - Secure handling of sensitive information through environment variables
- BibTeX integration for publications - Containerized local development with Docker
- Public and private versions of documents - Clean separation of content and styling
## Setup ## Latest PDFs
1. Fork this repository The most recent public versions are always available at:
2. For public use: - Resume: `https://github.com/USERNAME/resume-cv/releases/download/latest/resume.pdf`
- The default `personal_info.tex` will be used with placeholder information - CV: `https://github.com/USERNAME/resume-cv/releases/download/latest/cv.pdf`
- Customize by editing `personal_info.tex` with your public information
3. For private use:
- Copy `personal_info_template.tex` to `personal_info_private.tex`
- Fill in your private information in `personal_info_private.tex`
- Add your sensitive information as GitHub Secrets (see below)
## GitHub Secrets Replace `USERNAME` with your GitHub username after forking.
To handle sensitive information in GitHub Actions, add these secrets to your repository: ## Project Structure
- `PERSONAL_EMAIL`: Your primary email address
- `PERSONAL_PHONE`: Your phone number
- `PERSONAL_SCHOOL_EMAIL`: Your school email address
- `PERSONAL_HOME_ADDRESS`: Your home address (multi-line)
- `PERSONAL_SCHOOL_ADDRESS`: Your school address (multi-line)
## Local Development
1. Clone the repository
2. For public version:
- Use the existing `personal_info.tex`
3. For private version:
- Create `personal_info_private.tex` from the template
- Add your private information
4. Compile using:
```bash
# For initial compilation
pdflatex document.tex
# If you have bibliography
bibtex document
# Run twice more for references
pdflatex document.tex
pdflatex document.tex
```
Replace `document.tex` with either `cv.tex` or `resume.tex`
## GitHub Actions
The workflow automatically:
- Builds public versions of both resume and CV on every push
- Creates private versions if you're the repository owner
- Uploads both versions as artifacts
## Directory Structure
``` ```
. .
├── cv.tex # Extended CV template ├── cv.tex # Extended CV template
├── resume.tex # Resume template ├── resume.tex # Resume template (subset of CV)
├── personal_info.tex # Public information (committed) ├── shared/ # Shared components
├── personal_info_template.tex # Template for private info │ ├── style/ # Common LaTeX styles
├── personal_info_private.tex # Private information (git-ignored) │ │ └── 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/ └── subfiles/
└── refs.bib # BibTeX references └── refs.bib # BibTeX references
``` ```
## Using as a Template
1. Fork this repository
2. Copy `.secrets-template` to `.secrets` and fill in your personal information
3. Run `./build-local.sh` to generate both public and private versions
- Public version omits sensitive information like phone and address
- 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 with stable URLs
- Private version securely generated for repository owner
- Environment variables managed through GitHub Secrets
You can see these practices in action by checking the [Actions tab](../../actions) and [Releases](../../releases).
## License ## License
This template is available under the MIT License. Feel free to use and modify it for your own needs. This template is available under the MIT License. Feel free to fork and customize it for your own needs.

88
build-docker.sh Executable file
View File

@@ -0,0 +1,88 @@
#!/bin/bash
# Source secrets if the file exists
if [ -f .secrets ]; then
source .secrets
else
echo "Warning: .secrets file not found. Building public version only."
fi
# Set defaults for missing variables
PERSONAL_NAME=${PERSONAL_NAME:-$(whoami)}
PERSONAL_EMAIL=${PERSONAL_EMAIL:-""}
PERSONAL_WEBSITE=${PERSONAL_WEBSITE:-""}
PERSONAL_SCHOOL_EMAIL=${PERSONAL_SCHOOL_EMAIL:-""}
PERSONAL_PHONE=${PERSONAL_PHONE:-""}
PERSONAL_HOME_ADDRESS_LINE1=${PERSONAL_HOME_ADDRESS_LINE1:-""}
PERSONAL_HOME_ADDRESS_LINE2=${PERSONAL_HOME_ADDRESS_LINE2:-""}
PERSONAL_SCHOOL_ADDRESS_LINE1=${PERSONAL_SCHOOL_ADDRESS_LINE1:-""}
PERSONAL_SCHOOL_ADDRESS_LINE2=${PERSONAL_SCHOOL_ADDRESS_LINE2:-""}
PERSONAL_SCHOOL_ADDRESS_LINE3=${PERSONAL_SCHOOL_ADDRESS_LINE3:-""}
# Function to cleanup
cleanup() {
rm -f *.aux *.log *.out *.fls *.fdb_latexmk *.synctex.gz *.bbl *.blg personal_info.tex
if [ -f personal_info.tex.bak ]; then
mv personal_info.tex.bak personal_info.tex
fi
}
trap cleanup EXIT
mkdir -p output
# Backup current personal_info.tex if it exists
if [ -f personal_info.tex ]; then
cp personal_info.tex personal_info.tex.bak
fi
# Build private version (if secrets are available)
if [ -n "$PERSONAL_PHONE" ] || [ -n "$PERSONAL_HOME_ADDRESS_LINE1" ] || [ -n "$PERSONAL_SCHOOL_ADDRESS_LINE1" ]; then
echo "Building private version..."
cat > personal_info.tex << EOL
% Private version of personal information
\newcommand{\personalName}{$PERSONAL_NAME}
\newcommand{\personalEmail}{$PERSONAL_EMAIL}
\newcommand{\personalPhone}{$PERSONAL_PHONE}
\newcommand{\personalWebsite}{$PERSONAL_WEBSITE}
\newcommand{\personalSchoolEmail}{$PERSONAL_SCHOOL_EMAIL}
\newcommand{\personalHomeAddressLineOne}{$PERSONAL_HOME_ADDRESS_LINE1}
\newcommand{\personalHomeAddressLineTwo}{$PERSONAL_HOME_ADDRESS_LINE2}
\newcommand{\personalSchoolAddressLineOne}{$PERSONAL_SCHOOL_ADDRESS_LINE1}
\newcommand{\personalSchoolAddressLineTwo}{$PERSONAL_SCHOOL_ADDRESS_LINE2}
\newcommand{\personalSchoolAddressLineThree}{$PERSONAL_SCHOOL_ADDRESS_LINE3}
EOL
docker build --platform linux/arm64 -t resume-builder .
docker run --platform linux/arm64 --rm \
-v "$(pwd):/workspace" \
-v "$(pwd)/output:/workspace/output" \
resume-builder bash -c "latexmk -pdf -file-line-error -halt-on-error -interaction=nonstopmode resume.tex cv.tex && mv *.pdf output/"
mv output/resume.pdf output/resume-private.pdf 2>/dev/null || true
mv output/cv.pdf output/cv-private.pdf 2>/dev/null || true
fi
# Build public version
echo "Building public version..."
cat > personal_info.tex << EOL
% Public version of personal information
\newcommand{\personalName}{$PERSONAL_NAME}
\newcommand{\personalEmail}{$PERSONAL_EMAIL}
\newcommand{\personalPhone}{~}
\newcommand{\personalWebsite}{$PERSONAL_WEBSITE}
\newcommand{\personalSchoolEmail}{$PERSONAL_SCHOOL_EMAIL}
\newcommand{\personalHomeAddressLineOne}{~}
\newcommand{\personalHomeAddressLineTwo}{~}
\newcommand{\personalSchoolAddressLineOne}{~}
\newcommand{\personalSchoolAddressLineTwo}{~}
\newcommand{\personalSchoolAddressLineThree}{~}
EOL
docker run --platform linux/arm64 --rm \
-v "$(pwd):/workspace" \
-v "$(pwd)/output:/workspace/output" \
resume-builder bash -c "latexmk -pdf -file-line-error -halt-on-error -interaction=nonstopmode resume.tex cv.tex && mv resume.pdf output/resume-public.pdf && mv cv.pdf output/cv-public.pdf"
echo "Build complete!"
echo "Generated files in output/:"
ls -l output/

View File

@@ -21,7 +21,7 @@ PERSONAL_SCHOOL_ADDRESS_LINE3=${PERSONAL_SCHOOL_ADDRESS_LINE3:-""}
# Function to cleanup # Function to cleanup
cleanup() { cleanup() {
rm -f *.aux *.log *.out *.fls *.fdb_latexmk *.synctex.gz *.bbl *.blg rm -f *.aux *.log *.out *.fls *.fdb_latexmk *.synctex.gz *.bbl *.blg personal_info.tex
if [ -f personal_info.tex.bak ]; then if [ -f personal_info.tex.bak ]; then
mv personal_info.tex.bak personal_info.tex mv personal_info.tex.bak personal_info.tex
fi fi
@@ -30,11 +30,35 @@ cleanup() {
trap cleanup EXIT trap cleanup EXIT
mkdir -p output mkdir -p output
# Check if required LaTeX tools are available locally
check_latex_tools() {
command -v latexmk >/dev/null 2>&1 || return 1
command -v pdflatex >/dev/null 2>&1 || return 1
return 0
}
# Function to build using local tools
build_local() {
latexmk -pdf -file-line-error -halt-on-error -interaction=nonstopmode "$1"
}
# Function to build using Docker
build_docker() {
echo "Local LaTeX tools not found, falling back to Docker..."
./build-docker.sh
exit $?
}
# Backup current personal_info.tex if it exists # Backup current personal_info.tex if it exists
if [ -f personal_info.tex ]; then if [ -f personal_info.tex ]; then
cp personal_info.tex personal_info.tex.bak cp personal_info.tex personal_info.tex.bak
fi fi
# Check if we can use local tools, otherwise fall back to Docker
if ! check_latex_tools; then
build_docker
fi
# Build private version (if secrets are available) # Build private version (if secrets are available)
if [ -n "$PERSONAL_PHONE" ] || [ -n "$PERSONAL_HOME_ADDRESS_LINE1" ] || [ -n "$PERSONAL_SCHOOL_ADDRESS_LINE1" ]; then if [ -n "$PERSONAL_PHONE" ] || [ -n "$PERSONAL_HOME_ADDRESS_LINE1" ] || [ -n "$PERSONAL_SCHOOL_ADDRESS_LINE1" ]; then
echo "Building private version..." echo "Building private version..."
@@ -52,14 +76,11 @@ if [ -n "$PERSONAL_PHONE" ] || [ -n "$PERSONAL_HOME_ADDRESS_LINE1" ] || [ -n "$P
\newcommand{\personalSchoolAddressLineThree}{$PERSONAL_SCHOOL_ADDRESS_LINE3} \newcommand{\personalSchoolAddressLineThree}{$PERSONAL_SCHOOL_ADDRESS_LINE3}
EOL EOL
docker build --platform linux/arm64 -t resume-builder . build_local resume.tex
docker run --platform linux/arm64 --rm \ build_local cv.tex
-v "$(pwd):/workspace" \
-v "$(pwd)/output:/workspace/output" \
resume-builder bash -c "latexmk -pdf -file-line-error -halt-on-error -interaction=nonstopmode resume.tex cv.tex && mv *.pdf output/"
mv output/resume.pdf output/resume-private.pdf 2>/dev/null || true mv resume.pdf output/resume-private.pdf 2>/dev/null || true
mv output/cv.pdf output/cv-private.pdf 2>/dev/null || true mv cv.pdf output/cv-private.pdf 2>/dev/null || true
fi fi
# Build public version # Build public version
@@ -78,10 +99,11 @@ cat > personal_info.tex << EOL
\newcommand{\personalSchoolAddressLineThree}{~} \newcommand{\personalSchoolAddressLineThree}{~}
EOL EOL
docker run --platform linux/arm64 --rm \ build_local resume.tex
-v "$(pwd):/workspace" \ build_local cv.tex
-v "$(pwd)/output:/workspace/output" \
resume-builder bash -c "latexmk -pdf -file-line-error -halt-on-error -interaction=nonstopmode resume.tex cv.tex && mv resume.pdf output/resume-public.pdf && mv cv.pdf output/cv-public.pdf" mv resume.pdf output/resume-public.pdf
mv cv.pdf output/cv-public.pdf
echo "Build complete!" echo "Build complete!"
echo "Generated files in output/:" echo "Generated files in output/:"

113
cv.tex
View File

@@ -1,78 +1,15 @@
\documentclass{article} \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 % Include common style
\newlength{\sectspaceabove} \input{shared/style/common}
\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 personal information % Include personal information
\input{personal_info} \input{personal_info}
\begin{document} \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}
% Professional Summary Section % Professional Summary Section
\noindent \noindent
@@ -82,14 +19,8 @@
Published researcher in human-robot interaction with experience in both academic and commercial software development. Published researcher in human-robot interaction with experience in both academic and commercial software development.
\end{minipage} \end{minipage}
\resumesection{Education} % Education section
\input{shared/sections/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}
\resumesection{Experience} \resumesection{Experience}
@@ -119,7 +50,6 @@
\item Managed live production during race events, coordinating camera operators, replay, and graphics control \item Managed live production during race events, coordinating camera operators, replay, and graphics control
\end{itemize} \end{itemize}
\textscbf{Bucknell University} \hfill \textscbf{Lewisburg, PA} \textscbf{Bucknell University} \hfill \textscbf{Lewisburg, PA}
\textbf{Computer Science Researcher - Human-Robot Interaction} \hfill \textbf{Jan 2023 Present} \textbf{Computer Science Researcher - Human-Robot Interaction} \hfill \textbf{Jan 2023 Present}
@@ -131,7 +61,7 @@
\textbf{Computer Science Research Assistant - Chemical Engineering Department} \hfill \textbf{Aug 2023 Present} \textbf{Computer Science Research Assistant - Chemical Engineering Department} \hfill \textbf{Aug 2023 Present}
\begin{itemize}[noitemsep,topsep=2pt] \begin{itemize}[noitemsep,topsep=2pt]
\item Designed and implemented an automated data collection system using a microcontroller and C++ to collect real-time temperature, pressure, and humidity data in harsh environments \item Designed and implemented an automated data collection system using a microcontroller and C++ to collect real-time temperature, pressure, and humidity data in harsh environments
\item Currently integrating robotic arm into existing coffee research project to automate repeated brewing-related tasks and data collection, freeing up researchers from unskilled repetitive work \item Currently assisting in robotic hardware integration into an existing coffee research project to automate repeated brewing-related tasks and data collection, freeing up researchers from unskilled repetitive work
\end{itemize} \end{itemize}
\textbf{Computer Science Teaching Assistant} \hfill \textbf{Jan 2024 - Present} \textbf{Computer Science Teaching Assistant} \hfill \textbf{Jan 2024 - 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 \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} \end{itemize}
\resumesection{Activities} \resumesection{Activities}
\textscbf{AIChE Chem-E-Car Competition Team} \hfill \textscbf{Lewisburg, PA} \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 \item Presented the design of our car in a poster session, heavily focusing on the safety-related aspects of our design
\end{itemize} \end{itemize}
% Shared sections
\resumesection{Publications} \input{shared/sections/publications}
\input{shared/sections/coursework}
\nocite{*} \input{shared/sections/skills}
\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
\end{document} \end{document}

View File

@@ -1,87 +1,18 @@
\documentclass{article} \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 % Include common style
\newlength{\sectspaceabove} \input{shared/style/common}
\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 personal information % Include personal information
\input{personal_info} \input{personal_info}
\begin{document} \begin{document}
\begin{center}
{\large \textscbf{\personalName}}
\end{center}
\vspace{0.5em} % Header with contact information
\input{shared/sections/header}
\noindent % Education section
\begin{minipage}[t]{0.33\textwidth} \input{shared/sections/education}
\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}
\resumesection{Experience} \resumesection{Experience}
@@ -95,28 +26,6 @@
\item Orchestrated migration to containerized architecture using Docker and implemented automated backup systems to improve reliability \item Orchestrated migration to containerized architecture using Docker and implemented automated backup systems to improve reliability
\end{itemize} \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} \textscbf{Bucknell University} \hfill \textscbf{Lewisburg, PA}
\textbf{Computer Science Researcher - Human-Robot Interaction} \hfill \textbf{Jan 2023 Present} \textbf{Computer Science Researcher - Human-Robot Interaction} \hfill \textbf{Jan 2023 Present}
@@ -128,7 +37,7 @@
\textbf{Computer Science Research Assistant - Chemical Engineering Department} \hfill \textbf{Aug 2023 Present} \textbf{Computer Science Research Assistant - Chemical Engineering Department} \hfill \textbf{Aug 2023 Present}
\begin{itemize}[noitemsep,topsep=2pt] \begin{itemize}[noitemsep,topsep=2pt]
\item Designed and implemented an automated data collection system using a microcontroller and C++ to collect real-time temperature, pressure, and humidity data in harsh environments \item Designed and implemented an automated data collection system using a microcontroller and C++ to collect real-time temperature, pressure, and humidity data in harsh environments
\item Currently integrating robotic arm into existing coffee research project to automate repeated brewing-related tasks and data collection, freeing up researchers from unskilled repetitive work \item Currently assisting in robotic hardware integration into an existing coffee research project to automate repeated brewing-related tasks and data collection, freeing up researchers from unskilled repetitive work
\end{itemize} \end{itemize}
\textbf{Teaching Assistant \& Engineering Tutor} \hfill \textbf{Aug 2023 - Present} \textbf{Teaching Assistant \& Engineering Tutor} \hfill \textbf{Aug 2023 - Present}
@@ -138,16 +47,8 @@
\item Provided technical mentorship at the Engineering Study Spot, focusing on programming concepts and system design \item Provided technical mentorship at the Engineering Study Spot, focusing on programming concepts and system design
\end{itemize} \end{itemize}
\resumesection{Activities} \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} \textscbf{AIChE Chem-E-Car Competition Team} \hfill \textscbf{Lewisburg, PA}
\textbf{President, Electrical and Mechanical Team Lead} \hfill \textbf{Jan 2023 Present} \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 \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} \end{itemize}
\resumesection{Publications} % Shared sections
\input{shared/sections/publications}
\nocite{*} \input{shared/sections/coursework}
\bibliography{subfiles/refs.bib} \input{shared/sections/skills}
\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
\end{document} \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}%
}