191 lines
7.8 KiB
Scheme
191 lines
7.8 KiB
Scheme
|
|
;;; 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))))
|