From c4f6b8d919fe6350e425dcc25310a52283aca15e Mon Sep 17 00:00:00 2001
From: rm-dr <96270320+rm-dr@users.noreply.github.com>
Date: Mon, 3 Nov 2025 10:23:32 -0800
Subject: [PATCH] Add `lychee`
---
.gitignore | 3 +-
.../service-webpage/src/routes/links.md | 126 +++++++++++++++++
.../service-webpage/src/routes/links.rs | 130 +-----------------
lychee.toml | 12 ++
4 files changed, 141 insertions(+), 130 deletions(-)
create mode 100644 crates/service/service-webpage/src/routes/links.md
create mode 100644 lychee.toml
diff --git a/.gitignore b/.gitignore
index 353ad7e..1a58dfe 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,4 +2,5 @@ target
.env
*.log
*.ignore
-.DS_Store
\ No newline at end of file
+.DS_Store
+.lycheecache
diff --git a/crates/service/service-webpage/src/routes/links.md b/crates/service/service-webpage/src/routes/links.md
new file mode 100644
index 0000000..7943d67
--- /dev/null
+++ b/crates/service/service-webpage/src/routes/links.md
@@ -0,0 +1,126 @@
+# Bookmarks
+
+This is a heavily opinionated bookmarks toolbar.
+
+
+
+## Podcasts
+
+- :star: [Darknet Diaries](https://darknetdiaries.com/): A perennial classic.
+- [Art of Manliness](https://www.artofmanliness.com/podcast/): Philosophy, literaure, psychology.
+- [The Overanalyzers](https://www.theoveranalyzers.com/): Amateur podcasters talk amateur psychology. This is a complement---they're _very_ good!
+- [Rust in Production](https://corrode.dev/podcast/): Operations, Rust, and modern tech.
+- :star: [On the Metal](https://onthemetal.transistor.fm/): Quality stories from quality engineers.
+- [Security Cryptography Whatever](https://securitycryptographywhatever.com/): Modern cryptography, for those who understand the underlying theory.
+
+## Essays
+
+- [Real Programmers don't use Pascal](https://www.ee.torontomu.ca/~elf/hack/realmen.html)
+- [A Mathematician's Lament](/files/lockhart.pdf)
+- :star: [The Jargon File](http://www.catb.org/jargon/)
+
+## Textbooks
+
+- :star: [OpenLogic](https://openlogicproject.org/): The gold standard
+- [Operating Systems: from 0 to 1](https://github.com/tuhdo/os01)
+- [Operating Systems: Three Easy Pieces](https://pages.cs.wisc.edu/~remzi/OSTEP/)
+- [Crafting Interpreters](https://craftinginterpreters.com/contents.html)
+- [An Introduction to Mathematical Cryptography](https://link.springer.com/book/10.1007/978-0-387-77993-5)
+- [Stories about Maxima and Minima](https://archive.org/details/storiesaboutmaxi0000tikh)
+
+## Miscellanea
+
+- [Hackaday](https://hackaday.com/)
+- [Grumpy Website](https://grumpy.website/): Daily design crimes
+- :star: [ZSA Voyager](https://www.zsa.io/voyager): World's best keyboard
+- [Nikita Prokopov](https://tonsky.me/)
+- [Faster Than Lime](https://fasterthanli.me/)
+- [Pepper & Carrot](https://www.peppercarrot.com/): The open-source webcomic
+- [User Friendly](https://en.wikipedia.org/wiki/User_Friendly): Old-school. Offline and archived.
+- [PhD Comics](https://phdcomics.com/): Quality academic humor. Discontinued.
+- :star: [Spintronics](https://store.upperstory.com/collections/spintronics/products/spintronics-act-one): Mechanical circuits. Very clever toy.
+- :star: [Turing Tumble](https://store.upperstory.com/collections/turing-tumble-game/products/turing-tumble): Modern Dr. Nim
+
+
+
+## Tools
+
+- :star: [Numbat](https://numbat.dev/)
+- [MxToolbox](https://mxtoolbox.com/)
+- [Brainfuck Interpreter](https://copy.sh/brainfuck/)
+- [Compiler Explorer](https://godbolt.org/)
+- [Monkeytype](https://monkeytype.com/)
+- :star: [TLDR](https://tldr.sh/)
+- [TOS;DR](https://tosdr.org/)
+- [Regexr](https://regexr.com/)
+- [Choose a License](https://choosealicense.com/)
+- [DeepL](https://www.deepl.com/translator)
+- [ShuffleCake](https://shufflecake.net/)
+- [Zola](https://www.getzola.org/): Static site generator
+- [Presenterm](https://github.com/mfontanini/presenterm)
+- [mprocs](https://github.com/pvolok/mprocs): Simpler tmux
+- [mask](https://github.com/jacobdeichert/mask)
+- [gitui](https://github.com/gitui-org/gitui): git tui
+- [tokei](https://github.com/XAMPPRocky/tokei): count lines of code
+- [delta](https://github.com/dandavison/delta): pretty pager for diffs
+- [dust](https://github.com/dandavison/delta): `du`, but better
+
+## Math Resources
+
+- [Quantum Quest](https://www.quantum-quest.org/)
+- [The Natural Number Game](https://www.ma.imperial.ac.uk/~buzzard/xena/natural_number_game/)
+- [Intro to Lambda Calculus](https://www.driverlesscrocodile.com/technology/lambda-calculus-for-people-a-step-behind-me-1/)
+- [FSM Simulator](https://ivanzuzak.info/noam/webapps/fsm_simulator/)
+- [Euclidea](https://www.euclidea.xyz/)
+- [Problems.ru](https://problems.ru/)
+
+## OS Dev Resources
+
+- [OS Dev Wiki](https://wiki.osdev.org/Expanded_Main_Page)
+- [Nand2Tetris](https://www.nand2tetris.org/course)
+- :star: [Writing an OS in Rust](https://os.phil-opp.com/)
+- [x86 Assembly Guide](https://www.cs.virginia.edu/~evans/cs216/guides/x86.html)
+- [Writing a simple x86 Bootloader](https://www.alanfoster.me/posts/writing-a-bootloader/)
+- [FDC Programming](http://www.brokenthorn.com/Resources/OSDev20.html)
+- [CS77 at Bristol College](http://www.c-jump.com/CIS77/CIS77syllabus.htm)
+
+## Misc Resources
+
+- [Learn OpenGL](https://learnopengl.com/)
+- [Learn WGPU](https://sotrh.github.io/learn-wgpu)
+- [WGPU Fundamentals](https://webgpufundamentals.org/)
+- [Acko](https://acko.net/)
+- [Bezier Info](https://pomax.github.io/bezierinfo/)
+- [SHA256 Algorithm](https://sha256algorithm.com/)
+- [ML Playground](https://ml-playground.com/)
+- [Learn you some Erlang](https://learnyousomeerlang.com/)
+- [Learn you a Haskell](https://learnyouahaskell.github.io/)
+- [Teach yourself CS](https://teachyourselfcs.com/)
+- [The Architecture of Open Source Applications](http://aosabook.org/en/index.html)
+- [wtfjs](https://github.com/denysdovhan/wtfjs): js [wat](https://www.destroyallsoftware.com/talks/wat)s
+
+## Reference
+
+- [DevHints](https://devhints.io/)
+- [OverAPI](https://overapi.com/)
+- [TSConfig Cheat Sheet](https://www.totaltypescript.com/tsconfig-cheat-sheet)
+- [Makefile Tutorial](https://makefiletutorial.com/)
+- [The Pinouts Book](https://pinouts.org/)
+- [Laws of UX](https://lawsofux.com/)
+
+## Rust
+- [Understanding Memory Ordering in Rust](https://emschwartz.me/understanding-memory-ordering-in-rust/)
+- [Unfair Rust Quiz](https://this.quiz.is.fckn.gay/): wtfjs, but in Rust.
+
+
+
+
+## Misc
+
+- [Slide Rule Collection](https://www.followingtherules.info/)
+- [MK-61 Command Reference](http://www.thimet.de/CalcCollection/Calculators/Elektronika-MK-61/CmdRef.html)
+- [Why Privacy Matters](https://www.ted.com/talks/glenn_greenwald_why_privacy_matters)
+- [Papers we Love](https://paperswelove.org/)
+- [Grug Brain Dev](https://grugbrain.dev/)
+- [Zen of Python](https://peps.python.org/pep-0020/)
+- [The XY Problem](https://xyproblem.info/)
diff --git a/crates/service/service-webpage/src/routes/links.rs b/crates/service/service-webpage/src/routes/links.rs
index d01a729..b22cdae 100644
--- a/crates/service/service-webpage/src/routes/links.rs
+++ b/crates/service/service-webpage/src/routes/links.rs
@@ -23,8 +23,7 @@ pub async fn links() -> Markup {
meta,
html!(
(Backlinks(&[("/", "home")], "links"))
-
- (Markdown(MD))
+ (Markdown(include_str!("links.md")))
)
))
}
@@ -36,130 +35,3 @@ Dead links:
https://www.commitstrip.com/en/
http://www.3dprintmath.com/
*/
-
-const MD: &str = r#"# Bookmarks
-
-This is a heavily opinionated bookmarks toolbar.
-
-
-
-## Podcasts
-
-- :star: [Darknet Diaries](https://darknetdiaries.com/): A perennial classic.
-- [Art of Manliness](https://www.artofmanliness.com/podcast/): Philosophy, literaure, psychology.
-- [The Overanalyzers](https://www.theoveranalyzers.com/): Amateur podcasters talk amateur psychology. This is a complement---they're _very_ good!
-- [Rust in Production](https://corrode.dev/podcast/): Operations, Rust, and modern tech.
-- :star: [On the Metal](https://onthemetal.transistor.fm/): Quality stories from quality engineers.
-- [Security Cryptography Whatever](https://securitycryptographywhatever.com/): Modern cryptography, for those who understand the underlying theory.
-
-## Essays
-
-- [Real Programmers don't use Pascal](https://www.ee.torontomu.ca/~elf/hack/realmen.html)
-- [A Mathematician's Lament](/files/lockhart.pdf)
-- :star: [The Jargon File](http://www.catb.org/jargon/)
-
-## Textbooks
-
-- :star: [OpenLogic](https://openlogicproject.org/): The gold standard
-- [Operating Systems: from 0 to 1](https://github.com/tuhdo/os01)
-- [Operating Systems: Three Easy Pieces](https://pages.cs.wisc.edu/~remzi/OSTEP/)
-- [Crafting Interpreters](https://craftinginterpreters.com/contents.html)
-- [An Introduction to Mathematical Cryptography](https://link.springer.com/book/10.1007/978-0-387-77993-5)
-- [Stories about Maxima and Minima](https://archive.org/details/storiesaboutmaxi0000tikh)
-
-## Miscellanea
-
-- [Hackaday](https://hackaday.com/)
-- [Grumpy Website](https://grumpy.website/): Daily design crimes
-- :star: [ZSA Voyager](https://www.zsa.io/voyager): World's best keyboard
-- [Nikita Prokopov](https://tonsky.me/)
-- [Faster Than Lime](https://fasterthanli.me/)
-- [Pepper & Carrot](https://www.peppercarrot.com/): The open-source webcomic
-- [User Friendly](https://en.wikipedia.org/wiki/User_Friendly): Old-school. Offline and archived.
-- [PhD Comics](https://phdcomics.com/): Quality academic humor. Discontinued.
-- :star: [Spintronics](https://store.upperstory.com/collections/spintronics/products/spintronics-act-one): Mechanical circuits. Very clever toy.
-- :star: [Turing Tumble](https://store.upperstory.com/collections/turing-tumble-game/products/turing-tumble): Modern Dr. Nim
-
-
-
-## Tools
-
-- :star: [Numbat](https://numbat.dev/)
-- [MxToolbox](https://mxtoolbox.com/)
-- [Brainfuck Interpreter](https://copy.sh/brainfuck/)
-- [Compiler Explorer](https://godbolt.org/)
-- [Monkeytype](https://monkeytype.com/)
-- :star: [TLDR](https://tldr.sh/)
-- [TOS;DR](https://tosdr.org/)
-- [Regexr](https://regexr.com/)
-- [Choose a License](https://choosealicense.com/)
-- [DeepL](https://www.deepl.com/translator)
-- [ShuffleCake](https://shufflecake.net/)
-- [Zola](https://www.getzola.org/): Static site generator
-- [Presenterm](https://github.com/mfontanini/presenterm)
-- [mprocs](https://github.com/pvolok/mprocs): Simpler tmux
-- [mask](https://github.com/jacobdeichert/mask)
-- [gitui](https://github.com/gitui-org/gitui): git tui
-- [tokei](https://github.com/XAMPPRocky/tokei): count lines of code
-- [delta](https://github.com/dandavison/delta): pretty pager for diffs
-- [dust](https://github.com/dandavison/delta): `du`, but better
-
-## Math Resources
-
-- [Quantum Quest](https://www.quantum-quest.org/)
-- [The Natural Number Game](https://www.ma.imperial.ac.uk/~buzzard/xena/natural_number_game/)
-- [Intro to Lambda Calculus](https://www.driverlesscrocodile.com/technology/lambda-calculus-for-people-a-step-behind-me-1/)
-- [FSM Simulator](https://ivanzuzak.info/noam/webapps/fsm_simulator/)
-- [Euclidea](https://www.euclidea.xyz/)
-- [Problems.ru](https://problems.ru/)
-
-## OS Dev Resources
-
-- [OS Dev Wiki](https://wiki.osdev.org/Expanded_Main_Page)
-- [Nand2Tetris](https://www.nand2tetris.org/course)
-- :star: [Writing an OS in Rust](https://os.phil-opp.com/)
-- [x86 Assembly Guide](https://www.cs.virginia.edu/~evans/cs216/guides/x86.html)
-- [Writing a simple x86 Bootloader](https://www.alanfoster.me/posts/writing-a-bootloader/)
-- [FDC Programming](http://www.brokenthorn.com/Resources/OSDev20.html)
-- [CS77 at Bristol College](http://www.c-jump.com/CIS77/CIS77syllabus.htm)
-
-## Misc Resources
-
-- [Learn OpenGL](https://learnopengl.com/)
-- [Learn WGPU](https://sotrh.github.io/learn-wgpu)
-- [WGPU Fundamentals](https://webgpufundamentals.org/)
-- [Acko](https://acko.net/)
-- [Bezier Info](https://pomax.github.io/bezierinfo/)
-- [SHA256 Algorithm](https://sha256algorithm.com/)
-- [ML Playground](https://ml-playground.com/)
-- [Learn you some Erlang](https://learnyousomeerlang.com/)
-- [Learn you a Haskell](https://learnyouahaskell.github.io/)
-- [Teach yourself CS](https://teachyourselfcs.com/)
-- [The Architecture of Open Source Applications](http://aosabook.org/en/index.html)
-- [wtfjs](https://github.com/denysdovhan/wtfjs): js [wat](https://www.destroyallsoftware.com/talks/wat)s
-
-## Reference
-
-- [DevHints](https://devhints.io/)
-- [OverAPI](https://overapi.com/)
-- [TSConfig Cheat Sheet](https://www.totaltypescript.com/tsconfig-cheat-sheet)
-- [Makefile Tutorial](https://makefiletutorial.com/)
-- [The Pinouts Book](https://pinouts.org/)
-- [Laws of UX](https://lawsofux.com/)
-
-## Rust
-- [Understanding Memory Ordering in Rust](https://emschwartz.me/understanding-memory-ordering-in-rust/)
-- [Unfair Rust Quiz](https://this.quiz.is.fckn.gay/): wtfjs, but in Rust.
-
-
-
-
-## Misc
-
-- [Slide Rule Collection](https://www.followingtherules.info/)
-- [MK-61 Command Reference](http://www.thimet.de/CalcCollection/Calculators/Elektronika-MK-61/CmdRef.html)
-- [Why Privacy Matters](https://www.ted.com/talks/glenn_greenwald_why_privacy_matters)
-- [Papers we Love](https://paperswelove.org/)
-- [Grug Brain Dev](https://grugbrain.dev/)
-- [Zen of Python](https://peps.python.org/pep-0020/)
-- [The XY Problem](https://xyproblem.info/)"#;
diff --git a/lychee.toml b/lychee.toml
new file mode 100644
index 0000000..8efd9ff
--- /dev/null
+++ b/lychee.toml
@@ -0,0 +1,12 @@
+cache = true
+max_cache_age = "2d"
+
+verbose = "info"
+
+glob_ignore_case = false
+exclude_path = ["./public"]
+exclude = [
+ '^http(s)?://localhost',
+ '^file://',
+ "https://circles.math.ucla.edu/circles",
+]