From 0afe70a31740367df42fc21c8cbd1916ca19fd01 Mon Sep 17 00:00:00 2001 From: Franck Cuny Date: Sun, 7 Sep 2025 12:59:30 -0700 Subject: convert the resume to HTML instead of PDF --- flake.nix | 4 +- src/css/resume.css | 189 +++++++++++++++++++++++++++++++++++++++++++++++++++++ src/resume.org | 2 +- 3 files changed, 191 insertions(+), 4 deletions(-) create mode 100644 src/css/resume.css diff --git a/flake.nix b/flake.nix index fb3b89f..72d4fc0 100644 --- a/flake.nix +++ b/flake.nix @@ -23,7 +23,6 @@ inherit system; }; treefmtEval = treefmt-nix.lib.evalModule pkgs ./treefmt.nix; - texlive = pkgs.texlive.combine { inherit (pkgs.texlive) scheme-context; }; in { # for `nix fmt` @@ -61,12 +60,11 @@ src = ./.; buildInputs = [ pandoc - texlive ]; buildPhase = '' mkdir -p $out pandoc --embed-resources -s src/index.org --css=src/css/main.css -t html -o $out/index.html - pandoc --pdf-engine=context src/resume.org -o $out/resume.pdf + pandoc --embed-resources -s src/resume.org --css=src/css/resume.css -t html -o $out/resume.html ''; dontInstall = true; }; diff --git a/src/css/resume.css b/src/css/resume.css new file mode 100644 index 0000000..3fa95f0 --- /dev/null +++ b/src/css/resume.css @@ -0,0 +1,189 @@ +/* Reset and base styles */ +* { + box-sizing: border-box; +} + +body { + font-family: -apple-system, system-ui, sans-serif; + font-size: 16px; + line-height: 1.6; + color: #2c3e50; + margin: 0 auto; + padding: 2rem 1rem; + max-width: 50rem; + background: #fff; +} + +/* Typography hierarchy */ +h1 { + font-size: 1.75rem; + font-weight: 700; + color: #2c3e50; + margin: 0 0 0.5rem 0; + line-height: 1.2; +} + +h2 { + font-size: 1.25rem; + font-weight: 600; + color: #34495e; + margin: 2rem 0 1rem 0; + padding-bottom: 0.5rem; + border-bottom: 2px solid #e9ecef; +} + +h3 { + font-size: 1.1rem; + font-weight: 600; + color: #495057; + margin: 1.5rem 0 0.75rem 0; +} + +/* Header section */ +#title-block-header { + margin-bottom: 2rem; + padding-bottom: 1rem; + border-bottom: 3px solid #3498db; +} + +/* Contact info and summary */ +.contact-info { + font-size: 0.95rem; + color: #6c757d; + margin-bottom: 1.5rem; +} + +.contact-info a { + color: #3498db; + text-decoration: none; +} + +.contact-info a:hover { + text-decoration: underline; +} + +/* Lists */ +ul { + margin: 1rem 0; + padding-left: 1.5rem; +} + +li { + margin-bottom: 0.5rem; +} + +/* Job tables */ +table { + width: 100%; + margin: 1rem 0; + border-collapse: collapse; +} + +td { + padding: 0.25rem 1rem 0.25rem 0; + font-family: + -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif; + font-size: 0.9rem; + vertical-align: top; +} + +td:last-child { + text-align: right; + font-weight: 500; + color: #6c757d; +} + +td:first-child { + font-weight: 600; + color: #495057; +} + +td:nth-child(2) { + color: #6c757d; +} + +/* Links */ +a { + color: #3498db; + text-decoration: none; + transition: color 0.2s ease; +} + +a:hover { + color: #2980b9; + text-decoration: underline; +} + +/* Strong text for emphasis */ +strong { + font-weight: 600; + color: #2c3e50; +} + +/* Improved spacing for sections */ +#experience { + margin-top: 2rem; +} + +/* Company sections */ +h2[id*="roblox"], +h2[id*="twitter"], +h2[id*="say-media"], +h2[id*="linkfluence"] { + margin-top: 2.5rem; + font-size: 1.3rem; + color: #2c3e50; +} + +/* Better paragraph spacing */ +p { + margin: 0.75rem 0; +} + +/* Print styles */ +@media print { + body { + font-size: 12px; + line-height: 1.4; + padding: 0; + } + + h1 { + font-size: 1.4rem; + } + + h2 { + font-size: 1.1rem; + page-break-after: avoid; + } + + table { + page-break-inside: avoid; + } + + a { + color: inherit; + text-decoration: none; + } +} + +/* Mobile responsiveness */ +@media (max-width: 600px) { + body { + padding: 1rem 0.75rem; + font-size: 15px; + } + + h1 { + font-size: 1.5rem; + } + + table { + font-size: 0.85rem; + } + + td:last-child { + text-align: left; + font-size: 0.8rem; + } +} diff --git a/src/resume.org b/src/resume.org index 197d356..326e2cc 100644 --- a/src/resume.org +++ b/src/resume.org @@ -25,7 +25,7 @@ Seeking opportunities to lead transformative reliability initiatives, mentor the As a Team Lead for the Site Reliability group, I define road-maps, milestones, and identify areas where SREs can partner with different teams to improve overall reliability of our infrastructure and services. Key projects and responsibilities include: -- [[https://corp.roblox.com/newsroom/2023/12/making-robloxs-infrastructure-efficient-resilient][*Cell Architecture Implementation]]*: Led the SRE effort to transition from monolithic Compute clusters to a Cell architecture, significantly enhancing Roblox's infrastructure resilience and efficiency. Developed migration plans, identified necessary automation, and drove production readiness for this critical reliability improvement. +- *[[https://corp.roblox.com/newsroom/2023/12/making-robloxs-infrastructure-efficient-resilient][Cell Architecture Implementation* ]]: Led the SRE effort to transition from monolithic Compute clusters to a Cell architecture, significantly enhancing Roblox's infrastructure resilience and efficiency. Developed migration plans, identified necessary automation, and drove production readiness for this critical reliability improvement. - *Edge Infrastructure Migration*: Spearheaded the migration from HAproxy to Envoy at the edge, aimed at reducing failure domains, improving performance by streamlining the proxy chain, and enabling user traffic steering to specific cells from the edge. -- cgit v1.2.3