 Hello and welcome to this presentation on Processing Pi, otherwise known as Python Mode for Processing. My name is Tristan Bunn. I'm an Interactive Media Lecturer at Massey University in New Zealand. And I've switched between industry and academia quite a few times in my career. In addition to that, I started as a designer and I moved further and further into development along the way. So I'm really fascinated by this whole intersection of code and art. I'm interested in Processing Pi for teaching and creative practice. And in this brief overview of Processing's Python Mode, I am going to review some history around the creative coding scene as well as review processing, specifically Python Mode. I'll point you to some documentation and resources you can take a look at. And I'll also share a bunch of inspirational projects along the way. So kind of going backwards in time, I'm going to begin with crack intros. So if you are not familiar with these, the idea is that early on, like in the 80s, when hackers started cracking copy protection on games and other software, they would put a little slide at the beginning when you started the program saying crack by Dr. Micro and what are the messages they wanted to leave. So over time, these became more and more elaborate. So this one over here is also for the Apple II for a game Beast War from 1984. And as you can see over here, there's now some images, some fancy fonts, more elaborate quotes. And what started to happen was this became a competitive thing. Crackers wanted to see who could kind of make the most elaborate crack intro screens. And as time went on, these things became more and more elaborate as hardware became more powerful and also as hackers kind of pushed themselves to do more fancy things. This doesn't have any movement in it because it's just a screenshot. But what you have over here is these letters moving in kind of an elliptical motion. And generally speaking, these crack intros would include audio, chip tune type kind of music. And generally speaking, a lot of patterns, a lot of colors. And what the hackers were trying to do here was squeeze as much performance as possible out of the hardware to make it do really impressive multimedia things. Anyway, this whole crack intro thing kind of turned into an art form of its own. And what you started to get was these things called demos, which were basically programs that you would download that would run a whole crack intro style demo with all sorts of fancy graphics and audio. And the idea was not to sort of just sit in front of some cracked piece of software, but to be at peace unto itself. I think one of the most famous examples of a demo from the demo scene is this one called Second Reality, which I think is about 10 minutes long. You can watch it on YouTube or you can download the program and then try and run it in some emulated system on your modern machine. But it's a really good example of this whole scene and what programmers were trying to do. And as you can see here, it was created by Future Crew in 1993. Now, it was actually created for an event called the Assembly. And what happens is at Assembly, it's usually an annual event, you have a whole bunch of geeks who get together and program the most impressive demos that they can. Of course, these days it's much easier to get computers to do really elaborate spinning, graphics and music and all the rest of it. So very often you'll have in these competitions some kind of parameters that you have to work within. So for example, can your demo fit into 1k or 4k and things like this. Of course, this whole idea of programming a computer to generate patterns and things isn't anything new. And even though these artists didn't use computers, they were kind of thinking in the same way. Come up with a method to generate things and then generate as many of those things as you can. And a lot of creative coding applications these days work on this kind of generative principle where you make something that makes something. So if you take a look here at this example by Paul Clay or this one over here by Kandinsky and this Jackson Pollock on the right hand side and you look at a lot of kind of algorithmic and generative art these days, you can see how they are very much related in terms of outlook and approach. Of course, computer art itself goes way back to even before there were sort of computer screens that could present good looking graphics. So for example on the left hand side we have a Manfred Moore and on the right hand side we have a Frida Neck and they were basically using plotters to print these things. So just to give you some idea, early printers were like typewriters. They would have a whole bunch of diecast little letter forms that would stamp ink onto a piece of paper. But if you wanted to break away from just printing text, you would use something like a plotter which has an X and a Y axis and some kind of drawing tip, in this case just a pen. And your computer would send the XY coordinates to this and the position of the pen can move about to draw different types of shapes. Anyway, my first introduction to this whole creative coding thing was Flash. For those of you who can remember Flash, huge on the internet maybe 10 years ago and now looking to be cut off by Adobe because other technologies have kind of taken over. But the great thing about Flash was it gave you the ability to do all sorts of things that you couldn't do in your browser 10 years ago. Add animations, add audio, add video and even program games. So you might have played QOP, which is a really frustrating game where you have to control the limbs of this character to make him run as far as you can using your Q, W, O and P keys. Flash itself was an animation program with all these kind of extra programming abilities. So if you've ever used some kind of animation software before you would have seen something that's got a timeline and you can position where things are at different points in time and the idea is that the computer can calculate how to move things between different coordinates so you don't have to stop frame and draw each and every position. Now what Flash did was they added this panel called the Action Script Panel where you could click on any given object, all framing your animation and write some code. So in this point we've got a stop action and the idea is that if the stop action was placed as to say on this frame over here then your animation would stop at that point in time. Of course you could do far more elaborate things and string these things together to build things like games. This creative community are kind of sprung up around it and you start to see a lot of things that resemble those early crack intros and demos. You know little physics simulations, little generative pieces, fractals, those types of things. So at this time around about 2008-2009 I had taken on my first lecturing job from industry and I was looking for a way to teach programming to multimedia students. I had my issues with Flash though, namely it was expensive, it was proprietary and it didn't have Linux support and maybe it focused on a bit too much stuff that wasn't just programming like there was animation and all these other things and I just wanted to teach creative students the ideas behind programming so that they could go on to do different things with code. So I looked around and I found something called Processing which was kind of really surging at that point in time and what it gives you is this free editor that you can kind of just download that has within it everything you kind of need to immediately start running writing code and running it and basically you type whatever you want, you hit the play button and you get visual output. So it's open source, it's multi-platform and it's all kind of bundled together. You download the IDE, there's no fitting around with choosing editor having to work on how to run a compile line or anything like that it just kind of runs. And also a lot of libraries have been developed before Processing so you can connect it to things like Arduino or experiment with physics or video processing and ready a whole bunch of other things. So just some sort of inspiration, some ideas of what you can do with Processing I think this website over here which is generativecostalting.de is a website that accompanies this book called Generative Design and it has a whole bunch of little sketches over here sketches of basically processing programs and the idea is you can get a very good sense of all of the different things you can do with Processing because it has all of these simple examples which are obviously covered in the book as well. Another good website to look at is Fathom. Casey Reese and Ben Fry are the two creators of Processing and one of them is actually running this company which produces a lot of data visualizations so not necessarily using Processing but a whole bunch of really cool stuff that you can play with in your web browser to explore data. There's plenty of examples but I'll mention this one as well Variable IO a lot of generative type of stuff and I think one project which is pretty cool is this one for book covers basically an algorithm that generates book covers for a whole catalog of books using different metadata so each of these book covers is generated using things like the page count of course the author's name and the title but in addition to that the data was published and so on and so on to create a lot of unique covers. One of my hang-ups about using Java in 2008-2009 as a programming fundamentals course platform was that it was in Java not that I have any problems with Java but it didn't dovetail nicely with what the students wanted to do further down the line and I started looking around for Processing alternatives I was keen on anything with Python because I think it's great for teaching especially as a first language and Ruby and JavaScript were going to be something that my students encountered further along the line so it's pretty open to those as well so I did some research I found this thing called Drawbuck which was kind of a Python version of Processing which was neat unfortunately it was Mac only I also looked at this thing over here which was Notebox also really neat, an editor you can go and write some code and pop-solve this visual output but again Mac only so I looked further and I found this Shiba which is basically a multi-platform version of Notebox and I used this for this course and it worked really well I was really happy with it I actually bundled it all together with an editor and everything so students could just open it up and run it without having to install anything and it was a successful course as I said this was about 2009 and 2010 I returned to industry and I worked mainly as a front-end developer and as a designer in some capacity as well in 2015-2016 I returned to lecturing and what I was tasked with doing was a programming fundamentals course again so I took a look at the Processing website to see what had happened over the years and lo and behold a new Python mode had appeared someone had developed it and I thought this would be a good solution to what I needed to do to give you an idea of what Python mode looks like it's basically the normal processing editor but over here you have a dropdown where you can choose your mode and from there if you haven't yet you can install and select Python and then you get to write all the stuff you would usually do in processing except using Python syntax so you can see an example over here a size function to control the width and height of the display window a background color and hexadecimal and then a whole bunch of circles with different fills to construct this rainbow with concentric rings so there are a couple of cubits that I should mention about Processing's Python mode A, it's not actually Python it's using something called Jython which basically takes all of your Python code and translates it into Java which works pretty well however you can only use pure Python libraries anything with Sieb bindings is problematic so if you wanted to use something like NumPy you cannot Jython also at the moment is at Python 2.7 so Python 3 libraries aren't necessarily going to work with it so that might also be another limitation but the nice thing about Jython is it means that you're getting pure processing all of your Python commands are being translated to Java which is exactly what Processing uses which means that you have access to all of Processing's environment and libraries I've done a couple of experiments with it when I first kind of picked it up and decided to use it for my course this over here is actually a kind of port or sort of my own take on something from a notebook script which you can check out on the notebooks website and see what the original one looked like but basically it uses something called the Superformer to generate these different shapes and then by adding a whole bunch of randomized eyes and hair and other things to it you get these water bed type creatures and the idea is that every time you run the program it generates different versions of these creatures I set up the course basically a 12 week course and I wrote a lot of documentation which you can find on my blog at tabreturn.github.io or add hash processing Python reverse to the end of that to list just the entries that are applicable to Processing Python mode it's probably about 8 book chapters worth of content this is just the very first lesson you can take a look to that if you're keen on using it for your own courses or of course for learning Processing Python mode I also cover a whole bunch of other areas that are applicable to actually learning how to write Processing Python code for example, how computers deal with randomness how they deal with color concepts around data visualization and other things that basically complement using a creative coding environment like Processing Python mode if you want to check out all of the source code for the tasks that I cover in those books you can look at my github repository and the repo's name is tabreturn.github.io slash ProcessingPy just to give you an idea of what I cover there lesson one is basically just taking a look at drawing and Processing lesson two is basically using Bayesian curves lesson three is control flow but also things around randomness and how computers deal with randomness and lesson four is how they're actually animating Processing as well as using trigonometry for things like periodic motion and also reviewing stuff or using matrices for transformation operations and then in week five it's a whole bunch of stuff about data visualization so using external data like CSV in Processing to generate data week six looking at pixels basically how Processing can deal with pixels writing your own filters using image kernels things like that week seven is interactivity so how to build interfaces draw on Processing and also a simple little game and then I'm still writing these chapters but week eight looks at functions week nine looks at using vectors to create this simulation week ten looks at physics and then I'm also in the future planning to get into a lesson where you write your own 3D renderer but also look at Processing's 3D capabilities this is some of my student work basically an identicon generator uses IP addresses to generate different bugs this over here is a project where they had to come up with a currency so basically think of some fictional scenarios sci-fi fantasy whatever so they come up with that society and the currency they might use and then write a program to generate it the nice thing about this is even if students aren't really strong at programming they can use their drawing abilities to make the stuff look good so this doesn't do much in the way of impressive coding but by using impressive pictures you get nice results there's another example and I think just to close off what's next for Processing's Python mode well the project's in maintenance it should be compatible with future versions of Processing and maybe Jython will move to Python 3 support in which case you're looking at Python 3 in Processing Python mode but I don't know what's going to happen there that said I think Python 2.7 works really well for teaching beginners and my students go on to learn Python 3 applications in 80 years and they don't really notice the difference because at beginner level they're not seeing those technical differences between Python 3 and Python 2 and of course Jython is going to be around for a long time to come so I don't think Processing is going to go anyway. Another thing to look at is for interesting developments P5 which is a pure Python library which attempts to recreate Processing it's pure Python it works with Python 3 libraries but of course because it's just a Python library it doesn't have an editor it doesn't have an IDE but what you can do is if you want to take a look at play around with P5 you can use something like Thonny which is a beginner kind of Python IDE which comes with Python and everything kind of all bundled into this one little click thing that you can run and then start writing code and what you can do from there is you can install P5 as a package and then you essentially land up with a Processing-esque kind of environment with Python with sort of this P5 implementation of the Processing API it does have its limitations that's coming along obviously you're not looking into that huge Processing environment so you don't have that rich set of libraries and support that that you do with Python mode Shubot is also something to keep an eye on I know the guys are still developing that and I am flying a while actually I will be releasing a book on Processing Python mode in the very near future so if you are interested you can check out Nostarch that's the publisher it should appear in the listing pretty soon I'd love to chat more about Python mode and I'm open to any questions so thank you for listening okay so the question over here is why did I decide on Python mode rather than P5.js as Eilor has pointed out it's got a lot of libraries as well so for me I think the main reason I chose Python mode is because it's Python quite simply I'm pretty keen on teaching students to program in Python as kind of their first language and then also with the course and the degree that I'm kind of working in the students have to encounter Python again further along because it comes up in other stuff they do but I use it for the back end web course and also some stuff around machine learning so it's kind of just dovetails if it's really nice so yeah I mean I know people get into big debates and wars about what language is best but for me Python works really well I'm assuming that you know the differences between Python and JavaScript at least on a basic level I suppose I might add while I'm at it like one of the things I find really useful is that if we're writing JavaScript then I don't know I find students when they start writing code tend to be pretty messy there's a lot of stuff that might look like you know like this and then a lot of the time they'll kind of call me around and I'm going to take a look at what's wrong with their code and I spend like half my time just re-indenting everything so I can kind of read it and one of the things I like about Python is that if they're going to write any code white space is you know Python is white space sensitive so it kind of just forces them to go and like indent everything properly yeah from my point of view saves me a lot of time and having to like kind of force them to code properly if that kind of makes sense cool, differences between p5 and shoebox so p5 are you talking about p5 the Python mode p5 or p5.js Python mode okay so I'm going to assume that that's p5 the Python mode they're different they're different APIs so basically all of the function names and the whole way that they okay put it this way shoebox has tried to replicate nodebox whereas p5 has tried to replicate processing so all of the function names that you get in p5 were modeled off all of the function names and features that you get in processing whereas all of the functions that you have in shoebox are modeled on something other than processing so it basically just means that if someone is familiar with processing they're going to be able to slip into using p5 a lot more easily than they would let's just say shoebox the other thing about shoebox is that's quite interesting is that it's kind of natively vector based so underneath the hood it's using Cairo which is vector engine which is pretty handy if you're trying to output SVGs it kind of does that natively whereas you have to do a bit more work to kind of get processing to produce vector output cool another one question from East why do you choose to use processing such p5 rather than just familiar with libraries so I'm assuming in this question you're saying why not just use plain old python and then stick in some library and start to get them writing python code so I'll answer the question like that the thing I like about using something like processing is it has an immediacy about it there's one thing that you download it's multi-platform and all that kind of stuff and immediately you can open it up and you can start writing code and on top of that all the code that you write is going to produce visual output so if I wanted to draw let's just say a rectangle let's just do a quick rectangle function immediately it's kind of working I've got a rectangle there's no having to learn how to use the command line there's no having to go we're going to use this editor to write code and we're going to use this library to generate the graphics and we need to kind of put all this kind of stuff together it's kind of just this one download that all the students can find for whatever computer they're working on and immediately open it and immediately start writing code so for me that's why I chose it for the vanilla stuff that said remember that a lot of the students that I'm teaching are creative students this is not a computer science degree so the easier and the more visual and straightforward I can make things the better it is it's already a bit of a hard sell trying to get a bunch of students who enrolled in design degrees and arts degrees and that too to learn to program so I want to keep it kind of as non-technical as possible or at least kind of trick them into getting into the technical stuff further down the line and start them off easy has Cairo been considered to be replaced by a faster vector rendering library to be honest I'd have to look at what they're doing with the Shubat project I'm not totally up to date with it if I remember correctly I might still have a Cairo dependency I'm not sure but you'd have to check that out a lot of my knowledge about Shubat is from 2010 2011 another question from East do you find that later in the education they get confused between processing Pi and using libraries um no because I think the purpose of my course is to teach them how to program it's kind of it goes beyond any given language it's to teach them how to think algorithmically to introduce into all these computer science type concepts and then they all go on to do other types of things so the purpose of the course uh yeah it's to teach them how to think like programs basically and there's going to be two or three other languages that they have to use in the degree anyhow so there's no way I can keep everything Python all the way through um so kind of with that in mind it's like okay well what is the nicest way to learn it and I found Python mode works really well for processing would you recommend a workflow of tools to cut clean slash make sprites for graphic items from pen and paper any images in processing I'm just thinking um I know that there are libraries for sprite sheets um so like if I check out the processing website there's I think there's at least one sprite library uh so there's this one over here um I know I've never I've never tried anything like this um but perhaps there could be something where you use some kind of a tile editor um I'm guessing you're familiar probably with with different tile editors um but there are a bunch out there I'm just trying to think of the last one I used time I think was when I used years ago um but maybe you could combine you know something where students use a web camera and then get the stuff coming through tile and then maybe use a sprite library to do things um I'm guessing you could at least prefabricate or put together some kind of a basic structure uh and then get them working with those tools but to be honest I've never never tried anything like that um I can I can run through uh uh do you use Python system like this um yeah you can um so from me myself myself sorry I do use Python system libraries for hardware connectivity um I don't know what type of hardware you're trying to connect to uh but there are Arduino libraries for processing so if you want to do anything where you you know you want to work with Arduino to build custom hardware or anything like that there's a couple of different Arduino libraries that you can connect to processing so that's an option for hardware I actually I did a it's it's really rough um but I tested something like this a while back uh I made a repository for it um uh where basically um I had this thing that just makes like randomized versions of POM and then uh we gave the students Arduino boards that had potentiometers on them where they could kind of fiddle around and came up with different ways to control the paddles in POM um and that over there uses the if there's obviously an Arduino program but it also uses um the Arduino library for for processing system to make this work um so ALE what are the outputs of P5 sorry I'm just what do you mean by outputs like are you saying like can you make animations can you make graphics what what do you mean by outputs oh wait you see the image okay uh so I don't know if you're familiar with processing but um so here's this is processing right here if I want to make a new sketch um I can start with like a size function and I can say over here I want it to be like let's just say 500 pixels by 500 pixels and then what happens is as soon as I run the sketch I get an empty canvas and then the idea over here is that I can start to add things to that using various functions and there's all sorts of functions for drawing whatever you want uh so for example if I wanted to draw a circle uh I could go over here and say a circle at 10 10 on the X 10 on the Y 10 uh in size and what's going to happen over here is I get a tiny little circle and then from here you can actually do other things so there's for example functions where you can like save a frame so the idea behind this is you could save that as let's just say um circle.jpg and then you get a jpg out of it um but that said uh you can also do animation and processing so it does just because I'm putting out static images over here uh don't think that it's not capable of animation there's a whole animation uh kind of system to it that's used pretty often uh myself himself do you struggle in teaching the basic mathematics needed by students in order to create um sorry in order to make basic graphics animation slash layout uh no not really I think most of what they need to understand to get processing working is how to deal with X and Y coordinates um and then from they're adding to them subtracting from them is pretty easy I think the most mathematical stuff I usually get into is stuff around trigonometry um so uh I do some stuff on on how to generate different types of periodic motion and um yeah that's probably about as mathematical as it gets and then I do touch on some stuff about matrices but then I immediately show them after I've shown what matrices are that processing has built in functions for that so they don't really have to tackle it if they don't want to um I suppose it depends what course you you're trying to do um for me I'm I'm trying to avoid the mathematical stuff as I can questions from dji sorry um p a uh so does all p5 libraries are binded to python um p sorry I'm just trying to understand this question all p5 libraries um yeah so I'm assuming you're talking about p5 pi um so I mean I'll show you that quickly um p5 is pure python so any library that you want to use with it in python will work fine uh oh no p5 this is p5 over here this is a pure python library it's it's basically like they've rewritten processing in python whereas uh with python mode all of these libraries over here should work there are some that don't but generally speaking I think I've gotten every single one of them working that either the tribes in uh python mode for processing the only issue is sometimes you'll find that for example if I look at the examples over here uh that the documentation for the python stuff isn't as thorough as the java documentation uh if you know a bit of python and you know a bit of java you can usually work on how to translate them quite successfully uh a good example of that is um in the in the modes that that I've written um I've got one thing that uses over here a um a library for interface like GUI widgets uh called control p5 now this over here was actually written for the java mode in processing um but I it's it's fairly easy to get it working in the python mode uh and yeah I had no problems kind of using every single function in it just fine moving down another question from ALE with p5 not with python mode in processing or the same uh okay so I'm just assuming going back to the ALE question um I assume that the with p5 not with python mode in processing there's a follow-on from the question where do you see the image uh so I'm assuming that if you're using something like p5 um you want to know where that image pops up um in that case it's going to pop up in a window uh and the same if it's an animation or anything like that um it basically just spawns a new window and you'll see the graphic in there and just the same as processing mode you can say that or do whatever you like sorry so um the output of p5 exactly sorry are you saying like I'm not quite sure I follow that question uh ALE the output with p5 okay cool um another question from myself himself q&a do python implementations of processing core processing java code or processing compiled shed library to be honest I'm actually not sure um yeah I couldn't answer that question uh another question is there a trend of students or users dropping java or javascript progressively for python I mean what will be the preferred language for design students now or soon for processing or overall um yeah I think that depends who you ask um I think yeah I know a lot of computer science schools have moved from java to python uh in the design space there's never really been an established language I would say uh if anything processing kind of made the biggest splash in design uh and because it was based in java a lot of students might have learned java from that but also the uh javascript mode um is very popular as well and I think that javascript dovetails quite nicely with other things that design students might do so it might come up again when they're doing stuff for web or something like that I'm not sure um but it seems like a pretty diverse landscape now uh a lot of my students for example go on to take courses in game programming and if they're doing game programming they're probably not writing python and they're probably not writing javascript so um who knows what they're going to encounter next uh so I think to come back to what I said earlier like when I decided what I wanted to use for my course I figured um what's going to work best with my students further down the line in other words I want a language that they might encounter again and what would be the best language I feel to teach a first-time programmer to write code uh and for me I feel that python is the nicest first language someone can learn um I should probably add if no one is familiar with processing uh there is going to be a workshop on later today so I think I think that's probably going to be in the java mode I'm not sure uh but yeah if you haven't tried out processing before I strongly recommend you attend that and then it's pretty easy to switch to the python mode if you uh in terms of uh so dj in terms of performance is it stable usable for real-time video stuff in that um it depends what you want to do um in my experience if you want to do any type of video processing in processing it's going to be quite slow so what I've done in the past is like I did show you that you can do all sorts of stuff to manipulate pixels um so what I've done before is I've basically uh written programs that output a whole bunch of frames and then I just uh you know pack all those frames into a video using something like sfmpeg afterwards so that way I'm using processing to kind of pre-render stuff that kind of makes sense to you and then what comes out the other end can run at full speed because I just take a series of jpegs and put them into a video so I would say you're going to do like real-time video stuff it might not be up to the task but if you want to do stuff where you're kind of processing and then rendering the video sort of through processing so to speak um you should be okay um and then generative not hardcore 3D um yeah what is the fastest implementation of processing um probably the java mode I would assume because I I suspect that the processing mode that runs in the browser isn't as quick but that's said because all the python stuff is getting compiled into java somehow by jython I would assume that python sketches run as quickly as java sketches I would imagine but maybe that's something that's a bit beyond what I can answer there's also a ruby version of processing that's subsequently been rebranded as j ruby art I can't comment how fast that is if you want like real real power like you want to do processing type of work but you want like high high performance then you might actually want to look beyond processing so I can name something like open frameworks um which is c++ so I don't know if you're familiar with open frameworks um but yeah this over here is going to give you generally more performance kind of stuff than what you can get out of processing and uh I wouldn't want to use it for a beginner course for designers learning program but personally if I was doing some pretty demanding type of output I'd probably look at something like that another one that's pretty good that's come out recently is open render which is pretty powerful as well and it's written in Kotlin so if you're familiar with Kotlin which is kind of like a java kind of variant this is pretty impressive as well another one, what's the API for saving video output within processing so there is no API I basically just save a whole bunch of frames jpeg or png or whatever in a big folder and then use ffmpg just to sort of stick them all together in a video uh really good processing uh inspiration for processing art um there's a lot of great stuff out there uh I'm trying to think, I think creative applications.net is a really good place to look for inspiring projects in this kind of domain uh so it's not necessarily processing some of it might be processing but generally speaking it's all sorts of creative coding applications and a lot of the time that's hardware as well um but I would probably go to this website and take a look at a lot of the projects in there I think that's a great place to start looking for some some interesting and inspiring uh creative code pieces if you want a really inspiring project that I saw a long time ago you can go to Cinematrix this is kind of an interesting one it was written in pure python well not pure python, should I say it wasn't used in processing or anything like that but basically it's something for visualizing movies so what this actually does is it goes in the trees all the um chapter data from DVDs and then creates these fingerprint things which represent what's happening in each scene of the movie so there's something like a bit more obvious like let's just say I'm assuming you might have seen Solaris so the Tarkovsky um sci-fi, quite a slow film but you can see in the early parts of the film there's a lot of action and then there's certain parts where it's kind of slow and I think each one of these slices represents 10 shots and the idea is you can visualize all sorts of different things here like this is a soccer match you can see lots of action and then all the types of colors you'd expect to see in a soccer match um here's the matrix um I can switch this to chapter colors so I can see how the colors change during the film um but yeah pretty neat pretty neat example and it's from way back um I think this project is about 10 years old uh and I'm still like pretty inspired but I still show it to my students today uh just to show them what you can do and there's also a video on it where the creator's actually gone and put it all together in a short little clip that kind of shows you a comparison of what it does um so yeah that's pretty cool to see as well um yeah I don't know why it's not working but alright thanks everyone for listening and uh yeah if you want to reach out to me afterwards or at some other point in time I'd be very happy to talk thanks for watching