resume/resume.scm

190 lines
7.8 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 phone location)
(list 'front-matter
(cons 'name name)
(cons 'email email)
(cons 'phone phone)
(cons 'location location)))
(define (make-project name date-start date-end summary-bullets detail-bullets technologies)
(list '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)))
;; 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)))
(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"
"(555) 000-0000"
"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."
"Drove adoption of internal developer tooling."
"Reviewed architecture proposals and mentored junior engineers.")
(list
(make-project
"Distributed Config Service" "Mar 2023" "Present"
'("Built a Raft-based distributed config store used by 40+ services.")
'("Designed the consensus layer using a custom Raft implementation in Go."
"Added multi-region replication with conflict-free merge semantics."
"Reduced config propagation time from ~30 s to <500 ms p99.")
'("Go" "Raft" "gRPC" "Kubernetes" "Prometheus"))
(make-project
"Developer Portal" "Jun 2022" "Feb 2023"
'("Unified internal service catalogue and runbook search into one portal.")
'("Indexed 300+ services via OpenAPI scraping and custom metadata YAML."
"Built a fuzzy-search backend in Go backed by Bleve."
"Reduced mean time-to-runbook from ~8 min to <30 s.")
'("Go" "Bleve" "React" "OpenAPI"))))
(make-title
"Software Engineer II" "Acme Corp" "Remote" "Jan 2020" "May 2022"
'("Owned the authentication service end-to-end."
"Reduced API latency by 35% through caching improvements.")
(list
(make-project
"Auth Service Rewrite" "Jan 2020" "Dec 2020"
'("Rewrote legacy PHP auth service in Go; cut p99 latency from 800 ms to 40 ms.")
'("Migrated 12 M users with zero downtime using a dual-write/dark-read strategy."
"Introduced PKCE OAuth 2.0 flow replacing home-grown session tokens."
"Added comprehensive integration test suite with 92% coverage.")
'("Go" "PostgreSQL" "Redis" "OAuth2" "Docker"))
(make-project
"Rate Limiting Layer" "Feb 2021" "May 2022"
'("Implemented token-bucket rate limiting across all public API endpoints.")
'("Built as a gRPC interceptor; config hot-reloaded from the config service."
"Reduced abusive traffic incidents by 80% in the first quarter after launch."
"Added per-tenant override rules managed via an 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."
"Collaborated directly with design and product teams.")
(list
(make-project
"Real-Time Dashboard" "Feb 2019" "Dec 2019"
'("Delivered a live analytics dashboard processing 50k events/s.")
'("Replaced polling with WebSocket fan-out, cutting server load by 60%."
"Implemented client-side time-series aggregation using D3.js."
"Added 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"
'("A resume generator written in Scheme that produces HTML via SXML.")
'("Defined a small DSL for resume data in resume.scm."
"generate.scm walks the data and emits SXML serialised to HTML."
"CSS handles all layout including the two-column split.")
'("Scheme" "SXML" "HTML" "CSS"))
(make-project
"Tiny Lisp Interpreter" "Jan 2025" "Mar 2025"
'("A 600-line Lisp interpreter in Python supporting tail-call optimisation.")
'("Implemented environments as linked frames, closures, and a macro expander."
"Added a REPL with readline history and pretty-printing.")
'("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."))))
;; Flat ordered section list; CSS handles column placement
(define resume
(list 'resume
(cons 'front-matter my-front-matter)
(cons 'sections (list my-education
job-acme
job-startup
my-hobby-projects
my-interests))))