Friends

Website

This version of the website is its 3rd iteration. Although previously built using flask, a Python web-framework, this time I opted to use axum, a (much more performant) framework built atop the tokio runtime in Rust. A prime reason for the rehash is that I wanted a lot more flexibility in parsing and rendering markdown, in which most of the content on this website is composed (including the blog and all the blurbs). However, markdown is not enough; I wanted something extensible with custom tags (say to include simulations and stuff in the future) without having to fall back to inline HTML (djot appears to be quite promising in this regard), and something that would also allow me to specify custom html to generate per entity (say for italics etc.) One way to do this would be to use treesitter, or markdown_ast, but it seemed easier to just roll my own markup format similar to markdown. This I did via the parser-combinator framework nom (no, I didn't want to fight with lifetimes, and so tried pest first, but it just didn't seem flexible enough at the moment; maybe I missed something). But in any case, the current system seems to be able to render most of the markdown I had earlier (with minor modifications) and I am happy with the results. Perhaps I will record my experience with nom with blog in the future.

Apart from that, the rest of the website uses standard web tools. The styling is written in scss (earlier versions used tailwind, but I wanted something a bit more closer to bare CSS, and the tailwind CLI, ..., seems suboptimal at the moment, consuming increasing amounts of memory on --watch mode). The tiny bit of interactivity uses the fantastic alpine.js framework (and persists the dark mode setting using its 'persist' plugin). Finally, all the math is rendered using $\KaTeX$.