“Anything’s good when it’s deep-fried, even brains.
Maybe especially brains.”

— James Lileks

Culture clash

My Amazon wish list recently contained this happy news:

The reason Look to Windward was so much more expensive than any of the other Culture novels was that it was owned by a different publisher. Who has finally decided that a 19-year-old SF ebook should not be priced like a 2020 hardcover.

Downside: books 7-10 have off-by-one errors in the series titling (“Book N-1”), and books 4-6 are out of print in the US, and not available as ebooks. Pretty sure they’re on my shelves somewhere, though.

Unrelated, this categorization is not an error, it’s the work of Corona-chan:

My dentist is in full-body hazmat gear, because it’s a solo practice; if she gets sick, the whole place shuts down again.

(and I get to go back to her soon with a brand-new annual budget, so “drill, baby, drill!”)

Unrelated bleg

Does anyone remember the network vendor from The Before Times who used a soviet-looking travel poster to advertise their product with a tagline like “Welcome to Zeroslotlan”? Google and DDG have been unhelpful.

Phrasing, people!

One day at Synopsys (long ago and far away), email went out informing our team of an urgent meeting. The subject line read:

Emergency Sexual Harrassment Training

With no further context, we weren’t sure if it was a class on how not to get fired or how to definitely get fired. Worse, it was going to be run by the HR rep who just happened to be smoking hot and extremely friendly.

I think we were a bit disappointed that the “emergency” was simply the fact that the Director of NCS was going on vacation and just wanted to get this done before he left.

So what did I find in my onboarding inbox today?

Preventing Sexual Harassment Training


Related, with Labor Day weekend coming up, I’m reminded of the small healthcare facility located just off-campus at OSU my first year, that I noticed for the first time when the handmade sign on their door was changed to read:

Pregnancy Distress Center: Closed Labor Day

“Say hello to the 21st century”

The last time I had to go through a new-hire process was at the beginning of 2007, at a startup that didn’t quite fit in two large rooms. The onboarding process was basically “oh, you’re here; good thing you already know half the company from working with them six months ago”.

This week is a bit more involved, in a good way. Even without the aggressive use of online services to work around all the Corona-induced issues, it’s clear that the new company has invested the time and money to get people onboard and up to speed well.

I’m spending a crapload of time on Zoom, but my time isn’t being wasted. Instead, I’m seeing a lot of things being done right that we had to half-ass at the other place, because nobody had the free cycles or the management support to expand on solutions. There’s automation I set up in 2007 that’s still running basically unchanged, because that’s-good-enough-now-here’s-another-hat-to-wear.

Seriously, there’s a script I wrote in the middle of our first building move to let the rest of build team quickly handle config updates for physical and virtual machines, with the obvious name QUICK. It gained features and safeguards over the years, but deep down, the central pillar of corporate IT remains a weekend hack, running on ancient hardware with an obsolete version of CentOS. (technically there’s only one piece of it that couldn’t be migrated to a current OS on a VMware virtual, but that had to be kept alive as long as there were still Windows 7 machines in the company) (and the last attempt to do a P2V conversion before I left failed)

Yesterday afternoon, I was shown a self-service web portal that made my old script look like, well, the weekend hack that it was. It’s like they started in the same place, and then it became someone’s job to keep making it better. With funding and management support.

I was also shown a nice tool that looks quite a bit like something I proposed a while back, that got shot down because it would have disrupted The Way Things Have Always Worked. Which was the entire point. Because The Old Way was a compliance/audit nightmare.

(classical reference)

Iosevka Termanal

So, yeah, I rolled my own. The primary change from the prebuilt SS02 version was that I made it standard-width and a bit lighter. And reversed the slash on the zero, just because I could. I included the build plan and the necessary diffs in the Zip file, and only built Regular and Bold with their matching italics.

Completely unrelated, Amazon recommended a new manga series to me: To Save The World, Can You Wake Up The Morning After With A Demi-Human?. In which Our Hero’s mission is to knock up as many monster girls as possible in the hope that one of them will give birth to The Chosen One who will defeat The Demon Lord.

Except that he’d really rather just hold hands with the cute elf girl in his homeroom class. And he passes out whenever the girls get him excited. And then they do him anyway while he’s out. And the more often they all get a fill-up, the more potent his secret sauce becomes, so they’re all willing to share. Even the Legal Loli dwarf girl who can’t quite wrap herself around it yet.

Not an isekai, apparently, just a perfectly ordinary Japan with a wide variety of horny monster girls and a recurring Demon Lord infestation.

9/2 update

I decided to make the bold a bit bolder, to better differentiate it at various sizes. Zip file updated.

More fun with programming fonts

After working with SomeType Mono for a little while, I decided to quantify my font ratings.

I started by dusting off my old fontforge svg2ttf script, since I knew its Python API exposed everything I needed. Then I discovered that I can’t get that API to work any more. Somewhere between the Python 2->3 updates and Homebrew’s descent into madness, it done broke.

I know how to extract metrics and outlines using Font::FreeType and Cairo in Perl, and most of what I need is already exposed in my PDF::Cairo module, but I’d have had to do some mucking about with internals to get it all, and it would have added a messy dependency should I decide to share the script.

So I switched to Adobe Font Toolkit, which cleanly installs into a Python virtualenv without any issues. Its tx utility can both extract metadata and calculate precise bounding boxes for every glyph, which allows me to measure many of my concerns:

FONT OfficeCodePro-Regular.otf
x-height 69.012% of ascender height
relative width 100.000%
vertical centering offset from '=':
! greater -3.79%
! less -3.79%
! parenleft -7.04%
! parenright -7.04%
! bracketleft -7.04%
! bracketright -7.04%
! braceleft -7.04%
! braceright -7.04%
! bar -10.83%
width compared to '=':
! asciitilde +4.19%

This tells me that Office Code Pro has a standard typewriter width (Courier, Prestige Elite, etc), a decent x-height, equal widths for -=+, a slightly-wide ~, common vertical centering for =-+~*&#%/\ and digits, a very small vertical offset for <>, a bigger one for ()[]{}, and an annoyingly large one for |. Since I’m not analyzing the glyph outlines yet, I can’t tell that it has a five-lobed asterisk and a slashed zero.

For comparison, here’s the latest release of Iosevka Fixed SS02 Regular:

FONT iosevka-fixed-ss02-regular.ttf
x-height 69.829% of ascender height
relative width 83.333%
vertical centering offset from '=':
! asciitilde -2.11%
! ampersand +3.62%
! percent +3.62%
! zero +3.62%
! X +3.62%
width compared to '=':
! asciitilde +19.47%

Similar x-height, much narrower, &% aligned with caps/numerals, and twiddle a hair low and extra-wide.

The last time I looked at Iosevka, all the “SSnn” variants were built with the same family name, so you couldn’t tell which of the sixteen variations you’d downloaded except by the file name. They’ve cleaned things up quite a bit, and now it’s fully scriptable so you can roll your own variation and Have It Your Way. The downside is that the repo is over 5 gigabytes. The other downside is that it uses npm.

Other fonts I’ve tried recently? IBM Plex Mono (painfully short hyphen, dotted zero, goofy #), Cascadia Mono (the dotted zero and goofy alphabet clobber its otherwise perfect score, although I’d use Light rather than Regular), Go Mono (five-lobed goofy asterisk, serifs, and inconsistent punctuation weight), JetBrains Mono NL (dotted zero, five-lobed asterisk, small-but-consistent vertical offsets for ()[]{}/\|~*), and Code Saver (short hyphen, high /\, low |).

Oh, and the name of my script? Termanal. If I ever roll my own custom font, obviously I’ll call it Termanal Regular. 😁


Just found the current much-expanded version of the Inconsolata family. Slashed zero, ligatures off by default, five-lobed asterisk, annoyingly short hyphen, slightly-low [], annoyingly low |, eight weights, and nine widths (166%, 125%, 100%, 92%, 83%, 75%, 67%, 58%, and 42% for when you need all the columns).

If the shoe fits…

[Okay, since the brand new MacBook Pro they sent me just arrived, I think I can officially believe that I start on Monday…]

My first job in Silicon Valley was at Synopsys, where the (tone-deaf) collective term for employees was (and still is) synopsoids.

My new job is at Pure Storage, where, according to my welcome letter, the equivalent term is apparently puritans.

I think this makes me a Puranoid.

Fair enough.

Related, long ago and far away I delivered pizza for Dominos during the 30-minutes-or-free era, which overlapped with the infamous Avoid The Noid ad campaign that inspired a real-life Noid to show up with a .357 magnum and prove he was correctly named.

Unrelated, LinkedIn recently popped up a “congratulate (redacted) for 14 years at Ooma!”​. Apparently his widow wasn’t able to disable all of his online accounts.

Related to a picture I used recently, I was disappointed to discover that there are almost no online references to the term “mobile grounding units”, the item responsible for most of the campus power outages when I was at OSU. Also known as “squirrels”.

PS: the instructions for my new-hire orientation Zoom session included the words “wear something orange”. I was surprised to discover that there actually was one item of orange clothing in my house. It’s a George Of The Jungle t-shirt that I’ve never worn, and that’s probably been in a box for over 20 years. I’m not even sure who gave it to me; sometimes whimsical t-shirts just appear in my life.

Technically, the shirt is light brown, but even without partial color-blindness, the border between “dark orange” and “light brown” is pretty fuzzy.

[I can’t do anything with the new laptop until they send me the temporary login password early Monday morning, but it’s certainly shiny.]

Sometype Mono

I’m trying out a programming font, the free Sometype Mono. It avoids almost everything I hate about coding fonts, and beats out the previous champ Office Code Pro by not having an italic $ or five-lobed *. Set width is a bit narrower, but not as condensed as the same designer’s non-free Code Saver ($25 for 3 weights and matching italics, if you like squeezing a few extra columns into your windows). Specifically, an 80-column window of Office Code Pro will fit 83 of Sometype Mono, 86 of Code Saver, or 88 of my former standard Anonymous Pro.

I can get Code Saver through my Adobe CC subscription, but I’m going to start with the free one, since I’m setting up a new work laptop this weekend, and it won’t have an Adobe license.


The Programming Fonts web site, which I hadn’t visited for a few years, includes Sometype Mono in its live previews, as well as an increasing number of cleanups of existing fonts to fix many of my complaints. The least-unreadable preview setting at the bottom is the base16-light color scheme and the None syntax coloring.

Wildfire update

The SCU Complex and CZU Complex fires continue to threaten Silicon Valley from both sides, but while the evacuation zones have advanced, they still haven’t crossed 101 or 280 yet, and the fires were not visible from 101 when I drove up to San Jose yesterday (needed to show ID to prove I’m legally eligible for employment; the company’s using a remote service, but their location in Salinas was booked past my start date).

On the way home, I stopped off in Morgan Hill for Boar’s Head lunchmeat and a car wash, and not only was the car still clean today (apart from the paw-prints), late this afternoon the air quality index was back to a safe-and-healthy 25, so I was able to open up all the windows and air the place out.

According to AirNow, the sensor nearest to my house peaked at just over 200 on Saturday, but is down to 8 right now. By comparison, Mountain View was over 150 today, and is currently down to 62.

“Need a clue, take a clue,
 got a clue, leave a clue”