Fun

“No scissors, no fly”


Isn’t this part of the origin myth for karate?

Thirty-six flights were cancelled at an airport in Japan, because a pair of scissors went missing. Spoiler: the scissors weren’t actually missing, they just weren’t in the secure locker where they were supposed to be stored between authorized uses.

International political comparison left as an exercise for the reader.

(this is one of those shows that has a triple fuckton of fan-art, almost none of which is any good)

Back-and-forth on Typeface app

Y’know, I often disagreed with Tog’s classic Apple User Experience standards, and with many of his later recommendations, but it was all evidence-based; his teams tested the hell out of everything, and produced clear, usable rules. Now, with the modern Apple feels-over-facts lack of any standards, I realize that the reason I’m having difficulty communicating with the author of Typeface is that we don’t even speak the same language. Neither in UI design nor in typeface management.

He doesn’t seem to understand why scattering information all over the screen is bad design, or why adjusting the font display with a mix of menus, buttons, popups, pulldowns, and modifier keys, often requiring you to move the mouse 6+ inches between steps, is bad design. Sigh.

Speaking of type…

I’ve completely overhauled my old termanal script that analyzes fixed-width fonts for their suitability for coding (vertical alignment of characters commonly used together in code, common width for math operators, precise metrics, and full metadata), and it now generates JSON output for all the fonts you feed it, allowing me to generate comparison tables for my whole collection, as a technical companion to programmingfonts.org.

All of this is being done by calling the tx and ttx tools from the Adobe Font Development Kit for Opentype (AFDKO). With the right options, they can export pretty much all the usable data from a font, including the actual glyph outlines.

This gave me an idea for calculating something termanal doesn’t do: estimate the color of the font. That is, how thicc are the glyphs, and therefore how dark does a line of text look.

  1. ttx exports selected glyphs from a font as an SVG font.
  2. I thinly wrap that into a complete SVG file that prints each glyph in a known location at the same (large) size.
  3. inkscape renders each glyph to individual PNG files.
  4. magick counts the number of black pixels.
  5. divide by set-width * (ascent - descent)
  6. average the results over N typical glyphs.
  7. profit!

And it even worked on the first try, more or less, although the launch overhead for inkscape seems to dominate, producing the odd result that it takes twice as long to render everything at 10% of the size, while 50% is twice as fast. I’m going to tinker with batching things up so I can call inkscape and magick only once and have them work from tempfiles instead of directly piping from one to the other. This might involve switching it to Python, since all the components appear to have some degree of API support.

I named it coloranal, of course.

Anyway, have some cheesecake:

Clarification:

Inkscape doesn't actually support SVG fonts (in fact it silently ignores them, hence the "more or less" for my first try), but the "d" attribute of a glyph is identical to the "d" attribute of a path. They're just vertically flipped. Which, honestly, doesn't matter for this use. 😁

<glyph unicode="y" horiz-adv-x="600" d="M131,-217C241,-217 300,-140 338,-42l213,552l-78,0l-106,-287C350,177 332,124 315,76l-4,0C291,125 270,178 251,223l-119,287l-83,0l227,-512l-14,-36C236,-105 196,-149 128,-149C113,-149 97,-146 84,-142l-17,-65C84,-213 108,-217 131,-217z"/>
<path id="y" d="M131,-217C241,-217 300,-140 338,-42l213,552l-78,0l-106,-287C350,177 332,124 315,76l-4,0C291,125 270,178 251,223l-119,287l-83,0l227,-512l-14,-36C236,-105 196,-149 128,-149C113,-149 97,-146 84,-142l-17,-65C84,-213 108,-217 131,-217z" transform="scale(1,-1)"/>

2.5D...


Finally, a reason for the Chubby Elf series to exist:

So Ai Shinozaki can cosplay her (site not safe for work or Javascript):

…without the “chubby” part…

Drinks I won’t buy again…

Before I bought my SodaStream, I was a regular consumer of the Sparkling Ice pink grapefruit drink. It was always a hassle to find an adequate supply in stock locally, largely due to the same problem Snapple has: shipping mixed cases to push flavors that don’t sell.

Recently, they released a bunch of branded Starburst flavors. I bought a few, and I regret doing so, because they tasted like melted creamsicles.

Accessibility Lite

So I sent feedback to the author of Typeface, and he already had a beta update that increases contrast. Good: I can now read the nearly-black-on-nearly-white tinyfonts in the sidebar, and usually tell the difference between the dark-gray inactive tiny dot and the blue active tiny dot. Not so good: the nearly-black not-in-font placeholder characters are basically impossible to distinguish from the black preview characters. So, baby steps.

He also asked what I meant about wanting more detailed views, so I fired up FEX for some screenshots that demonstrate the difference between visualizing fonts and managing them. We’ll see what comes out of that.

File under amusing that while the normal state of font activation is two slightly-different tiny dots, hovering the mouse over the dot changes it to a larger distinctive icon showing the state you can toggle it to (minus-sign if it’s currently active, sunburst if it’s currently inactive). There’s also a padlock to indicate system fonts that can’t be deactivated, which you almost never want to see, and can filter out by the obvious method of Option-Right-Clicking on the “Font Book” collection in the sidebar and selecting “Add inverse to filters” (or manually typing the equally-obvious “#!//font-book” in the search bar).

Slow week in progress


No anime ’til Thursday

Red Cat, Cosplay, Furless, Dungeon People, Chibis, and Cheer are not pre-empted by Olympics coverage. Also Elseworld Fail, for those still watching the tale of the catgirl and her novelist.

Good tree, bad tree

The little tree that was underneath the huge (~10-inch diameter, ~50 feet long) fallen branch survived! My arborist and his crew showed up Monday afternoon and cleaned things up.

The bad news is that they have to come back and take out another branch on the big tree (as big or bigger) before it falls toward my house. It probably wouldn’t hit the house, but it would do serious damage to my landscaping, and possibly also to the patio.

I’m having him evaluate the health of all the trees on the side lot, just in case.

The downside of ghost kitchens…

There’s a restaurant I can order bao delivered from, and they’re pretty good. They also sell several flavors of rice bowl, pan-fried potstickers, and steamed dumplings; those are not so good. TL/DR: they’re a ghost kitchen hosted in an Italian restaurant, so pretty much all they know about Chinese food is how to warm it up; this is sufficient for bao shipped to them frozen, but the one time I ordered the “pan-fried” potstickers, they weren’t even steamed well.

(now, ghost kittens, on the other hand…)

I searched for “belfast”, but…

…Google mostly returned keyword matches on ‘northern’ and/or ‘ireland’ instead. This was not useful.

Meanwhile, in a nearby PDF file…

I added a few more boxes to the prototype script, recreating the classic look. Since I support every paper size known to Adobe, I stress-tested the scaling by rendering it on 4x6 photo paper. Credit-card size was a bit too far; the body font ended up at 1.25pt. 😁

Since Platypus isn’t useful to me, I have to write all the line-wrapping and text layout myself, and the only real wrinkle there is ensuring I correctly handle double-width CJK characters when wrapping; I’m not concerned about the language-specific issues of breaking words and strings; this is classic “wrap at column N no matter what” style.

For this particular application, I don’t think I need the really-precise metrics that I developed for PDF::Cairo, which involved pre-rendering test strings in each font and seeing the height and width of what actually gets painted onto the page, but if I do more with Reportlab, I’ll probably need to tinker with reportlab.graphics.renderPM (Cairo) and Pillow’s getbbox().

Random roundup


Yup, that ought to do it

In response to the big hacked-password dump, noted security site The Daily Mail suggested:

“Users can check if their password was leaked by visiting the Cybernews site and entering their password.”

Wow, they really packed the suck in

Even if I had an AppleTV+ account, I would not be watching the new Time Bandits series.

Making friends fast…

The cover for the upcoming Molesting Magical Girls Fan Book (Super Gushing Version) has been announced. Eyecatching, innit?

RADIUS considered harmful

Another day, another reason to be glad I’m not in IT any more: all versions of every RADIUS server vulnerable.

“🎶 Hail to the chief, he’s the best of all the surgeons…”

(I’d link directly to the classical reference, but I can’t find that scene on Youtube)

It is claimed that the Marine Corps Band was ordered to play a special theme song whenever Dr. Jill Biden appeared, an order rescinded when someone actually did journalism to it. I don’t understand why they had to write an original piece when this was available:

Inside The Tentacle Cave

Amazon’s been recommending this hentai manga to me recently, and I checked out the previews. It’s a fantasy-world harem where the harem lord is a non-sentient slime that absorbs skills and powers by eating male adventurers so that it can improve its ability to forcibly satisfy female adventurers and impregnate them with little slimes. Written with all the wit and anatomical expertise of a fourteen-year-old boy who’s never touched a tit.

Rimuru’s endless board meetings are suddenly looking a lot better.

Bits and pieces


The Lasagna Paradox

My mom loves spices but her stomach does not, so when I made lasagna yesterday, I tried to tone it down significantly, cutting the spices by half and replacing the Italian sausage with ground beef [(velveting 1, 2] the meat to improve the texture). Hopefully it mellowed overnight, because when I tried it fresh out of the oven, it was still inexplicably quite zippy. Anyway, I hope she can eat it today. 😁

[Update: it still had a spicy finish to it, so I went back to the original cookbook, Tough Guys Don't Dice by the late James A. Thorson, and discovered that he handwaved the quantities of everything, and the precise values in my recipe had been invented over time as my gaming group tinkered with what fit into a standard Pyrex lasagna pan. I'm going back to the drawing board with this one, and definitely including the velveted ground beef option, which had amazing texture.]

Charming Sharra

Or, The Adventures of Karen of Ethshar. This is the first time I’ve ever just stopped reading one of Lawrence Watt-Evans’ fantasy novels, and it is entirely due to the main character being annoying and stupid. I simply don’t want to spend time with her as she demands to see life’s manager until (hopefully) learning her lesson and growing into a better person.

Hey, look, Bing Copilot worked for me!

I had a very specific problem that was poorly served by the way Google and other search engines chop up your search string, normalize the words, and then match them to wildly irrelevant results. And ads.

What I was looking for was a very specific type of fruitcake that my mother makes, and that she used to receive as a Christmas gift from her aunt decades ago. The first way it differs from the most common variety is by not being a cake; the small amount of flour is present only to coat the fruit and nuts so that they stick together when the only other major ingredient is added: sweetened condensed milk.

I’m pretty good at Google incantations, but because it just breaks language into keywords, it can’t tell the difference between recipes that contain a few tablespoons of flour and ones that contain several cups. The thing LLMs do well, on the other hand, is retain the connection between adjacent words, so I could specify “no more than 1/2 cup of flour” and have it correctly limit the search results.

The first pass included recipes that contained eggs and sugar, so I added “and no eggs”, and ended up with four “Texas” fruitcakes that aren’t what you’ll get if you buy a “Texas fruitcake”:

  1. Stella’s Texas Fruitcake
  2. Texas Fruit Cake
  3. Homesick Texan’s Pecan Date Fruitcake
  4. Never-Fail Fruit Cake

If I asked Copilot for more recipes like these, it just repeated the same list, and I’m willing to believe that there just aren’t a lot out there. The good news is that it didn’t insist on padding out the results with false positives.

Fun fact: with no actual “cake” involved, the ingredients are self-preserving, so it can’t really go bad (which is the original point of the heavily-sweetened alcoholic English fruitcake), but it should still be baked right away. We learned that the hard way this year, when, while stirring the pounds of fruit and nuts together with the cans of condensed milk, Mom got interupted by visitors, and had to cover up the bowl and set it out in the passively-refrigerated garage. One thing led to another, and it was three days before she fetched it back inside to portion into bread pans and bake. And it was a rock, firmly stuck to the mixing bowl. It took several hours of warmth and prying to break it up, and then restoring the original texture required some more condensed milk.

DanMemo ends (outside Japan)

The phone/tablet gacha game based on Is It Okay To Pick Up Girls In A Dungeon is finally ending service in February. I sank a fair amount of time into it, and bought enough tokens to compensate the developers for producing a decent game with all the voice actors from the anime and original stories by the author. It gets old after a while unless you’re into throwing money at it, but it did have some nice cheesecake of the vast female cast, and several of the original songs are pretty good.

It sould be nice if they followed up the end-of-service announcement with a client update that bumped the point recovery and free gacha rates, so people could spend the next two months exploring character stories they could never unlock before. Probably won’t happen, though; they have another game now. Hopefully there’s an archive of ripped art and music out there somewhere.

(the Japanese servers are staying up, because apparently there’s a very active “PvP” community that still spends money on gacha pulls)

Glocks at half-mast


JMB/GG meetup

Gaston Glock has died, after a very full and successful life. I picture him meeting up with John Moses Browning in the afterlife and getting along just fine. Unlike many of their fans in this life. 😁

Purah Explains It All

Maplestar has promised a sequel to that Purah video by the end of the year. Clock’s ticking… [Update: January 4th!]

McPharmacist & Waifu & Sister, Too

The new trailer for season two makes it clear that Ruti loves Red in a completely inappropriate way. So whatever happens with the new hero-dick, they’ve got that going for them.

(wrong waifu, but I doubt I’ll get complaints…)

Merry Christmas


Hope everyone’s happy, healthy, stuffed, and loaded with goodies. I’m thinking next year I should make myself an Ammo Advent Calendar. Other than just stacking Federal and Remington boxes in a tree shape, I mean.

Ladies Served Fresh Daily

(obscure reference)

For women-women who might have found a Glock under the tree, my local members-only range has an upcoming confidence-builder:

Ladies Only ‘Ballistic Therapy’

This does not require a membership.

Rerun Returns

Second season announced. No details about the story beyond what was in the last episode.

Important Pixiv note

If your “discovery” page has become cluttered with unwanted content, it’s likely because their algorithm is prioritizing viewed images over favorited. In other words, if you clicked on a thumbnail and it turned out to be something you didn’t like or weren’t interested in (or had such content below the fold), it’s still being treated as something to show you more of.

You can clear it from the profile menu under “Browsing history”. Note that doing so doesn’t cause your recommendations to refresh immediately.

How the sausage espresso is made

James Hoffmann takes a deep dive into how Nespresso gets away with it, extracting info about how their pods extract coffee, and why third-party and refillable pods aren’t as good, no matter what beans you put into them.

🎶 One of these things is not like the other...


Dear Amazon, how much were you paid to recommend this?

(classical reference)

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