And we already know how to do that pretty much. We're going to type, say, print, and we'll see the thing on the next line. Here's something interesting. I just did get status, and we saw some stuff in color. Here's something else interesting. I just used LS. And I should mention, for this presentation, if you've got a computer with you and you can get to a Unix-style terminal, there's some stuff you can try interactively. And one of the things you should try is LS here. Because you'll see that as you change the size of your terminal emulator window, the output of LS changes. It dynamically decides how many columns of output to use based on the size of your terminal. So there's another kind of mystery that we'd like to solve today. How to do color, how to do LS. So that's doing different things differently. Also, LS gives you different output if you're piping it versus if you're looking at it interactively. So those are some of the things that we'd like to learn how to do. Here's some other ways that we use our terminals. You've got top here, which is filling up the whole screen. And maybe we can know how to do that by printing a bunch of text really quickly and then waiting and then printing it again. But that's not what's happening. Because as we see when we quit, it all goes away. So there's something else going on here. There's a third or fourth mystery, if you're keeping count. So many. Another thing is once we know how to, say, build up an interface like this, we're going to be able to do stuff like I just went too quickly. We're going to be able to do things like build a fully windowed system. We can build basically graphical user interface applications. We're going to call them text user interfaces. This is PUDB. It's the debugger that I like to use. It's kind of a nice interface over PDB. And you can imagine. You have a lot of opportunities open to you. As soon as you want to use your interface, you don't have to jump to QT. You don't have to go to the web. You could use something like this. And even if you take nothing else from this talk, this is a great debugger. You should use it. All right. What are terminals? What I mean by this is when I say the word terminal, I'm talking about this thing. You can see I've even got the little Mac thing there. That's important because this is only going to be relevant to UNIX terminals. Portions of this are relevant to Windows things, but I don't know how much. I'm not going to go into how much. I mean a terminal emulator. And we say emulator because the thing that we're emulating is these things, video terminals. But a video terminal was already emulating something else. And that was originally a teletype machine, maybe an electronic typewriter that sends signals. These have been around for about 100 years. We've had these for a long time. We had a typewriter, and you could change it such that it sent signals. I'm going to read a little bit of text from an ad from 1957. This was the 50th anniversary year of a teletype corporation. A teletype printer is a communications device with a keyboard similar to a typewriter that enables you to send and receive printed messages. So this is a copy for maybe a business person in the 50s to figure out that they wanted one of these things. With it, you can send, written word can be sent instantaneously by wire within the office or plant or clear across the country to a single destination or many at a time. So we're starting with this model of a terminal as basically a typewriter where it's not connected to anything. Your finger hits a key that causes the arm actuator thing to hit to put ink on paper. That's our beginner. But then we add the teletype part where we're sending a signal over a metal wire or a telegraph application. Maybe that's a telegraph operator somewhere else in another part of the country. Maybe that's a computer program. And then maybe we send signals back somehow. I don't know. There's maybe some metal wire involved, signal processing or something. Let's look at a modernized version. We're going to say we have these system calls like f-read to return bytes. We have f-write, which is going to print things. And now we're using a terminal emulator. There's some gooey stuff that happens to get the stuff to the screen and still keep presses. Go to the terminal. Because this is the Python talk, we're going to talk about print and input instead. This is a Python 3 talk. So input means raw input and Python 2. The first thing we should look at is what bytes we can write to a terminal and what happens when we write them. So I have kind of grayed out if you can tell some of the reading portions there. Well, what bytes can we send? First off, we can send ASCII bytes. This is kind of boring for most part. In Python 3 here, you can say sys.standardout.buffer.write and then send some bytes. Those will end up at your terminal. You can try this now if you want. And then we also have control characters that we can send. These are really small ASCII bytes. All right, let's give this a shot here. Say that I was going to try this here, import... import sys and we're going to do sys.standout.buffer.write and we can write some byte string here. But this is going to be a little confusing to look at because we've got a return value down here. So I'm going to do something a little bit different and you can do this too if you've got a computer there. I'm going to run a server over here that's just listening for bytes. So we're not going to see the input and output interleaved and then over here we're going to do import socket sys.socket s.connect to this thing and let's send some bytes. Great. So now we can tell that when we send ASCII bytes we get simple things like this. We're just sending them over. Here's our ASCII table. We're looking right now at the ones on the right. Kind of boring, but there's all this other stuff and remember this all makes sense in the context of a typewriter. ASCII things are, this is typewriter times. So what do these do? Let's try a few of them now. One we could try that you'll probably know what's going to happen here is satsend what happens when we write a new line? Guesses as to what's going to happen there. This is one you should be able to predict because we write new lines all the time. The cursor went down to the next line. You can sort of imagine that's what would have happened. Let's try something else here. We're going to write now a backslash ideas of what's going to happen here. Anyone want to use this one? You look, the cursor is moving backwards. So this is the thing that sort of makes sense on a typewriter. You could move it back and forth and now we could do something like overwrite that with a space. So you could see how we can implement maybe a backspace thing. Maybe we could also do a carriage return which means move the carriage of the typewriter back to where it started. And that moves the cursor over here. So we've just unlocked the power, the ability to rewrite a line and what that lets us do is progress bars. So here's a program that has a progress bar. We can now do this just with this knowledge of being able to write a carriage return to rewrite the current line. How would we go about doing that? In Python, we might do something like this. Just the general shape of the code. The important parts here are, let's see, that we're flushing. We'll do that a little bit later, but it may be important to flush if you're not writing a new line. We're writing a standard error. Also, we're not writing byte strings anymore. This is still Python 3, but now we're writing... I hope this is Python 3, but now we're writing unicode strings and we'll get in a little bit to how that works. But this code would work perfectly well for progress bars. So now you can add progress bars to your interactive tools. Who writes command line tools all the time, it can be fun to add some of these features to them. Let's look at what else we've got. So we can do terminal encoding. Terminals generally have an encoding. In fact, they had it the whole time, but the ASCII stuff overlaps because it was UTF-8. If you try this, I won't try it now, but this gives us an NEA. And then we can just say sys.standardout.write if we're using unicode strings because Python will take care of the encoding for us. We don't make sense on typewriters. These only really make sense on these video terminals. These are ANSI escape sequences. Before we look at them, let's try one here. I'm going to write slash x1b. If you're not familiar with this syntax, this is a way of specifying a byte that doesn't have a nice printable representation. Open 33m... Oh, it doesn't look like anything happened. All right. So the lesson here, the lesson we're about to learn is that terminals have state. So when I sent those bytes, it said, oh, I'm going to start writing in yellow now. And then when I sent more bytes, we're still stuck in this yellow mode. So this is the kind of thing that... You know, it's good to know that the way you signal this to the terminal is you send it some special bytes, and some of the bytes don't mean put characters on the screen. They mean change your state for future invocations. Let's look at some of the other kinds of things that we can do. The word ANSI implies there's some standardization that happened here. We can move the cursor around the screen. We can clear the entire screen. We can hide the cursor so that you could print things without seeing where the cursor is writing right now. Start writing in bold, start writing in red. So there's a lot of this, and you can just start playing with this now. A great Wikipedia page is the one on ANSI Escape Sequences which describes, hey, here's how to write in red. Here's how to write in blue. So now, look at a little parable. Say it's 19... How do we restart this? So the year is 1984. You can do this live. I think he has it up right now. And you log into some kind of BBS system, or you tell that somewhere, and it starts sending you sequences, and it's really cool. Maybe you're 12, and you think it's really cool, or maybe you're 40, and you think it's really cool. But unfortunately, on your friends' terminal, these show up correctly, and on yours they don't quite show up right. So this is the first iteration of... Who uses JavaScript? Sometimes a little bit. Who uses jQuery? So there's this thing called jQuery in JavaScript that became popular in this abridged history that I'm telling two main reasons. One, it papered over differences in browsers, and this was huge. There were browser incompatibilities, so we have that same problem with terminals. Different terminals behaved differently. We still have this to some extent, but it's less necessary now because things are more standardized. People are more likely to be using the same kinds of terminals. The other reason I think jQuery became popular is it's a nice interface, and we're going to look at some libraries in Python that similarly give you a better interface than the native one. So we have compatibility concerns. I was talking about the first things we did that would come up with databases of different terminals, how you do these different capabilities in different terminals. TermCap and then TermInfo did this. They wrote a library for applications to use called curses that accesses these databases and lets you say, oh, I want to draw a square, and it will figure out how to do that, and some lower level things too. On your machine, you can probably say man tput, or try tput space, and you have to know some magic sequences, and that will look up in that database how to make things red, how to move the cursor up. And then another thing you can look at is Info, CMP was going to dump information about these mappings with your particular terminal setup. Here is an example. So something you can do if you don't want to learn the Python ways to do this, you can shell out and say, hey, I want to clear the screen, and that's maybe easier to learn, but we don't want to do that. You can do these kinds of things probably in bash, probably system commands you have, but instead we want to use blessings. Blessings is a wrapper over curses, which is the normal interface that we use for accessing these databases to do a different thing in a different terminal, but it's much nicer. Here we're doing print this and thing in bold. Now the important thing to know about blessings is that mostly it just gives you strings. So t.bold of high there is going to be a string, and it's still your job to print that string, but it's going to be built for you, so you don't have to type in those escape sequences. Right, so let's solve the full screen mystery with blessings. So we saw before that using top, the entire screen was taken up, we could write things, and then it all went away. One more of these. Let's try from blessings, import terminal. We build one of these things, which looks at our settings. Whoops. This looks at our settings and figures out, oh, you have this kind of terminal, looking at the environmental variable term, and then we can say something like, what we're going to send here is t. let's do enter. Enter full screen, and then we're going to encode that for our terminal, and now we're back in the full screen thing. You can see it kept the current line, and there's some differences in how different terminals do this, but now we can write stuff, and then we could send our exit, and we're back into our original one. All right, so these are some of the kinds of things we can do by writing bytes to the terminal. So this is just knowing the language to speak. It's kind of in-band signaling, where we send bytes, some of the bytes don't result on things being on the screen. A high-cursor alternate screen, you can read them for yourself, and you can read man pages that will tell you more about how these different ones work. All right, next let's talk about what happens when the user types at the keyboard. You probably are familiar with it. You can say raw input or input in Python, and it's going to wait until the user types a whole line of text and then hits enter. So how does that kind of work? First off, there's this thing called the line discipline, which describes when you hit what keys, what it's going to do, when these bytes become available to the application from a read call. You can kind of play with, see, how this is implemented in the kernel, and you can see how they're implemented by playing with, if you type cat, then type some stuff. You'll see that you don't have control A, you don't have control E, as your kind of Emacs-style read line shortcuts. All that you have is kind of reprint, I guess we listed them here, backspace, delete word, reprint, delete line, and the application can't get the contents of that buffer until you hit enter. And then there are a lot of other terminal settings. This is the one that we're going to use as an example is echoing. So normally, right, when we go back to our typewriter analogy, if you have a typewriter, your finger hits the key, right now, and then a signal is sent, and then maybe on this copper line, it comes back and the typewriter can do something else, but it's always going to hit there. Hitting the key, the active hitting the key causes inks to go to paper. So it doesn't make sense. That's where this echoing thing comes from, but we're not stuck with that anymore with our video terminals. And the way we're going to do this is with this other interface, this out-of-band signaling, we're going to go out the terminal and say, you know what, I don't actually want you to, every time you hit a key, show that. So let's look at those here. Again, the relevant man pages are probably the best place to read exactly about how to do this, but we're just going to skip that and talk in detail about echoing. S-T-T-Y minus echo turns off echo.  We can try this real quick. But you can't see it. Uh-oh. And then we can S-T-T-Y echo. And we're back. When your terminal is in a weird state, you probably want to type reset, like this, if it doesn't help. So who's cat at a binary file, or somehow your terminal gets into a pretty weird state, or a weird font, maybe, it gets messed up, and you're like, shoot, what am I going to do? Okay, so you want to type reset, and then when that doesn't work, you're already in the buffer that made it, so what you actually typed was blah, blah, blah, reset. So that's the other big hint from this. Type reset twice. I feel like that saves me a lot. So we can turn back on echo here. Let's do it in Python, though. We want to be using Python. There is GetPass in the standard library, which uses this, so let's look at the source for GetPass and see how that works. I'd mostly... So this is real code from the Python standard library. I would worry about just the shape of this generally. Term iOS, TC, GetAdder is the thing that we're saying. Like, hey, show me the status of all those knobs, and then you do some bit mask stuff, and you say, set the knobs in these ways. I'm calling them knobs, because imagine we have our video terminal right here. Maybe there's a knob on it, and it comes through and says, hey, please set your terminal in this mode. You say, oh, okay, I'll do that. That's kind of what we're doing here. And then really important, we have the try finally. So the terminal is a resource external to your program. So if you don't want to mess it up in that way that happens to us all the time, then you should be careful about... You wouldn't want to have an error without... and then not clean up after yourself, and then not restore the terminal to that echo state, and that's when you have to type reset. So we want to do this, but it's Python, so this would be a good fit for a context manager. In fact, we'll look at some libraries that do provide these kinds of context managers, but the sort of thing we want to do is say, oh, I want to modify standard in, I want to change it in these ways, and then I want to undo those changes. Here it's using that context manager. All right, so here are the kinds of things that we can do by setting these knobs. I'm not going to go into exactly what they are because we're going to use libraries that paper over them, but if you know that these things are possible, you can look up how to do them. Turn off echo, send keys, and merely I'm just reading again. OS.isaddy, oh, this is great. This is, does it look like a TTY? It is the thing that you're wired up to terminal, an interactive one, and that's how LS is saying, oh, should I display things in columns based on the width of the screen, or should I be just putting them out because you're piping this to grep, and you want each thing on a different line? And it's your responsibility if you start doing these fancy terminal things to make sure that your program still works well with piping if it's supposed to, and probably should. If it doesn't, then you get in the situation where you have a program that only works interactively, and now someone else has to try to use it in a script, and there are ways to do that. We'll look at it a sec, but it'd be nice if you can just work, check to see if you should be doing fancy formatting or not, where this is a TTY call. What else do we have? So echoing characters, okay, mapping bytes to keys. So again, you can do this with cat. If you type cat, enter, and then use your arrow keys, you'll see that, first of all, your arrow keys don't work, but secondly, that several bytes are being written there. So there's this mapping of bytes. If you hit A, yeah, it's going to be A, but if you hit F11, you get something funny. If you do shift tab, you have something. So if you're writing a program that's supposed to interpret these, it's your job to figure out how to deal with this. And again, there are libraries you should probably use, but it can be helpful to see that this is what's happening. What changed there? Nothing. Bites sent without being typed. This is a, well, we'll look at this quickly. This is a fun exercise where do you really understand how your terminal's kind of working. We're going to write some bytes to our, you can try this now. These bytes to our terminal. And what the terminal's going to do in response to this is write some bytes on standard in that we're supposed to read, figure out they didn't come from the user. They're a response to our query and interpret. And this doesn't really make sense if you're in that buffer and you only make the data available to the application when they hit enter mode. You should be in C break or when these other modes we'll talk about in a sec. But if you try this now, you'll probably get something like this and that prompts there on purpose. On the prompt, there will be characters because they've been written on standard in. And it's just funny to think about that a program could write to standard in or that you could end up with characters there that appear in your buffer like this. And what I was really trying to say is like, this is a cursor query. It's saying, where is the cursor on the screen? And you don't need this for much, but occasionally you do when you're doing interesting resizing things. Briefly signals. This is just another thing that we can get and set. Like hey, you know what, when you do control C, I don't want that to cause a signal that will cause a signal handler to run and I have to set that up. I would rather have this other thing happen. I just want the control C. Let me figure it out. Some of the signals we can get. SIG int for control C. TSDP is the suspend thing. Winch is for there's a window change. And the things to know about this are these three different modes. Cooked, raw and C break. These are groups of different settings that you might want to use if you're writing an interactive program. Raw is this mode where all signal handlers are turned off. I think all. And hitting keys just passes those keys immediately directly to your program. So you could say read and you would get them immediately. And then C break is a hybrid where you still have the signal handling. This is probably what you want to use because you still want the user to be able to break out of the program with control C. Now I'm going to run these right away. Alright, so now we're going to go through some of these... Alright, so we'll do questions later, but these are what I found useful. Some tools that are useful for this. How we should actually be doing this. Because I think it's fun to experiment with the actual codes, but then once you know that you should be using some library on top of it instead. The first off is blessings that Eric Rose wrote. We looked at it earlier. You want to be using... This is basically the library to use. that lets you say things like, as we see here, write this in bold, move the cursor over here, write this text. But there's some cooler stuff that's in blessed, which is a fork of blessings by Jeff Quast, and it's almost merged, but it's been almost merged for about a year. So if you wanted to go play with this right now, I would use blessed, and then hopefully in the next month or something, all the features will be merged back in. There's a branch on the GitHub for blessings that has all these features. They've been refactored a little bit, or not refactored, they've been changed a little bit. This lets you do cool stuff like the t.cbreak. So that puts us in cbreak modes, or keys available to us immediately. t.nkey translates the bytes in the buffer into a key press with a pretty name, and we can say, ah, that was spacebar, ah, that was shift, control, t, or something. And also some interesting formatting things. Anyway, Jeff did a great job, there's some really cool stuff in this, and if you just want to play with this now, I would start with blessed, and then hopefully it'll be merged soon with blessings. Erwid, that's how we were doing PUDB. This is a, shoot, this is Ian, I forgot his last name now, that wrote this, and it's a widget library. It's like, if you want to be using your terminal for some kind of full screen application, this is probably what you want. It works like a GUI library, if you're familiar with QT or something, it's gonna be kind of like that, or WX Python or something. Here, again, let's remind you that PUDB is cool. Well, it's gonna take too long. PUDB, the debugger we saw, is pretty cool. Some other tools that use this, forgetting now, but there's some other ones that use it that are similar, pretty neat, right? You want to write things like this, this is pretty cool.  You want to have something in red, you want to wait for a key. These are maybe the libraries you want to use. I've not used these much, so I can't talk about them much, but I've heard buzz about both of them, that they were good. Readline, if you want fancy editing on the command line, this is probably what you want. You don't want to re-implement this from scratch. This gives you control A, control E. I think in Python three, four now, this is kind of enabled by default, it's with the tab completion and things, but if you want your own tab completion, you can use this. And a lot of the times, when people I think want to do fancy terminal stuff, they're thinking of the things they get for free with Readline. So Readline is a way to put in user space what usually happens in kernel space. Normally the kernel is in charge of buffering up these characters, letting you do a few things, like deleting a word or deleting the line, but Readline says, all right, I'm gonna C routine, I'm going to put us in C break mode, so we get those signals immediately, and then, so I get a key, and then it can say, oh, you did control A, I know that that means move the cursor back to the beginning of the line. Oh, you did control E, I'll modify it in this way. So you're in user space while you're doing that stuff, and you can modify Readline, and I've done a little bit of this kind of forking Readline to do interesting things with it, and it's kind of fun because lots of programs use it. Next up, okay, this is a program that I wrote, which I shouldn't spend too much time on, but we wrote it for B Python, which is the thing I had in the left tab before. This is an older version where we're having a little demo of what keys you're pressing, but similarly to Erwid, the idea is what if you had the whole terminal as a canvas and you just paint over it, except it's more of a hybrid where you still have a column response kind of thing, but you get to pop up windows over it, or but you get to, we're gonna do it in sec, you can rewind back, so we're gonna do control R in sec, here it comes, I guess we're getting lots of text first, but you can do things, there we go, so we rewound back up, so these are things that don't make sense, if you're doing this kind of thing, you can't be using Readline anymore, you can't be using the normal, you need full control of the terminal, and I shouldn't spend too much time on this because Python Prompt Toolkit by Jonathan, someone or other, is much better, it's just better code, it's better than the library that I wrote, I don't think we're gonna migrate to B Python anytime soon, but this is great, and if you wanna do, there's some great interactive MySQL and Postgres interface library, or interface tools that have been written with this, this is great for, I want a command line tool, but I want the pop-up auto completion, but I want an editor in my command line, and here's a, we'll briefly a demo of this, the cool thing that they're doing there is this full editing anywhere kind of IPython style, I'm not sure how to describe it, I'll just wait for it to pop up here, so it pops up at what looks like an editor, but you're still in your terminal, there's a OCaml REPL called UTOP that does some of this, the Julia REPL has some of these things, but it's just nicer, this is a syntax error and it popped me back up to where the syntax error was, this is pretty cool, but I don't know a bunch about it. Okay, a concept we should be familiar with is a PTY, this is a pseudo-terminal, this is what you use when you wanna run another program in such a way that it looks like it's using a terminal. Probably you should be using a library over it, okay so a PTY lets you do kind of meet things like take the output of a program and re-render it, what we're doing here, this looks kind of like Python, it's a working Python interpreter, except that there's a case transformation thing going on every five seconds or something, it flips the case, so it's just kind of funny, but you could imagine kind of transforming the output of some program, so this is a pseudo-terminal, this is also how terminal emulators are written, and where I first saw this was people writing tools for assisted net hack play, so they're playing a game and they're not gonna change the code for net hack at all, this is one of the rogue-like overhead things, but they want to modify the input and the output, so this can sit between you and some other program. You probably want to look at PXPECT, which is a Python version of the XPECT program, this is for interacting with command line tools that want to be interactive, they want to have a user at the helm, but you want to script them, of course. Okay, a cool tool here, if you've got a computer open, I try right now typing telnet space termcast IO, Jesse didn't write the original termcast, but he wrote the Python versions and the Python conference, so here you should check these out, he's written, this is the idea that because terminal sessions are just a series of bytes, you could beam those bytes to everybody, you could say, hey, check out these bytes, I guess we should try this now. All right, I think I'm not online, it's probably a problem, right? All right, so let's not, oh, thank you, RG, right? Termcast.org, all right, we'll skip this for now, but the gist is you can see, if someone else has a session and they're sending, oh, I sent this byte, I sent the byte that makes it red, I sent the byte that moves the cursor over here, you could just get those bytes and then replay them in your own terminal, and you have very high fidelity, kind of low bandwidth screen casting, basically, of just your terminal. So check this out, also you can, it's easy to broadcast your own terminal session if you mostly work in a terminal, or you could broadcast a TMux session, something like that. And the more web-friendly version, kind of user-friendly version of this is, I gotta remember how to pronounce it, anybody?  But this is a cool tool for recording a terminal session and then making it playable in a browser. And finally, I'm gonna talk about a few ways that I've used interesting terminal things. Here's one where I'm using, I think this is maybe a common possible use for interesting escape sequences and formatting things, which is formatting test failures. This is one where we're doing it in B Python, which is like, hey, there's something funny, instead of any, it says Armadillo and we kind of highlight those. And if you do it in your own terminal, it also blinks, which is kind of fun. And then I have another program where I needed to test that the window resizing was working correctly. So there's a program called TMux P, which lets you script TMux in Python. And I have some tests that open a TMux session and then try resizing the window and see if we're treating that correctly. I just found that with the easiest terminal emulator that was scriptable. So you see it's running these tests now, not yet. It's gonna run the tests in a second. And we'll see a resizing TMux window to test to see if we're kind of correctly treating these things. And that's about it. I have some kind of further reading things. This is not posted anywhere yet, but I will let you know on Twitter when I finally have a blog post up that lists all these resources or at least a version of the slides that's successful. Thanks, that's it. I think we have a few minutes for questions. Maybe not a good question, but how does the syntax for the special characters work? Like the slash x1, the bracket? Sure, yeah, yeah. So the gist there is that when you have Python string representations, you can do stuff like, whoops, you can, there are multiple representations for a string. Where I guess we're gonna, are we in Python three? So I guess these are gonna be like unicode strings here. But if you say slash x61, and then you say a, these are identical. Slash x61. So slash x61 is a way of describing, in fact, maybe it's clear if we try ord, oops, ord of a. Yeah, but this is, you know, this is hex, right? Right, exactly. Yeah, this is hex. But in those special characters, you had like other letters like one n, and n is not a hex, this is all digits, so what is it? Right, right, so just when Python renders strings, some of them end up, so if I say slash x61 slash x02, some, oops, not ord, sometimes it renders them, sometimes some letters have pretty renderings, like 61, some don't, or hex 61, and some don't like 02. So isn't the Python wrapper code where it says, ah, this one isn't? If we try printing it, then it's gonna just not print, oh, sorry, it's doing well, right, we just don't see it, because it's not like a printable thing. When you send that to a terminal, it doesn't do anything. So it's just a different way, is it just like you can put single quotes or double quotes around a string? It's a different way of describing the same literal, and then in the print method it says, ah, does this one have a pretty representation or not? Is that? Not exactly, I get that, but you had those special terminal characters, like slash x1b, bracket, one and something, and I don't know if that's hex or what is it, like how do you read it? Because I had problems with it because I have a setup, I have a Windows machine talking to a remote Linux through Tmux and through Midnight Commander, and I basically have problems with character encoding all the time. Sure, so these kinds of things here? Yeah, what is that? So that is, I mean, the first one is an escape byte, so it's that random byte. The next one is a real open square bracket, then it's a real three, a real one, and then an M. So they really are those characters here. The difficult one to deal with, I think is the first one, the escape character, which, and I have similarly similar setups where it's like, okay, I've got this thing, then I've got Tmux, and then I'm SSH'd in somewhere, so you have to trace it through each level and hope it kind of passes it through. So what we're looking at really is, so the start writing in red is one, two, three, four, five bytes because the first one is the escape byte, and then it's a real open square bracket. And if you read the Wikipedia article on the ANSI escape sequences, it please hand waves about it a little bit. It says, all right, when we have a sequence, it's gonna be more than two bytes. We use this longer escape thing instead of just an escape character. We use the open square bracket as well. So yeah, the pass through is difficult. Yeah, I agree. I've had trouble with that as well because you have to trace it at each level. Are you really getting those bytes? And they're not visible bytes, so you have to do it like to a file and then use something that can read those bytes. Okay, thanks. When talking about the read line library, you mentioned several key bindings like control A and control E. What would be the authoritative source for all of those key bindings? Because like you've probably seen that there's support for that in macOS, but it's sort of, sometimes it works, sometimes some of them don't. Where would be the authoritative source? When I've looked for that, I've Googled for read line. I don't remember what site I was at. I've just Googled for read line shortcuts. And I found one that looked kind of authoritative. And so we had to do this for B Python. We re-implemented all of read line, basically. And so I learned a lot of read line shortcuts. I didn't know about whatever it is, meta close bracket, is it? Or something, maybe it's meta slash, that runs, copies down the previous word or something. There's a lot of these. I only, right, sure, yeah, yeah. So it's using real read line, I think it should. And it's looking at your dot input RC and things like that. So I don't know, but I would blame whoever wrote that program, either they're not using read line correctly or they re-implemented it and only re-implemented some of the shortcuts. You still have time for one short question, if someone has? Hello? What was the name of that called interactive Python? Oh, that's exactly the question I was hoping to get. Yeah, this is called B Python. Okay, that is B Python then. It's great. You should all check it out. Really good. Look at this. Is that available online or? Look at that. And then capitalize. How does that work? Oh, those are the docs. Isn't that great? Check this out. I can undo. Now A is not defined anymore. Wow, yeah. You should all check this out. This is great. I'll be sprinting on this because I've just ignored some issues and pull requests that have come up. So at least on Saturday I'll be looking at this a bit. And I think we have bite-sized bugs if anyone wants to kind of help contribute with this. All right, thank you. Great, thanks. Thank you.


I'm a killing with the next city I'll make you hop along that couple, but if you try and get fresh with me I've got some cronies. I've got some cronies like Don Maroni flex with me I'm Harvey Dent, Parmin Pence. No matter how you flip it. There's always gonna be heads with me You probably making a band and you got your guapa ready. I got a gun named Dalon. It spit hot fire and that clock is steady They gonna ask did he punch him when he getting boxed already.  I'm getting this chopper ready One of his best students came in the class. Her eyes were puffy but she got maids cuz she was sad. She said, Mr. Weller I have one question I gotta ask. How does it give me a 30 on a test and I thought I passed. I mean I'm a straight-A student if I fail, I'm a daddy behind the mat. He said my relax. That's not a 30 That's a 3-0 box.  Call me C&D.   You got it comfortable. My pen a bag, whoever you book. It's like I'm up in school cuz even back then I had no respect for a substitute. Last time it was one failed experiment that I gave this monster life with. So that's the scene that Dr. Jack O'Boddy's hiding. I'll keep it simple. I'll keep it simple.  I will pan circles around, see, cuz he copy-writing.  Big boy grew up in Outcast. His nickname was Entrez 3000. I mean this gonna be a serious disaster. Speaking of which, they both had this cat ride a book and rats laugh. Shit. I mean It's the first time you had punches and back-to-back battles. I'm not even gonna front like I read the Quran, mate, but you said yourself you never have that separatist part played. But now you're colder than ISIS. Brother, send them back our way cuz they've got two eyes you can't use and two asses you can't say. Yeah, got the spads like Hunter Bullets looks like my dad right here. Ready for war with the tech state keep. If you sneeze or even take the wrong breath, they squeeze.  Steve, but think about those last balls. For trying to test a jeep, well all you gon' see is Mack on that essay, Casey. I can kill DNA orcate shot and do it very well, but these niggas want to go half on a dying bag and share it out. Said you still look like the clock from Beauty and the Beast.  He was like, sir, Rome, you're done. Told his sister looks like her. She wanted jeep.


Hi, beautiful. You look stunning today and always. Thank you for being here. Thank you for joining me. We're watching some people color their hair neon. Neon color is just so beautiful. I can't wait for X monitor color to have neons because I need it in my life. Yes, my hair is blue still. And yes, it's a lot. I love my color. Like I really do. This blue is gorgeous cause I made it, but like I'm a lot. Like I'm really extra now. Like I am fully living my extra life. But we'll see how long this lasts on me. Maybe I'll have to switch it soon to like super pink or super purple or like a mixture of two of them. But before we get started today, I would like to thank my amazing sponsor, Honey. You know, I love them. Honey would like to help pay for one of your holiday gifts. This holiday season, Honey is helping pay for $1 million worth of gifts as a part of the great Honey gift away. That's thousands of prizes every damn week. You probably know Honey as the free browser extension that automatically searches for promo codes for you. But have you heard of Honey's other money saving tools like Drop List? You can just add anything you wanna buy to your Drop List and Honey will notify you whenever the prices on those items drop down. So to enter to win the great Honey gift away, all you gotta do is add Honey to your computer at joinhoney.com slash Brad Mondo. Then just throw some gifts on your holiday Drop List for a chance to win a part of the $1 million. Honey will be randomly selecting winners to help buy something on their list. I know on my list I'll be adding just like way too many things like some new jeans, I really need some new furniture for my house because I am redecorating currently. And maybe like some nail polish because I'm getting back into it right now. And guys, it's honestly a win-win even if you don't win because Honey will still notify you anything on your list drops in price. That way you can still save some cash. Pay less for your holiday gifts and have a chance to win a part of the $1 million gift away and help support my channel by supporting one of my biggest sponsors. So get Honey for free today at joinhoney.com slash Brad Mondo. Again, that's joinhoney.com slash Brad Mondo. All right guys, let's watch the video, shall we? Let's do it. Up first we have a video by Kimmy and this is called Split Dying My Hair, Neon Green with Manic Panic. I have a 40 volumizer, but I need 20 or 30. What are we doing? If my hair falls out with 40, then it falls out. Is she gonna bleach the black side of her hair and try to dye it in young green? I had my pink hair for about a month. I like the look going on. Honestly, I think she should keep it like this. She's really rocking the black and pink moment. Black pink. I feel like she's probably gonna do the pink side green, which will also be cute. So I'm excited about that too. Okay, so she is now bleaching her roots with 20 volumizer and lightener, which I love. That's perfect for what you're doing. And she looks like she's doing an amazing job going in through every single section and bleaching her hair out perfectly. Round of applause, round. They call it a round of applause because you go in a circle. Is she just going in a circle? Everyone around you needs to applaud. Like everyone around you can get it.   Oh, I'm going in a circle. Square of applause, square. Yeah, triangle of applause, everybody. Octagon of an applause. Just like that, she's going around. She's doing her roots. She's looking good. She's looking cute. She looks like she's laying enough lightener on her hair, which I'm super happy about. I don't know how to explain stuff. Like, I talk so... Why do we have a little bit of lightener going through there? She had some dark spots going on. What is that? I'm gonna wait like 20 minutes or something just to get these roots in. But the bottom, I think the bottom is like doing good so far. She should probably wait like 35 minutes at least for your roots to lighten nicely. Okay, now she says she made a color remover mixture. I don't know what that is. It looks to be bleach mixed with some shampoo or something, like a bleach bath. Not exactly sure, but we're going in with it and we're removing some of that pink color. Actually, all of it, hopefully. That way she can do the green. I think the pink is out. Oh, that lightened really nicely. I'm actually really shocked at how good that looks. Okay, so when I was in a shower... Wait, this looks so good. Yes, round of applause. In a shower, it came to my realization that... You missed a lot of spots and your roots are orange as hell. They're bad. That's why you wait a little longer. Wait 45 minutes with that root color, okay girl? Yes, now we're going lime green, baby. Her roots are pretty bright yellow, which honestly is kind of fine since lime green has a lot of yellow in it. Cause she has that little bit of leftover yellow in there and her existing hair, the green will be even brighter. So I'm not mad. I was mad. I'm not mad now. Whoa, this looks sick already. The black with the lime green, give it to me. And she's going in there on every hair strand, except she did that last time and she missed an entire section somehow. So we'll see how this part comes out, but it looks dope. Dude, this color combo, kind of jealous, kind of want it. No, I would freak out. It would be so much for me to have lime green. Let's show us the results, girl. Guys, I keep forgetting to... Oh my God. Basically, it's been like a week and a half. This looks so pretty. And I washed my hair twice, I believe. And it's still pretty green. Yeah, it's definitely not that bright. But I'm obsessed with it and I've gotten many compliments.  What do you expect? But these are the results. Listen, this looks great. I do wish it was brighter and more neon, but she said she washed it a few times. And of course, it's not any permanent color. It comes out. However, she definitely missed a lot of sections. I'm kind of mad about that, but it looks really cool. I love the color combo. I feel like not a lot of people can do this or rock this and it looks great on you. I do think you need some wispy bangs, though.  I'm envisioning that for you. Fabulous job, though. I would give this a seven out of 10.  Let's move on to the next video. Up next, we have a video by the iconic Crystal Lindy. How are you, girl? It's called, I accidentally dye my hair neon pink. Accidentally.  I'm sorry. Okay, Crystal, I have to say something right now. You're so pretty.  Today I go to dye my hair. Last week, I bleached it. I mean, it looks kind of nice from the front, but if I would take the little orange, it's like a little yellow. It's a little crazier. So today I am going for a color that I don't think I've ever had, and I'm honestly not really sure how you call this color, but it looks like this. Ooh. Pretty. Yes, neon pink. I think on camera, it looks very pink, but in real life, it's kind of like a mix between pink and red. Oh, it's gonna be so bright and obnoxious, and I love that, because that's what I am. I'm bright and obnoxious, baby. Okay, everybody, let's get the hair dye. I already opened it and tried to get it into my mixing bowl, and oh boy, she's very thick. Put it on your head. Put it on your head. Do it. One, two, three. So satisfying, oh my God. Doing that one stripe on top of that bright blonde hair is so satisfying. Covering up all those imperfections with that bright neon pink. It looks red, honestly, but supposed to be pink. Very, very pink. Also, Crystal, stop starting on the top of your head. Start on the bottom. That way you can lay the hair back down on top of itself, instead of starting on the top and having to turn everything over, it's just a pan.  I'm glad that she's starting on the roots, coloring them first, and a lot of you guys think that we never start on the roots, but no, we start on the roots while we're not bleaching sometimes. Doing things like this, you can totally start on the roots. I like to apply it all the roots and mids at first and then use a comb to comb everything else through. That way you're not wasting extra color that you don't actually need to be using.  She's applying to every freaking hair strand, which is the most satisfying thing to me ever. You guys know this. Now she's going through the rest of her hair. And thank God this color is dark because she has a lot of yellow going on in the middle of there. And I don't want that to shine through because it isn't gonna look good. It isn't gonna look right or tight, anything like that. I think it's a pretty color. Honestly, my life would be so much easier if I didn't mind other people touching my hair. What you can actually do, guys, for my hair color, X-Mono color, and anything like this, you can actually just spray a little bit of water on your ends and then comb the color through. That'll help moisten up your hair and make it easier to comb through and slightly, slightly, slightly dilute the color on the ends. That way the color on top is a little bit darker than the ends because I always think that looks the best. Okay, so my hair is covered.  This is not gonna come off, I have a feeling. 30 minutes and then I'm gonna rinse it out. And the best thing is to rinse it out with cold water, but I'm gonna be honest with you, I never do this. You don't need cold water. Honestly, I recommend warm water to rinse out color and not shampooing it, but warm water is pretty essential to get it off your scalp and actually get it out of some of your hair or else it's just gonna be still in your hair if you use cold water. Does that make any sense?   I don't really get it. I'm not a fan. Oh. What? What? Wait, what? And, so. When, how did this happen? Color. Wow, that is bright. Oh, bright? My God. I thought that I was gonna have to do it with color because that is how it looked on the girl in the picture. No, yours is not muted at all. Whoa, this is so bright. I actually really love it. Oh my God, I think it's such a cute color. Like, no, it was not what I wanted it to be, but it doesn't take away that it's a cool color. I love it, I love it, I love it. This is really fun on you. I love it with the makeup too. I mean, she's always just rocking the best looks. I need you to do my makeup one day.  You're so gorgeous. It's definitely intense. It's definitely there and you're definitely rocking it. 10 out of 10 and it looks like you missed no spots, which I'm so happy about. Round of applause for that one. Great job, Crystal. I'm sure I'll see you again soon in one of my videos, but let's move on to the next person. Up next, we have a video by Destiny Kira and this is called Dying My Hair Neon Pink, Bleaching and Dying My Natural Hair. Sounds horrifying. What's up guys? As you can tell by 30 volume, BW2. I am my hair neon pink. Adore neon pink. All right, good luck. By sectioning my hair into four sections, this is the bleach. I made it really thick because I didn't want it to runny. I didn't want it to get all over the place. And I am gonna be applying this bleach to my hair with my hands. Why are we doing this with no gloves on our hands? Ouch, dude. You're gonna have zero fingerprints after this. Mm-mm, no, no, ma'am, uh-uh-uh-uh-uh-uh-uh. However, I do like one thing going on and that is that she's starting on her ends because there's very, very, very, very orange. That is gonna take a lot of time to come out. That orange stage really just likes to stay there in hair, so doing that first is gonna be best because that'll process the longest and then doing her roots after. I think she'll get a pretty even moment going on. I think it'll be okay, I don't know. I mean, we are doing a pretty good job here of sectioning and getting it later all over her hair. I'm not mad at using your hands. You can totally do that. Just put some gloves on, please. Like, I just don't wanna see your hands be dry for the next two months. Wow, look at those sections. She's still going and she's doing those sections and it's looking fabulous. And it seems to be lightening quite nicely. She's getting that orange out. It's looking better and her roots look good. What is going on? Now that I'm done bleaching all the roots of my hair, I'm gonna let the bleach sit in my hair. This hand technique she has going on is very risky, but I love it. Ooh, she's ready to risk it all. My hair is kind of like a pastel pink. So this is the result. The way it turned out, but I really do wish it was a bit lighter at the roots, but that's my fault, I guess. Here's the issue. You should have applied way more lightener to the root. It was like the thinnest layer of lightener on those roots when you were finished. You should have definitely applied a lot more heavy, really thick lightener, and then let it process for 35 to 45 minutes, depending on how fast it gets light. But you are doing neon pink. It should cover your mistakes. Let's see how it goes. I don't really think I used enough bleach on one side of my hair, so yeah. So guys, again, start from the bottom and go up. It'll make your life a lot easier. And do sections at a time and then comb it through. She's trying to comb the whole head of hair, girl, it's not gonna happen. I am very, very, very happy that her curl pattern is still there and it's not completely compromised. This is looking bright. It's like cotton candy neon pink. But we're going around and we're being very generous with the product, which I really appreciate.  Believe me, happened to me a million times in my life. I learned my lesson and I was like, okay, more is more usually, yeah. I mean, damn, she applied a lot. This is what I love to see and now it's dry. Whoa! That is a lot. I'm trying to compose my thoughts. What do I think about this? Let me see the finished result when she dries it. Maybe we'll get different vibes. I don't know. Thank y'all for watching this video. Make sure you like, comment, and subscribe and turn on that post notification bell to be notified when I post another video. Wow. Build my hair. I blow-dried it and put it into arm poke balls. So yeah. Okay, so the color is magnificent. Like that neon is so pretty. This almost looks like a wig because it just looked so insanely bright. I can't believe she got her hair looking this bright. And her natural curl is still intact. I love it. It's so fun. I mean, it's definitely a look and if she feels like she can rock it and if she feels confident in it, that's a lot matters. And yes, girl, you kind of killed it though. You kind of did the thing.  You definitely messed with the bleach a little bit. It's like seven out of 10 we'll give you today. I'm looking fab. Looking fabulous. Yes. Whoo, baby. Oh my God. Those were some transformations today. They were definitely fun and they're definitely crazy.  So good for you guys. I don't know if I could ever do the neon thing. Like I'm scared. I'm scared of neon in my own hair. Make sure you guys follow me everywhere else. Here are all my handles. Make sure you guys text me at my number. Yes, it really goes to my phone. Yes, I really see all your texts. And yes, I will be replying to a few you guys if you text me right now. Make sure you guys check out X-Mondo Color on Instagram and X-Mondo Hair on Instagram. My hair product brand and my color brand. They're also both linked below. You can now shop my brand new colors. Super pink, super purple and super blue. And the hair color you guys see in my hair right now is super blue. And is it super blue? F***, Gaddis. If you guys aren't already subscribed, hit that button right there. Make sure you click the like button and the bell icon to be notified whenever I post a brand new video. Today's Instagram shout out goes to Jackie. She says, hi, Brad. I think this one is gonna be simple for you. I've had this length for years. I mean, like 10 years. Girl, whoa. And I'm honestly not tired of it, but I do feel like I need a change. I've thought about getting a bob and dyeing it. What do you think? Girl, your hair is really pretty. If you've had the same hair for a long time, just start off small and work your way up.  And if you're really considering doing color, maybe do my new color super purple and dye it over your existing brown hair.  And plus it's semi-permanent, so it will wash out. Give that a try. And if you do it, I would love to see it. Send me a photo. That's all for today, guys. Thank you so much for watching.  And I'll see you next time. Bye, guys.


Hi everyone, welcome to this episode of Pixel Data Scapes. I'm your host, Hannah Gunderman, and I'm a data, gaming, and popular culture librarian at CMU Libraries. I'm really excited by my role here at the Libraries, which is all about using games and popular culture to teach about data and data management principles.  There are so many lessons we can learn about data and data management from video games, and today I'm going to be talking about what Greece can teach us about having confidence in our data skills and progressing on our data journey. So sit back, relax, and let's dive in. It comes to your mind when I say the word data. Do you feel excited, empowered, curious? For me and many others, when I hear the word data, I immediately feel fear. I feel insufficient, apprehensive, and intimidated. I still remember the moment in elementary school when I realized I had gotten the lowest score out of the whole class on a math test. That instills the personal fear of anything quantitative, and it's a fear that has stayed with me for most of my life and continues to haunt me today many years later even as a person who works in data librarianship. This isn't a unique experience. In my work at CMU Libraries, I've encountered many people who have that same fear and intimidation of working with data, even from folks who have a quantitative background. I'm here to tell you that having feelings of intimidation, inadequacy, and fear when working with data is completely valid, and it's not something you have to be ashamed of. Especially when you are looking for data support from CMU Libraries, where we offer a judgment free space for helping you advance on your data journey. When I was recently playing the video game Grease, I began to reflect more on my own feelings around data and how I could support other people who might feel the same way. Grease is the game developed by Nomadus Studio and first released in 2018, and as the player you follow the story of a character named Grease, who has suddenly lost her voice and begins to navigate this colorless environment around her. As you advance through the game, you gain new abilities that allow you to more easily navigate through this environment, slowly restoring color to the world around Grease. The game environment is built on solving puzzles, which allow you to collect stars, which in turn build constellations to help you as the player reach new levels in the game. Grease is an absolutely beautiful game in both its visuals and its music, and when I was first playing through the game, I found myself often becoming completely overtaken by emotion. The colors, the sounds, and the sights often became overwhelming in the best way possible, and I would have to pause the game to reflect on the experience. Although the game was designed to commentate on themes of grief and depression, as I was playing Grease, I thought about my own journey and trying to become more comfortable around data and teaching others about concepts in data and data management. When I hear the word data, my first instinct is to imagine myself in a colorless, intimidating environment, struggling to try and navigate everything that surrounds this word, constantly thinking about things I could be better at, and comparing myself to others who are more advanced in their data skills than myself. But playing Grease taught me to try and think about my own strengths and what I bring to the table when it comes to data. As I navigate Grease and collect stars to build constellations, I think about what those stars are in my own data journey, which help me build new pathways and grow skills in becoming more confident in working with data. Those new pathways built by the constellations created by these stars help make my world of data much more comfortable and exciting. Data can be scary to work with for many reasons. It might be that you have found the spaces where you learn about data topics, such as analysis techniques, programming, etc., to be unwelcoming. It could be that you're afraid to ask questions or get help, because of how competitive the data space can often feel. It could also be that you haven't found the right training or the right learning environment for you. Speaking personally, my humanity's background meant that I didn't have a lot of coursework in data topics, so when I finally entered those spaces to start learning more about data, I was so intimidated and really didn't feel welcome. There could be a host of other reasons that I haven't mentioned here that have made data an intimidating concept for you and me. But Grease helped me realize that I do bring strengths to my data journey, and I am capable of existing and thriving in this space, and this game can do the same for you. I realized I could leverage my own strengths in the data space, which includes a background in working with unique data sources in the humanities, such as film and pictures, and that I didn't have to feel like I am inadequate or don't belong in the world of data. I have my own unique strengths that enrich my own data journey, and these strengths are the stars making up the constellations that move me forward in advancing my data skills. Even if you don't get a chance to play Grease, I want you to think about your own relationship to the word data and reflect on your own data journey. What strengths do you bring to the table? What are your stars that you can collect and build a constellation from to create new pathways on your data journey? Are there areas where you'd like some additional support? CMU Libraries can help offer that support to you through workshops, consulting, and helping you design your projects and data analysis techniques. You don't have to go on this data journey alone, and just like we can help Grease advance through her world and gain new abilities and skills that help make her world a bit brighter, we can do the same for you through our data support at CMU Libraries. I hope this video has been entertaining and helpful for your own research process at CMU. All of us at CMU Libraries are here to support you in your journey in working with data and communicating with data. If you're struggling with your own confidence around data and would like support in advancing your data journey, feel free to send us an email at data at CMU.libansers.com and we'd be more than happy to chat. So until next time, thank you for watching and we'll see you soon.


Hi, I'm Katie Osorio. I was born in Tegucigalpa, Honduras. I was raised in Kenosha, Wisconsin. My family consists of just my young brother, sister, my mother, my dad. And then at the age of just 12, I lost my mother to deportation. It took a huge toll on my life. Thankfully, now, this year, I had her be able to come back and see me graduate, which was something that I was terrified about because when you lose her, when you're in middle school, I didn't think I would see her again. So during that time, I realized that my father wouldn't be able to afford college. So I lost a lot of hope thinking, I'm not going to college. But then advisors from Gateway Tegucigalpa College came to my middle school and they talked about how you could do youth option classes. Like my light bulb just turned on and I realized I can't attend college, maybe take some credits and when I am able to afford it, continue it. A lot of my motivation to go to college was to do exactly what my parents wanted me to do, which was to follow the American dream. So without dual enrollment, I wouldn't have been able to obtain a college career. Even if I think it's expensive, college in the technical school first is cost effective. So it is terrifying for some when they hear college because they think I don't have the money. There is a way. The technical system helps you a lot and dual enrollments one way of making sure you go to college without having to pay certain classes. While you're in high school, the district is allowed to pay for those classes and for the books too. At 17, I became a senior and my daily schedule would be 6 in the morning, 7 to 12.30 I would go to high school and then 12.45 to 6 I would go to work and then 6.05 to 9.20 I would be in college taking classes. Gateway allowed me to take youth option classes here at night because I couldn't do it in high school during my high school hours. I couldn't do it during work because I needed to pay bills. So I did take the youth option class and that's when I met Carrie Aiello, my first instructor in college. I was fortunate in some of my teaching classes to meet Katie and then as I watched her in the classroom, I saw her the ability to interact with a variety of students all ages, different backgrounds and you know I could just see something special in Katie. Once I came into the technical system, I was afraid that my demographic of high school student wouldn't be able to fit in. There's people that are 60, there are people that are just barely starting their college career too and then there was me and I would think oh well how are we all gonna find the right help if we're all so different. But they all help you in such a great way they want to get everyone to interact. So I was able to make a lot of friends other than those at my same age. They know that we're all so different and they help you with that and they make sure that you need to feel confident in who you are and if you feel that you're different, there's places to go to here. So the opportunities that the technical system does give to many isn't just to fit one person. It's to fit anyone based on what they feel is needed for them. I work at a financial institution and I started working there at the age of 17. Normally you're supposed to work at a financial institution after high school but I also joined a program so I could obtain the job at a very young age. I remember thinking alright so I'm gonna go do my associate's degree, how is it gonna affect the real world? And that's what technical system is all about. It's showing you real world examples. It teaches you how to be real with yourself and what the companies expect of you right away. When you do group projects here you're not doing it with people just starting, just freshmen. You're doing it with people who actually have worked in that field. So it's kind of fun to talk to those people who have experience, especially when I don't have my own experience. I feel that as just a 17 year old girl I grew to be more mature because of these diverse demographic, different people, different backgrounds. The technical system, you're able to be a high school student and go to college.   You're able to be someone that speaks different languages and come here and get help. And you're able to do so much more than just get an associate's degree, you're able to transfer those credits to a four year college. So there's so much opportunity than just a technical school.


Today's Trending Topics from eslgold.com. Now you can be a part of the conversation. We're here to help you know what to talk about, understand what people are saying, bring your speaking skills to the next level. Okay, let's get started. What's everybody talking about these days? What's trending? What do you need to know about the topic? What do you want to say about it? How do you say it? Ready? Today's topic is... Apple juice. Who? What? How? That's right, apple juice. Why in the world is this topic trending? A. I have no idea. B. You got me. C. Who knows? D. Don't ask me. E. All of the above. The best answer is... E. All of the above. I don't know why this topic is trending. Whatever. Let's talk about apple juice. What is it? Sweet, clear, tasty, apple juice. Now I'm thirsty. So, let's start the conversation. How do they get from here to here? From the apples to the juice. Think about it for a minute. I'll be the first to admit. I don't know all the answers to these questions. So feel free to comment in the comment section below. What else would you do there? I'll tell you what. Let's make it a real conversation. Write your answers below and I'll personally respond to them. Ready? Put on your thinking caps. Use your funny bones and give it your best shot. It's time for the first question. Number one. How do they make apple juice? Do they squeeze the apples? And who are they? What's your most creative answer? The second question is... Question number two. Why do they call orange juice OJ, but they don't call apple juice AJ? And while we're at it, why can't we compare apples and oranges? Third question. What's the difference between apple juice and apple cider? Why are apples so special that they get their own name for juice? Hmm. What about lemonade? Apricot nectar? Oh, never mind. Fourth question. If you freeze apple juice, does it become hard apple cider? Why or why not? Why do they call them soft drinks and hard drinks? Fifth question. Does apple juice every day keep the doctor away? Why or why not? Are the health benefits of apples really that great? Or is it just an exaggeration? Okay, put your most creative answers in the comments section below. Remember to put the number of the question you're answering. Have fun and be creative. Here are some bonus idioms for ESL students. An apple a day keeps the doctor away. This means eat a healthy diet and you'll never have to go see the doctor. You won't have to go see the doctor very often. You're the apple of my eye. That means you're someone special. You're really special to me. Comparing apples to oranges. This means it's an unfair comparison. You can't compare things that are not similar in some way. For example, you can't compare dogs and computers. Apples and oranges are kind of similar, but not exactly. One bad apple doesn't spoil the whole bunch. That means just because one member of the group is not good, it doesn't mean everybody in the group is bad. As American as apple pie. That means something that is deeply part of American culture. Apple pie represents something that is part of American culture. How do you like them apples or those apples? That means, hey, look at what I did. I'm proud of my accomplishments. The apple doesn't fall far from the tree. That means something like, like father, like son, like mother, like daughter. The child is very much like the parent. Some other expressions from this video. Different ways to say, I don't know. I have no idea. You got me. Who knows? Don't ask me. Here are some more expressions. What in the world? Or why in the world? How in the world? It just means we're adding emphasis to the question. What in the world are you doing? Just means what are you doing, but we're emphasizing that question. I'll tell you what. That means here's an idea for you to consider. Put on your thinking cap. Think carefully about it. Sometimes it's a riddle. Think carefully about this riddle. Funny bone is your sense of humor. Give it your best shot. That means try your best. Never mind. Forget it. It's not that important. Some other vocabulary words from the video. Whatever means I don't care. Do what you want. Squeeze. That means press something together on itself, usually to get juice out of it. Exaggerate or exaggeration. That means when you say something, to make something sound bigger and better than it actually is. Hope you enjoyed that. Remember to subscribe to our channel for more videos like these. And don't forget to give us a thumbs up. Thanks for watching. If you have ideas for our next video, please let us know. Send your ideas to eslgold.com slash submit question. This video is brought to you by the following English learning websites. eslgold.com and freeenglishstudy.com.


I'll see if she's cooperating today. I'm technical sergeant Rena Rivera, and I am the NCOIC of ultrasound. Ultrasound is used for identifying any masses, any lumps or bumps that people may feel. And obviously, we use it to do anatomy scans on second trimester ultrasounds. One of the misconceptions about ultrasound, specifically for the second trimester ultrasounds, is that it's for a gender reveal, basically. But in fact, it is just to make sure that baby's growing okay, making sure that baby has all its parts, and that baby's just doing good. Yep. That's good. What I enjoy about my job, it is very rewarding. For one, we are the eyes and ears of the radiologists. In order for them to dictate and diagnose a patient, we really have to be on top of just ultrasound skills and knowing what we're doing in all the required images, and just making sure that we are able to identify any pathology. So the most fulfilling part of my job is just providing the service of ultrasounds as far as being part of the process for the patient to get results back. Just knowing that my job is really important in their patient care, and being able to aid in that process. That's crazy.


Alright, hi everyone and thank you for joining our session on mentorship as a pathway to two sustainability. My name is Stochie and presenting with me is Benedict. As you know, Wikimedia relies on a vast and diverse community of volunteers to create and maintain its many tools. These tools are essential to the Wikimedia mission of free knowledge for all, but they're also complex and require ongoing maintenance and development. And we've come to realize that mentorship is a way to ensure the sustainability of these Wikimedia tools. By pairing experienced volunteers with newer volunteers, mentors can pass on their knowledge and skills, helping to ensure that the next generation of Wikimedians have the skills they need to keep our tools running and Wikimedia projects up and running. Just in some rementorship is a relationship between a more experienced person, which is the mentor, and then a less experienced person, which is the mentor. The mentor provides guidance, support and advice to the mentor and also helping them to learn and grow. We're going to be going through why mentorship is important for two sustainability and then we'll be talking about how we've been able to use the Wikimental Africa project to test this aspect of it. Benedict, please. Thank you so much, Stochie. So the question why is mentorship important for two sustainability? Mentorship is important for two sustainability because one, it helps to transfer knowledge and skills. Mentors can pass on their knowledge and skills to mentees, helping them to learn how to use and maintain Wikimedia tools. Just like Stochie said, mentorship is just that relationship between the experienced two creator, in this case, the mentor and the inexperienced two creator, the mentee. So that relationship will tend to also share, you see the transfer of skills that will be shared in that the cost of that relationship. Another thing that this relationship does, mentorship, is capacity building. Mentorship can help to build the capacity of the Wikimedia community, ensuring that there are enough people with the skills needed to keep our tools running. An example would be considered, say, for instance, a two creator, someone who created a particular tool from the Wikimedia Dutch land, for example, adopts someone from Igbo Wikimedia user group and then mentors that person on how to use that tool, how to fix bugs on that tool. What that person has successfully done is not just transfer the skills alone, but he has also been able to give capacity to the Igbo Wikimedia user group to be able to use that particular tool in a way best suited for them. Next slide, please. Another thing that's another reason why mentorship is important for two sustainability is it encourages participation. It encourages participation in the sense that mentorship can encourage participation in the Wikimedia community by providing new volunteers with the support they need to get started. This is something that almost everyone has faced, being a new volunteer, you tend to face the obvious question, where do I start? And so one thing that mentors can help do is they can help you answer that by giving you tax, by showing you the way, you'll know how, where to start. You don't need to ask again, where do I start? It also encourages participation in the sense that whenever you stalk, whenever a new or inexperienced volunteer is stalked with a particular challenge or task, they tend to, because they know that they have someone who can help them, that tends to encourage them to participate even more. One other thing that mentorship also provides is also gives the sense of a community. Now, this is not just for the mentee themselves, but also for the mentor. Mentorship can help to create that sense of community within the Wikimedia community by bringing people together from different backgrounds and experience. Now, this can be seen in terms of, say for instance, a mentor takes in, like the scenario I gave with the Wikimedia Dutchland and Igbo Wikimedia user group. So just by both of them being connected together with the focus of one goal, which is that tool that was created, you see that there is a community. Mind you, a mentor can have more than one mentee. So it seems to the mentor, he's building a community to the mentee, he's part of the community. So it gives them that sense of belonging. So it gives the sense of community. Next slide, please. So to the question, how can mentorship be used to sustain Wikimedia tools? I guess this is a question of the day. So how can we do this? First, we can do this by pairing experienced volunteers with newer volunteers. This is the most common way to use mentorship. By pairing experienced volunteers with newer volunteers, mentors can pass on their knowledge and skills, helping to ensure that the next generation of Wikimedians has the skills they need to keep our tools running. Now, this is something we have tried in the Wikimental Africa program. Next slide. So for those who have not heard of Wikimental Africa, Wikimental Africa is a program that seeks to bring in more African, more African developers, more Africans into the technical space of Wikimedia. And one of the success stories I will be sharing today is for that of our biodiversity team. So the biodiversity team, which is headed by Andrea Wagner, who is the mentor of the team. Prior to Andrea coming on board as a mentor, he was able to, he has been able to create a script, to write a script that goes from iNaturalist that takes bio data from iNaturalist and creates Wikimedia, English Wikimedia stubs. For those who don't know what Wikimedia stubs are, stubs are incomplete articles. They're not necessarily bad, but they give, they're incomplete articles that one can develop. So they give you that starting point in an article. So what Andrea did was to write the script that takes from data, biodiversity data from a different app iNaturalist and creates English Wikipedia stubs. When Andrea came on board as a mentor in Wikimental Africa, he has been able so far to adopt these mentees. And now these mentees have been able to, because of the participation of these mentees, he has been able to not just create stubs for English Wikipedia, but also update the app, the script to be able to create stubs for both English, Ibo Wikipedia, as well as Diabani Wikipedia. So this is one success story I can tell you about what mentorship has done that we have tried. It has also been, so now you can see that if the stop builder was intended to last, for instance, the lifetime of Andrea. Now it's no longer just Andrea who is going to be able to fix any bugs that arise from the stop builder. You now have these other mentors who have been trained by Andrea who can now go ahead to sustain this tool, to sustain that stop builder. So which is one way of maintaining a particular tool. Next slide, please. So if you're wondering how, how can you get involved? If you're interested in getting involved in mentorship, there are a number of ways you can help. Consider becoming a mentor for Wikimental Africa. I mean, that's one way. If you have experience with Wikimedia tools, you can consider becoming a mentor. By experience, it could be either you are a tool developer or software developer or a technical writer on the Wikimedia space, you can come on board and be a mentor on Wikimental Africa. This is a great way to give back to the community and to help ensure the sustainability of our tools. Another way to get involved is so you can also get involved in mentorship advocacy. You can help us spread the word within the Wikimedia community. This can be done by talking to the other volunteers about the importance of mentorship just as you've learned today or by writing articles or blog posts about it. Next slide, please. Next slide. Okay. The third way you can also get involved is by adopting the Wikimental Africa approach. You can peer-season your, you or your community can, or your Wikimedia community can peer-season to developers with those still climbing the learning curve. This collaboration not only transfer critical skills like we've shared, but also ensures that emerging Wikimedians are equipped to carry forward the touch of tool sustainability. So I will leave you with, before we go to hand over the mic back to you, I want to leave you with this final word, that through mentorship, we sustain the heart and future of the Wikimedia community. So mentorship is a bridge between innovation and tool sustainability. Thank you so much. And yes. Thank you everyone. If you have any questions regarding what we've talked about, please feel free to ask. Hello. Can you tell me how long this program has been running and what motivated you to start it? Thank you so much. Yes. In terms of how long it's been running, so Wikimental Africa last year, April, so one year plus. And in terms of the motivation, basically, this came about from mentor Africa is actually meant to, is intended to bring in more Africans into the technical space of Wikimedia. And this was born from, ranging from the, what's it called, the hackathon that we attended. So I attended, I think it's the 2019 or 2020 hackathon, where we noticed that we had less Africans who were involved there. And so also when we attended the Wikidata conference, that is the Wikidata conference, of I think 2020 or 2021, also less Africans were involved there. And so the question now arose like, why are we not having more Africans involved in the technical space? And by technical space, I mean in writing software for Wikimedia or in writing, I mean, technical writing for Wikimedia, not just the usual editing. And so for us, it's born, that question kept burning, and we had to look for a solution. And being from the Igbo Wikimedia user group, and being from the Igbo culture, we know that one thing we have sustained so far is mentorship. One of our culture is mentorship. We call it apprenticeship down here. And so we felt how can we incorporate that, because we know that works, that works with other fields. Mentorship is not just for two sustainability alone. Mentorship can be applied in different fields, as you already know. And so we're looking forward to how do we bring this into Wikimedia. And so that was how the entire project was born. And yes, thanks to Wikimedia Dutchland, we've been able to have series of events, series of, yep, and series of events, and series of mentors come on board. And like I said, this, the Stop Builder is one of the success stories that I'm so passionate about. I'm so proud about because of the growth it has taken from just English Wikipedia to Dabani and Igbo, and even moving on to three and other languages. I hope that answers the question. Awesome. Thank you. Thank you. I'm just checking if there's any more questions and wrapping up. I think we're at time. It looks like we don't have any more questions in the room. Thank you both so much for this lovely presentation. All right. Thank you. Thank you so much. Have a good day.


For more videos on people's struggles, please subscribe to our YouTube channel. Hello and welcome to People's Dispatch. On the 9th of October 1967, Che Guevara was assassinated by the CIA and their Bolivian military contacts in Bolivia when he was attempting to build a revolutionary movement in the southern part of the continent as a link with the Cuban Revolution of 1959. On the 9th of October 2020, almost 20 publishing houses from around the world, from Tamil Nadu to Argentina, released two texts of Che Guevara, his letter to the tri-continental and man and socialism in Cuba, alongside an introduction by Ayaz Ahmed and a preface from the Institute of Che Guevara Studies in Havana, Cuba, written by Maria Garcia. This text, a free PDF, is coming to you in almost 20 languages, quite amazing. The cover has a painting of Che Guevara, it's a very elegant cover, just the painting and then the name Che in the different languages. The painting was done by Tings, who is the lead designer of Tri-Continental Institute for Social Research. Tings, welcome to People's Dispatch. Thanks for having me, Vijay. Well, it's quite a thing to do anything related to Che Guevara because the image of Che is so iconic. Let's go back a little bit and think about the iconic nature of Che. There's of course the famous photograph, which was taken by Corda during a rally where Che looks extraordinarily luminous really in that photograph. Then there were several posters done by Ospal, the organization in solidarity with the people of Africa, Asia and Latin America. So to do any kind of Che image things is extremely courageous. Can you talk a little bit about the iconography of Che and the painting that graces this cover? It's a big question.  But at the end of it, I mean, there's actually an Ospal image, one of the posters you mentioned where there's an outline. It's almost a silhouette where Che's silhouette, the famous kind of him and a beret image is just the outline. And it's like he is a window into a kind of psychedelic world, another world, another kind of possible world. And I was thinking, maybe is there a way to refer to his image without drawing his image, but I think without with many conversations with different comrades, it's just really no way to avoid that. I think what's interesting about the corda image and the painting that ended up is that what I know it's from the rally is the moment that Corda, who was a fashion photographer, I think for that he had a specific eye to capture these iconic moments is he was about to get on to, he was already on the kind of, you know, the about to speak. And he he actually steps back and doesn't do his speech. And it's actually that moment where he's thinking about what to say, and he doesn't say, I don't know if that's true, but that's what I read. I think in this one, it's a bit different because you you already talked about the letter to the message to the tricontinental. So that was in my mind a lot. So the photograph that this is referencing is another one, not by Corda. It's of Che Guevara with his radio program, the Grilla radio program Radio Rebelde, which was what was set up during in the Sierra Maestra as a way to broadcast the guerrilla struggles of the July 26 movement. And then thinking about that and thinking about the message, it's actually where he is about to speak to us. And he is about to, he is just opening his mouth to say and this time he is giving us a message. So I think there is a connection there about how the painting came to be. It's a mixture of the legacies of him telling us something from the best for our future. Yeah, because the two texts, if you think of the two texts that are in the book, both of them are as if he is speaking into a mic, because message to the tricontinental is directly a statement that he wanted read out at the tricontinental meeting held in Havana, Cuba in 1966. That message was read out by Fidel Castro on behalf of Che Guevara and it's a speech about the need for world revolution. It's a brilliant speech and I hope people will go and read it in these free PDFs from, you know, as I say, almost 20 publishers, left publishers. The second text is Man and Socialism in Cuba, where it's an article written for a magazine in Uruguay, Marcha, where he is speaking about the logic of the Cuban revolution. So in that sense, these are both addresses to the world, one about the Cuban revolution and one about the world revolution. It was interesting that the image on the cover, therefore, is an image where he is, of course, on a mic, speaking into a microphone and he's delivering this message. But the other thing that I wanted you to reflect on a little bit from that image is the color scheme that you chose for the image itself. And it's interesting because, you know, the left has its own cliches and we have our own way of putting forward a certain very sometimes limited palette, you know, lots of red and, you know, lots of fists and red really is a way to characterize it. But you chose a whole different way of, you know, of coloring the painting. The painting has a very interesting set of colors. Could you talk a little bit about that?  I think that speaks a little bit of the lineage. I think both ideologically, historically and visually, we have inherited, I mean, tricontinental as an institute is carrying the name of that very conference in 1966. And with that, as you mentioned, which came, it was organization that formally established out of that meeting. And they, I mean, a lot of what we have inherited as the incredible imagery poster legacy that came out of the Cuban revolution came out of that organization came out of Ospal. And actually there's a nice story I wanted to tell is that in the speech, it's obviously the famous line was Che Guevara said, Oh, we have to create one too many Vietnam's, which almost seems like a call for more and provide violence. But I think it was more of a call for a future. What can you need to do when people come together? What can we actually build? And Ospal did something amazing and both Ospal and Che Guevara, this person was deeply internationalist. And thinking about Vietnam is one of the main designers named Venetian Medeiros of Ospal. He was also the lead designer of the Department of Evolutionary Orientation of the Cuban Party, Communist Party, when the, what was at the height of the Vietnam War, and not just creating posters in solidarity with the struggle of the Vietnamese people, they decide to send this lead designer to the trenches in Vietnam. And he spent months marching along the Ho Chi Minh Trail with the guerrilla fighters, and he was supposed to come back with paintings, portraits of imperialism. And what he came back with are paintings that are maybe even more bold in color, more psychedelic than I, you know, I could even imagine doing, pinks, purples, bright green, and they were almost romantic images. There are soldiers walking on the trail. They're about the peasants that they encountered along the trail. They were about almost everyday life, everyday resistance in the struggle. And when he was asked about why he decided to do the paintings like this, why do you choose to show imperialism that way, he said, well, I am painting images alongside the promise that Ho Chi Minh gave, which is to create a Vietnam 10 times more beautiful. So in a way, I think these colors are necessary. It's maybe, you know, as a way to what I think human revolution taught us is that there's a broader humanity we need to encapsulate and that there's human feeling, human aspiration, human necessity. And unfortunately, I love red, I'm wearing red, my heart is red, but there needs to be more colors than capsulator, what human beings need. You said 10 times more beautiful, Vietnam 10 times more beautiful. You've been part of a process of creating poster exhibitions on these important keywords, you know, neoliberalism, you know, and now the most recent, and capitalism was the other one, and the most recent one is imperialism. There's a new photo exhibition that people can go and look at where artists from all the continents really have produced quite remarkable work with a range of colors, speaking of make Vietnam more beautiful, depicting imperialism. Could you talk a little bit about these poster exhibitions, a little bit about what you've learned in doing them and what comes afterwards? I mean, this, this was a pretty humble beginning. The idea was to contribute to, you know, the international process that is the international week of anti-imperialist struggles, the platform of hundreds of people's organizations across the world, was to contribute from the tricontinental side, a set of four posters to kind of elaborate visually these key core concepts that we have. And then from there we decide, oh, let's open this up to more than just what we produce internally. Let's have a call. Let's try to figure out what does imperialism, what does capitalism, what does neoliberalism? And we have one more, which is hybrid war. What do these mean in the people's context and conditions? How do they see it today? Maybe it's, maybe it's the red, red in the fist, but maybe there's much more to be expressed. And so we made an open call and we've done three rounds of online exhibitions and now we've had something like 165 artists from, from 40 countries, 40 organizations and touching every corner of the world. We have people who are, you know, who used to work at a car factory for many years, retired and haven't, haven't picked up a paintbrush since school days, feeling inspired. And he said, when we interviewed him, he said, well, we are the kind of people that never get to be exhibited. And he's an excellent painter. So he's been contributing several times. There are people who are kind of seasoned designers and artists of movements. There are people who there's one, Karmad, who is from a armed struggle movement in South Africa, who has been part of cultural movements for decades is also participating. So there's lineages we're following. And then also, you know, young designers who are for the first time creating a poster, trying to test out the tools, drawing by hand. So it's been a very incredible experience. And from there, I think what has happened is not only these online exhibitions, but people have been taking them already, despite being, you know, in a state of global pandemic, where, you know, physical exhibitions are difficult, people are already taking them into their own context. For instance, just yesterday was a 15-year anniversary of the Shack-Dwellers movement, at the Sali-Baza-Munjandolo in South Africa. And they decided to print out and decorate the entire space for their 15-year anniversary from these posters because they felt like the posters, and I saw some photographs, posters from Lebanon, from Indonesia, from India, from all parts of the world, we're speaking to them. And they chose to put these up in part of their celebration for 15 years. And we've had an exhibition in Malaysia where the Karmad put up a physical exhibition there. We've seen it kind of take on a new life because these images are speaking across languages and cultures and countries. So it's been a fantastic experience. I mean, it's important to also say that, as you said, there's one more coming, and that's on hybrid war. People can, of course, find out more about this at the tricontinental.org, also at anti-imperialistweek.org, and get involved in one way or the other. But the most important thing is they need to download in almost 20 languages a new text out on the 9th of October on the International Day to Abolish the CIA. Two texts by Che Guevara, cover by Ting's beautiful cover with colors that will shock you. So please go and download that. Thanks a lot for joining us at People's Dispatch. Thank you.