Spooky Chat GPT Stories

Over on Tipa’s blog, in the comments, we were talking about AI generated prose. OK I was talking. Pontificating, even. I’m becoming one of THOSE people.

Anyway as a test I asked GPT-5 to “Write me a short horror story about a teenage couple out at Lover’s Lane being chased by Hookman” — I don’t know if the old story about the guy with the hook is still being told in the days of social media but when I was a kid it was a classic. Anyway my point was to try to illustrate the cadence or pattern of AI story telling, and to that end I posted part of the story in the comments over at Tipa’s.

But then I felt bad not sharing the whole thing because, even though it has a few clunky moments in it, it’s still a story and stories should be finished. So here is the whole thing, verbatim from that 1-shot prompt:

Oh, and the (too dark!) image at the top of the post is the image GPT-5 created to illustrate the story.

============

They park where the asphalt dissolves into scrub and gravel, where the ridge falls away and the town below is a scatter of orange sodium lamps. The sign that says NO TRESPASSING is riddled with old birdshot. The others call it Lover’s Lane, but Maya calls it the end of the world because the guardrail gives up halfway along the curve, like even metal decided this place wasn’t worth holding onto.

Ben kills the engine. The night swallows the last purr of the fan belt, and the windshield fogs at the edges. He scrolls for a song and stops when the radio catches static instead: a thin whisper between stations, like breath pressed to glass.

“Spooky,” he says, a grin that wants to be brave. “So. What are we doing, apart from ignoring public signage and our better judgment?”

“Making fun of the story,” Maya says, but her voice is too low to pass as mockery. “The one they tell in freshman health. The escaped patient, the hook for a hand. The scratching on the roof. Don’t make out at the ridge unless you want to end up on a poster.”

“It’s always a hook,” Ben says. “Never, like, a guy with a spatula.”

“Spatula Man sounds less persuasive.”

The wind tilts and carries a smell of wet leaves from the tree line. Something knocks—one clean tap—on the trunk. They both freeze and then laugh at themselves. “Acorn,” Ben says at the exact moment Maya says, “Rock.”

He kisses her forehead. It’s gentle, quick, an apology for teasing.

Another tap. Not the crisp clack of an acorn. A patient, thoughtful thud, as if someone is considering where to knock next.

Ben breaks first. “I’ll check,” he says, and unbuckles. Maya catches his sleeve.

“Wait,” she says. “Don’t do the thing in the story.”

“In the story he gets dragged up a tree. I’m taller.”

He steps out into the night. The dome light spills a weak circle and then fades when he shuts the door. Maya watches his shadow cross the bumper, hears him kick gravel. He vanishes behind the open trunk, and for a heartbeat the silence yawns so wide that she feels it in her teeth.

“Ben?”

“Nothing,” he calls back. “Tree limb fell, that’s all. It dragged along the—”

Metal squeals. Not loud. The soft, peeling cry of paint parting ways with its faith in steel.

“Ben,” she says again, and he’s already around the corner of the car, eyes too wide.

“Get in,” he says. “Get in now.”

She doesn’t argue. He slides into the driver’s seat, breath sharp, and the key ticks in the ignition. The engine churns, coughs, grudgingly catches. The headlights flare at a low angle and find the break in the guardrail, the empty drop beyond—nothing else.

“Maya,” he says, too fast. “I thought I saw someone by the trees, like a coat or—just—someone tall.”

“Tall’s not a coat,” she says. “Ben, did you see—?”

The radio snaps from static to voice, a monotone murmur threaded with beeps. “…accident on County 12…avoid the area around Mill Creek Road…transport vehicle overturned…”

Ben turns it off. The silence that follows is somehow worse.

“Okay,” Maya says, like she’s negotiating with the dark. “We’re leaving. Slowly, safely, with our seatbelts on.”

Ben shifts into reverse. The car rolls back; the tires crunch over something that flexes and then gives. The motion is wrong, like dragging a chain. He coaxes the wheel to tuck them around, to face the ribbon of road back toward the world.

In the mirror, the tall thing steps out of the trees.

Maya doesn’t scream because the noise catches on the sight of it: a figure in a rain-dark coat that hangs too straight, head tilted, one sleeve pinned to a shoulder where a hand should be. The other arm ends in a long curve of metal. Not shiny. It sucks the light in like old oil.

“Ben,” she says quietly, because there is a version of the story where you don’t startle prey.

He floors it.

Gravel spits from under the tires. The car surges and the figure moves with that same patient consideration, three long strides that offer no hurry, and then a sound like a shovel catching a stone. The chassis shudders. Something bites into the back end and draws a line through it.

“Is he—attached?” Maya asks, her voice high and dishonest.

Ben doesn’t look. He can feel it in the wheel, the weight added wrong. He swings onto the narrow lane, the pines on either side press close, and the dark behind them lifts and falls as if a pendulum rides their bumper. The road kinks left, right. The thing drags; the hook skates and catches, skitters across asphalt. Sparks spit off the guardrail as metal kisses it, a stitched line of orange.

Maya twists in her seat just long enough to see the face. Or the place a face should be. There’s a shape, a suggestion, and then the hook jerks, slams against the license plate, and the car fishes.

“Hold it,” she says, because her father taught her to talk through panic while learning to drive in a snowstorm. “Low curve coming. Bend your knees, not your elbows.” She realizes that applies to weightlifting and not driving, but Ben’s knuckles ease a shade from bone white anyway.

The hook digs deep with a sound like a zipper unfastening a house, and the car lurches. Ben wrenches them into a hard right, hugging the inside edge so tight that weeds slap the mirror. For two seconds the drag vanishes; the car leaps forward as if relieved. Something heavy tumbles free behind them, clanging end over end until the sound is swallowed by the hill.

They don’t celebrate. They don’t look back.

The town arrives like a dream remembered. Streetlights. A parked truck with a dented door. A cat beginning its night shift under a porch. Ben pulls into the first place with fluorescent light and a roof: a gas station that never seems to have any customers but always has the humming, lonely glow of being open.

They sit. Breathing. The engine ticks itself cooler.

The attendant inside watches them through the window. He is older than the store, Maya thinks, or at least the same age as its tile. He wipes his hands on a rag that was once white. He does not smile.

They get out together, staying on the same side of the car as if leaving space on the other for whatever might still be there. The smell is new: raw metal, sharp as a coin between teeth. Maya rounds the trunk and sees the groove—thick, ragged, torn through paint and primer like someone signed their name with anger.

And the hook.

It’s not attached to anything. It’s caught in the torn seam where the bumper meets the quarter panel, buried to the bend. Thick. Old. The metal pitted, stained like the inside of a well. A length of rotten leather still loops the shank. It looks less like a prosthetic and more like a tool taken from some older barn.

Maya reaches without thinking. The attendant clears his throat. “Don’t,” he says, through the cracked door he’s opened three inches. “Leave it where it is.”

Ben swallows. “Sir, I—there was a man—something—”

“I know the story,” the attendant says. He doesn’t step outside. He seems to be measuring the air around them, like a butcher weighing nothing on a scale. “Call someone with a tow. Don’t drive with that in. Don’t try to pull it out. It’s a promise.”

“A what?” Maya asks.

He closes the door. He turns the sign to CLOSED, though it never is. He kills the lights in one half of the store, then the other. The humming stops. The glass becomes mirror-black, a rectangle of night reflecting night.

Ben and Maya stand by the car in the sudden quiet.

“We’re not staying,” Ben says, and his voice tries to be the voice of a person who has not done anything stupid tonight. He opens the driver’s door. Maya does the same on her side. The hook rests, heavy and patient and impossibly final in the car’s flank.

They drive anyway.

Every turn of the wheel hums a song in the metal. The town recedes; their street arrives, familiar as a hallway in a dream. They pull into the driveway. The porch light their parents left on is a domestic moon.

Ben kills the engine. The ticking starts again. They sit and listen to their house imagine them inside.

Maya lets herself picture opening her own front door and pulling it shut and leaning against its solid weight. She lets the picture blend with this one—the car cooling, the hook sleeping—and the two visions don’t meet cleanly. It gives her a headache.

“Maybe we should tell someone,” she says, but the word someone is a fog that doesn’t hold any shapes she trusts.

“Tomorrow,” Ben says. “In daylight. When it’s a story again.”

They get out together. The porch light slants over the car and makes the hook gleam with a dull, wet sheen. The cut along the metal flares, just for an instant, not red but a color too old to name.

On the way to the door Maya hears it: a tiny clink against the rear window, like a ring tapping glass. Then another. She turns. The hook hasn’t moved.

From the black cut line, thin and almost invisible, hangs a single grey hair caught under the edge, matted and long, lifting and falling in the small wind as if something inside the seam is breathing.

They go inside and lock the door, and their house holds them like a hand.

In the driveway, the night collects. Somewhere down by the ridge, an engine tries to start and fails, trying again, patient. Up here, on their car, the hook rusts by the hour. Maya imagines how stories travel: how you leave something behind so the thing you want knows which way you went.

They don’t sleep. The ring of metal against glass comes once, much later, from the back porch this time, soft as a polite knock. Then again, closer, as if the night has remembered their names and is practicing how to say them.

 

===========

 

Here’s the cover image somewhat color-corrected by the carbon life form. Funny how wrong it got the hook, actually.:

August 2025

The end of the month really snuck up on me this time around. It’s been a pretty good month for us. Unusually cool, which for here just means I don’t think it hit 100F at all in August, or if it did it was early in the month. Today we have the doors and windows open, at least for the morning. Fresh air… what a treat.

I don’t have much to report this month but for the sake of completeness, here we go.

Playing

Wuthering Waves is the only game I’ve been playing regularly, and even that not very much. I’ve been so fascinated with various AI related projects that gaming just wasn’t very interesting to me, though in the last week or so that itch is coming back (and I welcome that itch). I was pretty sure it would and I’m glad I didn’t try to ‘force it.’ Anyway that isn’t relevant to Wuthering Waves, so back to that. I still don’t have any characters to level cap and I just arrived in the second big area, the name of which I completely forgot. It’s a religious place where they treat their sentinel as a god.

I really have to do some research on team building, but I’d really prefer to learn how to put together a good team vs just looking one up. So that entails a bit of work and concentration on my part.

Right now I’m rocking Havoc Rover, Senhuan (???) (the character you get early for logging in for 5 days or something). She’s some kind of guard and is ice-based. And Baizhi (?? these names trip me up so bad) as my healer. So all very early game characters. I’ve been working on getting their skills and weapons up to par before leveling any of them more since the game seems to ramp up difficulty whenever you level someone up. I have done a decent amount of pulling and have better (presumably) 5-star characters but I haven’t gotten far enough in the story to farm their mats and I refuse to skip ahead! So we’ll see where I end up by the end of September.

AI Gaming is another thing I’ve been looking into, and first I guess I have to explain what I mean by that. Basically my attention has drifted from AI generated art to AI generated words, riffing off the various chat bots to see if there is something a bit more robust out there. I mentioned Silly Tavern in a previous post and I’m still messing around with that, but I keep tinkering with it rather than using it, trying different engines and stuff. In the interim I’ve found another option called AI Dungeon which has apparently been around since 2019! It’s a tool for something that falls somewhere in between collaborative writing and text-based roleplaying. I was really impressed when I used the Quick Start option and then picked “Fantasy” as genre and “Thief” as character type. I assumed I would start in a pub with my friends the elf mage, the dwarf fighter and a human cleric or something. Instead this is the plot summary/starter I got:

You’re Trae, a skilled thief, master of disguise and con artist of the Field of Miracles crime syndicate in the Triflumina Republic, a city-state in the Fioran League within the world of Larion. The trouble all started when you pulled off what you thought was the heist of a lifetime, stealing a precious magical seed intended for the enchanted gardens of Donna Veronica. Then someone stole the seed from you, and it all went downhill from there. It doesn’t help that your guappa (kingpin), Donna Bianca, was already on poor terms with rival guappa and deadly alchemist Donna Veronica, still fuming over how Donna Bianca stole Capitan Rinaldo’s… “heart” from her.
The Fioran League is a collection of city-states known for their merchant princes, mercenary armies, alchemical innovations, and cut-throat politics. Triflumina, city on the Sea of Serpents famed for its Water Arena battles, masquerades and corruption, is caught in a power struggle between various factions, including the criminal syndicates of the various guappi, alchemists’ covens, and the blind Doge Crepido, who doesn’t need eyes to know everything that anyone says or does.
Your fellow thieves – Spinetta, Taddeo, and Sanno – are both potential allies and rivals. In a city as corrupt as Triflumina, friendship is sacred and betrayal is paid for in blood.

I’ve never played real D&D or any other table top RPG, but that seemed pretty intriguing to me and I jumped in. It took a few minutes to get the hang of things but before I knew it I was caught in a web of intrigue. Now out of the box it isn’t really a game.. there are no stats or anything. But apparently you can add scripts to make things more game like. I really JUST discovered this yesterday so I am still learning, but I think it has potential.

Things I like:
1) There’s a MATURE toggle so you can filter out all the sext-bot stuff that is so prevalent in this space. In fact that stuff is off by default.
2) If you decide to turn on the MATURE stuff, it seems a little bit… classier?? than other stuff I’ve seen. More bodice-ripper and less Penthouse Letters, if that means anything to anyone.
3) The writing feels pretty good for what it is, and if the AI takes a turn you just don’t want to follow it down, you can easily re-write what it suggested and guide the story in another direction.

Things I don’t like:
1) The free version gives you a really dumb model that loses track of details really quickly. I wouldn’t waste too much time on the free version, but you can get 100 free “actions” on their low-tier paid model each day. Using those free moves gives you a much better experience, but that means if you want to get into this heavily you’ll need to pay.
2) Their paid plan is tiered, from $10/month up to $50(!)/month. 4 paid tiers in all. Better tiers get you better models and more tokens, but as a noob it’s really hard to decide what’s right for you. The more tokens you have the more of the story your AI partner can keep tabs on, but how much is enough? I have no clue.

I’m still up in the air on whether I want to try a $10 or $15/month sub just to see the difference. I think I’ll worry about that if I ever run out of the free tokens.

But overall I’m kind of impressed by this service. And I LOVE that it has me quasi-writing fiction and storytelling again. Feels good. I’d still like to see how close I can get to it in Silly Tavern, though if I need a $2000 video card with 24 GB of VRAM to get there…maybe paying isn’t so bad!!!

Watching

No real surprises here:

Star Trek Strange New Worlds (Paramount+): SNW has taken the #1 spot in my Star Trek heart. I just love this show so much. And I love how well they can swing between the silly episodes and the serious ones. If I could change one thing about SNW… I don’t think I’d change anything. Except maybe the cancelation date.

Wednesday (Netflix): Season 2 isn’t grabbing me quite the same way season 1 did. Part of it is that so many of the actors have changed so much; the danger of using young actors and letting several years pass between seasons, I guess. And bringing in the whole Addams family makes it feel like an Addams Family reboot rather than a “Wednesday and her Frenemies” show. Don’t get me wrong, I don’t hate it or anything, I just don’t love it as much as I loved season 1.

Invasion (Apple TV): We needed something to fill the gaps between eps of SNW and waiting for the 2nd half of Wednesday and a new season of this show dropped. We decided to do a complete re-watch which maybe wasn’t the best idea. The show is good but maybe not THAT good.

Reading

Bearers of the Black Staff: Legends of Shannara — I’m still working through my complete Shannara read-through. We’ve jumped forward another 400-500 years and the characters from the last book have become the stuff of legends. But there are still parts of the old world (aka our world) kicking about. I’m only about 1/4 through so not real thoughts yet. I’m not reading too much these days.

And that’s August come and gone. We’re trying to find a new place to live, targeting December as our move date, and now that it’s a bit cooler we’re going to need to get busy, so the next few months are going to get pretty hectic. We’ll see what impact that has on my various projects, but I’m looking forward to living somewhere new without quite so many reminders of Lola everywhere. Yes, months later we’re still grieving over that silly little dog. 🙁

More AI Slop; AI Upscaling Video Game Characters

I’m learning new stuff every day when it comes to AI and image generation. Today I was working on upscaling using Flux.

I started with this image of a character from Crystal of Atlan. It’s just a cropped screenshot I took while playing:

screenshot of character from Crystal of Atlan
Partial screenshot from Crystal of Atlan

It’s pretty rough and I’m sure there are non-AI tools out there that you could use to sharpen things up and get a very accurate version without the pixelation. The problem with AI upscaling is that the AI has a ‘mind’ of its own and you probably won’t manage to get exactly the same image. I am using an Image 2 Image workflow where I start with the original image. Here’s what I got doing that.

AI upscaled image of the same character
Upscale using a pretty generic prompt

This was OK for a first attempt but there are some pretty significant changes, including the fact that we lose the weird anime game trope of 1 bare leg, 1 clothed leg.

So for the next attempt, I cheated. I uploaded the original image into Chat GPT and asked it for a Flux AI prompt that would generate the character. After a brief back and forth I ended up with this:

full body anime-style female character, standing in a heroic pose, mid-20s with long orange-blonde hair, blue eyes, wearing a green military-style jacket with rolled-up sleeves, black corset with silver details, white shorts, black thigh-high boots with asymmetrical design, black leather gloves, utility belts with pouches and a holster, futuristic fantasy adventurer aesthetic, detailed ornate belt buckle, confident expression, stylized fantasy background, sharp cel-shaded anime rendering, highly detailed character design. green jacket with gold trim, white shorts, black thigh-high boots with one leg fully covered and one leg bare, chest harness straps. character reference sheet, centered, full body

upscale with prompt
This time I used both the image and a long prompt

So now I have the legs right, but there are still a lot of differences. I tried to get it a little closer, not sure I really did. I made her boobs bigger so I guess that’s something. LOL. And I added a ‘digital painting’ to the prompt to give it a little something-something. Here’s my last attempt, with the prompt now being:

digital painting full body anime-style female character, large breasts with cleavage, standing in a heroic pose, mid-20s with long orange-blonde hair, blue eyes, wearing a green military-style jacket with rolled-up sleeves, black corset with silver details, white harness over the coret, white shorts, belt buckle with a silver star, black thigh-high boots with asymmetrical design, black leather gloves, utility belts with pouches and a holster, futuristic fantasy adventurer aesthetic, detailed ornate belt buckle, confident expression, stylized fantasy background, sharp cel-shaded anime rendering, highly detailed character design. green jacket with gold trim, white shorts, black thigh-high boots with one leg fully covered and one leg bare, chest harness straps. character reference sheet, centered, full body

more tweaks, same image
Tweaking the prompt to try to get it closer, and now I have an exposed mid-drift!

After adding that last one to the post I noticed how bad the eyes were, so I threw a face detailer into the mix. I wasn’t sure WHERE to put it… pre or post upscale. And this is actually a 2-pass upscale so I could have even put it between the two. But I left it as the last step. Now her face looks better but I lost some of the asymmetry in the leggings, and now the hands are kind of screwy. Clearly I could spend a LOT of time tweaking and changing things, trying new combos to try to get her closer to the original, but for now I’m going to leave her at this point.

same image only with a face detailer pass
Throwing a Face Detailer pass into the mix

The image at the top of this post shows the workflow as it stands now. The thing that amazes me is that I actually understand most of it. I mean there are TONS of levers to pull and settings to tweak and I don’t claim to understand ALL of them, but I follow the general gist. I based the workflow off of one of the ones in this YouTube video; this person does great ComfyUI tutorials.

If you want to see my workflow for reals, snag the image at this link and drag it into Comfy:
https://dragonchasers.com/wp-content/uploads/2025/08/upscale2_with_face_00005_.png

ChatGPT as Gaming Buddy

This weekend I discovered yet another fun use of AI chatbots: as gaming buddy/helper/mentor.

The setup: For reasons I don’t understand, my brain decided it was time to catch up on Genshin Impact. A couple years back I was HEAVY into Genshin (for me at least) and dumped something like 300 hours into it. Then I drifted away. I’ve tried to go back a few times but each time immediately got lost. I even created new accounts to try to re-familiarize myself with the game, but Genishin 3 hours in isn’t much like Genshin 300 hours in, so that didn’t help much.

On a whim I asked ChatGPT if it knew anything about Genshin and it (of course) said it did. It started by giving me decent but predictable advice like follow the Archon Quests and such. When I told it exactly what quest I’d left off on, it gave me some more specific advice, and was good about asking if I wanted info that contained spoilers, and when I said no it didn’t spoil anything.

It did get some things wrong. But this is video games, not brain surgery, so when it got something wrong I just went back to the old fashioned way of using search to fill out my info. And in at least some cases it might have been as much my fault in my description of things:

Me: There’s a blue circle with a star in it next to one of my character’s profiles (Barabara, if it matters). Any idea what that is telling me?

GPT:
Not basic at all—it’s one of those tiny UI doodads that the game explains once and then buries under ten layers of new systems.
That blue circle with the star inside means that character (Barbara in your case) has a Constellation available to unlock.

The marker I was referring to was actually telling me that Barbara’s ultimate was ready. But maybe there’s another blue circle somewhere, not sure.

Another issue of coming back to a game like this is not knowing where the meta has drifted to. I decided to give ChatGPT a list of the 29 characters I have on my account and ask for some team suggestions. I got a few, from casual running-around exploring teams to more focused teams. I decided to pick one and start working on those characters. I need to level some of them up, find artifacts and weapons for them, and just learn how they work together. Is GPT’s advice solid? No idea since I’m just starting. If any Genshin experts want to take a look, I stuffed the 1st team plan on a page here. If I were to make a prediction, I’d predict it probably gave me a team that was solid like 3 or 4 updates ago, but we’ll see. [Maybe I should do the same for Wandering Waves as it’s more likely one of you reading this post will know a lot about WW than about Genshin.]

But at the very least it gave me some goals to work towards while I get re-acclimated to Genshin Impact, and it was actually quite enjoyable to have a ‘friend’ to talk to about Genshin, even if that friend isn’t real. 🙂

Tangent: Microsoft is continuing to roll out CoPilot for Game Bar, and I actually used IT today too, when I went back to Clair Obscur after a 6-week absence. It took was somewhat helpful and it was kind of interesting I could access it without leaving the game. Not I think of it, THIS is why I thought to ask GTP about Genshin.

Is It Even Vibe Coding At This Point? (ChatGPT-5 Builds Me An App)

So as is obvious from recent activity around here I’ve been playing around with AI a lot, and downloading all kinds of models and addons. It was becoming a real mess and what a model does isn’t always obvious from the name. So for the past few days I’ve been telling myself I need to start documenting this stuff. First I just started with a text file but realized more structure would be good. So I thought of Excel or Google Sheets but I HATE typing data into spreadsheets. Next I thought I’d whip up a little php web app and host it tucked away here somewhere.

Then I thought… what a great time to test the new ChatGPT-5 that came out this week.

My Prompt:

I’d like you to create a little application for me to store info on my AI LLM model files. Please create it in Python with a user interface. Data can be stored in json or any other no-sql system. For each model I’d like to collect the following info, and I’m open to other suggestions if you have them. But here’s the list I have:

Type (checkpoint, lora, etc)
Base Model
URL
Description of what it is used for

Can you build me that?

A few seconds later, the response:

Heck yes, Pete — let’s spin up a tiny, no-fuss desktop app to track your model zoo. I built you a self-contained Python/Tkinter app that:

* Stores everything in a portable `models.json` (no-SQL vibes, zero setup).
* Gives you a clean UI to add/edit/delete entries.
* Lets you search/filter across all fields.
* Imports/exports JSON.
* Includes your core fields (Type, Base Model, URL, Description) plus optional nerdy metadata you’ll probably want later (tags, local path, license, format, quantization, checksum, VRAM need, etc.).

### Grab the files

* [Download `model_catalog.py`](sandbox:/mnt/data/model_catalog.py)
* [Download a starter `models.json`](sandbox:/mnt/data/models.json)

### How to run

1. Save both files to the same folder.
2. Run:

“`bash
python model_catalog.py
“`

That opens the GUI. It reads/writes `models.json` next to the script.

### How it works (quick tour)

* **Basic fields** at the top: Type, Base Model, URL, Description.
* **Optional metadata** (toggle in View → “Show Optional Fields”): tags, local path, license, format (GGUF/safetensors/ckpt), quantization (Q4/INT8/etc.), source (HuggingFace/Civitai), checksum, VRAM requirement, compatible engines, notes, etc.
* **Search** box filters the left-hand list live across all fields.
* **Open URL** button opens the selected model’s link (or whatever’s in the URL field).
* **Import/Export JSON** under File menu or buttons. Import merges by ID (no dupes).

### Design notes / why this setup

* **Tkinter** keeps it dependency-free. No Streamlit/Flask needed.
* **JSON** is human-editable, easy to version-control, and portable.
* **Schema-flexible**: you can ignore optional fields now and start filling them as your catalog grows. Future-you will thank past-you when you’re asking “which LoRAs were INT8 and ran on 8 GB VRAM?”

If you want extras next: checksum auto-calculation from a local file, drag-drop of files to populate `local_path`, or bulk metadata editing. I can also generate a CLI export that prints a neat table for quick terminal use, or a web UI version if you prefer browser-based vibes.

Annnnndddd…. it worked perfectly. Once I started using it I did go back to ask for more features, but I didn’t type a single line of code. In fact in honor of GPT’s personality I named it “Model Zoo”.

It’s not the sexiest thing you’ll ever see but it is doing exactly what I need it to do and really nothing else. I could have just asked for an HTML/CSS/Javascript version and it might have been prettier but I have SO many tabs open these days. I just wanted something stand alone. The data is just stored as a json file so we’ll see if it runs well once it gets super full (if it ever gets super full) but for now. Well that was like 10-15 minutes or work. The first iteration was under a minute, though.

So my job is going to be extinct soon, at least in its present form. Hopefully when company’s switch from hiring coders to hiring prompters who can validate code, I’ll be ready to make the jump!

If for any reason anyone wants the python file, give a shout.

[Cover image generated at venice.ai using the Flux model and the prompt (itself AI enhanced by Venice) A high-tech android with sleek, metallic skin and glowing blue eyes, meticulously typing code on a futuristic laptop with a transparent, holographic interface, surrounded by floating data streams and glowing circuit patterns in a dimly lit, high-tech laboratory environment with sleek, minimalist furniture and ambient LED lighting, 16:9 aspect ratio]

The Devil is in the AI Generated Details

For my next AI nerd trick, I decided to look into Detailers. Here is how my layman’s brain understands what is going on, and if someone knows better and wants to educate me, I’d appreciate that.

So when your LLM starts generating an image it basically spreads its resources pretty evenly. So if you ask it for a close up view of a face it’ll probably give you a decent face. But if you go for a full body shot you might find the face doesn’t look that great. That’s because faces, to us human beans, are detailed and important, but they’re no more important to the AI than any other part of the image. A detailer fixes that by running the image through a second pass, using custom nodes to identify the face area, and then the AI gives just that face area all its juice. So basically you’re getting the details of a close-up, only it’s not a close up.

I’m probably like 90% wrong but that’s my noob’s understanding. Let’s look at some examples.

I’m using the juggernaut model (juggernautXL_v8Rundiffusion.safetensors), no Loras or anything, and a simple prompt:

1girl mid-30s, in a black t-shirt and denim shorts, walking towards the viewer Full body view. Beach scene, mid-day realistic, 35MM camera, amateur

I ran 4 copies. You can click on images to embiggen. I did not cherry pick anything here, just a straight honest test (which is why there are 2 people in one of the images… the AI decided on that)

Example 1

Example 1, No Detailer
Example 1, After detailer



Example 2
Example 2, no detailer. This one is really bad, maybe due to having 2 models?
Example 2, after detailing. Seems like the detailer found and fixed both faces



Example 3:
Example 3, No Detailer
Example 3, after detailing



Example 4:
Example 4, pre-detailing
Example 4, after detailing



Not all the ‘before’ images are terrible, but I feel like all the “after” images are better, but they don’t really change the look and feel of the face. We don’t get a glamour face pasted on an ordinary person walking down the beach.

But in some cases it makes a HUGE difference:

Look at the eyes of the girl on the right (our right) in the pre image. Something is not right! And again, the detailing didn’t make these people into supermodels, it just fixed the wonkiness.

There are detailers for hands, too so next step will be figuring out how to chain these. Or maybe just use an image as a prompt and fix things one by one. Not sure what the best move is, but that’s the fun of learning all this stuff. Oh and for you lovers of naughty images, I understand there are detailers for, ahem, other body parts as well. You might have to hunt around for those, though.

DIY stuff: All the nodes I used came from the ComfyUI-Impact-Pack and the ComfyUI-Impact-Subpact. Here are links for the BBOX model and the SAMS model. And while I hesitate to do this since I can’t know for sure that I’m doing this right, here’s the ComfyUI workflow I made. I’ve never shared one of these so I hope it doesn’t require all the weird nodes I’ve installed but don’t use in this workflow!

[Top image, as is obvious, is one of my tests. Model and prompt in text of post]

Testing Qwen’s New Image Models

Today (or maybe yesterday?) Qwen released it’s Qwen image model so I thought I’d give it a try because that’s what I do now. I try ALL the new AI toys.

What I had heard is that Qwen is really good at following intricate prompts, as well as getting text right which a lot of generative AI models really struggle with.

On my system I can’t run the full model so I had to wait for smart people to quantize it. I wound up getting a 13 GB Q4_M model from city96 at Hugging Face and my system seems comfortable running that, though it is a bit slow. I’m sure in the days to come the brains with find ways to speed things up.

The picture at the top of this post was generated in response to this prompt:

“A dog is running through a field. He is a golden retriever. He carries a yellow tennis ball in his mouth. A long leather lease trails behind him; he has escaped!

Behind him is a small boy, chasing him. The boy has red hair and freckles and he is wearing a baseball cap.

In the far distance is a baseball diamond where a bunch of children play.

The field is grass with patches of dirt. Dandelions are sprinkled about.

The day is sunny and bright. “

I think it did a pretty good job, and I just noticed I misspelled “leash” but it still got everything correct. It does look a little ‘cartoony’ to me, and that wasn’t something I asked for. This is a pure generation with no lora’s or filters or anything and again, I’m sure the community will fill in the blanks.

I tried a few times to get something more photorealistic but had no luck. I did put the text stuff to the test by specifying, in later runs, that the kid’s hat had “Tigers” on it, and it not only put that clearly on the cap but matched it on the shirt, too. On the other hand, now the kid has the leash in his hand.

That’s the way it is with generative art I guess. The model giveth, the model taketh away. Still, I was happy with the results.

A boy and his dog

So I’d like to see this work faster (and maybe a smaller model would help there) and I’d like to figure out how to make things look more realistic. I tried the usually stuff like specifying the type of camera and dumping “ultra realistic” into the prompt but that didn’t seem to help. On the other hand I’ve only been playing around with the model for like an hour so…we’ll see!

Update: Just for giggles I used basically the same prompt in HiDream on NightCafe and got the image below. It actually did the text better than I expected, though it put it on the shirt and not the hat. And the dog is not loose, nor does it look like a Golden Retriever.

Another kid and another dog

Google Announces Genie 3, a System For Generating New Worlds

I just wanted to share this because I’m finding it fascinating. Google Deepmind just announced Genie 3, a system that will generate a world that you can walk around in, based on a single image. At least that seems to be the promise. Doesn’t have to be our world, either. Imagine taking a screenshot from a game and feeding it into a system that you can then walk around in and change. I mean I know we can already walk around in game worlds.. but maybe from a point and click adventure or something!

This is all second hand info as Genie 3 isn’t available to the public yet. I think the real purpose of it is to build ‘digital twins’ to train AI models for robots and such, but you know we nerds will bend it to our will once it becomes available.

The embargo for this lifted earlier today so you’ll probably see a lot of discussion of it from people much smarter than me; I’ll just share the video:

Groovy, right? And here’s a the official link to learn more: https://deepmind.google/discover/blog/genie-3-a-new-frontier-for-world-models/

[Image generated by Google Imagen 3 using the obvious prompt: Make me an image for the top of a post about Deepmind’s new Genie 3 system]

Weekend Projects

This past weekend was pretty unusual for me. I did almost no gaming and instead worked on a couple of personal projects, both of them AI based.

On Saturday I created a chatbot, similar to the ones on Character.ai. I used SillyTavern as the UI, KoboldCPP to do the text generation (after I failed to convince llama.cpp and SillyTavern to get along) and Sarah Storyteller as the model. Since I was just goofing around I grabbed a character from Chub.ai which is frequently NSFW so I won’t actually link to it. Folks create a lot of slash-fiction AI bots for their RPing I guess. No judgement!

SillyTavern is pretty cool. You can turn the whole thing into what feels like a visual novel by uploading 2D images of your character representing different moods and such. You can even add voice generation. I didn’t go nearly that far. Once I had it all working I sorta lost interest. It all did run locally, but it was slower than online versions like Character.ai. It was also more private which could be a boon but I’m not doing super spicey things with my AI chatbots so I am not really worried about that. I was just satisfied to get it all working. If you want to see a video on what SillyTavern can do, this is the one that got me interested. Despite the clickbait title, there’s nothing NSFW in the video (YouTube wouldn’t allow that) though maybe don’t watch it at work cuz anime girls.

Sunday, I burned my ComfyUI installation to the ground and built it back up again. I first started using the Portable version, then read that it’s better to manually install it. So I did that, got it working, then went crazy trying to follow a SUPER complex workflow that had me installing bunchs of Custom Nodes willy-nilly until I had such a mess that everything was slow and tended to crash. So another scorched earth re-install was called for.

What I have now is 2 environments, Comfy-Stable where everything in there is solid and tested and working, and Comfy-sandbox where I can dump in random custom nodes, loras, clip-doohickeys and the dozens of other crap you can shove into Comfy, and if things break I can just burn that install down without losing the ability to generate images in Stable. Each install uses it’s own MiniConda environment so, in theory, nothing I do in Sandbox can break Stable. I also put the really big models in a separate directory and symlinked them into the two environments so I didn’t have to double up on models that gorge themselves on SSD space.

So that wasn’t very sexy but it was pretty satisfying. Now I’m SLOWLY adding things to Sandbox to see what they do. Last night I was trying to get good results doing inpainting, which basically means using a mask to get the AI to regenerate just a specific part of an image. I got that working technically, in that I could feed it an image, mask off the part I wanted regenerated, and it would spit out an image with that part regenerated with SOMETHING, I just didn’t crack the code on getting it to generate anything that looked decent. So that’s still being learned.

A woman at a bar with a glob of weirdness where her martini should be
Example of inpainting gone wrong

What’s really neat about generating images locally is how fast it is to generate a bunch of images from the same prompt. As we all know you get a lot of random stuff in AI generated images and being able to put in a prompt that seems to have potential, then run it again asking it to make 20 images instead of 1, is really helpful. Yes you’ll probably throw 19 (or 20!) of those images away but all they cost is the electricity that your PC is using, so who cares, right?

Anyway the end result was that this was the best weekend I’ve had in a LONG time. Learning new stuff is fun. Generating images is fun. Tinkering in code and systems is fun. It’s all a nice break from gaming and I’m sure that when my gamer gene switches back on (and I KNOW it will) I’m going to have MORE fun gaming than I’ve had for a while, thanks to taking a break.

[Image at the top is the image I was trying to fix via inpainting. The prompt called for the woman to be holding a martini but instead she’s about to shot gun something that looks like a 40 oz Corona or something. Despite MANY attempts I couldn’t get the AI to put a martini in her hand..yet. Model is based on juggernaut-XL_v8]

Today I Learned a New Phrase: “LLM Brain”

I was taking a quick spin through Mastodon today and saw a post from someone I don’t know talking about “LLM Brain” and how bad it is. I don’t know the person so I don’t want to quote them, but the gist of it was they were complaining about trying to teach someone who would take every error message they encountered and feed it to ChatGPT to get a solution. There were some extenuating circumstances; in this case the LLM was often wrong and I guess the student was very resistant to stopping to think about the problem, and I can definitely see where that could be an issue.

But holy smokes in about 2 months I’ve completely accepted having “LLM Brain” and no regrets! Maybe I don’t have imposter syndrome and I really am an imposter, but let me describe my old and new ways of working. The scenario for these work flows is that I’m trying to install some new open source project on my PC. Despite following the documentation, I encounter an error that makes no sense to me.

Old Way: Paste the error into a search box. Skip past ads and sponsored results and YouTube video suggestions to get to the real results, which invariably point me towards something like Stack Exchange or maybe Reddit. But rarely to a traditional article. Next, start following links and skimming the pages. Check for how out of date the proposed solutions are, discarding really old results. Discarding the posts that are people yelling at the questioner for using the wrong format or whatever. Eventually finding a solution, trying to suss out what it is going to do, and then trying to use the solution. Sometimes it works, sometimes not If not, start all over.

New Way: Open ChatGPT, explain what I’m trying to do and share the error message. Almost instantly get a response that both gives me a solution and generally explains WHY I hit this error in the first place. Then I suss out what the solution is going to do, and finally try it. If it’s something really spooky I’ll take a minute and get a second source. But generally the first solution works.

And, if I then get another error, ChatGPT still has context of what I’m doing, so I don’t have to start from scratch again.

I work through problems orders of magnitude more quickly when using an LLM than I used to do using search and user-generated pages. And I don’t think it is making me dumber. I mean I still try to understand why things are happening and how we’re going to fix the issue, with the bonus that the LLM is happy to dive into these details. Does it get things wrong? Yes, sometimes. I still have to sanity check and all that. But plenty of search results give wrong answers, too.

So I kind of reject this idea of “LLM Brain” being a bad thing. In a way it reminds me of how they used to say no one would be able to do basic math once cheap calculators became available. They WERE kind of right, but does it matter? We all walk around with calculators in our pockets. I guess after the apocalypse we’ll be screwed but… I also bet our collective handwriting has gotten REAL bad since the invention of personal computers, but that doesn’t mean you can’t learn to do calligraphy if that’s what you want to do. It just means you don’t HAVE to spend the time learning good penmanship if you don’t want to. We have choices that we never used to have.

Real world example. This morning I wanted to fiddle with an open source project that required me to have node.js on my PC. I downloaded a Node.js installer for Windows and it failed spectacularly. Now I had a mess. I turned to ChatGPT which first guided me through cleaning out all the cruft the botched installation left on my machine, including temp files in AppData and such that I never would’ve thought of on my own. Then it guided me through a manual installation of node.js that was actually easier and faster than using the “installer.”

Again, I just don’t see this as an issue; I see it as being more productive.

I KNOW at this point I’ve drunk deep of the AI Koolaid. But I drank deep of the calculator Koolaid, and the Personal Computer Koolaid, and the cell phone Koolaid, too. And I’ve turned out OK so far.

My only real hesitation is just the power requirements of all of this and how it is impacting the environment, but I also see how models are getting smaller and more efficient so I’m hoping that will level off over time. If the current administration was so pro fossil fuel and anti renewable energy I’d be less concerned about all this, but maybe in 3.5 years that will change.

 

[Header image created using Imagen at https://aistudio.google.com/gen-media, I believe. I didn’t keep notes on that one.]