 Hello, everyone. My name is John Hammond, and I'm showcasing more of the introduction to Linux class content that I had created two years ago for a class that I taught at my old school. So the training wheel shell is by far the best kind of flagship product that comes with the class and the code in the content that I had produced at this time. Training wheel shell is a kind of wrapper for the command line that is supposed to essentially hold your hand. It's meant to be kind of an interactive textbook that talks to you and walks you through doing things in the command line. So you kind of learn with essentially a voice in your head or a teacher that doesn't have to stand in front of you or over your shoulder or be a real nag to try and talk to you. It's like it's a part of a game. Like it's a gamified activity to learn and be doing hands-on technical on the keyboard stuff. So I have to put a disclaimer here because I wrote this, right? And it may not be good, right? I have to say I'm a kid. I'm a guy. I'm a dude. And I just wrote this because I think it's cool and I got it to work and it's neat. It may not be incredible, elegant, beautiful, gorgeous code. I don't know. I'm not the judge. I wrote this for a class that I got to teach while I was a student in school. And that may be indicative of some things, but I can't say for sure. I don't know. It may be indicative that cool. I am good and I do good things. Or it may be indicative of the school and that if they're really trusting someone like this to do this, maybe it's not... Maybe that's bad and maybe that's not good. I can't say. I'm not in a place where I can. I just want to show it to you and you can form your own opinion whether or not this is quality or not. I'm happy to hear good stuff. I'm also happy to hear bad stuff. That's what I want to hear. I want to get better. So please read things. Take it with a grain of salt. Look through it if you really want to. But I'm going to start to show you a little bit of how this thing works under the hood. So training wheels, right? It is a Python program that will walk you through using the command line. It's nice for me to show it to you just like this, but I'd rather us do it for real. So let's do that because we have the repository downloaded and I can jump over to my command line. Okay. So out of the final guide directory, it's in the training wheels directory. And you should be able to just dot slash training wheels. It requires Colorama, just another Python module to do colorful text things. And it clears the screen that says, okay, cool. This tool developed by me. Just a disclaimer because I would like that to be known. And it lets you just jump in requesting a lesson. I didn't particularly like to have to explain this to everyone, although I would hope it's a little bit self-explanatory. Enter the number one and you get to the start. And then it will showcase the lessons or the things that you can actually, you'll work through. And again, enter just number one to start. That's something that you probably just have to say allowed in class so your students will actually get started. But then it will start to talk to you. It will start to try and hold your hand as if there's a voice coming out of the computer. Maybe it's me, but I don't have to stand over a student's shoulder. I don't have to be holding their hand and instead they can be on their own doing their own thought and doing their own thinking and doing their own curiosity. A little bit of reading, but hopefully that would come in bite-sized stuff. And maybe they'll learn things by experimenting and poking around. And hopefully the training wheels will try and course correct. It'll try and guide you to the correct thing, but it's not perfect. I have to say that over and over and over again. It might suck sometimes. Disclaimer. All right, so the prompt here is, hey, this is a shell, right? This is the command line. This is the console. This is the terminal. Do you understand that? And I would hope maybe some person would just be like, oh, yes. I hit enter and they type yes. So all of a sudden you get this crazy stuff. You entered a special command. It's fun. It's crazy. It's cool. Press Control C to stop it. They learn that and they see like, whoa, that was crazy. Did you see what happened? And it's hopefully a little interesting, a little fun. That's the idea, a little activity. And it explains that, okay, here are the three streams that you're going to see. Center output, centered input, centered error. Does that all make sense to you? You try this again. Yes. And now you've learned. Now you've reinforced in your mind that Control C, that will stop a program. That will break out of running a program. Things that someone's got to learn the first time they've ever seen a command line. Maybe they've never seen Linux before. And then if you enter command that doesn't exist, like, no, the shell will tell you. Bash will tell you. It'll get, you know, the error message you see, don't just ignore that. You should read it. You should read error messages that are piped to the standard error stream, et cetera. And then it goes into how to learn and how to play with some of the other streams, like standard output, just using echo, right? But that's not that fun, because maybe echo doesn't do anything. So what if we have to explain the idea of a command and an argument, like parameters that you give to programs that you run on the shell, on the console, on the command line? So that tries to explain the difference. What is a command versus what is an argument? How come these things are just have spaces in between them? These don't, these aren't normal words. Usually it's weird. But again, hopefully the training wheels will talk to you. And it's a little bit interesting. Maybe that's fun. Maybe that's a good way for students to learn. Control C to break out, and they learn. And then they move on to other lessons. And you saw that listing at the very, very start of the program that would it give you a notification as to what are the lessons that you are currently on, where did you leave off, et cetera. So I just broke out of the program right now. If I go back to training wheels, it will say, okay, a lesson hasn't been loaded. Maybe it didn't, it wasn't able to write anything for me. There is a save mechanism that will keep in mind where I left off. And it just stores a temporary file that will be, okay, say, here's where you work. Do you want to go back to where you were? Do you want to go back to what you were doing? And that will let you keep working through these as if it's a textbook that you can play with and interact with. So I want to talk about that a little bit more. I want to explain the source code. I want to say how it's built. I want to talk about why it's built this way. And I'm going to get into that in the next video. But for now, I hope you got a little bit of your feet wet. I hope you got what your appetite or something is to, okay, what is this training wheel shell? Is it actually worthwhile? Is it cool? Is it good for me? I don't know. And I'll get into more and more of this discussion and conversation in the later video where I'll review a lot of the source code and explain how a lot of it works. Again, I won't be writing any code in the series, but I will be talking and discussing it and reviewing it. So you'll still get to see syntax. You'll still get to see semantics. Hopefully that's a little bit interesting and hopefully you're still sticking with me. Maybe we'll talk about some cool techniques. Please feel free to ask. Please feel free to talk. Please feel free to use the comment section and let me know what you would like to see or if you don't want to see any of this crap. I don't know. Great. Thank you guys for watching. I'll see you in a later video. But before I go, I want to support my... I want to live some love to my own supporters. So special shout-out to Spencer Clark, Galhauerwitz, Suzuki Attila, Orgeloth, the Unruly, the Dior of Worlds, Bachelors of Terror, Jan Grob, Timothy County, Jacob H. If I butchered some of your guys' names, I'm sorry. Please forgive me. I'm sorry. I just hope that having your name here makes it a little bit better. I don't know. I'm sorry, guys. Hey, thank you. I can't say it enough. That's why I include this at the end of every video. I am just really, really grateful that you're willing to help and support me because it gives me motivation to keep making these videos. Gives me the energy and enthusiasm to keep making cool things. If you'd like to support me, $1 on Patreon will give you this little shout-out at the end of every video. $5 or more from Patreon every month will give you early access to some of my videos because I like to record in bulk or in mass and I'll release them on YouTube gradually or schedule the releases maybe every day or every other day. So if you don't want to wait, if you want the content right now when it's ready, that early access will let you do that. Again, guys, thank you. If you'd like to like the video, please do. Maybe leave me a comment. Let me know what you think, what else you'd like to see, what you want to know more about. If you're willing to subscribe and if you really want to support me, check me out on Patreon. See you soon.