;;; 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))))