resume/resume.scm
2026-08-27 12:55:55 -04:00

200 lines
8.2 KiB
Scheme
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

;;; resume.scm - Resume data definitions
;; ─── Data constructors ────────────────────────────────────────────────────────
(define (make-front-matter name email location)
(list 'front-matter
(cons 'name name)
(cons 'email email)
(cons 'location location)))
;; Work-experience project: bullet summary + hover-reveal detail bullets
(define (make-work-project name date-start date-end summary-bullets detail-bullets technologies)
(list 'work-project
(cons 'name name)
(cons 'date-start date-start)
(cons 'date-end date-end)
(cons 'summary-bullets summary-bullets)
(cons 'detail-bullets detail-bullets)
(cons 'technologies technologies)))
;; Hobby/personal project: sentence summary + hover-reveal (label . url) links
(define (make-project name date-start date-end summary detail-links technologies)
(list 'project
(cons 'name name)
(cons 'date-start date-start)
(cons 'date-end date-end)
(cons 'summary summary)
(cons 'detail-links detail-links)
(cons 'technologies technologies)))
;; Title card: lives inside a job card
;; blurb responsibility bullets
;; projects project-cards worked on under this title
(define (make-title title company location date-start date-end blurb projects)
(list 'title-card
(cons 'title title)
(cons 'company company)
(cons 'location location)
(cons 'date-start date-start)
(cons 'date-end date-end)
(cons 'blurb blurb)
(cons 'projects projects)))
;; Job card: groups one employer's title-cards
(define (make-job company date-start date-end titles)
(list 'job
(cons 'company company)
(cons 'date-start date-start)
(cons 'date-end date-end)
(cons 'titles titles)))
;; Education card
;; bullets honours, activities shown by default
;; extracurriculars list of strings, revealed on hover/expand
(define (make-education institution location degree date-start date-end bullets extracurriculars)
(list 'education
(cons 'institution institution)
(cons 'location location)
(cons 'degree degree)
(cons 'date-start date-start)
(cons 'date-end date-end)
(cons 'bullets bullets)
(cons 'extracurriculars extracurriculars)))
(define (make-hobby-projects heading projects)
(list 'hobby-projects
(cons 'heading heading)
(cons 'projects projects)))
(define (make-interest title description)
(list 'interest
(cons 'title title)
(cons 'description description)))
;; Favorite software section: flat list of names, displayed in N columns
(define (make-favorite-software heading items)
(list 'favorite-software
(cons 'heading heading)
(cons 'items items)))
(define (make-interests heading items)
(list 'interests
(cons 'heading heading)
(cons 'items items)))
;; Generic accessor
(define (field rec key)
(cdr (assq key (cdr rec))))
;; ─── Resume data ──────────────────────────────────────────────────────────────
(define my-front-matter
(make-front-matter
"Jane Doe"
"jane@example.com"
"Springfield, USA"))
(define job-acme
(make-job
"Acme Corp" "Jan 2020" "Present"
(list
(make-title
"Senior Software Engineer" "Acme Corp" "Remote" "Jun 2022" "Present"
'("Led a team of 4 engineers on the core platform, driving adoption of internal developer tooling and mentoring junior engineers through architecture proposals and code review.")
(list
(make-work-project
"Distributed Config Service" "Mar 2023" "Present"
'("Raft-based distributed config store serving 40+ services with <500 ms p99 propagation.")
'("Designed consensus layer with custom Raft in Go."
"Added multi-region replication with conflict-free merge semantics."
"Reduced config propagation from ~30 s to <500 ms p99.")
'("Go" "Raft" "gRPC" "Kubernetes" "Prometheus"))
(make-work-project
"Developer Portal" "Jun 2022" "Feb 2023"
'("Unified internal service catalogue and runbook search; cut time-to-runbook from 8 min to <30 s.")
'("Indexed 300+ services via OpenAPI scraping."
"Built fuzzy-search backend in Go with Bleve.")
'("Go" "Bleve" "React" "OpenAPI"))))
(make-title
"Software Engineer II" "Acme Corp" "Remote" "Jan 2020" "May 2022"
'("Owned the authentication service end-to-end, reducing API latency by 35% through targeted caching improvements.")
(list
(make-work-project
"Auth Service Rewrite" "Jan 2020" "Dec 2020"
'("Rewrote legacy PHP auth service in Go; cut p99 latency 800 ms → 40 ms.")
'("Migrated 12 M users with zero downtime via dual-write/dark-read."
"Introduced PKCE OAuth 2.0 replacing home-grown session tokens.")
'("Go" "PostgreSQL" "Redis" "OAuth2" "Docker"))
(make-work-project
"Rate Limiting Layer" "Feb 2021" "May 2022"
'("Token-bucket rate limiting across all public API endpoints; reduced abusive traffic by 80%.")
'("Built as a gRPC interceptor with hot-reloaded config."
"Added per-tenant override rules via internal admin UI.")
'("Go" "gRPC" "Redis" "React")))))))
(define job-startup
(make-job
"Startup XYZ" "Jul 2017" "Dec 2019"
(list
(make-title
"Full-Stack Engineer" "Startup XYZ" "Athens, GA" "Jul 2017" "Dec 2019"
'("Built product features across the React frontend and Node.js backend, maintained CI/CD pipelines and AWS infrastructure, and collaborated directly with design and product teams.")
(list
(make-work-project
"Real-Time Dashboard" "Feb 2019" "Dec 2019"
'("Live analytics dashboard processing 50k events/s via WebSocket fan-out.")
'("Replaced polling, cutting server load by 60%."
"User-configurable alert thresholds stored in IndexedDB.")
'("React" "Node.js" "WebSockets" "D3.js" "AWS")))))))
(define my-education
(make-education
"The University of Georgia" "Athens, GA"
"Bachelor of Science in Computer Science"
"Aug 2011" "Dec 2016"
'("Graduated December 2016"
"ICPC Participant and Meeting Coordinator")
'("WUOG 90.5 FM — Radio DJ and Operations Staff Member"
"UGA Game Development Club — founding member"
"Intramural soccer and volleyball")))
(define my-hobby-projects
(make-hobby-projects
"Hobby Projects"
(list
(make-project
"schemeresume" "Aug 2026" "Present"
"Resume generator written in Scheme; data as S-expressions, rendered to HTML via SXML."
'(("GitHub" . "https://github.com/janedoe/schemeresume"))
'("Scheme" "SXML" "HTML" "CSS"))
(make-project
"Tiny Lisp Interpreter" "Jan 2025" "Mar 2025"
"600-line Lisp interpreter in Python with tail-call optimisation, closures, and a macro expander."
'(("GitHub" . "https://github.com/janedoe/tinylisp"))
'("Python" "Lisp")))))
(define my-interests
(make-interests
"Interests"
(list
(make-interest "Open-Source" "Regular contributor to Guile and Chicken Scheme ecosystem libraries.")
(make-interest "Rock Climbing" "Sport climber; currently projecting 5.12a outdoors.")
(make-interest "Technical Writing" "Blog at janedoe.dev — compilers, distributed systems, functional programming."))))
(define my-favorite-software
(make-favorite-software
"Favorite Software"
'("Guile Scheme" "Emacs" "Neovim" "Nix" "Guix" "Tailscale" "WireGuard"
"mpv" "zathura" "tmux" "Alacritty" "Syncthing" "Bspwm" "Rofi")))
;; Flat ordered section list; CSS handles column placement
(define resume
(list 'resume
(cons 'front-matter my-front-matter)
(cons 'sections (list my-education
job-startup
job-acme
my-hobby-projects
my-interests
my-favorite-software))))