“You can’t spell Sith without s, h, i, and t.”

— Nick Gillespie weighs in

"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. 😁

Update

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.

Update

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.

Clown fonts go poof


Adobe CC periodically removes downloaded fonts that it decides you’re not using… in Adobe CC. Using them in other applications doesn’t count, apparently. To get them back from the Clown, you can either completely deactivate the family, switch menus, and reactivate, or click the Clown-down icon for each and every font file that’s been removed.

In other news, Adobe will finally be abandoning support for Type 1 fonts in their product line in an upcoming release. In J-specific news, Adobe doesn’t include my go-to poster font Barmeno in their Clown, and it’s $300 from Berthold. I think I’ll try converting it with Fontforge first…

(Adobe disguises the location of their Clown font files, so to use them in my PDF::Cairo scripts, I have a Perl script that symlinks them into directories scanned by Fontconfig)

Fires gone Wild


Yes, California is on fire. Mostly in the mountains right now, but the mandatory evacuation zones cover a lot of the highways leading out of the affected areas, so, y’know, leave now while you still can. The LA Times has a useful but graphically muddy map covering all the active fires.

The one nearest me, the River Fire, is mostly working its way through mountain areas that are very sparsely populated, with the exception of Carmel Valley. The perimeter doesn’t seem to have shifted much in that direction, so presumably that’s part of the ~10% they have contained. It’s not a threat to me at this time, apart from the smoke and ash; it would have to go through a lot of irrigated fields and the entire city of Salinas, which would admittedly suck.

The SCU Complex Fire (East Bay) is huge, prompting evacuations in parts of Fremont, Milpitas, Morgan Hill, Gilroy, etc, and is getting close to I-5 near Patterson. The evacuations are only advisory for Morgan Hill and Gilroy at the moment, according to this map. While the northwest edge is getting close to I-680, the southwest edge is still comfortably far from Highway 101.

The CZU Complex Fire (Santa Cruz Mountains) is currently completely uncontained and the mandatory evacuation zone now includes parts of Santa Cruz and all of Scotts Valley, as well as Highways 1, 9, and 17.

North of the Bay Area, Napa and Sonoma are threatened by the LNU Complex Fire, and west of that, the 13-4 Fire stretches from Highway 101 to the ocean, northwest of Santa Rosa. And there are a lot of smaller fires scattered around the state.

On the bright side, the heat wave that had the utilities threatening rolling outages has subsided somewhat, although the advice to open your windows at night when it’s cool is probably not being followed in most areas (coughcough).

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