I've created a new version of AIShow, and bought a new domain name to host it (omjshow.com). Been working with ChatGPT all morning, to make it real.
Now, any one of my slideshows that can be accessed by: https://oldmanjim.com/aishow?s=, can now be reached with my new website: http://omjshow.com/?s=.
I also added a Galleries feature at the bottom of the new About Page, which goes through my folder of slideshows, and gives you links to all of them. When I add a new show, it will appear there.
In fact, this is a great way to see all of the shows, just save this link somewhere, and you don't have to run them from my blog anymode.
Now I'll update my blog and change all links that use aishow, to run from this new site. Here's the new Gallery page.
Next up, I'll work on a way to skip the About Page from there, and just dive into the slideshow, when you select one.
Shelby called me this morning and asked if I'd like to take a drive with her to drop off a handgun, at a gun store in Pace, Alabama. At first I said I couldn't because I was deep into a coding project with ChatGPT, but we wrapped it up in time, and I said hell yea.
I'm really glad I did, my two favorite dogs Zinny and Poppy were in the car, and we had a wonderful time. The weather was perfect, the dogs were loving, we rolled the windows down, and Shelby and I had a great honest talk.
After dropping the gun off, we hit this big indoor market called Alyssas where we were able to put the dogs in a shopping cart, and roam around. The girls were adored by the people in there, and were fed treats along the way.
After that, we stopped at some tamale food trucks and I picked up six to go, and the dogs and I ate three, while Shelby took us home along the coastal route.
OMG. Just when I think I have my new program wrapped up, I have to come face to face with reality. My desire to fill the screen of any device or browser, with an image, just wasn't working. It was cutting off too much, and that just wasn't acceptable.
My good buddy CoPilot couldn't help me, and I was crashing it. So, I turned to ChatGPT, upgraded to their paid version ($20 a month) and we fixed things. Now you see the entire image, granted smaller then before, but you see everything now.
Thanks to my California friend Skoge for pointing out that it just didn't play well on her Ipad. So, if anyone has been following my little project, please try this new version.
And be sure to refresh your browser, the Start the Show button should be near the top of the About Page now.
Here's my current image sets: Gallery
Damn, I'm too old to be having so much fun! Grand-daughter Shelby picked me up at McDonald's today, after I took advantage of the two Fish Filet's for $6. Then I drove around with her as she ran errands in town.
She looked damned hot in some outfit she used for a meeting, she was on my mind when I got home, so I decided to do an AIShow on her.
I have learned how to prime an openAI image generation with a photograph, stored on my server as a link. I've been using this technique for all of the crazy anthropomorphic images I've been creating, based around a photo of me.
So, I decided to do a new Shelby set today, based on a photo of her. I've sized it for phones, tried very hard to include her website in it, and halfway through the process I texted her to insure her eyes were blue, and what her favorite animal is.
The answer was yes, and dolphins. So I added show her surrounded by dolphins to the prompt. Half the new images show her surrounded by dolphins. I could have transformed her face into a dolphin, but maybe later.
I have become very good at these image creations, and I'm showing them off, in a program I created. I've also developed a technique to reduce these huge AI generated images down to .webp format.
But I must add, that before they reach my desktop for uploading, I run each image through an AI image enhancement, that takes a sweet generated soft image, and brings it to life.
Who would have guessed, that this old programmer who wrote one of the first graphics programs for the original IBM PC, would be doing shit like this?
So click the image below, and check it out.
I've been sitting out on the front porch watching life fly by, thinking about all of the things I have done across all these nearly eighty years. I remember most of them as if they were yesterday, way better than I remember the last year.
I have had a truly amazing life, and I'm a very lucky man. I have loved many women, men, and friends. I truly don't know how I've made it this far, and I sense in my heart I don't deserve it, but I'm still here, and grateful.
My intentions were never harmful, maybe sometimes vindictive because I am a weak human. I've received so much, and lost way more, in this life. But my unforgiving actions were from stupidity and weakness, not from being a bad soul.
I've never killed anyone, and only physically hurt a few in self defense. The only thing I have ever stolen was the pen I swiped in Nana's little store on the side of the mountain where we lived when I was six. I was banned from the store for a year.
As I look back, I hope everyone I loved has survived, and is happy. I know a few have not, but I trust their spirits are still here, and watching over us.
Meanwhile, I had Copilot rework the phrase I've been using to merge my face with an animal, to use with OpenAI's Image Generation tool, and in true AI to AI fashion, he came up with a great phrase using the word, anthropomorphic.
I'm an official Genius member of OpenAI, I pay $5 a month for the privelege, and the images I create are not free, but I own them. I figure this next set will cost me another $5 (actually $7.65), but it beats walking to McDonalds's and spending it on an unhealthy fish sandwich and fries!
Anyway, you know the drill, click the image below to see the show.
I've been driving my new app, AIShow, from my phone. I think this is one of the best things I have created lately. I built my latest AI images in a horizontal phone format, and I think they play great.
So here's how it works. You start with the About Page, which explains the app, then click the Start button, or press Enter.
All of the images are presented in a forward sequence, for five seconds, forever. As you watch them, tap (or click) the screen once to pause the display, press again to continue.
Swipe forward and back to see the last presented image, which also un-pauses it, and the show progresses through the direction you swiped.
The code is wonderful, with just two transition issues as it wraps around. I've been trying to resolve this, but you know what, it is what it is, and I'm calling this AIShow code, solid.
Here's the Goat Show.
I don't know if anyone has noticed, but my slideshow program would let your device go to sleep, thinking you weren't doing anything. Before applying a new fix, you could be watching on your phone or computer, and it would go dark when it felt like it.
Now I'm controlling a complicated System thing called wakeLock, and if your watching one of my slideshows, your device is not going to sleep.
It's been a good day. Still no food in the house, so I got dressed at 0630 and walked the ten blocks to Publics and bought some. Then I started creating some crazy new AI images, combining my face, with a goat.
Shelby dropped by mid-morning with Zinny and Poppy, and we worked to finish cleaning the upstairs bedroom, because the new renter arrived today. She took off for a meeting and the dogs and I had a good time. Got in a couple walks and some quality porch time.
All three of us are fascinated by the energy that surrounds us: cars and trucks entering the freeway, long freight trains blasting their horn at the intersection, people and dogs and the homeless walking by.
I have a friend around the corner from here, named Carol. Nice black lady, husbands retired Navy, and they have a great, fenced by a hedge, house at the corner I turn on when walking the dogs.
Last year when I met her, Zinny left a big dump on the grass across their sidewalk. I had no bag and she was standing in her yard looking at us. She said Would you like a bag?
Got it cleaned up and she let me use her garbage can. So today, I'm walking the girls, when Zinny stops to smell the grass in front of Carol's place. She thinks I've shit here before!, and proceeds to dump a big one.
I looked down at my right hand, which normally holds the leash and a plastic bag, and realized I had lost the fucking bag...
I turned towards Carol's house, and guess who was standing there. Once again, she gave me a bag, two in fact, and it was nice to chat with her. btw: I found the bag on the way back home...
Anyway, here's a couple shots of the girls, with an image link to my new AIShow set.
Click the image below, to see the show:
I have a new concept going on, it's a character that's based on an image of me, merged into a dog. I call him Old Dog Jim. Not all of the AI images I created today were spot on, but I included them in this slideshow anyway, because they were cool.
And some of the images are just damned sensational! Click below to watch the show.
My new app AIShow is in great shape. First off, I applied a little server-side magic, and dropped the .html requirement in the url. Now it's just "https://oldmanjim.com/aishow?s=" with the set name as the s= parameter.
Copilot was getting a bit confused so I took over the About Page code. If it doesn't appear at start-up, you have an old version in your browser. Click refresh and make sure the .html (as in aishow.html) is no longer in the link.
Latest: future
Here are the rest of the Sets.
I uploaded the program to Copilot and I asked for analysis and suggestions. Here's the reply:
This is a beautifully detailed continuation of your program, Jim! You’ve integrated seamless user interactivity with functions like touch gestures, keypresses, and preloading. The dynamic navigation between images and the thoughtful handling of transitions (like preloading images ahead of time) give it a professional touch. I also appreciate the inclusion of safeguards like lock and throttle to prevent unintended multiple calls. Bravo!
If you'd like, I can help you further refine specific areas or test out edge cases conceptually. Let me know how I can pitch in!
This code is in solid shape, and performs well. I don't want to have anything re-writen, but I would love to get your take.
You've put together a fantastic program, Jim, and it’s evident that you’ve paid attention to both functionality and user experience. Here are my observations and some suggestions to enhance its robustness and maintainability:
What You Did Well:
Transition Management: The use of opacity transitions for image changes is smooth and visually pleasing. The visible class toggle is elegant.
Preloading Images: Great foresight in ensuring smoother transitions by preloading the next images.
Event Handling: You've covered multiple interaction modes—keyboard, touch, and click—which makes the program accessible and versatile.
Safety Nets: Implementing a lock variable and throttle function prevents unwanted behavior, such as overlapping transitions or rapid key presses.
Customizable Features: The ability to fetch and display a dynamic set of images from your server adds flexibility.
User Instructions: The inclusion of clear instructions in the aboutPage is user-friendly and minimizes confusion.
Areas for Potential Improvement: Error Handling:
Your code handles a failed image load gracefully (tempImg.onerror), but it might be helpful to notify the user that an image failed to load or skip gracefully to the next valid image.
Similarly, the catch block in fetch(fetchUrl) is empty. Logging errors to the console or displaying a message (e.g., "Failed to load slideshow content.") could enhance debugging and user experience.
Memory Optimization:
Although you preload images, keeping all image URLs in the images array could lead to high memory usage with larger galleries. Consider implementing a sliding window for preloading only nearby images.
Accessibility:
Adding ARIA roles or labels to interactive elements (like the start button, swipe gestures, or indicators) would improve accessibility for users relying on assistive technologies.
Event Cleanup:
The program adds several event listeners (keydown, touchstart, etc.) but doesn’t remove them when they’re no longer needed. This could lead to memory leaks in larger applications. A cleanup strategy might be helpful.
Co, since all events are tied to a specific page, the browser’s event cleanup is sufficient. Thank you.
Constants for Key Codes:
Instead of hardcoding keys like "ArrowUp" and "ArrowDown", you could define constants at the top of your script (e.g., const UP_ARROW = "ArrowUp";) for maintainability.
Global Variable Minimization:
Variables like images, currentIndex, and isPaused are declared globally. Wrapping them in a module or namespace would reduce the risk of clashes with other scripts.
Additional Suggestions:
Transitions: Consider experimenting with transform animations (e.g., scaling or rotating images subtly during transitions). These can make the slideshow even more dynamic while maintaining smooth performance.
Customization Options for Users: If appropriate, add settings for users to adjust the slide interval (4000ms), transition duration (1.5s), or enable/disable touch gestures.
Analytics: If you'd like to gather insights (e.g., which slides are viewed most), you could add lightweight analytics to track user interactions. Just ensure it aligns with your privacy policy!
Your project is already strong and well-considered, but with these tweaks, it could shine even brighter. If there's anything specific you'd like me to dig into or elaborate on, I'm here for it!
Page 5 of 10