add automatic language context, fix french translations on resume

This commit is contained in:
spencer 2026-04-25 20:00:49 -04:00
parent 984b7f2641
commit 401803e349
5 changed files with 56 additions and 40 deletions

View file

@ -14,6 +14,7 @@ async fn main() {
} }
let templates = warp::get() let templates = warp::get()
.and(warp::path::param::<String>())
.and(warp::path::tail()) .and(warp::path::tail())
.and_then(render_template); .and_then(render_template);
@ -34,13 +35,16 @@ async fn main() {
.await; .await;
} }
async fn render_template(tail: Tail) -> Result<impl Reply, Rejection> { async fn render_template(lang: String, tail: Tail) -> Result<impl Reply, Rejection> {
let mut path = tail.as_str().to_string(); let mut path = format!("{lang}/{}", tail.as_str());
if path.is_empty() || path.ends_with('/') { if path.is_empty() || path.ends_with('/') {
path.push_str("index.html"); path.push_str("index.html");
} }
match TEMPLATES.render(&path, &Context::new()) { let mut context = Context::new();
context.insert("lang", &lang);
match TEMPLATES.render(&path, &context) {
Ok(html) => Ok(warp::reply::html(html)), Ok(html) => Ok(warp::reply::html(html)),
Err(e) => { Err(e) => {
eprintln!("Tera error: {}", e); eprintln!("Tera error: {}", e);

View file

@ -1,4 +1,4 @@
{% macro meta(title, lang) %} {% macro meta(title) %}
<!DOCTYPE html> <!DOCTYPE html>
<html lang="{{ lang }}"> <html lang="{{ lang }}">
<head> <head>

View file

@ -1,7 +1,7 @@
{% import "common.html" as common %} {% import "common.html" as common %}
{{ common::meta(title="Spencer Whitehead - Resume", lang="en") }} {{ common::meta(title="Spencer Whitehead - Resume") }}
<body> <body>
{{ common::nav() }} {{ common::nav() }}
<header> <header>
<h1>Spencer Nicholas Whitehead</h1> <h1>Spencer Nicholas Whitehead</h1>
@ -45,7 +45,7 @@
<article> <article>
<p><strong>Software Engineering Intern</strong>, Citadel Enterprise, January 2020 April 2020</p> <p><strong>Software Engineering Intern</strong>, Citadel Enterprise, January 2020 April 2020</p>
<ul> <ul>
<li>Developed C++ data pipelines to parse and archive data streams from Thompson Reuters.</li> <li>Developed C++ data pipelines to parse and archive data streams from Thomson Reuters.</li>
<li>Handled over 300GB per day of market data at the height of the market impact of COVID-19.</li> <li>Handled over 300GB per day of market data at the height of the market impact of COVID-19.</li>
</ul> </ul>
</article> </article>
@ -83,17 +83,17 @@
<section> <section>
<h2>Leadership and Professional Service</h2> <h2>Leadership and Professional Service</h2>
<p>Steward, Duke Graduate Students Union, Fall 2025 - present</p> <p><strong>Steward</strong>, Duke Graduate Students Union, Fall 2025 - present</p>
<ul> <ul>
<li>Mediated workplace disputes and represented graduate workers in grievance proceedings.</li> <li>Mediated workplace disputes and represented graduate workers in grievance proceedings.</li>
</ul> </ul>
<p>President, AMS Student Chapter, 2024-25 academic year</p> <p><strong>President</strong>, Duke AMS Student Chapter, 2024-25 academic year</p>
<ul> <ul>
<li>Organized and hosted the Triangle Area Graduate Mathematics Seminar with NC State University and UNC Chapel Hill at Duke, February 2025.</li> <li>Organized and hosted the Triangle Area Graduate Mathematics Seminar with NC State University and UNC Chapel Hill at Duke, February 2025.</li>
</ul> </ul>
<p>Graduate student representative, Duke Mathematics Departmental Teaching Committee, Fall 2023 - present</p> <p><strong>Graduate student representative</strong>, Duke Mathematics Departmental Teaching Committee, Fall 2023 - present</p>
<ul> <ul>
<li>Performed annual interviews and advocated for graduate interests in departmental teaching decisions.</li> <li>Performed annual interviews and advocated for graduate interests in departmental teaching decisions.</li>
</ul> </ul>
@ -113,10 +113,15 @@
<article> <article>
<h3>Supervision</h3> <h3>Supervision</h3>
<p><strong>Duke Math+ program</strong> (joint with Biji Wong, Gregory Herschlag), Spring 2026</p> <p><strong>Duke Math+ program</strong> (joint with Biji Wong, Gregory Herschlag), Spring 2026</p>
<ul>
<li>
<p>Supervised four undergraduate students in a project on the application of diffusion maps and machine learning to graph partition problems, with a focus on the study of gerrymandering.</p> <p>Supervised four undergraduate students in a project on the application of diffusion maps and machine learning to graph partition problems, with a focus on the study of gerrymandering.</p>
</li>
</ul>
<p><strong>MITACS internship program</strong> (joint with Benoit Charbonneau), Spring 2022</p> <p><strong>MITACS internship program</strong> (joint with Benoit Charbonneau), Spring 2022</p>
<p>Supervised two undergraduate students in a computational project on low-dimensional optimal packing problems</p> <ul>
<li><p>Supervised two undergraduate students in a computational project on low-dimensional optimal packing problems.</p></li>
</ul>
</article> </article>
<article> <article>

View file

@ -5,6 +5,9 @@
<body> <body>
<p>To access the English version, click <a href="/en/">here.</a></p> <p>To access the English version, click <a href="/en/">here.</a></p>
<p>Ceci est le site web personnel de Spencer Whitehead.</p> <p>N.B. : ma langue maternelle est l'anglais ; je m'en excuse d'avance pour les éventuelles fautes sur cette page. En cas d'erreur, veuillez m'envoyer un e-mail à <a href="mailto:spencer@firemail.cc">spencer@firemail.cc</a>.</p>
<p>Ceci est le site web personnel de Spencer Whitehead. Je suis doctorant en quatrième année à l'université Duke. Je m'intéresse à la recherche en géométrie différentielle, particulièrement en dimension 4 et 8. J'étudie aussi les applications des systèmes de calcul formel aux problèmes de géométrie. Je prévois de soutenir ma thèse en avril 2027.</p>
<p>
<p><a href="resume/">CV</a></p> <p><a href="resume/">CV</a></p>
</body> </body>

View file

@ -16,18 +16,18 @@
<h2>Education</h2> <h2>Education</h2>
<article> <article>
<p><strong>Doctorant, départment des mathématiques, Université Duke</strong> | septembre 2022 avril 2027</p> <p><strong>Doctorant, département de mathématiques, Université Duke</strong> | septembre 2022 avril 2027</p>
<ul> <ul>
<li>Chercheur de la geometrie de quatre et huit dimensions sous la direction du Pr Mark Stern.</li> <li>Chercheur en géométrie de quatre et huit dimensions sous la direction du Pr Mark Stern.</li>
<li>Membre du programme de certificat en enseignant universitaire, qui sera décerné à la reussit au doctorat.</li> <li>Membre du programme de certificat en enseigement universitaire, qui sera décerné à la réussite du doctorat.</li>
</ul> </ul>
</article> </article>
<article> <article>
<p><strong>M.Math. en mathématiques pures (thèse du recherche), Université de Waterloo</strong> | octobre 2021 août 2022</p> <p><strong>M.Math. en mathématiques pures (thèse de recherche), Université de Waterloo</strong> | octobre 2021 août 2022</p>
<ul> <ul>
<li>Sous la direction du Pr Benoit Charbonneau.</li> <li>Sous la direction du Pr Benoît Charbonneau.</li>
<li>Titre du thèse : Integrality theorems for symmetric instantons.</li> <li>Titre de la thèse : Integrality theorems for symmetric instantons.</li>
</ul> </ul>
</article> </article>
@ -46,24 +46,24 @@
<article> <article>
<p><strong>Stagiaire en ingénierie logicielle</strong>, Citadel Enterprise, janvier 2020 avril 2020</p> <p><strong>Stagiaire en ingénierie logicielle</strong>, Citadel Enterprise, janvier 2020 avril 2020</p>
<ul> <ul>
<li>Developpment de pipelines en C++ pour analyser et archiver donnèes de Thompson Reuters.</li> <li>Développement de pipelines en C++ pour analyser et archiver des données de Thomson Reuters.</li>
<li>Traitment d'en haute de 300GB des donnèes de marché par jour pendant la crise de COVID-19.</li> <li>Traitement en masse de plus de 300 GB de données de marché par jour pendant la crise de COVID-19.</li>
</ul> </ul>
</article> </article>
<article> <article>
<p><strong>Stagiaire en ingénierie logicielle</strong>, ContextLogic LLC, janvier 2018 avril 2018</p> <p><strong>Stagiaire en ingénierie logicielle</strong>, ContextLogic LLC, janvier 2018 avril 2018</p>
<ul> <ul>
<li>Recherche sur les estimates de délais de livraison qui ont généré 2,5% de profits supplémentaires.</li> <li>Recherche sur les estimations de délais de livraison ayant généré 2,5 % de profits supplémentaires.</li>
<li>Création de reports et tableau de bord Grafana en combinaison des donnèes de MongoDB et TreasureData.</li> <li>Création de rapports et tableau de bord Grafana à partir de données de MongoDB et TreasureData.</li>
</ul> </ul>
</article> </article>
<article> <article>
<p><strong>Stagiaire en ingénierie logicielle</strong>, Citadel LLC, septembre 2017 décembre 2017</p> <p><strong>Stagiaire en ingénierie logicielle</strong>, Citadel LLC, septembre 2017 décembre 2017</p>
<ul> <ul>
<li>Création et soutien de logiciel de accounting comptabilité pour plus de 100 clients interne.</li> <li>Création et soutien de logiciels de comptabilité pour plus de 100 clients internes.</li>
<li>Conception et implementation des nouveaux formats de réponse, ce qui a reduisé la taille de la réponse 10x et a amelioré la vitesse 5x.</li> <li>Conception et implémentation de nouveaux formats de réponse, ce qui a réduit la taille de la réponse par 10 fois et a amelioré la vitesse par 5 fois.</li>
</ul> </ul>
</article> </article>
</section> </section>
@ -84,19 +84,19 @@
<section> <section>
<h2>Leadership et services professionnels</h2> <h2>Leadership et services professionnels</h2>
<p>Délégué syndical, Duke Graduate Students Union, septembre 2025 - à ce jour</p> <p><strong>Délégué syndical</strong>, Duke Graduate Students Union, septembre 2025 - à ce jour</p>
<ul> <ul>
<li>Mediation de conflits au travail et répresentation des doctorants en procédure de gref.</li> <li>Médiation de conflits au travail et représentation des doctorants en procédure de gref.</li>
</ul> </ul>
<p>Président, Section étudiant de l'American Mathematical Society, année universitaire 2024-25</p> <p><strong>Président</strong>, Section étudiante de l'American Mathematical Society, année universitaire 2024-25</p>
<ul> <ul>
<li>Organisation du Triangle Area Graduate Mathematics Seminar avec l'Université NC State et l'UNC Chapel Hill à Duke, février 2025.</li> <li>Organisation du Triangle Area Graduate Mathematics Seminar avec l'université d'État de Caroline du Nord et l'université de Caroline du Nord à Chapel Hill, février 2025 à l'université Duke.</li>
</ul> </ul>
<p>Représentant des doctorants, Duke Mathematics Departmental Teaching Committee, novembre 2023 - à ce jour</p> <p><strong>Représentant des doctorants</strong>, Duke Mathematics Departmental Teaching Committee, novembre 2023 - à ce jour</p>
<ul> <ul>
<li>Performed annual interviews and advocated for graduate interests in departmental teaching decisions.</li> <li>Réalisation d'entretiens annuels et défense des intérêtes des doctorants dans les décisions d'enseignement départementales.</li>
</ul> </ul>
</section> </section>
@ -114,16 +114,20 @@
<article> <article>
<h3>Direction</h3> <h3>Direction</h3>
<p><strong>Duke Math+ program</strong> (joint with Biji Wong, Gregory Herschlag), mai - août 2026</p> <p><strong>Duke Math+ program</strong> (joint with Biji Wong, Gregory Herschlag), mai - août 2026</p>
<p>Direction de quatres étudiants dans un projet sur l'application de diffusion maps et apprentissage automatique pour rechercher le gerrymandering.</p> <ul>
<li><p>Direction de quatre étudiants dans un projet sur l'application de diffusion maps et apprentissage automatique pour étudier le gerrymandering.</p></li>
</ul>
<p><strong>MITACS internship program</strong> (joint with Benoit Charbonneau), mai - août 2022</p> <p><strong>MITACS internship program</strong> (joint with Benoît Charbonneau), mai - août 2022</p>
<p>Direction de deux étudiants dans un projet sur le probleme de packing en bas dimension.</p> <ul>
<li><p>Direction de deux étudiants dans un projet sur le problème de packing en basse dimension.</p></li>
</ul>
</article> </article>
<article> <article>
<h3>Selected Research Presentations</h3> <h3>Selected Research Presentations</h3>
<ul> <ul>
<li>[Invité] <em>An asymptotic Nahm transform for Spin(7) instantons.</em> Mathematical Congress of the Americas, Miami, julliet 2025.</li> <li>[Invité] <em>An asymptotic Nahm transform for Spin(7) instantons.</em> Mathematical Congress of the Americas, Miami, juillet 2025.</li>
<li><em>Symmetric instantons.</em> (Poster). Geometric Models of Matter, Leeds, août 2024.</li> <li><em>Symmetric instantons.</em> (Poster). Geometric Models of Matter, Leeds, août 2024.</li>
<li><em>Generalized Pythagorean lutes.</em> Bridges 2022, Helsinki, août 2022.</li> <li><em>Generalized Pythagorean lutes.</em> Bridges 2022, Helsinki, août 2022.</li>
<li><em>Integrality theorems for symmetric instantons.</em> Union College Mathematics Conference, Schenectady, juin 2022.</li> <li><em>Integrality theorems for symmetric instantons.</em> Union College Mathematics Conference, Schenectady, juin 2022.</li>
@ -133,14 +137,14 @@
<h3>Selected Teaching Experience</h3> <h3>Selected Teaching Experience</h3>
<p><strong>Chargé de cours</strong> MATH 106L (Lab calculus 2), août - décembre 2023, Université Duke</p> <p><strong>Chargé de cours</strong> MATH 106L (Lab calculus 2), août - décembre 2023, Université Duke</p>
<ul> <ul>
<li>Enseignement et coordination d'un group de 18 étudiants.</li> <li>Enseignement et coordination d'un groupe de 18 étudiants.</li>
<li>Gestion d'une équipe de 4 auxiliaires d'enseignement</li> <li>Gestion d'une équipe de 4 auxiliaires d'enseignement.</li>
</ul> </ul>
<p><strong>Auxiliaire d'enseignment</strong> CS 246(E) ([Enriched] Object-Oriented Software Development), septembre 2018 - décembre 2019, Université de Waterloo.</p> <p><strong>Auxiliaire d'enseignement</strong> CS 246(E) ([Enriched] Object-Oriented Software Development), septembre 2018 - décembre 2019, Université de Waterloo.</p>
<ul> <ul>
<li>Delivered weekly tutorial lectures for classes of 50+ students.</li> <li>Cours de tutorat hebdomadaires pour des groupes de plus de 50 étudiants.</li>
<li>Creation des devoirs et gestation d'outils logiciels pour evaluer code d'étudiants</li> <li>Création des devoirs et gestion d'outils logiciels pour évaluer le code des étudiants.</li>
</ul> </ul>
</article> </article>
</section> </section>