Computers

It is no longer time for piracy


Pirate flags at half-mast

The director of Bodacious Space Pirates (and another show some folks might recognize, Martian Successor Nadesico) has died.

Claude Design hallucinated its own functionality

My sister’s in town, and she had a small graphic-design task she needed to do for what I’d describe as “bullshit corporate reasons”. Not really part of her job, just one more damn thing tossed onto her already-full plate. Her pal ChatGPT (which we now pronounce “chat-jippity” after someone said it that way in one of my meetings a while back) failed hard, and I remembered Anthropic’s recent announcement that Claude Design was A New Thing.

She went off and had a happy little session with it, and then asked for the results. It said they’re in /home/claude/projects/..., which of course doesn’t exist. It gave several sets of instructions on how to open and view the slideshow it created, none of which worked. It pretended to run commands with Claude Code to fire up a local web server, which did not happen. It offered to bundle everything up into a single file for her to download and click on, which to no surprise at this point, did not happen.

We went off to dinner, and when we got back, I took over. She had all the image files it had incorporated into the design, so all we really needed was the HTML/JS slideshow. The first time, it gave us just a stub file, but when we pointed that out, it supplied the complete file. With that, I was able to open Terminal, construct the directory tree it expected, and open the file so she could review the animation.

It looked nice. So, apart from the danger of it relying on the dubiously-secured Claude Code, “win”?

Deskbottom Linux


Next up, CachyOS

CachyOS is another quirky modern distro, and Quirk #1 is that you can’t install at all without an active Internet connection. Apparently the 3 GB on the ISO image is just the “live” environment and an install button, and you need to download everything to make sure it’s fresh.

The catch is that the wifi drivers in the live environment constantly disconnected on the Macbook (not even an Air), so I had to get it onto wired. Except that it has one USB-C port for both power and data, so I had to find one of my old USB hubs with passthrough power and an ethernet port, then go down to the basement, open up the wiring cabinet, and hook up the dining room, since that’s where I was working on this.

Anyway, with the OS installed, wifi still didn’t work, because of the operating system’s precious virginity. You have to google for forum posts that tell you to download a random package from a random web site and run several commands from the (translucent darkmode tinyfonts) terminal window. For the wrong generation of Mac, so figure out what changes to make on your own.

In other words, their purity would be sullied by distributing or downloading any proprietary drivers that could make your hardware functional, or even officially documenting the process of acquiring them. Their install doc gives you a process that might work if you still have MacOS installed on the boot drive. Which I do not; I’d have to reinstall it over the Internet, assuming it’s still up there somewhere on an Apple server.

As much as I did not enjoy the Omarchy Experience, at least it worked out of the box. The second time.

(I don’t want her to punish these devs; Naughty Cosplay Teacher is here to punish me…)

Linux Mint

Good news: a proprietary driver for Macbook wifi is available on the install media.

Bad news: you have to install it by hand, and it’s incompatible with the current kernel, so the automatic “install latest packages” blows chunks at the end. Because that’s not really the correct driver, even though it’s part of the official distribution and works just fine. The most-recommended solution involves tethering the Macbook to your phone via Bluetooth and using apt to install the wireless drivers, which doesn’t work because Bluetooth is on the same unsupported chipset and incompatible driver, and that’s half an hour I won’t get back.

No, what you want is a USB ethernet dongle at install time, as above. The update process will semi-automagically install a Mac-specific version of the Broadcom wireless drivers.

There is no technical reason for these elaborate workarounds; it’s just an ideological purity test.

I’ll let Mint bake for a few days. I don’t actually need this laptop for anything right now, and I’m going to be busy driving my sister around the rest of this week.

Oh, and to no great surprise, sleep doesn’t work properly. It sleeps, but it’s not recognizing all the devices when it wakes. The recommended fix is to diddle the config files so it just turns off the display when you close the lid, and just shut it down when you won’t be using it for a while. This is not a Bad Distro thing, just one of those tiny little problems with desktop Linux that they’ve spent 20+ years trying to fix without success. The recommended fix is to buy a different laptop.

Hypersensitive LLM censorship

I mostly use GenAI to make pictures of pretty girls, which works out pretty well for computer background screens where I can just quickly throw away any with anatomy fails or that otherwise don’t appeal to me.

In order to increase diversity beyond what my large set of dynamic wildcards do, I’ve been doing a lot of targeted LLM enhancements. Some models do better at this than others, and recently I’ve been getting some really nice diversity in the background settings (gallery post coming soon). Tonight I decided to revisit OpenAI’s offline model gpt-oss-20b, and about 3% of the requests were refused with some variation of “I’m sorry, but I can’t comply with that request”.

The request was simply to enhance a prompt, and the prompt consisted of a completely-safe-for-work description of a sexy woman, with randomly generated height, single-word looks, ethnicity, adult age, single-word figure, eyes, ears, nose, chin, jaw, cheeks, forehead, face shape, and makeup; not a single word about boobs, butt, etc. Still, 3% of the time, the mere presence of the word “sexy” triggered a flat refusal. It wasn’t even described in detail in the prompt or system prompt; just including that word sent the AI to the fainting couch.

This is why we can’t have nice things. Oh, well, back to the hacked models!

(related, models are a lot less likely to go into an endless loop if you start the prompt with /no_think; it’s not a universal standard, but many models are based on one that recognizes it, and it turns out that navel-gazing “reasoning” is a very common flaw in LLMs. This happens even in public models, where they get caught up in a loop endlessly questioning the same points over and over; this is why I’ve stopped asking for things like “50 unique Christmas scenes” and just started asking for one scene 50 times)

Back from the dead...


[perhaps coincidentally, my MacBook Air lost its tiny little mind and started killing off running processes, starting with Terminal and Finder, so I couldn’t examine the health of the system and couldn’t restart or force-quit any apps. I had to power-cycle it. It had been up for an entire week! Hope the new Apple CEO hires a QA department…]

So after rebuilding my 11-year-old gaming PC on Ubuntu 25, only to discover that LM Studio wasn’t supported on it, I tried to rebuild it on 22, which failed. Then on 22 Server, which failed. Then on Arch, then Mint, then Windows 10. Fail, fail, fail. Different USB sticks, burned different ways, and even a few DVD installs in there.

[Fun fact: Ubuntu ISO images are not designed for or tested on DVD; they are intended for building virtual machines or burning to USB sticks. This is also true for Windows 10, with the added complication that you have to diddle the bits when copying to USB because it has a file that’s larger than 4 GB on it.]

Annoyed at the litany of failure, I cracked open the case, blew out the dust, pulled out and reseated the memory, graphics card, and SSDs, burned a brand new Ubuntu 25 image onto a brand new USB stick (using Rufus on Windows, which seems to be the most reliable option if you don’t currently have a working Linux box…), and reinstalled with no network connection or optional packages.

This worked, and to my immense surprise, the secondary drive that I’d installed SwarmUI on was still intact, despite the fact that I’d made it the boot drive during several of those failed installs, and I’m quite certain I wiped the partition table at least twice, which means that the installers were just lying about formatting the disks and copying data, sigh.

After discovering the appropriate incantation to make Appimages work, I did some quick testing with LM Studio. No head-to-head performance comparisons, because I had to download Very Small Models in order for the RTX 2060 to be able to run them without offloading to system RAM. Also, it’s only academic curiosity, since I’m replacing the card.

For reference, you need a shim library to get Appimages to work; web searches (with or without AI) mostly suggest installing a version of Fuse that will break the rest of your system, but this works:

chmod +x *.appimage
sudo apt install libfuse2t64

After doing that, however, I discovered the LM Studio appimage crashes at the drop of a hat under Ubuntu 25, so I switched to their command-line-only “llmster” build, which has been running for several hours now.

For amusement, here are the original specs for the old Asus:

  • Intel Core i7-6700 3.4 GHz (Skylake)
  • 16GB DDR4 RAM
  • GTX 980 4GB graphics card
  • 2TB “hybrid” hard disk (8GB SSD cache)
  • 256GB SSD
  • 550-watt power supply

Over the years, I doubled the RAM, upgraded to a GTX 1060 6GB card, and replaced both drives with 1 TB SATA SSDs. Later, I replaced the 1060 with an RTX 2060 6GB, and it was still quite capable at running most games.

Now that I’ve got the silly thing booting again, I swapped in the RTX 5060Ti 16 GB card that I got cheap (er, “cheap”, these days). I was going to install a Corsair power supply as well, but Amazon didn’t deliver it as promised. No weather delay, crashed semi, or other legitimate excuse, they simply didn’t ship it, and said, “meh, maybe tomorrow”.

I wanted a higher-quality, more powerful, eleven-years-younger power supply to make the machine quieter and more reliable. I won’t get the full performance out of the new GPU on this machine, but it’s still faster than the Mac Mini running the exact same LLM.

(the Mini can run much larger models than this card, of course, or at least slow-walk them)

Future backgrounds

Even with LLMs stirring the pot, my SF backgrounds are starting to look a bit familiar. So I’m working on generating a whole bunch of new ones. Two samples from a recent session:

Fixes and workarounds


Finally!

Windows 11 no longer reboots when you tell it to update-and-shutdown. The problem affected Windows 10 as well, so it’s been busted for ten years, neatly highlighting Microsoft’s QA priorities. Which somehow seem to involve cramming more ads, AI, and privacy violations into every product.

Oh, joy, more work for me!

My parents have a Windows 10 PC that they were worried about not being able to upgrade as the OS falls out of support. Last week, I got a call asking me to come over and fix its sudden inability to print, which involved deleting and reinstalling the printer driver. Odd, but hey, it’s Windows.

Except that there were more problems, like the fact that left-clicking the Start button did nothing, the taskbar Search field did nothing, and right-clicking the start button to launch Settings popped up an error dialog. I didn’t have a lot of time, so I screenshotted everything and went off to research fixes, which included some partially successful incantations.

Then I discovered what was really going on: it had silently upgraded itself to Windows 11. Mostly. So now I need to copy a recovery image to a USB stick and head back over there soon to repair or re-run the upgrade. Sigh.

(I’ve got half a dozen Windows PCs around the house that I would be happy to upgrade to Win11, but I can’t; several are old enough that the CPUs simply aren’t supported, so even the workarounds won’t work around, and one couldn’t run Linux or BSD for blood or money, due to proprietary drivers required for major components)

Python drag-and-drop wrapper for py2app

Turns out that Automator isn’t entirely scriptable, which seems like an obvious oversight, but Apple probably couldn’t figure out how to monetize those pixels. Instead, I updated the build script for my gallery-wall app (not yet uploaded to Github) to use Platypus, not to be confused with Python Platypus.

cat > _rungallery.sh <<'EOF'
#!/bin/zsh
exec open -a "gallerywall_backend" --args "$@"
EOF
chmod +x _rungallery.sh

platypus -a "Gallery Wall" \
    --interface-type None \
    --droppable \
    --quit-after-execution \
    --bundle-identifier "org.dotclue.gallerywall" \
    --author "J Greely" \
    --app-version "1.0.0" \
    --app-icon images/GalleryWall-wrapper.icns \
    --interpreter "/bin/zsh" \
    _rungallery.sh

(the downside is that it makes apps that won’t run on a nailed-down-by-default Mac, and in fact you can’t even install Platypus on most Macs, due to code-signing errors that are supposed to be fixed in the next release)

My AnimAI Things


I posed the usual challenge to ChatGPT’s o1-mini model: “write an anime-themed parody of the song ‘My Favorite Things’”. It spent about twenty minutes claiming:

Then it timed out and gave up. When I asked it to try again, it quickly tossed off some generic anime-ish doggerel. When I asked it to do what it claimed it was working on, it pulled the usual “network connection was lost” dodge (ChatGPT’s way of saying “fuck off, kid, I’m not listening”).

I knocked it down to the older 4o model, fed it the original request plus the clause that o1-mini had claimed it was working on, and it instantly produced something that mostly fit. Not as good as mine, of course, but this is the first LLM I’ve tried that’s actually made a credible attempt at it:

“My Favorite Anime Things”
(To the tune of “My Favorite Things”)

Magical girl squads with powers and sparkle,
Sword-wielding heroes in battles so martial,
Titans that crumble when teamwork takes wings,
These are a few of my anime things.

Villains who monologue, plans all revealing,
Big-eyed emotions, the depth of the feeling,
High school confessions and friendship that clings,
These are a few of my anime things.

Giant robots that crash through the skyline,
Fox-eared companions who offer a lifeline,
Power-up moments where destiny rings,
These are a few of my anime things.

Chorus:
When the plot twists,
When the ships sink,
When I’m feeling sad,
I simply remember my anime things,
And then I don’t feel so bad.

Ramen so steaming it melts all my sorrow,
Training arcs promising strength for tomorrow,
Cherry trees blooming while soft music sings,
These are a few of my anime things.

Portals to worlds where the stakes are much higher,
Epic showdowns with explosions and fire,
Kawaii mascots with angelic wings,
These are a few of my anime things.

Now, how does the currently-trendy offline model Qwen2.5-32B do?

(the “B”, by the way, is a rough estimate of the model’s size and complexity, and, to a first approximation, the amount of VRAM your graphics card will need in order to produce output at a decent rate. My card has only 24GB, but I used a “quantized” version of the model that was only 20 GB on disk; I can get sluggish responses from a quantized “70B” model, but the top-of-the-line “123B” models constantly swap data between RAM and VRAM, producing nothing)

more...

“I speak IPv6 to my Windows”


…and take it over completely. Patch time!

(classical reference)

Dear Apple,

It would be really nice if DNS worked. Here we are, nearly a quarter of the way through the 21st century, and I’ve still got to periodically run a command-line tool to flush stale DNS entries that prevent simple functionality like, say, connecting to Gmail’s IMAP servers. (sudo killall -HUP mDNSResponder, that is)

Of course, with how often iCloud mail randomly goes offline, maybe you just don’t know if email breaks…

Totally different show…

Every time I see mention of this season’s Pseudo Harem, I find myself thinking it would be better as a hentai titled Sudo Harem, involving one of those brainwashing smartphone apps that constantly turn up in consent-free fan-art and games.

(classical reference)

It lives…kinda!

Monotype killed off FontExplorer X Pro so completely that the final version they shipped crashes constantly on the last two releases of MacOS. The primary long-time competitor, Suitcase, went full-on with mandatory monthly subscriptions and The Cloud, which, fuck ’em.

A popular cross-platform alternative (with no support at all for legacy font formats), Fontbase, is free for basic use, but charges $3/month for… slightly-less-basic use. I don’t think anyone involved has ever had a large collection of fonts, or even been in the same room with a copy of Font Explorer X Pro. In fact, the only current non-monthly-fee alternative that does have a useful feature set is Typeface, which is… Mac-only.

(FontAgent doesn’t have a monthly fee, but also hasn’t actually implemented some features fully, like “being able to correctly count the number of glyphs in a font”)

Anyway, if you have a license and find a copy of FontExplorer X Pro 7.3.0, and you’re very quick, you can get the Preferences window open and shut off all attempts to connect to servers for updates, the store, etc. It still doesn’t actually work under Sonoma, but you can export all your configs and collections, and manually import them into another font manager. If you can live with the Mac-only thing, Typeface will import everything directly, including all the organization you may have done.

(okay, the connection between poor font-management and collecting the whole set of Molesting Magical Girls heroines in their “SM Big Thanksgiving” form is weak, but so am I)

And I’m thinking about font managers because…

Since Reportlab only handles Type 1 and TrueType, I needed to sort through all my fixed-width fonts and figure out which ones were compatible, so I could test uc2p with a decent variety. I wanted to gather up all the coding fonts I collected and tested several years ago, and they’re all in FEX, which has been crashing since I upgraded to a non-Intel Mac running the current MacOS.

At this point, I’ve pretty much decided that I’ll bundle IO Terminal with the script to guarantee that anyone who downloads it will have at least one known working font, but I’d like to list alternatives, and file some bugs for the problems I’ve seen.

“There's no I in AI...”


S-Rank Daddy’s Girl, episode 11

You’re not going to believe this, but Our Homesick Daughter was packing up for a fall visit home when suddenly guild business delayed her long enough for winter to completely cancel the trip. Unpossible, amiright?

For safety’s sake, she leaves The Trouble Twins with her gal-pals, which is sure to trip a few flags, but fortunately Our Haunted Dad has decided to finally face his past and seek out his old adventuring friends, so he wouldn’t have been home anyway.

Meanwhile, one of said friends is haunted by his own memories from those days, killing time in the county jail by cadging booze from little girls in exchange for adventuring stories.

Verdict: Our Best Catgirl in a clingy dress? Sold! The problem is, we’ve only got two episodes left, and there are a lot of balls in the air. Are they going to awkwardly wrap it up or try for a second cour?

(wrong catgirl, but she’ll do in a pinch)

Frieren, episode 14

In which love is in the air. Literally. Also, Himmel was a sly dog.

Verdict: Pouty Fern! Happy Fern! Sneaky Frieren! Smiley Frieren!

Gate manga, volumes 7-9

These (7, 8, 9) quietly slipped out on November 30, so they’ve slowed the release pace quite a bit, but haven’t stopped. Spiffy.

Unrelated,

Homebrew’s decision to move everything from /usr/local to /opt/homebrew got even more annoying when neither Perlbrew nor Plenv could successfully build XS modules with internally consistent libraries. When I started working through the issues with SVG and Pango in PDF::Cairo, I ended up with a busted install that would try to mix the libgtk from Homebrew with an older libglib that it found somewhere in the file system. Apparently instead of having predictable (if often insecure) library-path environment variables, MacOS has gone to a caching system where the first copy found wins, non-deterministically; the suggestions I’ve found mostly require scrubbing the disk of all duplicate libraries (I count at least 13 copies of libglib, most of them embedded in apps), deleting the cache, and rebooting.

So for now I’m installing all modules directly into Homebrew’s perl, and re-installing all of them every time there’s a minor version update (local::lib currently isn’t playing well with Homebrew’s perl at the moment, either, sigh). I haven’t had the time to completely untangle everything yet, because Christmas prep and job interviews have first pick of my brain cells.

(Oh, have I failed to mention the job-hunting? Yeah, someone thinks half of my team can be replaced with new hires at the Prague office. Magic 8-Ball says “good luck with that”)

Dear Llama-2-7B-chat (MLX),

Don’t quit your day job:

“tell me a story about catgirls” (5000 tokens)

(note: the mlx-example script defaults to a constant seed, so that the output is repeatable; if you like what you get, you can simply repeat it with a larger number of tokens)

more...

rust.waaaaambulance();


The entire Moderation Team for the Rust programming language has resigned. This came as a surprise to everyone who didn’t know that Rust had a moderation team, or what it was contributing to the development of the language.

The answer is, of course, Toxic CoC Syndrome:

Remarks that moderators find inappropriate, whether listed in the code of conduct or not, are also not allowed.

In other words, “we’re the Tone Police, and whatever we say goes”.

Also:

And if someone takes issue with something you said or did, resist the urge to be defensive. Just stop doing what it was they complained about and apologize. Even if you feel you were misinterpreted or unfairly accused, chances are good there was something you could’ve communicated better — remember that it’s your responsibility to make your fellow Rustaceans comfortable.

So if someone says “your pull request is worthless garbage that breaks the build”, they are required to apologize and stop harassing you over your earnest desire to decolonize the language by renaming all problematic functions.

For more fun, this CoC incorporates by reference the “Citizen Code of Conduct”, which includes this hilarious little gem:

No weapons will be allowed at [COMMUNITY_NAME] events, community spaces, or in other spaces covered by the scope of this Code of Conduct. Weapons include but are not limited to guns, explosives (including fireworks), and large knives such as those used for hunting or display, as well as any other item used for the purpose of causing injury or harm to others.

Since the “covered spaces” of the Rust-y CoC primarily consist of Discord channels, online forums, and git checkins, I’m assuming they’re referring to weaponized emoji here:

🥢 👞 🧀 🗡 🏓 🔞 🚔 🧸 🥋 🌂 🔩 🧫 🤺 🛁 🎛 ⛏ 🥩 🇺🇸 🥓 🪓 ©️ 🧨 🔪 🛑 🖋 🧷 🏏 💤 🏒 ⚠️ 🔧 🥊 💣 ⚓️ 🗑 🧼 🧻 🔨 🛂 🔫 🦨 🙈 🙉 🙊

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