This web­site uses a few dif­fer­ent fonts:

One is Filosofia, designed in 1996 by Zuzana Licko and pub­lished by Emigre. I’m a huge fan of Licko’s designs; they feel to me like avatars of an age. I also love the fact that Emigre funded its iconic magazine with the sale of dig­i­tal fonts: one of the all-time great cross-subsidies.

Another is Trade Gothic Next, a 2008 revi­sion by Akira Kobayashi and Tom Grace of Jack­son Burke’s 1947 design. I love fonts of this style, called “grotesque”. It was years ago that I learned the Star Wars open­ing crawl is set in, of all things, News Gothic; that’s what cracked it open for me.

Headlines are set in Eska­pade Fraktur, designed in 2012 by Alisa Nowak. I think this font is a per­fect mod­ern blackletter, par­tic­i­pat­ing in the style’s slow but steady redemption.

Update: I’m cur­rently set­ting head­lines in Corfe, designed by Simon Walker. I have been totally locked into Eska­pade for years, and not for lack of try­ing alternatives; it’s just that every other type­face has looked WRONG, somehow. This one caught my eye, so I thought I’d give it a real audition.

Fiction is, when appropriate, pre­sented in my Perfect Edi­tion template, which uses Vollkorn, the “free and healthy type­face for bread and but­ter use” designed by Friedrich Althausen and pro­vided as a pro­found pub­lic good.


This web­site is man­aged using Middleman, a sta­tic site gen­er­a­tor that’s sim­ple and flex­i­ble and, most importantly, writ­ten in Ruby, which is the pro­gram­ming lan­guage I know best.

A few scraps of sup­port code run as Google Cloud Functions, all of them writ­ten in Ruby and Google’s Functions Framework, a real plea­sure to use.

I send emails using Mailchimp, which I operate through its API, chore­o­graph­ing mes­sages with a Ruby script that I run on my laptop.

You might have picked up on the fact that I like Ruby; in fact, it is the great love of my pro­gram­ming life. Its creator, Yuk­i­hiro Matsumoto, once expressed Ruby’s phi­los­o­phy like this:

For me, the pur­pose of life is, at least partly, to have joy. Pro­gram­mers often feel joy when they can con­cen­trate on the cre­ative side of pro­gram­ming, so Ruby is designed to make programmers happy.

This site doesn’t col­lect any infor­ma­tion about you or your reading. I do track the open rates of the emails I send through Mailchimp. I’m ambiva­lent about even this level of instrumentation, but/and, for me, it’s bal­anced against the publisher’s imper­a­tive not to spam the world with mate­r­ial, phys­i­cal or dig­i­tal, that is unwanted and unread.

Style guide

I’m not­ing a few sitewide pref­er­ences here, mostly for myself:

Assumed audiences

Here and there, I use the term “assumed audi­ence”, cribbed from Chris Krycho. For example, look at these two posts of his — one, two—with lit­tle plac­ards up top mak­ing it clear they are aimed at dif­fer­ent groups of read­ers. Those groups might overlap! They might also: not.

I liked Chris’s plac­ards as soon as I saw them; I appreciate the way they push back against the “context collapse” of the internet, in which every pub­lic post is, by default, addressed to everyone.

Many web­sites pro­vide this bul­wark themselves; an arti­cle posted on Work Truck is auto­mat­i­cally pretty well situated. But that’s not the case for mate­r­ial on a per­sonal site with many cross-cutting interests, and read­ers who arrived for many dif­fer­ent reasons. I can only report that I’ve often felt a ten­sion between

I think both impulses are good, actually, but they’re not always totally compatible. The ten­sion is ongoing; it’s close to the core of what writ­ing is. Maybe being explicit about my assumed audi­ence for cer­tain newslet­ters will be helpful; maybe it will just be extra cruft. We’ll see!

Finally, I hope it goes with­out saying: just because you’re not part of a newsletter’s assumed audi­ence doesn’t mean you shouldn’t give it a look 😇

November 2022, Oakland