2026-08-26 12:34:16 -04:00
;;; resume.scm - Resume data definitions
;; ─── Data constructors ────────────────────────────────────────────────────────
2026-08-26 13:09:47 -04:00
( define ( make-front-matter name email location )
2026-08-26 12:34:16 -04:00
( list 'front-matter
( cons 'name name )
( cons 'email email )
( cons 'location location ) ) )
2026-08-27 12:55:55 -04:00
;; 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
2026-08-26 12:34:16 -04:00
( cons 'name name )
( cons 'date-start date-start )
( cons 'date-end date-end )
( cons 'summary-bullets summary-bullets )
( cons 'detail-bullets detail-bullets )
2026-08-27 12:55:55 -04:00
( 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 ) ) )
2026-08-26 12:34:16 -04:00
;; 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 ) ) )
2026-08-26 13:09:47 -04:00
;; 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 ) ) )
2026-08-26 12:34:16 -04:00
( 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"
2026-08-26 17:54:57 -04:00
' ( "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." )
2026-08-26 12:34:16 -04:00
( list
2026-08-27 12:55:55 -04:00
( make-work-project
2026-08-26 12:34:16 -04:00
"Distributed Config Service" "Mar 2023" "Present"
2026-08-27 12:55:55 -04:00
' ( "Raft-based distributed config store serving 40+ services with <500 ms p99 propagation." )
' ( "Designed consensus layer with custom Raft in Go."
2026-08-26 12:34:16 -04:00
"Added multi-region replication with conflict-free merge semantics."
2026-08-27 12:55:55 -04:00
"Reduced config propagation from ~30 s to <500 ms p99." )
2026-08-26 12:34:16 -04:00
' ( "Go" "Raft" "gRPC" "Kubernetes" "Prometheus" ) )
2026-08-27 12:55:55 -04:00
( make-work-project
2026-08-26 12:34:16 -04:00
"Developer Portal" "Jun 2022" "Feb 2023"
2026-08-27 12:55:55 -04:00
' ( "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." )
2026-08-26 12:34:16 -04:00
' ( "Go" "Bleve" "React" "OpenAPI" ) ) ) )
( make-title
"Software Engineer II" "Acme Corp" "Remote" "Jan 2020" "May 2022"
2026-08-26 17:54:57 -04:00
' ( "Owned the authentication service end-to-end, reducing API latency by 35% through targeted caching improvements." )
2026-08-26 12:34:16 -04:00
( list
2026-08-27 12:55:55 -04:00
( make-work-project
2026-08-26 12:34:16 -04:00
"Auth Service Rewrite" "Jan 2020" "Dec 2020"
2026-08-27 12:55:55 -04:00
' ( "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." )
2026-08-26 12:34:16 -04:00
' ( "Go" "PostgreSQL" "Redis" "OAuth2" "Docker" ) )
2026-08-27 12:55:55 -04:00
( make-work-project
2026-08-26 12:34:16 -04:00
"Rate Limiting Layer" "Feb 2021" "May 2022"
2026-08-27 12:55:55 -04:00
' ( "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." )
2026-08-26 12:34:16 -04:00
' ( "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"
2026-08-26 17:54:57 -04:00
' ( "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." )
2026-08-26 12:34:16 -04:00
( list
2026-08-27 12:55:55 -04:00
( make-work-project
2026-08-26 12:34:16 -04:00
"Real-Time Dashboard" "Feb 2019" "Dec 2019"
2026-08-27 12:55:55 -04:00
' ( "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." )
2026-08-26 12:34:16 -04:00
' ( "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"
2026-08-27 12:55:55 -04:00
"Resume generator written in Scheme; data as S-expressions, rendered to HTML via SXML."
' ( ( "GitHub" . "https://github.com/janedoe/schemeresume" ) )
' ( "Scheme" "SXML" "HTML" "CSS" ) )
2026-08-26 12:34:16 -04:00
( make-project
"Tiny Lisp Interpreter" "Jan 2025" "Mar 2025"
2026-08-27 12:55:55 -04:00
"600-line Lisp interpreter in Python with tail-call optimisation, closures, and a macro expander."
' ( ( "GitHub" . "https://github.com/janedoe/tinylisp" ) )
' ( "Python" "Lisp" ) ) ) ) )
2026-08-26 12:34:16 -04:00
( 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." ) ) ) )
2026-08-26 13:09:47 -04:00
( define my-favorite-software
( make-favorite-software
"Favorite Software"
' ( "Guile Scheme" "Emacs" "Neovim" "Nix" "Guix" "Tailscale" "WireGuard"
"mpv" "zathura" "tmux" "Alacritty" "Syncthing" "Bspwm" "Rofi" ) ) )
2026-08-26 12:34:16 -04:00
;; 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
2026-08-26 17:54:57 -04:00
job-acme
2026-08-26 12:34:16 -04:00
my-hobby-projects
2026-08-26 13:09:47 -04:00
my-interests
my-favorite-software ) ) ) )