More font tweaks
This commit is contained in:
parent
230bc5a002
commit
6e8d7bc106
4 changed files with 83 additions and 50 deletions
29
generate.scm
29
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")
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
79
resume.scm
79
resume.scm
|
|
@ -8,15 +8,25 @@
|
|||
(cons 'email email)
|
||||
(cons 'location location)))
|
||||
|
||||
(define (make-project name date-start date-end summary-bullets detail-bullets technologies . rest)
|
||||
(list 'project
|
||||
;; 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)
|
||||
(cons 'url (if (null? rest) #f (car rest)))))
|
||||
(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
|
||||
|
|
@ -93,37 +103,34 @@
|
|||
"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-project
|
||||
(make-work-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."
|
||||
'("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 time from ~30 s to <500 ms p99.")
|
||||
"Reduced config propagation from ~30 s to <500 ms p99.")
|
||||
'("Go" "Raft" "gRPC" "Kubernetes" "Prometheus"))
|
||||
(make-project
|
||||
(make-work-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.")
|
||||
'("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-project
|
||||
(make-work-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.")
|
||||
'("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-project
|
||||
(make-work-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.")
|
||||
'("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
|
||||
|
|
@ -134,12 +141,11 @@
|
|||
"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-project
|
||||
(make-work-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.")
|
||||
'("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
|
||||
|
|
@ -159,19 +165,14 @@
|
|||
(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")
|
||||
"https://github.com/janedoe/schemeresume")
|
||||
"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"
|
||||
'("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")
|
||||
"https://github.com/janedoe/tinylisp"))))
|
||||
"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
|
||||
|
|
|
|||
23
style.css
23
style.css
|
|
@ -166,13 +166,19 @@ p.title-blurb {
|
|||
|
||||
.project-name { font-size: 0.72rem; }
|
||||
|
||||
.project-summary ul { padding-left: 12px; margin-top: 2px; }
|
||||
.project-summary li {
|
||||
p.project-summary {
|
||||
font-size: 0.68rem;
|
||||
line-height: 1.5;
|
||||
color: rgba(255,255,255,0.85);
|
||||
margin-top: 2px;
|
||||
}
|
||||
|
||||
div.project-summary ul { list-style: disc; padding-left: 14px; margin-top: 2px; }
|
||||
div.project-summary li {
|
||||
font-size: 0.68rem;
|
||||
line-height: 1.5;
|
||||
color: rgba(255,255,255,0.85);
|
||||
}
|
||||
.project-summary li::before { content: "• "; color: var(--muted); }
|
||||
|
||||
.project-details {
|
||||
max-height: 0;
|
||||
|
|
@ -198,14 +204,19 @@ p.title-blurb {
|
|||
.education-card:hover .edu-extras { max-height: 0; opacity: 0; margin-top: 0; }
|
||||
.education-card.open .edu-extras { max-height: 400px; opacity: 1; margin-top: 4px; }
|
||||
}
|
||||
.project-details ul { padding-left: 12px; margin-top: 4px; }
|
||||
.project-details ul { list-style: disc; padding-left: 14px; margin-top: 4px; }
|
||||
.project-details li {
|
||||
font-size: 0.68rem;
|
||||
color: var(--muted);
|
||||
line-height: 1.5;
|
||||
margin-bottom: 1px;
|
||||
margin-bottom: 2px;
|
||||
}
|
||||
.project-details li::before { content: "• "; }
|
||||
.project-details li a {
|
||||
color: var(--accent);
|
||||
text-decoration: underline;
|
||||
text-underline-offset: 2px;
|
||||
}
|
||||
.project-details li a:hover { opacity: 0.8; }
|
||||
|
||||
.tech-list {
|
||||
display: flex;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue