
Colophon
My web site is one of my favorite yaks. There are many like it, but it is mine.
I build it as a static site published through Bunny CDN, currently backed Netlify. I track the content & compiler source in Git on GitHub, and regularly rebuild on my NAS.
Typefaces are from Adobe’s excellent Source family (Source Serif, Source Sans, and Source Code Pro), using the variable versions to decrease page weight.
The compilation process is a pile of custom JavaScript running on Deno; I am not using a site generator framework such as Metalsmith or Assemble (I do use Panini for other, simpler sites). The major libraries I use include:
- Pandoc content processing
- deno_dom for reprocessing HTML
- Nunjucks for layouts
- Hyperstatic for generating little bits of HTML
- SASS to make CSS more usable
- esbuild to bundle client-side JavaScript
- Omara to implement site search
- KaTeX for math rendering
- WeasyPrint for rendering HTML to PDFs
Build stages are automated with a Jim Tcl script using a custom task runner library I wrote; that lives in my common TCL package.
One of the particularly cool features of this setup is my publication pages: each publication has a page written in Markdown; embedded HTML at the top of the page serves as single-source-of-truth for my publications across the whole site. My CV is updated from this data, as is my publication list and other places where publications show up (project pages, blog posts, etc.).
I source citation statistics from Semantic Scholar, updated every time the site rebuilds. Google Scholar statistics are manually updated.
I use WeasyPrint to render my CV into a consistent and downloadable PDF. The HTML CV itself prints well (the print CSS is how I generate the PDF), but the pre-rendered PDF provides niceties like good headers and footers.
Icons are from the excellent Noun Project.
I don’t make the Git repository and history of my web site public, but am happy to share upon request with people interested in seeing the code.