This site is written and maintained by Bryan O’Sullivan. It has been online in one form or another since 2003.

Visual design and type

My current system of type grew out of a prior pairing that I sat with for a few months, but felt better in theory than it looked on the screen. Tenor Sans gave my headings a faint Art Deco air that I didn’t love. I admire EB Garamond, but on the screen it felt too airy, calligraphic (a little hard to read), and historical beside a modern sans. I went on a hunt for openly licensed faces that were highly readable and beautifully drawn, but neither “top Google Fonts” defaults nor decorative curiosities.

I started with a search for a heading font. Schibsted Grotesk won a series of A/B comparisons for headings and navigation. It is compact, sober, and editorial, with a pleasingly Nordic character: more personality than a generic anonymous sans, but less chilly than a neutral neo-grotesk. Once it was in place, the unsuitability of Garamond became even clearer.

The hunt for a suitable body face took longer. I dallied awhile with Literata, but it had distracting ligatures and annoyingly similar n and u forms in bold and italic. An experiment with Chivo made the page feel too uniformly sans serif. Andada Pro offered a pleasing balance: an open, distinctive serif face that offered oldstyle figures, true small caps, fractions, super- and subscripts, and a broad range of weights.

As pretty as it is, stock Andada was not quite polished enough for my purposes. Examining letter pairs such as AV, DA, and To revealed inter-letter spacing that was too loose or simply missing. Such pairs need to be kerned carefully so they don’t look like they’re staggering drunk out of a bar at 2am, so I patched the font’s GPOS kerning tables. I audited whole families of uppercase and capital–lowercase combinations, adding corrections where necessary. I renamed the result Serpentine Andada to distinguish it from the upstream font.

JetBrains Mono feels like a good choice of code face (and the one place where I was comfortable with a widely used face). Even so, it has a larger natural x-height than Andada, so I’ve tried to match it with font-size-adjust, to allow inline code to sit comfortably inside prose instead of looking badly scaled. I self-host all three families as WOFF2 files, because Google Fonts (despite its convenience) has deficient versions of them.

The ornament at the top of this page is a fleuron, traditionally called a printer’s flower. The gold-and-black Hercules beetle in the favicon echoes the animal O’Reilly’s art department chose for the cover of Real World Haskell, and serves as the site’s informal printer’s device.

Making the site

The pages are written in Markdown and generated by Hugo. I began the design with PaperMod, and have since added custom templates, typography, navigation, and styles. The finished static site is served by Cloudflare.