am I becoming a real Game Dev?
- Views
- 66K
- 66,006
- Outlier
- ×0.3
- Median 243K
- Length
- 13:03
- Published
- Aug 6
- Thursday
- Comments
- 220
- 2.4K likes
Script
How it's written
- Words
- 2,881
- Words a minute
- 221
- Reading time
- 13 min
- Segments
- 9
The hook
0:00–0:26All right, so it's been a couple weeks since I've given you a little bit of a game update in what we've been doing here. So, yes, more Doria is looking better. Yes, I haven't tried to do any sort of polish, but I've created some new things that I think are pretty dang cool. So, what I'm going to do is I'm just going to throw these two right here. I'm going to end this turn so we can get to the cool stuff. All right, kill these stupid bats really, really quickly. Get the hell out of here, stupid bats. You're so stupid. Uh we now have a tar tower. A tar tower actually will slow down the enemies, just like
Structure
All right, so it's been a couple weeks since I've given you a little bit of a game update in what we've been doing here. So, yes, more Doria is looking better. Yes, I haven't tried to do any sort of polish, but I've created some new things that I think are pretty dang cool. So, what I'm going to do is I'm just going to throw these two right here. I'm going to end this turn so we can get to the cool stuff. All right, kill these stupid bats really, really quickly. Get the hell out of here, stupid bats. You're so stupid. Uh we now have a tar tower. A tar tower actually will slow down the enemies, just like what I always wanted. There we go, we have a nice little slow motion right there. We also have the lonely tower. So, that means if I have a tower that's not within range of other towers, its damage will double, right? We have a whole bunch of these fun things, these enhancements, all right, these things now work. This thing now adds more damage to this. It's doing nine versus this one's only doing seven. You can see the difference. I can end my turn. We'll do all this. But the up little upgrade, that upgrade menu's not the way I want, but whatever, there we go. Uh we have a couple of these really slow guys, but hopefully we can just destroy them really quickly. There we go, and they're dead. But now we have something different. We also have a poison card. I can apply poison over time, such that every time I shoot an enemy, it starts stacking up poison. It starts being able to Look, you can even see the little green the little green threes popping up for a second. That's because we're actually getting at that. Don't worry about that guy. That guy's not He's not working yet, okay? He's a little bit broken, all right. So, now that you see that, you see how the game works. We've made some progress, right? We've added some towers. We've done all that. But I'm getting to the point in the game where it's actually getting difficult to test. You know what I mean? And you know, remember how last time I said, "Oh, I'm just going to make a bunch of these snapshots, and the snapshots are
Watch from 0:00going to be awesome, and everything's going to be fantastic." No, they were not fantastic. I found them to be difficult and cumbersome to work with. And then I started just having these really annoying issues where something running in a specific VM would produce slightly different pixels than running in a different VM, and I just had to kind of chase down all these dumb little bugs that existed. So, I sat there and I thought, there has to be a better way to do this, right? There has to be a way to play this game in which is not super duper annoying. Like I want this thing to be able to run a whole bunch and be able to kind of do a bit of almost like fuzzing in the game and actually see what happens, right? And then I had this idea. Well, what if instead of rendering the game, right? Like we do everything the same. What happened if I allow some JSON output? Okay, you can see right here, type ready, value true. It is now ready. If I were to do some basic querying via JSON, it would also respond out with JSON. I can say, "Hey, what are you currently displaying?" And he'll give me the full tree of the UI. I can say, "Hey, what are my current game stats?" He'll give me game stats. I can say, "Hey, move the mouse to here." And it'll move the mouse to there over the time I say. I can even say, "Hey, press the mouse down." I When it's pressed down, I can say, "Hey, move it here." So, I've built effectively a way to control everything via JSON. Now, you're probably thinking, "How is that useful?"
Watch from 1:30Well, then I had this other idea. I call this project Phazor, okay? I don't ask me why I called Phazor. It actually has no real Yeah, I should've called it something different. And what I can do is since Mordoria now runs via this JSON thing, what I can actually do is launch it via FIFO. It's the ability to read and write to its input in like a like with via a separate file descriptor. And so, that allows me to be able to interact with it. And then if I build a server around that, theoretically, I could launch several versions of Mordoria, right? At the exact same time. So, I could run 10 Mordorias at once. Now, you're thinking, "Why would you want to run 10 Mordorias at once?" Okay, well, look at this. I'm running 10 Mordorias right now. What I'm going to do is I'm going to run a client, and it's going to run with Grok 4.5 fast extra high, and I give it an ID. It doesn't really matter. It honestly it doesn't even need an ID. Go run. And what this is going to do is it's going to launch my game. You can see right away, I'm in the title screen. Okay, so it's in the title screen. Now, Grok is going to play the game. I give it a basic set of information about how the game works. Look at that, it's already in character selection. It's figured out how to press the play button. It actually moves the mouse, presses the play. I gave it a bunch of cool ways to be able to interact with the game. Boom, we are now in the game.
Watch from 2:49I created a persona called the gambler. He just wants high damage, okay? He sacrifices everything for high damage. That's it. And it's actually worked. The gambler was able to get up to like 60 damage, I think or 66 damage as the big swing. I'm like actually pretty stoked about this. Now here here's the fun part is that this is pretty neat, right? Like this is okay. Can we all say okay, this was pretty nice. But here, let me cancel that for a quick second and let me go back to the game, okay? What I'm going to do is on game mode game mode on enter, I'm going to do something really silly, okay? I'm going to jump in here and I'm going to go like this. Assert false, I hate you. Oh my gosh, what a mean assert, huh? Am I right, boys? This assert's just the worst thing in the universe. Now I'm going to rerun this again and when we get to that point the game should assert, right? Well, while we're waiting for that to assert, I'm just going to jump back over here into this nice little Mordoria game I have on on linear. And I'm going to say this. I'm going to search for hate. Now you'll notice there's no issues for hate. Am I right, boys? Like why would there be What What Who would Who would create an issue with the word hate in it? Though, that's a pretty cool tower or card name. I should have something called hate. We're into the character selection and now we should get to the game. The game should theoretically be asserting right now. You know, there's this funny thing that I forget to do every now and then, which is one of my requirements requires me to do an Odin build dot. Okay, there we go. It requires a fresh build. It doesn't build itself. I build and point
Watch from 4:08towards where the binary is. That way I can kind of control what's happening. I don't want it to auto build. I I want it to be like a build I specifically point to because you know I can say okay hey this build is the one I'm testing against. I'm making changes to this other one. You can imagine why that's good. Now this should assert, right? This should assert any moment we're on character selection. I'm getting a little bit scared. It's kind of like a jack-in-the-box. Like oh my gosh, when is it going to assert? When is it going to assert? Please don't Please don't hurt me. Please don't hurt ME. OH MY GOSH, WHAT IS GOING TO HAPPEN? IS IT GOING TO NO! OKAY, there we go. So we have asserted. You can see Mordoria assertion right here. Run-time assertion I hate you. And you can see we're just sitting here. So why are we sitting here? Well, now what I'm doing is I'm actually taking the stack trace and I'm telling linear, "Hey, go and see do we have any tasks that look like this? If not, I want you to file one." And after that, I can go like this. Bun run. I can do another one. Let's Let's just run another one right now, right? We're just running it right now. It's going to run into the exact same assertion, right? Right? Yes. Yes, it will. Now there's no issue yet. It takes a little bit. Okay, hey, come on. This is MCP. Hey, this is future technology. Am I Am I right, boys? I mean this is future this is future technology. I didn't realize it actually took this long. I Oh my gosh, we're actually going to Oh my gosh. Okay, here I'm just going to I'm going to brothers, I'm going to cancel that. Oh, actually look at that.
Watch from 5:39Cause leftover assertion I hate you in game mode enter. You can see that right there. I jump over here. Look at that. Issue filed right there. Fantastic. If I go and I attempt to run another one right now, if it makes it to that point, it's going to go and search and say, "Hey, I don't need to create an issue. There's already an issue." No need to do that for you. And so what this means is that I can actually ensure that I'm setting good asserts throughout my program, making sure I'm not doing anything that is going to be like naughty or incorrect and or like causes game state that should never actually happen. And then I can just keep playing this game over and over, and anytime I have a crash, I can take the stack trace that is provided. Right now, I just did a a production build, so or a a non-debug build. So, it's not giving me all the goods. But, you can imagine if I do a debug builds, I will always get full stack traces. These will always be pushed up into Linear. When they're in Linear, everything will be fantastically organized. And then from there, I could actually even have something that monitors Linear. I haven't set this part up. And that when it sees this specific type of bug that's also marked with urgent, maybe I can come up with a label that's like, you know, robo reported. And if it sees a robo reported, it could then also just create a PR for me. So, I can come back and go, "Oh, hey, look at this. I went to bed. It played 500 games last night while I slept, and I woke up to two little bugs. Okay, hey."
Watch from 7:03That's pretty awesome. And you can see right here, already filed, Mordoria 478, urgent bug on Mordoria, the I hate you assertion runtime. Boom. Anyways, I wanted to give you this update because I've been really struggling with how am I going to test this game? Like, how am I going to really test this game? Cuz as you start making these little changes, like weird things are just going to happen. And some of it I'm not going to be able to figure out, right? Like, some of it is going to be a problem. Some of it is going to end up being this weird situation where I'm just going to actually have to go in and really start kind of hunting things down. But, some of it's going to be really, really obvious. Like, I do have this one bug right now, which I'm going to go and add an assert for, where when a projectile starts flying towards an enemy, if the enemy dies and the projectile is still flying at the enemy, okay, why hey, yo, what is this? Why is there a cat running across here? What are you doing, buddy? Anyways, get off here. Get out of here. Anyway, so if a projectile has an enemy die, it just freezes. It doesn't take itself out of the game, and doesn't do anything like that. So, I should add an assert. Hey, projectile, if you're updating and I'm I'm looking at you, and your enemy's dead, and you're not dead, assert, right? Like I should assert at that point. This should be a case I already handle. Then I could have the full cycle of like, "Hey, I ran into this issue. Go file it on linear." Oh, linear will capture it. Hey, go fix it on GitHub. I can wake up and go look at that issue. It's right there. I'm going to go fix it. I've also added one other thing. I've added this idea of prime uh
Watch from 8:29prime agent review. So, whenever I'm doing something, if I want to like make some sort of small change, I can jump in here, and I can say, "Hey, go to this GitHub URL. Go make a review. Here's a bunch of context. I want you to give a review for this PR." And I've already caught uh one bug. I actually messed up a merge, and the merge took out something that should not have happened. And this this little uh little tool caught it. I was really happy about that. Being able to kick off reviews straight from the command line feels pretty good. I also actually built one more that I thought was really uh fun to do. Uh whoopsies, a hash r. This one's not there. Prime agent. What it is is it's called uh takeover. There we go. So, what takeover does is that it actually like I will get a change say 60% of the way through, and then I'll just go, "Hey, go finish this change for me. I'm going to work on something else." And it will create a cloud agent run up on the cloud, and when the cloud agent's done, I can go, "Okay, hey, kick off a review. Go go make sure that that thing like catch any bugs that I haven't caught." And then I can come back, and then I can review the last 40% of the code. I'm actually kind of stoked about this little fun little idea of being able to kind of mix this programming the way I really like to do cuz I want to look at the lines, baby, okay? I want to read the code. I want to make this game the way I want to make it, but also I want to be able to take advantage of cool technology. So, I'm actually pretty stoked. Overall, very happy about everything. I hope you enjoyed this video. Hope you got inspired. Hope you're excited like I'm excited, okay? I hope you also like the fact that this video contained like three cuts total, and that's because I got distracted for a moment over
Watch from 10:01something dumb, okay? I got distracted by a a loading spinner. The name is the Primagen. Look at all these engineers sitting at their neat little desks. It takes dirty work to keep a code base clean. Everyday sickos are out there committing unreviewed code, and when that happens, linters won't save you. You need someone like me. Freeze, you freeze, scumbag. Who you calling scumbag? What's this slop you're trying to push? Unnecessary comments? Global state? Nested turnaries? Uh, my bad. I didn't even read the code yet. You disgust me. Step away from the keyboard. me explain. Is that a mouse? HE'S MERGING TO PROD. YOU HAVE THE RIGHT TO REMAIN SILENT. Anything you push to GitHub can and will be used against you. You have the right to a debugger, but if you cannot afford one, a public stack trace will be made available to you. And one more code criminal off the streets and where they belong. HR. Look, I didn't I know I didn't review any of the code, but I was going to have Code Rabbit review it from the start. With one-click fixes and style enforcement, I don't need Merge Cop. I would never merge unreviewed code, but a first pass with Code Rabbit always makes things go faster. Actually, you can try it, too, at coderabbit.ai. Next week on Merge Cop. The diffeler's out there, and I'm going to be the one to deprecate him.
Watch from 11:31Full transcript
- 0:00
All right, so it's been a couple weeks since I've given you a little bit of a game update in what we've been doing here. So, yes, more Doria is looking better. Yes, I haven't tried to do any sort of polish, but I've created some new things that I think are pretty dang cool. So, what I'm going to do is I'm just going to throw these two right here. I'm going to end this turn so we can get to the cool stuff. All right, kill these stupid bats really, really quickly. Get the hell out of here, stupid bats. You're so stupid. Uh we now
- 0:21
have a tar tower. A tar tower actually will slow down the enemies, just like what I always wanted. There we go, we have a nice little slow motion right there. We also have the lonely tower. So, that means if I have a tower that's not within range of other towers, its damage will double, right? We have a whole bunch of these fun things, these enhancements, all right, these things now work. This thing now adds more damage to this. It's doing nine versus
- 0:42
this one's only doing seven. You can see the difference. I can end my turn. We'll do all this. But the up little upgrade, that upgrade menu's not the way I want, but whatever, there we go. Uh we have a couple of these really slow guys, but hopefully we can just destroy them really quickly. There we go, and they're dead. But now we have something different. We also have a poison card. I can apply poison over time, such that
- 1:02
every time I shoot an enemy, it starts stacking up poison. It starts being able to Look, you can even see the little green the little green threes popping up for a second. That's because we're actually getting at that. Don't worry about that guy. That guy's not He's not working yet, okay? He's a little bit broken, all right. So, now that you see that, you see how the game works. We've made some progress, right? We've added some towers. We've done all that. But I'm getting to the point in the game
- 1:23
where it's actually getting difficult to test. You know what I mean? And you know, remember how last time I said, "Oh, I'm just going to make a bunch of these snapshots, and the snapshots are going to be awesome, and everything's going to be fantastic." No, they were not fantastic. I found them to be difficult and cumbersome to work with. And then I started just having these really annoying issues where something running in a specific VM would produce slightly different pixels than running in a
- 1:44
different VM, and I just had to kind of chase down all these dumb little bugs that existed. So, I sat there and I thought, there has to be a better way to do this, right? There has to be a way to play this game in which is not super duper annoying. Like I want this thing to be able to run a whole bunch and be able to kind of do a bit of almost like fuzzing in the game and actually see
- 2:06
what happens, right? And then I had this idea. Well, what if instead of rendering the game, right? Like we do everything the same. What happened if I allow some JSON output? Okay, you can see right here, type ready, value true. It is now ready. If I were to do some basic querying via JSON, it would also respond out with JSON. I can say, "Hey, what are
- 2:27
you currently displaying?" And he'll give me the full tree of the UI. I can say, "Hey, what are my current game stats?" He'll give me game stats. I can say, "Hey, move the mouse to here." And it'll move the mouse to there over the time I say. I can even say, "Hey, press the mouse down." I When it's pressed down, I can say, "Hey, move it here." So, I've built effectively a way to control everything via JSON. Now, you're probably thinking, "How is that useful?"
- 2:49
Well, then I had this other idea. I call this project Phazor, okay? I don't ask me why I called Phazor. It actually has no real Yeah, I should've called it something different. And what I can do is since Mordoria now runs via this JSON thing, what I can actually do is launch it via FIFO. It's the ability to read and write to its input in like a
- 3:10
like with via a separate file descriptor. And so, that allows me to be able to interact with it. And then if I build a server around that, theoretically, I could launch several versions of Mordoria, right? At the exact same time. So, I could run 10 Mordorias at once. Now, you're thinking, "Why would you want to run 10 Mordorias at once?" Okay, well, look at this. I'm running 10 Mordorias
- 3:32
right now. What I'm going to do is I'm going to run a client, and it's going to run with Grok 4.5 fast extra high, and I give it an ID. It doesn't really matter. It honestly it doesn't even need an ID. Go run. And what this is going to do is it's going to launch my game. You can see right away, I'm in the title screen. Okay, so it's in the title screen. Now, Grok is going to play the game. I give
- 3:54
it a basic set of information about how the game works. Look at that, it's already in character selection. It's figured out how to press the play button. It actually moves the mouse, presses the play. I gave it a bunch of cool ways to be able to interact with the game. Boom, we are now in the game. I created a persona called the gambler. He just wants high damage, okay? He sacrifices everything for high damage.
- 4:14
That's it. And it's actually worked. The gambler was able to get up to like 60 damage, I think or 66 damage as the big swing. I'm like actually pretty stoked about this. Now here here's the fun part is that this is pretty neat, right? Like this is okay. Can we all say okay, this was pretty nice. But here, let me cancel that for a quick second and let me go back to the game, okay? What I'm going
- 4:36
to do is on game mode game mode on enter, I'm going to do something really silly, okay? I'm going to jump in here and I'm going to go like this. Assert false, I hate you. Oh my gosh, what a mean assert, huh? Am I right, boys? This assert's just the worst thing in the universe. Now I'm going to rerun this again and when we get to that point the
- 4:56
game should assert, right? Well, while we're waiting for that to assert, I'm just going to jump back over here into this nice little Mordoria game I have on on linear. And I'm going to say this. I'm going to search for hate. Now you'll notice there's no issues for hate. Am I right, boys? Like why would there be What What Who would Who would create an issue with the word hate in it? Though,
- 5:17
that's a pretty cool tower or card name. I should have something called hate. We're into the character selection and now we should get to the game. The game should theoretically be asserting right now. You know, there's this funny thing that I forget to do every now and then, which is one of my requirements requires me to do an Odin build dot. Okay, there we go. It requires a fresh build. It doesn't build itself. I build and point
- 5:39
towards where the binary is. That way I can kind of control what's happening. I don't want it to auto build. I I want it to be like a build I specifically point to because you know I can say okay hey this build is the one I'm testing against. I'm making changes to this other one. You can imagine why that's good. Now this should assert, right? This should assert any moment we're on character selection. I'm getting a little bit scared. It's kind of like a
- 6:00
jack-in-the-box. Like oh my gosh, when is it going to assert? When is it going to assert? Please don't Please don't hurt me. Please don't hurt ME. OH MY GOSH, WHAT IS GOING TO HAPPEN? IS IT GOING TO NO! OKAY, there we go. So we have asserted. You can see Mordoria assertion right here. Run-time assertion I hate you. And you can see we're just sitting here. So why are we sitting here? Well,
- 6:20
now what I'm doing is I'm actually taking the stack trace and I'm telling linear, "Hey, go and see do we have any tasks that look like this? If not, I want you to file one." And after that, I can go like this. Bun run. I can do another one. Let's Let's just run another one right now, right? We're just running it right now. It's going to run into the exact same assertion, right?
- 6:41
Right? Yes. Yes, it will. Now there's no issue yet. It takes a little bit. Okay, hey, come on. This is MCP. Hey, this is future technology. Am I Am I right, boys? I mean this is future this is future technology. I didn't realize it actually took this long. I Oh my gosh, we're actually going to Oh my gosh. Okay, here I'm just going to I'm going to brothers, I'm going to cancel that. Oh,
- 7:02
actually look at that. Cause leftover assertion I hate you in game mode enter. You can see that right there. I jump over here. Look at that. Issue filed right there. Fantastic. If I go and I attempt to run another one right now, if it makes it to that point, it's going to go and search and say, "Hey, I don't need to create an issue. There's already an issue."
- 7:24
No need to do that for you. And so what this means is that I can actually ensure that I'm setting good asserts throughout my program, making sure I'm not doing anything that is going to be like naughty or incorrect and or like causes game state that should never actually happen. And then I can just keep playing this game over and over, and anytime I have a crash, I can take the stack trace
- 7:47
that is provided. Right now, I just did a a production build, so or a a non-debug build. So, it's not giving me all the goods. But, you can imagine if I do a debug builds, I will always get full stack traces. These will always be pushed up into Linear. When they're in Linear, everything will be fantastically organized. And then from there, I could actually even have something that monitors Linear. I haven't set this part up. And that when it sees this specific
- 8:09
type of bug that's also marked with urgent, maybe I can come up with a label that's like, you know, robo reported. And if it sees a robo reported, it could then also just create a PR for me. So, I can come back and go, "Oh, hey, look at this. I went to bed. It played 500 games last night while I slept, and I woke up to two little bugs. Okay, hey."
- 8:29
That's pretty awesome. And you can see right here, already filed, Mordoria 478, urgent bug on Mordoria, the I hate you assertion runtime. Boom. Anyways, I wanted to give you this update because I've been really struggling with how am I going to test this game? Like, how am I going to really test this game? Cuz as you start making these little changes, like weird things are just going to
- 8:49
happen. And some of it I'm not going to be able to figure out, right? Like, some of it is going to be a problem. Some of it is going to end up being this weird situation where I'm just going to actually have to go in and really start kind of hunting things down. But, some of it's going to be really, really obvious. Like, I do have this one bug right now, which I'm going to go and add an assert for, where when a projectile
- 9:11
starts flying towards an enemy, if the enemy dies and the projectile is still flying at the enemy, okay, why hey, yo, what is this? Why is there a cat running across here? What are you doing, buddy? Anyways, get off here. Get out of here. Anyway, so if a projectile has an enemy die, it just freezes. It doesn't take itself out of
- 9:31
the game, and doesn't do anything like that. So, I should add an assert. Hey, projectile, if you're updating and I'm I'm looking at you, and your enemy's dead, and you're not dead, assert, right? Like I should assert at that point. This should be a case I already handle. Then I could have the full cycle of like, "Hey, I ran into this issue. Go file it on linear." Oh,
- 9:52
linear will capture it. Hey, go fix it on GitHub. I can wake up and go look at that issue. It's right there. I'm going to go fix it. I've also added one other thing. I've added this idea of prime uh prime agent review. So, whenever I'm doing something, if I want to like make some sort of small change, I can jump in here, and I can say, "Hey, go to this GitHub URL. Go make a review. Here's a bunch of context. I want you to give a
- 10:14
review for this PR." And I've already caught uh one bug. I actually messed up a merge, and the merge took out something that should not have happened. And this this little uh little tool caught it. I was really happy about that. Being able to kick off reviews straight from the command line feels pretty good. I also actually built one more that I thought was really uh fun to do. Uh whoopsies, a hash r. This one's not there. Prime
- 10:36
agent. What it is is it's called uh takeover. There we go. So, what takeover does is that it actually like I will get a change say 60% of the way through, and then I'll just go, "Hey, go finish this change for me. I'm going to work on something else." And it will create a cloud agent run up on the cloud, and when the cloud agent's done, I can go, "Okay, hey, kick off a review. Go go make sure that that thing like catch any
- 10:56
bugs that I haven't caught." And then I can come back, and then I can review the last 40% of the code. I'm actually kind of stoked about this little fun little idea of being able to kind of mix this programming the way I really like to do cuz I want to look at the lines, baby, okay? I want to read the code. I want to make this game the way I want to make it, but also I want to be able to take advantage of cool technology. So, I'm actually pretty stoked. Overall,
- 11:18
very happy about everything. I hope you enjoyed this video. Hope you got inspired. Hope you're excited like I'm excited, okay? I hope you also like the fact that this video contained like three cuts total, and that's because I got distracted for a moment over something dumb, okay? I got distracted by a a loading spinner. The name is the Primagen.
- 11:38
Look at all these engineers sitting at their neat little desks. It takes dirty work to keep a code base clean. Everyday sickos are out there committing unreviewed code, and when that happens, linters won't save you. You need someone like me. Freeze, you freeze, scumbag.
- 11:58
Who you calling scumbag? What's this slop you're trying to push? Unnecessary comments? Global state? Nested turnaries? Uh, my bad. I didn't even read the code yet. You disgust me. Step away from the keyboard. me explain. Is that a mouse? HE'S MERGING TO PROD. YOU HAVE THE RIGHT TO REMAIN SILENT. Anything you push to GitHub can and will be used against you. You have the right
- 12:19
to a debugger, but if you cannot afford one, a public stack trace will be made available to you. And one more code criminal off the streets and where they belong. HR. Look, I didn't I know I didn't review any of the code, but I was going to have Code Rabbit review it from the start. With one-click
- 12:40
fixes and style enforcement, I don't need Merge Cop. I would never merge unreviewed code, but a first pass with Code Rabbit always makes things go faster. Actually, you can try it, too, at coderabbit.ai. Next week on Merge Cop. The diffeler's out there, and I'm going to be the one to deprecate him.
Description
SponsorDon’t let bad code get merged without reviewing (hopefully not by merge cop!). Check out Code Rabbit at https://trm.sh/coderabbit
/ theprimeagen - I Stream on Twitch
/ terminaldotshop - Want to order coffee over SSH?
ssh terminal.shop
Great News? Want me to research and create video????: / theprimeagen
#theprimeagen #programming #computerscience #ai #chatgippty #terminaldotshop




