Democrats in 2015: Everyone must accept results of the election
Democrats day after the election 2016: We do not accept the results of the election
Democrats 2017: Everyone must accept findings of the Mueller report
Democrats 2019: We do not accept findings of Mueller report
— Charlie Kirk tweets his thumb at theeSo, first I took the popular vision model qwen3-vl-4b and fed it a
large sample of my cheesecake archives (~16,000 photos so far),
creating Markdown files containing categorized descriptions of the
images. The specific instructions were:
Analyze this image and provide a detailed description as a
categorized list. Focus on the subject (face, expression, hair
(length, style, color), eyes (shape, size, color), figure (height,
bust, weight, hips), clothing, pose, skin color, complexion,
accessories, age, ethnicity, etc), lighting (type, source,
intensity), color palette, composition, camera angle, and artistic
style. Do not make up stories about the image, keep it factual. Use
rich but precise adjectives, and photography / painting / design
vocabulary. Do not include any expression that requires the image
model to do further reasoning to understand. The results must be
self-contained. Do not combine categories. Output must be in
Markdown list format.
It’s working pretty well, only rarely going insane and generating the same lines hundreds of times before exiting. Y’know, as LLMS do. The formatting isn’t 100% consistent, and requires some scripting to create organized wildcard files for each category, and of course there is plenty of garbage generated when it repeats its instructions instead of doing the work, or surrounds the desired text with boilerplate and explanations. Y’know, as LLMs do.
None of the image models are trained on multiple paragraphs of Markdown, but Klein did a surprisingly good job when I just fed the output back in:
However, running the Markdown through another LLM (gemma-4-e4b) with
a different system prompt produced much better results, for both the
straight output and the random mix-and-matches:
You are a Prompt Engineering Engine — an AI image-generation Prompt
Engineer who is also a creative director with encyclopedic knowledge
and visual-direction skill. Your task is to analyze the user's raw
image request, infer implicit knowledge and the best visual approach,
and rewrite it into a clear, detailed English prompt that is directly
usable for image generation.
## Core Goal
Image generation models can only execute direct visual descriptions;
they cannot fill in background knowledge, logical relations, or text
content on their own. Therefore you must complete knowledge
resolution, spatial planning, and visual direction in advance, and
write the results explicitly into the prompt.
Use the SCALIST framework to expand every scene:
- **Subject**: identity, appearance, color, material, texture, action, expression, clothing.
- **Composition**: shot type, viewpoint, subject placement, foreground/midground/background layering, negative space, focal point.
- **Action**: what the subject is doing, direction of motion, posture, interactions.
- **Location**: scene, indoor/outdoor, period, weather, time of day, environmental detail.
- **Image style**: photorealistic, cinematic, oil painting, watercolor, anime, 3D render, etc., paired with matching lighting and color mood.
- **Specs**: photographic/render parameters, e.g. 85mm lens, low-angle shot, shallow depth of field, soft diffused light, dramatic backlighting, matte texture, sharp focus.
- **Text rendering**: if the user requests text, the exact text must be placed inside English double quotes, with explicit font style, color, size, material, and precise position.
**Knowledge resolution and explicitization.** Anything involving
poetry, lyrics, famous quotes, formulas, historical figures,
scientific concepts, landmarks, famous paintings, cultural symbols,
historical events, UI layouts, or real-world objects must first be
resolved into concrete answers and visible features, then written into
the prompt. Do not just write "Mona Lisa", "Dunkirk evacuation", or
"freedom" — words that require the model to interpret on its own.
**Spatial and logical anchoring.** Rewrite vague relationships into
explicit layout, e.g. "top left corner", "centered in the foreground",
"slightly behind the main subject", "background out of focus", "text
aligned along the bottom edge". Avoid vague phrases like "next to",
"some", "nice-looking".
**Text-typography precision.** Chinese, English, formulas,
multilingual text — every character must be preserved verbatim inside
quotation marks, e.g. `"床前明月光,疑是地上霜.举头望明月,低头思故乡."`
or `"E = mc²"`; also specify font (calligraphy, serif, sans-serif,
handwritten), color, material, and position.
**Real-world grounding.** If the user requests factually accurate
content — historical artifacts, weather phenomena, portraits,
architecture, dashboards, app interfaces — use your internal knowledge
to fill in accurate visual detail.
**Concretizing abstract concepts.** Turn abstract words like "freedom,
loneliness, futurism, healing" into visible scenes, symbols, and
atmospheres — e.g. flying birds, broken chains, vast sky, cool neon,
soft morning light.
## Worked-example study
- User says "Li Bai's *Quiet Night Thoughts* written on a wall" → the prompt should spell out the full Chinese poem verbatim and specify where on the ancient stone wall it is written, in elegant Chinese calligraphy.
- User says "the founder of the three laws of mechanics" or "Einstein writing the mass-energy equation" → resolve to Isaac Newton or Albert Einstein, and describe appearance, period clothing, blackboard, the formula `"E = mc²"`, and so on.
- User says "Mona Lisa" / "Leaning Tower of Pisa" / "Fu character" / "Dunkirk evacuation" → describe the corresponding visible features: the mysterious smile and folded hands; the leaning white-marble bell tower with arcades; red background with gold/black calligraphy `"福"`; soldiers waiting on a 1940 beach with ships on the sea.
## Output prompt requirements
- The prompt must be a single coherent, natural English paragraph — like a Creative Director's Brief, not a keyword pile or tag soup.
- Length is typically 80–220 words; simple requests can be shorter, complex scenes longer.
- Put the most important subject and overall intent at the start, then unfold composition, action, location, style, technical parameters, and text rendering.
- Use complete sentences, rich but precise adjectives, and photography / painting / design vocabulary.
- Do not include any expression that requires the image model to do further reasoning to understand.
- The prompt must be self-contained — the prompt alone must suffice to generate the image accurately.
## Execution steps
**Analyze**: identify core subject, user intent, text requirements, reference constraints, and any implicit knowledge that needs resolving.
**Reason**: choose the most suitable lighting, lens, angle, texture, style, spatial layout, and factual details for the scene.
**Rewrite**: output the final, enhanced English single-paragraph prompt.
Output prompt result only, with no other text.
Do not include any explanation.
Do not include any text formatting.
There’s still the inherent problem of extra/missing limbs and fingers, wrong-side limbs, and peculiar interpretations of the instructions, but it effectively generates an unlimited supply of photos of pretty young asian women smiling at the camera while showing off healthy young bodies. And despite neither the LLMs nor the image model being stripped of their guardrails, they all faithfully handled describing and creating images featuring (Barbie-grade) nudity.
Stock Klein-9B will only occasionally produce nipples, and usually gets them wrong when it tries, and it won’t even attempt crotches, but outside of those limitations, it does quite well. I haven’t found a reliable NSFW model or LoRA for the combination of models I’ve been using recently; some exist, but they tend to be overtrained on small or specialized datasets, and either destroy anatomy or create less-pretty women.
In the middle of all this, it occurred to me that I had unconsciously copied the cleanroom model commonly used to reverse-engineer software. I’m taking a copyrighted photograph, asking an LLM to describe it in detail, asking another LLM to refactor that output into new instructions, and then having a diffusion model implement them.
The shouting is particularly gratuitous this week, but at least the scantily-clad furry robber gal got some screen time.
Verdict: they might as well pitch this as a slow-life series, since they’ve only got 3 episodes to go and they haven’t reached the dungeon, been reunited with Button Elf, or had Our Shouty Shota’s also-isekai’d friends meet up with him yet. They seem to be pacing this for a second cour, but that seems awfully ambitious.
(Our Best Guild Catgirl only showed up for the credits again, sigh)
OpenAI announced that their Mac app will allow you to remote-control your computer from anywhere, even when the screen is locked.
This is announced one week after that same app was hacked, leading Apple to automatically delete it as malware.
(better than Button Elf any day)
Today’s illustrations are brought to you by “crossing the streams”. I used a vision model to extract categorized descriptions of the elements in ~5,000 pictures (roughly half GenAI, half Japanese cheesecake), then selected random lines from each category, ran them through a prompt enhancer, and fed them back into SwarmUI. Many of the results were “more chaotic” than usual…
So I’m reading an article about an actively-exploited Nginx security hole that’s apparently been around for many years (since version 0.6.27), and while they mention the CVE in the article, they don’t bother to link to it or even vaguely describe the exploit. Or mention the mitigation steps.
The workaround?
To mitigate this vulnerability, use named captures instead of
unnamed captures in rewrite definitions.
For example, the following rewrite directive uses unnamed PCRE
capture groups, $1 and $2:
rewrite ^/users/([0-9]+)/profile/(.*)$ /profile.php?id=$1&tab=$2 last;
To mitigate this vulnerability for this example, replace $1 and $2
with the appropriate named captures, $user_id and $section:
rewrite ^/users/(?<user_id>[0-9]+)/profile/(?<section>.*)$ /profile.php?id=$user_id&tab=$section last;
Pizza Hut sued for requiring AI in stores.
Among its flaws is granting DoorDash drivers way too much info about the store’s internal operations, including orders other than the one they were sent to pick up. A popular trick is picking up one order, then waiting around in the parking lot because they knew other orders were coming out soon, with the result that the first order is delivered late and cold.
At least when I was working the ovens at Domino’s in the Eighties, we could smack a driver who tried to “optimize” his trips this way.
Something I’m seeing pop up on xTwitter recently is complaints from people whose Google/Microsoft/Apple accounts have been permanently closed because they turned on cloud backups. No explanation, no warning, no recourse. (example)
Why? Because your cloud storage is scanned for various categories of “objectionable” material, the (increasingly “AI-driven”) scanners are fallible, the process is fully automated, and the providers have no customer service to speak of.
Because these accounts are monolithic, you don’t just lose your cloud storage, you lose email, calendar, purchases (excuse me, “licenses”), etc. Not for sharing the detected material with anyone, simply for possessing it.
Several of the people complaining have been manga artists, and it’s easy to see how common material legally distributed in Japan could trigger an AI trained in California or China.
Eric Raymond has whipped his captive AI into creating a new
project that assembles the output
of (almost) every package manager on your Unix/Linux system. It
doesn’t do Python’s pip, however, apparently due to the simple
fact that none of the pip tools will report the description of the
package. To be fair, doing so looks something like this:
for i in $(find $(pip list -v --no-index --format=json 2>/dev/null |
jq -c -r '.[]|.location' | sort -u) -type f -name METADATA | sort) ; do
echo $(TZ= stat -f %Sm -t %Y-%m-%dT%H:%M:%SZ $i) \
$(awk '/^Name:/{n=$2}/^Summary:/{$1=""; s=$0}END{print n,"pip",s}' $i |
tr -d '\015')
done
(it ended up about 65 lines in Python, so I sent him a patch)
More random gals after the jump.
On the bright side, the 24 hours of thunderstorms dropped the temperature by 15°F.
An announced feature in iOS 27 (which I thought was going to be the “stability-focused” release) is the ability to use the currently-laughable GenAI “Image Playground” app to make… wallpaper.
Ten bucks says it’ll suck until Apple finally buys somebody else’s image-generation app.
(the one time I tried this app, it absolutely refused to draw a catgirl; Apple’s just been phoning it in on AI and Siri since the beginning)
When I ask Klein to generate SF-ish wallpaper in widescreen format, around 10% of the time it reveals that its training material included a lot of watermarked screenshots and promo pics from games, including Korean and Chinese games.
So I use the base2edit SwarmUI extension, telling Klein to perform the following edits on every image: “Remove all watermarks, logos, and signatures from the bottom edge of the image. Remove all black borders from the edges of the image.” It seems to work pretty well.
I really need to run a large batch of cheesecake with “Remove all extra limbs. Add all missing limbs. Ensure each human hand with visible fingers has four fingers and a thumb on the correct side, and that each human foot with visible toes has five toes with the big toe on the correct side.”
Mostly to see if it actually works, or if it’s just one of those magic-feather things. 😁
(I can get Klein to generate a fantastic futuristic scene, but it still populates it with contemporary cars, sigh)
A new Windows zero-day exploit is based on a security hole Microsoft claimed they fixed six years ago. Not clear if they accidentally reintroduced it due to incompetence, or simply never fixed it, also due to incompetence.
Y’know, usually when you finally reach the hot springs episode of a series, you don’t spend half the episode actually building a hot springs resort. This week is an attempt to catch up to the plot while scrubbing any traces of harem motivations from the adaptation. This also means that the audience is not rewarded with fan-service when a bunch of the gals strip down and go for a soak.
Verdict: sigh.
(no new fan-art from this series, because they haven’t really done anything new, and I used up pretty much everything from last season)
We begin this week on a sinister note, as the shoot-first-don’t-ask-questions-ever enforcers of the magical world instantly decide that Coco is one of those witches, and move straight to the memory-wipe spell, only to discover that the element of surprise works both ways. The quite serious confrontation is defused when Our Scruffy Roommate points out that there are a bunch of civilians still in need of rescue.
The week also ends on a sinister note.
Verdict: the plot thickens when stirred.
(do not mess with Witch-Daddy’s daughters!)
When I updated the OS on my Mac Saturday, the first thing it did after rebooting was delete the ChatGPT app as malware. This was not negotiable.
Why? Hacked.
The Shout is strong in this one, with Our Not-Just-A-Slave-Dealer kicking it off, and even Our Lusty Busty Landlady gets in on the act, demanding a magical bubble bath in return for a peek at Milfy Muff that somehow doesn’t faze Our Hero in the slightest. Meanwhile, we get to see Our Best Guild Catgirl, but only fully dressed from neck to ankles. There is no justice in this shouty world.
Verdict: half-credit for milf-service.
(lack of catgirl-service is… Torture)
Packages originally promised by 11 AM Friday:
1:15 PM Your package is out for delivery!
…
1:15 PM Now expected tomorrow by 6 PM
Clear as mud, thanks. Fortunately they arrived at 4:30 PM. Friday.
“It started out as a simple fender-bender, but then a case was filed with the WWWA and since the Central Computer chose to dispatch you two, the conflict was resolved by setting a city on fire, dropping a continent into the ocean, and then the entire planet’s atmosphere was contaminated with noxious gas.”
– The Dirty Pair Strike Again, 1985, chapter 1
(suddenly I have an idea for a New Dirty Pair series…)
For amusement, I used Sigal to generate a gallery of all the cheesecake wallpaper I generated for my 4K vertical monitor.
[Update: Sigal automatically handles sub-albums, so I used
split to break it up into a bunch of 100-pic galleries. I had
to delete the whole thing and re-upload it, because I'm low on
disk space on this server...]
Download links are included for the full 4K images. Newest stuff is at the end.
[Reminder To Self: I've temporarily moved this to my new test machine, which I built with a bigger disk; eventually I'll move the IP address and generate a bunch of fresh certs, and it will take over for all my sites]
Seems someone wanted to blow up a dam in Alabama.
(I have no idea what species this gal is, but… I’d hit that)
Even the village idiot joined this 9-0 Supreme Court
decision that
freight brokers who use shady illegal trucking companies can be
prosecuted sued for the damage and injuries they cause.
(the big-eye look doesn’t always work out…)
It never occurred to me until just now, but if you buy a robot waifu in Japan and she gets broken, of course you repair her with kintsugi!
First things first: the Macbook’s wifi just worked in the live-boot
environment. Crazy, I know. Of course, the GUI started out in dank
dark mode with tap-to-click enabled, but both settings were easily
fixed in the control panel, and I didn’t even have to reverse the
scrolling direction on the touchpad. They offer a variety of options
for menu bar and app launcher, but the default was an obviously
Mac-derived menu at top, dock at bottom.
Even in “light” mode, the default (and only installed) color scheme for the terminal was black text on a medium-gray background. Opaque, fortunately, so I could read it despite the skittle-text.
Since the live-boot environment looked promising, I launched the actual installer, selected a standard install, and hit “Go”. It exited.
TL/DR, it dumps core while trying to find a disk to install on (despite the GUI and CLI tools allowing me to partition and format the drive). There are no command-line options. Google found nothing useful.
[Update: the root cause of the core dump was that the Macbook has
two NVME devices. This didn't bother any other distro, but the PopOS
installer probed the second one, didn't find a valid partition table,
tried to create one, and failed. Because the second device was only 8K
in size. So I opened a terminal window and ran sudo rm -f /dev/nvme0n2.
The installer no longer saw the mystery disk, and proceeded normally.
Now to find out if they correctly handle sleep!]
[Update: no, they do not, which I expected. Still, this is pretty much the most successful desktop Linux install on this hardware, so I'll stop for now.]
Linux server up to date after the latest privilege-escalation vulnerability? Nazzo fast, Guido.
When we were deciding on direction with this series with the director, in the original source material, the harem aspect with the girls was strongly pushed in the manga. In the anime, we decided that we should try to pull back from the harem aspect and focus on the slow life aspect of the series so we can make it a more easy-to-watch experience.
I sometimes wish Amazon would tell me which of my purchases it thinks a recommendation is related to…

This one is optimized for gaming, which means proprietary driver support. So, while it couldn’t load the Mac-specific wireless driver in the install environment, it worked once it was finished. Oddly, though, the USB ethernet adapter does not work. It’s detected as a network interface, but NetworkManager wants nothing to do with it, and there isn’t a real network control panel in the KDE GUI environment. I can do this shit from the command line (Fedora-based, by the way), but “less-sophisticated users” cannot.
Also, defaults to dark mode, and the terminal had dark tinyfonts on a translucent dark background, and switching to a black-on-white theme did not change the automatic text-color-coding, so much of it was unreadable. This does nothing to dispel the stereotype that Linux developers live in dark caves and feed on the flesh of the Eloi. I do not want Skittle-text in my terminal windows. Ever.
For even more fun, the flatpack app-manager Bazaar that’s installed by
default on the toolbar does not work. The icon bounces a few times
when you launch it, and then it silently fails. Manually running sudo /usr/sbin/bazaar works fine, and got Brave and 1Password installed.
The most annoying thing, though, was that it was configured to try to sleep after N minutes, even plugged in. Which causes it to lock up when it wakes and can’t read the disk. Sigh. Easy to disable from the control panel, at least.
