About my Homepage



Why plain HTML? — Mainly because it’s fast and clean. I hate being on slow WiFi and a website I’m trying to load lags. I refuse to participate in making people wait. I’m a punctual person. Even the extent to which these pages lag as they are annoys me. But also, I actually like the way old guys’ homepages look—the old guys who’ve had the same homepages since the 1990s. They’re horrible, but they’re so fast … and they must have spent so much time on them. I love it. In fact, let’s start a list of them: These are just some quick ones. I could eventually see this list becoming an “Old Guy Plain HTML Hall of Fame” page. If you want to suggest additions, email me.

What fonts are these? — For serif, I use a webfont version of Latin Modern, the Computer Modern successor that ships with LaTeX. I converted the official OpenType files into WOFF2 using Google’s woff2-tools package and pulled in the Roman weights and italics. For monospace, I use Source Code Pro. These are my preferred serif and monospace fonts; when I work, Source Code Pro is often on the left side of the screen while Latin Modern (or sometimes old-school Computer Modern) is on the right. The fonts are served as subsets: each face is split into a small core file – ASCII, Latin-1 and the punctuation these pages use, about 20 KB – and a rest file that the browser fetches only if a page ever contains a character outside it. The glyphs, hinting, kerning and ligatures are exactly the originals’; only the character inventory was cut, and the cut was checked glyph for glyph against the originals before going live.

What else makes it fast? — The rule is that the first paint should feel immediate, and that everything else can happen while you read. Each page is a few kilobytes of HTML, one small stylesheet and two scripts totalling less than 400 bytes (one writes the year in the footer, the other makes outward links open in a new tab). The fonts are preloaded on every page, so once you have seen one page the others render from cache; and the homepage fetches my CV in the background after it has loaded, so that by the time you find the link the PDF is already on your machine. Nothing is loaded from anyone else’s server, there is no analytics, and there are no cookies: the page you are reading talked to exactly one host.

What is the snake in the tab? — An ouroboros, but as a rattlesnake. The icon is at least ten years old and I found it loose on the internet; I have never managed to trace its author, and if it is yours, write to me. It was a single 110-pixel raster, so I traced it back into a vector, which is what the tab shows now: black on a light tab strip and white on a dark one, by way of a media query inside the SVG itself.

What is this link color scheme?Blue navigates away from my homepage, except my own GitHub pages are linked in green; links that stay inside my homepage use a brown.

Why CV so hyperlinked? — I tried creating a simple LaTeX CV template that I could losslessly convert back and forth between LaTeX and HTML with Pandoc. For some reason this was the requirement I had for making Pandoc such an important feature of my workflow. If I’d succeeded, I might have had both a webpage with the contents of my CV and a PDF download available. But I actually ended up finding the concept a bit redundant – just an excuse to mess around with Pandoc – and anyway, in that case Pandoc would become a bottleneck on the aesthetics of the document. I opted to just go wild with my CV as a PDF.

Where do you host this site? — This website started out as my GitHub Pages site and still lives there, just under my own domain. The GitHub user site experience is fantastic – it’s a simple matter of using Git – and GitHub Pro is cheaper and faster than most hosting services. People who have homepages often stop maintaining them because the workflow is too disjoint; this way my homepage just lives in another one of my (now private) repositories, and updating it works the same as, e.g., pushing changes to an article I’m writing.

How is it built? — With a Makefile. Every page is a head template, a body file and a foot template concatenated, with sed filling in the title; a seven-line Python script then runs smartypants over the result, turning straight quotes into proper curly ones. The output is committed and served exactly as it is. There is no framework and no generator to keep up to date, which is the only way I know to make a homepage that will still build in ten years.