From 649f84aff7a7941bffc73c8d937c32f2a71f124c Mon Sep 17 00:00:00 2001 From: paul Date: Thu, 5 Mar 2026 13:06:05 -0500 Subject: [PATCH] Update resume infrastructure for job-specific customization MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 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 --- CLAUDE.md | 136 ++++++++++++++++++++++++++++++ Makefile | 3 +- paul-halvorsen-resume-detailed.md | 94 ++++++++++++++++++--- 3 files changed, 219 insertions(+), 14 deletions(-) create mode 100644 CLAUDE.md diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..f77fde9 --- /dev/null +++ b/CLAUDE.md @@ -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. diff --git a/Makefile b/Makefile index e73dcea..89ccaf4 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ USER=paul -FILE_NAME=paul-halvorsen-resume +FILE_NAME?=paul-halvorsen-resume NAME=build-paul-resume CONTAINER_NAME=${NAME}-container @@ -18,6 +18,7 @@ resume: .podman-build --name ${CONTAINER_NAME} \ ${NAME} \ ${FILE_NAME}.md -f markdown+yaml_metadata_block --template templates/jb2resume.latex -o ${FILE_NAME}.pdf + @echo "✓ Generated ${FILE_NAME}.pdf" .podman-build: if [ ${CONTAINER_EXISTS} -ne 1 ]; then podman build -t ${NAME} . && echo "" > .podman-build; fi diff --git a/paul-halvorsen-resume-detailed.md b/paul-halvorsen-resume-detailed.md index a952e12..d4e8b19 100644 --- a/paul-halvorsen-resume-detailed.md +++ b/paul-halvorsen-resume-detailed.md @@ -12,15 +12,62 @@ - Git Repo: https://git.halvo.me/paul - LinkedIn: https://www.linkedin.com/in/paul-halvorsen - Citizen of the United Stats + - Security Clearance + - Expired TS/SCI ## 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 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 ### Abnormal AI @@ -28,17 +75,26 @@ rust, cargo, python, c, docker, containers, TDD, test driven development, pytest **Software Engineer**: Jan 2026 - Present - Utilize claude AI, summarize code, aid in coding, planning - - Build and maintain k8s and aws infrastructure + - Build and maintain k8s and AWS infrastructure - python - pacman - haml - yaml + - 10 k8s clusters, with auto scale up and down number of instances - Build and maintain service to aggregate data - golang, python - pytest, unit testing - running cron jobs in k8s - using kubectl, k9s to control k8s - 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 @@ -76,10 +132,10 @@ rust, cargo, python, c, docker, containers, TDD, test driven development, pytest - Spin up temporary servers - Run tests - Performance improvements - - Reduce CPU usage by filtering out previously observed issues - - Reduce memory usage by using regex and filtering - - Reduce network traffic using regex and filtering - - Reduce disk size by turning multiple strings into regex + - Reduce CPU usage by filtering out previously observed issues ~ %90 + - Reduce memory usage by using regex and filtering ~ %60 + - Reduce network traffic using regex and filtering ~ %80 + - Reduce disk size by turning multiple strings into regex ~ %20 - Libraries for watching network traffic on Windows and Linux - Event driven - White and blacklists in regex @@ -87,13 +143,14 @@ rust, cargo, python, c, docker, containers, TDD, test driven development, pytest - Filesystem changes - User changes - Event driven - - Windows - - Server 2009, 2012, 2019 - - xp, 7, 8, 10, 11 - - Linux - - Debian, Ubuntu - - Redhat, CentOS - - MacOS + - Supported OSes + - Windows + - Server 2009, 2012, 2019 + - xp, 7, 8, 10, 11 + - Linux + - Debian, Ubuntu + - Redhat, CentOS + - MacOS - Written RFC and ADR to drive design and decision making on project direction - Containment - Design and build containment for all platforms upon detected compromise @@ -109,6 +166,9 @@ rust, cargo, python, c, docker, containers, TDD, test driven development, pytest - Setup database when it doesn't exist - Testing performed using VMs built in Proxmox and Virtualbox - SCRUM + - Customers + - Small to large (Fortune 500 companies) + - Thousands of endpoints ### Kyrus Tech @@ -225,6 +285,11 @@ rust, cargo, python, c, docker, containers, TDD, test driven development, pytest - Build token scoring system - Keep track of scores and provide feedback to the teams - Report scoring throughout the competition + - Customers + - Military branches + - DoD + - DoJ + - Other government departments ### 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 - Reduced call-ins - Organize and train team of contractors + - Trained up and informally supervised team of 5 - Spun up to work 24x7 - Provide SOPs for quick fixes - 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 - SANS Courses - Staying up-to-date on security research + - Blog: https://flow.halvo.me + - Git: https://git.halvo.me/paul - Homelab - Proxmox - Running email