From cfe78460a25289803b1c31a942eb9d33f13225a7 Mon Sep 17 00:00:00 2001 From: alice Date: Fri, 24 Apr 2026 15:43:21 -0400 Subject: [PATCH] templating --- Cargo.lock | 622 +++++++++++++++++- Cargo.toml | 2 + Dockerfile | 1 + src/main.rs | 34 +- static/en/academic/cv/resume.pdf | Bin 94605 -> 0 bytes static/en/index.html | 12 - static/fr/resume/index.html | 154 ----- templates/common.html | 20 + .../en/academic/cv/index.html | 0 {static => templates}/en/academic/index.html | 0 .../teaching/2023/106/grading_info/index.html | 0 .../en/academic/teaching/2023/106/index.html | 0 .../en/academic/teaching/index.html | 0 templates/en/index.html | 8 + {static => templates}/en/resume/index.html | 20 +- {static => templates}/fr/index.html | 11 +- templates/fr/resume/index.html | 150 +++++ 17 files changed, 845 insertions(+), 189 deletions(-) delete mode 100644 static/en/academic/cv/resume.pdf delete mode 100644 static/en/index.html delete mode 100644 static/fr/resume/index.html create mode 100644 templates/common.html rename {static => templates}/en/academic/cv/index.html (100%) rename {static => templates}/en/academic/index.html (100%) rename {static => templates}/en/academic/teaching/2023/106/grading_info/index.html (100%) rename {static => templates}/en/academic/teaching/2023/106/index.html (100%) rename {static => templates}/en/academic/teaching/index.html (100%) create mode 100644 templates/en/index.html rename {static => templates}/en/resume/index.html (89%) rename {static => templates}/fr/index.html (60%) create mode 100644 templates/fr/resume/index.html diff --git a/Cargo.lock b/Cargo.lock index 34a2706..64876de 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,6 +1,24 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 + +[[package]] +name = "aho-corasick" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" +dependencies = [ + "memchr", +] + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] [[package]] name = "atomic-waker" @@ -8,6 +26,12 @@ version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" +[[package]] +name = "autocfg" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" + [[package]] name = "base64" version = "0.22.1" @@ -29,18 +53,83 @@ dependencies = [ "generic-array", ] +[[package]] +name = "bstr" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63044e1ae8e69f3b5a92c736ca6269b8d12fa7efe39bf34ddb06d102cf0e2cab" +dependencies = [ + "memchr", + "serde", +] + +[[package]] +name = "bumpalo" +version = "3.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" + [[package]] name = "bytes" version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" +[[package]] +name = "cc" +version = "1.2.61" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d16d90359e986641506914ba71350897565610e87ce0ad9e6f28569db3dd5c6d" +dependencies = [ + "find-msvc-tools", + "shlex", +] + [[package]] name = "cfg-if" version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" +[[package]] +name = "chrono" +version = "0.4.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c673075a2e0e5f4a1dde27ce9dee1ea4558c7ffe648f576438a20ca1d2acc4b0" +dependencies = [ + "iana-time-zone", + "num-traits", + "windows-link", +] + +[[package]] +name = "chrono-tz" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93698b29de5e97ad0ae26447b344c482a7284c737d9ddc5f9e52b74a336671bb" +dependencies = [ + "chrono", + "chrono-tz-build", + "phf", +] + +[[package]] +name = "chrono-tz-build" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c088aee841df9c3041febbb73934cfc39708749bf96dc827e3359cd39ef11b1" +dependencies = [ + "parse-zoneinfo", + "phf", + "phf_codegen", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + [[package]] name = "cpufeatures" version = "0.2.17" @@ -50,6 +139,31 @@ dependencies = [ "libc", ] +[[package]] +name = "crossbeam-deque" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" + [[package]] name = "crypto-common" version = "0.1.7" @@ -60,6 +174,12 @@ dependencies = [ "typenum", ] +[[package]] +name = "deunicode" +version = "1.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abd57806937c9cc163efc8ea3910e00a62e2aeb0b8119f1793a978088f8f6b04" + [[package]] name = "digest" version = "0.10.7" @@ -86,6 +206,12 @@ dependencies = [ "windows-sys", ] +[[package]] +name = "find-msvc-tools" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" + [[package]] name = "fnv" version = "1.0.7" @@ -150,6 +276,41 @@ dependencies = [ "version_check", ] +[[package]] +name = "getrandom" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" +dependencies = [ + "cfg-if", + "libc", + "wasi", +] + +[[package]] +name = "globset" +version = "0.4.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52dfc19153a48bde0cbd630453615c8151bce3a5adfac7a0aebfbf0a1e1f57e3" +dependencies = [ + "aho-corasick", + "bstr", + "log", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "globwalk" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf760ebf69878d9fd8f110c89703d90ce35095324d1f1edcb595c63945ee757" +dependencies = [ + "bitflags", + "ignore", + "walkdir", +] + [[package]] name = "h2" version = "0.4.13" @@ -244,6 +405,15 @@ version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" +[[package]] +name = "humansize" +version = "2.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6cb51c9a029ddc91b07a787f1d86b53ccfa49b0e86688c946ebe8d3555685dd7" +dependencies = [ + "libm", +] + [[package]] name = "hyper" version = "1.9.0" @@ -280,6 +450,46 @@ dependencies = [ "tower-service", ] +[[package]] +name = "iana-time-zone" +version = "0.1.65" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e31bc9ad994ba00e440a8aa5c9ef0ec67d5cb5e5cb0cc7f8b744a35b389cc470" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "log", + "wasm-bindgen", + "windows-core", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "ignore" +version = "0.4.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3d782a365a015e0f5c04902246139249abf769125006fbe7649e2ee88169b4a" +dependencies = [ + "crossbeam-deque", + "globset", + "log", + "memchr", + "regex-automata", + "same-file", + "walkdir", + "winapi-util", +] + [[package]] name = "indexmap" version = "2.14.0" @@ -296,12 +506,34 @@ version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" +[[package]] +name = "js-sys" +version = "0.3.95" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2964e92d1d9dc3364cae4d718d93f227e3abb088e747d92e0395bfdedf1c12ca" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + [[package]] name = "libc" version = "0.2.185" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "52ff2c0fe9bc6cb6b14a0592c2ff4fa9ceb83eea9db979b0487cd054946a2b8f" +[[package]] +name = "libm" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" + [[package]] name = "lock_api" version = "0.4.14" @@ -350,6 +582,15 @@ dependencies = [ "windows-sys", ] +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + [[package]] name = "once_cell" version = "1.21.4" @@ -379,12 +620,102 @@ dependencies = [ "windows-link", ] +[[package]] +name = "parse-zoneinfo" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f2a05b18d44e2957b88f96ba460715e295bc1d7510468a2f3d3b44535d26c24" +dependencies = [ + "regex", +] + [[package]] name = "percent-encoding" version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" +[[package]] +name = "pest" +version = "2.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0848c601009d37dfa3430c4666e147e49cdcf1b92ecd3e63657d8a5f19da662" +dependencies = [ + "memchr", + "ucd-trie", +] + +[[package]] +name = "pest_derive" +version = "2.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11f486f1ea21e6c10ed15d5a7c77165d0ee443402f0780849d1768e7d9d6fe77" +dependencies = [ + "pest", + "pest_generator", +] + +[[package]] +name = "pest_generator" +version = "2.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8040c4647b13b210a963c1ed407c1ff4fdfa01c31d6d2a098218702e6664f94f" +dependencies = [ + "pest", + "pest_meta", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "pest_meta" +version = "2.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89815c69d36021a140146f26659a81d6c2afa33d216d736dd4be5381a7362220" +dependencies = [ + "pest", + "sha2", +] + +[[package]] +name = "phf" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" +dependencies = [ + "phf_shared", +] + +[[package]] +name = "phf_codegen" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aef8048c789fa5e851558d709946d6d79a8ff88c0440c587967f8e94bfb1216a" +dependencies = [ + "phf_generator", + "phf_shared", +] + +[[package]] +name = "phf_generator" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" +dependencies = [ + "phf_shared", + "rand", +] + +[[package]] +name = "phf_shared" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" +dependencies = [ + "siphasher", +] + [[package]] name = "pin-project" version = "1.1.11" @@ -411,6 +742,15 @@ version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] + [[package]] name = "proc-macro2" version = "1.0.106" @@ -429,6 +769,36 @@ dependencies = [ "proc-macro2", ] +[[package]] +name = "rand" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ca0ecfa931c29007047d1bc58e623ab12e5590e8c7cc53200d5202b69266d8a" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom", +] + [[package]] name = "redox_syscall" version = "0.5.18" @@ -438,12 +808,56 @@ dependencies = [ "bitflags", ] +[[package]] +name = "regex" +version = "1.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" + +[[package]] +name = "rustversion" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" + [[package]] name = "ryu" version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f" +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + [[package]] name = "scoped-tls" version = "1.0.1" @@ -521,6 +935,23 @@ dependencies = [ "digest", ] +[[package]] +name = "sha2" +version = "0.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + [[package]] name = "signal-hook-registry" version = "1.4.8" @@ -531,12 +962,28 @@ dependencies = [ "libc", ] +[[package]] +name = "siphasher" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2aa850e253778c88a04c3d7323b043aeda9d3e30d5971937c1855769763678e" + [[package]] name = "slab" version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" +[[package]] +name = "slug" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "882a80f72ee45de3cc9a5afeb2da0331d58df69e4e7d8eeb5d3c7784ae67e724" +dependencies = [ + "deunicode", + "wasm-bindgen", +] + [[package]] name = "smallvec" version = "1.15.1" @@ -564,6 +1011,28 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "tera" +version = "1.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8004bca281f2d32df3bacd59bc67b312cb4c70cea46cbd79dbe8ac5ed206722" +dependencies = [ + "chrono", + "chrono-tz", + "globwalk", + "humansize", + "lazy_static", + "percent-encoding", + "pest", + "pest_derive", + "rand", + "regex", + "serde", + "serde_json", + "slug", + "unicode-segmentation", +] + [[package]] name = "tokio" version = "1.52.1" @@ -637,6 +1106,12 @@ version = "1.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "40ce102ab67701b8526c123c1bab5cbe42d7040ccfd0f64af1a385808d2f43de" +[[package]] +name = "ucd-trie" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" + [[package]] name = "unicase" version = "2.9.0" @@ -649,12 +1124,28 @@ version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" +[[package]] +name = "unicode-segmentation" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9629274872b2bfaf8d66f5f15725007f635594914870f65218920345aa11aa8c" + [[package]] name = "version_check" version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + [[package]] name = "warp" version = "0.4.2" @@ -690,20 +1181,129 @@ version = "0.11.1+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" +[[package]] +name = "wasm-bindgen" +version = "0.2.118" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf938a0bacb0469e83c1e148908bd7d5a6010354cf4fb73279b7447422e3a89" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.118" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eeff24f84126c0ec2db7a449f0c2ec963c6a49efe0698c4242929da037ca28ed" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.118" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d08065faf983b2b80a79fd87d8254c409281cf7de75fc4b773019824196c904" +dependencies = [ + "bumpalo", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.118" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fd04d9e306f1907bd13c6361b5c6bfc7b3b3c095ed3f8a9246390f8dbdee129" +dependencies = [ + "unicode-ident", +] + [[package]] name = "website" version = "0.1.0" dependencies = [ + "lazy_static", + "tera", "tokio", "warp", ] +[[package]] +name = "winapi-util" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" +dependencies = [ + "windows-sys", +] + +[[package]] +name = "windows-core" +version = "0.62.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-link", + "windows-result", + "windows-strings", +] + +[[package]] +name = "windows-implement" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "windows-interface" +version = "0.59.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "windows-link" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" +[[package]] +name = "windows-result" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-strings" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" +dependencies = [ + "windows-link", +] + [[package]] name = "windows-sys" version = "0.61.2" @@ -713,6 +1313,26 @@ dependencies = [ "windows-link", ] +[[package]] +name = "zerocopy" +version = "0.8.48" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eed437bf9d6692032087e337407a86f04cd8d6a16a37199ed57949d415bd68e9" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.48" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70e3cd084b1788766f53af483dd21f93881ff30d7320490ec3ef7526d203bad4" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "zmij" version = "1.0.21" diff --git a/Cargo.toml b/Cargo.toml index 22a185f..0d8045d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,5 +4,7 @@ version = "0.1.0" edition = "2021" [dependencies] +lazy_static = "1.5.0" +tera = "1.20.1" tokio = { version = "1", features = ["full"] } warp = { version = "0.4", features = ["server"] } diff --git a/Dockerfile b/Dockerfile index f1579fa..2cd10a9 100644 --- a/Dockerfile +++ b/Dockerfile @@ -7,6 +7,7 @@ FROM debian:bookworm-slim WORKDIR /app COPY --from=builder /usr/src/app/target/release/website /app/warp_server COPY ./static /app/static +COPY ./templates /app/templates EXPOSE 3030 CMD ["./warp_server"] diff --git a/src/main.rs b/src/main.rs index 3fb43f9..d62e9b6 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,8 +1,21 @@ -use warp::Filter; +use tera::{Context, Tera}; +use warp::{Filter, filters::path::Tail, Reply, Rejection}; + +lazy_static::lazy_static! { + pub static ref TEMPLATES: Tera = Tera::new("templates/**/*").expect("failed to parse templates"); +} #[tokio::main] async fn main() { - let static_files = warp::fs::dir("static"); + let static_pages = warp::fs::dir("static"); + + for name in TEMPLATES.get_template_names() { + println!("Loaded template {}", name); + } + + let templates = warp::get() + .and(warp::path::tail()) + .and_then(render_template); let root = warp::path::end() .and(warp::header::optional::("accept-language")) @@ -14,9 +27,24 @@ async fn main() { warp::redirect(warp::http::Uri::from_static(target)) }); - let routes = root.or(static_files); + let routes = root.or(static_pages).or(templates); warp::serve(routes) .run(([0,0,0,0], 3030)) .await; } + +async fn render_template(tail: Tail) -> Result { + let mut path = tail.as_str().to_string(); + if path.is_empty() || path.ends_with('/') { + path.push_str("index.html"); + } + + match TEMPLATES.render(&path, &Context::new()) { + Ok(html) => Ok(warp::reply::html(html)), + Err(e) => { + eprintln!("Tera error: {}", e); + Err(warp::reject::not_found()) + } + } +} diff --git a/static/en/academic/cv/resume.pdf b/static/en/academic/cv/resume.pdf deleted file mode 100644 index 85fa03eaae964a20832ac9e69e3fcea4ccd55eeb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 94605 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 - - - - Spencer Whitehead - - - -

Pour accéder à la version française, veuillez cliquer ici.

-

This is the personal website of Spencer Whitehead.

-

Resume

- diff --git a/static/fr/resume/index.html b/static/fr/resume/index.html deleted file mode 100644 index f8be8e5..0000000 --- a/static/fr/resume/index.html +++ /dev/null @@ -1,154 +0,0 @@ - - - - - Spencer Nicholas Whitehead - CV - - - - -
-

Spencer Nicholas Whitehead

-
- Courriel: spencer@firemail.cc
- No de tél.: +1 984 312 9089 -
-
- -
-

Education

- -
-

Doctorant, Department of Mathematics, Université Duke | septembre 2022 – Avril 2027

-
    -
  • Currently researching four- and eight-dimensional geometry with Prof. Mark Stern.
  • -
  • Member of the Certificate in College Teaching program, to be awarded on graduation.
  • -
-
- -
-

M.Math. in Pure Mathematics (research thesis), Université de Waterloo | Octobre 2021 – août 2022

-
    -
  • Supervisé de Prof. Benoit Charbonneau.
  • -
  • Titre du thèse: Integrality theorems for symmetric instantons.
  • -
-
- -
-

B.Math. in Pure Mathematics; Minor in études de l'Asie d'Est, Université de Waterloo | septembre 2016 – août 2021

-
    -
  • Recipient of 2021 Alumni Gold Medal for the Faculty of Mathematics.
  • -
  • Recipient of 2021 Jessie W.H. Zou Memorial Award for Excellence in Undergraduate Research.
  • -
-
-
- -
-

Industry Experience

- -
-

Stagiaire en ingénierie logicielle, Citadel Enterprise, Janvier 2020 – Avril 2020

-
    -
  • Developed C++ data pipelines to parse and archive data streams from Thompson Reuters.
  • -
  • Handled over 300GB per day of market data at the height of the market impact of COVID-19.
  • -
-
- -
-

Stagiaire en ingénierie logicielle, ContextLogic LLC, Janvier 2018 – Avril 2018

-
    -
  • Worked as a member of the Platform Data team, monitoring the health of policies and shipping estimates.
  • -
  • Conducted shipping time estimate experiments ranging from neutral to gross +2.5% profits.
  • -
  • Created reports and Grafana dashboards combining data from MongoDB and TreasureData tracking merchant policy effectiveness.
  • -
-
- -
-

Stagiaire en ingénierie logicielle, Citadel LLC, septembre 2017 – décembre 2017

-
    -
  • Worked on the Accounting Development Team, creating and maintaining software for over 100 clients.
  • -
  • Designed, tested, and implemented new response formats reducing response size by 10x and increasing speed 5x.
  • -
-
-
- -
-

Skills

-
-
Langages
-
anglais, français (DELF B2), japonais (niveau B2/C1).
- -
Langages de programmation
-
C, C++, Python, Sage, Maple, Haskell.
- -
Logiciel
-
sklearn, numpy, (geo)pandas, pytorch, SQL.
-
-
- -
-

Leadership and Professional Service

-

Délegué syndical, Duke Graduate Students Union, septembre 2025 - prèsent

-
    -
  • Mediated workplace disputes and represented graduate workers in grievance proceedings.
  • -
- -

Président, Chapitre étudiant de l'American Mathematical Society, année scolaire 2024-25

-
    -
  • Organized and hosted the Triangle Area Graduate Mathematics Seminar with NC State University and UNC Chapel Hill at Duke, fevrier 2025.
  • -
- -

Représentant des doctorants, Duke Mathematics Departmental Teaching Committee, novembre 2023 - present

-
    -
  • Performed annual interviews and advocated for graduate interests in departmental teaching decisions.
  • -
-
- -
-

Academic Activity

- -
-

Selected Publications

-
    -
  • Edidin, Dan, Matthew Satriano, et Spencer Whitehead. "On a smoothness characterization for good moduli spaces." Advances in Mathematics 442 (Avril 2024).
  • -
  • Charbonneau, B. et Whitehead, S. "Studying Wythoff and Zometool Constructions using Maple." Maple in Mathematics Education and Research (pp. 65–76), 2020.
  • -
-
- -
-

Supervision

-

Duke Math+ program (joint with Biji Wong, Gregory Herschlag), Spring 2026

-

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.

- -

MITACS internship program (joint with Benoit Charbonneau), Spring 2022

-

Supervised two undergraduate students in a computational project on low-dimensional optimal packing problems

-
- -
-

Selected Research Presentations

-
    -
  • [Invité] An asymptotic Nahm transform for Spin(7) instantons. Mathematical Congress of the Americas, Miami, juliet 2025.
  • -
  • Symmetric instantons. (Poster). Geometric Models of Matter, Leeds, août 2024.
  • -
  • Generalized Pythagorean lutes. Bridges 2022, Helsinki, août 2022.
  • -
  • Integrality theorems for symmetric instantons. Union College Mathematics Conference, Schenectady, juin 2022.
  • -
-
-
-

Selected Teaching Experience

-

Chargé de cours MATH 106L (Lab calculus 2), août - décembre 2023, Université Duke

-
    -
  • Instruction et coordination d'une classe de 18 élèves.
  • -
  • Gestion d'un equipe de 4 auxiliaires d'enseignment
  • -
- -

Auxiliaire d'enseignment CS 246(E) ([Enriched] Object-Oriented Software Development), septembre 2018 - décembre 2019, Université de Waterloo.

-
    -
  • Delivered weekly tutorial lectures for classes of 50+ students.
  • -
  • Designed assignments and managed the course platform for running and evaluating student code.
  • -
-
-
- - - - diff --git a/templates/common.html b/templates/common.html new file mode 100644 index 0000000..1afc8b1 --- /dev/null +++ b/templates/common.html @@ -0,0 +1,20 @@ +{% macro meta(title, lang) %} + + + + + + {{ title }} + + +{% endmacro %} + +{% macro nav() %} + +{% endmacro %} diff --git a/static/en/academic/cv/index.html b/templates/en/academic/cv/index.html similarity index 100% rename from static/en/academic/cv/index.html rename to templates/en/academic/cv/index.html diff --git a/static/en/academic/index.html b/templates/en/academic/index.html similarity index 100% rename from static/en/academic/index.html rename to templates/en/academic/index.html diff --git a/static/en/academic/teaching/2023/106/grading_info/index.html b/templates/en/academic/teaching/2023/106/grading_info/index.html similarity index 100% rename from static/en/academic/teaching/2023/106/grading_info/index.html rename to templates/en/academic/teaching/2023/106/grading_info/index.html diff --git a/static/en/academic/teaching/2023/106/index.html b/templates/en/academic/teaching/2023/106/index.html similarity index 100% rename from static/en/academic/teaching/2023/106/index.html rename to templates/en/academic/teaching/2023/106/index.html diff --git a/static/en/academic/teaching/index.html b/templates/en/academic/teaching/index.html similarity index 100% rename from static/en/academic/teaching/index.html rename to templates/en/academic/teaching/index.html diff --git a/templates/en/index.html b/templates/en/index.html new file mode 100644 index 0000000..85ad546 --- /dev/null +++ b/templates/en/index.html @@ -0,0 +1,8 @@ +{% import "common.html" as common %} +{{ common::meta(title="Home Page", lang="en") }} + +

Pour accéder à la version française, veuillez cliquer ici.

+

This is the personal website of Spencer Whitehead. I am a fourth-year Ph.D. candidate at Duke University, expecting to graduate in early 2027. + My primary research interests are in gauge theory, four- and eight-dimensional differential geometry, and the applications of computer algebra systems to solving problems in geometry.

+

Resume

+ diff --git a/static/en/resume/index.html b/templates/en/resume/index.html similarity index 89% rename from static/en/resume/index.html rename to templates/en/resume/index.html index bb03995..e6c64c1 100644 --- a/static/en/resume/index.html +++ b/templates/en/resume/index.html @@ -1,11 +1,7 @@ - - - - - Spencer Nicholas Whitehead - CV - +{% import "common.html" as common %} +{{ common::meta(title="Spencer Whitehead - Resume", lang="en") }} - + {{ common::nav() }}

Spencer Nicholas Whitehead

@@ -19,16 +15,15 @@

Education

-

Ph.D. candidate, Department of Mathematics, Duke University | September 2022 – April 2027 (expected)

+

Ph.D. candidate, Department of Mathematics, Duke University, September 2022 – April 2027 (expected)

  • Currently researching four- and eight-dimensional geometry with Dr. Mark Stern.
  • -
  • Advanced to candidacy March 2025.
  • Member in the Certificate in College Teaching program, to be awarded on graduation.
-

M.Math. in Pure Mathematics (research thesis), University of Waterloo | October 2021 – August 2022

+

M.Math. in Pure Mathematics (research thesis), University of Waterloo, October 2021 – August 2022

  • Supervised by Dr. Benoit Charbonneau.
  • Thesis title: Integrality theorems for symmetric instantons.
  • @@ -36,7 +31,7 @@
-

B.Math. in Pure Mathematics; Minor in East Asian Studies, University of Waterloo | September 2016 – August 2021

+

B.Math. in Pure Mathematics; Minor in East Asian Studies, University of Waterloo, September 2016 – August 2021

  • Recipient of 2021 Alumni Gold Medal for the Faculty of Mathematics.
  • Recipient of 2021 Jessie W.H. Zou Memorial Award for Excellence in Undergraduate Research.
  • @@ -58,8 +53,7 @@

    Software Engineering Intern, ContextLogic LLC, January 2018 – April 2018

      -
    • Worked as a member of the Platform Data team, monitoring the health of policies and shipping estimates.
    • -
    • Conducted shipping time estimate experiments ranging from neutral to gross +2.5% profits.
    • +
    • Conducted shipping time estimate experiments providing up to gross +2.5% profits.
    • Created reports and Grafana dashboards combining data from MongoDB and TreasureData tracking merchant policy effectiveness.
    diff --git a/static/fr/index.html b/templates/fr/index.html similarity index 60% rename from static/fr/index.html rename to templates/fr/index.html index 8d23033..a1e1384 100644 --- a/static/fr/index.html +++ b/templates/fr/index.html @@ -1,11 +1,10 @@ - - - - - Spencer Whitehead - +{% import "common.html" as common %} +{{ common::meta(title="Page d'accueil", lang="fr") }} + +

    To access the English version, click here.

    Ceci est le site web personnel de Spencer Whitehead.

    +

    CV

    diff --git a/templates/fr/resume/index.html b/templates/fr/resume/index.html new file mode 100644 index 0000000..e649ff9 --- /dev/null +++ b/templates/fr/resume/index.html @@ -0,0 +1,150 @@ +{% import "common.html" as common %} +{{ common::meta(title="Spencer Whitehead - CV", lang="fr") }} + + +{{ common::nav() }} + +
    +

    Spencer Nicholas Whitehead

    +
    + Courriel : spencer@firemail.cc
    + Tél. : +1 984 312 9089 +
    +
    + +
    +

    Education

    + +
    +

    Doctorant, départment des mathématiques, Université Duke | septembre 2022 – avril 2027

    +
      +
    • Chercheur de la geometrie de quatre et huit dimensions sous la direction du Pr Mark Stern.
    • +
    • Membre du programme de certificat en enseignant universitaire, qui sera décerné à la reussit au doctorat.
    • +
    +
    + +
    +

    M.Math. en mathématiques pures (thèse du recherche), Université de Waterloo | octobre 2021 – août 2022

    +
      +
    • Sous la direction du Pr Benoit Charbonneau.
    • +
    • Titre du thèse : Integrality theorems for symmetric instantons.
    • +
    +
    + +
    +

    B.Math. en mathématiques pures; mineure en études de l'Asie de l'Est, Université de Waterloo | septembre 2016 – août 2021

    +
      +
    • 2021 Médaille d'or des anciens, Faculty of Mathematics.
    • +
    • 2021 Prix commémoratif Jessie W.H. Zou pour l'excellence en recherche au premier cycle.
    • +
    +
    +
    + +
    +

    Industry Experience

    + +
    +

    Stagiaire en ingénierie logicielle, Citadel Enterprise, janvier 2020 – avril 2020

    +
      +
    • Developpment de pipelines en C++ pour analyser et archiver donnèes de Thompson Reuters.
    • +
    • Traitment d'en haute de 300GB des donnèes de marché par jour pendant la crise de COVID-19.
    • +
    +
    + +
    +

    Stagiaire en ingénierie logicielle, ContextLogic LLC, janvier 2018 – avril 2018

    +
      +
    • Recherche sur les estimates de délais de livraison qui ont généré 2,5% de profits supplémentaires.
    • +
    • Création de reports et tableau de bord Grafana en combinaison des donnèes de MongoDB et TreasureData.
    • +
    +
    + +
    +

    Stagiaire en ingénierie logicielle, Citadel LLC, septembre 2017 – décembre 2017

    +
      +
    • Création et soutien de logiciel de accounting comptabilité pour plus de 100 clients interne.
    • +
    • 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.
    • +
    +
    +
    + +
    +

    Skills

    +
    +
    Langues
    +
    anglais, français (DELF B2), japonais (niveau B2/C1).
    + +
    Langages de programmation
    +
    C, C++, Python, Sage, Maple, Haskell.
    + +
    Outils informatiques
    +
    sklearn, numpy, (geo)pandas, pytorch, SQL.
    +
    +
    + +
    +

    Leadership et services professionnels

    +

    Délégué syndical, Duke Graduate Students Union, septembre 2025 - à ce jour

    +
      +
    • Mediation de conflits au travail et répresentation des doctorants en procédure de gref.
    • +
    + +

    Président, Section étudiant de l'American Mathematical Society, année universitaire 2024-25

    +
      +
    • Organisation du Triangle Area Graduate Mathematics Seminar avec l'Université NC State et l'UNC Chapel Hill à Duke, février 2025.
    • +
    + +

    Représentant des doctorants, Duke Mathematics Departmental Teaching Committee, novembre 2023 - à ce jour

    +
      +
    • Performed annual interviews and advocated for graduate interests in departmental teaching decisions.
    • +
    +
    + +
    +

    Academic Activity

    + +
    +

    Selected Publications

    +
      +
    • Edidin, Dan, Matthew Satriano, et Spencer Whitehead. "On a smoothness characterization for good moduli spaces." Advances in Mathematics 442 (avril 2024).
    • +
    • Charbonneau, B. et Whitehead, S. "Studying Wythoff and Zometool Constructions using Maple." Maple in Mathematics Education and Research (pp. 65–76), 2020.
    • +
    +
    + +
    +

    Direction

    +

    Duke Math+ program (joint with Biji Wong, Gregory Herschlag), mai - août 2026

    +

    Direction de quatres étudiants dans un projet sur l'application de diffusion maps et apprentissage automatique pour rechercher le gerrymandering.

    + +

    MITACS internship program (joint with Benoit Charbonneau), mai - août 2022

    +

    Direction de deux étudiants dans un projet sur le probleme de packing en bas dimension.

    +
    + +
    +

    Selected Research Presentations

    +
      +
    • [Invité] An asymptotic Nahm transform for Spin(7) instantons. Mathematical Congress of the Americas, Miami, julliet 2025.
    • +
    • Symmetric instantons. (Poster). Geometric Models of Matter, Leeds, août 2024.
    • +
    • Generalized Pythagorean lutes. Bridges 2022, Helsinki, août 2022.
    • +
    • Integrality theorems for symmetric instantons. Union College Mathematics Conference, Schenectady, juin 2022.
    • +
    +
    +
    +

    Selected Teaching Experience

    +

    Chargé de cours MATH 106L (Lab calculus 2), août - décembre 2023, Université Duke

    +
      +
    • Enseignement et coordination d'un group de 18 étudiants.
    • +
    • Gestion d'une équipe de 4 auxiliaires d'enseignement
    • +
    + +

    Auxiliaire d'enseignment CS 246(E) ([Enriched] Object-Oriented Software Development), septembre 2018 - décembre 2019, Université de Waterloo.

    +
      +
    • Delivered weekly tutorial lectures for classes of 50+ students.
    • +
    • Creation des devoirs et gestation d'outils logiciels pour evaluer code d'étudiants
    • +
    +
    +
    + + + +