diff --git a/generate.scm b/generate.scm
index c5d37c8..bf2287c 100644
--- a/generate.scm
+++ b/generate.scm
@@ -18,8 +18,8 @@
;; ─── Individual cards (all become flat children of .columns) ──────────────────
-;; Project card — detail bullets revealed on hover (desktop) or click (mobile)
-(define (render-project proj)
+;; Work-experience project card — bullet summary + hover-reveal detail bullets
+(define (render-work-project proj)
`(div (@ (class "project-card")
(onclick "this.classList.toggle('open')"))
(div (@ (class "project-header"))
@@ -31,6 +31,27 @@
,(bullets (field proj 'detail-bullets)))
,(tech-list (field proj 'technologies))))
+;; Hobby/personal project card — sentence summary + hover-reveal links
+(define (render-project proj)
+ (let* ((links (field proj 'detail-links))
+ (has-links (and (pair? links) (> (length links) 0))))
+ `(div (@ (class "project-card")
+ ,@(if has-links '((onclick "this.classList.toggle('open')")) '()))
+ (div (@ (class "project-header"))
+ (span (@ (class "project-name")) ,(field proj 'name))
+ ,(date-range (field proj 'date-start) (field proj 'date-end)))
+ (p (@ (class "project-summary")) ,(field proj 'summary))
+ ,(if has-links
+ `(div (@ (class "project-details"))
+ (ul ,@(map (lambda (link)
+ `(li (a (@ (href ,(cdr link))
+ (target "_blank")
+ (rel "noopener"))
+ ,(car link))))
+ links)))
+ '(span))
+ ,(tech-list (field proj 'technologies)))))
+
;; Title card: blurb only, no projects nested inside.
;; Projects are emitted as siblings after the title card.
(define (render-title-card tc)
@@ -43,11 +64,11 @@
(p (@ (class "title-blurb"))
,(string-join (field tc 'blurb) " "))))
-;; Emit a title card followed by its project cards as a flat list of siblings
+;; Emit a title card followed by its work-project cards as a flat list of siblings
(define (render-title-flat tc)
(append
(list (render-title-card tc))
- (map render-project (field tc 'projects))))
+ (map render-work-project (field tc 'projects))))
(define (render-education edu)
`(div (@ (class "education-card")
diff --git a/resume.html b/resume.html
index a1773dc..fec0321 100644
--- a/resume.html
+++ b/resume.html
@@ -1,2 +1,2 @@
-
Jane Doe
Jane Doe
Springfield, USAjane@example.com
Education
Bachelor of Science in Computer ScienceAug 2011 – Dec 2016
The University of Georgia • Athens, GA
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
Work Experience
Full-Stack EngineerJul 2017 – Dec 2019
Startup XYZ • Athens, GA
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.
Real-Time DashboardFeb 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
Senior Software EngineerJun 2022 – Present
Acme Corp • Remote
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.
Distributed Config ServiceMar 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
Developer PortalJun 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
Software Engineer IIJan 2020 – May 2022
Acme Corp • Remote
Owned the authentication service end-to-end, reducing API latency by 35% through targeted caching improvements.
Auth Service RewriteJan 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.
Bachelor of Science in Computer ScienceAug 2011 – Dec 2016
The University of Georgia • Athens, GA
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
Work Experience
Full-Stack EngineerJul 2017 – Dec 2019
Startup XYZ • Athens, GA
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.
Real-Time DashboardFeb 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
Senior Software EngineerJun 2022 – Present
Acme Corp • Remote
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.
Distributed Config ServiceMar 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
Developer PortalJun 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
Software Engineer IIJan 2020 – May 2022
Acme Corp • Remote
Owned the authentication service end-to-end, reducing API latency by 35% through targeted caching improvements.
Auth Service RewriteJan 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.