“This is what you do in a game, you run around and talk to everyone with punctuation over their heads until you win.”

— Stolen Pixels explains it all

Gordon's Alive!


…and setting his clock back an hour this weekend. I had a helluva time getting Qwen Image to even get near Brian Blessed’s Vultan costume from Flash Gordon to dress my not-entirely-accurate avatar up for Halloween.

Claude started out with a spectacularly bad attempt to describe the costume:

A regal, imposing hawkman warrior in elaborate gold and bronze metallic armor. Muscular figure with a broad-shouldered silhouette, wearing a gold lamé bodysuit beneath ornate segmented breastplate. Massive wing-like shoulder pauldrons with feather-segmented design in graduated shades of bronze, copper, and gold. Large articulated mechanical wings extend from the back with an Art Deco aesthetic. Distinctive gold helmet with a pronounced beak-like visor suggesting an eagle’s head, featuring swept-back feather-crest elements. Deep purples and burgundy accent details throughout. Wielding an ornate energy mace or staff with a spherical glowing head, metallic handle matching the armor coloring. 1980s science fiction aesthetic blended with art deco design, theatrical and operatic in scale, with an antiqued metallic finish rather than pure polish. Character from the 1980 Flash Gordon film.

When called on it, it “researched” the correct costume and at least got into the general ballpark, but still without getting a single component correct. I couldn’t find a decent high-resolution still to feed in as input, so I just hacked at the prompt until it looked like it was kitbashed from Thor cosplay leftovers.

“Trunk or treat” is an abomination

(You can’t change my mind)

Number of kids who came to my door? Fifteen.

Bags of candy left over? Less than fifteen. I figure my niece’s high school is going to need some donations.

Oddest thing was that a third of the kids showed up without bags for candy (the pros had pillowcases, which I respected). They were in costume, but they expected to receive one or two pieces and hand them off to an adult waiting at the curb. This doesn’t work at my house, where a double handful with my hands isn’t going to fit in theirs. Fortunately I’d been to the grocery and had half a dozen plastic bags to give away.

(“this will look terrific on Arato-senpai!”)

Gals on the right

I decided to take my retro-sf wildcards and use them to generate wide-format wallpaper for my gaming PC, which has for several years been using a photo of a penguin appearing to operate a DSLR camera (I think it came from a Bing wallpaper rotation).

It wasn’t obvious when I was generating tall images, but Qwen Image has a strong bias toward putting the subject dead center. You can tell it to put her on the right side of the image, but explicit instructions to “place the main subject on the left side of the image” are almost always ignored, if not reversed. Compositionally speaking, this is kind of frustrating. It’s possible, just quite difficult to arrange in the prompt.

Of course, this is the same model that thinks freckles are the size and color of pennies, and “faint scars” should be rendered as deep gaping wounds. Seriously, what was Alibaba using for training data, medical-school cadavers?

Competition!

For the past few years, providers have been promising to have high-speed fiber Internet service in my area. Cincinnati-based AltaFiber seemed to be expanding rapidly, then went quiet, but for the past few weeks there’s been major digging going on along the nearest main street near my house, and yesterday I spotted little flags and paint markers in the utility easement at the edge of my back yard, and sure enough, Friday afternoon some big equipment arrived and spent the afternoon pulling cable from one end of the street to the other, accompanied by little door cards announcing the imminent arrival of AT&T fiber.

Since it’s not available yet, they won’t give me the details of the package, but that’s okay, I don’t actually want it. What I want, and had wanted from Alta, was leverage to use in a call to my current provider. They offer new customers more speed for less money than the package I’m paying for.

Cheesecake: no Artifical Ingredients


Done with Ruri’s adventures, I dug into my pre-Covid, pre-GenAI cheesecake archives, and deathmatched the gals I downloaded in May, 2019.

There is a lot of “Ai” in this set, but it’s autocompleted with “Shinozaki”, which is healthy and natural and good for growing boys.

more...

Fan-Service Rocks!, fin


Best. Lecture. Ever. This episode is clearly the source of the “PG” promise of nudity, despite steam and chibification keeping things squeaky clean. And I’m confident the steam was not a buy-the-Bluray tease; it’s not that kind of show.

Anyway, along with limestone deposits, we get a discussion of future plans, and to the surprise of absolutely nobody, Nagi wants to teach, Shoko wants to become Yoko, and Ruri stumbles on her answer with a little help from her friends. The series closes with a montage of the near future, and a glimpse at Ruri’s suspiciously-familiar adult form.

Corn, popped

Literally for once. I hadn’t planned on making caramel corn Sunday night, but out of nowhere, my mother asked me how much unpopped corn you need to make 8 quarts of popcorn. She’d found a recipe for caramel corn somewhere, and it assumed you knew the conversion ratio. I ended up at popcorn.org, which says 2 TBSP of kernels for a quart of popped corn.

They also had a smaller, allegedly easier recipe that only required 5 quarts of the white stuff.

It somehow ended up being my job to run the air popper and follow the recipe, and the only difficulty was that the premium popcorn they’d bought produced significantly more volume than expected. 8 TBSP of kernels would have been more than enough.

I suspect I’ll also be drafted into making the next batch, this time with nuts.

Reminder: I am not actually this fat or this bald, I have much better trigger discipline, and I’m left-handed. Qwen is, shall we say, “not good” at guns, and definitely has a problem with the concept of holsters:

(I didn’t even ask to be holding the gun, just “holstered at his left hip”)

Diablo 4, season 10

I generally start new seasons with a Necromancer minion build, because being escorted by a pack of skellies does a good job of keeping you from getting overwhelmed at low levels as you acquire not-entirely-crappy gear and start to build up cash, materials, and abilities. Once you get some rare drops, it becomes an easy way to reach Torment 4 (Hand of Naz unique gloves, Nagu and Ceh runes, and Aspect of Occult Dominion cast on a helmet give you 14 skeletal mages and six spirit wolves to do your killing).

I’m currently farming in T3 because it’s faster, trying to get an Ophidian Iris for my incinerate/hydra sorcerer. I also thought I’d need some uniques to build up a whirlwind barbarian, but they’re letting you powerlevel alts through the seasonal content again, so I unlocked Deafening Chorus at level 30, and I already had an item enchanted with Aspect of Fierce Winds (DC = shouts are always active at +50%, AoFW = activating a shout creates 3 dust devils). The Neo and Ceh runes are another way of creating a pack of spirit wolves, so damage just kinda happens while you run around. And you’re also berserk and unstoppable at all times, with increased damage reduction and speed, making farming less of a chore.

(this is approximately 10% as chaotic as actually playing this build)

Reminder: X hallucinates your “interests”

If your feed seems skewed, it’s time to go in and uncheck the auto-generated horseshit “interests”. This week, mine was:

#2i2, ABC News, Abema TV, Action, Action & adventure books, Adam Schefter, Ado, Adventure, Age of Empires, Air travel, Alien, Andy Dalton, Animated works, Anthem, At home, Australia national news, B’z, Bad Bunny, Big 10 football, Biology, Blade Runner, Blu-ray, Board games, Borderlands, Breaking Bad, Breaking Bad, Breaking Bad, Breitbart News, Brit Hume, Buckingham Palace, Byron York, CBS, California, Careers, Climate change in the United States, Coaches, College Football, College Football, College Football 2023-2024, Colombia political figures, Colombia politics, Comic works, Construction, Cooperative games, Cracker Barrel, Cygames, Damon Jones, Data centers, Dating Apps, David Fincher, Dolly Parton, Dune, Elizabeth MacDonald, Eric Trump, Europe, Family films, Famous comedians, Folk music, Free-to-play games, George Clooney, George Soros, Glenn Beck, Greta Thunberg, Grindr, Gulf News, Hard rock, Home improvement, Homeschooling, Human resources, IPOs, J-pop, JB Pritzker, Jake Tapper, Jen Psaki, Jimmy Kimmel, Jimmy Kimmel Live, Jimmy Kimmel Live, Joy Reid, Kaori Maeda, Katie Pavlich, Keira Knightley, King Charles, Larry Elder, Late night talk, Latin music, Latin pop, LeBron James, Legal drama, Letitia James, Live: College Football, Manga series, Megan McArdle, Merrick Garland, Meta, Monster Hunter, NASA, NFL Football, NPR, Nate Cohn, Navy Midshipmen, Neuroscience, Nintendo, Nintendo Switch, Nursing & nurses, Nyheim Hines, Olympic Canoeing, Outerwear, PGA Tour, Partner Track, Patricia Heaton, Paul Bettany, Paul Sperry, Persona, Pfizer, Phil Mickelson, Plastic models, PlayerUnknown’s Battlegrounds, Popcorn, Professions, R&B and soul, Razer, Reggaeton, Reuters, Rie Takahashi, Ryan Saavedra, SKE48, SPY×FAMILY, School festivals, Sculpting, Smartmatic, Snack Food, Soul music, Sports, Spy × Family, Starbucks, Stefan Kuntz, Stephen King, Steve Jobs, Stevie Wonder, Sydney Sweeney, Target, Ted Nugent, Texas, The 60s, The Independent, Threads (Meta), Trap, Twilight Saga, USA Today, Upper body fitness, Venezuela political figures, Venezuela politics, Verizon, Voice actors, Voting Machines - Government/Education, Warren Kenneth Paxton, Water sports, Wells Fargo, Whataburger, Wine, Writing, Yahoo News, Young Magazine, Zenless Zone Zero, Zerohedge, Zombie Land Saga, Zoology, college_football_2023, ゾンビランドサガ, 異世界かるてっと

Not only have I never engaged with any tweet on most of these subjects, most aren’t even things that someone I follow would make fun of. And for the few that were memed by someone, that context should be taken into account. Pointing and laughing at something doesn’t mean you want to see more of it.

The only nice thing I can say about this list is that it’s just garbage, not explicitly hard-Left garbage.

Random randoms of randomness

Someone on the SwarmUI Discord posted a complex prompt that uses the app’s native randomizing syntax to create a wide variety of people portraits with diverse (both meanings) faces. It’s like a Perl one-liner had sex with a MadLibs book:

(analog photography.:2) in <random:an indoor|an outdoor|a studio> setting.
<random:<setvar[gender,false]:man><setvar[pronoun_n,false]:he><setvar[pronoun_p,false]:his>|<setvar[gender,false]:woman><setvar[pronoun_n,false]:she><setvar[pronoun_p,false]:her>|<setvar[gender,false]:person><setvar[pronoun_n,false]:they><setvar[pronoun_p,false]:their>>the <var[gender]> is in <var[pronoun_p]> <random:early|late|> (<random:teen years|twenties|thirties|forties|fifties|sixties|seventies|eighties>:2)..
<var[pronoun_n]> has a distinctive <random:oval|round|square|heart-shaped|long|oblong|diamond|triangular> face, looking <random:pleasant with a gentle smile|energetic with a broad smile and a cheerful grin|radiant, beaming with joy and sparkled eyes|amused, with a slight smirk and a twinkle in the eye|contended, in a peaceful and serene expression|playful, with a mischievous glint, hinting at fun|warm and welcoming|hopeful and optimistic|blissful, lost in happy thoughts|thoughful, deeply pensive|curious, eyes wide with interest and head tilted on a side|observant and scrutiny|introspective, lost in reflection|calm and peaceful|serene, untroubled|focused, intently concentrating|weary and exhausted|melancholic and wistful|pensive with a hint of sadness|resigned in acceptance|wistful, longing for the past|anxious with worry in the eyes|reserved, keeping it formal|overjoyed in exhuberant happiness|very sad in a genuine sorrow with tears|angry, bursting in rage|surprised, startled with wide-eyed wonder|fearful, apprehensive and scared|determined with strong will and resolve|intense, experiencing a deep feeling|smiling sadly|thoughtfully amused|weary but determined|curiously spektikal and doubtful|serenely hopeful>.
<var[pronoun_n]> has <random:porcelain|ivory|rosy-fair|pale golden|peach|golden|olive|light tan|tan|bronze|caramel|warm brown|cool brown|chocolat|deep bronze|ebony|rich dark brown|honeyed|copper|russet> <random:flawless|velvety|polished|dimpled|porous|weathered|sun-kissed|bumpy|freckled|densely freckled> <random:skin with <random:small,large, prominent> moles|skin  with <random:faint, noticeable, prominent> (scars:<random:1,2,3,4,5>).|skin>, <random:pixie cut|buzzcut|chin-length|jawline-length|shoulder-length|collarbone-length|mid-back length|waist-length|long|classic bob|layered bob> <random:jet black|raven black|soft black|chocalate brown|dark mahogany|chestnut brown|medium brown|light brown|ash brown|auburn|platinum blonde|golden blonde|honey blonde|strawberry blonde|ash blonde|dirty blonde|fiery red|ginger red|burgundy|silver gray|charcoal grey|snow white|salt-and-pepper|bronze|mahogany|russet|ombre|blue> hair with a <random:high hairline|low hairline| widow's peak|straight hairline>; <random:high|medium|low> and <random:wide|narrow|average> <random:sloping|straight|with prominent brow bone> forehead.
<var[pronoun_p]> <random:sparse|dense|regular|asymmetrical> eyebrows are <random:thin|medium|thick|bushy> and <random:arched|straight|angled upward|angled downward|rounded|curved>, <random:matching hair color|darker than hair|lighter than hair>, <random:almond-shaped|round|upturned|downturned|hooded|monolid|> <random:large|medium|small> eyes show a beautiful <random:sky blue|deep sapphire blue|grey-blue|turquoise|emerald green|olive green|hazel green|dark chocolate brown|light hazel brown|golden brown|mahogany brown|mixture of brown, green, and gold|silver grey|slate grey> hue<random:|, deep-set into <var[pronoun_p]> face|, protruding forward>, <random:short|medium|long> <random:sparse||thick> <random:straight|naturally curled|heavily curled with mascara> eyelashes.
<var[pronoun_n]> sports a <random:large|medium|small|pointed> <random:straight nose, with a classic and balanced profile|roman nose with a prominent bridge and a hump|greek nose, with a straight bridge and refined tip|snub nose, upturned and delicate|aquiline nose, hooked and curved downwards|button nose, nicely rounded|hawk-like nose, strong and prominent|wide nose, broad at the nostrils|narrow nose with a thin bridge|long nose, extended length from brow to tip>, <var[pronoun_p]> cheeks are <random:rosy, naturally flushed|dimpled with cute indentations|freckled|sun-kissed|sculpted sharp|softly curved>. <var[pronoun_n]> has <random:large|medium|small> <random:full, voluminous|thin, delicate|wide, spreading across <var[pronoun_p]> face|distinctive bow-shaped|softly curved round|down-turned drooping|> <random:lips.|lips with a defined cupid's bow.|lips with a prominent lower lips.|lips with a prominent upper lips.> <var[pronoun_p]> chin is <random:large|medium|small|strong|weak> and <random:rounded|square|pointed|cleft|receding|prominent|doubled, with fullness under the chin>, <var[pronoun_n]> has a <random:strong|soft|square|rounded|well defined|soft> and <random:wide|narrow> jawline, completing <var[pronoun_p]> face.
<var[pronoun_p]> build is <random:slender|lean|muscular|stocky|robust|petite|large-framed>, <var[pronoun_n]> stands in an <random:upright|slouching|stooped|relaxed|casual|tense|stiff> posture, showcasing <var[pronoun_p]> <random:broad|wide|narrow|sloping|rounded|square> shoulders and <random:full|flat|narrow> chest. <var[pronoun_p]> arms are <random:long|short|muscular|toned|slender|lean|strong|robust>, completed with <random:delicate|rough|small|large> hands.
<var[pronoun_n]> wears a <random:formal|casual|loose|fitted|tight> <random:cotton|silk|wool|denim|leather> <random:shirt|blouse|t-shirt|sweater|jacket> contrasting with <var[pronoun_p]> hair.

…and that’s why I converted it to the dynamicprompts YAML format, which revealed all sorts of typos and awkward phrasing. I added weighting to improve realism (completely random choices produce a lot of unusable crap), cleaned up the option lists, and added a new one to push Qwen Image away from its default faces.

My version is here, in my new Github repo for random genai-related stuff. The Python script I use as a wrapper for the dynamicprompts library is in there, too.

You know it’s time for a new theme when…

…you weed 500 images down to 162 and say, “forget the toes, maybe I’ll just use them all as wallpaper”. I’m not going to blog that many, though, so I deathmatched it down to 18 based on the newly revised-and-randomized sfnal locations.

I started with ~900 retro-sf locations generated by several different online and offline LLMs, fed them all to Claude to categorize and create sentence patterns, and then threw 500 imaginary pretty girls on top. Many of the results were visually incoherent, and quite a few had nothing about them that even hinted at SF, retro or otherwise, but most met the goal of being lively and colorful without drawing attention away from the girl.

No refine&upscale for this batch; it’ll run overnight for the full set of 162, so I probably won’t kick it off today.

more...

Fan-Service Rocks, episode 12


It has been at least 45 years since I last thought about crystal radios. Mine was a kit, probably from Radio Shack because there was still such a place, and it didn’t hold my interest long. If only I’d known the attraction it held for rock-junkies and their busty allies, things could have been different.

Anyway, Ruri finds her grandfather’s homemade set (while looking for his rocks, of course), has no idea what it is, and since there were crystals inside the box, heads off to Nagi to find out what’s what. Nagi and Imari are too busy to give the girls more than a quick lecture and a shopping list, but Busty Gal Pal Aoi gets pressed into (and for) service and ends up enjoying the adventure.

Frustration over the weak signal leads them to seek higher ground, and without realizing it, they end up at the same place grandpa tested it originally, a local shrine. The story’s all about connections, and in the end, the priest turns out to be connected, too.

And then Imari gets lucky, playing a classic trope straight to set up the next (and last) episode.

Future Waifu Society

I genned a batch of retro-sf cheesecake Thursday with the Pin-up Girl and SNOFS LoRAs loaded (the latter at 50% strength), and… forgot to trigger them. Both have some influence on the output even without trigger words, but the net result was that the majority of the pictures were pretty much the same as the last batch of retro-sf gals, so I had to skew my deathmatch toward the ones that picked up at least a little of the pin-up aesthetic. Then I kicked off another batch on Friday with a new set of corrected prompts. Results of both sets below.

Next up? I had Claude tear apart the over-familiar SF location prompts and put them back together broken down by category and reassembled in a bunch of different patterns. The faster/cheaper Haiku 4.5 model didn’t manage to put 50 unique elements into each category, but it got at least halfway there before it started repeating itself. Combinatorially speaking, it’s capable of at least 10,000 unique locations, but I won’t know if they’ll be interesting until I generate some pics.

Also, the next batch should have less fashion and facial disasters, since I set the weights for feathers, spikes, and tongues to be much, much lower. Qwen doesn’t know what “feathered hair” or “spiked hair” mean, and tends to go a little overboard when those adjectives are used anywhere. And mentioning a tongue guarantees an exaggerated expression where it’s stuck out at the viewer, and usually not in a sexy way. Still running about 4% limb disasters, though, and that’s being generous.

First batch

The refine/upscale process is working pretty well now, with one small problem: toes. They were fine before upscaling, sigh, so don’t count them or point out that the big toe (if any) is on the wrong side. Sigh.

more...

Fan-Service Rocks!, episode 11


Imari takes the lead again, with Nagi off to a conference in America until the end of the episode. Growing into the mentor role, Imari gives Our Girls another way to look at rocks, and a field test inspires Ruri to begin thinking like a scientist, leading the team to search for supporting evidence on the sapphire’s origins. Which they find, tying in the local mythology again.

By the way, I happened to catch the name of the school, 前芝 = Maeshiba = “front lawn”. It doesn’t appear to be a real place, unlike some of the other locations used in the show, which are scattered across Japan in ways unreachable as day-trips in Nagi’s car.

(the real name of the school should be Waifuhaven College…)

Dear Slashdot summarizer…

I think you should reconsider your use of the word “despite” here:

The heightened scrutiny comes as Microsoft prioritizes investment in generative AI while overseeing a gaming division that has struggled despite spending $76.5 billion on acquisitions.

The unholy love child of Clippy and Bob has arrived. Mico the animated Copilot avatar will be turned on by default.

This bubble can’t burst fast enough.

New study: AI chatbots systematically violate mental health ethics standards

Whipped cream and other delightsmagical girls

Taking over the world, one desk at a time, Baiser/Leoparde style.

Stick a pin-up in it, it’s done

While the previous LoRA met the goal of adding a bit of flavor to the cheesecake, it’s not stable yet, doesn’t play well with others, and its nude side is overtrained on fake boobs. SNOFS has better variety there, but really wants to go hardcore, which is not what I’m looking for in cheesecake wallpaper. Enter Pin-up Girl, which captures the classic pin-up aesthetic and doesn’t turn pretty girls into melty mutants when combined with half-strength SNOFS.

The results were encouraging, and the refine/upscale process only introduced relatively minor flaws (changed facial expressions, some really distorted background items, etc) , so I didn’t have to reject a bunch and try to remake them:

more...

This week, I'm feeling Uber


Usually I pick up my niece after school one day a week, to help out with my brother’s schedule. This week they’re extra-busy dealing with nephew’s issues, so I’m picking her up at school, dropping her off at after-school sports, and then picking her up a few hours later.

The sports facility in question is shared with the University of Dayton’s teams. Which means that I get to see healthy college girls in sportswear while I wait to pick her up.

“No, no, I don’t mind showing up early to get a good parking spot.”

Today He Learned…

“Always mount a scratch monkey.” (classical reference, versus what really happened)

Reddit post on r/ClaudeAI, in which a user discovers that blindly letting GenAI run commands will quickly lead to disaster:

Claude: “I should have warned you and asked if you wanted to backup the data first before deleting the volume. That was a significant oversight on my part.”

(and that’s why I isolated Claude Code in a disposable virtual linux machine that only has access to copies of source trees, that get pushed to a server from outside the virtual; if I ever have it write something that talks to a database other than SQLite, that will be running in another disposable virtual machine)

Fapper’s Progress…

(that’s “FAbricated PinuP craftER”, of course)

TL/DR: I switched to tiled refining to get upscaled pics that look more like the ones I selected out of the big batches. I also used a different upscaler and left the step count at the original 37, because at higher steps, the upscaler and the LoRA interacted badly, creating mottled skin tones (some of which can be seen in the previously-posted set). As a bonus, total time to refine/upscale dropped from 10 minutes to 6.

SwarmUI only comes with a few usable upscalers, but it turns out there are a lot of them out there, both general-purpose and specialty, and side-by-side testing suggested that 8x_NMKD-Superscale was the best for my purposes. The various “4x” ones I had used successfully before were magnifying flaws in this LoRA.

(note that many upscalers are distributed as .pth files, which may contain arbitrary Python code; most communities have switched to distributing as .safetensors or .gguf, so if you download a scaler, do so from a reputable source)

Some of the seemingly-random changes come simply from increasing the step count. Higher step counts typically produce more detailed images, but not only are there diminishing returns, there’s always the chance it will randomly veer off in a new direction. A picture that looks good at 10 steps will usually look better at 20 or 30, but pushing it to 60 might replace the things that you originally liked.

For instance, here’s a looped slideshow of the same gal at odd step counts ranging from 5 to 99. I picked her based on how she looked at 37 steps (with multiple chains and a heart-shaped cutout over her stomach), but you can see that while some things are pretty stable, it never completely settles down. I’m hard-pressed to say which one is objectively the best step count to use, which is problematic when generating large batches.

Skipping the refining step completely produces terrible upscaled images, but the higher the percentage that the refiner gets, the less the LoRA’s style is preserved. The solution to that problem appears to be turning on “Refiner Do Tiling”, which means rendering the upscaled version in overlapping chunks and compositing them together. My first test of this at 60% preserved the style and added amazing detail to the outfit, without changing her face or pose. It added an extra joint to one of her knees, but lowering the refiner percentage back to 40% fixed that.

More tinkering soon. Something I haven’t tried yet is using a different model for the refining steps. A lot of people suggest creating the base image with Qwen to use its reliable posing and composition, and then refining with another high-end model to add diversity. This is guaranteed to produce significant changes in the final output, possibly removing what I liked in the first place. Swapping models in and out of VRAM is also likely to slow things down, potentially a lot. Worth a shot, though; SwarmUI is smart enough to partially offload models into system RAM, so it may not need to do complete swaps between base model and refiner.

Rescue Kittens

I rejected the original refine/upscale for this one because she grew extra fingers. She’s still got an extra on her right hand, but it’s not as visible as the left.

more...

Fan-Service Rocks!, episode 10


“In that moment, Imari grew up.”

This week, Imari flies solo. More precisely, Nagi can’t join the Let’s Explore A Manganese Mine expedition, so Our Big Little Bookworm’s insecurities come to the fore as she takes responsibility for the girls in territory none of them have visited before. Shoko is adorably confident in her chosen mentor, but Ruri gets a wee bit too snarky when deprived of her idol.

A tunnel collapse keeps them from reaching their destination, and that’s when a well-researched novel comes to the bookworm’s rescue. All’s well that ends well, and while Imari isn’t ready to fill Nagi’s… “shoes”, she doesn’t disappoint.

More GenAI Faprication

🎶 🎶 🎶 🎶
And I would gen 500 wives,
    and I would gen 500 more.
Then quickly deathmatch through those thousand wives,
    and blog the ones ranked 4.
🎶 🎶 🎶 🎶

This time around, we have a Qwen LoRA that actually works. Most of the ones I’ve tried have either changed nothing detectable or were overtrained to the point of making everything worse. Our new friend is Experimental-Qwen-NSFW, which has a very strong anime bias, and adds a touch of naughty even to prompts that don’t push its buttons. Also elf-ears and the occasional tail.

I used the revised-and-expanded retro-sf location & costume prompts, the new physical-expression-based moods, and the rest was unchanged. The LoRA exaggerated the poses and facial expressions, and despite its flaws (strange fingers, extra limbs, knock-knees, and “poorly-set broken bones” being quite common), it livened things up nicely. It even added some Moon diversity.

Downside: the refine&upscale pass had a tendency to magnify the LoRA’s flaws. In one case, it took two perfectly normal hands and added extra fingers in odd positions. In another, it changed the poses of the men in the background to match the gal’s sexy walk, which just looks goofy. About a dozen of them were made objectively worse, and another half-dozen had changes I didn’t care for, even if you wouldn’t know unless you saw the original. This is using the commonly-recommended 4xUltrasharpV10 upscaler, but I get the same sort of changes with others.

I briefly flirted with a tool for converting the metadata to a CivitAI-compatible format for uploading there, but the author silently changed its defaults to overwrite your saved originals, destroying the original metadata that lets you reload the exact settings in SwarmUI and refine/upscale. Fortunately I tested it on only one image. It also prefers to destructively modify an entire directory at once, so, yeah, not linking to that tool’s repo. It’s a simple JSON massage to the EXIF data, so I’ll just roll my own at some point. Or have Claude do it.

Speaking of Claude, I gave up on using their suggested devcontainer approach in VS Code (which I didn’t really want to use anyway), and installed the node-based Claude Code CLI inside of a VMware virtual machine running Ubuntu 25. Code is rsynced to a shared folder to make it available inside the VM, so it can’t see anything else and can only operate on copies.

(these are the ones where the defects aren’t so bad I have to re-gen them with a variation seed; some that I almost included turned out to have mottled skin tones, mostly on the legs, and I like my waifuskin like I like my peanut butter: smooth and creamy; also, without nuts)

more...

Fan-Service Rocks!, episode 9


I approve of Imari’s attempts to improve Nagi’s wardrobe. She looks good in anything, and fan-artists have gleefully expanded her range. This week, we bounce into a game of Opals For Oppai!

Interesting to see Ruri’s reaction to L’il Red Shoko choosing Imari as her preferred mentor. A small detail, but character-developing.

“How hard could it be?”

I sent my sister a sample screenshot from the work-in-progress gallery-wall app, and she asked if I could make it work for her, as she also has walls in need of galleries. Not being a command-line kind of gal, the ideal solution would be for me to use something like py2app to bundle in all the dependencies so she can drag-and-drop a directory onto a self-contained app.

Turns out that’s quite hard, at least if you’re Windsurf & Claude Sonnet 4.5. So hard, in fact, that in the end I told it to back out to the last commit before we started, and it gleefully did a git hard reset that erased all traces of its 90 minutes of failure. The app packaging went fine, after a few tries, it just couldn’t implement drag-and-drop or manage to quit cleanly. And the best part is that it learned nothing, and will make the exact same mistakes again tomorrow. Confidently, with exclamation points.

Pro tip: when your GUI app logs a line that says “run pkill to exit cleanly”, you have failed. Also, don’t gaslight the user by claiming that typing a directory name on the command line “is a better Mac-native solution than drag-and-drop”.

Breaking out the stone knives and bearskins, the simplest approach seems to be a three-line change to add a native-app wrapper with pywebview. py2app still blows chunks if you enable drag-and-drop, but at least it bundles up all the dependencies. The workaround is to use Automator to create another app that just launches the real one from a shell script with --args "$@", which is conceptually disgusting but functional.

(I had ChatGPT create an icon for the app (which takes a while when you don’t pay them $20/month…); it does not feature Our Mighty Tsuntail)

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