 I'm Mark, I'm at MarkWunch on Twitter. You can follow me there. I'll be tweeting some stuff out after this, some informational materials, some links. You can tweet at me now if you'd like, but I won't be able to respond because I'm giving a talk. Live coding. Now I can see what I'm doing. Okay, first slide joke, you all got it. Okay. Live coding takes software engineering, which is a stereotypically anti-social act, and it adds a layer of conversational improvisation. Code is a dynamic, flexible, expressive medium. Live coding is about peeling back the layers of specialization and not being limited to the constraints of a GUI. There are a lot of really interesting live coding environments and tools. All of them embrace the act of writing code as the primary interface to creativity. If this interests you, I encourage you to look up Toplap or livecode.nyc, both of which are organizations and groups that crystallize the live coding community, which is a whole other topic that I won't get into. I'm a self-taught programmer. My undergraduate degree is in radio, television, and film. It has been really awesome to see this proliferation of live broadcasting tools like Twitch, Periscope, Facebook Live, all of which give you access to an audience so quickly. Tools in this field are professional grade. Shout out to the Confreaks folks back there. They have like a giant case of stuff. This little box here is called a vision mixer or a video switcher. This little tiny thing will cost you about $900. So I wrote a tool that applies the mindset of live coding to the domain of live streaming to do live video mixing and compositing with code and without the cost. It's called Overscan, a live coding environment for live video streaming. What I love about these live streaming platforms, they remind me so much of like pirate radio. What could you do with more expressive tools? And I would like to show it to you, but as you might have seen, I'm already showing it to you. I'm broadcasting my screen live right now. When it said at the beginning we're live, that was like proclamation of that. What you are looking at here on this screen is a preview of what I'm broadcasting out to the world. So if you want to go onto your social medias and tell your friends, hey, tune in on Twitch to Wunchcraft with a K, that's where they will see me. So now let's look at some code. Okay. Get my focus here. Where's that mouse? There it is. Okay. This is Dr. Racket. Racket is a programming language that's derived from Scheme. It has parentheses in it, so it'll be fine. Dr. Racket is the development environment for Racket programming. And Racket is a really powerful language and has a really powerful toolkit for creating languages and experimenting with prototypes of languages. And that's what Overscan is. It's a domain specific language for live broadcasting video. And you see that with this Overscan lang line. Let me make this a little bit bigger for you. Okay. So here I define and make a broadcast. So I create this pipeline. And a broadcast takes a video source, an audio source, and a place to put those things. So in this case I'm sending it to Twitch. My video source is this camera and screen picture and picture combo, but you can't see me, but my camera's on. So I have a little function that I wrote down here called fade in, and I'll run that function. So I'm going to say fade in, my camera and screen. Let's do three seconds, and I'll just stand here and say hello, there I am. But now you can't see the code. So I'll move myself up into the corner. So I'm going to say set picture in picture position, and I'll put myself just like up in the top left, and I'm quite big. So I'll make myself a little bit smaller, size, and we'll do, I have a little smaller screen here. Okay. Let's just make a little bit bigger. And you can see like, oh, hold on. Oh, look, my code is right here. So that is part of the domain specific language of Overscan. The other thing that Racket has built in, which is really powerful, really cool, is a great drawing library and drawing toolkit. So I just grabbed some code right out of the Racket drawing tutorial, and I'm now going to draw right on top of the video. That's pretty simple. I can just say paint Racket, and then my drawing surface is the video itself. And there's the Racket logo. That's cool. So this is all just code, I'm just calling procedures. So imagine how flexible this can be when you're putting together a video string. Clear this away, and we'll get back to the slides. I'll say erase. This is drawing surface. And I'll go ahead and fade myself out. I don't need to like, you don't need to see like this up close, like a very unflattering kind of thing. But we'll do it over like a long period of time, so you could say goodbye. Okay. So, that was a little too much, too long. So let's go back to the slides. My slides in this case are also written in Racket, because if there's a yak, oh, you bet I'm going to shave it. We'll go back here, okay. So under the hood, this is Racket, as I said, and there is a powerful C framework underneath this called GStreamer, which provides all of the media capabilities for over scan. GStreamer is an open source C framework, as I said, that allows you to create these media pipelines and gives you a common language to plug different media things in and send them from a source to a sync. GStreamer is written entirely in C, so I had to connect Racket in C. I've thought a lot about how to pronounce this word, Gobject. I will also accept Jobject. GStreamer is written with the Gobject framework, which is a C framework for doing object-oriented programming. Included in over scan is a module that takes advantage of something called Gobject Introspection, which allows for the dynamic linking and dynamic creation of foreign interfaces from a different language. So included in over scan is this very deep rabbit hole of C interop code. So once you install Racket, you'll run this command, Raco package install. This is also the GitHub URL where you can find the code for over scan. You can learn more about over scan and read the docs here, markwanch.com slash over scan. It would be generous to call this alpha software, but I am really excited to collaborate with hopefully some of you on this to get it to work on other machines besides my own. This is the end, but I have to end my talk by stopping the broadcast here, so let me figure that out. Okay. Yeah. Get out of there. Okay. So we'll go back here and I'll just type, stop. Thanks everyone, and thanks to whoever might have been watching, I don't know.