Update resume infrastructure for job-specific customization

- Fix summary placeholders: 15 years development, 20 years professional experience
- Update Makefile to accept FILE_NAME parameter for building custom resumes
- Add confirmation message on successful PDF generation
- Document customization workflow in CLAUDE.md with examples
- Add section on creating tailored resumes from job descriptions
- Include security clearance and additional details in detailed resume

This enables a streamlined workflow: provide job description → Claude generates
customized markdown → build PDF with: make resume FILE_NAME=paul-halvorsen-[company]-[role]

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
paul
2026-03-05 13:06:05 -05:00
parent ed9c347e6b
commit 649f84aff7
3 changed files with 219 additions and 14 deletions

136
CLAUDE.md Normal file
View File

@@ -0,0 +1,136 @@
# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## Project Overview
This is a resume builder using Pandoc to convert Markdown resumes with YAML metadata to PDF via LaTeX templates. The build process is containerized using Podman (Docker alternative) for reproducibility and portability.
## Build and Development Commands
**Build the resume PDF:**
```bash
# Build default resume
make resume
# Build a custom resume with a specific filename
make resume FILE_NAME=paul-halvorsen-acme-senior-backend-engineer
```
The `FILE_NAME` variable defaults to `paul-halvorsen-resume` but can be overridden to use any markdown file in the directory (without the `.md` extension). The Makefile will:
1. Build the Podman image if it doesn't exist
2. Convert the markdown file to PDF using the default LaTeX template
3. Output a PDF with the same name as the input markdown file (but with `.pdf` extension)
**Example workflow for custom resumes:**
```bash
# Create a customized markdown resume
# paul-halvorsen-acme-senior-backend-engineer.md
# Build it
make resume FILE_NAME=paul-halvorsen-acme-senior-backend-engineer
# Output: paul-halvorsen-acme-senior-backend-engineer.pdf
```
**Clean commands:**
- `make clean` - Remove LaTeX log files
- `make cleanpaper` - Remove the generated PDF (uses FILE_NAME variable)
- `make cleanpodman` - Remove the Podman image and build cache (forces rebuild next time)
- `make cleanall` - Remove everything (logs, PDF, and Podman image)
## High-Level Architecture
### Resume Processing Pipeline
1. **Input**: Markdown file with YAML metadata block (`*.md`)
2. **Processing**: Pandoc converts markdown to LaTeX using a template
3. **Output**: PDF generated via LaTeX compilation
4. **Containerization**: All processing happens in a Podman container to ensure consistent output
### Key Components
**Templates** (`templates/` directory):
- `jb2resume.latex` - Default resume template (recommended)
- `jb2-modern.latex` - Alternative modern template
Both templates are dual-licensed under GPL v2+ and BSD 3-Clause.
**Dockerfile**:
- Based on `pandoc/latex:latest`
- Installs additional LaTeX packages: `enumitem`, `sectsty`, `underscore`
- Sets `/data` as the working volume
**Makefile**:
- Uses Podman (not Docker)
- `FILE_NAME=paul-halvorsen-resume` - Change this to build a different `.md` file
- `USER=paul` - Container user for file permissions
- Automatically detects if the Podman image needs rebuilding
### Resume Structure
**YAML Metadata Block** (top of `.md` file):
```yaml
---
name: [Your Name]
keywords: [comma-separated keywords for PDF metadata]
left-column:
- [Line 1 for left column under name]
- [Line 2 for left column]
right-column:
- [Line 1 for right column under name]
- [Line 2 for right column]
fontsize: [default 10pt]
fontenc: [default T1]
urlcolor: [default blue]
linkcolor: [default magenta]
numbersections: [true/false, controls section numbering]
name-color: [SVG color name like DarkSlateGray, applies to name]
section-color: [SVG color name like Tomato, applies to section headers]
---
```
The metadata block is required and must appear at the very top of the markdown file before any content.
**Resume Content**: Standard Markdown after the metadata block. Headers become sections, lists are formatted naturally.
### Multiple Resume Versions
The repository contains two main resume files:
- `paul-halvorsen-resume.md` - Concise version (built by default via Makefile)
- `paul-halvorsen-resume-detailed.md` - Extended version with more details
To build a different version, either:
1. Modify the `FILE_NAME` variable in the Makefile, or
2. Run Pandoc directly with the desired input file
### Important Notes
- The Makefile assumes Podman is installed and available
- Build output (.pdf files) and Podman artifacts (.podman-build file) are not tracked in git
- The `.podman-build` marker file prevents unnecessary image rebuilds (remove it to force rebuild)
- All LaTeX processing happens inside the container; no local LaTeX installation is needed
## Creating Customized Resumes for Job Applications
The detailed resume (`paul-halvorsen-resume-detailed.md`) contains comprehensive information across all roles and projects. To create a customized resume for a specific job application:
1. **Get job description** - Copy the job posting or description
2. **Provide to Claude Code** - Share the job description with Claude Code along with a request to create a customized resume
3. **Output format** - Claude will create a new markdown file using the naming convention:
```
paul-halvorsen-[company-name]-[role-title].md
```
Example: `paul-halvorsen-stripe-senior-rust-engineer.md`
4. **Build the PDF** - Generate the PDF using:
```bash
make resume FILE_NAME=paul-halvorsen-stripe-senior-rust-engineer
```
5. **Expected result** - A 1-2 page resume tailored to the job requirements with:
- Reordered work experience (most relevant roles first)
- Emphasized skills and metrics matching the job description
- Highlighted relevant accomplishments and projects
- Customized summary/intro focused on the role
The detailed resume includes proficiency levels, performance metrics, specializations, and comprehensive technical details that allow Claude Code to intelligently match your background to specific job requirements.

View File

@@ -1,5 +1,5 @@
USER=paul USER=paul
FILE_NAME=paul-halvorsen-resume FILE_NAME?=paul-halvorsen-resume
NAME=build-paul-resume NAME=build-paul-resume
CONTAINER_NAME=${NAME}-container CONTAINER_NAME=${NAME}-container
@@ -18,6 +18,7 @@ resume: .podman-build
--name ${CONTAINER_NAME} \ --name ${CONTAINER_NAME} \
${NAME} \ ${NAME} \
${FILE_NAME}.md -f markdown+yaml_metadata_block --template templates/jb2resume.latex -o ${FILE_NAME}.pdf ${FILE_NAME}.md -f markdown+yaml_metadata_block --template templates/jb2resume.latex -o ${FILE_NAME}.pdf
@echo "✓ Generated ${FILE_NAME}.pdf"
.podman-build: .podman-build:
if [ ${CONTAINER_EXISTS} -ne 1 ]; then podman build -t ${NAME} . && echo "" > .podman-build; fi if [ ${CONTAINER_EXISTS} -ne 1 ]; then podman build -t ${NAME} . && echo "" > .podman-build; fi

View File

@@ -12,15 +12,62 @@
- Git Repo: https://git.halvo.me/paul - Git Repo: https://git.halvo.me/paul
- LinkedIn: https://www.linkedin.com/in/paul-halvorsen - LinkedIn: https://www.linkedin.com/in/paul-halvorsen
- Citizen of the United Stats - Citizen of the United Stats
- Security Clearance
- Expired TS/SCI
## Summary ## Summary
I'm a Software Engineer with over (started in 2011) years development and (started in 2006) years professional experience, with exposure to Rust, C, Python, PHP, Go, JavaScript, Java, and C++ languages; various SQL DBs; tokio, JQuery, and Pytest frameworks; Docker and GitLab CI/CD; and Rest API, NATS, JSON, XML, and nginx technologies. I'm a Software Engineer with over 15 years of development and 20 years of professional experience, with expertise in Rust, C, Python, and GoLang; various SQL databases; tokio, Pytest, and Docker frameworks; GitLab CI/CD pipelines; and REST APIs, encryption, JSON, and nginx technologies. Specialized in backend development, systems programming, and security-focused applications.
### Keywords ### Keywords
rust, cargo, python, c, docker, containers, TDD, test driven development, pytest, CI/CD, JavaScript, JQuery, PHP, MySQL, rest, API, JSON, XML, git, GitLab, nginx, remote, testing rust, cargo, python, c, docker, containers, TDD, test driven development, pytest, CI/CD, JavaScript, JQuery, PHP, MySQL, rest, API, JSON, XML, git, GitLab, nginx, remote, testing
### Experience Levels
#### Languages
- Advanced
- Rust, Cargo, Python, PyTest, GoLang, MySQL, C
- Intermediate
- JavaScript, PHP, GoLang, JQuery
- Beginner
- Java, C++,
#### OSes
- Intermediate
- Linux, Debian, Ubuntu, RHEL, CentOS
- Beginner
- Windows, MacOS, OpenSUSE, Android, iOS
#### Browsers
- Intermediate
- Firefox, Chrome
- Beginner
- IE, Edge, Safari
#### Technologies
- Intermediate
- MySQL, REST API, JSON, Nginx, Encryption, RSA, Docker, CI/CD
- Beginner
- Tomcat, Apache, DNS, k8s, AWS, Azure, Ghidra, k8s, Kubernetes
## Specialities and Target Positions
- Application development
- Backend development
- Security/Cybersecurity
- Systems programming
### Target wants in a position
- Remote work environment
- No on-call
- Flexible minimum of $135000
## Work Experience ## Work Experience
### Abnormal AI ### Abnormal AI
@@ -28,17 +75,26 @@ rust, cargo, python, c, docker, containers, TDD, test driven development, pytest
**Software Engineer**: Jan 2026 - Present **Software Engineer**: Jan 2026 - Present
- Utilize claude AI, summarize code, aid in coding, planning - Utilize claude AI, summarize code, aid in coding, planning
- Build and maintain k8s and aws infrastructure - Build and maintain k8s and AWS infrastructure
- python - python
- pacman - pacman
- haml - haml
- yaml - yaml
- 10 k8s clusters, with auto scale up and down number of instances
- Build and maintain service to aggregate data - Build and maintain service to aggregate data
- golang, python - golang, python
- pytest, unit testing - pytest, unit testing
- running cron jobs in k8s - running cron jobs in k8s
- using kubectl, k9s to control k8s - using kubectl, k9s to control k8s
- RBAC - RBAC
- Team of 5
- Heavy inter-team communication and coordination
- Monorepo with all teams
- Customers in US East, US West, EU West, and government
- Maintain real time storage and long time storage
- Generate aggregated data
- Increase efficiency through auto-scaling, and compression
- 24x7 call
### Binary Defense ### Binary Defense
@@ -76,10 +132,10 @@ rust, cargo, python, c, docker, containers, TDD, test driven development, pytest
- Spin up temporary servers - Spin up temporary servers
- Run tests - Run tests
- Performance improvements - Performance improvements
- Reduce CPU usage by filtering out previously observed issues - Reduce CPU usage by filtering out previously observed issues ~ %90
- Reduce memory usage by using regex and filtering - Reduce memory usage by using regex and filtering ~ %60
- Reduce network traffic using regex and filtering - Reduce network traffic using regex and filtering ~ %80
- Reduce disk size by turning multiple strings into regex - Reduce disk size by turning multiple strings into regex ~ %20
- Libraries for watching network traffic on Windows and Linux - Libraries for watching network traffic on Windows and Linux
- Event driven - Event driven
- White and blacklists in regex - White and blacklists in regex
@@ -87,6 +143,7 @@ rust, cargo, python, c, docker, containers, TDD, test driven development, pytest
- Filesystem changes - Filesystem changes
- User changes - User changes
- Event driven - Event driven
- Supported OSes
- Windows - Windows
- Server 2009, 2012, 2019 - Server 2009, 2012, 2019
- xp, 7, 8, 10, 11 - xp, 7, 8, 10, 11
@@ -109,6 +166,9 @@ rust, cargo, python, c, docker, containers, TDD, test driven development, pytest
- Setup database when it doesn't exist - Setup database when it doesn't exist
- Testing performed using VMs built in Proxmox and Virtualbox - Testing performed using VMs built in Proxmox and Virtualbox
- SCRUM - SCRUM
- Customers
- Small to large (Fortune 500 companies)
- Thousands of endpoints
### Kyrus Tech ### Kyrus Tech
@@ -225,6 +285,11 @@ rust, cargo, python, c, docker, containers, TDD, test driven development, pytest
- Build token scoring system - Build token scoring system
- Keep track of scores and provide feedback to the teams - Keep track of scores and provide feedback to the teams
- Report scoring throughout the competition - Report scoring throughout the competition
- Customers
- Military branches
- DoD
- DoJ
- Other government departments
### NSA ### NSA
@@ -244,6 +309,7 @@ rust, cargo, python, c, docker, containers, TDD, test driven development, pytest
- Report sent via Web API to Web UI and alerting system - Report sent via Web API to Web UI and alerting system
- Reduced call-ins - Reduced call-ins
- Organize and train team of contractors - Organize and train team of contractors
- Trained up and informally supervised team of 5
- Spun up to work 24x7 - Spun up to work 24x7
- Provide SOPs for quick fixes - Provide SOPs for quick fixes
- Provide SOPs for tier 1 to reduce call-ins for 24x7 team - Provide SOPs for tier 1 to reduce call-ins for 24x7 team
@@ -311,6 +377,8 @@ rust, cargo, python, c, docker, containers, TDD, test driven development, pytest
- Presented development of STK scenario building and manipulation - Presented development of STK scenario building and manipulation
- SANS Courses - SANS Courses
- Staying up-to-date on security research - Staying up-to-date on security research
- Blog: https://flow.halvo.me
- Git: https://git.halvo.me/paul
- Homelab - Homelab
- Proxmox - Proxmox
- Running email - Running email