Fun

Random Thoughts, Way-Behind-On-Cheesecake Edition


False Positives

Dinner last night was a quick stir-fry of onions, bell peppers, Kevin’s Korean BBQ-Style Chicken (sous-vide chicken breast with nearly-sugar-free BBQ sauce), and leftover white rice. As I added the rice and stirred it in, my Apple Watch pinged me, saying that it had detected a workout in progress and wanted to know what type. Sadly, “carbio” wasn’t one of the options.

(I don’t give a damn about Kevin’s products being natural, gluten-free, paleo, minimally processed, no artificial ingredients, with coconut aminos; I care that it’s fully cooked, vacuum packed, low-sugar, available at Costco, and fairly tasty, with enough sauce to coat the veggies and the rice)

False Narratives

Highly-accurate Corona-chan tests will hit the market faster if they don’t have to be highly accurate. Where “highly accurate” is defined as only 20% false negatives, with no mention of false positives…

Reminder: scary stories about rising Corona-chan cases are actually just reporting confirmed positive tests. Not deaths, not ICU admissions, not hospitalizations, not serious illnesses, not necessarily even a bad case of the sniffles. You can see this in the daily reports for my county, where out of the 3,726 confirmed positive tests, there have been only 245 hospitalizations.

Speaking of metadata…

This is because HarperCollins still owns Last Call and is keeping only the Kindle edition in print to keep the rights from reverting to the author, who sold the other two to Baen, which apparently doesn’t have clear ebook rights yet.

Earthquake Weather, by the way, is the single least satisfying Tim Powers novel I’ve read, although this year’s Forced Perspectives comes a close second, and for the same reason: they’re sequels. Last Call and Expiration Date work perfectly fine as standalone novels, but merging them together in EW just didn’t work for me. I don’t want to know “what happens next” at the end of a Powers novel, I want to know “what world’s next”.

Lots of nibbles, not much biting

I never expected my job search to take more than a few weeks, but that’s because I never expected the jaw-dropping imbecility of the political response to the ongoing clusterfuck that is 2020. Silicon Valley HR groups are swamped with applications from laid-off techfolk who don’t have the financial reserves I do and are desperate for work. One thing I’ve noticed in particular is the high percentage of people with Master’s (can we still call it that?) degrees applying for entry-level positions.

I’ve turned down several contract offers, not just because they’re contracts, but because once the lockdowns end, they all revert to “commute to downtown San Francisco”, something I wouldn’t do even if it weren’t a two-hour drive away. Shit-stained sidewalks, violently crazy street people, and unsafe parking garages just don’t hold much appeal for me.

I had a promising call yesterday for an SRE/sysadmin position with a decent company in Mountain View. There’s some 24/7 support involved, but that’s fine if it’s a real rotation with a team, not the 13 years of non-stop on-call that I had at Ooma. Bonus is that they found me; it’s not something that turned up in my LinkedIn searches.

(sometime, there will be a lengthy rant about what a dumpster-fire LinkedIn is)

Afternoon Update

Yesterday’s promising recruiting call was followed up by today’s “let’s schedule the interviews” call. I was standing in Costco wearing a mask at the time, so conversation was a bit difficult, but we exchanged email after I got home.

Random Thoughts, Delay-Of-Gain Edition


Check, please!

My last dentist appointment included an item that wasn’t covered by my insurance, and which set me back $500. No problem, says I, I’ll transfer the money from my Health Savings Account. I log in to the credit union, initiate a transfer, and the only method they offer is mailing a live check. Which arrives over a week later, from South Dakota. Unlabeled, resembling common junk mail.

I used to have a debit card for this account that let me just handle this sort of expense directly, but when it expired, they didn’t send out a new one. I think it originally came with a batch of checks, but that was so many years ago that they didn’t turn up when I cleaned my office. I must have put them somewhere “safe”…

Dear Adobe,

Did you just move the Flash team over to Photoshop support, or do all your developers like arbitrary code execution security holes?

Immune To Parody, I Became An Isekai Novel

I was mostly kidding when I dummied up a cover for an isekai series. Then Pete recently linked to a scanlated manga about a loser who gets transported into another world as a walking cheat-code who assembles a harem of eager slave girls. His adventuring party and home entertainment system eventually includes Busty Dog Girl, Cute Dwarf Girl, Cuddly Cat Girl, Giant-Breasted Dragon Girl, and Fallen Noble Elf Girl.

Skimming the translated web-novels, what struck me most is that Our Hero never faces any conflict or setbacks. The dungeon battles that take up most of the text are just the details of the party’s inevitable and painless victory, the author doesn’t write sex scenes, and the world-building is generic and bland.

Engadget has started slipping frequent “sponsored” content in between their articles (1:5 ratio), visually distinct and achingly stupid. This was the first one I noticed:

Pretty sure I don’t need an attorney in Quincy, because Quincy is a 300-mile drive from my house. I had to look it up, because I’ve never been anywhere near the Plumas National Forest.

The usual geolocation failure for my IP block puts me somewhere near Berkeley, so these bottom-feeders aren’t even using second-rate data sources.

Dear Publishers

Check your metadata when releasing books on Amazon:

Apple Knows Best

The recent iOS update apparently silently changed update settings. Some of the folks in this discussion seem surprised, but I’ve been double-checking settings after every update for years, because they pull stunts like this all the time. Especially when it comes to enabling iCloud “features”.

Goodbye Outback

The Outback Steakhouse in my town has closed for good, thanks to Benito Newsom’s arbitrary re-closing of restaurants. I saw them painting over the sign yesterday when I was driving to the post office.

Random Thoughts, Kemeko-Hates-You Edition


Oh, FFS

(top-updating for once…)

Benito Newsom has abruptly re-closed restaurants and churches statewide. Pull quote:

Newsom has compared his strategy of opening and closing businesses as a “dimmer switch”

This is true, but not in the way he thinks.

Damn You, Corona-chan!

I pre-ordered a Pinky Funko Pop. It was supposed to arrive Sunday. When it didn’t, I checked my orders, and found the release date had silently been pushed back to March 15, 2021. Drat. At least Peace Talks should be here tomorrow (physically; I won’t pay $15 for a DRM-infested Kindle edition).

Porch Cat Gets The Hose

Well, squirt bottle, anyway. Less than an hour after receiving a dish full of premium wet cat food last night, he came around to the back of the house and tried to get attention by jumping up on the screen door and hanging there by his claws. He did not receive the form of attention he craved.

Pine Trees Matter?

Is it just me, or does this SMBC strip read like a metaphor for something?

Video hunt…

N years ago, I found copies of the Hello!Project side project Folk Songs, featuring the H!P girls singing an oddball mix of songs that their starpimp grew up with; on volume 4, there’s a song called “Kemeko no Uta” from 1968 (live performance by The Darts). It chronicles the all-too-familiar tale of boy meets girl, boy falls for girl, girl brutally cuts boy down to size. This gains something when sung by a girl group rather than the original boy band, especially since the key lines are delivered by Kei Yasuda, whose nickname in H!P was Kemeko.

This song was a hit when I brought the lyrics to my mostly-female group reading class at Foothill. At the time, I had a different video with the original band on a college campus, but when I went looking for it this morning, instead I found this, which includes various clips where the song was used, including one featuring Yuko Nakazawa, Mari Yaguchi, and of course Kei Yasuda (don’t ask about the costumes; the skits on Hello!Morning were at best “goofy”).

Old games are old

I finally broke down and downloaded OpenEmu to revisit some ancient console games, as well as try out earlier generations of things like Zelda and Pokémon. I actually have two DS Lites and an Atari Lynx, but I used the DS primarily for Japanese study, and I haven’t fired up the Lynx in decades. Indeed, the last time it got serious use was back in the early Nineties, when one of my co-workers wore out the power connector and did a half-assed soldering job to get it working again. As far as I know, it still works.

Short take: nostalgia isn’t what it used to be. I think I’ll stick with modern games and remakes that incorporate significant gameplay improvements.

Speaking of Pokémon…

I’ve significantly improved my Cram-o-matic recipe generator. Mostly I wanted to allow all reasonably-common ingredients while still excluding rare and unique ones. As a side-effect, it runs a lot faster.

The previous version focused on excluding uncraftable ingredients, which excluded a lot of common drops. I had added back several common types, but there were enough one-offs that writing additional exceptions was more trouble than it was worth, so I took the time to mark up the data files with availability. Basically, if the only way to replace it is to visit the vendor in Stow-on-Side every day until you get lucky, it’s rare (8 items), and if the only way to replace it is “play the entire game again on another user profile”, it’s unique (25 items).

I also gathered buy/sell prices for most items, for rating recipes by whether the result sells for more than the ingredients. At the moment, TR88 is the winner, with several ways to make it out of free drops and/or berries you can buy in bulk. Next time I get bored, I’ll add a “profitable-only” option to the script. 😁

Random Thoughts, Time Machine edition


Dear Amazon,

You know the drill:

Hmmm, have they done an isekai series about ending up in another world as a monster-girl samurai psychologist yet?

Fun Mac Fact

If a Time Machine backup is interrupted for any reason, it may leave behind an unkillable backupd process. If this happens, even automatic local snapshots will stop working until you reboot. And by “reboot” I mean power-cycle, because MacOS doesn’t know what to do about an unkillable system process; it kills off everything it can and then just sits there, helpless.

Part of the problem is that the menubar indicator that’s supposed to show when a backup is active does not include the “preparing” or “stopping” stages, so if you were to, say, close your laptop lid during those stages, or change your network configuration by starting a VPN connection or switching from wired to wireless, you could trigger the problem.

For more fun, if your Time Machine backups are on a NAS, they’re stored in a disk image, which needs to be fscked periodically (part of the lengthy “verifying” stage), and must be fscked after any error. And that can take hours. And if it fails, the only solution Apple offers is to destroy your entire backup history and start over, potentially leaving you with no backups at all until the first new one completes, which, again, takes hours, especially with the default “run really slow in the background” setting enabled.

Pro tip:

sudo sysctl debug.lowpri_throttle_enabled=0

There are instructions (1, 2, but none from Apple) for how to manually fsck a TM image (possibly multiple times) and correctly mark it as usable again, a process that has the potential to take days.

And that’s why I keep two separate SuperDuper backups of my laptop in addition to the two separate TM backup drives (the “belt, suspenders, bungee cords, and super-glue” approach). Time Machine is far too fragile to rely on for anything but quick single-file restores, although it can be useful for migrating to replacement hardware that won’t boot a cloned disk.

In the standard “you’re holding it wrong” Apple way, you can’t just turn on automatic local snapshots; you have to have at least one external volume configured for automatic TM backups. In fact, the manpage seems to claim that you can’t make local snapshots at all unless you’ve got at least one external TM backup. This suggests that the optimum strategy is to use SuperDuper every day to have bootable full backups, set up TM without automatic backups, and then set up a cron job to create and manage local snapshots. And manually kick off TM backups every week or so when you’re sure you won’t need to use your computer for a few hours.

What Would Maple Do?


I don’t want to get hurt…

…so I devoured all of Bofuri in one day (as one should), and then was disappointed to discover that the only merch on Amazon US was cheesy knockoff crap printed in China (blank notebooks and wall-hangings printed with swiped artwork). Not much fan-art on Pixiv, either, and very little of it even reasonably well-done.

In fact, I didn’t see anything on Amazon Japan, either, just the novels, manga, and anime.

So I read the 276 available fan-translated bite-sized chapters of the light novels. The first two translators who took a stab at it weren’t very good at assembling English prose, so I don’t know if they were working from the original web-novels or the published books. The third, still-active translator has taken it way ahead of the anime; everyone’s just finished up exploring the 7th level of the game and acquired their new (spoilers). Naturally, Maple recently gained an absurd new power by eating something.

The game developers seem to have embraced the idea that she’s the final boss, and just try to make it possible for other players to eventually defeat her. They do at least manage to come up with content (including bosses) that she can’t solo.

It’s an interesting series that exploits a lot of common tropes without falling into the usual patterns. There’s no villain, no harem, no angst, no world-saving, no jerks ganking noobs. Even the tentacles are benign. There’s just Maple warping the universe through her determination to have fun.

Some things never change…

Amazon promises Tuesday delivery, hands off package to local post office at 1 AM Tuesday, post office claims it went out on a truck at 7 AM and was delivered at 7:30 PM, package not in locked mailbox at 8 PM. Package spontaneously appears in locked mailbox early Wednesday morning.

Job talking

Had a good chat with the former co-worker who’s building up an SRE team. Looking forward to talking to some of his people. Downside: the current opening is junior for me, but he expects to have senior positions in August, and if I’ve already interviewed, the process should be shorter.

Oh, a title goes here?


Weighty decisions

Rogue Fitness got another shipment of kettlebells in, and I grabbed a 40-kilo one before they ran out. Hopefully it won’t be Brickmuppet hefting my 88 pounds of cast iron onto a UPS truck…

Cram-o-matic

The most profitable crafting recipe I’ve found in the Pokemon DLC is:

1 Cheri Berry + 3 Dynamax Candy

The berries can either be collected in small quantities for free or purchased in large quantities for 80 each. Dynamax Candy is the reward for doing raids, and can’t be sold, so you end up hitting the inventory maximum (999) pretty quickly. To add insult to injury, a recent event significantly increased the amount awarded after most raids. The recipe produces TR88 (“Heat Crash”), worth 3000.

There are some profitable recipes that can be made with just berries, but not berries you can buy bulk, so you’re limited by how many you’ve found by shaking trees once a day.

The most useful recipe is a chain:

1 Iapapa Berry + 3 Dynamax Candy = Wide Lens
1 Wide Lens + 3 Rare Candy = Bottle Cap
Bottle Cap + (anything) + 2 Bottle Cap = Gold Bottle Cap

This is quite expensive, since Rare Candy sells for 5000, but it’s another thing you get for free from raids, so you can build up quite a stack. Bottle Caps are how you optimize the stats for the pokemon in your party; Gold Bottle Caps max out the potential of all six stats at once. You can buy them with a currency that’s earned at the battle tower, but only if you spend a lot of time grinding there. Much easier to just make a few when you’re building a new party.

The best team for catching free-range organic Dittos is a Feebas with only non-attack moves (at least two; it’s one of the few mons that can actually have all four moves be useless) and a Gallade with False Swipe, Hypnosis, Thunder Wave, and Sunny Day. Start by throwing a Quick Ball. If that doesn’t work, swap in the Gallade and use False Swipe, then throw a Repeat Ball. If that doesn’t work, use Hypnosis or Thunder Wave to sleep/paralyze it, and then throw another Repeat Ball. Sunny Day is useful if the weather would damage the Ditto after you’ve reduced it to a single hit point, but so far I haven’t seen that on the new Ditto island in the DLC.

This is a much better place to catch them than the Lake Of Outrage, because there aren’t any nuisance spawns in the area that will chase you around, and the Ditto spawn rate is much higher. The raid den also spawns them more frequently than the only one in the base game, although I haven’t checked to see if they’ve nailed down the rates for the new DLC dens.

Unrelated

I’ve run out of Stargate: SG-1 episodes I want to rewatch while on the elliptical. I’ve found it difficult to rewatch the Atlantis spin-off, so I need to find something new/old that will give me ~45 minutes of mild entertainment and is streaming on Amazon Prime Video, Starz, BritBox, Hulu, Netflix, Crunchyroll, HiDive, or dLibrary Japan. Hmmm, perhaps it’s time to cancel a few of those…

First up: Bodacious Space Pirates. Two episodes at a time works well for this series.

Random Thoughts, Explosion Day edition


Brought to you by Megumin, the patron saint of Home Fireworks Displays:

Gosh, how did this get detected as spam?

Received: from redacted.clientshostname.com (unknown [185.180.197.116])
Received: from [185.144.31.1] (localhost [IPv6:::1])
From: “PROF. DAVID HAMILTON” *redacted*@easynet.es
Reply-To: redacted@sol.dk
Message-Id: <redacted​@​redacted.clientshostname​.com>
Subject: ABOUT SUSUMU

So that’s a Spanish from address, a German reply-to address, and a Japanese word in the subject, sent from an IP address in Russia, routed through another in Netherlands whose domain is registered to a company in Cyprus, then handed off to pobox.com (a US/Australian company who will apparently accept anything from anybody). The body of the message tells you that The Good Professor is a retired British lawyer, so this international effort is clearly on the up-and-up.

Oh, and it was sent to my cpan.org email address.

Best part?

I am searching for any family member of my late client Mr. Susumu who has the same family surname with you

Yeah, I’d fall for that in a heartbeat. If my “family surname” was Susumu, maybe.

The address block at the end of the message looks entirely authentic as well.

Prof. David Hamilton (RETIRED)
52 Denedin House, Manwood
street,Noth Woolwich,London E162LB
United Kingdom.

No. Just… no.

My absolute loyalty to the Pepsi brand dates back to the day I won $500 in the Pepsi Spirit bottle-cap contest, but despite the amount of merch I own, I cannot imagine purchasing this product for any price.

The only product less attractive than this is the hand-made soy candle in an old Pepsi can with “custom scent” ($15 plus $8 shipping).

(Technically it was a joint effort. My sister and I collected everything but the rare “R”, and one day when my brother was home on leave, he drove us to school, buying a Mountain Dew on the way and flicking the bottle cap into the back of the car. I found it a week later and it was the “R”, so we split it three ways)

In home-baking news

My latest order from King Arthur Flour arrived, containing 9 pounds of durum flour and a pound of SAF Red instant yeast. And since several of my recent grocery-store trips have resulted in the discovery of KAF AP and bread flour on the shelves, and Costco had 2-pound bricks of Red Star active dry yeast, I’m pretty darn stocked in the bread department for quite a while. I’ve got a loaf of durum sesame bread cooling on the counter right now, and a nice selection of Boar’s Head lunch meats to combine it with.

And while updating my LinkedIn profile for the first time in fifteen years, I stumbled across a job opening that I should have no difficulty demonstrating my qualifications for, given that the Director of Engineering who posted it is someone I trained and shared an office with. More on that after I talk to him Monday.

KAF Durum Sesame Bread (2-pound loaf)

This is not the recipe available on their web site, but the one on the back of the flour bag (metric weights are the amounts that I use, checking the dough consistency when the bread machine’s mix-in beep goes off):

1 1/2 to 1 3/4 cups water, 105 to 110 degree (355 grams)
1 tbsp sugar (12 grams)
2 tsp salt (12 grams)
2 1/2 cups durum flour (310 grams)
1 to 1 1/2 cups all-purpose flour (180 grams)
2 tsp instant yeast (6 grams)

1 tbsp sesame seeds (9 grams) – topping

  1. Combine everything but the sesame seeds, knead, let rise until doubled in size. (I use the dough cycle on my bread machine)

  2. Shape into a smooth 12-inch torpedo, brush with water, sprinkle with sesame seeds and press them lightly into the dough. (I load it into my KAF small pullman pan)

  3. Let rise until almost doubled, slash in 3 places before baking. (pullman: let it rise within 1/2-inch of the top, put on the lid)

  4. Bake in a preheated 425°F oven for 10 minutes, lower heat to 400°F and bake 20-25 minutes more. (pullman: 25 minutes at 350°F, remove the lid and let it go another 8-10 minutes, pulling it out when the center reads 190°F)

  5. Cool on a wire rack.

I like the pullman pan for this, because it makes a very sturdy sandwich loaf that can be sliced quite thin, toasted, and filled with plenty of chicken salad or sliced lunchmeat.

Power Cages, you say?


Dear Amazon,

Which of the items in this picture do not belong in the sub-category Power Cages of the category Strength Training Equipment?

(and this is from page 2 of the results; I don’t want to know what page 11 has on it…)

Show me on this doll…

John Bolton called his new book “The room where it happened”, which sounds remarkably like a sordid tale of child abuse. Which from the reviews, it apparently is.

Cram-O-Matic Recipes

Serebii has a page up with the crafting rules for the Isle of Armor DLC. I got bored, scraped the page into CSV files, and wrote a Perl script to generate all the reasonable recipes.

The whole thing ended up just over 300 lines of code, and that includes all the HTML boilerplate to generate a responsive static site. I simplified the logic by using the DBD::CSV CPAN module that allows querying a directory full of CSV files with a pretty full SQL implementation (including left outer join, which came in handy for eliminating recipes that required uncraftable ingredients), caching in memory for reasonable efficiency. If I wanted to run it frequently, it would be a few seconds work to use SQLite’s built-in CSV import and add a few indexes, but once I got the code working, I only had to run it once. Unless they change things in a future patch, in which case I’ll run it again.

(the most obvious optimization I could add is collapsing adjacent sets of recipes that share several ingredients; they’re separate right now because they’re the result of different point combinations (e.g. 10+2+2+2 and 10+2+2+4 produce the same result, but the fourth ingredient is different)) Done! And I also reduced the output by limiting it to recipes with at least three identical ingredients.

By the way, if you want to hack CSV files this way from the command line, take a look at q, which basically builds an in-memory SQLite DB on the fly as you refer to your data files, with the option of saving it to disk when you’re done. It defaults to assuming headerless space-separated files, so you need the -H -d, options to read CSV. Work is in progress to convert it to a standard Python library that could be used the way I’m using DBD::CSV.

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