 I used to spend a lot of time at the mall when I was growing up and I'd go to these game stores and go there to play new games and try new systems and it's in one of these stores where I had my first experience with virtual reality, virtual reality. I can't say for sure but I don't think my 12-year-old self was that impressed, at least not as much as that guy. And I liked, I kind of felt that way for a long time afterward. I mean I liked lawnmower managed much as the next person but even when the Oculus Kickstarter came out I just didn't feel that excited. Until one day I was on Hacker News and then I saw this and this is Rift Sketch. It's a virtual reality live coding environment made by Brian Pierce and when I saw this something just clicked. It felt futuristic and I just kept thinking about it and thinking about it and after I had made my own version I was still kind of frustrated because I couldn't really pinpoint what it was about this that I found so compelling. So I just kept thinking about it and thinking about it and eventually my current state of thought is that what's really cool about this is it's just this very highly potential like rich medium for creativity and exploration. I mean here's this world where you can just create objects out of thin air and breathe life into them and that's kind of just sort of magical and so becoming the wizard on the cover of structure and interpretation of computer programs that's that seems a lot more real. So what I have is still pretty rough still in the early phases but I thought I'd go ahead and share what I have so far and kind of how I did it and also what excites me about the future. When I started this project I didn't really know anything about 3D graphics or the technical details of virtual reality or even game programming and I'm still very much a novice but kind of the cool thing about programming is you can sort of stand on the shoulders of giants. So the main tools I use for Meteor which is this JavaScript web framework and 3JS JavaScript library for doing 3D graphics in the browser. I don't really have time to go into details about these but they're they're really cool so check them out. But what these let me do was to focus on the kind of few simple ideas and steps for making this programmable world. So this is the part where I try and do a live demo. I should warn you every live demo I've done has had something go wrong so we'll see. So what you're seeing here are two different accounts connected to the same site and hopefully when I make changes in this one you'll see them in the other one and just size this properly. Okay so the first kind of main idea is to treat objects in the world as programs and programs as data and what I mean by that is that this floating yellow cube and this bouncing toroidal knot apparently in 3JS that's a default geometry. They're each controlled by a separate program and those programs are stored as documents or different entries in the database. So what do I mean by program in this context? I just created a new one and a program is basically just a string of text or two strings of text. One is an initialization function and the other is an update function. And there are a few other attributes but that's pretty much it. We have this list of contributors so different people can be added to edit the code. There's this name so you can easily find it in this drop-down menu. So that's kind of the first idea and then the second is to use eval and if you're not familiar with eval it's pretty awesome. It's also kind of dangerous but and so what we do with eval is that when you visit this site we're kind of just downloading all these programs and then using eval to run their initialization functions and when we change those initialization functions we also run eval to sort of change those and we get this live updating effect. And then the last part of this is the rendering loop and the rendering loop if you think of a movie it's as a series of images. These are poorly named variables. The rendering loop is responsible for drawing each of these images and what we're doing here is we're calling each of the programs update functions during the rendering loop and that's what allows us to have things like movement and make these dynamic and give them life. What am I looking for here? We can send this up into space. So now we have this 3D world where it's VR enabled although you can't see it now. So what do we do with this? If you're like me this is pretty cool so that's enough. But most people I show to are like okay what are you gonna do with it? So I have some ideas and I'd love to hear from anyone who has ideas or even better yet see you know like what you make with this. But kind of the first areas is education and I've worked at tech companies for a little while now so it's not surprising this is one of the first things I've been thinking about. Just as an aside I took this slide from a talk by Peter Norvig who's talking about education because I just love this little guy in the corner. He's like some things never changed. And so more specifically I'm interested in programming education using this for that. And I went to this talk recently by John Awada. He's the marketing lead at IBM and he had this great slide with his quote from Arthur C. Clarke which was the greatest single industry of the future will be education. The second greatest will be entertainment. I think the two should be synonymous. And the exciting part about VR and you know environments like the Construct Club or Rift Sketch is that I think it has this a lot of potential to bring these two different areas of education and entertainment together. Again this having this immersive sort of environment where you can really see and feel the magic of creating things with programming I think that could be really powerful for people coming to the field. Oh yeah and also like just having this virtual body like just imagine having students sort of come online and working on their virtual IDEs and having a teacher walk around and sort of be able to see what they're doing and then add their support and help. And I think that adds this sort of level of community or intimacy that we just don't have with current options for online learning. And so if we generalize like having a virtual body like changes how we learn online, what other things or what kind of changes does that make to other things we do online? These are just arbitrary JavaScript programs so in theory we can make more than just moving digital sculptures. We can call APIs or make applications. So what do those applications look like? I don't know like what is a weather app look like? What does email look like? According to this picture the only apps we use in the future are Facebook, SoundCloud and Google Chrome. It's probably not too far from what I actually use. And so at that same talk where John and Wada was speaking, Philip Rosdale the creator of Second Life was giving this talk and he was saying that VR right now is where the internet was in the early 90s and we have no idea what is going to become of it. And the kind of takeaway I had was that if you create a platform and give people the freedom to create amazing things can happen. So it's about all the time I had right now. I just wanted to thank all the organizers and sponsors and all of you. I've been more active on Twitter recently. I'll be tweeting about how I try to grow an avocado tree. So if you hated this talk but like avocados you can still follow me. And then the website is conseroke.club. Like I said, eval is dangerous so my rule of thumb is if you don't write programs you wouldn't run on your mother's computer. Happy Mother's Day. Thanks. Oh yeah, the source is here.