Compare commits
2 commits
cfe78460a2
...
984b7f2641
| Author | SHA1 | Date | |
|---|---|---|---|
| 984b7f2641 | |||
| 9a458ebfa3 |
17 changed files with 845 additions and 189 deletions
622
Cargo.lock
generated
622
Cargo.lock
generated
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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"] }
|
||||
|
|
|
|||
|
|
@ -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"]
|
||||
|
|
|
|||
34
src/main.rs
34
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::<String>("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<impl Reply, Rejection> {
|
||||
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())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -1,12 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Spencer Whitehead</title>
|
||||
</head>
|
||||
<link rel="stylesheet" href="/assets/main.css">
|
||||
<body>
|
||||
<p>Pour accéder à la version française, veuillez cliquer <a href="/fr/">ici.</a></p>
|
||||
<p>This is the personal website of Spencer Whitehead.</p>
|
||||
<p><a href="resume/">Resume</p></p>
|
||||
</body>
|
||||
|
|
@ -1,154 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Spencer Nicholas Whitehead - CV</title>
|
||||
</head>
|
||||
<body>
|
||||
<link rel="stylesheet" href="/assets/main.css">
|
||||
|
||||
<header>
|
||||
<h1>Spencer Nicholas Whitehead</h1>
|
||||
<address>
|
||||
Courriel: <a href="mailto:spencer@firemail.cc">spencer@firemail.cc</a><br>
|
||||
No de tél.: +1 984 312 9089
|
||||
</address>
|
||||
</header>
|
||||
|
||||
<section>
|
||||
<h2>Education</h2>
|
||||
|
||||
<article>
|
||||
<p><strong>Doctorant, Department of Mathematics, Université Duke</strong> | septembre 2022 – Avril 2027</p>
|
||||
<ul>
|
||||
<li>Currently researching four- and eight-dimensional geometry with Prof. Mark Stern.</li>
|
||||
<li>Member of the Certificate in College Teaching program, to be awarded on graduation.</li>
|
||||
</ul>
|
||||
</article>
|
||||
|
||||
<article>
|
||||
<p><strong>M.Math. in Pure Mathematics (research thesis), Université de Waterloo</strong> | Octobre 2021 – août 2022</p>
|
||||
<ul>
|
||||
<li>Supervisé de Prof. Benoit Charbonneau.</li>
|
||||
<li>Titre du thèse: Integrality theorems for symmetric instantons.</li>
|
||||
</ul>
|
||||
</article>
|
||||
|
||||
<article>
|
||||
<p><strong>B.Math. in Pure Mathematics; Minor in études de l'Asie d'Est, Université de Waterloo</strong> | septembre 2016 – août 2021</p>
|
||||
<ul>
|
||||
<li>Recipient of 2021 Alumni Gold Medal for the Faculty of Mathematics.</li>
|
||||
<li>Recipient of 2021 Jessie W.H. Zou Memorial Award for Excellence in Undergraduate Research.</li>
|
||||
</ul>
|
||||
</article>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>Industry Experience</h2>
|
||||
|
||||
<article>
|
||||
<p><strong>Stagiaire en ingénierie logicielle</strong>, Citadel Enterprise, Janvier 2020 – Avril 2020</p>
|
||||
<ul>
|
||||
<li>Developed C++ data pipelines to parse and archive data streams from Thompson Reuters.</li>
|
||||
<li>Handled over 300GB per day of market data at the height of the market impact of COVID-19.</li>
|
||||
</ul>
|
||||
</article>
|
||||
|
||||
<article>
|
||||
<p><strong>Stagiaire en ingénierie logicielle</strong>, ContextLogic LLC, Janvier 2018 – Avril 2018</p>
|
||||
<ul>
|
||||
<li>Worked as a member of the Platform Data team, monitoring the health of policies and shipping estimates.</li>
|
||||
<li>Conducted shipping time estimate experiments ranging from neutral to gross +2.5% profits.</li>
|
||||
<li>Created reports and Grafana dashboards combining data from MongoDB and TreasureData tracking merchant policy effectiveness.</li>
|
||||
</ul>
|
||||
</article>
|
||||
|
||||
<article>
|
||||
<p><strong>Stagiaire en ingénierie logicielle</strong>, Citadel LLC, septembre 2017 – décembre 2017</p>
|
||||
<ul>
|
||||
<li>Worked on the Accounting Development Team, creating and maintaining software for over 100 clients.</li>
|
||||
<li>Designed, tested, and implemented new response formats reducing response size by 10x and increasing speed 5x.</li>
|
||||
</ul>
|
||||
</article>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>Skills</h2>
|
||||
<dl>
|
||||
<dt><strong>Langages</strong></dt>
|
||||
<dd>anglais, français (DELF B2), japonais (niveau B2/C1).</dd>
|
||||
|
||||
<dt><strong>Langages de programmation</strong></dt>
|
||||
<dd>C, C++, Python, Sage, Maple, Haskell.</dd>
|
||||
|
||||
<dt><strong>Logiciel</strong></dt>
|
||||
<dd>sklearn, numpy, (geo)pandas, pytorch, SQL.</dd>
|
||||
</dl>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>Leadership and Professional Service</h2>
|
||||
<p>Délegué syndical, Duke Graduate Students Union, septembre 2025 - prèsent</p>
|
||||
<ul>
|
||||
<li>Mediated workplace disputes and represented graduate workers in grievance proceedings.</li>
|
||||
</ul>
|
||||
|
||||
<p>Président, Chapitre étudiant de l'American Mathematical Society, année scolaire 2024-25</p>
|
||||
<ul>
|
||||
<li>Organized and hosted the Triangle Area Graduate Mathematics Seminar with NC State University and UNC Chapel Hill at Duke, fevrier 2025.</li>
|
||||
</ul>
|
||||
|
||||
<p>Représentant des doctorants, Duke Mathematics Departmental Teaching Committee, novembre 2023 - present</p>
|
||||
<ul>
|
||||
<li>Performed annual interviews and advocated for graduate interests in departmental teaching decisions.</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>Academic Activity</h2>
|
||||
|
||||
<article>
|
||||
<h3>Selected Publications</h3>
|
||||
<ul>
|
||||
<li>Edidin, Dan, Matthew Satriano, et Spencer Whitehead. "On a smoothness characterization for good moduli spaces." <em>Advances in Mathematics</em> 442 (Avril 2024).</li>
|
||||
<li>Charbonneau, B. et Whitehead, S. "Studying Wythoff and Zometool Constructions using Maple." <em>Maple in Mathematics Education and Research</em> (pp. 65–76), 2020.</li>
|
||||
</ul>
|
||||
</article>
|
||||
|
||||
<article>
|
||||
<h3>Supervision</h3>
|
||||
<p><strong>Duke Math+ program</strong> (joint with Biji Wong, Gregory Herschlag), Spring 2026</p>
|
||||
<p>Supervised four undergraduate students in a project on the application of diffusion maps and machine learning to graph partition problems, with a focus on the study of gerrymandering.</p>
|
||||
|
||||
<p><strong>MITACS internship program</strong> (joint with Benoit Charbonneau), Spring 2022</p>
|
||||
<p>Supervised two undergraduate students in a computational project on low-dimensional optimal packing problems</p>
|
||||
</article>
|
||||
|
||||
<article>
|
||||
<h3>Selected Research Presentations</h3>
|
||||
<ul>
|
||||
<li>[Invité] <em>An asymptotic Nahm transform for Spin(7) instantons.</em> Mathematical Congress of the Americas, Miami, juliet 2025.</li>
|
||||
<li><em>Symmetric instantons.</em> (Poster). Geometric Models of Matter, Leeds, août 2024.</li>
|
||||
<li><em>Generalized Pythagorean lutes.</em> Bridges 2022, Helsinki, août 2022.</li>
|
||||
<li><em>Integrality theorems for symmetric instantons.</em> Union College Mathematics Conference, Schenectady, juin 2022.</li>
|
||||
</ul>
|
||||
</article>
|
||||
<article>
|
||||
<h3>Selected Teaching Experience</h3>
|
||||
<p><strong>Chargé de cours</strong> MATH 106L (Lab calculus 2), août - décembre 2023, Université Duke</p>
|
||||
<ul>
|
||||
<li>Instruction et coordination d'une classe de 18 élèves.</li>
|
||||
<li>Gestion d'un equipe de 4 auxiliaires d'enseignment</li>
|
||||
</ul>
|
||||
|
||||
<p><strong>Auxiliaire d'enseignment</strong> CS 246(E) ([Enriched] Object-Oriented Software Development), septembre 2018 - décembre 2019, Université de Waterloo.</p>
|
||||
<ul>
|
||||
<li>Delivered weekly tutorial lectures for classes of 50+ students.</li>
|
||||
<li>Designed assignments and managed the course platform for running and evaluating student code.</li>
|
||||
</ul>
|
||||
</article>
|
||||
</section>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
20
templates/common.html
Normal file
20
templates/common.html
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
{% macro meta(title, lang) %}
|
||||
<!DOCTYPE html>
|
||||
<html lang="{{ lang }}">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="language" content="{{ lang }}">
|
||||
<title>{{ title }}</title>
|
||||
</head>
|
||||
<link rel="stylesheet" href="/assets/main.css">
|
||||
{% endmacro %}
|
||||
|
||||
{% macro nav() %}
|
||||
<nav>
|
||||
{% if lang == "fr" %}
|
||||
<a href="/">Accueil</a>
|
||||
{% else %}
|
||||
<a href="/">Home</a>
|
||||
{% endif %}
|
||||
</nav>
|
||||
{% endmacro %}
|
||||
8
templates/en/index.html
Normal file
8
templates/en/index.html
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
{% import "common.html" as common %}
|
||||
{{ common::meta(title="Home Page", lang="en") }}
|
||||
<body>
|
||||
<p>Pour accéder à la version française, veuillez cliquer <a href="/fr/">ici.</a></p>
|
||||
<p>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.</p>
|
||||
<p><a href="resume/">Resume</a></p>
|
||||
</body>
|
||||
|
|
@ -1,11 +1,7 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Spencer Nicholas Whitehead - CV</title>
|
||||
</head>
|
||||
{% import "common.html" as common %}
|
||||
{{ common::meta(title="Spencer Whitehead - Resume", lang="en") }}
|
||||
<body>
|
||||
<link rel="stylesheet" href="/assets/main.css">
|
||||
{{ common::nav() }}
|
||||
|
||||
<header>
|
||||
<h1>Spencer Nicholas Whitehead</h1>
|
||||
|
|
@ -19,16 +15,15 @@
|
|||
<h2>Education</h2>
|
||||
|
||||
<article>
|
||||
<p><strong>Ph.D. candidate, Department of Mathematics, Duke University</strong> | September 2022 – April 2027 (expected)</p>
|
||||
<p><strong>Ph.D. candidate, Department of Mathematics, Duke University</strong>, September 2022 – April 2027 (expected)</p>
|
||||
<ul>
|
||||
<li>Currently researching four- and eight-dimensional geometry with Dr. Mark Stern.</li>
|
||||
<li>Advanced to candidacy March 2025.</li>
|
||||
<li>Member in the Certificate in College Teaching program, to be awarded on graduation.</li>
|
||||
</ul>
|
||||
</article>
|
||||
|
||||
<article>
|
||||
<p><strong>M.Math. in Pure Mathematics (research thesis), University of Waterloo</strong> | October 2021 – August 2022</p>
|
||||
<p><strong>M.Math. in Pure Mathematics (research thesis), University of Waterloo</strong>, October 2021 – August 2022</p>
|
||||
<ul>
|
||||
<li>Supervised by Dr. Benoit Charbonneau.</li>
|
||||
<li>Thesis title: Integrality theorems for symmetric instantons.</li>
|
||||
|
|
@ -36,7 +31,7 @@
|
|||
</article>
|
||||
|
||||
<article>
|
||||
<p><strong>B.Math. in Pure Mathematics; Minor in East Asian Studies, University of Waterloo</strong> | September 2016 – August 2021</p>
|
||||
<p><strong>B.Math. in Pure Mathematics; Minor in East Asian Studies, University of Waterloo</strong>, September 2016 – August 2021</p>
|
||||
<ul>
|
||||
<li>Recipient of 2021 Alumni Gold Medal for the Faculty of Mathematics.</li>
|
||||
<li>Recipient of 2021 Jessie W.H. Zou Memorial Award for Excellence in Undergraduate Research.</li>
|
||||
|
|
@ -58,8 +53,7 @@
|
|||
<article>
|
||||
<p><strong>Software Engineering Intern</strong>, ContextLogic LLC, January 2018 – April 2018</p>
|
||||
<ul>
|
||||
<li>Worked as a member of the Platform Data team, monitoring the health of policies and shipping estimates.</li>
|
||||
<li>Conducted shipping time estimate experiments ranging from neutral to gross +2.5% profits.</li>
|
||||
<li>Conducted shipping time estimate experiments providing up to gross +2.5% profits.</li>
|
||||
<li>Created reports and Grafana dashboards combining data from MongoDB and TreasureData tracking merchant policy effectiveness.</li>
|
||||
</ul>
|
||||
</article>
|
||||
|
|
@ -1,11 +1,10 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="fr">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Spencer Whitehead</title>
|
||||
</head>
|
||||
{% import "common.html" as common %}
|
||||
{{ common::meta(title="Page d'accueil", lang="fr") }}
|
||||
<link rel="stylesheet" href="/assets/main.css">
|
||||
|
||||
|
||||
<body>
|
||||
<p>To access the English version, click <a href="/en/">here.</a></p>
|
||||
<p>Ceci est le site web personnel de Spencer Whitehead.</p>
|
||||
<p><a href="resume/">CV</a></p>
|
||||
</body>
|
||||
150
templates/fr/resume/index.html
Normal file
150
templates/fr/resume/index.html
Normal file
|
|
@ -0,0 +1,150 @@
|
|||
{% import "common.html" as common %}
|
||||
{{ common::meta(title="Spencer Whitehead - CV", lang="fr") }}
|
||||
|
||||
<body>
|
||||
{{ common::nav() }}
|
||||
|
||||
<header>
|
||||
<h1>Spencer Nicholas Whitehead</h1>
|
||||
<address>
|
||||
Courriel : <a href="mailto:spencer@firemail.cc">spencer@firemail.cc</a><br>
|
||||
Tél. : +1 984 312 9089
|
||||
</address>
|
||||
</header>
|
||||
|
||||
<section>
|
||||
<h2>Education</h2>
|
||||
|
||||
<article>
|
||||
<p><strong>Doctorant, départment des mathématiques, Université Duke</strong> | septembre 2022 – avril 2027</p>
|
||||
<ul>
|
||||
<li>Chercheur de la geometrie de quatre et huit dimensions sous la direction du Pr Mark Stern.</li>
|
||||
<li>Membre du programme de certificat en enseignant universitaire, qui sera décerné à la reussit au doctorat.</li>
|
||||
</ul>
|
||||
</article>
|
||||
|
||||
<article>
|
||||
<p><strong>M.Math. en mathématiques pures (thèse du recherche), Université de Waterloo</strong> | octobre 2021 – août 2022</p>
|
||||
<ul>
|
||||
<li>Sous la direction du Pr Benoit Charbonneau.</li>
|
||||
<li>Titre du thèse : Integrality theorems for symmetric instantons.</li>
|
||||
</ul>
|
||||
</article>
|
||||
|
||||
<article>
|
||||
<p><strong>B.Math. en mathématiques pures; mineure en études de l'Asie de l'Est, Université de Waterloo</strong> | septembre 2016 – août 2021</p>
|
||||
<ul>
|
||||
<li>2021 Médaille d'or des anciens, Faculty of Mathematics.</li>
|
||||
<li>2021 Prix commémoratif Jessie W.H. Zou pour l'excellence en recherche au premier cycle.</li>
|
||||
</ul>
|
||||
</article>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>Industry Experience</h2>
|
||||
|
||||
<article>
|
||||
<p><strong>Stagiaire en ingénierie logicielle</strong>, Citadel Enterprise, janvier 2020 – avril 2020</p>
|
||||
<ul>
|
||||
<li>Developpment de pipelines en C++ pour analyser et archiver donnèes de Thompson Reuters.</li>
|
||||
<li>Traitment d'en haute de 300GB des donnèes de marché par jour pendant la crise de COVID-19.</li>
|
||||
</ul>
|
||||
</article>
|
||||
|
||||
<article>
|
||||
<p><strong>Stagiaire en ingénierie logicielle</strong>, ContextLogic LLC, janvier 2018 – avril 2018</p>
|
||||
<ul>
|
||||
<li>Recherche sur les estimates de délais de livraison qui ont généré 2,5% de profits supplémentaires.</li>
|
||||
<li>Création de reports et tableau de bord Grafana en combinaison des donnèes de MongoDB et TreasureData.</li>
|
||||
</ul>
|
||||
</article>
|
||||
|
||||
<article>
|
||||
<p><strong>Stagiaire en ingénierie logicielle</strong>, Citadel LLC, septembre 2017 – décembre 2017</p>
|
||||
<ul>
|
||||
<li>Création et soutien de logiciel de accounting comptabilité pour plus de 100 clients interne.</li>
|
||||
<li>Conception et implementation des nouveaux formats de réponse, ce qui a reduisé la taille de la réponse 10x et a amelioré la vitesse 5x.</li>
|
||||
</ul>
|
||||
</article>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>Skills</h2>
|
||||
<dl>
|
||||
<dt><strong>Langues</strong></dt>
|
||||
<dd>anglais, français (DELF B2), japonais (niveau B2/C1).</dd>
|
||||
|
||||
<dt><strong>Langages de programmation</strong></dt>
|
||||
<dd>C, C++, Python, Sage, Maple, Haskell.</dd>
|
||||
|
||||
<dt><strong>Outils informatiques</strong></dt>
|
||||
<dd>sklearn, numpy, (geo)pandas, pytorch, SQL.</dd>
|
||||
</dl>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>Leadership et services professionnels</h2>
|
||||
<p>Délégué syndical, Duke Graduate Students Union, septembre 2025 - à ce jour</p>
|
||||
<ul>
|
||||
<li>Mediation de conflits au travail et répresentation des doctorants en procédure de gref.</li>
|
||||
</ul>
|
||||
|
||||
<p>Président, Section étudiant de l'American Mathematical Society, année universitaire 2024-25</p>
|
||||
<ul>
|
||||
<li>Organisation du Triangle Area Graduate Mathematics Seminar avec l'Université NC State et l'UNC Chapel Hill à Duke, février 2025.</li>
|
||||
</ul>
|
||||
|
||||
<p>Représentant des doctorants, Duke Mathematics Departmental Teaching Committee, novembre 2023 - à ce jour</p>
|
||||
<ul>
|
||||
<li>Performed annual interviews and advocated for graduate interests in departmental teaching decisions.</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h2>Academic Activity</h2>
|
||||
|
||||
<article>
|
||||
<h3>Selected Publications</h3>
|
||||
<ul>
|
||||
<li>Edidin, Dan, Matthew Satriano, et Spencer Whitehead. "On a smoothness characterization for good moduli spaces." <em>Advances in Mathematics</em> 442 (avril 2024).</li>
|
||||
<li>Charbonneau, B. et Whitehead, S. "Studying Wythoff and Zometool Constructions using Maple." <em>Maple in Mathematics Education and Research</em> (pp. 65–76), 2020.</li>
|
||||
</ul>
|
||||
</article>
|
||||
|
||||
<article>
|
||||
<h3>Direction</h3>
|
||||
<p><strong>Duke Math+ program</strong> (joint with Biji Wong, Gregory Herschlag), mai - août 2026</p>
|
||||
<p>Direction de quatres étudiants dans un projet sur l'application de diffusion maps et apprentissage automatique pour rechercher le gerrymandering.</p>
|
||||
|
||||
<p><strong>MITACS internship program</strong> (joint with Benoit Charbonneau), mai - août 2022</p>
|
||||
<p>Direction de deux étudiants dans un projet sur le probleme de packing en bas dimension.</p>
|
||||
</article>
|
||||
|
||||
<article>
|
||||
<h3>Selected Research Presentations</h3>
|
||||
<ul>
|
||||
<li>[Invité] <em>An asymptotic Nahm transform for Spin(7) instantons.</em> Mathematical Congress of the Americas, Miami, julliet 2025.</li>
|
||||
<li><em>Symmetric instantons.</em> (Poster). Geometric Models of Matter, Leeds, août 2024.</li>
|
||||
<li><em>Generalized Pythagorean lutes.</em> Bridges 2022, Helsinki, août 2022.</li>
|
||||
<li><em>Integrality theorems for symmetric instantons.</em> Union College Mathematics Conference, Schenectady, juin 2022.</li>
|
||||
</ul>
|
||||
</article>
|
||||
<article>
|
||||
<h3>Selected Teaching Experience</h3>
|
||||
<p><strong>Chargé de cours</strong> MATH 106L (Lab calculus 2), août - décembre 2023, Université Duke</p>
|
||||
<ul>
|
||||
<li>Enseignement et coordination d'un group de 18 étudiants.</li>
|
||||
<li>Gestion d'une équipe de 4 auxiliaires d'enseignement</li>
|
||||
</ul>
|
||||
|
||||
<p><strong>Auxiliaire d'enseignment</strong> CS 246(E) ([Enriched] Object-Oriented Software Development), septembre 2018 - décembre 2019, Université de Waterloo.</p>
|
||||
<ul>
|
||||
<li>Delivered weekly tutorial lectures for classes of 50+ students.</li>
|
||||
<li>Creation des devoirs et gestation d'outils logiciels pour evaluer code d'étudiants</li>
|
||||
</ul>
|
||||
</article>
|
||||
</section>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Loading…
Reference in a new issue