Fifty Shades Of Hugo

Update Your Firmware, HP edition

Why, yes, the increasing complexity of computer firmware has created a new market in firmware analysis, as evidenced by Binarly finds 16 serious vulnerability in HP firmware. I’m not the least bit surprised, since this sort of low-level code is generally maintained by Some Cranky Old Guy who isn’t given nearly enough resources or time, I just want to know if the company’s name is pronounced bi-gnarly, bin-arly, or perhaps an Irish-ish b’narly.

Realist Hero, episode 23

Note to Our Producers: when Our Realist Hero casually says that he wiped out gangs and illegal drugs while cleaning up the slums, it does not count as lampshading to have another character say “did he really say he did that?” and then move on. You’re just pointing out how ludicrous it is for him to announce that his otherworldly book-knowledge has handwaved away a serious problem.

Also, “I’ll skip the explanation because it’s complicated”?!? Yeah, that’s a first for this talky series. At least we got to check in with Our Bold Raccoon Girl and the man she’s raising.

(picture is unrelated except for the presence of underrim glasses…)

Kuroitsu, episode 9

In which The Days Are Just Packed, and We Thank You For Your Service. Seriously, there’s so much going on in this one that I won’t even try to summarize, and the only missing member of the extended cast is Our Part-Time Hero.

Screencaps from last week’s episode, courtesy of Tenka Seiha’s usual downer of a review.

Breezy storytelling…

I checked in on WTF? I turned into an OP loli wizard! this week, and it starts with a female character shoving her head up Our Loli-Wizard’s miniskirt and asking why she doesn’t wear panties. Later, she accompanies a party of soldiers on the road, walking on air above them to scout, and the writers completely forgot about her going commando, even when the soldiers are looking up to talk to her. They could have at least tossed in a shot of one guy in the back enjoying the view. And, yes, she continues to face no challenge to her unparalleled OP-ness.

Still later, she travels to a magical forest while following the trail of a missing ally, only to be bullied by mind-reading dryads who pick up her desperate need to pee and demand she fertilize the plants with her high-mana urine. (this is apparently the second time her tiny bladder has been a plot point)

I… won’t be checking on it again.

(unrelated loli is unrelated)

Meanwhile, on Amazon,

The top two ebooks recommended to me right now are Instead of becoming a hero, I’ve reincarnated as a billionaire and Reincarnated as a dragon hatchling. For the hoard!

The top three electronics devices recommended are a pseudo-Switch, a psuedo-Amiga, and a pseudo-C64.

Apple AI at its finest…

…also Apple QA.

I went to rip the soundtrack CD from Interspecies Reviewers, after using up my Amazon store credit to overcome the painful price. My Macbook simply could not successfully read the disc without erroring out after one or two tracks (with several completely different USB CD/DVD/Bluray players), but it could load album art, and it chose… Fifty Shades of Gray.

All three players mounted it successfully on my HP Aero 13, and gave me no trouble ripping the disc.

Dynamic Static Page Error

I accidentally broke the page structure here for a while. I had set a few quotes to expire to take them out of the top rotation, but hadn’t tested it against the script that randomizes them.

Back in The Before Times of 2019, I replaced my original scheme for random top quotes with a new data-driven one that ran faster. In my makefile for updating the blog, I added a script that groveled over the file system to find Markdown files in the quotes directory, shuffled their order, and added the filenames to a TOML array, so that their contents could be inserted with Hugo’s page-lookup function. But that just meant that each site build had different quotes, that would remain the same for hours or days.

To make them update more frequently than that, I added very specific CSS around the top-quote section, so that a fraction-of-a-second server-side script could pull them out of all ~540 index pages, shuffle them, and put them back in a new order. The result is that every quote gets used at least once, the subset that gets used a second time changes every build, and the quote on each index page changes every three minutes.

This works great until you expire some of the quotes, so that they’re still in the source file system, but don’t get included in the build for the page-lookup function.

Hugo Is Not A Database, but it does include a command to dump a CSV file containing the details of all of your content, which can be parsed to find draft and expired entries:

With Miller:

hugo list all | mlr --csv --headerless-csv-output \
	filter '$expiryDate == "0001-01-01T00:00:00Z" && 
		$draft == "false" && 
		$path =~ "^content/quotes"' \
	then cut -f path | sed -e 's/^content\///' > $TMP

With q:

hugo list all | 
	q -Hd, 'select path from - where 
		expiryDate = "0001-01-01T00:00:00Z" and 
		draft = "false" and 
		path like "content/quotes%"' |
	sed -e 's/^content\///' > $TMP

Takes about a second to extract the list of valid top quotes. And now I don’t have missing quotes corrupting the DOM structure on random index pages, which then end up percolating up to the main page.

…then of course I forgot to turn the cron job back on, so the same quote was on the main page for two days…

On the bright side, the latest release of Hugo renders this site 28% faster. Most users are seeing at least a 20% improvement and some are seeing 50% or more. Which can save minutes or hours for really large sites, but in my case is a still-respectable 5 seconds.

(note that almost every time someone complains on the forums about build time, they’ve designed or borrowed extremely expensive templates filled with lookups and cross-references that explode at scale)

(troubleshooting catgirl maid is unrelated, and probably doesn’t do windows)

More fun with spam…

This one went to my CPAN email address, so apparently my Perl code is very sexy!

From: Evangelist Cynthia
Subject: Sophia been all over me about getting in touch with you

Hi Handsome,

I am online today and was about to close my account since I already got a life partner here on facebook that was when my cousin, Sophia came across your profile as she was actually standing behind me, she has been all over me about getting in touch with you. she said you seems like a man she will like to know better. She lives in the same area as you. She was only here for a job inspection. You don’t need to write back here as I will be deactivating my account on this site soon. This is her direct email: (gmail acct removed)

I hope you get in touch with her and I promise you won’t regret anything. I believe you will thank me later for this.

My warms regards.
Evangelist Cynthia Stout.

The body text assumes this email address is tied to a Facebook account, so they purchased their contact list from the lowest bidder. And I’m not sure if “evangelist” is supposed to be a name, an occupation, or a religious signifier.

The actual sender is a Russian domain, laundered through, so my spam filter is helping me boycott Russian con women!

(picture is unrelated, and I’m not sure I want to know what’s going on here)

Old Man Yells At Cloud

At the Democrat Retreat (which, sadly, does not involve them abandoning the US and fleeing to Cuba), Joe Biden lost his temper because the ice cream was late people were blaming inflation on his administration’s insanely reckless spending.

The ice cream was, in fact, late. The price increases, however, came early.

Comments via Isso

Markdown formatting and simple HTML accepted.

Sometimes you have to double-click to enter text in the form (interaction between Isso and Bootstrap?). Tab is more reliable.