November 2025

🎶 “She's got anime-girl eyes…” 🎶


The “self-portraits” I’ve posted recently were all done with prompts starting with “slightly-cartoonish illustration” to set the style. I also used this phrasing for the Diablo 4 barbarian illustration below them, which isn’t cartoonish at all.

So why is it that the moment I start to describe them in detail, to add variety, my pinup gals go full-bore big-eye anime style? Either 2D or Frozen-style 3D?

TL/DR: mentioning eyes at all, even just their color, is enough to do it. The expressive LLM-generated mood descriptions I’ve been experimenting with were also contributing (and creating some contradictory pose instructions, which I’d already made a note to fix), but all it takes to turn “slightly-cartoonish illustration of a woman cooking” into pop-eyed anime is adding “with blue eyes”.

The following images were all done with the same settings (Qwen Image, CFG 6.5, 42 steps, seed 1019441477):

A slightly-cartoonish illustration of a woman cooking:

A slightly-cartoonish illustration of a woman with blue eyes cooking:

more...

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)

What's in a name?


The Oregon Highlander

I saw the name of this illegal alien convicted sex offender who was advising Oregon on healthcare, and my first thought was not “yeah, that tracks”, but rather:

I guess being chief metallurgist to King Charles V of Spain doesn’t pay what it used to.

(“there can be only one!”)

Somebody didn’t get the memo…

😁

Experimental girl-swapping

The Flux models have plasticky skin, fewer trained art styles, and better-than-SDXL-but-not-by-much prompting. Qwen Image has excellent prompting and posing, but a strong tendency to converge on a handful of styles, locations, and faces. One of the more recent Flux models is Krea, which is supposed to be heavily trained on photographic and art styles. The full version is also 22 GB, so I wasn’t sure how well it would perform on my 24 GB RTX 4090 at all.

It was surprisingly quick, and it did style the images more than Qwen or standard Flux, but it definitely didn’t have the kind of LLM-based prompting that makes Qwen stand out.

So I crossed my fingers and set things up so that Qwen generated a 36-step 576x1024 image and then handed it off to Krea for 24 steps of refining and upscaling to 4K. Performance was quite good, but the results were… rough. One gal had a second face growing out of her ankle, another had an eye for a nipple, another had blue feet and something hideous growing out of her mutated hand, etc, etc.

TL/DR: I have yet to find a refine-only model that works well with Qwen as its base; the ones that don’t produce awful images produce low-resolution ones. So that idea was a bust, and not even a bouncy one.

(I need models that are… rock solid)

Break glass in case of...


Fulfillment Roulette

I ordered three things from Amazon. One is made of squishably soft silicone, the other two are made from borosilicate glass. Each one has its own tracking number, suggesting they did not combine them into one box, despite me checking the “take your time” button on shipping.

Now, which one will have the sturdiest package when it arrives tonight?

(I didn’t ask for Ricotta to serve dubious concoctions in champagne flutes, but I guess I didn’t not ask for it, either; this is what happens when you fall back to a model with less-capable parsing because it has the anime LoRAs you need for specific characters)

🎶 “One of these things is not like the other…” 🎶

X marks the territory


X: The Algorithm

It’s been pretty bad in the past, filling my “for you” feed with assorted scams, engagement farmers, and hate-filled Leftist activists, but at the moment, it seems to be pretty well centered around the type of things posted by the 24 accounts I follow:

  • 6 Japanese models/actresses
  • 4 artists (2 Japanese)
  • 4 novelists (1 who fled to Bluesky but never deleted his account)
  • 2 contrarians
  • 2 friends
  • 2 anime series
  • 2 waifu-posters (long idle)
  • 1 cat-poster
  • 1 app

Basically I get anime pics, RPG pics, cat pics, random snark and memes, and Japanese women in bikinis. This I can scroll for a while.

Truth in advertising, unfortunately

I was throwing a bunch of leftovers into a big pot of slumgullion, and decided to add a can of chili. The label read Stout Beef Chili, and despite it being waaaaay down the list of ingredients, the smell of beer was overwhelming. It cooked out somewhat, but it’s still pretty strong when you open the container. Enough that I can’t imagine using the other can that I bought, and will likely pitch it.

This is the quality of ‘thinking’ that AI provides…

(actual country of origin for “Ackers Science” and “Ackers BORO3.3” products? China, of course)

MasterCook, Cooked

After months of relentlessly pushing their new GenAI-enhanced version and their cloud subscription service, the current owner of the venerable MasterCook recipe-management software has sold the rights to some entity called Cook’n, which appears to be junking the software and only bought the customer list. They’re honoring subscriptions, but charging $10 to migrate you to their cloud.

Is their product comparable? No idea; I’ve seen so many products advertise MasterCook compatibility without actually implementing the full feature set that I gave up years ago.

Snow day?


Bit early for it, but it’s supposed to drop well below freezing tonight, and then snow for a while on Monday.

(Update: I thought they'd make a nice Christmas card...)

Soft logistics

I guess it’ll be a few more days before I find out how well Amazon packaged the squishably-soft silicone item compared to the robust boxing of the two glass items. Because it went back to the local depot Friday afternoon, hasn’t been updated since, and Amazon added their automatic five-day extension before I can even try to get my money back and order another one.

(if it does show up, there’s no guarantee it’s the same one that went out the first time; they’ve reused tracking numbers before)

Resting Waifus

I wanted to refine and upscale the 162 retro-sf waifu wallpapers I made a while back, but I definitely did not want to drag each image into the SwarmUI window, click “reuse parameters”, click “direct apply” on the preset containing the new settings, and then click “Generate”. That’s how I’ve been doing it for small sets, but it’s tedious and annoying, so I wanted to script it: extract the original parameters from the PNG as JSON, add a few new fields, then send a REST call to the SwarmUI server and download the results.

I knocked it together in Bash using exiftool, jq, and curl, and it worked great… unless the image was made with a LoRA. Which almost all of my wall-waifus are. I banged my head against the keyboard for a while before giving up and posting a stripped-down repeat-by to the Discord. Within half an hour, the developer had responded: the JSON the app stores in an image’s metadata is not the format used by the REST API; you can’t just round-trip it. (he acknowledges this is a should-really-fix-sometime issue)

Specifically, fields that are returned as arrays must be sent as comma-separated strings:

# extracted metadata
...
"loras": [
  "Qwen/Pin-up_Girl_-_CE_-_V01e_-_Qwen",
  "Qwen/Qwen_Sex-_Nudes-_Other_Fun_Stuff_-SNOFS-_-_v1-1"
],
"loraweights": [
  "1",
  "0.5"
],

# /API/GenerateText2Image
...
"loras": "Qwen/Pin-up_Girl_-_CE_-_V01e_-_Qwen,Qwen/Qwen_Sex-_Nudes-_Other_Fun_Stuff_-SNOFS-_-_v1-1",
"loraweights": "1,0.5",

Fortunately, jq can do this for you as a one-liner:

JSON=$(jq -c '.loras |= join(",")' <<<"$JSON")
JSON=$(jq -c '.loraweights |= join(",")' <<<"$JSON")

This is not the only underdocumented aspect of the REST API; there are very few examples, none of which give comprehensive lists of valid parameters or complete output. If the anime drought continues, I may pull down a copy of the SwarmUI repo and send patches for the API docs.

I’ll add the script to my Github repo once I finish tinkering with options. I’ve already added an option for the variation-related params, since I’ve had to use that feature a lot when an almost perfect pic is ruined by bizarre anatomical malfunctions. I think I also want to try re-rendering at a larger size instead of scaling as much (1080x1920 render + 2x upscale instead of 576x1024 + 3.75x), in the hopes of reducing finger and toe damage. Newer models can cope with the higher initial resolution. (additional options will wait until I’ve converted it to Python; for a quick hack, Bash is fine, but it’s clunky at handling JSON and REST calls)

Slip Slidin' Away


We were supposed to get a light dusting of snow on Monday, starting in the late morning. Leaving my parents’ house Sunday night, I walked out into light freezing rain, just enough to make me expect a light freeze.

Earlier in the day, my brother had asked me if I could drive my niece to school in the morning. Not having any meetings until 9:30, I said sure.

I woke up to find over an inch of snow on the ground and more still coming down, but my street was still clear. By the time I was getting ready to leave to pick her up, I was checking for school closures. Many schools were closed or had two-hour delays, but not hers, so off I went, giving myself plenty of time to get there.

No trouble on the side streets, but as we were approaching a major messed-up intersection to make a double left turn, I felt the car start sliding on a sheet of ice. 30 years in California had dulled my winter-driving skills, but I still knew what to do, and guided the car to the curb without hitting anyone or going into a ditch (unlike at least half-a-dozen other people we’d passed since leaving my brother’s house). Then I slowly got the car moving again and got back into the lane. It gave my niece a little story for her friends at school.

The real fun was that it was still snowing when I got home half an hour later (rush-hour traffic was grindingly slow in the half-frozen slush), and I had to try to make it up my steep unshoveled 75-foot-long driveway. Surprisingly, I succeeded.

By late afternoon the sun and wind had completely cleared and dried the streets and driveways, but there’s still about an inch of the white stuff covering the yard. That will all go away as it goes back up to 50°F by Wednesday afternoon.

Santa’s Little Helpers

Keeping with the tiny-gals-in-snow theme, I asked a few elves to make me a scale model of a caffeine molecule. They weren’t quite clear on the concept:

I even went widescreen to give them more room to make a complex molecule. It didn’t help:

Then I made the mistake of asking some dwarves to provide basic chemistry lessons:

(I was tinkering up an entry for the SwarmUI Discord’s daily theme contest; I started with the gals, but decided to go fully SFW and use the dwarves instead)

Meanwhile, in Amazon Logistics

They’re still pretending that the item that went back to the depot on Friday afternoon and hasn’t moved since will be delivered by tomorrow. So they can hang onto my money for another day before starting to process a refund.

Erased!

I don’t recognize young actress Maya Imamori, and after she was caught taking a drink four months before turning 20, neither will anyone else. I can’t decide which I’d prefer: Japan cutting back on the way it polices entertainer morality and makes performers grovel, or Hollywood adopting the practice.

More precisely, Hollywood introducing the concept of shame. They already have shunning, just for the wrong reasons.

“Enough with the virgins already!”

I never thought it would happen to me, but there it was: I was sick of virgins.

Let me explain. There’s this thing about fantasy fiction, one of those whatayacallit “tropes’, where a kingdom is being ravaged by a dragon (livestock eaten, crops burned, you know the drill) and somebody gets the bright idea that the solution is to find a reasonably-healthy village girl who hasn’t played hide-the-sausage with the butcher’s son, put her in a flowing white dress, and chain her up somewhere she’ll be easy to spot when the dragon makes his next flash-fried-mutton run.

Spoiler alert: it doesn’t work. Why not? Let’s assume for the sake of argument that you’ve got a dragon problem. Every few days it launches itself into the air, flies around your villages looking for tasty livestock, swoops down, grabs a few, and heads home for dinner. Don’t get fussy about the ratio of calories burned to calories earned for the moment. It’s a dragon; there’s magic involved, okay?

Given that a decent-sized dragon can carry off an adult male sheep in each hand, er “taloned forepaw”, that’s what, 500 pounds of meat, fat, and bone, at least twice a week? Average weight of a virgin sacrifice? 80 pounds, soaking wet. This is because unless she’s seriously sickly or ugly, village girls stop being virgins around the age of twelve. Thirteen if the local boys are a little slow on the draw.

Even if you assumed that virgins were the tastiest morsels around, they’d barely be a light snack for a creature that can eat two sheep and be hungry again three days later. And if they were that tasty, he’d be back for another one the next day, and it’s not like they grow on trees.

So what are we, and yes I mean “we”, supposed to do with all those virgins? You can’t just leave them there to die from exposure; those dresses wouldn’t stand up to a stiff breeze, and it gets cold in the mountains at night. And let’s be honest, if somebody wanted them back, they’d be rescued; people don’t sacrifice sweet-tempered girls with prospects, they get rid of the annoying ones who ask too many questions and refuse to fit in. Y’know, the clever girls.

Anyway, that’s how I started a school for witches.

(file under annoying that I had to specify that the dragon had two wings, one on each side; Qwen has a habit of just not drawing limbs on the off side, triggering variation renders when I like a pic but can’t plausibly believe that the second arm/leg/wing is hidden behind the body. Also, there were size issues; it really wants to fit the entire dragon body into the frame while rendering the girls at a decent size, so in about two-thirds of my attempts, he was small enough that a little girl would make a filling meal)

Playin’ with the Queen of Forks


Meanwhile, on The Island Of Miss Fit Toys

Qwen seems to default to this style of cartoon art unless you push it hard in another direction; fortunately, I like it for just goofing around. I left the layout open, but specifically requested each gal’s action and the tropical gym setting, as well as requesting different hair styles and body shapes. Sadly, I also had to explicitly request that they all had two ears, but I could not come up with an incantation that put all four in sharp focus; the poor gal on the treadmill was always a bit fuzzy.

For more fun, at one point I asked for them to be super-cute, and Qwen put Superman emblems on their sports bras.

Good luck, Have Fun, Don’t Die

Sam Rockwell is versatile enough to pull this off.

SwarmUI API script…

…to re-render an image with refining and upscaling turned on, now in my catchall Github repo as refinewall.sh, along with a script to preserve SwarmUI’s custom metadata when converting from PNG to JPG, with the straightforward name swarmui-png2jpg.sh. For the refiner script, I made use of jo to make the JSON-handling cleaner. I also decided to use exiftool to insert the original filename as a DocumentName tag to keep track of the source image file.

(all three pics use the same basic prompt, requesting sexy pixie gals in a slightly-cartoonish illustration; I wish I could get each specific variation on demand)

Derp Thoughts


There are many effective ways to write technical documentation. ImageMagick uses none of them. Seriously, does anyone ever do anything but kitbash commands out of the examples?

Diátaxis sounds pretentious, but any structure would be an improvement over this diarrhetic infodump.

(girls are mostly unrelated, except that I was doing some tinkering with my posting script to auto-calculate the scaled resolution for the IMG tag; Qwen can’t count, so I had to request 11 girls to have a chance at getting 9 members in Girls’ GenAIration (classical reference))

Oh, yeah, that Amazon package?

It never moved again, but after five full days sitting at a depot, Amazon claimed it was being returned by the delivery company (which was also Amazon…) and processed my refund. The fact that it got scanned back in at the depot after being out for delivery suggests damage. So, in the end, the two fragile glass packages arrived just fine, but the hard-to-damage soft silicone item was destroyed.

Ordering another one promised free next-day delivery…

“global VP of generative AI”


I’d ignored the (justified) complaints about Coke’s new holiday ad that was sloppily slapped together by retarded children playing with GenAI, until I saw this line in the story. Holy fuckballs, who do you have to get blackmail pics on for a vanity title like that?

(the current SwarmUI Discord theme is “desserts”, and Qwen Image knew exactly what to so with “stranded on a dessert island”…)

Weekend roundup


I’ve got the home-security guy showing up Monday, an allergy-doc appointment on Thursday, two large book shelves to empty before next Monday when they start installing the new doors, a birthday party next Tuesday, and a whole house to clean before I start cooking for Thanksgiving. No pressure.

(the home-security guy is scoping out “how to make sure the sensors still work after they replace all the exterior doors and frames”)

Shared monitor nuisance

So far, the only downside of having my 4K vertical monitor attached to two Macs at the same time is that the Thunderbolt connection to my laptop doesn’t always notice when I turn the monitor on. I’d blame Apple’s QA department, but they haven’t had one in years.

Refined Waifus

I’m using my SwarmUI API script to re-gen my early 4K waifu wallpapers, and so far every pic is coming out obviously different but with better fingers and toes. The only real failures are ones where it decided she needed a larger head.

On a random side note, I’m glad I improved my image-posting workflow with deathmatch, because I recently noticed that Apple broke Preview.app more than usual. It used to be that dragging a thumbnail image into a Terminal window copied the full path followed by a backslash, while dragging the tiny icon out of the title bar copied the full path followed by a space. The tiny icon still works, but dragging the thumbnail now produces two copies of the path, the first one followed by a newline, the second by a space; this is spectacularly useless.

Grabbing a bunch of pics from a directory full of GenAI or traditional cheesecake is a lot easier since I added the “export current filtered view” function to deathmatch.

Cold comfort

I decided to try out James Hoffmann’s recent cold-brew coffee technique. It’s not like his “Ultimate X-brew Method” videos, which tend to draw out the tastes-nothing-like-coffee flavors that the modern specialty coffee enthusiast craves, and he even concluded that it produces better results with cheaper, darker roasts, but as techniques go it’s trivial, with only one trick: adding a few drops of beer fining agent to produce a cleaner brew without a filter.

I didn’t have any of that on-hand, and haven’t made it over to the homebrew store that’s about 1.5 miles away, but he insisted that the grounds would settle out pretty well even without that, and you could pour carefully. Which was mostly true, except for the layer on the top that I had to scoop off. I ended up pouring it through a V60 filter anyway; next time I’ll try the fining agent.

Of course, “next time” might be “Spring”, since he posted the video just in time for cold weather…

What coffee did I use?

Marisol’s Café, purchased from Marisol herself when I was at St. George’s Market in Belfast. Yes, the beans spent a year in the freezer. Still darn tasty. I don’t know how she brewed the samples she was handing out that day, but I don’t usually like black coffee, and it was so good I bought two bags.

Appreciating Ina

Ina Enohara is not the prettiest model working in Japan right now, but she’s one of the most appealing, because there’s so much personality coming through when her face lights up. Which happens a lot more often than with most of the competition.

It doesn’t hurt that she has giant soft natural breasts that match her body, but I would never have bothered learning her name if it weren’t for her smile.

(site obviously NSFW, and the usual shields-up warning applies)

Quarterly Goals


My goal for the next season is “catch up on older shows while hoping there’s more to watch than just Frieren”. Maybe I’ll break down and try to watch the first season of Torture Princess, since the second season of that is airing, and it has at least one thing going for it.

Kicking it old-school

One of the windows at my house has shifted so much in its frame that it can’t make contact with the alarm sensor any more. While the alarm guy was checking things out for the door replacement next week, I asked him about turning on a bypass for that window. I’d managed to do it when I first moved in, but hadn’t kept links to the specific docs page I’d found for the unit.

He didn’t know either. He called a technician who was nearby, and the method he knew didn’t work. So he brought in his laptop, pulled out a console cable, logged into it directly, and set the bypass.

That didn’t work. So he called the senior tech, and she walked him through the 25-year-old GUI to the real manual bypass button.

That worked once, and then it re-enabled itself, so he called her back and she walked him through removing it from the set of active sensors. That worked.

The next-level hack would have been completely deleting that sensor from the config, but then they’d have had to redo the config when the window gets replaced (Spring, unless something else competes for my house budget).

While he was there, he also did something that another tech skipped three years ago when I moved in: configured the remote access so they can fix things like that directly from the office. It was originally set up to use a landline to call in alerts, but I don’t have one of those, so it now has a cellular modem that’s always online. It worked for calling in alarms, but they didn’t have the serial number and access code recorded, so they couldn’t connect to it.

A stroon by any other name…

Akebono Sangyo makes a popular line of clear plastic coffee servers whose Amazon listings announce they’re made of “stroon”. Not to be confused with the musical artist Stroon or a combination strainer/spoon, this is the romanized trade name ストロン, short for ストロントライタン = “Strong Tritan”, which has started showing up a lot recently in coffee gear. Wikipedia and “helpful” AIs that scrape it insist Tritan’s not safe for hot beverages, while the manufacturer and dozens of coffee companies say it’s both dishwasher and microwave-safe, and can handle boiling water as well as being tossed off a cliff.

Nice product, totally fake pictures

When my sister was in town a while back, we took our parents out for dinner at a nice Asian Fusian restaurant, and they served our bottle of saké in one of these:

It’s a nice-looking gadget for chilling drinks without diluting them, but when you look at the “real-life” pictures in the listing, every single one of them is a clumsy cut-and-paste job that doesn’t even deserve to be called “Photoshopping”.

Another MacOS Preview quirk…

This one isn’t new, but it’s been a low-key annoyance for years. If you tell it to open a bunch of files of the same type, say open *.png, you will often get two windows, with no obvious reason some of them ended up in the second one. Close the app, type the same command again, and all the images will load in one window so you can navigate between them. It doesn’t matter how many things you’re opening; could be 2, could be 200.

The app also sorts the images by the order they appear on the command line, and when it does the two-window thing, there’s not a consistent pattern to which ones end up where.

(grown-up Misty is unrelated, but the NPC gals in the new Pokemon game are getting a lot of attention for their sex appeal…)

“It's always DNS!”


“…except when it’s a network engineer changing ‘unrelated’ firewall rules that just happen to block DNS on a Friday afternoon, without a code review or an approved ticket. Hypothetically speaking.”

Free Zorkmids!

With proof of pur– no, wait, just free-as-in-MIT-Licensed, for Zork I, II, and III.

tHisP@sswd1s$ecure

Allergist practice I went to yesterday had their own web site (I’d thought they were part of the general network, but no, just a partnership), and they set me up with an account. It had a pretty typical Javascript authenticator for its password rules, but it refused to accept my password. You must, it said, have letters and digits and one of a specific set of punctuation characters, but it refused to mark the “8-25 characters” requirement as met. Because I put a space in the password.

If they’d said “your password can’t have spaces in it”, I’d have just rolled my eyes and moved on, but no, it claimed I was failing the length check.

Not to pick on anyone, but…

There’s a lot of “digital art” being posted to the SwarmUI Discord that does absolutely nothing for me. Intricate and detailed, showing definite proficiency with advanced AI image-gen workflows, and… dead inside.

Me, I’m just playing with the shiny toy, but I see a lot of people (especially on Reddit) who think they’re Artists, and that anyone criticizing GenAI is some sort of frightened luddite. Yeah, that ain’t so, Yoko Ono.

(despite a prompt explicitly stating that the words were being spoken by the mad scientist, about 70% of the time the banana was talking, and in another 15% they were shouting together; sigh)

I will never need this...


…and yet, I still kinda want one:

(you have to watch the video to really appreciate the restaurant-scale of it)

パクツイ

The word for the day is pakutsui = “pakuri (ripped-off/gobbled-up) + tweet”, for swiping someone else’s social-media post and pretending it’s your original work (I’ve never understood the use of the word “plagiarism” outside of school; if it isn’t actual copyright infringement, it’s at worst just a dick move). The word paku used to be best known for the mimetic usage paku-paku = “gobble-gobble” from Pac-man.

Successful failure!

I’ve been converting my quickie SwarmUI API script from Bash to Proper Python, with a simple OO wrapper to encapsulate connection variables, etc, and once I got the basic “gen an image” code working, I wanted to add the ability to ensure the output format was correct and included metadata. By default, the output’s in JPG with a filename containing a truncated prompt, complete with spaces. I hate whitespace in filenames, especially when you have to use them in a URL to download your results, so before I started with the Bash version, I fixed the default format server-side.

But in a generic library that might connect to other servers, I wanted to force it to use sensible names, write PNG output, and include full metadata. As usual for this API, the ChangeUserSettings call is basically undocumented, but for extra fun, it never fails, always returning {"success": true}.

You have to go read the server logs to find the clear-but-still-not-very-useful error messages. You have to use tcpdump -A to find out how it expects its arguments to be formatted. TL/DR, parse the JSON output of /API/GetUserSettings and build a “.”-separated fully-qualified setting name, like fileformat.imageformat.

(having to check the logs to find the failure code gave me a really bad flashback to writing test code for the original Ooma account-management service, which was accessed by a nasty mix of SOAP and XML services calls, all of which expected the client to do all data validation (yes, Samir, I’m pointing that finger at you); I wouldn’t have said this publicly back when that code was still in Production…)

Vibe me good and hard!

Writing this script for SwarmUI is actually a good example of where “vibe coding” will let you down: there is zero public code using this API outside of the Javascript used in the app itself and one extremely basic curl example in the docs (“get session id, generate image with default params, download results”). The only reason I got the existing script to work was because I wrote a minimal repeat-by and asked the devs on Discord.

To even have a chance at writing correct Python code for this, an LLM would have to ingest the entire repo, analyze a bunch of Javascript and C# code, and then repeatedly be fed server logs until it stopped getting errors. You’d either have to give it full control of your computer or spend valuable you-time acting as its hands while it played the two-steps-forward-six-fingers-back game of iterating over broken hallucinated code.

Or wait until I publish mine and the latest Github-scrapings get integrated into the latest models.

In other news, Napster still exists


But probably not for long

Initial optimism…

…crushed by correct parsing of the headline:

Microsoft and GitHub Preview New Tool That Identifies, Prioritizes, and Fixes Vulnerabilities With AI

I’m much more interested in “fixing AI vulnerabilities” than in “using AI to fix vulnerabilities”. It would be far more useful, and less frustrating for the poor suckers dealing with the mountain of hallucinated issues and gibberish pull requests.

Record Of Lodoss War, Louie, etc

An official English translation of the Sword World tabletop RPG is apparently on the way, says a tweet that doesn’t link to the publisher or their upcoming crowdfunding campaign.

TL/DR, the reason the Lodoss series has that title is that it was an Eighties thing in Japan to transcribe your RPG game and share the “replay” of your story; it literally started out as the record of the author’s campaign. The novels were cleaned up from that, and then he released his own game rules and setting. Later, the Rune Soldier novels were set on another continent in the same world; if you thought the anime felt like a classic RPG adventure, complete with a party consisting of a fighter, mage, thief, and wizard, correct!

In addition to the upcoming game release, the fan community has recently been cranking out fan-translations of the novels and manga. I read the first few Louie novels in Japanese way back when, first with OCRd scans and then with ripped Kindle editions, after running them through my assisted-reading scripts to add furigana and vocabulary lists. It was slow going, and I never finished the series, even though I got them all prepped. It’ll be interesting to see how the translators handled some of the lines that stumped me.

(actual recent fan-art, who’da thunkit?)

TL/DR or TL/AF?

Social media engagement-farming seems to be built on two premises: fraudbots pretending to be “just like you, only more extreme”, and manipulated sexypics designed to elicit a reflexive like/retweet. Neither seems to really work any more, even before this week’s proof that 99% of both groups are foreign-run bot farms; people were glancing at them and then moving on to the next rather than engaging.

The door is a jar


They showed up this morning to start replacing my exterior doors, and the new front door is finished except for the interior trim. They might not make much progress Tuesday, unless the rain really does stop at noon, but with the big one out of the way, the other two should be done by Wednesday afternoon.

Which is good, since it looks like the temperature’s going to drop 20°F after that, making for a chilly Thanksgiving and Black Friday weekend.

(I’ll have to have the security company switch to wireless sensors for at least the front door; the way it’s made as one unit, complete with the giant half-round transom (which gave the crew a real challenge getting it into place), running the wire through it would be a lot of work and void the warranty)

From his lips to Cook’s ears…

Next year’s iOS and MacOS releases are supposed to be focused on quality. And “AI”. And removing all remnants of x86 CPU support (while still including some degree of software support). No news yet about hiring a team of user-interface designers to replace the idiots who inflicted Liquid Ass on the world.

Meanwhile, in a formerly-basic text editor…

Microsoft is improving Notepad with streaming GenAI, so you don’t have to stare at an empty window while it’s still making shit up.

(pro tip: do not ask Qwen Image for a “tractor beam” when you’re working with Legos)

Government verification

I went to login to my Social Security account. Not that I can retire any time in the next ten years, but with the increase in identity theft, not just by illegals, it’s good to check occasionally.

Years ago, I set up my “login.gov” account for TSA Pre and Global Entry. When I moved back to Ohio, I updated it with my new address and phone number, and today it correctly texted a 2FA code to my phone.

But it decided that using the common account to log into a different service (Social Security) required ID re-verification, so I let it take pictures of me and my passport, and once it processed those, it said I needed to login again, complete with 2FA. And it refused to accept my phone number as “associated with me”. I was forced to plug in and turn on my California phone so they could text a code to it. Three years after I changed the number in their system, and mere minutes after they’d used the current number to authenticate me.

Yeah, let’s trust the federal government with full control over every aspect of our lives; what could go wrong?

(not my actual roof vultures, who I’ve only gotten quick phone snapshots of a few times from the ground; the angle and perspective of this genai creation is nearly impossible to achieve outside of a studio with human-habituated birds. FYI, I was puzzled when I first tried to gen this pic, because I asked for buzzards and got falcons; turns out this is one of those America-versus-Europe things where we mean “turkey vulture” and they mean “pretty much any raptor”)

Doors, edumacation, gratuitous AI, and useful AI


Door, More Door, Gone Door

(insert meme here)

The back door won’t be installed until Monday. They got the garage side door installed (including reusing my Level deadbolt, which is not compatible with the new front door), but the morning rain was more annoying than expected, to the point that they were having power-tool performance issues.

Downside: current forecast has snow on Sunday after several cold days, so there’s a good chance it will stick, which means I’ll be out there shoveling and salting the driveway first thing on Monday morning, so they can get their truck up my driveway. And they’ll be out there in their warm clothing.

(not an example of warm clothing, although for some reason I feel warmer…)

Remember the “Government-Owned Student Laptops” fad?

(classical reference, and whatever happened to Capitalist Lion anyway? Also Brian Tiemann; both of their sites went offline sometime after they went into the really-cool-car rental business)

Slashdot links to the long-term results of “One Laptop Per Child”:

Following students over time, we find no significant effects on primary and secondary completion, academic performance in secondary school, or university enrollment. Survey data indicate that computer access significantly improved students’ computer skills but not their cognitive skills; treated teachers received some training but did not improve their digital skills and showed limited use of technology in classrooms, suggesting the need for additional pedagogical support.

“Suggesting the need for additional pedagogical support” is industry-standard eduspeak for “that didn’t work either, let’s throw more money at it”.

X’s latest horror

Click on a tweet, and a bouncing speech bubble tries to get your attention with the words “Ask Grok to explain this post”. This is always annoying, but particularly stupid when the tweet consists of a picture of a pretty girl in a bikini.

The day I need AI to “explain” what that means, I’ll have been dead for two three six weeks.

Built RAM tough

The new hotness (new-as-in-Monday) for image generation is Flux 2, which will just-barely-work with 24 GB of VRAM and 64 GB of RAM. They’re promising not just improved quality at up to 4K resolution, but LLM-based prompt parsing that actually follows your instructions, even supporting JSON prompts that contain real structure for clearly separating multiple subjects, etc. They are not promising high-speed rendering; people with high-end hardware are seeing it use all of their VRAM and all of their RAM (90+ GB).

Of course, it still has to be trained on images that are tagged with the correct concepts, so I’ll be testing prompts that include things that have confused other models, like crown braids, crossbody purses, cigarette pants, poodle skirts, bird’s-eye views, etc.

My first quick tests using previously-generated random Qwen prompts did not produce promising results. I’m going to tinker with the prompt generator to use their JSON format, and see which of my dynamicprompts sets work well with it.

First try with JSON prompting:

(I updated my prompt generator to handle JSON output, and it’s a disgusting hack, but it works. The generator eats all of “{}[]#”, so to generate JSON, I’m embedding YAML in the YAML file as a string. The dynamicprompts library does its normal substitutions without interfering with the indentation, so the resulting string can be run through yaml.safe_load() and fed to json.dumps())

But wait, there’s more!

The even-newer hotness is Z-Image Turbo, which runs on much less expensive hardware, at ludicrous speeds. Not quite as sophisticated in its prompt-handling as Flux2, but at least as good as Qwen. In fact, I’m just feeding it the wildcard collections I made for Qwen and getting impressive results a lot faster. It occasionally produces terrible skin tones and extra legs, but so far it rarely fails a finger count, and it hasn't swapped the thumbs.

File under “no comment” that the body-type tagging trends a bit thicc, sometimes going all the way to chunky. They definitely included more “diversity” in their training data. Not necessarily a bad thing, but when I say “voluptuous figure”, I do not mean “cute fat chick”. I may have to significantly reduce the diversity in my dynamic prompts, because exaggerating descriptions to shove Qwen away from its defaults simply isn’t necessary with Z.

On the bright side, so far it has never produced a missing arm, leg, ear, wing, etc, something that ruined a lot of Qwen gens. It also doesn’t seem to have the issue where Qwen draws high-heel shoes and then decides it should also draw at least partial toes.

As a real bonus, this is just the turbo model. They’re promising a full base model and a full edit model soon.

(yes, there are a few finger-faults in here...)

more...

Tanya, catgirls, and more fun with Z


Tanya 2, finally announced

For sometime in 2026.

Freelancers of Neptune, “revised”

Jacob Holo’s Freelancers of Neptune put a sexy catgirl on the cover (previously), which I appreciated, and rather emphatically made her not a haremette, which was also refreshing. Not only did she drive the hero crazy with her antics, she already had a boyfriend.

So he just released a “second edition” with a co-author who “added the spice” and turned it into something different:

Just remembered why I stopped reading Louie

TL/DR: in book 3 (my original notes), Merrill comes up with an incredibly stupid, guaranteed-to-backfire plan. Sure, it sets up Wacky Hijinks(TM), but the outcome was entirely predictable.

To get Rescued Runaway Young Heiress out of an arranged marriage, Louie pretends to her father that he “claimed his reward” after rescuing her from pimps/slavers. Merrill’s idea was that the threat of scandal would risk her reputation and call off the marriage, but she didn’t think it through, and nobody else spotted the flaw: her Daddy was marrying her off to advance his own position, and Louie is one of the most eligible bachelors in the kingdom.

He is, after all, the adopted son of one of the richest and most powerful wizards in the world, who’s also a personal friend and old adventuring companion of the king and the high priestess. Hell, the entire Thieves Guild is trying to figure out who his birth parents are, because he’s potentially that important. Whoopsie!

Destination: international waters

If we deport a convicted felon, and their home country won’t take them, I’m fine with just dropping them off near that country. Sink or swim, not our problem. If NGOs actually care, they can buy a fleet of patrol boats to fish them out of the water. If their home country has no seaports, or their crimes involved children, airdrop them.

More fun with Z

I fed a fresh batch of dynamic SF cheesecake prompts into my almost-ready-for-Github SwarmUI CLI to see what Z Image Turbo would do, and since it’s so much faster than Qwen, I’ve got just under a thousand images to play with already. Deathmatching them down to a reasonable number will be difficult, because the hit rate is so much better than Qwen.

I’ll limit myself to just a few for now:

(fingers are pretty good, but oversized heads are a risk…)

more...

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