Add links

This commit is contained in:
2025-11-02 10:46:46 -08:00
parent 5641fa7b56
commit 431949ca17
2 changed files with 216 additions and 0 deletions

View File

@@ -0,0 +1,214 @@
use assetserver::Asset;
use macro_sass::sass;
use maud::{DOCTYPE, Markup, PreEscaped, html};
use crate::{
components::{md::Markdown, misc::FarLink},
routes::{assets::Image_Icon, index::PageMetadata},
};
// TODO: emoji
// TODO: one page base
// TODO: spellcheck
// TODO: check links
const CSS: &str = sass!("css/main.scss");
pub async fn links() -> Markup {
let meta = PageMetadata {
title: "Links".into(),
author: Some("Mark".into()),
description: None,
image: Some(Image_Icon::URL.into()),
};
html! {
(DOCTYPE)
html {
head {
meta charset="UTF" {}
meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" {}
meta content="text/html; charset=UTF-8" http-equiv="content-type" {}
meta property="og:type" content="website" {}
(meta)
title { (PreEscaped(meta.title)) }
style { (PreEscaped(CSS)) }
}
body {
div class="wrapper" {
main {
// TODO: no metadata class, generate backlink array
div {
a href="/" style="padding-left:4pt;padding-right:4pt;" {"home"}
"/"
span class="metaData" style="padding-left:4pt;padding-right:4pt;" { "links" }
}
(Markdown(MD_A))
hr style="margin-top: 8rem; margin-bottom: 8rem" {}
(Markdown(MD_B))
hr style="margin-top: 8rem; margin-bottom: 8rem" {}
(Markdown(MD_C))
hr style="margin-top: 8rem; margin-bottom: 8rem" {}
(Markdown(MD_D))
}
footer {
hr class = "footline" {}
div class = "footContainer" {
p {
"This site was built by hand using "
(FarLink("https://rust-lang.org", "Rust"))
", "
(FarLink("https://maud.lambda.xyz", "Maud"))
", "
(FarLink("https://github.com/connorskees/grass", "Grass"))
", and "
(FarLink("https://docs.rs/axum/latest/axum", "Axum"))
"."
}
}
}
}
}
}
}
}
/*
Dead links:
https://www.commitstrip.com/en/
http://www.3dprintmath.com/
*/
const MD_A: &str = r#"# Bookmarks
This is a heavily opinionated bookmarks toolbar."#;
const MD_B: &str = r#"## 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"#;
const MD_C: &str = r#"## 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."#;
const MD_D: &str = r#"## 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/)"#;

View File

@@ -6,6 +6,7 @@ use utoipa::OpenApi;
mod assets;
mod betalupi;
mod index;
mod links;
#[derive(OpenApi)]
#[openapi(tags(), paths(), components(schemas()))]
@@ -18,5 +19,6 @@ pub(super) fn router() -> Router<()> {
Router::new()
.route("/", get(index::index))
.route("/whats-a-betalupi", get(betalupi::betalupi))
.route("/links", get(links::links))
.nest(asset_prefix, asset_router)
}