 We're on, man. We're on. Yeah! Hello, everybody, and welcome to Hacker Tools. Let's start off by introducing all the instructors. So my name is Nish. I'm John. And I'm Jose. So we'll start off with a brief introduction about the course and then dive into the content. So the course website is at hacker-tools.thecal.io. There's a bunch of useful content there, so make sure you have that. Now, as the website says, this class is about hacker tools and not hacker tools if you go to the course overview page. There's some useful links there. Hacker tools, not hacker tools. So what exactly do I mean by this? Well, unfortunately the word hacker has two kind of common definitions. One definition is like a program where somebody's really asked about making the most of their software and writing cool programs, making computers do interesting things. That's the definition of hacker that originated at MIT. If you click on that first link there, it'll take you to a Wikipedia page that'll tell you a little bit more about the history of the term. And if you're curious at all, I recommend reading that. History of MIT, so it's kind of cool. The other type of hacker is the security hacker, someone who breaks into networks or reverse engineer software or things like that. So this class is about the first type of hacker, not the second type of hacker. And to avoid any ambiguity, we'll use hacker to describe a programmer and cracker to describe somebody who does security things. Okay, so hopefully all of you are here to learn about programming and programming tools and not about very specific security related things. Although we will cover a little bit of that too. Much less so than the other part. Yeah, security is covered in the last half of the last lecture, so not the focus of this class. And yeah, so just to tell you a little bit more about the motivation behind this class, I saw myself tea at a bunch of classes here before, and one thing we've noticed is that MIT classes do a great job of teaching you computer science theory. They do a great job of teaching you even how to code. They get to write a lot of programs for a lot of the classes you take here. But one thing the classes don't do is they don't teach you how to make the most of the tools you need in order to program efficiently or debug your code efficiently or things like that. We just thought of something that's missing from the curriculum here. And in our own personal experiences, we've found that it's super beneficial to be proficient at these tools. Any time you invest in becoming better at these tools will pay off even during the course of your undergrad or probably just in the next couple of months. And so yeah, that's why we're teaching this class. We're going to teach you about new tools. We're going to teach you about how to make the most of your tools. We'll tell you how to customize your tools to your workflow and how to extend your tools with plugins or even modify your tools yourself. Just a little bit of administrative here about the class structure. So we're going to have six lectures. There's a lecture schedule, subject to change. Also if anybody has strong opinions about specific things you want to learn, feel free to let us know and we are happy to add more content to our course. And then we will structure classes. We have two hour-long blocks. They'll be split into two 50-minute lectures with a 10-minute break in between. So pretty standard thing right there. And if lectures go short, we'll stick around afterwards and kind of have office hours where we can walk around and help you guys get set up with tools and things like that. Unfortunately, two hours times six classes is not really enough to teach you about all the tools we want to teach you. So this class is almost more about showing you what kind of things are possible to inspire you to learn more about this tool. And we'll try to show you a bunch of cool things and give you resources so you can learn more about this stuff on your own. And for all the different modules, we're also going to have exercises for you to go through. So if you look at the virtual machines and containers we'll go from today, for example. We've listed some exercises for you to do related to virtual machines and listed down some exercises for you to do related to containers. So if you want to get anything out of this course you really should go through those exercises. And even beyond that, just take this IAP to experiment with your tools, play with your tools, try out different things. So you want to become really good at an editor and maybe try playing around with Emacs and Moon and stuff like that. We'll give you all the resources to learn this stuff but you need to put in time to really become proficient with these tools. An extension of that too is that we have used many of these tools for a very long time and there are often things that we are just in our fingers and we don't really think of telling you about how they work or something that you might find weird. So if you have questions along the way that's all of what this course is really about is like figuring out how to make the most of your tools and that includes asking questions like is there a better way for me to do this thing that I do normally? So if there's anything we tell you where you don't understand how it works or why we do it this way or you see us in setting up the projector or something like types on command that you don't understand what did ask us and we can explain this is how you get better at your own tools is by discovering that as you go what other people do. One last I know about the overview and then we can jump into the content. So we've set up a piazza for this course there's a link on the class website both on the homepage and in the notes for this overview and we're going to try something interesting we're going to ask that after each lecture as you play around with the exercises and you kind of experiment with these tools on your own we ask that if you discover anything interesting or if you have any prior knowledge about these tools that you'd like to share with the class post a note on piazza so like we'd really love if each of you posted one note per lecture on piazza about something you've learned or something you already knew and this way we can all learn from each other these are really sophisticated tools we're going to learn how to use and even in lab as we were working on stuff I'm looking at John's screen as he's working on something for code or something like that and John does something that I didn't know before like oh I can learn something from him and this even applies to if you find a good learning resource for some of the things we try to teach you like who's the link so other people can see because that way they might also learn from the thing that you saw and one last thing we have this registration form that will take like 10 seconds to fill out so if you haven't done that yet please fill it out just give us a chance to know what topics you're excited to learn about anything else for overview? no I think that's it well any questions so far? is there anything in particular that is not on the schedule that you wish you could learn stuff about? specifically the things that we're planning on covering I'll read it out loud virtual machines and containers shell and scripting command line environments data wrangling editors version control doc files and backups machine introspection and program introspection package management and dependency management OS customization OS automation web and browsers and security and privacy is there anything that does not seem like it's covered by those categories that you are super curious about and want to hear more about? because if so speak up and we can maybe do something about it it's also okay if you don't like these are the things we thought of so these are the things we think are interesting but there could totally be other things for your life that's something I wish I would do alright let's dive into it