3 Commits

Author SHA1 Message Date
685b5f5847 Update CV tutor role dates and README project structure
- Modify Engineering Study Spot Tutor date range in CV
- Update README.md with additional build scripts and refined project structure description
2025-02-06 14:51:22 -05:00
56f3bbca75 Refine research assistant role description for clarity 2025-02-06 14:44:09 -05:00
e21e945cd5 Add build-docker.sh and enhance build-local.sh with local LaTeX tool detection
- Create build-docker.sh script for Docker-based resume and CV generation
- Modify build-local.sh to check for local LaTeX tools and fallback to Docker if needed
- Implement functions to build PDFs using local tools or Docker
- Improve build process flexibility and error handling
2025-02-06 14:43:54 -05:00
5 changed files with 132 additions and 20 deletions

View File

@@ -24,9 +24,9 @@ Replace `USERNAME` with your GitHub username after forking.
``` ```
. .
├── cv.tex # Extended CV template ├── cv.tex # Extended CV template
├── resume.tex # Resume template (subset of CV) ├── resume.tex # Resume template (subset of CV)
├── shared/ # Shared components ├── shared/ # Shared components
│ ├── style/ # Common LaTeX styles │ ├── style/ # Common LaTeX styles
│ │ └── common.tex # Shared style definitions │ │ └── common.tex # Shared style definitions
│ └── sections/ # Shared content sections │ └── sections/ # Shared content sections
@@ -35,8 +35,10 @@ Replace `USERNAME` with your GitHub username after forking.
│ ├── skills.tex │ ├── skills.tex
│ ├── coursework.tex │ ├── coursework.tex
│ └── publications.tex │ └── publications.tex
├── .secrets # Personal information (git-ignored) ├── .secrets # Personal information (git-ignored)
├── build-local.sh # Local build script ├── 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
``` ```

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

@@ -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/:"

4
cv.tex
View File

@@ -61,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}
@@ -70,7 +70,7 @@
\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 Assisted students with classwork, homework, and lab assignments, focusing on teaching students how to find the answers to their questions using existing documentation
\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 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
\end{itemize} \end{itemize}

View File

@@ -37,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}