From 9a458ebfa337e826addd4be574db5790bb09bf7b Mon Sep 17 00:00:00 2001 From: spencer Date: Fri, 24 Apr 2026 15:45:39 -0400 Subject: [PATCH] fix email --- Cargo.lock | 622 ++++++++++++- Cargo.toml | 2 + Dockerfile | 1 + src/main.rs | 34 +- static/en/academic/cv/index.html | 10 - static/en/academic/cv/resume.pdf | Bin 94605 -> 0 bytes static/en/academic/index.html | 14 - .../teaching/2023/106/grading_info/index.html | 56 -- .../en/academic/teaching/2023/106/index.html | 856 ------------------ static/en/academic/teaching/index.html | 83 -- static/en/index.html | 12 - static/en/resume/index.html | 155 ---- static/fr/index.html | 11 - static/fr/resume/index.html | 154 ---- 14 files changed, 655 insertions(+), 1355 deletions(-) delete mode 100644 static/en/academic/cv/index.html delete mode 100644 static/en/academic/cv/resume.pdf delete mode 100644 static/en/academic/index.html delete mode 100644 static/en/academic/teaching/2023/106/grading_info/index.html delete mode 100644 static/en/academic/teaching/2023/106/index.html delete mode 100644 static/en/academic/teaching/index.html delete mode 100644 static/en/index.html delete mode 100644 static/en/resume/index.html delete mode 100644 static/fr/index.html delete mode 100644 static/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/index.html b/static/en/academic/cv/index.html deleted file mode 100644 index e531100..0000000 --- a/static/en/academic/cv/index.html +++ /dev/null @@ -1,10 +0,0 @@ -Spencer Nicholas Whitehead's Academic Page - - -

Spencer Nicholas Whitehead

- - Research | CV | Teaching | Art -
- -

My most recent CV is available here (link to PDF; updated February 7 2023).

- 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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 Nicholas Whitehead's Academic Page - - -

Spencer Nicholas Whitehead

-

I received my Bachelor of Mathematics and Master of Mathematics from the University of Waterloo in the years 2021 and 2022 respectively, both from the Department of Pure Mathematics. - During these degrees I worked primarily with Benoit Charbonneau in the fields of Euclidean geometry and gauge theory. - Currently I am a Ph. D. student at the Department of Mathematics at Duke University. -

- -

Aside from my research in mathematics, my primary skills are in software development and teaching. - For a complete history of my work in academia and industry, see the CV tab. - For my teaching activities, see the Teaching tab.

-

Research interests: differential geometry, Euclidean geometry, gauge theory, mathematical art

- diff --git a/static/en/academic/teaching/2023/106/grading_info/index.html b/static/en/academic/teaching/2023/106/grading_info/index.html deleted file mode 100644 index b640659..0000000 --- a/static/en/academic/teaching/2023/106/grading_info/index.html +++ /dev/null @@ -1,56 +0,0 @@ -MATH 106L Grading - - - -

MATH 106L Grading - F23

-

As described in the description of grade breakdown here, grading in this offering of MATH 106L will be on a mastery grading basis. That means for each assignment, you will ultimately receive a grade of either pass or fail.

- -

In order to pass the course (graded on a pass/fail basis) you must

-
    -
  • Attend lab throughout the term, with no more than two unexcused absences;
  • -
  • earn a grade of `pass' on at least 27 of the 32 individual small assignments (lecture worksheets, individual lab submissions like the August 29 lab);
  • -
  • earn a grade of `pass' on at least 3 of the last 4 lecture worksheets (13-1, 14-1, 14-3, 15-1);
  • -
  • earn a grade of `pass' on the last worksheet (15-1);
  • -
  • earn a grade of `pass' and contribute meaningfully to your group's report in at least 6 of 8 lab reports;
  • -
  • earn a grade of `pass' and contribute meaningfully to your group's report in the final lab report (The logistic model and fishing); and finally,
  • -
  • earn a grade of `pass' on at least 2 of 3 `big assignments'.
  • -
-

At a glance, this seems like a lot. -Most of these bullet points specify that you must pass specific labs/worksheets at the end of the course; fundamentally, you are responsible for 27 small assignments, 6 lab reports, and 2 big assignments to pass. -All of these but the big assignments can (and should) be done in groups! This will make your life much easier.

- -

Some questions you might want to ask

- -

Did I pass assignment XYZ?

-

If ever you fail to pass an assignment, I will email you about it prior to publishing the Gradescope grades. -If you haven't received an email from me, the answer is yes!

- -

What constitutes a `pass'? — Lecture worksheets, individual lab assignments

- -

Each worksheet consists of a number of `worksheet questions' and potentially some `homework questions'. Each is worth 1 point; earning at least two thirds of the available points constitutes a pass. Your first submission will be graded for feedback only; the resubmission will be graded for correctness, and to determine whether or not a passing grade has been earned.

- -

What constitutes a `pass'? — Lab reports

- -

A lab report consists of a typed response in full sentences incorporating answers to a selection of math questions into the body of the text. -Reports will be graded on a rubric for correctness and completeness of the mathematics and quality of written presentation. (See here for best practices in writing mathematics). -A score of level 3 or higher will constitute a pass; that is, a total score of 12 or higher on the following rubric.

- - -

If your group fails to pass with a level 3 or higher on the first attempt, you will be given feedback and the opportunity to correct and make a resubmission.

- -

What constitutes a `pass'? — Big assignments

- -

The big assignments of MATH 106L are the closest thing the course has to conventional tests. -You will fill out and submit the assignment individually, and a score of 70% or higher constitutes a pass. -In the event that you fail to pass the assignment the first time, you will be given the chance to submit corrections to receive up to half of the lost points. -For example, if you earn a grade of 60% on a first submission and submit corrections for 30% of the lost marks, your final grade on the big assignment would be 60% + 1/2 x 30% = 75%; a pass.

- -

Am I on track to pass the course?

- -

Unless we've spoken and I've said something to the opposite effect, yes! If you ever don't get credit for an assignment, I will contact you about it. -You are always welcome to email me to request the records I have for grades you've earned in the course to a point.

- -

DukeHub says we have an exam on the 17th?

- -

We don't. There are no exams in this course.

- diff --git a/static/en/academic/teaching/2023/106/index.html b/static/en/academic/teaching/2023/106/index.html deleted file mode 100644 index 7f479cd..0000000 --- a/static/en/academic/teaching/2023/106/index.html +++ /dev/null @@ -1,856 +0,0 @@ -MATH 106L - Fall 2023 - - - - -

MATH 106L: Lab calculus and functions II

- -

Instructor: Spencer Nicholas Whitehead

- -

Lecture times: MWF 12:00-12:50, W. Duke 08A

-

Lab times: TTh 12:00-12:50, W. Duke 08A

- -

Office Hours: W 13:00-14:00, Classroom 132; Th 16:00-17:00, F 15:00-16:00, Zoom (link sent by email). One online office hour TBD.

- -

Syllabus: See the course syllabus in PDF format here.

- -

Contact: See a facesheet of course staff and contact info in PDF format here.

- -

Grading: Detailed information on the grading scheme is available in PDF format here.

- -

A more detailed breakdown of the grading scheme and FAQ is available here.

- -

The rubric used to assess reports is available here (see above link for more grading info). - -

-Course description: The notion of quadrature, the computation of the area of a complicated shape by filling it with smaller, better understood shapes, has been studied since the Greeks. -In MATH 105L, you studied the calculus of differentials and learned how the behaviour of a (reasonable) function could be described locally by its derivative. -Historically, this notion came almost 2,000 years after that of quadrature. -It would be a further two centuries until James Gregory would publish a statement and proof of what is today known as the fundamental theorem of calculus. -This theorem states roughly that quadrature, called integration today, is inverse to differentiation: the derivative of an integral of a function is the original function, and the integral of a derivative of a function is the original function—perhaps up to the oft-forgotten '+ C'. -

-

-The fundamental theorem of calculus cannot be described as anything short of astonishing. -There is no reason a priori to believe that the operations of finding area and finding local linear approximations should be related to each other in any reasonable way, but the fundamental theorem of calculus provides exactly this relation. -The fundamental theorem of calculus comprises perhaps the first example of what one might call a 'local-global result': by knowing local information about a function (its derivative at each point), one learns global information about the function (the area under its graph). -This philosophy underlying the fundamental theorem of calculus is omnipresent in day-to-day life, if often invisible—as the sewist closes a sleeve with a stitch in the round or a ship circumnavigates the globe using only an atlas is present the fundamental theorem of calculus, providing rigorous mathematical justification to the idea that local approximations, sufficiently accurate, sum to the whole. -While often exploited as just a computational tool, it would be no exaggeration to call the fundamental theorem of calculus one of the most beautiful in all of mathematics. -

-

-In MATH 106L we will develop the modern integral calculus from a particular kind of quadrature called a Riemann sum, and from this definition prove the fundamental theorem of calculus. -After the fall break, we will begin the study of differential equations and methods of solution. -Finally, after the Thanskgiving break (and throughout the labs) we will study specific examples of differential equations that motivated the historical development of calculus, such as Newton's laws of motion and models for population growth/decay, including the presence of forcing terms. -

- -

-Best practices for writing mathematics: Through the course, you will have the chance in labs to write a number of group reports. -While there is no universal style guide for mathematical writing, there are a number of accepted best practices, available in PDF format here. -When writing reports, you are expected to follow the practices in this document. -

- -

-Textbook problems: In the interest of fairness and accessibility, I will pull practice problems and enrichment reading from the free and openly available MIT OpenCourseWare Calculus text of Strang. Click here to access this textbook. -The practice problems will be updated on a (roughly) week-by-week basis; for some weeks there may be no practice problems. -Many Duke courses use recent editions of Hughes-Hallett; this is a resource you may consider purchasing or finding in the library, but is not required for this class. -My personal favourite calculus texts are those of Michael Spivak. -I highly recommend them for enrichment reading, but again do not require them for this class. -See the syllabus for more information on titles, editions, etc. -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
LessonDateTopicWorksheetDue DateResourcesTextbook practice
(Not to hand in)
External resources
1-12023-08-28105L ReviewWorksheet2023-09-04
Lab2023-08-29Trigonometry, ILab 12023-09-04Section 1.5Basic trig
1-22023-08-30Trigonometry, IIWorksheet2023-09-04Unit circle
Radians
Lab2023-08-31Trigonometric
modelling, I
Lab 2Spreadsheet
Geogebra
Section 1.5Sinusoidal models
1-32023-09-01Trigonometric
identities, limits
Worksheet2023-09-04Section 1.5Trig identities
Angle addition
2023-09-04Labour day, no class
Lab2023-09-05Trigonometric
modelling, II
Report: Global
warming [group]
2023-09-13Section 1.5
2-22023-09-06Trigonometric
Derivatives
Worksheet2023-09-11Section 2.4Differentiating trig functions
Lab2023-09-07Newton's laws
of motion, I
Lab 3
2-32023-09-08Inverse trigonometric
functions
Worksheet2023-09-11Inverse trig functions
3-12023-09-11Trigonometric
inverse derivatives
Worksheet2023-09-18The inverse function theorem
Lab2023-09-12NO LABBIG ASSIGNMENT 12023-09-22
3-22023-09-13Trigonometric
related rates
Worksheet2023-09-18
Lab2023-09-14Newton's laws
of motion, II
Group report: understanding gravity2023-09-20
3-32023-09-15Postition, velocity,
Acceleration
Worksheet2023-09-18
4-12023-09-18Distance from velocityWorksheet2023-09-25
Lab2023-09-19Sums, sigma notation
4-22023-09-20Left- and right-
handed sums
Worksheet2023-09-25
Lab2023-09-21Sums and sigma notation, IILab questions [individual]2023-09-27
4-32023-09-22The definite integralWorksheet2023-09-25
5-12023-09-25Midpoint and
trapezoid sums
Worksheet2023-10-02
Lab2023-09-26Postponed due to technical issues
5-22023-09-27FTC IWorksheet2023-10-02A proof of FTC in an easy case
Lab2023-09-28Riemann sums, ISpreadsheet
5-32023-09-29FTC I, cont.See 5-2
6-12023-10-02Properties of definite
integrals
Worksheet2023-10-09
Lab2023-10-03Riemann sums, II
6-22023-10-04Constructing
antiderivatives
Worksheet2023-10-09
Lab2023-10-05Riemannian Sums, IIIGroup report2023-10-11
6-32023-10-06Integration by substitutionWorksheet2023-10-09
7-12023-10-09Integration by partsWorksheet2023-10-23
Lab2023-10-10Average value of
a function, I
7-22023-10-11Antidifferentiation
practice, I
Worksheet2023-10-23
Lab2023-10-12Average value of a function, IIGroup report2023-10-18Also note:BIG ASSIGNMENT 22023-10-27
2023-10-13Fall break, no class
2023-10-16Fall break, no class
2023-10-17Fall break, no class
8-22023-10-18Antidifferentiation
practice, II
See 7-2
Lab2023-10-19Average Values, II
8-32023-10-20Integrating to infinityWorksheet2023-10-23
9-12023-10-23Other improper integralsWorksheet2023-10-30
Lab2023-10-24NO LAB
9-22023-10-25Big assignment help
Lab2023-10-26Force and Work: I
9-32023-10-27FTC IIWorksheet2023-10-30
10-12023-10-30Differential equations,
initial value problems, I
Worksheet2023-11-06
Lab2023-10-31Force and Work: II2023-11-08
10-22023-11-01Differential equations,
initial value problems, II
Lab2023-11-02Differential equations, I
10-32023-11-03Slope fields, equilibria, IWorksheet2023-11-06
11-12023-11-06Slope fields, equilibria, II
Lab2023-11-07Differential equations, IIReport: Short report [group]2023-11-15
11-22023-11-08Separation of variables, IWorksheet2023-11-13
Lab2023-11-09Euler's methodSpreadsheet
11-32023-11-10Separation of variables, II
12-12023-11-13Growth and decayWorksheet2023-11-20
Lab2023-11-14Euler's methodReport: Short report [group]2023-11-22
12-22023-11-15Applications: heating
and mixing, I
Worksheet2023-11-20
Lab2023-11-16Euler's methodBIG ASSIGNMENT 32023-11-27
12-32023-11-17Applications: heating
and mixing, I cont.
13-12023-11-20Applications: heating
and mixing, II (online only)
Worksheet2023-11-27
2023-11-21Thanksgiving, no class
2023-11-22Thanksgiving, no class
2023-11-23Thanksgiving, no class
2023-11-24Thanksgiving, no class
14-12023-11-27Worksheet2023-12-04
Lab2023-11-28Chemical rates
14-22023-11-29The logistic model for
population, I
Lab2023-11-30
14-32023-12-01The logistic model for
population, II
Worksheet2023-12-04
15-12023-12-04Population models
with migration
Worksheet
Lab2023-12-05Logistic model:
fishing
15-22023-12-06Applications of the
logistic model
Lab2023-12-07Logistic model:
fishing
Report: Short report [group]2023-12-15
15-32023-12-08Course evaluations
- - diff --git a/static/en/academic/teaching/index.html b/static/en/academic/teaching/index.html deleted file mode 100644 index a958bb5..0000000 --- a/static/en/academic/teaching/index.html +++ /dev/null @@ -1,83 +0,0 @@ -Spencer Nicholas Whitehead's Academic Page - - -

Spencer Nicholas Whitehead

- - Research | CV | Teaching | Art -
- -

For the Fall 2023 semester I am instructor of record on MATH 106L. Click here to access the course webpage for MATH 106L.

-

Below are a list of my previous teaching activities.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
RoleCourseTermInstitution
Lab TAMATH 111
Calculus 1
Fall 2022Duke
MarkerPMATH 347
Intro to Groups and Rings
Spring 2022Waterloo
MarkerPMATH 365
Differential Geometry
Winter 2022Waterloo
TAMATH 137
Calculus 1 for Hon. Math
Fall 2021Waterloo
Tutor
(Official)
MATH 136
Lin. Alg. 1 for Hon. Math
Winter 2021Waterloo
TA leadMATH 135
Algebra for Hon. Math
Fall 2020Waterloo
Tutor
(Official)
MATH 136Fall 2019Waterloo
Tutorial lecturerCS 246
Obj. Oriented Soft. Devel
Fall 2019Waterloo
Tutorial lecturerCS 246Winter 2018Waterloo
Instructional
support (full-time)
CS 246Fall 2018Waterloo
- diff --git a/static/en/index.html b/static/en/index.html deleted file mode 100644 index 5d9f514..0000000 --- a/static/en/index.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - 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/en/resume/index.html b/static/en/resume/index.html deleted file mode 100644 index bb03995..0000000 --- a/static/en/resume/index.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - - Spencer Nicholas Whitehead - CV - - - - -
-

Spencer Nicholas Whitehead

-
- Email: spencer@firemail.cc
- Phone: +1 984 312 9089 -
-
- -
-

Education

- -
-

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

-
    -
  • Supervised by Dr. Benoit Charbonneau.
  • -
  • Thesis title: Integrality theorems for symmetric instantons.
  • -
-
- -
-

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.
  • -
-
-
- -
-

Industry Experience

- -
-

Software Engineering Intern, Citadel Enterprise, January 2020 – April 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.
  • -
-
- -
-

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.
  • -
  • Created reports and Grafana dashboards combining data from MongoDB and TreasureData tracking merchant policy effectiveness.
  • -
-
- -
-

Software Engineering Intern, Citadel LLC, September 2017 – December 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

-
-
Languages
-
English, French (DELF B2), Japanese (B2/C1 level).
- -
Programming
-
C, C++, Python, Sage, Maple, Scheme, Haskell.
- -
Software
-
sklearn, numpy, (geo)pandas, pytorch, SQL.
-
-
- -
-

Leadership and Professional Service

-

Steward, Duke Graduate Students Union, Fall 2025 - present

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

President, AMS Student Chapter, 2024-25 academic year

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

Graduate student representative, Duke Mathematics Departmental Teaching Committee, Fall 2023 - present

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

Academic Activity

- -
-

Selected Publications

-
    -
  • Edidin, Dan, Matthew Satriano, and Spencer Whitehead. "On a smoothness characterization for good moduli spaces." Advances in Mathematics 442 (April 2024).
  • -
  • Charbonneau, B. and 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

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

Selected Teaching Experience

-

Instructor of record MATH 106L (Lab calculus 2), Fall 2023.

-
    -
  • Served as primary instructor and coordinator for a class of 18 students with daily meetings.
  • -
  • Managed a team of 4 undergraduate teaching assistants.
  • -
- -

Tutorial lecturer CS 246(E) ([Enriched] Object-Oriented Software Development), Fall 2018, Fall 2019, Winter 2019, University of 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/static/fr/index.html b/static/fr/index.html deleted file mode 100644 index 8d23033..0000000 --- a/static/fr/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - Spencer Whitehead - - - -

To access the English version, click here.

-

Ceci est le site web personnel de Spencer Whitehead.

- 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.
  • -
-
-
- - - -