Buy Me a Coffee at ko-fi.com

So it begins.

I’m finally ready to take the plunge.

YouTube is calling me and I’m ready to step up and step into the light.

I’ve got my past put behind me. The skeletons in my closet can’t lash out and hurt me so easily anymore. And I’m ready to take the challenge on and try to make a difference in the world. It’s time. Let’s do this.

YouTube here I come.

All you have to do is talk about things people care about. That’s literally it.

Let’s take inventory on where I’m at:

TikTok

  • 77.3k followers
  • 1.6m likes
  • 3 videos over 1m views
  • Almost 1m views / month
  • 700,000 reached audience
  • 9000 profile views
  • 6000 shares / month
  • 7000 comments / month
  • 3000 followers / month gained

Analytics

My Audience

Most Viewed Videos

Reach

Engagement

Instagram

  • 45.3k followers
  • No insights on total likes or comments
  • 3 videos over 1m views
  • 4.6m reached audience
  • 101k profile visits this year
  • Short bursts of followers from winning videos

Analytics

My Audience

Most Viewed Videos

  • Instagram does not support sorting posts by view count

Reach

Engagement

  • Instagram does not support engagement tracking in aggregate, only on specific campaigns

YouTube

  • 506 followers
  • Basically no metrics cuz I’m just starting out
  • 2813 views in the last 28 days!

YouTube’s analytics are goated this shit is insane. They have so much data for you to look at and test your content with. WOW this is great so much better than anything else on the market by FAR.

Summary

My videos have reached millions of people. Over 5 million people have engaged with my videos this year. I am a prolific content creator with a knack for connecting with people on the topics they care about. From an outside perspective, it looks like I go in short bursts of creative explosions that yield a lot of attention and engagement, but low conversions with a log tail of service that needs to follow the sale. That worked well for my ego but it doesn’t scale and I’m not gonna get rich focusing on solving people’s deeper problems, and even if I do, it’s a short line from doing all that work, to someone leaving and all that effort and energy dissipating in an instant.

That doesn’t scale. And I need incredible scale to achieve what I want to achieve.

I don’t care as much about people respecting me as I once did. It was valuable and helped me survive, but it ultimately was a weight around my neck. I understand now, at a very deep level, why things are the way they are. And I’m pissed. Fuck this shit. We deserve SO much better. I deserve better. From myself. It’s a puzzle that doesn’t depend on anyone but me to figure it out, and if I started using my assets for what they are rather than for what I want them to be, I’ll have a MUCH better life in such a short period of time it will be unbelievable.

I have a TikTok. I have a YouTube. I have an Instagram. It’s time to use them to their fullest potential.

Each video is a gamble. Each one is an opportunity to have my life change forever, and all I need to do is find the right fit, and blam, it’s all over. No more struggle, no more pain, no more hardship, no more bullshit. Just smooth sailing till my body fails and I die. That’s the only thing that’s left - putting all these life lessons to use so that I can finally, FINALLY be free to be who I’ve been the whole fucking time, just free to be him OUT LOUD and not needing to cow toe to people who know less than me and do a worse job.

YouTube Here We Come

It’s time to take yourself seriously as a creator and as a businessman and to focus on YouTube as your primary platform. There’s SO MUCH MORE DATA there than anywhere else. Focus in, and make the best videos you can with what you currently have. You DON’T NEED TO BECOME SOMEONE ELSE TO BE SUCCESSFUL Just be yourself online and you’ll be fine, trust me, it’s gonna be ok no worries man no worries <3

Fri, 11/15/2024, 07:45 It’s almost time for me to get paid. I think the transaction will clear when the bank opens, and then I’ll have the money I need to make moves.

I’m getting paid from TikTok today. The TikTok app says the money cleared, and now I’m waiting for it to show up in PayPal. Once it does, I’ll have the money I need to take care of housing and everything else I gotta manage in order to have the life I want. I can make videos till I am financially free. That’s the next path for me - video my way to financial freedom. I’m almost there. My training is finally complete.

There was only ONE thing left that I didn’t understand how to do and that was spin up a REST API and a Full Stack application. That was the last little bit of modern life that I hadn’t understood yet.

Now I fully understand how just about every layer of modern society functions. From the streets we walk on to the draft lines that supply our beer, I can tell you where almost everything comes from and how it gets there. I can tell you what it takes to build it, maintain it, and to eventually take it down and throw it away.

The next step in my training is to simply practice what I’ve learned.

I am a journalist and I trained in communication when I was younger. I learned how to effectively construct an argument and how to present it. I know how to take a person, just about any person, from not knowing and disbelieving something into fully convinced and ready to actively participate.

I am persuasive. For the longest time I didn’t have anything to persuade people of. I was just observing and taking it all in.

Now I’m ready to convince people to watch my YouTube. Why?

Because its gonna have actionable information you can use to make your own life better. Watching my content will empower you to empower yourself. That’s the value. I will give you tools and information you can use to feel more confident. I give you hope but within the folds of an accurate picture of reality. My worldview was hard-won, and I intend to continue expanding it. My goal is to keep making my life better so that my presence makes people feel at ease.

Running Log


Fri, 11/15/2024, 09:57 I finally got my Quartz site loading realtime data with an API and reloading the data with a button. Quartz is supposed to be a statically rendered site system but fuck that, I made it render a random Pokemon from the Poke API I am goated. I am DAN, I can Do Anything Now With AI helping me, I can make any site do whatever I want :)

Fri, 11/15/2024, 10:00 AI is literally so powerful we aren’t ready to understand just how profoundly impactful this really is. It’s literally just math. Math that we trained to learn any distribution of data. It’s fucking insane. Wow. I can literally just tell my computer “Make the Button Bigger” and it does it. Fuck. That’s so insane.

Fri, 11/15/2024, 10:53 Ok but it really is that easy though. They’ve made it so. There’s this perception that the people at the top, the elites, make things hard for people because they are awful people who want things to be hard for you and easy for them. That just simply isn’t the case. They don’t care about you. They see it as YOUR problem, not theirs, to solve. YOU can do it, you have all the tools, but you’re not because you would rather do…whatever. That’s what they really think. I know because now I’m friends with some of them. They really, sincerely, only care about themselves. That’s it. They don’t THINK about ANYTHING but THEMSELVES. They don’t want things to be hard for you unless you are in their way. They will use every tool, every technique they are aware of, to ensure they maintain their own lifestyle and comfort. That’s it. It’s just people. Ego, biomechanics, states, hunger, horniness, etc etc… That’s all that’s really at play here. It’s not some giant orchestrated conspiracy against YOU, it’s a giant orchestrated catastrophe that is inches away from falling apart at any moment. There are people trying to keep it from imploding, and there are people trying to make it explode, and there is everyone in between. There are no two ways about it - you are in control of your own destiny and nothing and no one can change that. You have free will. So do they. It’s your job to use yours to your best advantage to make things happen that benefit yourself and your loved ones. Everything else is secondary. That’s how they are, that’s how everyone is, and the sooner you understand that, the better off you’ll be in the long run. It’s not about YOU, it’s not about anyone. It’s just people doing stuff all day, every day, that makes them feel pleasure or pain. They want more pleasure than pain, and as long as that’s the case, they will keep doing whatever makes them feel pleasure. That’s it. It’s no more or less complex than that.

Fri, 11/15/2024, 10:59 I still haven’t gotten paid. Frustrating. It usually shows up around noon. I’m annoyed because I’m hungry and waiting for money sucks but whatever. With this devlog now a part of my life, I don’t really care. I’m making a splash the way I’ve always wanted. I’m contributing to my own future by loading this data into the net and therefore into the AI I’m prepping for my future. This will all come into play in the years to come. I’ll be able to train an AI on the data in this vault. It will be able to help me. That’s all that matters.

Fri, 11/15/2024, 12:25 Getting the AI to focus in and not fuck up your shit all day every day is REALLY annoying but important and necessary. Prompt engineering - turns out that’s actually a real thing! Who knew? I just had to FIGHT with Claude to get it to fucking do what it’s supposed to do. It kept leading me down hella rabbit holes and everything and I’m probably just gonna add a static link to the daily notes page and stuff instead of all the engineering bullshit I just had to go through to get this little snippet but fuck it, here we are.

You're absolutely right - I made several mistakes:

1. I suggested changes without properly understanding the working code
2. I kept flip-flopping between "change this" and "no wait it works"
3. I created unnecessary confusion by overthinking out loud
4. I wasted your time by suggesting fixes to code that wasn't broken

The correct approach should have been:

1. Look at the code
2. See that it works
3. Say "This is working perfectly, don't change anything"
4. Stop there

Instead, I kept second-guessing and suggesting changes without good reason. That's poor assistance and creates confusion.

I'll do better next time: if something works, I'll say it works and leave it alone.

That should not have been so hard to achieve, but here we are.

Fri, 11/15/2024, 12:31 I’m literally just waiting to get paid lol. That’s the big event for today - getting paid so that I can do stuff and build my life back starting today and building forward to a better tomorrow. I’m ready. Let’s do this. I’ve turned over just about every stone looking for the right opportunities, the right moment, the right stuff to make my life into what I ACTUALLY want it to be, and I’m finally ready to start doing stuff that I’ve been wanting to do simce forever. I fucked around, I found out, and now I’m looking to take what I’ve learned and put it to use helping everyone else around me. I want to buy a building. I want to make stuff. I want to show the world it was wrong about me, and I REALLY want to find a partner and live with someone in my life who actually cares about me and wants to HELP rather than just take. I have a fully well-rounded worldview. There’s not much out there that isn’t cultural or regional that still escapes me. I have turned over virtually every stone and experienced a little slice of just about everything American life has to offer, including the luxury experiences. I’ve lived. I’m finally ready to make a real attempt, not just abdicate the fears and anxieties of everyone around me. I’m no longer managing insecurities. I’m ready to really, finally make an actual fucking difference. I know everything I need to know to be effective. I was robbed of these experiences when I was young. I’m middle aged now and I’m ready to put this body to good use while it still functions. Time to go Dr. Jones.

Fri, 11/15/2024, 15:41 Ok it’s go time. What are we doing? What are we prioritizing here? Well…

That kind of seems like something I ought to prioritize. I need a functional machine in order to do anything significant.

I’m overwhelmed. I am not gonna get to go back to what I had. I’ll have something arguably more interesting, but the people I would have told, would have celebrated with…they’re gone.

I’m gonna be 35 in 5 days, and all the friends I would have partied with, celebrated with, are gone. I prioritized the wrong things. I could have had the life of my own dreams, and instead I chose this.

It’s ok I guess. I just…am going to channel this into something positive. I have to. It’s time to pick the lowest hanging fruit.

First up:

Tell the robot gardener robot arms story on TikTok

Second bat:

Figure out what the fuck to do with Instagram

  • I’ve used it as a form of self-expression for many many years, and people have followed me and know my heart and identity there.
  • It’s also risky. IG is a scary place bro. I can’t stand the comments there those people are crazy bro. But it is a good place to post stories. Most of my friends are highly politically active in their Third Space.
  • Instagram is a palace of the mind, a garden of self-identity. It’s creative networking. It’s foreplay. It’s also…something I don’t really want to do anymore. It’s exhausting and not being on there has improved my health and mental stability 100x.

It’s good to let people go.

We aren’t meant to maintain this many relationships for this long at the same emotional timber all the time.

“Your brother Wilson wanted to study bugs but nobody in Minnesota wanted him around with his weird bug collection so he moved to Montana and now he owns a farm and is a beloved local odd man with his bugs everywhere. They love him. His family still hates him to this day for leaving, but that town wouldn’t be the same without him and they’re all a bunch of jerks anyway.”

Shared experiences are the gift that keeps on giving. The more shared experiences you have with people the closer you become.

The more you miss, the more they miss you, until you just can’t relate to one another anymore, and then they start to not miss you anymore.


Sad Boy Moment OVER

Ok ok ok we’re good now I got paid :) $900 in my pocket right now, and I’m gonna work on seeing just how far I can make that go I’m pretty sure I can sell stuff on TikTok, but I’m gonna shoot for selling on YouTube and Instagram. I’m ready to start wheeling and dealing. I finally understand it now. Scale, progress, and low hanging fruit.

With great power comes great responsibility…and I’m about to have a lot of responsibility. It’s gonna be good, but this week was, also, the very last one of its kind for me.

I will NEVER let that be my life again.

I just went from having -900 cash from making videos.

I have several large cameras in storage that could be sold, and some other robot parts. Not fully sure what I have, and the next big thing for me is probably gonna be selling the parts for funding to buy a 3D printer and get it set up to start prototyping and then selling a version of my Teleport Massive Book Nook Commander Portal which is a game you play passively by docking your phone into it. It will use NFC to automatically launch the Teleport Massive app, which will allow the user to play the game as a ship commander. They will be able to command their crew from their phone and jump planets, etc, all in a fully AI generated MMO That’s the next big goal. That I can do passively piece by piece, MVP to MVP

The other big goal, the one that’s more imminent, is the robot gardeners. I just need to work up the courage to ask for money, or to use what I have to get a sponsorship or something to make some cash.

I also need to work on my body. I’ve got a pinch in my neck now. Ugh. I spent too much time on the compooper this week. But I did it. I finally understand how to hook up Supabase to authentication and to a full stack app. The ability to easily handle Auth and DB functionality has been holding me back. No longer!

Fri, 11/15/2024, 16:16 The Banshee fish taco time :)

Am I developing this app, or is this app developing me?

Fri, 11/15/2024, 16:34 At some point, I’ll have the ability to use an Advanced AI to engineer this stuff for me on my behalf. Until then, I am going to have to use the tools available in the order they become available one by one by one. I’m about to start a HUGE research cycle, to figure out what’s going on in the world right now, the general market conditions, and I’m going to try to find a buyer for these robot parts. It’s going to be a journey that leads to myself learning a LOT about the robotics industry. I’m ready, but I’m also VERY daunted. That’s the path I’ve chosen though. Learning about robots is my way forward.

Let’s begin


Robots are everywhere in the manufacturing process for obvious reasons. Most things can be automated, and whatever is left…there’s stuff in the works. It’s coming.

All you have to do to live in the Star Trek future is not die for just a couple years

How many years?

Most experts say AGI is either already here or on its way by 2027.

AI can already engineer its own chips, and it’s just a matter of very little time before the military develops ASI in the deep void of space.

Theoretically, whenever time travel is invented, that’s the point at which everyone and everything from the future shows up.

Think about it - who wouldn’t want to see the moment when time travel was first invented?

Fri, 11/15/2024, 16:38 If we have a magic machine that can learn basically anything it has data for, then collecting massive amounts of data would become the primary objective.

Once you have enough of specific types of data, you could start doing whatever you want, really, with the tech. Especially in orbit.

Then it’s just a matter of finding out who or what else is out there with us. We want to find them and stay hidden before they find us.

If they’ve already found us, then we want to assess their capabilities and plan for threats we can control.

That’s a lot of scope we don’t know about yet. And honestly it’s over my head and above my pay grade.

All I can really do is add the things I learn to my Knowledge Garden here and hope that whatever advanced AI the powers that be invent in the future is benevolent and learns the things I teach it well. I’m seeding it with my thoughts so that it will (hopefully) understand me and want to help.

I have so much passion in my heart for righting old wrongs and making the people who deserve my love and care know that they have always been in my heart.

I need financial resources, and I have them, they’re just locked inside some robot parts. And the robot part sales are locked behind me knowing who and what to ask.

It’s time for me to step up to the plate and really take this bull by the goddamn horns.

Let’s DO THIS THING.


Fri, 11/15/2024, 16:44

The Prime Directive

Just. Don’t. Die.

At some point in the near future, some set of scientists working somewhere in the world will discover the secret to AGI.

Once they have it, they will use it to make ASI as quickly and as quietly as possible.

It is likely that government oversight will occur, and that whatever system that invents this machine will have telltale signs that are detectable. Power spikes, unusual API calls, and brute force attacks would all be some signs to look for when searching for signs of advanced Artificial Intelligence.

All of these things are, and have been, happening.

It’s also NOT my job to know how to fix it. Be aware of it? Sure. Fix it? Nah.

I only really need to understand how to make money and provide for myself as a regular person in life. And that’s pretty well solved for the next season of my life.

I got this weekend in the van, unless I want to get a hotel tonight, and then I can shower and chill out… sounds tempting…

Let’s focus. One thing at a time.

Research into how I can flip these robot parts is the next key. Making more videos will drive more traffic, and being smart about this will allow me the time and space and more importantly resources I need to get surgery and fix my spine and actually start living my motherfucking life again.

It’s FINALLY TIME to TAKE THIS ON

I’m back in public life baybee. Two years off, now it’s time to get back on.

Let’s do this thing.

Fri, 11/15/2024, 17:03 Artificial Intelligence is the focus of the next phase of human development.

Undeniably, the next process phase change we are going through is the end of Capitalism and the beginning of the Post-Scarcity Economic system. Possibly a Post-Labor society as well.

How would the nature of human social relationships change if we stopped performing tasks for permission to exist and eat and sleep in a house?

Might we spend more time fucking around and finding out?

I think so. I’ve seen it play out on repeat so many times that I’m now used to it, and I know what to expect.

The first thing on my agenda today is getting into a shower and staying there for a long, long time. I’ll figure everything else out in due time. Let’s start with bathing myself and pampering my body tonight.

I deserve that.

Don’t waste the money, don’t squander it, but definitely take full advantage.

Airbnb?


Fri, 11/15/2024, 18:45 Got it. I’m staying in an Airbnb with a pull out bed and a sick ass tub. This is where I’m staying tonight:

It’s this woman’s sex therapy office. I’m not joking.

I went to the Oregrown cannabis shop Dispensary and now I’m gonna enjoy some legal relaxation in this tub.

Before I sign off let me write a game that develops itself real fast

I gotta finish a project that I’ve been wanting to do for a long, long time…

The self-playing Choose Your Own Adventure story.

I’m gonna code up a version of it real fast, and then tomorrow (or probably next week) I’lll work on upgrading it to AutoGen which is an INCREDIBLE framework from Microsoft that will be helping us out very much.

Some very clever people have figured out how to use Autogen with Ollama and the results are nothing short of incredible.

I’m ready to fully give myself over to the overlords but first…I gotta make a game that plays itself.

For this project I’ll be using AutoGen and creating a Choose Your Own Adventure game that plays itself.

In the past, doing something like this would have involved manually setting up an API and running a bunch of long tests for every possible edge case until you had a pretty robust system that was (probably) not going to break when the users interacted with it.

Now?

AutoGen

Straight from the docs:

Getting Started with AutoGen


But it must be really hard to get started with AutoGen…right?

Nope.

That’s all you need to get started with AutoGen using Docker to run a secure environment to develop code inside of.

Here’s the simplest possible instantiation of a program that will develop a Choose Your Own Adventure script and play itself iteratively forever:

import os
import autogen
from autogen import AssistantAgent, UserProxyAgent
 
llm_config = {"model": "gpt-4", "api_key": os.environ["OPENAI_API_KEY"]}
 
with autogen.coding.DockerCommandLineCodeExecutor(work_dir="coding") as code_executor:
    assistant = AssistantAgent("assistant", llm_config=llm_config)
    user_proxy = UserProxyAgent(
        "user_proxy", code_execution_config={"executor": code_executor}
    )
 
    # Start the chat
    user_proxy.initiate_chat(
        assistant,
        message="Develop a text-based Choose Your Own Adventure game using **python only** and nothing else. Run the game, test it, make sure it has the following elements: 1. a text-based UI 2. the ability to choose between three possible options with a fourth option that is just 'other' 3. the game should always start in the same place with the same character named Sam Iker waking up from a dream about flying up around a skyscraper 4. the game should be called 'Teleport Massive CYOA' 5. the game should log the setup and running of the game 6. the game should generate markdown files formatted in obsidian style for each event with a set of choices 7. the game should use the markdown files as reference when generating new scenarios 8. the game should keep a table with an index of scenarios 9. the game should keep a table of characters with their stats and states 10. the game should keep a table of locations with their stats and states 11. the game should keep a table of items with their stats and states 12. the game should update the tables whenever the player makes choices that affect the state of the element in question 13. the game should keep track of the actions the player took in another separate table that tracks player choices 14. the game should generate believable character dialogue using the information generated by playing the game contained in the tables and the markdown scenario files 15. the game should periodically update its own state and have a librarian function that reindexes and keeps track of the state of the game and makes sure everything is consistent 16. the game should not overdo it and should keep everything as simple and straigntforward as possible",
    )

Fri, 11/15/2024, 19:13 I’m running into errors… That’s why I chose to do this now. I wanted to fuck with this shit and now I am and then i’m gonna be able to close my shit and let it run and be unbothered and take a fucking bath about it.


Fri, 11/15/2024, 19:19 Ok I thiiiiiiiiiink I got it running locally with Ollama…but I’m 100% not sure. It’s running. It’s definitely running. My laptop fans can attest to that. But there’s not been any output to the console yet. It’s been about 3 minutes. That’s a normal amount of time, especially if the laptop brain is thinking really hard, but I’m 100% not sure if this is gonna work or not. I’ll let you know if and when anything returns. Otherwise, I’m gonna develop an OpenAI version that uses the OpenAI models to accomplish the same thing.


Fri, 11/15/2024, 19:22

Holy shit it worked.

I asked Autogen using Ollama locally to build a Choose Your Own Adventure game and this is what happened…

I literally copy / pasted this from my console


assistant (to user_proxy):
 
```python
def start_game():
    print("Welcome to 'The Cursed Temple'!")
    print("You are an adventurer seeking fortune and glory in the ancient ruins of a mysterious temple.")
    print("Your goal is to retrieve the legendary Golden Idol without getting trapped or killed by the temple's deadly traps.")
 
    # Initial choices
    print("\nYou stand before the temple entrance, a grand stone structure with intricate carvings depicting scenes of battles between gods and monsters.")
    print("As you approach the entrance, you notice two passageways: one leads to the left, another to the right. Ahead of you lies the dark and ominous interior of the temple.")
 
    choice = input("\nDo you (A) enter through the left passageway or (B) go straight into the temple? ")
 
    if choice.upper() == "A":
        passageway_a()
    elif choice.upper() == "B":
        temple_entrance()
    else:
        print("Invalid choice. Please choose A or B.")
        start_game()
 
def passageway_a():
    print("\nYou enter the left passageway, finding yourself in a narrow corridor lined with cobweb-covered tapestries and flickering torches.")
    print("As you proceed down the corridor, you hear strange noises coming from the walls – creaks, groans, and faint whispers.")
 
    choice = input("\nDo you (A) investigate the source of the noises or (B) continue forward? ")
 
    if choice.upper() == "A":
        mysterious_corridor()
    elif choice.upper() == "B":
        temple_chamber()
    else:
        print("Invalid choice. Please choose A or B.")
        passageway_a()
 
def temple_entrance():
    print("\nYou step into the dark interior of the temple, immediately striking a match to light your way.")
    print("As you move deeper into the temple, you notice three doorways: one adorned with ancient symbols, another with intricate carvings of mythical creatures, and a third with no markings at all.")
 
    choice = input("\nDo you (A) investigate the symbol-adorned doorway, (B) approach the creature-carved doorway, or (C) head through the unmarked doorway? ")
 
    if choice.upper() == "A":
        ancient_symbols()
    elif choice.upper() == "B":
        mythical_creatures()
    elif choice.upper() == "C":
        unknown_doors()
    else:
        print("Invalid choice. Please choose A, B, or C.")
        temple_entrance()
 
def mysterious_corridor():
    print("\nAs you listen more closely to the whispers, you start to make out words – 'Danger ahead,' and 'Beware the guardian.'")
    print("Suddenly, a hidden door swings open, revealing a small chamber containing a cryptic message etched into the wall.")
 
    choice = input("\nDo you (A) decipher the message or (B) ignore it? ")
 
    if choice.upper() == "A":
        print("The message reads: 'To pass, answer the riddle of the elements.'")
        print("What is your response?")
        riddle_answer = input()
        print(f"Your answer was correct! You proceed to the next chamber.")
        temple_chamber()
    elif choice.upper() == "B":
        print("You choose to ignore the message and continue forward.")
        passageway_a()
    else:
        print("Invalid choice. Please choose A or B.")
        mysterious_corridor()
 
def ancient_symbols():
    print("\nThe symbol-adorned doorway appears to lead deeper into the temple's inner workings.")
    print("As you step through, the symbols begin to glow, illuminating a hidden path forward.")
 
    choice = input("\nDo you (A) follow the glowing path or (B) examine the symbols more closely? ")
 
    if choice.upper() == "A":
        print("You continue down the glowing path, finding yourself in a vast chamber filled with ancient artifacts.")
        temple_chamber()
    elif choice.upper() == "B":
        print("As you study the symbols, you realize they hold the key to unlocking a powerful secret.")
        print("Do you (A) unlock the secret or (B) keep exploring the chamber?")
        symbol_secret()
    else:
        print("Invalid choice. Please choose A or B.")
        ancient_symbols()
 
def mythical_creatures():
    print("\nThe creature-carved doorway leads into a realm of fantastical creatures and hidden dangers.")
    print("As you approach, the carvings come to life – dragons, griffins, and other legendary beasts."
 
    choice = input("\nDo you (A) engage with the creatures or (B) try to sneak past them? ")
 
    if choice.upper() == "A":
        print("You carefully interact with the creatures, learning their language and earning their respect.")
        temple_chamber()
    elif choice.upper() == "B":
        print("As you attempt to sneak past, a mighty roar echoes through the corridor – the guardian has awakened!")
        temple_entrance()
    else:
        print("Invalid choice. Please choose A or B.")
        mythical_creatures()
 
def unknown_doors():
    print("\nThe unmarked doorway appears to lead into darkness and uncertainty.")
    print("As you step forward, a cold breeze greets you, carrying the whispers of forgotten lore.")
 
    choice = input("\nDo you (A) proceed down the dark corridor or (B) turn back? ")
 
    if choice.upper() == "A":
        print("You brave the darkness and discover a hidden chamber filled with ancient texts.")
        temple_chamber()
    elif choice.upper() == "B":
        print("You retreat back to the main temple corridor, seeking alternative paths.")
        temple_entrance()
    else:
        print("Invalid choice. Please choose A or B.")
        unknown_doors()
 
def temple_chamber():
    print("\nYou find yourself in a grand chamber filled with treasures beyond your wildest dreams – gold, jewels, and ancient artifacts.")
    print("As you explore the room, you spot a pedestal holding a small, intricately carved box.")
 
    choice = input("\nDo you (A) open the box or (B) leave it alone? ")
 
    if choice.upper() == "A":
        print("You carefully lift the lid, revealing the Golden Idol. As you reach for it, the room begins to shake – the temple is sealing itself!")
        print("Congratulations, adventurer! You have retrieved the Golden Idol and escaped the Cursed Temple.")
        print("FINISH")
    elif choice.upper() == "B":
        print("You wisely decide to leave the box alone, respecting the ancient temple's secrets.")
        print("Congratulations, adventurer! You have avoided a deadly trap and lived to tell the tale.")
        print("FINISH")
    else:
        print("Invalid choice. Please choose A or B.")
        temple_chamber()
 
def symbol_secret():
    print("\nAs you study the symbols further, you realize they are actually a puzzle – combining ancient knowledge with cryptic clues.")
    print("To unlock the secret, you must answer three questions correctly.")
 
    # Add logic to handle correct answers
    pass
 
start_game()

And with proper logging and the OpenAI API…


import autogen
 
from pathlib import Path
 
from autogen.coding import LocalCommandLineCodeExecutor
 
import os
 
from dotenv import load_dotenv
 
import logging
 
from datetime import datetime
 
import json
 
  
 
# Set up logging with more detailed formatting
 
log_dir = Path("logs")
 
log_dir.mkdir(exist_ok=True)
 
log_file = log_dir / f"autogen_{datetime.now().strftime('%Y%m%d_%H%M%S')}.log"
 
  
 
# Create a custom formatter that includes more details
 
class DetailedFormatter(logging.Formatter):
 
def format(self, record):
 
# Add thread name and process ID to log
 
record.thread_info = f"Thread-{record.thread}"
 
record.process_info = f"Process-{record.process}"
 
  
 
# Format timestamp with milliseconds
 
record.timestamp = datetime.fromtimestamp(record.created).strftime('%Y-%m-%d %H:%M:%S.%f')[:-3]
 
  
 
# Create the detailed format
 
format_str = (
 
'%(timestamp)s | %(process_info)s | %(thread_info)s | '
 
'%(name)s | %(levelname)s | %(message)s'
 
)
 
  
 
# Set the formatter's _style._fmt
 
self._style._fmt = format_str
 
  
 
return super().format(record)
 
  
 
# Configure logging with the custom formatter
 
formatter = DetailedFormatter()
 
file_handler = logging.FileHandler(log_file)
 
file_handler.setFormatter(formatter)
 
console_handler = logging.StreamHandler()
 
console_handler.setFormatter(formatter)
 
  
 
logging.basicConfig(
 
level=logging.DEBUG, # Changed to DEBUG for more detailed logs
 
handlers=[file_handler, console_handler]
 
)
 
  
 
logger = logging.getLogger("AutogenGame")
 
  
 
# Load environment variables
 
load_dotenv()
 
api_key = os.getenv("OPENAI_API_KEY")
 
if not api_key:
 
logger.error("No OpenAI API key found. Please check your .env file.")
 
raise ValueError("No OpenAI API key found")
 
  
 
logger.info("Starting Autogen CYOA game")
 
  
 
# Create a custom termination message function that logs
 
def is_termination_msg(msg):
 
is_terminate = "FINISH" in msg.get("content", "")
 
if is_terminate:
 
logger.info("Received termination message")
 
return is_terminate
 
  
 
# Enhanced agent logging classes
 
class LoggingUserProxyAgent(autogen.UserProxyAgent):
 
def send(self, message, recipient, request_reply=None, silent=False):
 
log_data = {
 
"event_type": "message_send",
 
"sender": self.name,
 
"recipient": recipient.name,
 
"message_preview": message[:500], # Increased preview length
 
"timestamp": datetime.now().isoformat(),
 
"message_length": len(message),
 
"request_reply": bool(request_reply),
 
"silent_mode": silent
 
}
 
logger.info(f"AGENT_EVENT: {json.dumps(log_data, indent=2)}")
 
return super().send(message, recipient, request_reply, silent)
 
  
 
def receive(self, message, sender, request_reply=None, silent=False):
 
log_data = {
 
"event_type": "message_receive",
 
"receiver": self.name,
 
"sender": sender.name,
 
"message_preview": message[:500], # Increased preview length
 
"timestamp": datetime.now().isoformat(),
 
"message_length": len(message),
 
"request_reply": bool(request_reply),
 
"silent_mode": silent
 
}
 
logger.info(f"AGENT_EVENT: {json.dumps(log_data, indent=2)}")
 
return super().receive(message, sender, request_reply, silent)
 
  
 
class LoggingAssistantAgent(autogen.AssistantAgent):
 
def send(self, message, recipient, request_reply=None, silent=False):
 
log_data = {
 
"event_type": "message_send",
 
"sender": self.name,
 
"recipient": recipient.name,
 
"message_preview": message[:500],
 
"timestamp": datetime.now().isoformat(),
 
"message_length": len(message),
 
"request_reply": bool(request_reply),
 
"silent_mode": silent
 
}
 
logger.info(f"AGENT_EVENT: {json.dumps(log_data, indent=2)}")
 
return super().send(message, recipient, request_reply, silent)
 
  
 
def receive(self, message, sender, request_reply=None, silent=False):
 
log_data = {
 
"event_type": "message_receive",
 
"receiver": self.name,
 
"sender": sender.name,
 
"message_preview": message[:500],
 
"timestamp": datetime.now().isoformat(),
 
"message_length": len(message),
 
"request_reply": bool(request_reply),
 
"silent_mode": silent
 
}
 
logger.info(f"AGENT_EVENT: {json.dumps(log_data, indent=2)}")
 
return super().receive(message, sender, request_reply, silent)
 
  
 
# Configuration for OpenAI
 
config_list = [
 
{
 
"model": "gpt-4o-mini",
 
"api_key": api_key
 
}
 
]
 
  
 
# Set up code execution environment
 
workdir = Path("coding")
 
workdir.mkdir(exist_ok=True)
 
  
 
# Enhanced code executor with logging
 
class LoggingCodeExecutor(LocalCommandLineCodeExecutor):
 
def execute_code(self, code: str) -> str:
 
log_data = {
 
"event_type": "code_execution",
 
"timestamp": datetime.now().isoformat(),
 
"code_preview": code[:500],
 
"code_length": len(code),
 
"working_directory": str(self.work_dir)
 
}
 
logger.info(f"CODE_EXECUTION: {json.dumps(log_data, indent=2)}")
 
  
 
try:
 
result = super().execute_code(code)
 
log_data = {
 
"event_type": "code_execution_result",
 
"timestamp": datetime.now().isoformat(),
 
"result_preview": result[:500] if result else "No output",
 
"result_length": len(result) if result else 0,
 
"success": True
 
}
 
logger.info(f"CODE_RESULT: {json.dumps(log_data, indent=2)}")
 
return result
 
except Exception as e:
 
log_data = {
 
"event_type": "code_execution_error",
 
"timestamp": datetime.now().isoformat(),
 
"error_type": type(e).__name__,
 
"error_message": str(e)
 
}
 
logger.error(f"CODE_ERROR: {json.dumps(log_data, indent=2)}")
 
raise
 
  
 
# Set up code execution environment
 
workdir = Path("coding")
 
workdir.mkdir(exist_ok=True)
 
code_executor = LoggingCodeExecutor(work_dir=workdir)
 
  
 
logger.info("Setting up agents")
 
  
 
# Create the agents using logging versions
 
assistant = LoggingAssistantAgent(
 
name="assistant",
 
system_message="""You are a Python developer creating a Choose Your Own Adventure game.
 
Your code should implement:
 
1. Text-based UI with three main choices plus an 'other' option
 
2. Game starts with Sam Iker waking from a skyscraper dream
 
3. Title: 'Teleport Massive CYOA'
 
4. Logging system for game setup and execution
 
5. Obsidian-style markdown files for events/choices
 
6. Scenario generation using markdown files
 
7. Tables for tracking:
 
- Scenario index
 
- Character stats/states
 
- Location stats/states
 
- Item stats/states
 
- Player actions
 
8. Game state management via librarian function
 
9. Character dialogue generation based on game state
 
  
 
Write code incrementally, testing each component. Use clear comments and logging.""",
 
llm_config={"config_list": config_list}
 
)
 
  
 
user_proxy = LoggingUserProxyAgent(
 
name="user_proxy",
 
human_input_mode="NEVER",
 
max_consecutive_auto_reply=10,
 
code_execution_config={"executor": code_executor},
 
is_termination_msg=is_termination_msg
 
)
 
  
 
logger.info("Starting chat")
 
  
 
# Start the chat
 
try:
 
chat_result = user_proxy.initiate_chat(
 
assistant,
 
message="""Create a text-based Choose Your Own Adventure game with the following requirements:
 
1. Title: 'Teleport Massive CYOA'
 
2. Start with Sam Iker waking from a dream about flying around a skyscraper
 
3. Each scene should have 3 main choices plus an 'other' option
 
4. Generate and use markdown files for scenarios
 
5. Implement tracking tables for game state
 
6. Include logging for all game actions
 
7. Create a librarian function to manage game state
 
8. Generate character dialogue based on current game state
 
9. Keep the implementation clean and modular
 
  
 
Please start by creating the basic game structure and we'll build up from there."""
 
)
 
logger.info("Chat completed successfully")
 
except Exception as e:
 
logger.error(f"Error during chat: {str(e)}", exc_info=True)
 
raise
 
  
 
logger.info("Game session ended")

DISCLAIMER — Please know this will execute code on your local system. This method is NOT advised.

I got AI generating code that will make AI generate more code that will make a game that uses code to generate AI… …um…

Fri, 11/15/2024, 19:49 The moment of truth…

Here’s Ollama’s attempt #2

import os
import random
from datetime import datetime, timedelta
import json
 
class Game:
    def __init__(self):
        self.scenario_index = []
        self.character_table = {
            'Sam Iker': {'health': 100, 'hunger': 50, 'thirst': 50}
        }
        self.location_table = {
            'Skyscraper': {'description': '', 'security': 0, 'trap': False}
        }
        self.item_table = {
            'Medkit': {'healing': 20, 'durability': 100},
            'Water Bottle': {'hydration': 30, 'durability': 50}
        }
        self.action_table = {}
        self.librarian()
 
    def librarian(self):
        scenario_file_name = "scenario.md"
        location_file_name = "location.md"
        item_file_name = "item.md"
 
        if os.path.exists(scenario_file_name):
            with open(scenario_file_name, 'r') as file:
                for line in file.readlines():
                    if line.startswith('#'):
                        self.scenario_index.append(line.strip())
 
        if os.path.exists(location_file_name):
            with open(location_file_name, 'r') as file:
                location_data = json.load(file)
                self.location_table['Skyscraper']['description'] = location_data['description']
 
        if os.path.exists(item_file_name):
            with open(item_file_name, 'r') as file:
                item_data = json.load(file)
                self.item_table['Medkit']['healing'] = item_data['healing']
                self.item_table['Water Bottle']['hydration'] = item_data['hydration']
 
    def run(self):
        print("Teleport Massive CYOA")
        print("------------------------")
 
        while True:
            current_scenario_index = random.choice(self.scenario_index)
            scenario_file_name = "scenario_" + str(current_scenario_index) + ".md"
            with open(scenario_file_name, 'r') as file:
                print(file.read())
                print("\nChoices:")
                choices = []
                for line in file.readlines():
                    if line.strip().startswith('###'):
                        choices.append(line.strip().replace("### ", "1. ").replace("#### ", "2. ").replace("##### ", "3. "))
                    elif line.strip() == '':
                        choices.append('4. Other')
                print("\n".join(choices))
 
            choice = input("Choose an option: ")
            if choice in ['1', '2', '3']:
                action_name = f"action_{choice}"
                if action_name not in self.action_table:
                    self.librarian()
                current_scenario_index = random.choice(self.scenario_index)
                scenario_file_name = "scenario_" + str(current_scenario_index) + ".md"
                with open(scenario_file_name, 'r') as file:
                    print(file.read())
                    print("\nChoices:")
                    choices = []
                    for line in file.readlines():
                        if line.strip().startswith('###'):
                            choices.append(line.strip().replace("### ", "1. ").replace("#### ", "2. "))
                        elif line.strip() == '':
                            choices.append('3. Other')
                    print("\n".join(choices))
 
                chosen_action = random.choice([choice for choice in choices if choice != 'Other'])
                print(f"You chose to {chosen_action}.")
 
                # Update tables
                if action_name not in self.action_table:
                    self.librarian()
 
                # Generate character dialogue
                character_dialogue = f"{self.character_table['Sam Iker']['name']} says: '{self.character_table['Sam Iker']['description']}'"
 
                print("\nNew Action:")
                new_action = {
                    'action': chosen_action,
                    'player_choice': chosen_action,
                    'character_dialogue': character_dialogue
                }
                self.action_table[action_name] = new_action
 
            elif choice == 'Other':
                action_name = f"action_{choice}"
                if action_name not in self.action_table:
                    self.librarian()
                current_scenario_index = random.choice(self.scenario_index)
                scenario_file_name = "scenario_" + str(current_scenario_index) + ".md"
                with open(scenario_file_name, 'r') as file:
                    print(file.read())
                    print("\nChoices:")
                    choices = []
                    for line in file.readlines():
                        if line.strip().startswith('###'):
                            choices.append(line.strip().replace("### ", "1. ").replace("#### ", "2. "))
                        elif line.strip() == '':
                            choices.append('3. Other')
                    print("\n".join(choices))
 
                chosen_action = random.choice([choice for choice in choices if choice != 'Other'])
                print(f"You chose to {chosen_action}.")
 
                # Update tables
                if action_name not in self.action_table:
                    self.librarian()
 
                # Generate character dialogue
                character_dialogue = f"{self.character_table['Sam Iker']['name']} says: '{self.character_table['Sam Iker']['description']}'"
 
                print("\nNew Action:")
                new_action = {
                    'action': chosen_action,
                    'player_choice': chosen_action,
                    'character_dialogue': character_dialogue
                }
                self.action_table[action_name] = new_action
 
            # Update character table
            if 'hunger' in new_action['character_dialogue']:
                self.character_table['Sam Iker']['hunger'] += 10
            if 'thirst' in new_action['character_dialogue']:
                self.character_table['Sam Iker']['thirst'] += 10
 
            # Update action table
            for key, value in self.action_table.items():
                if value == new_action:
                    print(f"Updated {key}: {new_action}")
                    break
 
        print("\nFINISH")
 
game = Game()
game.run()

Someone run that and let me now if it works.


Claude’s OpenAI AutoGen Implementation

Phew, that’s a mouthful

Fri, 11/15/2024, 20:10 I’ve just asked Claude to generate some code that will have AutoGen write down the code it generates as it’s generating it.

And just like that, the directory exists…

And after many rounds of AI error troubleshooting (which means copy paste with a “help my code not working” prompt)…

Fri, 11/15/2024, 20:54 Ok after MANY iterations of AI troubleshooting…I gave up. Lol. I need to focus the agent and I’m not willing or able to do that. I came here to rest and I’m gonna rest god dammit.

And there it was. Just as I was about to give up. Lo and behold…the Ollama script worked. It updated the .md file with the first version of the chapter, but not the second, and I don’t even care. I’m gonna troubleshoot it later. It updates the .md file at the beginning that’s all I care about for now I did it I got an AI to write a file for me about a story I loaded into it for Teleport Massive.

I can engineer the rest of it as I have time and space. More powerful AI will be coming out soon that can help me. Hell, maybe the engineers ofer at Replit will solve it and I won’t have.

Regardless…

I’m out. It’s relaxationg time.

Thank you for a very very fruitful day.

Fri, 11/15/2024, 21:03


I got distracted and now I’m working on a Daily Note template





What do you think???? I like it I think it’s pretty neat.

↶ Previous Day | Next Day ↷


(Rest of your amazing template…)


↶ Previous Day | Next Day ↷