(ns pages
(:require [borkdude.html :refer [html]]
[highlight :refer [code highlight-clj highlight-styles]]))
(def home-uri "/")
(def books-2025-uri "/books-2025")
(def past-work-uri "/past-work")
(def code-example-uri "/code-example")
(defn template [body]
(html
[:html
{:style {:font-family "monospace"}}
[:head
[:style
[:$
(str
(highlight-styles "default")
"li { line-height: 1.6; }")]]
[:meta {:charset "UTF-8"}]]
[:body
[:<> body]]]))
(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]]))
[[books-2025-uri "Selected reading list, 2025"]
[past-work-uri "Past work"]])]])))
(defn page [body]
(template
(html
[:<>
[:p [:a {:href "/"} "< home"]]
body])))
(defn books-2025
[]
(page
(html
[:<>
[:h1 "Selected reading list, 2025"]
[:ul
[: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 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 code-example []
(page
(html
[:<>
[:h1 "Code example"]
[:p "This is an example of a post with a code block:"]
(code
(highlight-clj
(println "hello, world!")))
[:p "Looks pretty good."]])))
(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
books-2025-uri books-2025
code-example-uri code-example
past-work-uri past-work})
(comment
(require '[repl :refer [restart build]])
(restart)
(build))