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 with Netlify. I track the content & compiler source in Git on GitHub, and use Netlify's build farm for recompilation. A Zapier calendar hook triggers a nightly rebuild so external content (such as citation counts) refresh regularly.

The compilation process is a pile of custom JavaScript; 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:

  • Gulp ties everything together
  • Remark for most of the content processing
  • Pandoc for the few pages that require more complex formatting than Remark can handle
  • Rehype for reprocessing HTML
  • Nunjucks for layouts
  • Hastscript for generating little bits of HTML in the compilation process
  • Hyperscript for generating little bits of HTML in client-side JavaScript
  • PostCSS to make CSS more usable
  • Webpack to bundle client-side JavaScript
  • Lunr to implement site search
  • KaTeX for math rendering
  • iText pdfHTML for HTML-to-PDF

I also use Bluebird for rich promises and mississippi for a pile of stream utilities, along with a number of other libraries.

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 Microsoft Academic via Cognitive Services Labs, updated every time the site rebuilds.

I use iText pdfHTML 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. My build process includes a small Java program that calls the relevant iText APIs to convert generate the PDF after the site's HTML content is compiled.

Primary font is Huerta Tipográfica's Alegreya ht. Headers are set in Proza Libre and code in Adobe's Source Code Pro.

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.