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:
136
CLAUDE.md
Normal file
136
CLAUDE.md
Normal 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.
|
||||||
3
Makefile
3
Makefile
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user