 So what I want to show you right now is this key little trick that if you've been to pass Montreal pythons, you probably have seen it, right? You just bang on the keyboard and, crap, it's too big. Take two. There we go. Better. Okay. So do it live is this little thing that, so I was doing presentations like this a few times in Montreal Python. I did one in Python like this and someone in Python saw it and thought it was really cool. So I showed him my source code, which was a stupid little hack that I did like one afternoon. So he grabbed it and he did it better. And it's, I mean, the idea is not new. It's in the spirit of player panel and hacker typer. These things exist before. But this do it live program has some cool new features. So let's see. Let's look at the help for do it live. It's very simple, do it live. And it has a few commands here. Demo, play, record. It also has some built-in themes, which is really cool too. So those are the theme names right there. You can actually even preview them. Right now I am using this one, the Steve theme, the one I'm using right now. So it's very simple. You type do it live. You type a command. And well, let me show you exactly how it works. It's very simple. The way it works is you write a simple shell session. Here it is. The actual do it live session that we're going to play back in a little while. There are some special comments that instruct certain things to do it live. Here's where you pick the prompt. I mean, that is a theme. You can use ordinary shell comments. You put shell commands in there. You can change the speed at which to type. The really cool thing is that you can actually even embed a Python session within your shell session. So let's see what this looks like when we replay it back. First of all, how do we play? Let's look at the help for play. Do it live play. It's pretty simple. Just do it live, play, and the session file. So let's do it. Let's play it. Let's play back in a new session. We'll do it live. All right. So I happen to be, I work with Mercurial a lot. I really like Mercurial. So we're going to show you a few stupid things about Mercurial. So here I am. I'm in the Mercurial repository. Let's look at the log with the graph node. Now the really cool thing here is that it's actually using my shell exactly. So these are 256 colors. My terminal can do those colors. So do it live just obeys them as well. So this is a very colorful log here. The blue commits are secret commits. The yellow commits are draft commits. Here you can see a more summarized version of the same idea. I'm working on the Mercurial repository. My branch is right there. My stream is a bit ahead of me. Okay. Now here is like a really long command. And I'm just for the fun of it, I'm actually writing out the full hash, like the full sha one of the revision. All this does is it just shows me the actual change set of the revision and what I did in here. I did some little documentation change here. Now let's actually do some Python session. So you remember that in the little shell session that I showed you, you can actually just go into Python and it's also all integrated. It's really cool. So here I'm just going to do the same command. This is the same Python command, but I'm doing it now because Mercurial is just a Python library. I can do it from Python. From Mercurial, dispatch import requests and dispatch. Now I have to define the request. I just pass it all the args. I have to find a few lines above and then I actually do the dispatch. So if you look at it, it's the same thing, it's log, patch, verbose, dash rev, and then I put like the whole hash there just for fun and we do the request. And I can do the same thing from Python's show. That's all.