bouncer
← Back

RWXROB · 294 views · 4 likes

Analysis Summary

20% Minimal Influence
mildmoderatesevere

“Be aware that the 'lazy programmer' trope is used here to validate the creator's specific technical choices and tools as the most efficient path for beginners.”

Transparency Transparent
Human Detected
100%

Signals

The transcript displays authentic human behavior, including spontaneous interaction with viewers, natural speech disfluencies, and a highly specific, non-formulaic narrative about technical problem-solving. The content is clearly a live recording of a human developer working through a coding project.

Natural Speech Patterns Frequent use of filler words ('uh', 'um'), self-corrections, and mid-sentence pivots characteristic of live human thought.
Personal Anecdotes and Context Specific references to hitting API rate limits, personal workflow frustrations, and direct interaction with a viewer ('Bobby from YouTube').
Technical Stream Format The duration (over 5 hours) and the stream-of-consciousness technical troubleshooting are hallmarks of human-led live coding sessions.

Worth Noting

Positive elements

  • This video provides a rare, unfiltered look at how a developer troubleshoots API rate limits and architecturally decides which system should be the 'source of truth' for automation.

Be Aware

Cautionary elements

  • The creator uses 'revelation framing' to make his specific tech stack (Bash, Go, GH API) feel like the objective 'fastest' way to work, which may overlook more modern or accessible tools for beginners.

Influence Dimensions

How are these scored?
About this analysis

Knowing about these techniques makes them visible, not powerless. The ones that work best on you are the ones that match beliefs you already hold.

This analysis is a tool for your own thinking — what you do with it is up to you.

Analyzed March 13, 2026 at 16:07 UTC Model google/gemini-3-flash-preview-20251217
Transcript

We're back doing the prep for the beginner boost starting tomorrow, March 8th. And we are going to write a command called uh current, which I've had multiple iterations of this over the years. And I want to update it uh using any kind of optimizations that AI can provide. Um, and using the the GH command line tool, using the API subcommand uh API command, which is really great for manipulating Twitch from bash scripts. As anybody who's been watching me for any amount of time knows, I am a huge fan of rapid development for with shell scripts before putting into something else. And and something else is almost always go. Uh, and I it just keeps my my quick and dirty scripting skills, you know, fresh. keeps my bash up to date. How you doing, Bobby from YouTube? Thank you for being here. Um, so again, the goal here is to come up with a tool. I've already built a tool, but it's based on the GitHub status, and I hit the API quota of 5,000 hits, which I found out how to look up through with the AI using the GH API, GH status API, and it'll show you how many how actually I should just show you. So you can do the uh GH there it is API rate limit. So you can look up your rate limit and see how this is cool. This is a command I did not know about. I need to make this I need to make this I need to make a video about this. And this is exactly why I want to get the tool because then I could just write the the quick thing and it would change the overlay. I would change my Twitch title and it would change my GitHub status and then I can make the video and as soon as the video ends, uh, I can have a web hook that's watching the websocket on OBS, it can rename the file so that when I go in to look at the files to upload to YouTube, the file already has the name and I don't even have to open the file to look at it to know what to name it as. So, I can just batch upload everything. That's the goal. Uh, we're talking about, you know, the fastest possible content creation. Um, I did hit 5,000. The reason I hit 5,000 is because I I I v coded it and I didn't see the rate limit and I didn't check put any. So what it was doing is like every second it was pulling to get the status and I did check earlier to see if the if there's an if there's a web hook event generated uh from GitHub for this. There's not. There is for issues and other stuff like that. So when an issues created, you know, you can call a web hook and then you can just have it be event based. But you can't do that for a GitHub status change. The the original goal was that I would just be able to go out to the GitHub thing, the GitHub, change my status on my app, and it would change my overlay in my stream. But I already have a method of doing that uh by changing the title in uh in my uh I'm actually getting an idea here, changing the title on Twitch instead of changing the title on the command line. So, uh, let's think about this for a second. Uh, so there's three ways to do this. If you want to if you want to synchronize the overlay, which is displaying at the top of the screen right now, and the Twitch title and your GitHub status, which I don't know why you would look at people look at quick GitHub status, but I think I don't even think you can follow someone's GitHub status. There's really no reason to do that. It's just sort of a interesting API experiment, but it's more important to synchronize the title from Twitch so the people browsing you on Twitch or YouTube can see it. Now, I really really wish I could change the title on on on YouTube, but I do not think that's possible. Why is this important? Because when I go to make a video, this is like this. It burned me yesterday. I made three videos yesterday. They all had prep for the beginner boost in the video title name. So, that made it much harder to distinguish what the thing was about. So, what I want to do is I want to make it so the title changes before I make the video and then I hit record and then I do a little little mini video and then when when I hit stop recording uh the the file name gets gets changed and gets uploaded. But during the the process of recording the video depending on if it's like 5 minutes or 50, I get a an updated title, an updated potentially a YouTube title and updated GitHub status all at the same time. So if anybody wanted to see what was going on, they could they could follow those things and see what was changing. Um I think this is particularly important for YouTube actually. So this is giving me pause for a second because uh I know that you can change the title on YouTube pretty easy as well. The problem with YouTube is it does not have an AP at least when I did this last time it did not have an API. So um you go to view your channel and it will show the current it says prep for tech beginner boost, right? Um, and this is this this needs to also change. In fact, I think this is the most important thing to change because a lot of people are finding me through through Twitch. You can see there's three watching now on YouTube. Thank you. Hi, YouTubers. Um, more and more people, most people have found my my stream of my content through YouTube. So, even though I'm not going to be catering specifically to YouTube, Landre, how are you? Oh, you're and uh so you know the name of this video whatever's whatever the the the the title of this video is that becomes the title of the overall video. But um it might be nice to be able to what I'm kind of thinking about is having having a default title for the live stream and then having a title that changes as that sets chapters. Now, chapters are set in Twitch automatically when you make a category change, but they are not unfortunately uh when you make a title change, which honestly is kind of stupid. It would be really great if it did that. Then people watching my Twitch bods could go through and and do the thing. Um, uh, another thing that I could do is it like when I do those recordings, I could in my big longass video, uh, I could have I could actually potentially have it mark the video and add a chapter at that moment in time. I did code all of this once upon a time. Once upon a time, I had this so that whenever I started any video, it would time stamp the beginning of the recording because that's an event. And I actually still might do this. And then I could calculate the distance from the event time-wise uh for when a particular video started. And by doing that you could kind of during a session you while the entire video session is going uh we're talking about the you know started streaming versus ended streaming versus starting recording versus ending recording. If you had the starting recording, starting streaming versus ending streaming, you could do that. And then what you could do is you could actually create a chapter file that would have all of the the high points in it and you could post that to go to in the description of the main video. Now, the problem with that is that you're still looking at like a 3 4 hour video depending on how like last night's was 6 hours, six, seven hours long. So these live, you know, long form videos are not consumable. That's why I like being able to push button and say record so when I have a specific topic and then upload those in bulk so they go under my videos tab instead of my live tab. Uh and that I do love doing this. So, uh that would make me able to generate content uh you know I could generate 15 to 20 videos a day easily uh that have specific titles and then after the fact people could come back and put descriptions or after the after the uh you know the the text that gets created by YouTube over time that can then be queried and that could be summarized by AI and put into the description. So my videos are really well organized and I don't have to do any work. uh I mean very little work least amount of work possible best best programmers or the lazy programmers um so having said that let's think about this because really the question is which title should be authoritative the first version of this that I did years ago I used a file and the file was authoritative and what it would do I'm pretty good I just have a cold uh the the file would push I I just got back from a a very short run to set my insulin sensitivity and activate it. And I've got my really great my really great blueberry, spinach, orange, celery, cucumber, air carrot smoothie. It's really good. So, years ago when I did this, I did it as a text. I did the text file to be the authoritative thing. And uh I I actually made a whole bunch of it and put some in the fridge and I just kind of suck on it. This this really gets me through. I This is I I've never actually done this and also live streamed and that year I got really out of shape. I think it was because I was drinking booze instead of smoothies on stream. So I'm trying something new this time. Uh so what do we make authoritative? I didn't put turmeric in there. Know I should do a video of me making smoothie like a really quick one using my Pocket 3 and post that. I I need to get better at posting Pocket 3 videos like where I just, you know, take an actual video and then like put upload it or with my phone or something. Put it on Instagram and then that's actually a really good short. Should probably start doing more shorts for that kind of thing. Um, so what do we make authoritative? Do we make do we make the text file authoritative and then that pushes out to everything GitHub, Twitch and YouTube or do we make uh Twitch the Twitch title authoritative? That means anytime the Twitch title changes we pull first of all the question is can the Twitch title does the Twitch does Twitch have an event driven system? If it does that's a no-brainer. If it does, it's a no-brainer because because then we can just hang around, have a server, we can have a server that waits for the the Twitch event for the title update status, and then it notifies us of title update and and it will trigger everything else. Uh, that would be ideal. Why would that be ideal? Because when I'm out on the bike and I'm streaming and I have the overlay and I change the title, I I could actually change the title with Reream or whatever the app and and then it would actually propagate over to my overlay. Currently that's not happening. Uh and I could not do that if I use the file as the authoritative thing. That's why I chose GitHub status as authoritative because if I change the GitHub status I can propagate that across the board. I know that already. But I was having to pull for that. So So and I ran into my $5,000 API limit. So it's it's likely one of two things is possible with Twitch. Um one that and I can have Oh, I'm getting balloons. I'm doing the balloon thing on accident. Uh, one, the possibility that I'm going to get Twitch Twitch's API uh, rate may be a lot higher. Who knows? Uh, it could be that Twitch already has an event- driven web hook system. I doubt it. Twitch is not that advanced. Uh, and it's more likely going to be that I'm just going to have to save the title on my machine. In fact, it's it's I could very easily have my server port forwarded through uh, a port forwarding service. I have one already that I pay for. I can't remember which one it is. So I can use not port ring. Uh so I can actually go change the title and I could actually make a tiny little web PWA where I change the the stuff on the PWA and then and then that changes my title everywhere uh on reream and everything. Um which is another issue because like when I change the title it doesn't ever change the title on Facebook uh which I'm co-streaming to dual streaming to uh or YouTube. So uh I need to make a system that will synchronize all the titles uh you know minimally the the one in Twitch and YouTube. So let's first of all start by assuming that the the street the that the text is authoritative and we want to push the titles out to everything uh and if everything else fails uh in terms of event driven triggers and stuff we can still do that and then we can have that serve through my VPN and I can access it through a web page and I can type in my type in my data and then have that push the titles to everything. Uh, and so if that's true, we could actually add uh a whole bunch of other stuff. So, let's actually fire off a uh we're going to fire off a uh I'm going to merge this back in. Let's see. What did I add support for? I don't even know. Oh, okay. So, oops. My problem is is I like hacking on things way too fast. Hey, how you doing, Adriano? Thank you for the sub. So, what do we got here? I got to merge this BR. Uh, no pull request. What? Wait, did I not push it yet? Now it's going to tell me. Wait, what? Huh? I think it's because I don't have merge commits against this off. Normally it will give me a prompt there tell me what to do. GHPR create. Yep. That's how I submit it as a draft. GHPR review web. And then here's the PR. Go check what files were changed. I added this to the file. And then I can submit my review. Approve. I can't approve my own review because I do I have it set to what do I do I have it set to it has to have at least one review. I think I do. I don't think I can do I can review my own [ __ ] because I have it set up to be like work which means somebody else has to approve it which is obviously not happening unless somebody wants to go approve it. able to merge. It says um I think I can I don't think I have a yeah merge request. I want to do squash and merge. No companies with base branch. How you doing bull? And it was I built the machine directly on Windows instead inside of podmium. Oh interesting. That's interesting. Did you say did you let the machine build itself or you're trying to use podman differently? You just use you just use the VM that comes with Podman, unfortunately. Yeah, I wish you could leverage his existing VM, but you can't do that as far as I know. Can you put a comment like that in the issue and close it? Thank you. Oh, that's so good. All right, so I'm going to do a squash emerge. I'm going to do this from the command line. Actually, I want to set up delete branches here. I don't think it has delete branches set. I wish I could set up these these settings for all of my repos. I don't think you can do that. Um, I wonder what the AP I wonder what the AI thinks. Uh, can I make all all my repos have the same settings? uh such as no direct commits to main and required reviewers and delete automatically the branch associated with the PR. These are all things you usually want in your GitHub if you're doing it with a team. So I like having that in my own workflow at home so that I get used to doing it and don't skip a step. Uh yeah, universe. is a clear solution is organizational rule set. What if it's not an organization? Rule sets can only be applied to one policy multiple. I want that port the main part you need to target develop branch uh for automatically PR merge separate automatically delete head branches documents or music can centralize most of the mer you have to pay for orgs though. I think I don't want an org. I have an org. I have the skill stack or if all the repos in or you can send it pretty well with the or rule set plus a small automation password delete branch merge if needed. If they're under your personal account, you want to script you want to script to loop through repos and apply the same settings repo by the API. Oh, [ __ ] yes. Let's do that. Uh sensible setup would be block direct updates to main require pull requests. Uh require one or two approvals option require code review. Enable autodelete automerge press. You want I can write a GPI. Yes. God. Yes. Um. Okay. Write write a GH API script that uh defaults to squash and merge PRs. uh uh to disallow commits directly to main. Uh uh code owner review options require code owner review. uh and auto deletes the merged uh PR branch, but do not require uh additional reviewers. This is the kind of thing I would be spending a lot of time on. I need coffee now. Or Adderall. I don't take Adderall. I wish I did. I'm trying to get a I'm trying to get a legitimate prescription for it because I definitely have whatever you need it for. Full disclosure, I tried an Adderall when I was on vacation. I had a friend gave me one and it was miraculous. It It completely fixed my brain and I was like, sheesh, I don't know. I need to try this. I start to think I should probably been diagnosed a long time ago with whatever it is that you take Adderall for. Yeah, a lot a lot of people I've mentioned this before on stream and people are like, "No, you do have a touch. It's very addictive and everything." There's a lot of hackers and gamers use it because it helps them get hyperfocused. They overdo it though. Is it ADD or ADHD? Yeah, but I mean you guys see my style like writing code in videos and stuff, right? I think the symptoms are there of it, but when I take out the test, I'm like, "This isn't me." So, but yet it really helped me. Oh my god, it helped me. It just helped me quiet my brain down. It helped me quiet my brain down. Instead of going all over the [ __ ] I was able to like really focus. It was so great. And so, you know, I think I also have bipolar disorder. I also have like I I have manic depression. I go up and I'm really happy and I'm really depressed. Uh, so I just think I I definitely have a ton of like head things, but I don't want to be, you know, hey, I'm Rob. I'm a Sagittarius and I have ADHD. It's not my identity. So, NGH need uh include all advent bypass by AD no direct push rule. Don't want that. Uh, God, this is great. Uh, your own code. Wait, what? I didn't know you could. God, that is so cool. We need all kinds of brains for dev jobs, right? Owner type equals API owners or owner repos. User repos repo endpoint user own repos. What is the requirement? How does it work? This is why you have to be able to read the code. API pageionate. Oh [ __ ] It's going to like go through the whole thing. God, look at how awesome this is. You know how hard it would be to write this? I I know what everything does though. That's what's so great about it. It's like I had the best intern ever and they just knocked out what I wanted. Sweet beavers tomato, how you doing? Somebody was here for the other container. All FS read repo JSON do jQ name repo. Here's skip archive. God that like looks up every single repo. Allow squash merge true. Allow merge commit false. Allow rebase rebase merge false. Delete branch unmerge true. This is crazy awesome. A couple gotchas user this use a repository update endpoint for merges uh settings like blah protection endpoint for the branch rules get rest dock explicitly support these fields uh okay it can be zero okay this script applies protections to each repos default branch not hardcoded main okay fine the default branch okay it doesn't have to be main that's that's perfect that's fine because it might be master or whatever. This is perfect. God damn, I was so glad for AI is so cool. This is This is not even a good AI. This is Chad GBT protect uh man. The script applies protection to each repos branch. Sheesh. It's a little scary. Watch me like kill my repo. Let's test it on repo. Ala, how you doing? Yeah. Um, God, I need to put this in my scripts. New X. Uh, what do we call it? Apply reple policy new policy. Uh, power. All right. Repo policy. We need to make a new repo. Uh repo create uh policy test. Uh yes. Um policy test rob uh blah public no yes. Uh yes. All right. CD repo policy test repo policy policy. Wait. RIP policy uh policy. Oh, we should have it. We should have it complete. That would be so cool if it auto completion. Yep. Oh, no. Under type for policy test found document tutorial. Well, let's see what she says. Uh, better answer documentation URL. The error is because the policy is being treated as the owner account name, not a repo name. Uh it means look at look at look at the the GitHub user or or name policy test. Oh, if you repos like Rob post you want policy that would apply the settings to all repos all repos. Oh [ __ ] that. Uh and your script error handling is money here. Um, what if I want to specify only a specific repo? We just going to have to change the code here. Minimal change to make it work cleanly. Uh, ideal. The idea is simple. If the argument contains blah treat as one repo otherwise treat it as an owner of the numerator repos. Okay. Blow is the clean robot version. Uh it's still pagionating through all of them. That's dangerous if I do it wrong. Goodbye. If I particularly like I I don't care. I just want to get it done. A famous last word, right? That's going to be the downfall of humanity. So, yep. There we go. Rob, sweet. Please don't give away my out my stuff. My note ID. Are any of these secret? I hope that's not secret. I hope. Oh [ __ ] I don't trust this. Where's my stuff? It's only going to dox this repo, though. or branch not bound anyway. Not worth it. That's enough for me to try it. I'm going to throw it out. That was fun, but it's it sucks and I'm not going to play with that anymore. I'm just going to do it by hand because I I can't wait. AI fail. AI failure. What else is new? I didn't vet the script or anything and it's changing policy on all my repos. That's like really [ __ ] dangerous. So, I'm not I'm not gonna I'm gonna abandon that one. Just do it. So, the way to do that is just do a squash emerge, which I can do here. Actually, I can change it on this on this repo. Let's go. I'm going to do repo delete really quick. What was the name of it? Uh was it was policy test, right? Uh gh uh repo delete policy policy test confirm deletion policy test. Get rid of that repo and get your support issues. Let's do this. Let's go change the setting here. Well, I'm not even going to do that. I'm just going to merge it. Just you have to go down here and do squash and merge. Uh, and this was not going to delete the branch. Confirm squash and merge. And that can all be done from the command line. The problem is it leaves a branch around. So, you have to click delete branch. Otherwise, you get a million branches, which sucks. So the guey took me a few seconds, but having that for everything would have been a lot nicer, but now that's in. Okay, so that merges in and now we can start out our new project without without further ado. Uh I have a lot of vend windows open, so I'm going to close them up. And my OBS, did that get saved? Uh yep, that got saved. I just did I just did that one. Get fetch prune. I don't have those branches anymore. Yep, there we go. Uh status exit. Exit. Oh, what is the system development manager? We talked about that. Quit. I was going to make a video about that. That's what led to all this. Um build do in the docs directory. We have to come back to that. Uh, what are we doing here? Okay, so there we go. Let's start something new. Yep. Let's start a new repo and current. Actually, let's do let's let's set our entire teamwork session status in context. So, let's go ahead and quit out of all that. And uh uh where am I? Clear. Do I have T-Mox? Nope. I'm out. Okay. So, when you're using T-Max, it's usually nice because we want all the new windows to be in the right place. So, we're going to actually make that in the right place. So, we're going to get out of the boost directory for a bit and we're going to make a new repo and go into T-Max in there. So, GGH, we're going to call a repo current um GH uh repo create uh scratch currentx Rob uh set current uh uh uh Twitch title the current Twitch title, YouTube. Uh the current set title title for Twitch, YouTube GH status, GitHub status, uh and uh OBS overlay. Okay. Public read file. Would you like to add a read me file? No. Oh, yeah. I guess I want Yes. What kind of ignore do I want? This is going to be bash. I don't think there's anything to do that. Uh, bucket. There's no shell. I don't know. Y. Let's see. ADA. I want What do I want a bash file? No, I mean, okay, I'll just make it go for the hell of it. Would you like to add a license? Yes. Uh, Apache 2. Current repository? Yes. Uh, locally, yes. All right. All right. So, we created a new repo CD into current. Now, we're in here. I can go say here uh uh the current command uh make for Yeah. This live stream is not a word. Fine. Okay. So, we probably need the OBS overlay in here. Honestly, I should put all of this stuff in here. I should put the OBS overlay. Uh, yeah. All right. So, there we go. A directory. Yeah. Gnome to JPEG. I got to change all these. So PNG is on an OBS. Okay. What? Uh, stir status. Hey, I'm making a current command so I can keep all my titles in sync so I can make these videos quickly. I need more juice. Um G status um can add dot. Of course I'm preparing. It says preparing. That's what it says. You read the title. That's what it says I'm doing. The beginner boost is just going to be me making a lot of videos and you guys answering questions for you guys. That's all. That's all it's going to be because people have to go back to the videos and I don't want to make them go through a six hour video. So, this stuff is really, really, really, really important. Nobody wants to watch a six-hour video. They want to watch the little ones. They don't want to be all organized by it. So uh get add dot get status uh get commit uh initial from OBS it's not going to let me push to me actually it will bibson how you doing thank you for the sub oh appreciate that with bits of info this is sounding organized What are you kidding me? Are you actually giving me a good good thing? Are moving back to just VM VMS from Kubernetes? People are moving back to VMs from Kubernetes. Name one. Name one substantial company that's doing that. And I'll tell you many multi-billion dollar worldwide computers companies that are using Kubernetes even more. And Slurm, maybe a bunch of tiny companies that don't matter. in startups because they can't comprehend it, which I would be. I hate Kubernetes. I do not like it. It doesn't make any difference. That's what everybody has to use. I'm eating juice. My magical smoothie juice. Visceral fat burning magical smoothie use that visceral atapost tissue. The enemy of people over 40. All right, here we go. Getting kind of cold. I wonder why. Definitely check it out soon. is what for AI is slurm actually a thing? Yeah. Telling me the companies are going from Kubernetes to to VMs and then not knowing what SLRM is. Yeah, proves my point. I'm not I'm not ripping on you. I'm just telling you if you don't know what SLRM is, you've been under a rock. Storm is the most insubstantial enterprise technology to have come out in the last two to three years because it allows $10,000 GPUs to be used effectively in batch mode. People that are crunching numbers and models and data and all that stuff that fundamentally violates the model that Kubernetes was built on to provide microservices. Slurm is 100% dedicated to batch processing which means taking massive huge jobs and running them over the space of two or three days. Kubernetes was never built for that. Slurm was from the ground up to be a better PBS which PBS built was NASA built to do that very thing. So if you want to get into high performance computing and you want to be running the operations systems and all that stuff or you know you want to be in the money chain between a company and realizing its its goals, its financial goals for uh for you know AI machine learning models which is how everything runs today. then you must learn SLRM. And I cannot We're in the middle of a slur migration and it is so phenomenally awesome. And it is so efficient and powerful and it just saves so much money. The average person out there who, you know, watches this YouTube video is going to be like, "What the hell is SL? Why do I care?" And I did make a quick little video and a video short about it, but I'm going to definitely talk about it. I'm probably I'm going to go through I'm I'm just learning it. I I'm in the middle of porting a bunch of Pearl code from PBS to slurm at work. That's my job right now. And uh you know we're just injecting like code to to integrate slurm so that if the job ID has a slur in is if it recognizes slurm job ID it therefore uh will will will redirect the job to slurm to the slurm under the framework instead of the pbs framework having both of them simultaneously providing high performance machine learning modeling uh crunching and batch jobs like that. So we we have support right now for PBS and I actually I'm super proud of this. I I other than the submission of jobs which is a pretty big thing I've been you know doing a lot of it writing the you know altering the commands that existed to submit and match and manage and and delete jobs for PBS uh so that they will also work with slurm and uh I would love to talk about that I don't know how much of that I can talk about because it's some of it's proprietary I think the method that we used to split the the two and support PBS learn without impacting our customers is pretty [ __ ] awesome. It's a hack, but it is I'm sure there's a big ass enterprise out there that would want to know how we did it. And I don't know if I can share that. I think that might be proprietary. Ironically, it's not that complicated. I mean, it's it's pretty it's pretty obvious. The technique is pretty obvious. You just look at You look at the job ID and it says is this a swarm job or is this a PBS job? You group all the PBS jobs together. All the all all the SWM jobs together. You call both the systems synchronously. The end, you know, but we putting all those hooks in to make sure everything's compatible. That's kind of been a thing. So that's what we've been doing. Uh and I I super love working on that. Okay, I'm kind of distracted. I'm going to focus again. Yeah, it's open source. PBS is not Yep. Yeah. Easy to figure it out and import their own use case. I think you're right. And then we wrote the API. My buddy and I wrote the API that allows web submissions of jobs uh from applications that use endpoints, web endpoints from the API that we created. That is definitely proprietary. And that allows our entire company to write apps that submit machine learning jobs uh models and stuff through the API without having to care. And they did they just changed their endpoint depending on the version. Fact we just added a new version for we just needed it we added a new endpoint version. So yeah anyway it is it is yeah it's pretty cool. I I actually really love that work. It's really fun because I get my fingers in Pearl all day every day. Honestly, I enjoy Pearl. I do. People think I'm demented, but I really do. It's a great language. Speaking of Pearl. All right, let's do this. Um, we need to change G status to be current. So, let's do that. Let's change GH status. Actually, no, let's let's write it from scratch and then we'll we'll piler from GH status. So touch GH status touch current. Uh why do they think they think it's people hate Pearl people? It's a favorite language for people to hate on in Pearl. In fact, I need to I need to publish that video right now. I'm really ADHD. I know. I'm super [ __ ] ADHD. I need I need some help, people. I need help. I need help. Help me, Obi-Wan Kenobi. I cannot stop myself. Look at all the money I'm making and all the people leaving me in droves. Every day there's like hundreds of people leaving my channel. I'm like the anti streamer. I'm telling you. Uh Pearl, I gotta I gotta make pos banishing bash. This needs to be This needs to be made public. Um public doiles. RBX Robfiles. Yeah, I really publish that one, too. Wait. Pearl. Pearl. Pearl. Pearl. I made a really great video about Pearl. This look go with Pearl. Where's my really good video with the camel? Oh my god. Did I delete it? Delete it. I think I deleted it. You remember my video with the camel about how awesome Pearl was? It's deleted. It's actually gone. Oh, makes me so sad. Oh well, so much for that. I do love Bash though. But maybe not for my I think I'm gonna still use Pearl for my for my dot files because it's so much more powerful. I was pretty I was pretty ranty in that one, right? I think that's probably the way I did it. I deleted a lot a lot of really angry videos. That's probably why. Yeah, I guess that's why. Okay. Uh current. Where's current? Uh you know what? I I have a bash thing that will look up all my repos and if it has if there's any binaries if there's a bin inside of the in the directory, it'll it'll add it to my path. which is sort of dangerous because if somebody actually has a bin in their repo and I put their add a repost to my list because I want to be able to maintain all these these scripts independently but yeah I want them to be available in my scripting before I went to Bonsai and like put them all in a single thing and recompile. So I actually have this in my in my I wonder if I got rid of it. Uh, God, I have so much to do. Bash RC. Uh, that is not my broadcast ID. We found that out. That's That's wrong. Uh, that's not it. It's in here. We We got We have to change that back. It's 44 for something. God damn it. Where are you? Where are you? Where'd it go? Oh, sir statuses are changed. Okay, here we go. Or God damn it. I fail. Oh gosh. Robert, did that do it? What's going on, Robert? Why is my stuff not? Wait, wait, wait. Uhoh. I broke something. This is not good. I broke something. Hi, don't pie piple. It felt lonely. It YouTube does doesn't have a lot of people over there. That's for sure. This is not This something is broke. It's not It's not doing my normal It's not using my normal my normal uh cut and paste my team. Oh, I'm not in T-Mo. That's why. Derp. I'm so stupid. I can't believe I didn't realize that till that vlog. I was like, why is it coming? That's a T-Max operation. You can't do a tattoo, dummy. All right. So, I was trying to do T-Max operation and it wasn't working. And now it's now it's working. See if I do and I go like this. See? See? See? That's what I want. Now, it's using the buffer and T-mok. cover this which ex even if you don't have VI you can still use it that's why I do it uh vi status no where's the vim thing no vi now I can paste yay uh okay that wasn't even the reason I did that what was I doing I was looking or uh I don't even remember what I was doing. A song by English. Oh, I don't know it. I don't know that song. What the hell was I doing? Someone help me remember before I got so sidetracked by changing my Twitch ID. I was working on current. I was going to change I was changing something about current. I can't even remember. I am an idiot. I should go back replay the video. I was looking at best see. Oh. Oh, I remember. Yeah, I was I was looking to see my path. You see what I do here? It goes through it does a path repend. It iterates through the path and it adds everything in local bin. I think I took it out. So at one point, yeah, see here it says ghre reposplat. So this is something I probably want to keep going on with. So the reason I did this is because sometimes I will make a command that needs its own repo. And for a long time I would call it cmd dash uh and then I it would automatically add it and if it was in my repos it would it would add it to my binary path. So uh the reason for that is because some commands are better as repos standalone repos and others are better as your dot files right uh and that allows you to make make repos that are like like I have right now. So I actually remind I'm reminding myself right now of that convention because that means I need to rename this repo. So if I rename it it'll automatically do it. It'll just look in here and ghcomand dash and uh if there is a binary in there, it will execute it. And it doesn't have to it doesn't have to be anything. It can just be in there. That's what I'm talking about. So g status, server status, current, all that. Um I can I can have this all be uh a command. So So let's do this. So, GH repo rename and uh CMD current there. Okay. So, let me go out here, rename it here, move current to CMD current. Why did I do that? Because now I can actually if I exit bash-l I can actually run current and it knows where it is even though I'm not in there. So that's kind of a cool trick. Plus all my repos that are commands are all grouped together. So uh I could I could do this. I can say echo wood set current title and I can go anywhere. So I'm like in home directory I can say current and it runs it. So and it because it automatically added it to my path because it was in a cmd- repo. Uh this is a really great way to so this is the video I actually want to make. Uh, and this yet again it's a video that I would like to type the thing so I can change the status and everything so I can make the video and then stop. That's the goal. That's why we're making current right now. That's why I'm like supercharging this particular thing. So what does current need to do? So let's let's actually start with the thing. We'll make it in bash user bin EMV uh bash. I'm actually going to write this instead of vibe code it because I already vioded the main pieces of it and I want this to be more of a final version. Uh, did it work a system in a hurry? No, it's not. So user min because of the command sub prefix that's why I looked at bashc so I know that that's there that's already that's already built in. So uh user env bash and then we're going to say so what is the first thing we're going to say we're going to do uh uh check for the file. Okay. So we don't we don't want to have it expire or anything like that. Hey how you doing Ricky? Thank you the ball. Uh we're going to do uh the other version has this notion of expiration of the title which is a GitHub status thing which we don't want. We just want to be able to look and we we want a file that has you know the current and the previous in it. Uh yeah, I'm thinking we could we could actually Yeah, there's a number of things we can do here. I I want The question is whether to have multiple statuses, and I actually don't think I want that. Well, just the two statuses. I want whatever the previous one was and the current one. Uh, and we can do that in a single file. So, we could have it be um dot titles, I guess. Um, so we need to load the current and previous uh titles from uh tilty.titles titles or whatever or titles. Uh, and they should never be the same actually. So, um, yeah. Uh okay. And then then we need to uh Uh wait, we need to parse the argument. Read arguments as wanted status as wanted title. How you doing daily? Uh read argument says the wanted title first time. Welcome. It's good to see you D. Join us over on Twitch too if you want. Read arguments as the one title. Uh we don't really need anything besides that. Uh if argument is a single number assume it is a GitHub issue title and grab that. Uh load the current previous titles from not titles. Um if read arguments is wanted title as new title new title if the arguments the same issue as a get of issue um is get issue title. Uh go to the uh if the argument if new title is same as previous title do nothing. uh if new title otherwise we're going to say add add title uh uh add title uh to first line of titles file and push previous title to second line. Uh we don't we don't want to have any new title any new uh stuff there. We're just going to overwrite the entire file every time. We're not going to keep like a log of all the titles. Reminds me of that. It is a little bit. Um I I mean I in the past I kept a running collection of all the unique titles so I could just go pick from it again and that was really nice actually. So, I don't know if this is where we should cach it or not because then I would have like every title that I ever used and if I want to reuse the same title, I just go get it. Uh, the problem with that is we have to make sure it's unique and we, you know, we don't know what the previous title was and all that. So, we're just going to use the two for now. It's super easy to do that. If we need to cache previous tiles, we can do that in other ways on in the app. if I ever make an app for this. All right. So, add a title to the first line of the previous title. And then we need to uh so that that gets everything set. Okay. Then we need to uh update uh Twitch title. So then we need wait uh convert emojis in title. Uh uh set GitHub status to emoji and title. Okay. Convert what is the title? Uh let's see. strip ship emoji from title if first uh say replace emoji in title. Let's see. Split new title into into emoji and title and uh replace emoji. Uh let's see. Yeah. Uh let's see. Uh, Set GitHub status to emoji and title. Set Twitch title to emoji title. Set YouTube title live title to emoji title. Uh that's it. Uh and then the server just needs to look at that. Just needs to look at the file now. So So that's that's it. So ser status is is a little bit different now. search status was going to get Twitch and everything and we don't do that anymore. So, because this is a single command, we can just call the command and do the work. We don't have to wait around and pull a file and see and do the thing. That's what this does. So, the only thing this has to pull now is that title and then serve it because you can't I can't automatically update it. Update a Uh, I can't can't automatically update a thing without having to some JavaScript in there. And we should probably get the emoji map, but the emoji map. We should probably convert the emoji map into a an actual map. You know what? Let's do that. Uh yeah. I gota hurry and do this because I want to get to the next thing. All right, come here. You uh hey Jimmy, convert emoji map. convert this JSON to just the string and the actual unic code uh emoji that can be used without conversion. God damn it. Uh, write me, write me a bash script that will convert everything in uh, get emoji.json uh, get him into just a string and the actual emoji. I just need this file and I'm going to save the file. This is exactly what I want. Perfect. Thank you, AI. That's exactly what I want. I hope that works. What's it called? Emoji Map. All right, let's do emoji map. Uh, we could actually make it so it fetches. Don't use variables in the pair for string. [ __ ] that. I don't care. I want to actually fetch the file too. Hey Pro, how you doing? You guys are happy. Well, that's good that I'm uh uh add a fetch of the latest from GitHub. Some of them are PGs. That's like Yeah, it's all done. emoji map bash. Use a local file or do this. Okay, this is so cool. This is so [ __ ] cool. All right, so emoji map. Very happy. All right. Uh oh. Damn, it even did the combinations. Oh my god, that is so cool. See, some of them don't work cuz it's like But that's okay. Oh my god, how many of them are there? 1,834. Missing the tech up. The tech stuff is everybody's favorite. It really is. Not everybody. I have a bunch of IRL fans as well, too, but not as many. So, yeah. Anyway, that's super cool. Uh, I have to make sure that gets saved. Map. Uh, remove status. Uh, what else that change? Broadcaster ID. Oh. Ah, why did that change? It's the same thing. I have a tab in there or something. Oh, it's two now. Source of two and source one. Huh? I still haven't merged this the stop files. I was going through this cleanup like years ago uh tweaks files is such a messy repo. I have to take a break. I'll be right back. I'm back. I should go eat pretty soon again. Keep taking my breaks, but it's good. This is really happening. Is Rob really back? I think I am. I think I can I think I figure out how to balance. Every time I say this though, I screw up. My life falls apart and then I'm like, I'm never streaming again. I'm going to go live in the woods. And then my life gets good again and I start streaming again. And then some [ __ ] happens. So, I think I have I have high hopes for this this time. For this time, I feel like, you know, try try again. Uh, get push. Okay. What? I added those. Oh. Wait, wait. What? All right. description post private. Is it I I kind of went dark on a lot of stuff. I remember. No, it's not file. It's my do files. I don't have a script repo. I don't think. Nope. I have a dot files though. There it is. The big ugly enter your own peril. No scripts is just that's just within here. If you go in here though, make sure you look at cleanup. That's the one I'm working on is cleanup. Default. I haven't updated the default in a long time and I was trying to move it to Bonsai. At one point I was like migrating everything to Bonsai and then I I bailed on that because it was like way too much work. So yeah, this it's like a whole thing I should probably stream is me cleaning up my D files. I should probably finish that but add it to the list of things to do, right? That's why I don't stream. But now I'm streaming again. So, what the hell? As long as I people, as long as I get my exercise in, I don't get too stressed out, which means you guys don't freak out about me using a shitty mic or something like that, then I think I'm probably going to be good to stream again because it I do enjoy it. It's way better than watching movies uh and stuff like that. I I do enjoy reading a good book before bed, I think. But, you know, maybe I'll just keep doing it. And I'm gonna be an empty neester here in July anyway. So this and this is something I can do pretty much anywhere. Anyway, all right. What are we doing? I'm being the old hermit guy who codes with his final days like Dennis except for codes different stuff. All right, back to the current command. So, set YouTube live video title emoji. I'm gonna I This has to be done by tomorrow for sure. So, I got to finish it really quick. Uh, read the arguments. This is a new title. Set YouTube live title to emoji title. I can probably hand this off to my my my AI and have it work. So, I'm going to give it a shot because it's all just one big old prompt. So, we're going to let we're going to let my AI take a shot at it. Uh, make a new one. Make this from its comments. Uh, let's see how well it does. This is something I would be willing to send to Claude if it saved me time. Uh, retitled. I like retitled better than current. That I do. I like retitle better than current. Yeah, my AI came with a better suggestion. This is like so crazy awesome. The AI going like this. This is pretty damn close to what I want so far. Load the titles. I don't want to spend time. I've I've said this since the beginning of time. The only reason I like to code is because I like what I get from it. But if I can guide my AI to do the same thing, I am happy. I do not care. Split emoji title. Uh says get status. Yep. Update the Twitch title. This is all stuff that it already wrote from before. Uh, update Twitch title. Say YouTube live title. Wait, what? YT live title. That's a command. Or did it make it main? Where is YT live title? Is that a function? That's a new thing. Wait, what? Set YouTube live title. Replace this with your actual YouTube live title updater. Examples might be might use YTDLP, G-Cloud, curl, or custom script. Oh, interesting. Okay. Uh, use YT DP or the YouTube part. I don't know. I don't know how to do this. I don't want to look it up either. I just wanted to do it. Yeah, it doesn't update titles. That's what I was going to say. Support the script should not use YouTube title because myp doesn't doesn't support our current update my live stream title. Use the YouTube data API for YouTube part list. Here's the honest function die title. All right. If you want G-Cloud, you can't use. Okay. Rewrite it to use curl and the YouTube API. The YouTube API is a pain in the ass. I have code from way long ago that did all of this and it was so annoying. I cannot tell you how annoying it was to get in there. You had to find, especially for the live stream, for the live stream, you had to go in and see and look up the property on one of the videos to see if it was live and then you had to see if it was the current live one. And then you had to Oh, it's pain. It was such a pain. I hope this helps. You access token to broadcast ID. Optionally supposed to broadcast ID. Uh, this looks like it's getting close though. Love the tiles. Save the titles. GitHub status API the G get we already know works because we did that already. Uh Twitch title we know that works because this code we already did already. Uh if it didn't I already have the code for that so I can put it in. I haven't tried CL I mean I tried it once. YouTube API authorization bearer access token with a YouTube endpoint. Uh, YouTube broadcast ID broadcast ID. Yeah, see this? This is the hard part. Get the broadcast ID. YouTube live broadcast part ID snippet. Yes. God, I remember this. Remember this whole thing. Live broadcast. Oh god, she did it all for me. Good girl, Chloe. Set YouTube live title access token. Uh preferred YouTube status active. Yeah. Uh broadcast status and YouTube find broadcast ID. Preferred status. Yep. Body. Print the JQ. Grab it out of there. Grab the snippet. Yeah. And give you the title, but then you have to like publish it. [ __ ] Particle snippet content application data data data body. Is this a push? Oh, it's a put. [ __ ] yeah. Oh my god. This looks like it's going to work. It's gonna work. I cannot I am still astounded that AI can be can write such great code. That is insane. I want to rename this now because because the AI suggested it. So there uh Uh right Holy [ __ ] If this works. Uh broadcast, we have already a GitHub repository owner for repo. No, we don't need that. GitHub repository should be the current one. GitHub issue title issue repo out must be set to owner repo when using issue number the repo. Uh, okay. Wait, we have to have her change it. change it so that it assumes the current directory is the git repo or GH2 use to look up the issue. Okay. Revise script. YouTube access token broadcast ID broadcast status explicit broadcast ID. YouTube broadcast status option broadcast status to search first default is active then upcoming. Okay. Titles path to titles history. Yes. Oh god. We want that to be optional. Good. Good. Good. Uh, perfect. Good job Chloe. Copy this. Copy that. I know I could probably do this easier. I don't care. Um, all right. So, I have all that information already loaded. I the broadcast ID it said it would optionally look up, I think. Right. Option explicit live broadcast ID. It will look it up if it knows my access token. Oh, the access token for YouTube scope. Um, I need to look up the access token from a file. So because I want it to be secure change it to look up the YouTube from a file instead of exposing an environment. Yep, that's perfect. Uh, place this near the top of the script. Okay. Load YouTube. Load YouTube token. Update your YouTube API helper. All right. Uh, where's the API? YouTube API helper. I wish you could delete functions. It doesn't know bash functions. I wish it did. Does anybody know how to do that? DAFF does not delete the function with spaces in it because it doesn't know the boundaries for bash and go. It would do that. I wonder if there's a way to do that. Hey, can can I make the app work with bash in Neoim? Um I don't know. Does it work? the tree sitter. I have to use tree sitter for that. Okay. Uh bit of a lazy and boom setup looks like this. Then boom install bash. Uh cell bash center have to look ahead to key maps a router. Interesting. That's why tree is so cool because it does know about the syntax of different languages like which is cool. That's a reason to have it. If you want just dap yap vap or shell function simple solutions plugin. Hell yeah. This is much better. [ __ ] yeah. They're going to add this. I did not know that was the thing. I'm gonna add it right now. This why I don't get anything done in case you're wondering. Oh, it's right there. Oh, why is it unplugged? Why is it doing that? Why don't I have it enabled? It must not have been But it must not have been happy for some reason. Huh? I install Okay. Does that work? T A F. Nope. Nope. Not working. This is the kind of thing. Yeah. Oh, this stuff goes in LA. Oh, map. Test whether the map is exist. Wait, no mapping found. If you wouldn't been plugging in it and it said that has been ripped. Yeah. If you want to for check any of them, try. Nope. Nope. Still nothing. Nope. Huh? None of that works. You're [ __ ] You are full of [ __ ] Uh, it does not no mapping for the plugin actually loaded. You can't do that. I guess you can. That looks like it didn't load. Why didn't it load? earlier today. their subject user. There it is. Subject function. It loaded. Uh third pile type bashes should be p or shar activates on certain file types. What happened exactly? Nothing happened. Nothing happened. Right. So df not working. D A F. Nope. D A F. D A F. Come on. I waste all my time. I know what file type is. Bash. Uh. Of a nothing. Oh, wait. That's different. Oh, that worked. Wait, no, it doesn't do it. It's It A works and the D app doesn't work. So, okay, we're getting somewhere. I really want this to work. So, I use this all the time. So, this will really help me. Uh, was it a Okay. Oh, map. Map works. This has be inside one of these exact functions. Maybe does not visually select the function. It does not. VF. Yeah. The text of your plug just isn't matching the function definition of your file. I already did this. It says bash that can matter. I want a more useful test and then jump to the next function. Yep. Uh if AMP exists, your bash probably isn't finding a function object. The fastest fix is skip the plugin for bash and use a custom text object just shell specific mapping. No, [ __ ] that. Search page motions. No remap. It's doing it. It's just not seeing it. I wonder if the file type was shell instead. If it says s that can matter. It's one of the useful things. Um, set FT equals SH D AF. No, I'm cheating on Chloe. No. Yeah. No dice. This is not a thing. I think that's why I got rid of it. I I I want to say I probably went through all that already and I just did it again because I'm an idiot. Goodbye. You piece of [ __ ] doesn't work function. Uh you are banished. Banished. Um all that for no purpose whatsoever. All right. The broadcast ID is there. YouTube API is there. Loads my YouTube token. Uh, load YouTube token from where do we want it? It wants to get it from uh config YouTube token. So, I'm going to have to go get my YouTube token. How do I get a YouTube token? I I remember sort of, but I want to be faster. So consolecloud.google.com. No, this is the [ __ ] Google. Did they change it? You need the oath actually hooking up the API key. You can give us a permission manager YouTube account. They changed it. So it's on their Google cloud. API is part of it. All right. Fine. I'm gonna have to go privacy mode for a second. uh for obvious reasons. Okay. Where are you, Chloe? I hid my screen. Did I not? Is my screen hidden? If it's not hidden, I would be very sad. Are you seeing things? Stop freaking me out. Yeah, looks like it's a little slow. Uh, copy paste. All right. Thanks. Uh, join the Google developer program. How about no live open project picker? Live is my main project. There's my ID. I set all this up before. All right. Then I need to go API services library. API and services and go to library and then I go to YouTube data API v3. YouTube data API AV3. Try this API. The YouTube data API is an API provides access to YouTube data such as videos. This is all new. This was not there when I did it last time which was like three years ago. Create a credentials. Go to API services credentials. Enable API v3 the live stream API as part of it. Okay, so manage try this API. It says the API is enabled. Okay, that's good. So then I need to go API services and credentials. API services. Uh credentials. This is I'm glad this is helping me. Ooth client ID desktop app uh API key. I have one already. Oh, I think people client IDs live. Uh otherwise JavaScript origins. There's my client ID long ass ID. Uh and then what? Uh I have to add a new secret. Tell the client secret JSON file. Uh install gla oath helper. Generate your access. So good. Really? Okay. That's so stupid. I don't want to have to generate actually token like this. Oh god, this is so stupid. Yeah. Uh, let's see here. Secret.json JSON desktop app kind for web applications oath. This code has not been used in active clients or sub deletion. There's the client ID. Uh download secret JSON file desktop app. Choose desktop app. Is this a web app? CL secret. Add secret. Add a secret. You can only create two secrets. Okay. find any copied. I can't download the secret. Add URI. I think I need a new one. Let me make a new one. Yeah, I'm going to add a a new one, I guess. Let's try this. Uh create credentials. Uh service account API key o client ID, I think. So the client ID, client ID, application type, desktop app, uh name, retitle, create takes two hours for the settings to happen. What the [ __ ] Download JSON. Okay, so it's a JSON token. opening up the JSON token. And this has got my clan ID in here. It's this pain in the ass sort of thing. Uh yeah, I should probably save that somewhere. Yeah. Um, let's see this. Let's change that to So, I have it all. Um, I just have to go get it. Put it where it needs to go. I told you YouTube is a pain in the ass, right? Okay. So, make their dot config YouTube config YouTube token config YouTube okay so make dot config / YouTube then we're going to move from downloads to client whatever we're going to move that into my config YouTube directory. Okay, now we're going to look at that. I can't do any of this because it's all secret token stuff, guys. That's why I'm in privacy mode. Uh, so we're going to look at that. I have one compile error. Okay, so that's weird. It's not an actual JSON file even though it says it is. Yeah, it doesn't. It's not. It's not parsible JSON. That's [ __ ] up. Jake can't open it. Oh, there it goes. Okay. Uh, install project ID URL URL provider client secret. Okay. So, I have all this stuff to get the token, but now I have to go access the token. So, I need a tool to do that. Uh, the Google's got a CLA OOTH helper apparently in Python. Uh, which sucks because I have to use Python. [ __ ] hate Python. Wait, you have to use it these days. You can't escape it. Uh, it says if you believe this is a mistake, blah blah blah. If you want to show a self path application that isn't in homerew, it must be easier to use pip install. Pipex install virtual matter as a virtual environment. Fine. I don't want a [ __ ] virtual environment. This is why I don't like Python. To install Python package system wise, try brew install uh brew install Google oath. O off lib. Okay, I found it. Nice. Google Earth Pro similar search. No available for me with that name exists. There's a Google authenticator lib pam and Google Earth Pro. Yeah, [ __ ] that. So, pip. Why doesn't it like it? pip install Google oath lib and it says pip 3 virtual environment source blah blah blah. The environment is externally managed. This environment is externally managed. Q install Python package system Y. Try brew install XYZ where XYZ is the package you are trying to install. I [ __ ] hate Python. If you wish to install Python library, this is a homebrew. Do this. Python 3 virtual environment. Go ahead and make your [ __ ] virtual environment then source it. Then if you wish to install Python application isn't open. [ __ ] you. If you you may restore the old behavior of pit by passing the break system packages flag. [ __ ] hate I hate Python. It's such a disaster. Uh, I don't want to set up a [ __ ] virtual manor with [ __ ] [ __ ] Shut [ __ ] I just want to [ __ ] install the oath token. I have to install an entire virtual environment in Python just to get an OA token for YouTube. You [ __ ] kidding me? What kind of [ __ ] is that? Oh, if you disable this error, we strongly recommend that your additional pass user flag pip uh if you wish to install a pyth application that isn't in home maybe just use pipex install. [ __ ] you. [ __ ] you. I don't have a discord. I got rid of it. There's it's still listed there, but I don't have one. Go go go go go to hit tennis's discord. He's got a better one. Or you can send me a a private message or something. Welcome by the way. Yog state. Oh god. Hipex your these apps are now available globally. Okay. So apparently I had to use pip x instead of pip. So go figure. Guys, I almost have my token and I can get off this crap. Uh, run this Python script once I got rid of Discord because I wasn't managing it and it didn't really serve a purpose. I don't answer any questions there. I don't even log into it. So, my other people, you know, I have mods and stuff, but they're busy people, too. So, didn't want to kind of there was really no need. Just come by my videos, leave comments in the videos and stuff. Uh, browser opens, you get a YouTube account. Uh run this Python script once. What is what is it called? The browser opens. Okay. So, god damn it. Uh uh. You like a YouTube account? Google ask permission. Script prints access token. Oh god. Uh that was bad. Let me I don't [ __ ] I have resources there. I have sent you on YouTube. Yeah. No, my resources. GitHub is the best place. Go to Go to Is it not pinned? Here. Let me pin it for you. We should go look there while I'm while I'm talking. Go to Oh, it's usually pinned. Go to Yes. This is where all the boost stuff is coming. This is where your your main place to go for the boost. Uh yeah, you can go there. You can start you get the container loaded and everything and you can get ready for that. Okay. So hopefully that will help while I do this other [ __ ] Uh, I'm going to say uh touch save token. Uh, vi savet token. Cash YT token. How about that? Cash YT token. Put this in Python. [ __ ] Python. Uh, user bin. inv Python 3. Uh, and then we have all of this [ __ ] and scopes equals YouTube flow equals blah creds equals blah print the creds. Okay, so we are going to print the tokens to uh, okay, I'm going to change my script here, guys. I don't want to dump my tokens. I'm almost I'll show you the whole script when I finish it. So, but I I'm too afraid of dumping tokens right now. So, change the Python to write directly to config YouTube slash token. Uh, there we go. And Chris. Okay, good. Perfect. Thank you, AI. My AI is my friend today. Okay. Uh, yep. 600. God, guys, I'm so sorry for the schmucks. Get to my tokens. Uh cache token cache my token. So I run cache my token. Wait, it has to see that JSON file. So where did I get the JSON? Client secret. There it is. Client secret.json. Uh yeah. And let's uh don't forget to push my token to get. Yeah, just go to a search. You'll see. Uh, all right. Now, change it. Okay. Let's see. Now, change it to read the client secret.json fromconfig YouTube as well. It pushes. I'm not going to push it again. KB. I have never pushed a secret token again. Not in my life. I've docked tokens a million times, but I've never pushed one again. Uh publicly that is I mean I'm, you know, absent- minded, but that not that bad. That's like Yeah, you'd have to have be multiple layers of like not paying attention to do that, especially if you're like merging. you're doing any kind of merge thing or PR. Yeah, if you're not reviewing it. Yeah. Hell no. I'm very happy. Knock on wood. I never do that, right? Seriously, that's so stupid. And people just like uncommit. Uh yet I know people will do it. I suppose people have done it. Uh okay. move utility.config YouTube. God, I hate this cold. Client secret to God, that's big ass long secretconfig YouTube. Client secret.json. I should probably put it in a secret so that I should manage it with vault or something. I should put vault on my machine and manage it all through that so I don't file at all. That would be cool, right? Uh, okay. So cache YT token. Of course it doesn't work. No mod name Google ooth. Of course there's not. Uh maybe it's cuz they didn't do pipex in this. It said install globally. I think it lied. Seems to be already installed passports. Well then why can't you find it? Uh, cash token. Oh, I'm so ah I got to go. I have to go. I have to go do things. I'll be back. I'm going to get copy. I'll be back. I'm back, but I'm Hey, brother. How you doing? I'm back, but I'm still doing Oh, privacy things. M not found no name b. I'll show you guys everything in just a bit. I already installed it. I already installed it. God, I [ __ ] hate Python. Do I need to complain? Calm down. Just It's just raising my cortisol. Maybe I need to do a a new bash, a new shell or something to grab the new Python library location. Nope, still can't find that module. Uh, install it for user Python to isolate virtual management from applications not providable. Pipex install Google O module is already seems to be installed not modify existing installation uh passports to pass the installation pipex.local vnvs Google o blah blah blah uh how do I get it to use it? I [ __ ] hate Pipex. Hey, Python be racist. No. Python sucks ass. Guido even says so. He doesn't even like it anymore. He's like, "Fine, get out. I don't want it." Uh, you know, you could say that it's like user error or, you know, skills issue. Uh, you can pipex to inject library into the VV and run the script inside it. [ __ ] what kind of [ __ ] is this? Oh my god. Oh my god. I cannot get Python to install. Use pitex run. Why would I do that? But since your script also use Google auto [ __ ] horrible piece of [ __ ] Minion. Hell no. You kidding me? Honda is one of the worst things ever invented. They started [ __ ] with my dot files. I was done with it. No way. I will not touch. Conda is created by idiots. I hate it. The fact that they touch my bash RC files and stuff without my authorization. That's all I needed to know about that project. No. My answer is no. That's what I should have said. That was mean. I'm so sorry. If you believe this is a break packages back yes back break system packages flag to pip or by adding break system. I don't want to break system packages because this is my Mac. Uh, okay. How do I I don't see this is why I wish Can I do this without Python? I wonder if there's a way to use the Google the Google Oath library without Python. Is there a way to use I bet there's a Go library. I would rather use that. Google Oath. Guys, I'm still doing I'm not ready to go public yet. O off lib without Python. They're going to be a no cuz Google mini is different than conda. Extract the ID secret example structure. You can pull you can pull them without pulling out the jq. Build an authorization URL. Old client URL in your browser. Client ID client redirect blah blah blah. Uh, open the URL. Google show. Paste the code. Paste the authorization code. Oh, why not do that instead? Yes, please. All right. All right. Right. Right. Right. put all of that into a bash script named uh named uh cache byt token that saves to the token file as before. You had another reason Python sucks ass. Uh, I need a correct one from earlier. Add a bound. Copy paste reads exchange code with curl. Yep. Saves access to God. This is so brilliant. It did the same thing in bash. It's like way better. It's even simpler. Oh, no it's not. Just open SSL RAM to get B 64 decoding. This is [ __ ] awesome though. Wait, no. No, you cannot sneak Python 3 in there. No Python at all. They tried to sneak Python in there by calling it from the command line. Yeah. I should probably unprivate myself so you guys can see what I'm doing. I wish I had my buttons. I need my buttons. I'm going to ask Gordon. Maybe he knows. Let me ask him really quick. God, I haven't put Well, this is working. Yep. Hey, Gordon. I'm so sorry, guys. Gordon, do you know you're live, by the way? Not live like video, but live like audio. Gordon, Mr. Headphones. Mr. Headphones. How are you doing? Do Do you know where the little one of that is? The little stream deck. I >> um Do you have it? >> I think I have it. >> Yeah, cuz I never I never took it. >> I think I took it back, but I couldn't remember. Okay. You use your stream deck a lot, right? >> Yeah. I mean, if you need it, you're >> No, no, I have No, I don't need it. I have a small one and I only change like two or three frames, so I don't need like >> a few like movies and stuff like it. So, we need it. >> Well, if if you use it for less than six things, you could take the small one. I can switch you out for that one. It's up to you. >> Yeah. Would I be able to put stuff onto the other one? >> I don't know. I think so. Yeah, >> I'll just use the small one. You can use the big one. >> I might just get a big one. They're not that much. So, >> no, I'll just I'll just use this one. All right. Well, enough of that. I thought it might have been fast, but no. All we need to know is how to use this HT mini PCI clone turn scale docu mini PC or PI pipe clone to set up a zero clone open code VNC robot desktop and SSH that has no relevance to what we're talking about but that's really cool I just wondering what was going on hope you are well I am kind of good to see you by Linux um I am gonna Here, I'll just show you. If I do a token, I'll just change it. It's fine. Uh, so, so here's what we're trying to do. We're trying to just get a [ __ ] YouTube token. I did this for Twitch and GitHub in like 5 seconds and like and YouTube is pain in the ass. So, because it's Google, good good old Google. Well, I mean, I'm sorry. I'm going to calm down now. So any jQuenc thing uh and then it's going to write it to the client secret directory. Spark of happiness. Thank you for following me. What a great name. What a great name you have. Spark of happiness. Why am I doing all this? is I am trying to uh make my retitle thing so it'll title my all my videos in one place so I can make really fast videos for the boost tomorrow which starts tomorrow at 2:00 p.m. Eastern time that is in America. What's up with this dev random thing? Dude, this is some insane code. Look at this. It's grabbing random bits from dev random. What the hell is this code doing? This is really cool. Uh, doic requirements. The whole point of this is so that it can extract the token out of the config directory. Yeah, here I going to run it. Wait, I have to go back to privacy again because I don't want it to dump my token on the screen, which it may do. I have no knowing. Uh, yeah. Get add cache token. Get commit first. Uh add Python version of cache YT token. I want to make it so I can just run this program and authorize and then have my token around. And I actually made a unified off thing once upon a time that did that. But everybody's so different in their off flow that it just you kind of have to make one for each tool. That's why GitHub made a tool. That's why Twitch made a tool. But YouTube has yet to make a tool. They should make a tool that does this kind of stuff for you. So you can just send API queries with tokens and everything and facilitate it all. You have a helper util which almost always written in Go by the way. And and they don't they don't have that. They don't YouTube and Google don't have that because they suck. They suck ass, which is keeping me in a job right now because everybody's bailing from GCP because they suck ass and they want to do it cheaper with us. So, we homegrow everything there. I'm going to stop talking now. I'm going to get myself in trouble. My business is going to hear me talking. But they would tell me I'm right. They're like, "Yep." Google is like the airline that overbooks a flight and then tells everybody at at the gate that they can't take them. That's what they do. That's what they do with their capacity all the time. They tell everybody, "Yeah, come put all your machine learning HPC models on us." And and then everybody goes over there and they get [ __ ] burned and then they go to customer service at Google goes like, "We don't know what's going on." Because they have underallocated capacity and they're charging up to Wazoo for it. It's not even there. They get burned by that. Then they come looking internally. It's like, "Hey, where can we do the same thing internally?" And here I am doing the same thing. So like, yeah, [ __ ] Google. This is the age old, you know, cloud, not cloud thing. Yeah, I'm I'm running my cash byt token command right now. And here it goes. Use an account. Yeah, I even open up a web browser. Holy cow. Holy cow. Uh, yes, we want that one. But we wait what to continue to live. Choose an account brand. Okay, we want this. You have been given access to an app that's currently being tested. You should only continue if you know the developer that invited you. Yes. Continue. Uh, manage your YouTube account. Yes. When you allow this access, Live will be able to blah blah blah. Make sure you trust Live. I do. Continue. I do. I trust live. Uh, authorization received. You can close this window. That [ __ ] worked. I think it worked. Oh my lord. Oh my lord. Yeah, it dumped all my stuff out on the screen. Thank god I did not. And the client ID. Okay, it's just the client ID. It's not the secret. Thank god. the redirect URI, the response code, the scopes, the access type, and the state. Waiting for OOTH call back. It got it. Oh, I thought authorization token. Yeah, this like fired up an NC and listen to the response and everything. That is exactly what I wrote in my O tool. And then it wrote it wrote all the stuff to the token. So, I'm actually going to check that right now. It's the last thing I'm going to do. I'm super pleased with this. Thank god. Uh, and we're going to look at the token file, which is just the token. Am I streaming? Am I private? Okay, good. I'm looking. I'm dumping the token. So, Oh, yeah. Big ass token. Yep. Yep. Uh, JSON access token expires, refresh token, scope, bearer token, refresh, expires, and whatever. All right. So, now, yeah, I can just go in there and run catchy token. [ __ ] Yeah. Get add cache YT token. Get commit. Uh add uh better uh bash version of cash YT token. Uh get push. Yep. Cash YT token. Uh client secret ID. So okay. So that I did still have to download the JSON file. So uh yeah, I kind of wonder if I could do that automatically, but I doubt it. Uh yeah, I should put that in the read me, though. So yeah, the read me is totally changed. All right. All right. All right. All right. All right. All right. Back to back to where we were. We've we've accomplished the number one first thing that we needed to do and that was cache the YT token so that our our script our retitle script can actually do everything. So here we have the file YouTube token. Load your YouTube token. Uh we're going to load up that file. Put in the token. Uh we have our access token here and then we run it. Uh it will also allow us to override the YouTube access token. Actually, I don't ever want to do that. I never want to load the token from the environment. That is super dangerous. So, the broadcast ID and status I can get that token. I do not like passing tokens and [ __ ] like that from the environment. It's super dangerous. Yes, I know Kubernetes config maps do it all the time. Drives me crazy. People give me [ __ ] for having it drive me crazy all the time, too. Wait, access token. Bare access token. Okay. YouTube API. Your YouTube access token. Load YouTube token. Yeah, we don't want that. We just want to load the YouTube access token. Yeah, we want the load YouTube token. We want to change it so that the uh YouTube access token Yeah, we could say token equals load YouTube access token. Uh, actually we don't even need to do that. Let's say token token file or this. Okay, now that we can do it goes to look at the file. The file is not there. It loads it. puts it in the token and uh yeah and then it sets the environment to access token internally. Uh we could actually just print the token. No, let's let's do this. Let's just keep YouTube access token. Let's just not actually load it from thing. I don't I don't have a problem with that actually. What? What changed? Get the retitled. Did I change anything? No, I suppose that's fine. What was here before? Uh, it said D-r YouTube access token. Was it N or R? I can't remember. God damn it. Or uh what am I doing? YouTube back. I killed that code. That code I I don't remember it was there. I'm not going to waste time. I'm going to go find it again. She wrote it clearly wrote it earlier. Import redirect code. Open cell Python 3. [ __ ] that. Not doing that. Not doing any of this. Yeah, I said no. Python. It was much better. Clan ID. JQ install clan ID. No, no, no. Where is it? Where's my script? I think it probably cleared it. It's a pre. It's probably my history. cash token pip install. There we go. Uh, nope. That's the one that they we got rid of. There we go. Here's just equals. I got discuss the same thing as before. God, why did I I'm going like way back. API services. I did that. I created all that. I did the remap. We don't need any of this. Where's the script in automation settings? Forget titles. Oh, that's the one. Um, no remap. I'm going like way back. I'm sorry, guys. I should have mixed my context like this. That's dumb. That was dumb. We're close though. There we go. This is what I want right here. That's what I want. I knew that but it's faster to look it up. Okay, so ET access token loading I mean this. Okay, so you guys know this about shell functions, right? There's two traditional ancient ways of doing it. One of them is to set an environment variable by the function so there's no return values and the other one is to make the function actually print a standard out and then to capture it with a subshell. It's actually less efficient because it does require a subprocess. I think bash is better at doing that if it detects that it's in the same process, but it's still a subproc. Uh if you set an environment variable and then then everything else can use that environment variable, that's a more standard approach to shell coding that goes back years. Uh but it's not functional at all. It's really hard to test it and everything because you're literally using global variables to pass everything around. That's what we're doing here. In this case, you can't tell where the global variable uh came outside of the application or was is just a prep, you know, just a a convention used to pass data around between functions within the same program. It's a very much a a legacy shell situation. So that's why I decided to keep it even though I'm not allowing it to come in from the outside. Uh this just make sure it's already set. And then if you were document this, you would say, hey, this is looking for global variable variable global is called blah blah blah and it's going to use a change or whatever. And you would document that in your function. That's how you do shell coding. So let's try this. So that I think we actually are very close to just being able to call retitle. Uh I think yeah. So, retitle retital uh overlay status uh wait missing access token. YouTube access token missing YouTube access token. Why am I missing that? Oh, because I didn't call the reload thing. Yeah. To uh load YouTube token. I did not do that, I don't think. Yeah, I think I broke that. Would not be the first time. Load titles. Load YouTube token. Oh, it's right there. What's the error about? It's like 193 missing YouTube access token. Oh, I bet bet bet bet bet bet bet bet bet bet bet bet bet bet bet bet bet bet bet bet bet there's a I know what's going on. I bet there's like a validation someplace else. Yeah, it says set YouTube live title. Yeah, how what does that happen? load token. Is there already a YouTube access token? Uh, fire. Yeah, I didn't even make it in there. So, something is going on. This code is not working. Uh YouTube token file YouTube access token equals token Uh, did it even make it here? No, it did make it here. One more time. What? That's weird. What's not working here? I mean, she could probably find it faster than me, but I don't know what's going on here. I need to dump the token here to see if it's actually happening. So, I might have to go back to privacy mode in a second. It's not executing it at all. It's It's still not doing it. That means that YouTube API is not getting called. So, it's much higher. made need get dd curl titles get issue title load titles if uh new title goes previous oh it's exiting yep I think that's what's happening. Yep, that's what's happening. Okay, so that explains everything. Made echo made wait echo load user token. Where are you again? Here you go. All right. So, this will go back to this. This was actually right before. So, we can put that back. And that wasn't getting called. YouTube API was not getting called. So that explains everything. So if I do uh smile, look at that. Okay, that's what we want. Missing access token. So now now we have a different problem. Same problem as before. Actually, if I do it again, it's going to say you're already set. Nope. Okay. So that did not override it. Uh 192. So now now we have the other problem that we had. But for some reason that problem went away. I don't know why. YouTube access token missing YouTube access token. Uh it's got to be in the order. Set YouTube live titles. YouTube access token. Okay. So I think this is unnecessary. I think this is getting called too early in the process because I think down below it gets the user ids broadcast ID is active all this other stuff define broadcast preferred status. So this is probably calling the API thing and the API thing is looking up the tile. So this is premature premature stuff. Let's try I think this will actually work. Title reset of course. Uh, we'll go back to fire and could I find a YouTube live broadcast update? That is different. Uh, that's interesting. I mean, I wonder why I could not find our YouTube broadcast. Find my broadcast ID her status. Uh, YouTube Fire Broadcast. I told you YouTube sucks ass. Their API is horrible. All right. We've been spending like two hours just just quering the YouTube stuff. That's it. Just for the YouTube [ __ ] Uh, so you don't have to live broadcast party snippet. uh status return one JSON they're very pleasant to work with YouTube YouTube get broadcast local ID I don't know which one of these is failing we should probably test these individual functions uh I could not find a YouTube live broadcast update. Maybe it's because I don't have a broadcast ID in there. Then ID equals YouTube broadcast ID. Okay, so I don't know what my broadcast ID is. YouTube bite broadcast ID preferred status blah how could I here I think I think Chloe still knows she might be able to help me debug this post knows how to chalkboard I know, right? At least we have AI to help us de like not go completely crazy. Uh, Chloe already knows about this. So, what we need to do is we need to have her help us isolate the the broadcast city lookup, which is another reason not to write. If I wrote this in Pearl, I could write these as testable functions. can't do it with bash on the channel with YouTube live. I know you can, but uh yeah, but that's not the broadcast ID. So, the broadcast ID is this other thing that only the API returns uh that you can't look up. You can look up the I don't think I don't it's not the it's not the video ID or whatever. The one that you know that goes in the uh Okay. So, okay. This is what I wanted. Uh let's see. To first see what YouTube thinks exists for your account right now. Uh live broadcast. Okay. Let's do that. So, let's say I'm going to make this I'm going to call this uh Hey Herman, thank you so much for the follow. Let's do this. say uh vi uh test uh yt lookup and we're going to put that in here. Oopsy daisy is bid bash uh access s lookup crel found What? What? What did you hear? Oh, it's located a different place. The rest turn 400. Of course it did. Uh, which means that there's something about it that's like it doesn't know about me. My token is not happy for some reason. So, they completely different than the public video. I know, right? they their live stream videos they they sort of have the same prop meta properties as the live streams but they don't. It's so weird. And then after it gets saved as a video it's a totally different thing. Uh D. So the next inspect the actual body instead of guessing or the exact command I did that. I'm so sorry everybody. Uh this is pretty disgusting of me. I should not be streaming but I have to be ready for tomorrow. Oh, that looks the same to me. Oh, we just did show error only. I don't think I'm going to dump a token. I hope I don't. I don't trust myself though. I'm going to privacy mode. Okay, so let's do this. Incompatible parameter specified in the request. find broadcast ID. Okay, so that does help immensely. So the problem is well I'm going to tell Chloe your code is [ __ ] and then she can tell me what to do about it. She's the one writing all this for me. I'm just like cracking the whip. Uh there's the bug. We the voice soft. >> Sorry. Soft. We [ __ ] >> We need to make that. We need I I am going to make it so if you see something in the chat, you guys can actually play the videos because I think anybody can play those videos from anywhere. We just people will go crazy with it if we do that. We need to have like some sort of like authorized I want to I want to make that happen for you. I really do. I I really do. I think it would be really hilarious. It would get abused, of course, but so what? Yeah. I love I wonder. >> I wonder. I wonder. Okay. All right, Clay. What do you got to say? So, this is wrong. You think? And this is valid. You think by now find out one of my broadcasts mine equals true only the docs explicitly say mine recharge broadcast owned by the authenticator owner broadcast type may be used alongside it use this instead uh then patch your script he wouldn't let me talk it's funny because it would like take over the screen I wouldn't be able to see I actually kind of like that because I need a break sometimes so I would I would allow it to the right people I would definitely allow it. We have to figure out, this is like something I've been wanting for a long time for my stream. I want to have perks for people that are awesome that I could give that are not related to business and stuff. And that would be one of them is that you have you have the rights to do that. And I just had all I have to do is add you to a file, a permissions file, and then, you know, you can run my X commands on my on my laptop. I'd have to obviously I'd have to have the server running and like listening to the chat and everything. I am so sorry. You're like, why are you not muting for that [ __ ] Very good question. I hate being sick. Guys, I am so sorry. So disgusting. Unsexy. So unsexy. >> All right. Uh, we have friends over. So, I need to patch this. We're going to patch it. Test YT lookup. Already unsexy. Exactly. I am super sexy. I am so sexy. My friends tell me I'm sexy. So, there. You shut up. >> I have friends who think I'm sexy. Do you pay them? Maybe >> I I'm gonna do a whole series on that. I cannot wait. I I'm I I'm in contact. There's there's a there's another potential video series that I'm going to make that's going to be really fun. It's just super fun. It's not serious at all. How much do you pay them? Oh my god. >> It's funny because it's true. Hey, look. It worked. Live streaming is enabled. Yay. This user is not enabled for live streaming. [ __ ] I'm doing it right now. Wait. How? How How is it not seeing me? R- RFV. Hell no. >> Yeah. Uh authorization bearer. >> Is it because I authorized differently? >> You know, you know what it is? I think it's because my authorization is a different user. I think I have to do my authorization again. [ __ ] Cash YT token. Oh [ __ ] Is any of that secure? All right. I have to I can't do this publicly. This is This is scary. All right. So, it's going to the call back. Use another account. Yes. Uh Uh extra Rob. I am not a robot. Verify it's you. Next. >> I don't know what my password is. No, we're not doing that. That's That's broken. Okay. Wrong. All right. One more. Casht token. It The problem is is it's using Oh, here we go. I clicked on the IC. The one I clicked on. I clicked on the wrong one last time. Yep. That this this actually I think we might be good to go. Authentication verified. Kill that. And let's try uh test by lookup again. Oh yeah, baby. Valid chat IDs in the house. I think we're making progress, friends. Slow but surely. Slowly but surely. All right. So, I did my YT test and I got this all this fun stuff. I got chat IDs and everything. Look at that. Uh, come out, hang out with whatever. Another beginner boost. Wait, this is Okay, so this is not me though. >> That's not the current channel ID. Publish. Okay. Is it one before that? >> YouTube live broadcast. Flying to Charlotte. These are like old. How do I Okay, so how do Now we have to find the the active one. The one that's active. This is why I told you I I actually said this earlier. This is a pain in the ass. You have to list through all the the things and you have to look for the properties on them and see which one is which. Yeah, I I do not like it. Then patch your script to do this. All right. Copy YouTube 5 broadcast ID. Uh Find broadcast YouTube. Wait, what? Where is it? Oh, it's retitled. Find broadcast ID. All right, here we go. This whole entire thing gets rewritten as this. Okay. And now it's got cycles ready or created or live. Yes. And it filters them all out. And then we get the broadcast point. Right. It can't be this stupid, right? Subs only remote execution of code. Someone would actually pay. Uh problem with putting your API keys when you edit your file. The OS doesn't wipe the OS discoers. Of course not. Yep. Yep. Of course they are. Yeah. Anybody knows that, I would hope. Nothing you delete on disc is ever really deleted until you wipe it. Even then, it's not. And you want to do Virgil a lot. We're just making I'm making a a command retitle to title to title my overlay, my my Twitch title, my GitHub status, and my YouTube title all at the same time so I can make videos really quickly. Uh because I need to make videos tomorrow, like really quickly. So retitle. I actually think this has got a shot at working this time. So let's do what are we? Are we on are we fire right now or are we are we smiling or fire? Oh, we're we're prep for beginner boost. We're we're we're rocket. Uh let's actually No, let's do uh uh Okay, let's do this. Let's do retitle. Uh smile. Uh this is a test and see what happens. Oh, it's working. It's doing something. Okay, that didn't change because my server is not running. But let's check the other stuff. So, did my did my YouTube title change? Let's go pick I need to run my server in order to change this title actually. Yeah. Uh I need to rewrite ser status to look up that file. Super easy to do that. Uh but we'll do that next. Uh so let's let's check everything else first. So let's first of all check the YouTube title. So, uh, if we refresh this, it should have the new title. Yes, it worked. It worked. It didn't change the smile, but it changed the title. Oh my god. Yes. Okay. What? Wait. Okay. I need to see a button. >> It's working. It's working. >> I know your ears are broke. I just blew your ears away. Oh god. All right. So So that worked. Let's see if it changed the Twitch uh title. Edit stream info. No. [ __ ] It did not change the Twitch title. Why did it not change the Twitch title? Did it change the GitHub title? We shall see. Uh, artific. Yes, this is a test. It worked. So, GitHub status worked. Uh, Twitch did not. You know why Twitch did it? Because I think the code to do the Twitch changes in the server if I remember right. So, we got to we got to look at that. So, a couple things that screwed up. So, first of all, the YouTube one uh did not do the uh it did it did the full sm it's easy to interpret the smile. So, uh so yeah, split emoji title, new title, get him status emoji titles, set Twitch title, emoji title. Okay. So, the emoji title is not getting translated. That's the problem. Yeah. Where do we send emoji title anyway? Emoji get obsessed. So, that worked. Uh, where is emoji tile coming from? Oh, there we go. Emoji and title. And then we want emoji title. Okay. Yeah, we wanted to have this translate the emoji actually. So, uh I don't know how to Where does it translate emoji? Yeah, load titles. There's an emoji translator. It's already in here. It wrote it already. I just have to find it. Uh, get an emoji status. Uh, okay. This is interesting. So, I wonder if she can do it. Let's ask her if she can do it. Please make emoji title have the text emoji actually changed to unit code. Wipes the old sectors when you edit the file. Yeah, that might be a good idea. You can have something called trash. I used to have a thing called trash. So it would move the file and it would preserve it so you can empty the trash, but then when you empty the trash, you could have that like wipe all the sectors. I wonder if you could I don't even think you could map the sectors pointed to by an island. I don't think you could even know. I don't think you'd have to like do some really lowle stuff. Uh I want you to code. Here's a clean bash function that does it. Uh, what is on? Oh [ __ ] this is great. Thank you, Chloe. Let's do this. Uh, emoji unic code. That's perfect. Pulls down the API if it doesn't exist. It's in the cache. Uh, and therefore we can actually emoji title. Yeah, we can go find emoji title up here and we can say quite honestly we don't need to split it like that. We could just do title because title had the emoji in it. So we could say uh emoji to decode. Does this actually print it? Yeah, we say uh emoji to unic code uh title. All right. So, let's try our retitle again. And it's going to say it already knows this. So, let's use uh party and see what it does. Uh let's go look at YouTube. and refresh. This is a test. It made the whole thing a an emoji. I don't think that was what we wanted. One and then the name. Oh, that only does the that only does Oh, yeah. Yeah. Yeah, we don't want I I see what happened. I I didn't read the function close enough. So, the function actually is just this. I don't even care at this point. So, uh title rest. I want rest. press. Okay. So, try that one. Title's already set. Uh, all right. Refresh party. This is test. It did not replace it. Uh, I do not know why the emoji tile. Does YouTube use the emoji title? I think it does. Echo emoji tile. Let's do smile. Okay, it did it. I I don't think it allows emojis. Oh, there it did it. Maybe it's cuz party wasn't a wasn't a thing. Yeah, let's try rocket. See if that works. Refresh. Okay, so this is working for the live stream. Is it party? I thought I did party. Party didn't work. It's not listed in there. Yeah, we need to we we should probably make something that lists out all the emojis. But yeah, actually we can just do this. We can just more the emojis file cache dash GitHub emojis. There they are. Uh yeah, anger. Let's try anger. This is a test. Yeah, that's like for ranting. I can do that for ranting. Yay, team. Uh I kind of like that it prints it out. That that kind of makes me happy. Uh does that Okay, so that's still not changing the Twitch one, right? Twitch one is still busted. So yeah, the Twitch one is broke. The GitHub GitHub status is good. GitHub status is is probably good. Yep. This is a test. Okay, so YouTube is good. Uh the Twitch title doesn't change. No, it doesn't. So the Twitch is still broke. That's the main one. YouTube one changes. We spent like an hour doing the YouTube one at least. And now we just have to do the uh we need to do Twitch and we need to change the server to just look at the file and that will take care of the overlay. The overlay is not the overlay is an easy fix. I should just do the overlay easy now. Let's do the Twitch one. It's hard. The Twitch fix is a little bit harder. Let's do that. So, all right. So get add dot getit commit uh YouTube and GitHub uh working. All right. So get push. Uh I'm going to remove current. Current's not a thing. We don't need current anymore. Actually, no. Current's got all the Twitch stuff in it. So I I don't want to lose. No, the Twitch stuff is in the is in the server. So I can get rid of Kurt. Okay. Remove current. Get status. Uh get uh get commit uh current push. All right. So, no one is replacing cobalt. No, they are not. All right. So, then what? Uh we need to add we need to debug what is going on in Uh the GH status code, the GH status is going to go away as well. We just haven't removed that yet. Uh yeah, update read me. Uh uh let's see. remove GH status. All right. So, we have those issues to go add and fix so I don't forget about them. Uh serve status test lookup. We got all that. Uh retitle. Uh all right. Set Twitch something. Twitch update Twitch title number one. So update Twitch title Twitch broadcast ID M broadcast ID which we are not. We do have a Wait, what is it? I think it might be the wrong one because it was the one I had before. Nope, it's right. Okay, so uh that's correct. It gets our Twitch call API channel broadcast API. Uh that that should be working. I don't understand. This is not the same code as I have in the in the SER status though. Update Twitch title here. Update Twitch title. This is way way different. Uh, what is up with the save title? Oh. Oh, it's escaping a bunch of stuff. That's interesting. Not really needed, but it switch patch API patch channels broadcaster ID title save title. Uh, how is that different than this one? Oh, it's like totally different. No, let's use the one we know works. We know this is I wish I could delete this whole thing. I'm going to use this instead. Yeah. Why? Why is it a command appears to be unreachable? Why is that? Oh, because this is here. Elix broadcaster ID. Yeah, I don't know why it's so radically different. It's kind of weird. We know this function works because we used it in the other program and it worked. Cobalt code. Nice. All right. So try to retitle the kid. Yeah. Love hate shell check. I do like shell check but I agree with you. Mine is automatic by the way. Yeah. Anger. This is a test. All right. So that seemed to have gone through. Refresh. That should have said it was already the same. Maybe it's because it bailed out because the Twitch thing bailed. That could be Twitch. We're going to click edit. Stream info. Still don't change it. Why not? Did YouTube change? Wait, what? Why did it go prep for career? Oh, this is an old one. This is a test. Oh, that worked. Okay, that's still working. Uh, get up. Okay, so Twitch is still not working. This is where we were before. We didn't make any progress. So, I don't know what's going on here. It should be working. Set Twitch title. emoji title. Okay, we didn't change anything. So, I just want to see if it made it there. Echo emoji title. I think it's just going to be the same. I don't care. Shut the [ __ ] up. This is a test. Okay, that worked. Uh, we know it gets to this the next lane because it does the YouTube one and it works. So, update Twitch title. Keep going here. I had a fever. Yeah. Uh, nope. Okay, so God, we're so close and only took all morning. Uh, Twitch title. I know we got this to work. That's why I'm kind of frustrated because we got it. We definitely got it to work. GH status. This code definitely works. We have we we call it from the server. I'm going to punt. Why do I use sports metaphors even though I don't like sports? Because I'm American and everything's a sports [ __ ] metaphor. Living around football people my whole life. Uh RC status switch command not HB status codes line blows backs backward use this instead will usually be zero not 204 uh in better since you already have this is not true since you already have JQ skip the the the hand escaping entirely. Okay, if you say so. I didn't want it, but you screwed up on this last time, Chloe. I don't want to hear it. You were checking for zero and they were sending back a 204 and you were saying it was unsuccessful and it was totally fine. So there. So then uh unauthorized. Wait, what? Why is the ID wrong? Wh what is going on? Do I have the wrong broadcaster ID? That would explain so much. I thought and they request oath token. Maybe it's not loading the oath token, right? God, we're so close. So freaking close. It's usually how it is, right? We're always like this close. The token belongs to the wrong user. Two channel. So your problem is one of these. Your authenticated Twitch has a different account. No, I haven't. uh run the source to see who the token actually belongs to return that needs to match your broadcast ID. All right, this is all private stuff, so give me a sec. Twitch token, API token, app access token, successfully generated scopes, no scopes. Oh, that's interesting. T API get users. How come it's got a new one? Bad requests. The idea log is required. Direct shell check. Twitch API get users jQ. There is no get users. The ID practical flow is switch configure. Make sure make sure you're authorized. Make sure that you authorize Twitch manage broadcast channel manage broadcast. Uh even let's see still checking so it dies with usefulness before patching says Twitch title actual ID twist configure clay Hey, I already did all this [ __ ] Um, API get users gives me a bad request. The ID or login query parameter is required unless the request uses a user access token. This is new. Still in hacky mode. How you doing, Privatar? I actually was out of it for a long time. Did you like come back and I was still in it? I'm doing token stuff right now. I'll be back in a bit. Uh, not using user access token. Get users only works if it's ID. Log in that request user access token. Otherwise, switch returns 400. Your is currently using an app token, not a user token or you authenticate the wrong user account or you forgot blah. So try this Twitch token then verify the token is now using backward by running. So, uh, I'm going to say pitch fix Twitch token. So, cash Twitch token. Schmox cash Twitch token. cash Twitch token uh uh user bin bash cash Twitch token. There we go. Feel free to close this browser. Okay. and scopes channel manage broadcast refresh token uh user access token uh successfully generate user access token uh yeah I don't want to print that out so yeah uh temp uh cache Twitch token out. All right. I don't I guess it it it like puts a whole bunch of [ __ ] in there. Yeah. All right. So Oh, apparently it says it's a standard error. Of course it does. God damn it. that kind of stuff. I don't want it on the screen. It's like super dangerous. So, all right, let's try retitle again. Smile test unauthorized. The ID broadcast ID must match user request token. Uh I am out of ideas. Twitch API get users is user userbacked by running Twitch API get users. Twitch API get users. It works. And there's the ID. Echo Twitch broadcast ID. Oh, it's the wrong one. No wonder. How is it the wrong one? Um, I wonder if it's my Art of X Fun ID. I think it is. Yeah, it is. I think that's why. So, I think there's probably a better way to look up that thing every time. Uh, and then I wouldn't have to do it, you know. cash your Twitch token. Uh, okay. And then we could say jq dot ID. Almost done. All right. So, Twitch API get users data id data.lo login. Uh, yep. I'm going to do this again. Cash Twitch token. Close that. And it says RDX Rob. And it puts the ID. Uh, yeah, the data ID and the data login. Okay. So, so we is good. Get add dot I think as retitle is actually going to work now. So, serve status. Update the Twitch ID. Uh yeah. Uh derp derp derp derp derp derp derp I can show you now what's going on. So, zippit. And now we can do retitle. Where's the fire? Smile. Smile. Test. Title is already set. Let's change it to anger. Twitch title update failed. Endpoint respond with 204. See, Chloe had me change that. She's so dumb. That that means that you it worked. Yep. I guarantee you that worked. I'm going to click right here. It's going to be this is a test. See, so that is in the house even though Chloe made me break the code again. So retitle gets uh gets this checks for zero. If the code equals is not equal to a four, then do that. So we're going to try it again with smile this time. This will be our smile already set. That's a that's wrong. Looks like I had to do it twice. There's it's it's like people keep saying cloud is better, but it I that's fine. I just This is what I have right now. This is a test. So, there's some logic. There's a logic error when it checked that smoker smile was new. Yeah, it definitely it seems to work. Let's do uh rocket. All right. So, yeah, we have rocket now. It should be a rocket. This is a test. The YouTube should be a rocket. This is a test. And the GitHub we refresh should be this is a test. Yay. So, it's 100% working. The only thing it's not working is it's not updating the overlay as you can see up in the top over there. So, we have to do that now. So, to do that, I have to have a server running and we've already written the server for this. So, uh there's a minor bug where it's saying that it's already been used. Uh so, like if I if I do rocket again, it should say you already did it, but it does it again. It should it should say you already did it. So it's only picking it up once it pushes it down one which makes me think that uh it's not writing it to the file properly. So the current one should be the top one. Like if I do I think it's just writing it out of order. Uh so see it takes this is a test takes smile. Uh now if I do smile again it should give me an error but it's not going to. So, if I do uh was it current? We used to do currently. Yeah. Here's all of them. Got look at it. This is back when I used to do this and I would put the one on the top and then I would change it. That's like from way before. So, I don't know what it is now. Is it title? I think it's title. So yeah, prep for prep for tech career beater boost. Uh it doesn't seem to be writing it at all actually. So first of all, let's get rid of get status. We don't need anymore. That's gone. So get addit commit remove gh status. Uh get push. All right. Uh get status. All right. So, we're pretty damn close to being done. Uh, the retitle is not writing the text that out. So, uh, the logic for that is broken. So, where we need to find that uh, save titles. That's what we need to pick. Save titles. File, new, previous tab. Okay. So, we get a file, a new, a previous, and a t. egg tab print app new print app previous write the temp file that move the temp file over the top. Okay, so that's fine. And the file is uh so where's save titles? Okay, so titles file uh did it get it right? Okay, titles file is the first one. New title, current title. Uh and for some reason it's not doing that. It's only uh I can't tell you why, but for some reason, what does load titles do? Load titles look at the title file uh gets the directory. Actually, we should use base name there instead. This is weird. That should probably use base name. That's a That's not a very well written function. So the current title equals said 1 P2P. I'm not familiar with this method of doing said. That's that's interesting. I've never used that before. The current title is the first line. The previous title is the second line. And then that becomes a a variable that gets used all over. So previous title. If the new title is a previous title, then the title was already set. Um Oh, you know what it is? The stuff that's getting saved has the emoji in it. Yeah, that's the problem. So, what what is the title file by the way? I don't remember. Home titles. Okay. See? Oh, it's fine. Okay, that's great. So, this is a test. So, if I do smile again, it should tell me that that's already the title. And it doesn't though. It takes It doesn't do it until the second time. So it's checking the wrong line is what it's doing. Uh yeah. So see that should not work. That should not work at all. Okay. So there's definitely a bug there. We got to fix that. Um, so we load the tiles from the tiles file and then we have the current and let's let's just test this echo current uh current title. It's getting I don't give a [ __ ] Uh, previous per P per title. All right. And then we have the new title. We're going to find this, I promise. All right. So, this says the new title is smile. The current title is smile. The previous title is anger. So, that should have said the new equals current. And it should have failed, but it didn't. Why not? If the new title is the same as the previous title, then title already set. So, this this check is failing. There's something about these two strings that's not equivalent. Uh, so I don't know what's going on there. Because that let's see current equals smile. This is a test. Previous equals anger. This is a test. New equals smile. This is test. Does one have a line return. Ouch. Uh, that's the only thing I can think is that one of them's got a light return. Uh, This is Chloe being stupid. I would It would Yeah. She's going to help me out here. Um, second T already said perfect. It did again. [ __ ] And now it'll say there's already been set. See, it still has a problem. Current and new anger and anger. So this should work. Okay, that one works. If I do smile again, it should it should say wait the current it should say that the current is smile and the new one is also smile but the previous one was anger. right? So if the new one equals the previous. No, what we actually want it to be match is the current We don't want it to match the previous. We want it to match the current one. So that's the problem. Yeah, we want it to be the current, not the previous. Yeah, that's that's the wording is kind of what's throwing us off. So, this should be We don't need that at all. That's We don't need any of that. Pretty sure. Uh, and we could get is secur now. This should this should say already set. Yep. Okay. So, the current is smile, the new one is smile, and the previous is anger. Uh, why do I want the previous? Because I want when eventually what we're going to do is when the event or the video is recorded, uh, we want to retitle to the previous previous one. So, so that's why so that bug is fixed. Let's do actually Edgar. All right. So, this is good. Uh, okay. So, that's all good. Okay. Get add. Wait. Get status issues status. Uh close to they read me. Uh get addit commit-m fix uh bug comparing new and pre and current get push. All right. So that's all saved. Um there there's two more bits of functionality we need to test. We need to update the overlay. We need to add uh update the overlay. Uh and we need to uh uh allow uh say uh read uh current issue if if number. This is a cool thing I really want to do. And then uh we want to have it revert. We need we need a retile uh revert command, which means go back to the previous title. Uh or actually if it's just a dash, if it's just a dash, it should toggle between the two. Let's do that. uh uh switch switch between current and previous if just dash. So those are those are all things we need to add. Uh I could probably just b code that and give her my whole thing and say, "Hey, do this." Uh let's do that. Let's say I don't think it's big enough to blow her out yet. I I need to like get a better at editing large amounts of code. Uh but I'm going to see how well she does with this really quick. So, okay, here's a fresh copy. Now add a toggle if a single dash is the argument to switch between uh current and previous titles. Um I am so sorry. I should probably Where's my mute button? I need my stream deck. I'm going to find my stream deck before tomorrow because I'm going to have a cold and I don't want to like be tormenting you guys with like nose blowing [ __ ] Uh uh. Okay. Add this right after loading the titles. Okay. Uh copy. So that would go then your existing comparison system works. Example uses retitle rocket bill switch to previous retitle. Yes. Yes. Yes. Yes. Yes. That was fast. Uh let's get these out. Uh what does it say? It says add this right after loading the titles. Okay. I am working very diligently. How you doing, Akip? I wish I had some things for you to help me stream. You're such a good helper, but my tech stuff is not your favorite. I know. Uh, okay. And do that die previous title should toggle to uh do all this stuff. All right. Let's try that. Right. Add a title dash that already set dash. That didn't work. It did not seem to work. Uh, wait, what? Titles anger. They're not the same actually. Yeah. I don't think this works at all. I think they she totally lied to me again. Uh, this does not work. Yeah, that didn't work. I don't I know how to do this. Load titles. That's what I had. Yep. The patch is way too handwavy. The clean way is this. New title equals prey save titles of GitHub issue title. Oh wow. Replace your argument handling section with this. I don't know where that is. Argument handling. Uh title files. We have that load titles. All right, let's get rid of this. Uh get rid of all of this. uh keep your duplicate check after that but compare against current tile not previous tile. Yeah. All right. So that looks right. This is a test with anger and it should just say be a smile. Oh god, it works. How cool is that? Okay, so that's good. Get add dot getit commit add support or dash to toggle pre and current get push. I think we got that. Get status. Uh what else? Okay, so we don't it's not picking up the overlay yet. So issues we could close out that issue. Update Ruby switch recurrent previous close five uh recurrent issue. It's the number. Oh, let's try that. All right. So issues. So let's say we're working on an issue. So we could say this. We could say retitle or retitle reset unbound variable. [ __ ] Uh, emoji title equals emoji unic code emoji. Oh, right. So, split emoji title. We don't want a split emoji tile if it's is split. When does a split emoji tile happen? Oh, it's apparent save titles. Okay. Uh, if it's a GitHub issue, we could actually we should actually make it. We should actually set the uh the new title to have something in it. So, we should say gear. Let's do that. That'll that'll take care of that issue. Uh get a mission title. Otherwise, it's the whole thing. So, we want to put a gear in front of it if we're working on either a gear or a bug. coming for better profit. Lol. Get him. I think I already do that actually. I think I already added emoji to it. Nope. get an issue title. Uh, we need to check. Okay, let's give her this function. Yeah, let's give her this function and pipe that. Let's see. Pipe to PB copy. We're going to give her that function. Whoops. And we're going to say uh make uh this have a bug if bug or uh what should we use another emoji? Make this make this have emojis that match common GitHub uh issue labels. So, we want it to have emojis automatically. That would be really cool. Uh God, look. This is what I'm talking about. Exactly. God, look how fast she did it. What test? Hey Dovekin, how you doing? Uh, there we go. Question is thinking. Uh, raising hand help wanted. This is so cool. She did this for me. like print gear GitHub issue title current directors outside your repo copy. Okay, so I once again I'm blown away by AI. It's just like so crazy awesome. Uh, so GitHub issue title, GitHub issue emoji. Wait, is it uh is my overlay saying test right now? Oh, yeah. Everybody saw my title. It still says test. I need to make it actually relevant again. I've been I'm actually writing code to test the the title changing. Did you get notified somehow? Did somebody get notified when the title changes? That would be interesting to find out. Uh, okay. So, let's say retitle for uh title already set. Oo. Let's see about that. Oh boy. Uh, recurrent issue if number what? Oh yeah. Uh, actually we don't want it to do the check. if it's an issue. Right. No, we do. We do. We still want that. We still want that. I just need to remove it. Because I want one that's got the emoji in it. So, I want to make a title that matches my issue. So my issues are read the current issue of number. So when I do this, it's going to retitle my stream, my GitHub status, and my YouTube live stream and my overlay eventually, which is super easy. I haven't added that yet. Uh to the name of the issue and based on the labels on the issue, it's going to put a custom emoji. So we're going to say retitle poor line unbound variable f boiled again. 188. That's because it keeps it. Yeah. Uh, okay. Holy moly, Vim. Yeah, I love them. I use them a lot. You like them? It's good, right? Uh, emoji to unic code. So this uh this is failing because when we do the split up above it's not getting populated because it's uh the split emoji is not happening because the title has already had a different thing in it. Uh yeah. And it's uh Oh, wow. It's doing like a line chart. Oh god, my nose is so bad. Wait, I have to sneeze. I need I need to put my mute button on. All right. So let's try this again. So the GitHub issue title where is that getting called? Okay. So new title equals GitHub issue title. And now when it does that the new title doesn't get parsed, I don't think. Yeah, it does. It does. Save title. Title. New title. Current title. Okay, that works. Split emoji title. So this is family because the new title is still not got an emoji in it somehow. So we need to print this. We need to echo uh to debug this. We need to debug this really quick. Title already set. All right. So, now you see I didn't put an emoji in front of it. That's the problem, though. Uh, something's going wrong. GitHub issue title is not adding the emoji. It's not adding it for some reason. So, yeah. And I think issue out issue rep parse current directory print out dies issue. Then change your issue number handling from get issue title one to issue title issue title emoji new title. All right. So where does that go? New title equals get issue title. negative issue title emoji uh one. Oh, I see. I see. It's parsing. Yeah, I see what's going. Okay. So, all right. All right. All right. All right. I I missed that the first time. So, that that's down here where we were just putting our debug Okay. So, right here this code needs to go and that should do it actually. So, issue title equals get issue title one gets issue emoji one new title blah. So, let's type retitle. Let's just say it's already there, but Oh, hey, I put a little gear. It worked. Can I find a YouTube live broadcast to update? I'm guessing that's because of the Yeah. Yeah. I think it's because we're hitting our our API token. Yeah, it's not seeing us live anymore. What happened? Did we lose We lost YouTube somehow. I think YouTube's like not happy now. We broke it somehow. I want to get the more of the error. I I wonder uh Uh issues title three. Why is it all of a sudden not able to find the broadcast? Did I hit the broadcast too many times? It updated everything else though, right? I think it must be an API quota thing again, which sucks because I would never normally hit it this hard, but okay. So, that worked. Uh, Twitch, I'm guessing worked. Update the overlay. That worked. YouTube failed though, which sucks. Uh, you need an endpoint API counter. Yeah. So, I the only thing I can figure is I've hit the API too many times for YouTube. Uh because it's exactly the same code. I didn't change anything. Uh I'm I'm kind of at a loss here. Uh what what changed? Let's look at all the changes. Make sure I didn't break something. So, the GitHub issue emoji is is it that's really it. We added this uh we added the issue title that was already there before. So, we just changed how it looks it up. That was it. We didn't we didn't change anything else. So, get add get commit uh infer emoji from issue. Uh yeah uh get push. So let's try this. Let's do a new issue. Let's do issue uh test issue. Uh let's get that and then we'll say add metadata. Let's say let's add a label. Let's say we want help wanted one. So let's exit that. Submit that. That's number six. Retitle six. And now we should have a I need help icon, which is so cool. And it would just update YouTube. Everything was working until YouTube decided to [ __ ] the bed. Uh so you know uh I can't figure out why let's ask her suddenly getting uh probably from API token uh to from too many API calls. Question mark uh did pick the API would return 403. So the message usually means the one that is calary return an empty array. So your script couldn't pick up broadcast ID. Your currently live your current live setup does expose a broadcast the way your script expects at the moment to access token may have changed or expired. Uh but that usually shows up as an author from Google rather than not found. Fastest way to prove is to do this. Uh actually we wrote a script that does this already. So uh we have a I think it's called test YT lookup. Yeah. Invalid credentials. Check it. Request hat. Invalid authentication credentials to access token login cookie. Uh unauthenticated. So, I kind of wish if it did that that it would run that that the that automatically, but you know, so it would pop it up for me like when I ran it say, "Oh, no, you need to reauthenticate." Oh [ __ ] No, that's why I don't want it to do that. There's nothing there. I'm not doxing anything, but that's a that's definitely a reason not to do that because I can't be documenting tokens all the time. So, that just has ids, client IDs, which is not secret, but in this case, it can be sometimes secret. Uh, and I'm going to go back to my web browser and reauthenticate. So, the the moral of the story is that when that happens, I just need to reauthenticate. Continue. has like nothing to panic about. Uh I just have to put a reminder that that's the case. So like if I if I do my thing now, let's go back. I'll show back to Okay. So if I do test it look up, it gets all this stuff. There's my live chat ID. That's that's what it was failing on. So now my retitle six should actually work. Let's do issues. Let's do issue. Oh boy. Wrong rob. That's what I want. Retitle. Retitle. Poor. Oh [ __ ] I killed my echo. It's sty. What is it? stty uh- echo, I think. Does anybody remember? No. That's how you make the password prompts. Do not do anything. I say uh dash no echo. No. Sty. I I did something. I can't remember what I did. I don't I don't remember how to do this. It's Yeah, it's fine, though. It took it I It got rid of my cursor. All right. So, what are we doing? Oh, yeah. Retitle. Uh three. So, updating the overlay. And yay. Hey, it looks like it worked. Okay, so now we just need to do the overlay. Let's check all three services. And then we got an overlay and we're done. Uh, so here it should be updating the overlay. Here is I've changed from help to updating the overlay and YouTube channel is now updating the overlay. Yeah. So that's good. Now last thing is the overlay itself. And to do that, we have to run a server. So, we're going to re rewrite the server. Uh I I do want to put a thing in here that says uh if if the YouTube thing fails, uh you know, uh what do we want to put here? YouTube. Where's the YouTube set live title? Uh YouTube token file. Uh, see YouTube token file.bound. That's not what we want. We want the API. Uh, import find broadcast ID. Uh, get your broadcast ID. My broadcast ID val. Uh, could I find YouTube live broadcast to update? Could I pitch YouTube broadcast? Uh, what was the error we got before? You guys remember? It's off the screen now, but I think it was how far back I want to go here. This is like the thing I did to test. Uh can I can I update body producer broadcast? Uh if any of this failed, we can just put uh re off uh yeah. Okay. So, uh yeah. Uh okay. So, and then we want to say what is it? Uh cash. Uh, is it YouTube or WT? I can't remember. Cash YT token. All right. All right. And then the last thing is to get the overlay. And then we're going to build a websocket thing so that we rename the the videos when we make them so that they'll have the same name as whatever the last uh thing was. Uh uh meanwhile, let's go ahead and actually use this. Wait, it went back to Oh, yeah. Still in prep for career being interview. So that's like the major overlay. Um and let's do that actually. Uh, let's do retitle prepper career beer boost just to make all the things match again. Uh, I really don't need to check this. I'm pretty confident it's been fixed now that we did our last test. The prepper career banger boost. Uh, and then we, you know, I I guess that's fine. Let's I mean, Twitch is fine. Let's check Twitch. Uh, Twitch has got proper curving. Okay, so that's good. And now what? Let's go back and do uh let's do the server status. So this is going to grab the server status. And uh we need to rewrite that entire thing. and and I actually feel like I might just have her write the whole thing from scratch again. Before it was doing all kinds of Twitch interaction stuff and it doesn't need to do any of that now. The only thing it needs to do is pull watching a file and if the file has any changes then it should uh serve whatever is the top top on top of that and it doesn't even really need to pull it. When it gets a request it just needs to go get it. So, this is needs to be like an entirely new server. This is We wrote this really awesome server. Chloe wrote this really awesome server in uh nothing but uh uh that's wrong. That ID is wrong, by the way. It's 30, which is weird. Why would my broadcast ID changed by the way? It's my broadcast ID is not 28. I don't think I think I did I get that wrong? I mean, it's working. Whatever it is right now is working. Yeah, 30 is working. Did it change? Super weird because I was changing my title last night and I had I had a different broadcast ID. I don't think your broadcast ID changes, does it? That's the one that's like hardcoded, right? Or does the broadcast ID change for per for per for per for per for per for per for per for per for per for per for per stream? It should not. I was definitely doing this last night. It worked. I think I think what might have happened is I might have had the wrong number in the bash script from the one that was default hardcoded in the thing and I didn't have the environment variable set because I hadn't done an exact bash-l to reload the environment. I think that's what was happening. Anyway, uh we need to get server stat. I'm going to have a rewrite it. So, uh, okay. How you doing, Tal? Good to see you. Now rewrite the serve title uh command to just grab the first line of uh titles. She already knows about the titles and the environment variables, so she'll probably put the environment in there. Yep, she did. Uh so she putting on 8080. I think we should keep an eye on 8087 87 87 84. Yeah, this is like drop deadad server in bash. Told you it was lots easier because it doesn't have to do any interactions with the internet. It just serves up that file. That's it. So, we're going to change this to what was it? 8784 8784. I think it's already in the thing. And we can start that up. And that should only get it when it gets requested. Yeah, that's a really really simple server. So every time we we curl that, which we can now do in a different screen. Actually, let's put this in the background. So now now I could do this. I can curl uh it should be local host uh 784 and it'll give me my title. Now it it just keeps giving me to to me. I I don't want it to do that. I wanted to just give the one uh make it so that it only fetches the value when a new request comes in. Right now it's kind of like infinite looping. Premp computes the response that pipes an NC so it doesn't reread the title for each request. run NC per connection. Yes, please. That's exactly what I want. Uh so yeah, copy. Uh kill one. Wait, what? Oh, wait. I think I already killed it. Yeah, it died on its own when we curled it. Yeah. S status. Go girl curl. Wait, we forgot to change the port. 8784. It's already coded that way in the OBS. Ah, Robert, you think I would know how to do this by now? 87 84. I do not. Pearl That's not good. This is Why is it so hard? I should just look at the NC commands and it picks him. Good old Netcat. The best server in the world. Serving web pages from randomly hacked systems since 1988. Probably in the 90s. 98 94. You think you think it was wrong, Chloe? Coprocro netcat. Uh, IFS3 renetcat. Yeah, this is this is a better server. Good for you, girl. You're going to wait around. Did you guys know you can do fully uh you can do full asynchronous applications using copro? can actually talk between processes in bash. A lot of people don't know this. This is bash has got all kinds of like eccentric weird little things you can do. Yeah, you can actually you can do just insane stuff with it. And should I be doing it in bash? Yet to be said, but you can do it in bash. So it would this be a better Python program? Yeah. But then I'd have to write Python and I'd have to have all the Python dependencies. With with Bash, I have all the dependencies already on my system. I have to deal with it. So even though it's more complicated, I don't care. Chloe's writing it. So yeah, I spoke like a true Pearl programmer, right? I don't care. You're probably can't read the code. Still not working. Chloe. Chloe. Oh, wait. It's 8080. Yeah, there we go. I guess I'll just change it to 8080 in the code. Yeah. Yes, sir. Yes, sir. Yes, sir. Um, yeah, which is the next thing we have to do. We have to change the the code to do that. So, uh, we could actually let's just change it here and we'll change it in the browser source. Is it PNG or which one does it use? Is this PNG one J? I use a JPEG. [ __ ] Of course, that's the one I did copy over. Oh, wait. There it is. So, move gnome jpeg to logo.jpeg. JPEG. Uh, remove gnome.png. Don't need that anymore. No. Change that to logo. Uh, logo beggars art link tree. This this I want this to be loaded automatically, too. Yeah, I got to probably serve that from probably the same thing. Oh, yeah. Just on a different endpoint. Uh, this is, you know, quick and dirty here. So, we need 8787. That needs to change to 8080, which is a really popular port. So, I don't know if I want to keep that long term because everybody everything uses 8080 for testing. I could I could make it a better, you know, a different endpoint or something. I can't bind to the host on this on the same port if it's even if it's a different endpoint. I could what I probably should do is write a local server that just serves up all the [ __ ] I want. So, you know, uh including my IRL overlay and then just make different endpoints for all that. just make it kind of like a local API endpoint. Uh, you know, server, you know, that that's that would that would play really nice with OBS. Uh, so wait, do I hear music? No. Okay. So, so what are we going to do here? We're going to go change the browser source. I don't think I'm going to dox anything here, but I do want to consider this uh really quickly. I need to make sure I'm not doxing everything. I'm going to go actually no I'm not because you can't even see OBS. I forgot. So, my OBS is elided. Eluded elid. You can't It's It's taken out. It's it's it's it's not allowed to be seen. That's what I'm trying to say. So I can go to the browser source. I can open it and I it says files user Rob uh repos get rx robb OBS index.html. So what I can do now is I can change it to rxro slash uh cmd- retitleindex.html. And that will grab the new one. And sure enough, it it updated the overlay instantly. The problem here is, as you can see, we are not translating the the uh thing into an emoji. And that's actually really easy to do because we already have that code written. This is just one of those cases we're going to have to copy the function from one to the other instead of like using it in a module or something, which you would probably want to do with Python or Go. In this case, we're just gonna straight up rip off the code from uh retitle uh emoji to whatever. Where is it? Emoji title. Emoji unic code. So, yeah, we actually this this needs to be a function. This needs to be a command. I got to make this into a command. Yeah, it definitely needs to be a command. Uh, yeah, that needs to be a command. And that's how you do modularity with bash, which is [ __ ] awesome. So, I'm going to delete that. And yeah, I'm going do it again. Uh, delete. All right. So now we're going to put that in a new program called what was it? Emoji. We could call it I don't know. Emoji. What was it called? What was it called again? I don't remember. I don't want to lose it. So emoji to unic code. Uh, does that take the whole string or just the beginning? Oh, no, no, no. That translates like exactly one. Yeah. Okay. So, that's what we want. Uh, yeah. Yeah. Yeah. Yeah. Yeah. Yeah. Yeah. UX emoji to log unit code. There we go. and call this bash uh go to the end uh and I like making functions like this anyway. So, uh, emoji space and then we just put it, uh, we just take argument one and call it a day. Yep. Pass it off. Let it do its thing. That way we can test it. It's a testable function. Uh, emoji to unic code. Uh, heart. There we go. I will just see the code smile. Okay, so that's now been added to my dot files and I can add that. LBG, how you doing? I'm coding. I'm coding a bunch of cool stuff for the the boost tomorrow. Uh just uh let's see. So, let's change retitle to do that. So, emoji to we're going to change this to emoji uh to unic code uh emoji. So, now that should actually work. Hey, we don't have a Discord. No, I need to get rid of that. That's old. Sorry guys, the moose is back. Yeah, we're doing the moose a little bit tomorrow. We're starting off. So, I'm getting I'm getting everything ready to make videos really fast. And I just finished uh I just finished a command that will set the title on my YouTube, Twitch, and GitHub status with one command and the overlay at the same time so that I can make miniature videos and then just run it. And I'm about to add OBS websocket uh listener with it with it subscribes to uh end of record video events and renames the files to match the current status. And then I can toggle the status with retitled dash back to the previous status so that I can make lots of really tiny videos really quickly and then just bulk load them up to YouTube at the end of the day. So, uh, that's really really going to help a lot. Uh, the container, by the way, for those, it's all pinned in the in the in the chat and Twitch. You can go check out the container right now and get ready and run it. Uh, if you want to get ready for the boost tomorrow when we get started. Uh, but I will tell you just right now that the boost is going to become uh more about three hours of you being the priority of me answering your questions. And I will continue to work through videos uh and and stick them out there. But I'm going to be working on videos all week. So, uh, I'm going to try to do like I I started doing this and then I I had to move from, you know, so things happen. Hey, thank you for that ball. I appreciate that. Your mama. Uh, so yeah. And actually, here's a really cool one, LBG. This will actually set the title based on the issue. So, I have a a test issue here that's a help wanted issue. It actually sets the This is all vibe coded. It will actually set the emoji based on the labels on the issue. So I could do retitle while I'm working on an issue. I could do retitle six. Of course it wouldn't work. Of course it would break. Of course it would. Uh emoji to go. Wait, what is that? What I named it? Did I name it that uh art? Of course, I have it's a tiny bug. I just I just factored that function out. So, that's it's my bug. I may fix it. Yeah, it's actually the number two, which is slightly easier to type. So, anyway, let's do this. Retitle six. So, now title already set. Oh, [ __ ] Okay. No, it's not. Oh, it's because I just did it. It failed. That's right. Uh, all right. So, let's do this. Read title dash. Go prop protect your boost. Okay. So, did it change my overlay? It did, but it still hasn't changed the rocket yet. I'm working on that right now. Uh, actually, let's just fix that right now because it's driving me nuts. And then I'll show you what it does. So, because that's the last thing, and then we can do the websocket uh subscriber, which is going to be super cool. Uh, job stopped and running. Uh, uh, kill one. uh the foreground. All right, let's do serve status. Let's change this to uh we're going to need to copy out the title. Uh titles equals titles progress read a cat read the line equals the first line and break read and discard the HTB request headers. Okay, I don't care. Should I learn how to code or learn how to write prompts? That's a good question. We're going to talk about that in the beginner boost starting tomorrow. Uh yes, the answer is yes. You need to do both. You should learn how to read code and write prompts. I've been writing prompts all day and also reading and writing code. You got to do both. Uh, so this is a said this reads the first line of titles. God, that's like way complicated. I would never do it that way. That's that's that's vibe coding for you. Yeah, that's horrible way to do that. Uh, okay. And then uh ah we need uh yeah we need we need another another uh emoji translator. So I think I need to change to emoji to use my new thing now uh to what's it called? Yeah I see two emoji. I think my two emoji command used to change and right now it's got all these hardcoded ones in it. Um so so yeah. Um ah so yeah uh it goes to the emoji list. I need to load the rest of it into an array. I need to have these ones, but then I also need to read them all into the array. All right. So, actually, I'm going to ask her to do that for me. So, a uh can you write sub bash to load the uh emojis into a bash hashmap and then I can I could just use that every time. So, capture a unic code Yeah. Uh, God, this is just so much easier to code everything. Everything is so much easier now. It is. So, I already did emoji uh emoji JSON emoji, right? So we declare emoji up here. We load emojis and then we go ahead and override the emojis with some that are already there that are mine. They're like aliases. So So that's kind of cool. Let's see if that works. Uh if this works then we should be able to do the title. So cat let's say two emoji uh titles. Yeah, it didn't do it. So, I mean, if I do bang bang to emoji, it did find rocket for some reason. I don't know why. If I do smile, it'll work. Yeah, but it doesn't do rocket. There's still a bug in there. We got to go figure that out. Uh, I don't know what's going on here. So, is Rocket already here? I think Rocket is already here. No, it's not. Okay, that's why uh let's see this. Let's say All right. So, first of all, we have to say if uh load emojis. Okay, if there's no emojis file, we got to skip it. So, two entries, but okay, so we're just going to return let's see if not dash r JSON. Then we just need to to return exit. Okay. So then we load the emojis. What I don't understand is why it's not doing this. Let's go ahead and just print it. Print. Uh I go name. I don't need to double quote it. See, that worked, but it didn't do the other ones. So, it doesn't appear to have done this. Oh, wait. We took it out. Oh, wow. There we go. So, it went through a wall. I wonder I wonder why. I wonder if it's because emoji is scoped differently. Uh Yeah, it's not working. The the unic code translation is not working. Yeah, there's a bug. Something about the capture unic code is not working. a emoji is local to sub two sub show caused by pipeline. What? What? Oh, that's why the emoji the emoji hash is not getting updated. It's updating a localized copy. Oh, that's bad. Oh, the declaration is above. Wait, did I not have a declaration above? I declared a emoji. It's right there. This is because bad code got loaded into the AI from shadowing. Shadowing is so popular. It's show so common. No one's sexy. Rob, you should press substitution set pipeline. [ __ ] yeah, that's the way we should in the first place. Dubby Okay, there we go. That's what we want. All is good. Crash C gets unheard of. Yeah, two emoji titles, so that's going to work. So now we can do the serve status. We can change this to be uh we can say title equals title tit equals uh to emoji uh title and that'll convert all the emojis. Serve status add. And I just pick just pick my overlay. Oh boy. I should fix my overlay. They cut out. Wait, what? Wait, what? I must have screwed that up. Would be the first time. Coproc. Yeah. Uh, try that. All right. Wait, what? What the hell? This was totally working before. Why did it change cat one? Is it a pri that's like hanging out? Why did this It was working before. That's why I don't understand why I changed it. This This is [ __ ] I don't know what she's talking about. This is I'm probably going to write it into something else. I mean, I can write it and go really quickly. I just have a compiled binary, but I don't I don't want to do that. I kind of want to get this to work. I got to give her the whole program. So, normally I would be if I was using a real AI, I wouldn't have to do all this. She like, "No, here's all your problems." Yeah. Does anybody know can you query can you query Gemini from the command line? That would be cool. I'm so sorry everybody. Oh, I hate being sick. But might as well stream. Uh cat is a number b text. You're the one who gave it to me, idiot. Oh no. Look at the like. Oh, you need to fix it like this. All right. So, so far so good. AI gave me bad code. Can you imagine it? Can you possibly imagine? Look at that. It fixed it though. Rep protector beginner boost. It did. It fixed it. Uh, I think that is what's in my titles. Titles. Yep. remove uh title. So I can look at this raising test issue. Watch. So retitle dash and it'll change it to test issue. And now I can go back. I can do retitle test and it'll go back to my other one. Switch it back and forth. Yeah. So So we're good. Uh, so I can I can check server status on. Stick that in the background. I go ahead and save this. Lots of changes though. Uh, get add dot commit. Uh, fix uh OBS index. No, fix the OBS uh server stuff status get push. All right, so that is good. We're on to websockets now. So, uh we can actually try this out. So, like if I wanted to make a video, what I would do now is I would make the I would I would change to the to the to the thing I'm going to make a video about and then I would make the video and I would hit start and then I would stop and then I would run and then and then it would it would save a file. Uh and then I could I could go to the file and I could look at it. Now, right now, the main the main reason I made all of that is because I want people to know what I'm talking about when they come in the chat. So that gives them every opportunity to see that. Um, God, I mean, you know, it's it's right there on the top of the screen. It's in the title. It's on my YouTube title. It's on my GitHub stat. It's everywhere. So they if they what are you talking about? You know, I can like do that. But most importantly, that will be saved with the recorded video snippet. So when I go into the video right now, I I the way that I do this, I bulk load the videos. But before I do that, I have to go watch the video to know what to title it. Uh so and and you know well up to today I did like three or four videos yesterday and that's what triggered all this. I did three or four videos yesterday and it all said prep protect a career better get a boost. They didn't they weren't relevant to the topic. So I had talked about a specific thing that I wanted a title about and the video was was essentially useless because the title at the top did not match what I was talking about. So, uh, you know, if you take that one step further, what I can do is I can actually, uh, you know, URLify or slugify the name. That's what I'm going to do now. I can slugify the name and as soon as the video is over, uh, as soon as I, as soon as I hit start recording, the event will be picked up by OBS and I have a listener that will grab it and say, "Hey, that video just changed. Let's go rename the video to match the current title." And the reason for that is so that I can redo videos. Like if I if I if I start a video, this is another problem I've had in managing videos is I will I'll do the same video like three times in a row and then I'll have like three videos that I'll have obscure timestamps as names and I don't know which one is the real one. So I go, "Okay, it's the last one." But then I have to open them all and watch them in order to upload the videos. So what I've just done here is like radically simplified my content production polic you know uh process so that uh I can really produce content quickly. Uh you know small consumable videos that have a proper description I mean a proper title and ultimately a proper description where we can have AI go in and translate and fill in the description for me. But for right now, uh, I I just needed to get those things done. XYZ final use video, final video. Right. Uh, so so right. So if if so that the next step of this little tool that I'm making is because everything if I don't have the ability to make quick videos, I cannot do the beginner boost. Period. I can't. There's just no way to do it. and and I debated long and hard over the last week about whether to stick with the, you know, three, four, six hour long form and then try to chapter that out. And in the process, I was reminded of of the very successful method of doing it last year, which was to just get together at, you know, 2:00 Eastern uh as a group and then I would make you guys would sit with me and I would do a video. I talk to the camera and focus and then you would ask questions about it while the video is uploading and all that stuff and we could like fill in the gap. So it was so this big three-hour block turned into uh maybe 10 12 videos that were all unique and that all got uploaded and then put into the playlist so that people could go through them and decide which ones they wanted to see and they were all granular which means that they could be reorganized uh in the playlist or in the the top level document that links to them all which I did find as well for those of you who don't know I'm going to talk about this tomorrow but if you go into uh if you go if you go uh rbx rob uh there's my nice things file but if you go to slskll stack uh you can see this is the original this is the last version of this that we did and uh these this does link to all the videos uh from the last time I did a beer boostant on >> uh the point the point of this I'm making is that this technique really works and then you can kind of reorganize the videos you know either in the playlist or in some sort of external outline HTML. So, another thing I need to do before tomorrow hopefully is I want to take all of this content and I want to change it to ASIDOC so that it is available and it's in the boost thing. So, then when you go to rxro.github.io and you type /boost uh you get a document and you get a PDF. So, it'll look a lot like the nice the stuff I did in Asky doc when I started my books. for other things. All my nice comments like this, you'll get a relatively plain book format that's got all this stuff in there. Uh, and that's, you know, will blind you. It's definitely white, but but then you can also download a PDF or an EPUB and use it on your Kindle or whatever. And so schools and stuff could go there and they could have a syllabus of all the stuff with links to the videos that go with it if they exist. So, as I'm writing the syllabus and I'm saying, "Oh, I need a thing here." I could make bullet points for that and then I could link to the videos and I could get started right away by reusing all the videos from last year or two years ago or whatever. So, that is where we're at. I do need to take a break and get some uh blow my nose some more and get some get some food. So, uh so go ahead and uh I'll put some fishies up for you. How about that? You guys want to watch fishies for a while? Uh I'll be back in a bit. So see Yeah. All right, I warmed up a little bit. It is cold for some reason. Maybe because I'm not moving. Uh, also I'm sick. Only got to be up for another two hours or so. So, let's see if we can get this. Let me see if we can get this tool done. Um, the last thing I really want to do is get the websocket event. I want to I want to follow the websocket event and I want to change the title based on that when it when it ends. Now, we have all this stuff to do that. Uh, so let's just dive in. I'm going to ask it say okay let's ask chatb let's say write a script that runs as a server listening for websocket for OBS websocket events. I know this exists because I looked it up yesterday and it it did it. socket events. Uh when a video recording finishes and that renames that video that finished video to the current title set by retitle set last by retitle. And then and then we actually don't need to do anything more than that because we can just do we can just do a retitle dash to go back to the regular one. She might pull this off. Who knows how good she is going to be on this. Boy, do I need a suntan. I'm like a ghost. I am white as they come. I need some sun. I cannot wait to get some sun. Wait, what? 10% battery remaining. That means I burned out on my my transmitter battery. Probably good. That's probably good, actually, because that's I probably should not stream longer than that. mistakes at 7 am. So, uh I'm super surprised at how good Chloe is Chad PT is for doing all this stuff compared to Claude and some of the other stuff. Uh it's been kind of fun to see how well she does. The script assumes websock webcat jq opensl python 3. I don't want [ __ ] Python 3. No Python 3. No. No Python 3. Stop. Stop right there. Uh, edit [ __ ] uh with absolutely no dependency on Python. I'm not doing it. You can't make me just like fine. I'll try to rewrite it to something else. Yep. We got a lot done today, though. I I feel like the two hours we spent trying to get the YouTube API to work, that was the hardest part so far. Paid in the ass. So, we can move past that pretty soon here. Yeah, here's a pure pass version of uses web suck use and nothing for Python OBS password file. Oh, she's learning my style. I don't like passing environmental variables unless they're coming from a file. Uh, log previous retile. Let's see. Load password local password salt. That's like dealing with all the passwords and everything. That's really cool. current title. Yeah, it's just splitting fun off. Okay. Sanitize file name. Yep. Kill the col. Bad idea. This should probably be I should probably use my slug. I have a slug thing for this. This is basically doing that, but it's trying to sanitize. Sanitizing is usually a bad idea. Uh, that's probably fine, though. target path for uh we should actually tell her to ignore emojis in the title or not. I sound better. I am a little better. Yeah, but not a lot. I am wondering what it's going to do with emojis. It's probably going to put rocket in front of it and then Yeah. Connect and watch Coco OBS websocket. Oh, this is great. It's using Coproc. I love it. Hello challenge. Uh 2 o'clock tomorrow Eastern, but you can start anytime. You can start today. just go get the thing and start, you know, working through it. I have to get those videos up there. That's kind of the thing I need to get before tomorrow. Challenge OBS password. Uh, identify JQ submission. Yes. Identify read the line. Expect identify response. I don't know about that. Connect to OBS at blah read OBS record state changed. This is cool. Made need websock. Make sure I have all the stuff. Well done. Do blah. Disconnected. Reconnected delay. Uh, a couple things. Put your OBS websocket password in. Blah. OBS sends a hello message on connect and the off is enabled. Includes a challenge and assault. The client must compute the authentication string those values before sending identity. Okay. Only to the outputs of end category which is one to one bit six webcal installed OBS retitle recording. All right. So God this this might actually work like straight up. So, uh, I'm going to go into OBS here and I'm going to put, uh, title recording. We live in the future, people. Uh, I don't know. My Why is it going to put OBS retitle? I don't care about that. I guess we want it to be I don't know. Let's give it a shot. Let's see what it does. So, in order for this to work, we actually have to go add the web socal. So, in fact, if we try to run it, it'll fail. It'll say, "No, you need it." So, brew install web socat. Excuse me. Uh, looks like it's got it. I love web. That's like so cool. And we run now. It'll do it. It's connected. OBS requires off the password files empty. Cool. Let's go add that websocket config OBS websocket password. Uh this is a password that's only available here. I'm not I'm not forwarding the password or anything. So uh you could do that though. You could allow OBS to be controlled on the internet. Uh I don't of course do that. It's really dangerous. But you accomplish the same thing other ways. uh uh with a with an external browser source that you give authentication access to stuff like that. But I'm not going to do that right now. Right now we are going to put the password there. So um yeah, I don't even know what we're going to put there. Let's just put echo pass. Oh, wait. Maker-P config OBS websocket echo pass to config OBS password. Uh, let's try it again. I think it doesn't matter as long as it negotiates. I think I think I have to set that in the websocket setting for OBS. Uh, let's see. OBS requires all password files empty. No, it's not. Oh, I guess it is. Okay. In shel coding issues here at top line line one authentication authent server. I think I have to encrypt the password actually. I think I have to make an assault and everything. Let's see what she says. You can't bit shift in in JQ. Well, that doesn't surprise me. That Pacific counter 64. So, it's just a little number. Replace the two JQ lines with these authenticated identity. Identify unauthenticated. Uh okay. Uh version one, one of the six subscriptions. Okay, so this is this one. And this guy. Oh boy. Yeah, we don't need that. All right. All right. Retail recording. Okay. So, now let's test the recording. God, if this works. I can't believe how fast that was. Uh let's try it. So text message you see something like connected to OBS 445 when the recording stops. We we didn't see a connection. What the hell? Maybe I don't have OBS on. Let me go see if I can turn my websocket on. I Yeah. Okay. So, how do I enable I know it's built in websocket control in OBS? There's I just need some help knowing where to go to do that. Tools, websocket server settings. Okay, let's do that. Um, and we want to set that to is it 4455 all the time. 4455 host of enable authentication enable. Okay. Tools web server setting. So, I'm going to go look at that right now. Tools. I'm sorry. I think my server is just not on right now. 4455 enable authentication. Server password. Uh, can you see that? Assume no, but no, you can't. Okay. Enable websocket server. Enable debug logging system trail alerts. Uh, show connect info. I just want to show the info connection. Yes. Uh, okay. My IP is kind of weird. I wonder if I have to have that specific IP. Uh, ser password. You know what? I I think I might be breaking something else. Yeah, I I think I should generate password. Copy. Wait, I can't I don't know what the password is. Okay. So, click on okay. Uh wait, let me go back. Tools, websocket server settings. Uh yes. All right. So, let me change this. I could probably just turn off authentication because I don't need it. Yeah. Okay. So, it worked. It connected. It got the password. It didn't do that before. So, we're making progress. Now, let's actually try to make a recording. So, let's let's do it how we would do it. Retitle uh retitle um um rocket uh we'll say uh let's I don't know what should we say? Let's get this party started. Oh my god, that's so lame. Cannot find YouTube live cash YT token already. Oh god, here we go. I don't think I have to enter my password. So I don't think it's doxing anything. Art delegation. Yeah, I don't think I'm doxing anything there. O user part equals blah. No, that's fine. Continue. Continue. All right. So, I think let's try that again. It's going to say title's already set. Yeah, I was afraid of that. Uh, so we can do this. Retitle dash. And then I can retitle dash again. And let's get this party started. All right. So, now let's go ahead and make a video. So, I'm going to go go start the saving. You say, "Hey, we're starting a video now." Ready, set, go. What a happy fun video. Okay, now stop. It's recording and let's see what we get. Uh oh. Hey, look at that. Okay, so OBS retitle renamed from this big long ass name to Dash Rocket. Let's get this party started. I don't like the slugification of that name, but it appears to have worked. And we are done. So, now it's just cleaning up to make sure the making and the looking of that uh how that looks and stuff. So, I think we want to make that more of a slug because uh we want to use normal slug translation. Uh, and we want to always assume that there is an emoji in the prompt. So, so I'm going to actually have her change that. Uh, yeah. So, that was way faster than I would have taken me to do it. So, all right. So, um let's make uh the new name uh omit the initial uh emoji text between co colons and then convert the title into a Web save slug. Uh this the slug is I don't know where the term came from. I think it's uh from printing but basically it's you know like when you use WordPress or something in the blog you make a you have a title and it'll create a title that's safe that can be used as a URL. Uh strip leading emoji. Slugify. Slugify is a really really really common thing. Almost everybody's got a slugify. In fact, I think I have one already. Which slogy? Yeah, I've got a slip pie already. I could probably just call that, but this is kind of a standalone thing. I don't want it to have dependencies on other stuff that's not installed. Um, so yeah. Yep. That's pearl even. All right. So, uh, so what does she say? So, she's got this whole thing. Uh, then replace your current file name sanitizer with a simple function. Uh, okay. So, we're going to copy this and put it in OBS retire retitle. There's a bunch of functions here. It can go anywhere really. And then our sanitizer gets replaced with target path for Okay. This is where I wish I could delete a whole function but you cannot. So target path for block uh log to from destination target path for name rename recording. Wait, what did I screw up? Target path. What did I screw up? Rename recording. We got that target connected. Watch. Where's target path for that up here? Yeah. Okay. So, that's going to do the slug. All right. Let's try it again. Connected. Okay. Let's try again. Let's go ahead and make a Hey, Predator. Good to see you. So, we're going to go ahead and do another one. Another quick video. I'm going to go to OBS. I'm going to click uh start recording. Check one, two. This is a recording. Yay. Yay. Yay. Let's go. Stop. All right. Let me go back and look at our output. And we see that it caught the the recorded end of recording notification and it said it changed it to let's get this party started but it didn't make dashes instead of spaces. So we still have a problem there. Uh but we're getting closer. Uh make sure there are no spaces. uh only single hyphens, which is a part of what defines a slug. That's she should have known that, but whatever. Uh here's a corrected here's the corrected slug functions for pleing emoji. We got that. Uh yeah, I think we got that. And Slugify, I think Slugify is the only new one. I think I don't know. Let's see. Slug by slug up. I know. L All right. So, we're going to run that. Let's do another video. Uh, check one, two, check, check, check, check. Uh recording file not found. Check one two. Uh recording file not found. MP4 renamed uh this to this. Let's get this party started. That looks like it was better though. Let's do another one. Hello. Checking 1 2 3 4. Is it going to overwrite this one or are we going to make a new one? Uh, let's get this party started. 01. This is Wait, is that 04? Let's get this party started. Dash2. Interesting. So, it does make a new one. All right, let's see how good the video is. So, uh, yeah, let's do open. I mean, we should probably have like open latest video or something. Open uh, repose GVX. I don't know why this is writing it to I have to fix this. We have to have a better place for this for sure. Let's get this party started. Uh dash2 MP4. And why does it keep open? Oh, I know why. That's a bug. Yeah, there we go. So, play. >> Hello. Checking one, two, three, four. Is it going to overwrite this one or are we going to make a new one? All right, I think we are done. We are ready for tomorrow. I mean, other than getting the the syllabus up there. So, we can now make you know things really class. So, let's say I was doing that. Now, after I'm done with that, I can do retitle dash to go back to our prepping for beginner boost title and have people see what is up. So, if I go refresh and now it'll change back to prep protect beginner boost. So, that's quite a bit of coding we did today. uh just in time for me to run out of of battery on my on my thing. But we have got all the code necessary for me to actually uh do this and get it, you know, get it going. So, uh that's kind of nice because uh tomorrow I don't want to have to think about any of this. I'll just be able to like make videos and just go. I'm kind of like sick and kind of talked out today. So, I'm going to go ahead and commit all this code and uh call that a day. Get add um let's see get commit. I cannot believe we were able to add that OBS retitle recording in under five minutes. At least 10 minutes. I mean, that's insane. you know, add uh OBS retitle recording automation uh get push. All right. So, I'm going to go ahead and clear the screen, put some fishies up, and call it a day. Uh we can go raid. Is is anybody on that we need to check with? Uh, I was going to make a a new virtual machine that's using Windows, but I'll do that tomorrow. I'm gonna go relax and go to bed and have a nap. I will be up to on tonight later. Uh, probably doing more actual content, probably converting the the video uh, you know, outline to the boost container and testing the container on Windows, which we don't really don't need to do now that somebody's actually found out that that's not an issue. So, but that's going to be the way to go. Thanks everybody. And uh let's help me find somebody to raid if you would like. If you if you have a person to raid, please let me know. Uh let's let's search for same category. Uh who's this? uh German doing tech and networking. When will the moose be? Hi, I am on tomorrow at 2 2 pm Eastern. We're going to kick it off. But don't worry because there'll be lots of videos. You can go back and just watch them. Uh so that's where you want to come check that out. Sleepless in code. Do AIS dream? Lol. I don't see anybody to raid. Is hat tennis is not on. Who else is on? Is anybody on? Sorry. Oh, S4 is on. >> Random thing. >> No, I got grabbed. Oh god, [ __ ] gamers. Annoying as hell, man. >> Can you also make a tiny video of testing us to help you with? Yeah, I'll be doing that tomorrow. Yeah, we're gonna we're gonna do a lot. I'll do that some of that tonight, too. I'm actually going to do an introduction video tonight as well and something. Uh yeah. Anyway, yeah, this this just depresses me. Twitch depresses me. Show more. Anita is on. She's cool. There's nobody. Nobody's on. There's no No. Just Jane. Who's she? I don't know who that is. Oh, she's writing code. >> Catching bullets. Dang, you're on a warm streak today, Commander. >> Next YouTuber spicy. >> She said you're on a warm streak. >> Hey, look. A transparent background. I wonder if that's ever been done before. Um, what's your C++ Actually, I think hard to tell. Um, I'm just going to leave guys. Bye.

Video description

Preparing content for Beginner Boost focused on getting a Tech Career. #techjobs #livestream #coworking

© 2026 GrayBeam Technology Privacy v0.1.0 · ac93850 · 2026-04-03 22:43 UTC