(ns pages
(:require [borkdude.html :refer [html]]
#_
[pages.missionary :refer [missionary]]
[pages.second-sex :refer [second-sex]]
[components :refer [template page]]))
(def home-uri "/")
(def media-queue-uri "/media-queue")
(def media-log-uri "/media-log")
(def books-2026-uri "/books-2026")
(def books-2025-uri "/books-2025")
(def films-2025-uri "/films-2025")
(def second-sex-uri "/second-sex-quotes")
(def past-work-uri "/past-work")
#_
(def missionary-uri "/code/missionary")
(defn home []
(template
(html
[:<>
[:p "Hello."]
[:p "My name is Jake Zerrer. This is where I keep things online. Look around."]
[:ul
(map
(fn [[uri name]]
(html
[:li [:a {:href (str uri)} name]]))
[[media-log-uri "My media log"]
[media-queue-uri "My media queue"]
[books-2026-uri "Favorite reads of 2026"]
[books-2025-uri "Favorite reads of 2025"]
[films-2025-uri "Films I enjoyed in 2025"]
[second-sex-uri "The Second Sex: Selected Excerpts"]
[past-work-uri "Past work"]])]])))
(defn films-2025
[]
(page
(html
[:<>
[:h1 "Films I enjoyed in 2025"]
[:ul
[:li "Train Dreams (2025)"]
[:li "The Secret Agent (2025)"]
[:li "Fitzcarraldo (1982)"]
[:li "Koyaanisqatsi (1982)"]
[:li "Black Narcissus (1947)"]
[:li "Anora (2024)"]
[:li "Sentimental Value (2025)"]]])))
(defn books-2025
[]
(page
(html
[:<>
[:h1 "Favorite reads of 2025"]
[:ul
[:li "A Tale for the Time Being (Ruth Ozeki)"]
[:li "The Second Sex (Simone de Beauvior)"]
[:li "The Places in Between (Rory Stewart)"]
[:li "Either/Or: A Fragment of Life (Søren Kierkegaard)"]
[:li "The Philosophy of History (G. W. F. Hegel)"]
[:li "This Life: Secular Faith and Spiritual Freedom (Martin Hägglund)"]
[:li "The Power Broker (Robert Caro)"]
[:li "Mating (Normal Rush)"]]])))
(defn books-2026
[]
(page
(html
[:<>
[:h1 "Favorite reads of 2026"]
[:ul
[:li "The Price of Peace (Zachary D. Carter)"]]])))
(defn media-queue
[]
(page
(html
[:<>
[:h1 "My media queue"]
[:p "This page contains a list of media that I'd like to read, watch, listen to, otherwise consume at some point. Think of it kind of like my public bookmarks."]
[:ul
[:li "Mood Machine (Lizz Pelly)"]
[:li "Introduction to Algorithms (Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein)"]
[:li
[:s
[:a {:href "https://www.youtube.com/watch?v=jdn617M3-P4"}
"Exotic Functional Data Structures: Hitchhiker Trees by David Greenberg (YouTube)"]]]
[:li [:a {:href "https://www.scottaaronson.com/papers/philos.pdf"} "Why Philosophers Should Care About Computational Complexity"]]
[:li [:a {:href "https://futureofcoding.github.io/futureofcoding.org/essays/dctp#d-is-for-denotative"} "The Misunderstood Roots of FRP Can Save Programming"]]
[:li [:a {:href "https://cs.yale.edu/homes/aspnes/classes/223/notes.html"} "Notes on Data Structures and Programming Techniques"]]
[:li [:a {:href "https://jackschaedler.github.io/circles-sines-signals/"} "Circles Sines and Signals - Introduction"]]
[:li [:a {:href "http://archagon.net/blog/2018/03/24/data-laced-with-history/"} "Data Laced with History"]]
[:li [:a {:href "https://elementsofprogramming.com/eop.pdf"} "Elements of Programming"]]
[:li [:a {:href "https://www.youtube.com/watch?v=tRc0O9VgzB0&t=1526s"} "Jepsen 9: A Fsyncing Feeling • Kyle Kingsbury • GOTO 2018 (YouTube)"]]
[:li [:a {:href "https://publikationen.uni-tuebingen.de/xmlui/bitstream/handle/10900/102021/thesis-v1.1.pdf?sequence=1&isAllowed=y"} "Design and Implementation of Effect Handlers for Object-Oriented Programming Languages"]]
[:li [:a {:href "https://probml.github.io/pml-book/"} "Probabilistic Machine Learning: An Introduction"]]
[:li [:a {:href "https://arxiv.org/abs/1803.05316"} "Seven Sketches in Compositionality: An Invitation to Applied Category Theory"]]
[:li [:a {:href "https://travisdowns.github.io/blog/2020/07/06/concurrency-costs.html"} "A Concurrency Cost Hierarchy"]]
[:li [:a {:href "https://arxiv.org/pdf/1807.05923"} "What is algebraic about algebraic effects and handlers?"]]
[:li [:a {:href "https://math.andrej.com/2019/10/28/runners-in-action/"} "Runners in action"]]
[:li [:a {:href "https://math.andrej.com/wp-content/uploads/2012/03/eff.pdf"} "Programming with Algebraic Effects and Handlers"]]
[:li [:a {:href "https://www.cs.purdue.edu/homes/rompf/papers/wang-nips18.pdf"} "Backpropagation with Callbacks: Foundations for Efficient and Expressive Differentiable Programming"]]
[:li [:a {:href "https://highscalability.com/design-of-a-modern-cache/"} "Design of a Modern Cache"]]
[:li [:a {:href "https://vorpus.org/blog/notes-on-structured-concurrency-or-go-statement-considered-harmful/"} "Notes on structured concurrency, or: Go statement considered harmful"]]
[:li [:a {:href "https://nosferalatu.com/DerivativesLogarithmsTransforms.html"} "Derivatives, Logarithms, and Transforms"]]
[:li [:a {:href "https://braid.org/antimatter"} "Antimatter: an algorithm that prunes CRDT/OT history"]]
[:li [:a {:href "https://ret2pop.nullring.xyz/blog/cognition.html"} "Cognition"]]
[:li [:a {:href "https://ciechanow.ski/exposing-floating-point/"} "Exposing Floating Point"]]
[:li [:a {:href "https://sans-io.readthedocs.io/how-to-sans-io.html"} "Writing I/O-Free (Sans-I/O) Protocol Implementations"]]
[:li [:a {:href "https://gist.githubusercontent.com/tcoppex/443d1dd45f873d96260195d6431b0989/raw/2c2a0af372dec1a0c1dc19f30e7771799dc4779d/c_nostd.txt"} "Writing C software without the standard library"]]
[:li [:a {:href "https://www.cs.tsukuba.ac.jp/~kam/papers/tfp2020-author.pdf"} "One-shot Algebraic Effects as Coroutines"]]
[:li [:a {:href "https://www.250bpm.com/p/structured-concurrency"} "Structured Concurrency"]]
[:li [:a {:href "https://glyph.twistedmatrix.com/2014/02/unyielding.html"} "Unyielding"]]]])))
(defn media-log
[]
(page
(html
[:<>
[:h1 "My media log"]
[:section
[:h2 "Exotic Functional Data Structures: Hitchhiker Trees by David Greenberg"]
[:a {:href "https://www.youtube.com/watch?v=jdn617M3-P4"} "YouTube link"]
[:p "Focused on the implementation of the Hitchhiker Tree data structure. I was hoping
to learn a bit more about how Greenberg had been using Hitchhiker Trees."]]])))
(defn past-work
[]
(page
(html
[:<>
[:h1 "Past work"]
[:p "I have spent most of my professional life working as a software engineer:"]
[:ul
[:li "In 2024, I ran product engineering at Normal Computing"]
[:li "In the summer of 2023, I traveled and prototyped a devex tool called refuge"]
[:li "From 2018 to 2023, I worked as a software engineer at Flexport"]
[:li "From 2014 to 2017, I worked as a software engineer at a small startup"]]
[:p "I had a previous career as a theatrical sound designer in New York City."]])))
(defn e-404 []
(page
(html
[:<>
[:h1 "404 Oh, be some other path!"]
[:p "What's in a path? That which we call a page"
[:br]
"by any other path would fail to load"]])))
(defn pages []
{home-uri home
media-queue-uri media-queue
media-log-uri media-log
books-2026-uri books-2026
books-2025-uri books-2025
films-2025-uri films-2025
past-work-uri past-work
#_#_
missionary-uri missionary
second-sex-uri second-sex})
(comment
(require '[repl :refer [restart build]])
(restart)
(build))