Get down with the Lispness

This website should impress no one. It was made with inspiration from many personal pages from academia. The goal was for it to be simple; So, at least a static page with no Javascript. Additionally, I liked the idea of writing the HTML files by hand and not relying on a Building-step. Due to the limitations of HTML, this does not scale, in addition to HTML not being fun to write. If your website has a navigation bar and you want to add a page to it, every HTML file would need to be updated to include this new navigation bar. These limitations are commonly overcome using an HTML template language. I have limited experience using Liquid, and I intend on keeping that experience as limit as possible. Liquid brings with it the worst of HTML, for example you still have to explicitly close tags with the correct tag names, a convention that should have died out over 50 years ago, while also introducing its own clunky syntax, including the cursed elsif keyword.

I toyed with the idea of writing a simple templating language myself, but I put it off. In the end, procrastinating worked, as it so often does, since a better idea came to me. I thought it would be fun to write the contents of the website in Lisp. That is, to write a Lisp program that prints out the HTML files. This intrigued me, since it would only take a single Lisp function, and writing in Lisp is a joy. Specifically, the function to implement constructs a string corresponding to a single tag and writing an HTML file would involve nested calls to this function. Then, the file

<body>
    <H1> Title oh no </H1>
    <p> Text for the body </p>
</body>

becomes

(tag "body"
    (tag "H1" "Title")
    (tag "p" "Text for the body")
)

See how I only have to type 'body' once; Upon reasearching this approach, I found others have done this, confirming it is a good idea. For a larger example, you can find the source for this current page here.