mirror of
https://github.com/soconnor0919/resume-cv.git
synced 2026-02-05 05:16:31 -05:00
Compare commits
9 Commits
latest
...
release-25
| Author | SHA1 | Date | |
|---|---|---|---|
| ef1a4de958 | |||
| 685b5f5847 | |||
| 56f3bbca75 | |||
| e21e945cd5 | |||
| 55afdad907 | |||
| 7840d7f286 | |||
| ad1fdb2dfc | |||
| 1edc20193c | |||
| 2c04a329c8 |
28
.github/workflows/compile-latex.yml
vendored
28
.github/workflows/compile-latex.yml
vendored
@@ -60,14 +60,6 @@ jobs:
|
|||||||
cv.tex
|
cv.tex
|
||||||
latexmk_use_xelatex: false
|
latexmk_use_xelatex: false
|
||||||
|
|
||||||
- name: Delete existing tag
|
|
||||||
continue-on-error: true
|
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
run: |
|
|
||||||
git tag -d latest || true
|
|
||||||
git push origin :refs/tags/latest || true
|
|
||||||
|
|
||||||
- name: Upload Public PDFs as Release
|
- name: Upload Public PDFs as Release
|
||||||
uses: softprops/action-gh-release@v1
|
uses: softprops/action-gh-release@v1
|
||||||
with:
|
with:
|
||||||
@@ -78,6 +70,26 @@ jobs:
|
|||||||
tag_name: latest
|
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
120
README.md
@@ -1,77 +1,75 @@
|
|||||||
# 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
|
||||||
|
├── build-docker.sh # Docker build script
|
||||||
|
├── generate-standalone-cv.sh # Generate standalone CV PDF
|
||||||
└── 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
88
build-docker.sh
Executable 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/
|
||||||
@@ -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" \
|
mv resume.pdf output/resume-private.pdf 2>/dev/null || true
|
||||||
resume-builder bash -c "latexmk -pdf -file-line-error -halt-on-error -interaction=nonstopmode resume.tex cv.tex && mv *.pdf output/"
|
mv cv.pdf output/cv-private.pdf 2>/dev/null || true
|
||||||
|
|
||||||
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
|
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/:"
|
||||||
|
|||||||
176
cv.tex
176
cv.tex
@@ -1,95 +1,26 @@
|
|||||||
\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
|
|
||||||
\ifx\personalPhone\empty\else
|
|
||||||
\\\personalPhone%
|
|
||||||
\fi
|
|
||||||
\\\href{https://\personalWebsite}{\personalWebsite}%
|
|
||||||
\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
|
||||||
\begin{minipage}{\textwidth}
|
\begin{minipage}{\textwidth}
|
||||||
\textbf{Professional Summary:} Computer Science and Engineering student with extensive experience in software development, robotics research, and technical leadership.
|
\textbf{Professional Summary:} Computer Science and Engineering student with experience in software development, robotics research, and technical leadership.
|
||||||
Demonstrated track record of building scalable solutions and leading cross-functional teams.
|
Demonstrated experience building practical solutions for real-world problems, from modernizing business operations to contributing to academic research.
|
||||||
Published researcher in human-robot interaction with experience in both academic and commercial software development.
|
Interested in human-robot interaction and developing technology that enhances human capabilities, with a background spanning commercial software development and educational mentorship.
|
||||||
\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}
|
||||||
|
|
||||||
@@ -97,63 +28,63 @@
|
|||||||
|
|
||||||
\textbf{Software Developer} \hfill \textbf{Oct 2020 – Present}
|
\textbf{Software Developer} \hfill \textbf{Oct 2020 – Present}
|
||||||
\begin{itemize}[noitemsep,topsep=2pt]
|
\begin{itemize}[noitemsep,topsep=2pt]
|
||||||
\item Engineered a digital registration platform that modernized paper-based processes, integrating payment processing and real-time number availability checking, eliminating manual processing delays
|
\item Transformed organizational culture by building trust in data-driven decision making, replacing manual paper-based workflows with integrated digital solutions that eliminated processing delays and improved operational efficiency
|
||||||
\item Built and deployed a high-performance race statistics platform serving 1500+ concurrent users, providing real-time access to driver positions, rankings, and lineups, replacing physical bulletin boards
|
\item Revolutionized fan engagement through a real-time statistics platform serving 1500+ concurrent users, enabling spectators and racers to access live standings and plan race attendance more effectively
|
||||||
\item Developed an intuitive content management system tailored for non-technical staff, enabling content management through familiar interfaces while maintaining website consistency
|
\item Empowered non-technical staff with intuitive content management tools, enabling immediate publication of race results and statistics rather than posting physical papers on walls days after events
|
||||||
\item Orchestrated migration to containerized architecture using Docker and implemented automated backup systems to improve reliability
|
\item Modernized entire technical infrastructure through containerization and automated systems, ensuring reliable operations and remote support capabilities
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
\textbf{IT Administrator} \hfill \textbf{Oct 2020 - Apr 2024}
|
\textbf{IT Administrator} \hfill \textbf{Oct 2020 - Apr 2024}
|
||||||
\begin{itemize}[noitemsep,topsep=2pt]
|
\begin{itemize}[noitemsep,topsep=2pt]
|
||||||
\item Engineered migration from consumer desktop computers to enterprise thin clients with virtualization servers, improving reliability and remote access capabilities enabling continued support while away at university
|
\item Led complete infrastructure overhaul from consumer-grade to enterprise systems, dramatically improving operational reliability while enabling continuous remote support during university attendance
|
||||||
\item Implemented automated backup solutions using the Backblaze platform with version control and disaster recovery procedures
|
\item Established comprehensive data protection and disaster recovery protocols, safeguarding years of racing data and ensuring business continuity
|
||||||
\item Deployed Windows Server with Active Directory for centralized user management and file storage
|
\item Streamlined operations through centralized user management and standardized deployment processes, reducing setup time and maintenance overhead across all facilities
|
||||||
\item Established standardized workstation images and software deployment protocols across facilities
|
\item Built foundation for digital transformation that enabled all subsequent software development and modernization efforts
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
\textbf{Media Producer} \hfill \textbf{Oct 2020 - Apr 2024}
|
\textbf{Media Producer} \hfill \textbf{Oct 2020 - Apr 2024}
|
||||||
\begin{itemize}[noitemsep,topsep=2pt]
|
\begin{itemize}[noitemsep,topsep=2pt]
|
||||||
\item Designed and deployed facility's first multi-camera live streaming system with ATEM production switchers and custom graphics pipeline
|
\item Launched facility's first professional broadcast capability, expanding audience reach through live streaming to national networks including FloRacing and NBC Sports
|
||||||
\item Developed real-time graphics integration system connecting race timing data to broadcast overlays
|
\item Created seamless integration between live timing data and broadcast graphics, enhancing viewer experience and setting new standards for local racing broadcasts
|
||||||
\item Operated replay and instant highlight system for live broadcast to FloRacing and NBC Sports networks
|
\item Coordinated complex live production workflows during high-pressure race events, ensuring professional-quality coverage that elevated the facility's reputation
|
||||||
\item Managed live production during race events, coordinating camera operators, replay, and graphics control
|
\item Established broadcast infrastructure that became a model for other racing facilities seeking to modernize their media capabilities
|
||||||
\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}
|
||||||
\begin{itemize}[noitemsep,topsep=2pt]
|
\begin{itemize}[noitemsep,topsep=2pt]
|
||||||
\item Engineered a modular web-based experimental platform for human-robot interaction studies using the Wizard of Oz experimental paradigm and ROS2 and C++/Python
|
\item Developed a web-based platform for human-robot interaction experiments that addresses reproducibility challenges in Wizard-of-Oz studies, contributing to improved experimental rigor in the field
|
||||||
\item Published and presented a first-author paper and poster at the 33rd IEEE International Conference on Robot and Human Interactive Communication
|
\item Led research and authored first-author paper presented at international conference, with second publication forthcoming based on continued platform development
|
||||||
|
\item Built framework that enables researchers to conduct experiments across different robot platforms without specialized programming knowledge, lowering technical barriers to HRI research
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
\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 – May 2025}
|
||||||
\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 Built automated data collection tools that enabled researchers to focus on analysis rather than manual data gathering, providing critical environmental measurements that guided research direction
|
||||||
\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 Developed technical solutions that supported conference presentations and research outcomes, bridging the gap between engineering expertise and domain-specific research needs
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
\textbf{Computer Science Teaching Assistant} \hfill \textbf{Jan 2024 - Present}
|
\textbf{Computer Science Teaching Assistant} \hfill \textbf{Jan 2024 - Present}
|
||||||
\begin{itemize}[noitemsep,topsep=2pt]
|
\begin{itemize}[noitemsep,topsep=2pt]
|
||||||
\item Led lecture and lab sections focusing on agile development practices and following scrum guidelines for group work in the field of computer science.
|
\item Mentored 150+ students in software engineering principles, employing a unique pedagogical approach that connects theoretical concepts to real-world applications through recently-acquired student perspective
|
||||||
\item Assisted students with classwork, homework, and lab assignments, focusing on teaching students how to find the answers to their questions using existing documentation
|
\item Developed learning environments that embrace productive failure, enabling students to understand the "why" behind programming concepts rather than just memorizing syntax and procedures
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
\textbf{Engineering Study Spot Tutor - Computer Science} \hfill \textbf{Aug 2024 - Present}
|
\textbf{Engineering Study Spot Tutor - Computer Science} \hfill \textbf{Aug 2024 - Dec 2024}
|
||||||
\begin{itemize}[noitemsep,topsep=2pt]
|
\begin{itemize}[noitemsep,topsep=2pt]
|
||||||
\item Held drop-in help sessions for computer science students throughout all stages of the curriculum, assisting with introductory courses, software engineering, and systems programming assignments
|
\item Provided personalized academic support to students across the entire computer science curriculum, using a gentle but functional approach that breaks down complex concepts into relatable, manageable components
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
\textbf{Engineering Teaching Assistant} \hfill \textbf{Aug 2023 - Dec 2023}
|
\textbf{Engineering Teaching Assistant} \hfill \textbf{Aug 2023 - Dec 2023}
|
||||||
\begin{itemize}[noitemsep,topsep=2pt]
|
\begin{itemize}[noitemsep,topsep=2pt]
|
||||||
\item Led recurring workshops on Arduino-based microcontroller programming, assembly, and wiring for multidisciplinary student engineering projects
|
\item Empowered 40+ engineering students from diverse disciplines to master embedded systems programming, translating complex technical concepts into accessible learning experiences
|
||||||
\item Assisted students during class and lab sections on their design session projects, with emphasis on engineering ethics education
|
\item Guided students through hands-on project development while fostering critical thinking about engineering ethics and real-world design implications
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
\textbf{Physics Teaching Assistant} \hfill \textbf{Aug 2023 - May 2024}
|
\textbf{Physics Teaching Assistant} \hfill \textbf{Aug 2023 - May 2024}
|
||||||
\begin{itemize}[noitemsep,topsep=2pt]
|
\begin{itemize}[noitemsep,topsep=2pt]
|
||||||
\item Assisted students during laboratory sections with introductory and exploratory physics lab experiments, working with industry-standard data collection and analysis tools
|
\item Supported 30+ students in developing scientific reasoning and experimental design skills, helping them connect abstract physics principles to hands-on laboratory discoveries and data analysis
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
\textscbf{Miller Place School District} \hfill \textscbf{Miller Place, NY}
|
\textscbf{Miller Place School District} \hfill \textscbf{Miller Place, NY}
|
||||||
@@ -164,15 +95,14 @@
|
|||||||
\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}
|
||||||
|
|
||||||
\textbf{President, Electrical and Mechanical Team Lead} \hfill \textbf{Jan 2023 – Present}
|
\textbf{Former President, Electrical and Mechanical Team Lead} \hfill \textbf{Jan 2023 – Present}
|
||||||
\begin{itemize}[noitemsep,topsep=2pt]
|
\begin{itemize}[noitemsep,topsep=2pt]
|
||||||
\item Pioneered team's first custom hardware solution: designed and fabricated a microcontroller-based control system with isolated power circuits for hydrogen fuel cell regulation
|
\item Pioneered team's first custom hardware solution by designing and fabricating a microcontroller-based control system with isolated power circuits for hydrogen fuel cell regulation, implementing finite state machine architecture integrating spectrometer readings, relay control, and LED feedback for real-time reaction monitoring
|
||||||
\item Implemented finite state machine architecture integrating spectrometer readings, relay control, and LED feedback for real-time reaction monitoring in isolated chamber conditions
|
\item Improved team dynamics by introducing agile development principles and structured communication protocols, then strategically transitioned from leadership role to focused technical contribution while remaining active team lead, recognizing that direct engineering impact would better serve team and personal objectives
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
\textscbf{Bucknell Coffee Society} \hfill \textscbf{Lewisburg, PA}
|
\textscbf{Bucknell Coffee Society} \hfill \textscbf{Lewisburg, PA}
|
||||||
@@ -194,7 +124,7 @@
|
|||||||
|
|
||||||
\textscbf{IEEE International Conference on Robot and Human Interactive Communication} \hfill \textscbf{Aug 2024}
|
\textscbf{IEEE International Conference on Robot and Human Interactive Communication} \hfill \textscbf{Aug 2024}
|
||||||
\begin{itemize}[noitemsep,topsep=2pt]
|
\begin{itemize}[noitemsep,topsep=2pt]
|
||||||
\item Presented a first-author paper in a poster session regarding my project HRIStudio, a novel tool enabling human-robot interaction experiments to be conducted by those unfamiliar with robotic platforms and programming
|
\item Presented first-author research at international conference on HRIStudio - a platform that lowers technical barriers for human-robot interaction experimentation by enabling researchers without programming backgrounds to conduct rigorous studies
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
\textbf{AIChE Annual Student Conference} \hfill \textscbf{Oct 2024}
|
\textbf{AIChE Annual Student Conference} \hfill \textscbf{Oct 2024}
|
||||||
@@ -225,29 +155,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
|
||||||
|
\input{shared/sections/publications}
|
||||||
|
\input{shared/sections/coursework}
|
||||||
|
\input{shared/sections/skills}
|
||||||
|
|
||||||
\resumesection{Publications}
|
\end{document}
|
||||||
|
|
||||||
\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
|
|
||||||
|
|
||||||
\end{document}
|
|
||||||
|
|||||||
169
resume.tex
169
resume.tex
@@ -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
|
|
||||||
\ifx\personalPhone\empty\else
|
|
||||||
\\\personalPhone%
|
|
||||||
\fi
|
|
||||||
\\\href{https://\personalWebsite}{\personalWebsite}%
|
|
||||||
\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}
|
||||||
|
|
||||||
@@ -89,95 +20,47 @@
|
|||||||
|
|
||||||
\textbf{Software Developer} \hfill \textbf{Oct 2020 – Present}
|
\textbf{Software Developer} \hfill \textbf{Oct 2020 – Present}
|
||||||
\begin{itemize}[noitemsep,topsep=2pt]
|
\begin{itemize}[noitemsep,topsep=2pt]
|
||||||
\item Engineered a digital registration platform that modernized paper-based processes, integrating payment processing and real-time number availability checking, eliminating manual processing delays
|
\item Transformed organizational culture by building trust in data-driven decision making, replacing manual paper-based workflows with integrated digital solutions that eliminated processing delays and improved operational efficiency
|
||||||
\item Built and deployed a high-performance race statistics platform serving 1500+ concurrent users, providing real-time access to driver positions, rankings, and lineups, replacing physical bulletin boards
|
\item Revolutionized fan engagement through a real-time statistics platform serving 1500+ concurrent users, enabling spectators and racers to access live standings and plan race attendance more effectively
|
||||||
\item Developed an intuitive content management system tailored for non-technical staff, enabling content management through familiar interfaces while maintaining website consistency
|
\item Empowered non-technical staff with intuitive content management tools, enabling immediate publication of race results and statistics rather than posting physical papers on walls days after events
|
||||||
\item Orchestrated migration to containerized architecture using Docker and implemented automated backup systems to improve reliability
|
\item Modernized entire technical infrastructure through containerization and automated systems, ensuring reliable operations and remote support capabilities
|
||||||
\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}
|
||||||
\begin{itemize}[noitemsep,topsep=2pt]
|
\begin{itemize}[noitemsep,topsep=2pt]
|
||||||
\item Engineered a modular web-based experimental platform for human-robot interaction studies using the Wizard of Oz experimental paradigm and ROS2 and C++/Python, resulting in a first-author publication
|
\item Developed a web-based platform for human-robot interaction experiments that addresses reproducibility challenges in Wizard-of-Oz studies, contributing to improved experimental rigor in the field
|
||||||
\item Co-founded and led weekly research discussions in a new lab bridging computer science and psychology perspectives on human-robot interaction
|
\item Led research and authored first-author paper presented at international conference, with second publication forthcoming based on continued platform development
|
||||||
|
\item Built framework that enables researchers to conduct experiments across different robot platforms without specialized programming knowledge, lowering technical barriers to HRI research
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
\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 – May 2025}
|
||||||
\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 Built automated data collection tools that enabled researchers to focus on analysis rather than manual data gathering, providing critical environmental measurements that guided research direction
|
||||||
\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 Developed technical solutions that supported conference presentations and research outcomes, bridging the gap between engineering expertise and domain-specific research needs
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
\textbf{Teaching Assistant \& Engineering Tutor} \hfill \textbf{Aug 2023 - Present}
|
\textbf{Teaching Assistant \& Engineering Tutor} \hfill \textbf{Aug 2023 - Present}
|
||||||
\begin{itemize}[noitemsep,topsep=2pt]
|
\begin{itemize}[noitemsep,topsep=2pt]
|
||||||
\item Led lab sessions in computer science (agile development, Java programming), engineering (Arduino, embedded systems), and physics (discovery experiments and data analysis)
|
\item Mentored students across computer science, engineering, and physics using a pedagogical approach that connects theoretical concepts to real-world applications through recently-acquired student perspective
|
||||||
\item Developed automated testing frameworks to streamline assignment grading and provide detailed personalized feedback
|
\item Developed learning environments that embrace productive failure, enabling students to understand the "why" behind programming and engineering concepts rather than just memorizing procedures
|
||||||
\item Provided technical mentorship at the Engineering Study Spot, focusing on programming concepts and system design
|
\item Created automated testing frameworks and personalized feedback systems that streamlined grading while providing students with detailed, actionable guidance for improvement
|
||||||
\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}
|
||||||
\begin{itemize}[noitemsep,topsep=2pt]
|
\begin{itemize}[noitemsep,topsep=2pt]
|
||||||
\item Pioneered team's first custom hardware solution: designed and fabricated a microcontroller-based control system with isolated power circuits for hydrogen fuel cell regulation
|
\item Pioneered team's first custom hardware solution by designing and fabricating a microcontroller-based control system with isolated power circuits for hydrogen fuel cell regulation, implementing finite state machine architecture integrating spectrometer readings, relay control, and LED feedback for real-time reaction monitoring
|
||||||
\item Implemented finite state machine architecture integrating spectrometer readings, relay control, and LED feedback for real-time reaction monitoring in isolated chamber conditions
|
\item Improved team dynamics by introducing agile development principles and structured communication protocols, then strategically transitioned from leadership role to focused technical contribution while remaining active team member, recognizing that direct engineering impact would better serve team objectives
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
\resumesection{Publications}
|
% Shared sections
|
||||||
|
\input{shared/sections/publications}
|
||||||
|
\input{shared/sections/coursework}
|
||||||
|
\input{shared/sections/skills}
|
||||||
|
|
||||||
\nocite{*}
|
\end{document}
|
||||||
\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}
|
|
||||||
|
|||||||
7
shared/sections/coursework.tex
Normal file
7
shared/sections/coursework.tex
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
\resumesection{Relevant Coursework}
|
||||||
|
|
||||||
|
\textbf{Systems \& Architecture:} Computer Systems, Operating Systems Design, Computer Networks \& Security
|
||||||
|
|
||||||
|
\textbf{Software Development:} Software Engineering, Algorithm Design \& Analysis, Research Methods, Ethics in Computing
|
||||||
|
|
||||||
|
\textbf{Mathematics:} Calculus II, Linear Algebra, Discrete Mathematics, Statistics, Data Mining
|
||||||
8
shared/sections/education.tex
Normal file
8
shared/sections/education.tex
Normal 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.86. Dean's List: Fall 2022, Fall 2023, Spring 2024, Fall 2024, Spring 2025
|
||||||
|
\end{itemize}
|
||||||
38
shared/sections/header.tex
Normal file
38
shared/sections/header.tex
Normal 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}
|
||||||
5
shared/sections/publications.tex
Normal file
5
shared/sections/publications.tex
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
\resumesection{Publications}
|
||||||
|
|
||||||
|
\nocite{*}
|
||||||
|
\bibliography{subfiles/refs.bib}
|
||||||
|
\bibliographystyle{plain}
|
||||||
9
shared/sections/skills.tex
Normal file
9
shared/sections/skills.tex
Normal 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
31
shared/style/common.tex
Normal 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}%
|
||||||
|
}
|
||||||
@@ -2,8 +2,16 @@
|
|||||||
abstract = {Human-robot interaction (HRI) research plays a pivotal role in shaping how robots communicate and collaborate with humans. However, conducting HRI studies, particularly those employing the Wizard-of-Oz (WoZ) technique, can be challenging. WoZ user studies can have complexities at the technical and methodological levels that may render the results irreproducible. We propose to address these challenges with HRIStudio, a novel web-based platform designed to streamline the design, execution, and analysis of WoZ experiments. HRIStudio offers an intuitive interface for experiment creation, real-time control and monitoring during experimental runs, and comprehensive data logging and playback tools for analysis and reproducibility. By lowering technical barriers, promoting collaboration, and offering methodological guidelines, HRIStudio aims to make human-centered robotics research easier, and at the same time, empower researchers to develop scientifically rigorous user studies.},
|
abstract = {Human-robot interaction (HRI) research plays a pivotal role in shaping how robots communicate and collaborate with humans. However, conducting HRI studies, particularly those employing the Wizard-of-Oz (WoZ) technique, can be challenging. WoZ user studies can have complexities at the technical and methodological levels that may render the results irreproducible. We propose to address these challenges with HRIStudio, a novel web-based platform designed to streamline the design, execution, and analysis of WoZ experiments. HRIStudio offers an intuitive interface for experiment creation, real-time control and monitoring during experimental runs, and comprehensive data logging and playback tools for analysis and reproducibility. By lowering technical barriers, promoting collaboration, and offering methodological guidelines, HRIStudio aims to make human-centered robotics research easier, and at the same time, empower researchers to develop scientifically rigorous user studies.},
|
||||||
author = {O'Connor, Sean and Perrone, L. Felipe},
|
author = {O'Connor, Sean and Perrone, L. Felipe},
|
||||||
title = {\href{http://www.eg.bucknell.edu/~perrone/wp-content/uploads/2024/08/ro-man2024.pdf}{{HRIStudio: A Framework for Wizard-of-Oz Experiments in Human-Robot Interaction Studies (Late Breaking Report)}}},
|
title = {\href{http://www.eg.bucknell.edu/~perrone/wp-content/uploads/2024/08/ro-man2024.pdf}{{HRIStudio: A Framework for Wizard-of-Oz Experiments in Human-Robot Interaction Studies (Late Breaking Report)}}},
|
||||||
booktitle={2024 33rd IEEE International Conference on Robot and Human Interactive Communication (RO-MAN)},
|
booktitle={2024 33rd IEEE International Conference on Robot and Human Interactive Communication (RO-MAN)},
|
||||||
year = {2024},
|
year = {2024},
|
||||||
url = {http://www.eg.bucknell.edu/~perrone/wp-content/uploads/2024/08/ro-man2024.pdf}
|
url = {http://www.eg.bucknell.edu/~perrone/wp-content/uploads/2024/08/ro-man2024.pdf}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@inproceedings{O'Connor2025,
|
||||||
|
author = {O'Connor, Sean and Perrone, L. Felipe},
|
||||||
|
title = {A {Web-Based} {Wizard-of-Oz} Platform for Collaborative and Reproducible {Human-Robot Interaction} Research},
|
||||||
|
booktitle={2025 34th IEEE International Conference on Robot and Human Interactive Communication (RO-MAN)},
|
||||||
|
year = {2025},
|
||||||
|
address = {Eindhoven, The Netherlands},
|
||||||
|
note = {Accepted for publication}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user