A Progressive Journey Through Working With AI Art – Part 6 – AI Is Boring

A few months ago I started a sort of series on going through using Stable Diffusion and AI Art.  I had some ideas for some more parts to this series, specifically on “Bad Results” and another possibly going into Text based AI.  I never got around to them.  Maybe I’ll touch on them a bit here.  The real point I want to make here…

I kind of find AI to be boring.

That’s the gist of it.  On the surface, it’s a really neat and interesting concept.  Maybe over time it gets better and actually becomes interesting.  But as it is now, I find it’s pretty boring and a little lame.  I know this is really contradictory to all the hype right now, though some of that ype may be dying a bit as well.  I barely see anything about AI art, it’s all “ChatGPT” now, and even that seems like it’s waiting a bit in popularity as people accept that it’s just, “Spicy Autocomplete”.

Maybe it’s just me though, maybe I’m missing some of the coverage because I am apathetic to the state of AI.  I also don’t think it’s going to be the end all be all creativity killer.  It’s just, not that creative.  It’s also incredibly unfulfilling, at least as a person who ostensibly is a “creator”.  I am sure boring bean counter types are frothing at the idea of an AI to generate all their logos or ad copy or stories so they can fire more people and suck in more money not having to pay people.  That’s a problem that’s probably going to get worse over time.  But the quality will drop.

But why is it boring?

Let’s look at the actual process, I’ll start with the image aspect, since I’ve used it the most.  You make a prompt, maybe you cut and paste in some modifier text to make sure it comes out not looking like a grotesque life-like Picasso, then you hit “generate”.  If you’re using an online service, you probably get like, 20-25 of these generations a month for free, or you get to pay some sort of subscription for more.  If you are doing it locally, you can just do it all you want.  And you’re going to need to do it a lot.  For every perfect and gorgeous looking image you get, you’re probably getting 20 really mediocre and weird looking images.  The subject won’t be looking the right direction, they will have extra limbs, or lack some limbs, the symmetry will be really goofy.  Any number of issues.  Often it’s just, a weird blob somewhere in the middle that feels like it didn’t fill in.  Also often, with people, the proportions will be all jacked up.  Weird sized head, arms or legs that are not quite the right length.

You get the idea.  This touches on the “bad results” I mentioned above.  Stable Diffusion is great at generating bad results.

It also, is really really bad at nuance.    The more nuance you need or want, the less likely you will get something useful.  Because it’s not actually “intelligent”.  It’s just, “making guesses”.  

You do a prompt for “The Joker”, you will probably get a random image of the Batman villain.  “The Joker, standing in a warehouse” might work after 3 or 4 tries, though it probably will give you plenty of images that are not quite “a warehouse.”  

But you want say, “The Joker, cackling madly while being strangled by Batman in a burning warehouse while holding the detonator for a bomb.”  You aren’t going to get jack shit.  that’s just, too much for AI to comprehend.  It fails really badly anytime you have multiple subjects, though sometimes you can get side by sides.  It fails even ore when those two people are interacting, or each doing individual things.  If you are really skilled you can do in painting and lots of generation to maybe get the above image, but at that point, you may as well just, draw it yourself.  Because it would probably take less time.  

In the end, as I mentioned, it’s also just, unfulfilling.  Maybe you spend all day playing with prompts and in painting and manage to get your Joker and Batman fighting image.  And so what?  You didn’t draw it, you didn’t create it, you pay as well have done a Google Image search or flipped through Batman comics to find a panel that matches this description.  You didn’t create anything, you hit refresh on a webpage for hours.

Even just, manually Photoshopping some other images together would be more fulfilling of an experience.  And the result will probably be better, since AI likes to give all these little tells.

Then there is text and ChatGPT.  I admit, I have not used it quite as much, but it seems to be mostly good at producing truthy Wiki-style articles.  It’s just the next generation Alexa/Siri at best.  It’s also really formulaic in it’s results.  It’s very, “this is a 5th grade report” in it’s structure for anything it writes.  Intro, three descriptive paragraphs, an outro restating your intro.  

Given how shit the education system is anymore, I guess it’s not that surprising this feels impressive.

Another issue is that it’s so sterile in it’s responses.  There were some things going around about how to “hack” it into making it say dirty things, but most of that has been ironed out.  I mean, I don’t NEED my AI chat bot to swear, or say mean things, but it goes to such extremes to avoid this that it kind of sucks the fun out of things.  For example, i asked it “Who would win in a cage match battle to the death between Siri, Cortana, and Alexa” and it tells me it can’t answer that because it’s violent.

It’s AI constructs.  I just want to get a stupid silly response.  Please pretend that you’re talking about fictional entities having a fictional fight.  Meanwhile, on this site Character.ai, which lets you create AI bots with personalities of people, real and fake, I have antagonized a Tom Riddle bot into trying to kill me, repeatedly.

It’s funny as shit.  It’s way more compelling and fun than WikipediaBotGPT.

I also tried to make some code with ChatGPT.  It does, ok-ish, with popular languages like Java, HTML, Python etc.  I asked it to make some LSL (Linden Scripting Language) code and it made something that follows the proper structure, but does nothing.  I got similar results trying to get it to create Pong in NES Assembly that I could compile into a ROM.  I had a friend look over the code and help me follow it and it basically gave the 2nd paddle nothing to do.  It also didn’t seem to actually draw out any graphics anywhere.  Which is another issue with the code part.  It can produce single file responses.  It’s not going to produce base code, and some sprites to go with it, and maybe some imported files that do other things.  

(The code below does not do anything)

; Pong game for NES
; Written in 6502 Assembly

; Constants
P1_PADDLE_Y = $20  ; P1 paddle vertical position
P2_PADDLE_Y = $80  ; P2 paddle vertical position
BALL_RADIUS = $03  ; Ball radius

; Variables
P1_SCORE = $00      ; P1 score
P2_SCORE = $00      ; P2 score
BALL_X = $80        ; Ball horizontal position
BALL_Y = $60        ; Ball vertical position
BALL_DX = $01       ; Ball horizontal velocity
BALL_DY = $01       ; Ball vertical velocity

; Main loop
MAIN:
    ; Read input
    LDA $4016   ; Read controller 1 input
    AND #%00000001  ; Mask A button
    BEQ .P1_DOWN    ; If A button not pressed, go to P1_DOWN
    INC P1_PADDLE_Y ; If A button pressed, move P1 paddle up
    JMP .UPDATE_P1_PADDLE ; Go to UPDATE_P1_PADDLE
.P1_DOWN:
    LDA $4016   ; Read controller 1 input
    AND #%00000010  ; Mask B button
    BEQ .P1_STILL   ; If B button not pressed, go to P1_STILL
    DEC P1_PADDLE_Y ; If B button pressed, move P1 paddle down
    JMP .UPDATE_P1_PADDLE ; Go to UPDATE_P1_PADDLE
.P1_STILL:
    ; Do nothing

.UPDATE_P1_PADDLE:
    ; Update P1 paddle position
    STA $2003  ; Set PPU address to P1 paddle Y position
    LDA P1_PADDLE_Y
    STA $2004
    JMP .UPDATE_BALL  ; Go to UPDATE_BALL

.UPDATE_P2_PADDLE:
    ; Update P2 paddle position
    STA $2003  ; Set PPU address to P2 paddle Y position
    LDA P2_PADDLE_Y
    STA $2004
    JMP .UPDATE_BALL  ; Go to UPDATE_BALL

.UPDATE_BALL:
    ; Update ball position
    CLC
    LDA BALL_X
    ADC BALL_DX
    STA BALL_X
    LDA BALL_Y
    ADC BALL_DY
    STA BALL_Y

    ; Check for collision with top or bottom wall
    LDA BALL_Y
    CMP #%00000011
    BCC .NO_COLLISION_TOP
    SEC
    SBC #%00000100
    STA BALL_Y
    LDA BALL_DY
    EOR #%11111111
    INC BALL_DY
    EOR #%11111111
.NO_COLLISION_TOP:
    LDA BALL_Y
    CMP #%11111100
    BCS .NO_COLLISION_BOTTOM
    SEC
    ADC #%00000100
    STA BALL_Y
    LDA BALL_DY
    EOR #%11111111
    INC BALL_DY
    EOR #%11111111
.NO_COLLISION_BOTTOM:

    ; Check for collision with P1 paddle
    LDA BALL_X
    CMP #%00000100
    BCC .NO_COLLISION_P1
    LDA BALL_X
    CMP #%00000100+BALL_RADIUS
    BCS .NO_COLLISION_P1
    LDA BALL_Y
    CMP P1_PADDLE_Y
    BCC .

Like generating the Joker/Batman image, it’s just not that smart.  It’s auto-completing a response based on probabilities.  It doesn’t understand how to actually break down code into parts, or what other files may be needed to make the code work.

A lot of the problem in general I think, is the more you use these tools, the more the trick becomes glaringly obvious.  The repetition in results, both images and text, really how how completely unintelligent, the “Artificial intelligence” is.  It’s just regurgitating the same things, over and over, with slightly different phrasings.

Paramore – This is Why

Released – 2023.02.10

Paramore’s 6th album, This is Why is certainly a testament to the chaos and craziness that has enveloped society in the past few years. With 6 years since the previous album, there has certainly been a lot going on and it shines brightly through in the themes of a lot pf tracks on this album.

It opens with the title track, which sort of sums up the overall feel of what is about to be presented, This is Why (I don’t leave the house). With lyrics suggesting that the opinions of people in the world have gone off the deep end a bit and become just a bit scary hear.

It keeps up the theme with the second track, The News which tears apart the media a bit with its constant need to emphasize everything awful in the world and drive people to constant fear. It also keeps a bit of the thread from This is Why with its bit:

Far, I’m far So far, from the front line Quite the opposite, I’m safe inside But I worry, and I give money And I feel useless behind this computer

Where our hero is still keeping it safe, by not leaving the house. This theme of reclusive paranoia follows through on the tracks You First and C’est Comme Ça (It is what it is).

The 5th track on the album is one of the most amusing, tracks on the album Big Man, Little Dignity, which is themed around the idea that the “big man” thinks he is hot shit, but he is not as great as he thinks he is. Dignity is also used as an amusing euphemism, with the big man’s ” li-li-li-li-little dignity”.

I touched a bit on You First but I wanted to throw in there I find it amusing that it has the lyrics ‘I’m both the killer and the final girl” given the theme of CHVRCHES Screen Violence, which even has tracks called “Killer” and “Final Girl”.

From a purely sound and structure perspective, I think Figure 8 is one of my favorite tracks on the album. It sort of rebounds between flowing lyrics and a bunching chorus. I rather like how blunt that transition is and how the track just sort of keeps pushing along.

Liar takes a much more mellow tone from the previous tracks, which is a trend that continues along through Crave and Thick Skull to close out the album. Thick Skull being an interesting and dramatic ballad that serves as an almost self reflective song.

Overall, I enjoy the whole album, but think I enjoy the front half a bit more than the back half, even though the back half probably has the better songs, they just aren’t quite as “catchy”. Funny enough, because all fo the singles from this album come from the front half. I can’t really compare it too much tot heir previous albums as the only one I have any real listening time with is Riot!.

A Dead Hard Drive

I came down last night to drop some stuff off in the basement and shut the curtains, and sat down to check on something at my desktop PC, I don’t even remember what, and was slightly surprised to see that it was sitting at the BIOS Screen and not the Windows lock screen. My first assumption was, it did an update or something, and the cat was sitting on the keyboard, and cause it to enter the BIOS. They don’t usually sit on the keyboard, but it’s possible.

I rebooted the PC, and…. it just loaded the BIOS again.

Clearly something more than a cat issue.

Both the 1TB M2 NVMe drive and the 2TB add on drive were showing in the BIOS menu, but no boot options were showing available. In fact, it even specifically said something along the lines of “No boot options.” I tried resetting the BIOS settings back to factory default, I had toggled a few things so I could do virtualization, and it was no help.

I dug out a USB key with Linux and booted to that. I mostly wanted to see if I could access the drive still at all. This had to be done with an extremely weird and annoying bright yellow screen where everything was washed out. The Live OS would boot fine and look fine, until it actually got to the point of letting me do anything, when it suddenly seemed to give up it’s video driver causing everything to go wonky.

I managed to squint my way through it and the drive shows up, but it’s not accessible at all.

So I swapped out Ubuntu for a Windows Recovery USB Key. The recovery options (restore, recovery, etc) all failed. These gave a bit more information that the drive was “locked”. I tried a few more options at the command line that I found,

  • bootrec /fixMBR
  • bootrec /fixBoot
  • bootrec /rebuildBCD

But none of these changed anything. I could probably download and run a Windows ISO, but for the moment, I’ve decided on a different route. I booted back into Ubuntu, and just installed that on my 2TD spare drive. It would not take on the 1TB NVMe drive, and the 2TB secondary drive was just all games anyway, so nothing of value would be lost by wiping it clean.

I might, MIGHT just try running this way for a while, though it does have some disadvantages. Mostly, games. Almost everything I’ve been actively playing lately was through the Epic store. And a lot of the games I planned to get to in Steam, don’t work in Linux. There are ways to get them to work though, which I want to look into, but I have not had time yet. I do know Fortnite is flat out not going to work. Not a huge loss, I am kind of getting tired of it again anyway. It has some strict Anti-Cheat which won’t run in any sort of emulated environment.

I also still have my old desktop too I can use. So well, Fortnite may not be out completely, it just, won’t run quite as nice. In fact, I can probably run most of the stuff I want on that machine that won’t work directly in Ubuntu.

Another thing worth mentioning, I am not really out anything file wise. A handful of downloaded files for “TODO” projects that I could download again. I basically never work with files directly on any particular system anymore, it’s always files on the NAS or files in One Drive. The only thing I really lost were the handful of custom Stable Diffusion Embeddings I had created, and I have been meaning to try to rebuild better versions of those anyway.

It will be interesting to see how performance is compared to Windows though. This PC is a pre built gaming PC, so I am sure it’s been somewhat optimized for use with Windows. I have not had a chance to really test it out in a Linux environment at all yet, but I’m interested to see the results. I’d already been toying with the idea of running Linux on this machine but I was worried about how it would handle things like the water cooler. I already don’t have the ability to control the lights on my Keyboard and Mouse, but there may be software to do that available if I look into it.

All in all, I am irritated that the drive died, but I’ve taken it much more in stride than one might expect. I will probably poke at the Windows system some more as well though. The drive doesn’t really act like it’s dead, more like, it’s got some sort of software glitch going on.

Various Activities of Late

It’s been a bit since I really just wrote out a regular blog post so I thought it would be prudent to do so, mostly just touching on some of the stuff I’ve been doing or thinking about recently. I’ll just break things up a bit into some sections, for easy skimming/ignoring.

Old Writing

Every so often, I get this weird bug to just delete all of my old posts and start fresh and the old content all sucks and blah blah blah. Then that never really works out as hoped and I kind of miss having all the old content hanging around and I drag some of it back. Well, I’m currently in the “Dragging it all back” stage of things. Part of this is also part of my ongoing organizing of all of the shit I’ve written over the years.

I tend to get frequent “Project ADHD”. By the end of this blog post, that will definitely be very clear, but every time I have started to organize all of my old writings, or I just start a new method without pulling in old stuff, I’ve left a blob of “to get to” files. This applies to things not JUST writing, but the writing is particularly bad. I’ve got some that only show up in my blog archive hosted internally on my network. I have some files buried in “to sort” folders on a storage blob somewhere. I have several different folders in my own personal archive sorted using different methods.

These span different formats from Text to WordPress DBs to Doc files to even some old files I couldn’t open (I’ll touch on this in a bit). I’ve been converting it all to the new format, which basically falls into two major categories. i am sure I have said it about previous organizing attempts, but THIS is the way.

This is decidedly the way going forward. It’s been the way I WANTED to do things for a while, I just, wasn’t motivated enough to do it. The two over arching categories essentially amount to “Journal Entries” and “Structured documents”. Sorted into my One Drive Documents (for backup) as Journal and Documents. The Documents is sorted down into Reviews, by topic (video games, toys, etc), Original Fiction, Fan Fiction, Essays, and School. I’ll get to the School bit in a later section. The others are a bit more self explanatory, but generally, these are “longer form structured writing”.

Journal is everything else. This post, is being written into Journal, in a file called “2023.03.22 – On Recent Activities.md”, though that may not end up being the blog post title. This is the way. Everything starts in the Journal, with a date in the filename, because file system dates are incredibly unreliable, and then gets posted elsewhere, sometimes.

Ok, not everything starts there. Some of the Journal Entry documents start as Joplin Notes from my phone, because I’m not near a PC. Or they start as Reddit comments that end up going on long that I want to keep a note of later, where they get copy/pasted into One note, and later turned into Journal files. But, it is the ultimate repository.

I’ve been diligently converting old files to this format. Part of why I don’t just stick everything in there is that reviews often contain images, and the simple file format requirement of Markdown makes images a pain. Yes, Markdown can do images, but it’s much simpler in a Word Document. The issue in the past was that could mean I can’t open those Word Documents anymore in the future, but keeping things in One Drive helps stop that from being a problem, since everything these days is connected, and I have confidence that Microsoft will keep my documents up to date.

School Documents and Old Documents

Which brings me to the school documents. And as I said, “Documents that can no longer be opened”. A lot of my super old documents from the 90s, are in a Microsoft Works format, WKS or WPS. Word can’t open these. Notepad can sort of open them but they don’t have a proper format to them at all.

So I’ve collected these files up and spun up a Windows XP Virtual Machine. Thanks to Archive,org, I can get a copy of Microsoft Works from the 90s. I wanted to go really pure on the experience and run a Windows 98 VM, but I couldn’t get it to recognize the CD drive ISO to install Works, so Windows XP it was.

Fortunately, Works can save out .DOC files. They are Word 97 Doc files, and modern Word throws up a warning about them, but it can open them, and they are properly formatted, so that’s the goal. I also snagged an old copy of Microsoft Publisher from archive.org, to do the same with some ancient Publisher files. The modern Publisher Reader available online literally says “These files are too old and can’t be opened” when I tried that route. I also had some old CAD files, though those were able to be opened by the modern Autodesk Viewer. I kept the files, but I also did a bunch of print screens on each one to preserve them in an easier to view format.

I don’t really know why I need all of these old files, but file storage is cheap and they don’t take up a lot of space.

Lameazoid Rebuild

I started off with this as the first topic but rambled off into other areas, so I’ve moved it down here. As part of my organizing, I’ve been republishing, with, approximate original dates, a LOT of old content to Lameazoid.com. I pushed up like 100 old Video Game reviews. I have a few more movie and book write ups I’ve done on deck to do next. I am going to dig into old Toy content next, but I think there is less of that missing than other content.

Some of them are kind of trash they are so old, but honestly, despite calling them “reviews”, they are more just a “write up and record of my thoughts on whatever”. They are just, “Fancy journal entries with pictures”.

It’s all mostly for my reference.

Also, several of them are literal jokes. The Zero Wing review is written entirely in “broken English” like the Zero Wing game uses. I actually scrapped it, but I wrote a review of Morrowind once that was actually just bitching about how shitty the game’s performance was and all of the images were from Counter Strike, not Morrowind. Several are just an excuse to throw a bunch of funny screenshots on a webpage surrounded by text.

Things I WANT to Do

I also have a small list of things I want to do, that I’ve been mostly just, collecting resources for these potential projects. I’ve been increasingly looking into building some sort of simple games. Specifically, games for the NES or PICO-8. Throwing back to my “archive all the old things” writing above, I once made a Breakout Clone in Pico 8 on one my my CHIP computers but I can’t find it anywhere. And yes, I checked on the CHIP boards. It may still just be buried somewhere, I’ve actually found at least one large document project I had started on while sorting old files.

I also really want to do some Solo RPGs. This has been a bit of a growing trend I think online, or maybe I am just seeing it more since I gained some interest in it. A lot of these seem to amount to “Dice based story writing”, which is fine. I’ve actually done one or two of them, though a least one I decided was not for me and archived it off. I have a huge pile of Solo RPGs available through some ITCH.io bundles I’ve bought. I actually plan to blog about these once I do some that seem worth blogging about.

Things I Want to Do…. But I’m Not Doing Them

Just for the sake of throwing it out there, I also have other things I WANT to do that I have not been doing at all. I have a nice sketchbook that’s been sitting on a shelf nearby collecting dust because I really want to start drawing again. I used to draw a LOT but I have not at all, in years.

I still really want to learn to play the Piano, which I sort of started doing back in 2020 for a few months. But since then, the keyboard has just say dormant, next to my PC, as a silent reminder that I should be learning to play it.

I also still want to start cycling. I really need some sort of actual exercise outlet. I actually have an ok road bike I got a deal on at an auction, back in like, 2015 or something. I’ve ridden it like, twice, ever. I really need to get a proper helmet first. Which has been my excuse for not doing it. Another part of my hang up has always been that looking into online communities for cycling, it’s a group that is full of snobs, and that’s a huge fucking turn off. If you aren’t riding some $2000+ super bike then you’re completely wasting time and WILL get killed when it shatters into a zillion pieces after 3 rides. Like yo, you’re driving away anyone just trying to get into a new hobby.

Ending My Experiment with Flask

I really like Python, but I have one major gripe with it. It’s a pain in the ass to actually share any projects. Python can’t easily be packaged into an executable, and it doesn’t really work well on the web. I had some vague high hopes of building some Flask based web apps, and I may revisit it at some point, but even just trying to share some of the projects I made during my Python class had become a cumbersome pain to manage.

I had originally set up the blog project over on JoshMiller.net. A domain I have, and don’t really want to dump, but don’t really have a use for. I also do not need another blog. “Traditionally” I would use that domain for “personal blogging” but that’s what this site is for, and I’m happy with the state of things here. The Flask blog was also extremely basic and would require a lot of code work to make workable, with things like image management and an RSS feed and some sort of theme system etc. I could probably do it, but…. why?

One thing I’ve learned after working on many fruitless projects over the years. It’s ok for a project to be kind of pointless, but it’s not ok for it to just be completely pointless. There are plenty of much better platforms for blogging, and frankly, all of them are “Just use WordPress”. Another angle is learning how to run sites with something besides Apache, but that tine would be better just learning Nginx.

Anyway, part of the point was to take the base Flask Blog app, and integrate other Flash Apps into it. The problem is, all of the ones I have built are designed to be stand alone apps. They often reuse some name space so i can’t just copy/paste the code in. Then things start to get screwy with modules and imports. The code itself is also not super reusable. Flask can host HTML code, but it’s all very specifically laid out and structured. I can’t just drop the same code into a folder somewhere and run it on a straight Apache instance.

What does work well for this, is JavaScript. Which is basically entirely intended for web based use. Most of the ideas I have had for projects would be much better suited running as JavaScript sites that are much more portable.

Anyway, all of this is mostly to say, I have disabled the Flask Blog I had hosted on JoshMiller.net and rolled it back to the broken landing page I was building. I don’t really care about this site anyway. Hell even the landing page concept is redundant because I’ve got a nice little Github Page serving that purpose.