 So I'm going to make a confession. This is the most nervous I've been before I got on stage, which is why I'm at the beach right now and it's quite lovely. You all should join me. But in reality, I'm right here. And I actually could see when I was walking on stage, which is how I didn't fall in my face. But I'd like to go ahead and start by taking a picture of all of you and me on stage with my 360 camera as a kind of a prayer to the demo gods that my presentation works today. So I'm going to go ahead and hold this up. Everyone smile. Awesome. So as Bruce said, my name is Liv Erickson and I am a virtual and augmented reality developer evangelist. And if that sounds like one of the coolest job titles ever, it is. My job is basically getting to play with virtual reality technologies and then teach everybody else how to build with them. So I'm going to go ahead and set this down here. And I'm going to get right into this. A couple of days ago, I found this tweet that a friend of mine tweeted saying, a 2D website must fit on a computer screen. A 3D website can contain life-sized mountains you can actually climb. And I thought that this was one of the best 140 character representations of the VR web and its potential here. Because we have been building websites for specific sized devices for quite some time now. And with virtual reality, you get this ability to build entirely new worlds. So with that, I decided I'm not going to put you guys into slides for this talk. Virtual reality is here in your browser. And this is a virtual reality application running in the browser. As I said, my name is Liv Erickson. And I built this site about a week and a half ago now to talk about the VR web, how it is here, and how you can get started building for it today. The previous talk did a really awesome job of explaining some things that I had not even seen in terms of bringing 2D interfaces into the browser. And I'm excited to try out a little bit of that and play with it myself. What I'm going to talk to you about today are some of the frameworks that exist to bring 3D content into the browser specifically for VR so that if you do want to start building these virtual worlds in JavaScript, you can do so. So we're going to start on a little journey. I like telling stories. VR is a very storytell-y medium. And I'll start before I even get into the VR portion of this with my story. So I get asked a lot, how do you get into VR? How did you get into VR? And I got into virtual reality by doing something that I would never give advice for, which is saying, basically drop everything that you're doing and take the advice of someone on a YouTube video that you watch and completely change your career path to do something that sounds amazing, which is exactly what I did. I moved to the Bay Area in 2013, searching for something that I was really, really passionate about and all of this kind of life-changing technology that I had heard about in school but had never really had a chance to build. And so I was watching YouTube and I was watching a video right around the time that the Oculus Rift developer kit 2 came out. And I had this light bulb moment where I thought, wow, this whole, like my whole world seems brighter now that I know about this technology, I need to start working on this now. And in retrospect, that life-changing decision was probably my roommate turning on the light switch somewhere else in the apartment, but it left a really profound impact on me as I started to learn more about virtual reality and how it was going to be changing the way that we interacted with computers. So to get started, I'm gonna talk just a little bit briefly about virtual reality devices as they stand in 2016. How many of you are already building virtual reality applications today? Okay, four or five. How many would kind of like to, depending on what I'm about to show you, even the tool set, try playing with VR and building it yourself? Yes, all right, awesome. So like I said, I'm gonna go really quickly through this first part. I'm gonna talk a little bit about VR devices. So the first type of VR device that I'm gonna mention really quickly is the one that you see here that I'm wearing on my head, and that is a mobile virtual reality device. This virtual reality device is powered by a smartphone. I'm particularly using the Gear VR right now because I have a Samsung phone, but you also see this in forms of VR headsets like the Google Cardboard, now upcoming Daydream devices, where all of the interactions that the application use are powered by your phone and the sensors that are a part of that. On the other end of the spectrum with VR devices today as they're generally available to consumers is desktop devices, and these are things like the Oculus Rift or the HTC Vive, devices where the display is contained in the headset itself, but all of the processing power is being done on the computer instead of the headset. You'll have some of the different positional sensors included on the headset to figure out where is the user looking, but you also get a lot more power that you can throw behind your experiences to get more realistic looking applications and you would get a whole bunch of added bonuses like room scale VR and being able to track someone as they're walking around in a space and controllers and different peripherals that you can use there. So looking at this, big question is like, okay, well, why? Virtual reality, it's kind of new technology that's been around in several different iterations over the past several decades, and I often hear kind of like, okay, well, I'm not a gamer, I don't know if VR is for me. And I like to talk about the different applications of VR in a few different ways, one being that at its core, virtual reality is a very, very fun technology. I genuinely love what I do and I have a really hard time separating out my hobbies other than my Elvis impersonation hobby from my job because I love what I'm doing when I'm building things for VR because it's just this fun new way of interacting and engaging with the world around us and technology. It's changing the way that we think of computers and we think of operating systems and human computer interaction when we start to realize that for the first time we're able to put ourselves inside of these applications that we're building instead of just using applications that we're building. And to me, that's really interesting when you start to think about different opportunities that that presents for how we're able to do things like visualize data and understand different systems around us. And it also is changing the way that we interact with each other. I came on stage today and it was a little bit weird because you didn't know what I was looking at if I could see you. But when you start to look at things past one person in isolation standing on stage, virtual reality starts to show a lot of promise for how we're able to relate to each other. So this is an example that I like to show when I talk about this. This is me from about three or four months ago on vacation visiting my parents. This is my mom and my dad. And my sister wasn't able to come with me on this trip to visit my parents. We live on opposite sides of the country. And for the first time, having the ability to take a 360 picture, let me kind of transport my sister from California to North Carolina with my parents. And I can look back on this and I get really happy because I can revisit these moments in time where I'm able to share memories from not just a picture and experiencing something but what it actually felt like to sit in a given location. So I've taken a lot of pictures from the conference today that I'll post up online shortly. Some being from the audience and some being from backstage. So you could even put on the headset or even in your browser, as I'm about to show you, walk around and see what it was kind of like to experience this very event in someone else's shoes. So we'll move on from that. So when we start to think about virtual reality, we wonder, okay, what type of technologies are available to me and why does the browser make a really good place for a virtual reality application anyway? So there are a lot of benefits to the web, which I think everyone in here is probably familiar with. You have the ability to build sites and applications that don't really care what they're running on. They just work. They're able to interact with different kind of connected first atmospheres where you're building things that rely on data components and the web is built around networking and interconnections between devices, data and people, which translates really well into virtual reality once you start looking at that. You have in the VR world a lot of new concepts around what an application or an experience even is. If something is a six minute piece, is that an app? Is it a movie? Is it a video? How do you distribute that? And as we're trying to figure out kind of as a whole, what virtual reality experiences are, we're also faced with kind of some interesting distribution problems. Like is this something that goes in the app store even if it's only six minutes of content? And the web removes those barriers. It removes the need to build applications to work on specific devices. I can build a VR application that doesn't care if I'm on a mobile phone or a desktop VR headset. It will just work. You saw a little bit about building for VR on the web previously. And I'm gonna dive a little bit deeper into two things. One, how the heck does the browser allow you to build virtual reality experiences in the first place? And two, what are the tools and the libraries that are enabling people to build virtual reality experiences today? And what did they look like? I mentioned this as an example of that. So my wonderful graphics programming that was standing, I'll dive into the specifics of how I use one of these to build this site in just a couple of minutes. But first, it's important to look at the web VR API because that's underlying all of this. And it's some really, really cool technology. So at the root of everything, the web VR API is a, and it's just hit 1.0 a couple of, I'm gonna say, weeks ago. And it's this experimental exploratory API that's slated to start landing in major browsers shortly. By the end of this year, I think in some of the beta builds of the different of Chrome and Firefox and I got web VR 1.0, I wanna say like two weeks ago. And what it does is it offloads all of the information about how to represent a device that an application is running on. And it gives that to the browser and says, I don't wanna think about this, you do it for me. And then the browser will then look at the device that it's running on and it will abstract whether it's a desktop VR device or a mobile VR device away from the developer and the user and say, can I get positional data from this device? Yes I can, it's a phone, it has a gyroscope in it and I can tell what direction it's moving. We'll use that as my positional data. It will look at a desktop VR headset and it can pull out the information about the pose and the positioning of that headset at a given time. It has parameters to look at the system and say, hey, I actually found some other sensors that are tracking the entire room. Do you want the data of the person as they're walking around? And as a developer, I can apply this to my application by calling regular camera transforms within my 3D scene. So for this particular application, my browser doesn't care that it's running on a computer without a headset, it's just gonna work. And if I tried to query this by switching into VR mode, it'll say, you don't have a browser attached or I'm sorry, you don't have a VR device attached, I'm not gonna let you render the stereoscopically. And because of this API and kind of the ecosystem that's being built around it, there are a lot of tools that are coming into play that make it even easier to start building these 3D environments. If you've never done VR development or graphics programming before, one of the hardest parts about getting kind of familiar with virtual reality development isn't anything specific to the devices themselves, but it's a lot more of a challenge to start thinking about your applications and your interfaces in three dimensions instead of two. So a lot of tools are evolving around this that are helping make that easier. So this here is A-Frame. A-Frame is a project from the Mozilla VR team and that's what I use to build this website. And A-Frame is a markup-styled language that uses an entity component system to write reusable and highly flexible components to your application and to your environment that sits on top of one of those JavaScript layers that you heard about in the previous talk to do 3D graphics rendering. So you have already here this markup-style language that you can use if that's more comfortable for you when you're learning to do VR development. You also have different JavaScript frameworks like Babylon 3JS and all of this kind of wraps together to create these little scenes. So this scene in particular is something that I put together very quickly. So it's very low resolution. I don't have any high poly graphics in here but the technology all exists there and I'll show you some better examples of that in just a couple of minutes. So let's continue on looking at kind of what some of this looks like and I won't spend too much time here because you've already seen a little bit of this in action in the previous talk but this is a sample application that uses 3JS to draw objects onto a scene. Now I work for Microsoft so I sometimes use a little program called Excel and I'm not a spreadsheet. So I have trouble sometimes looking at data and saying, oh yes, this column intuitively makes sense. I can remember all of these numbers and pull that information out right away. And viewing 3D data and 3D charts in 2D just isn't really the way that it was kind of meant to be. It's not really intuitive. I could go into a lot more depth about mixing kind of 2D and 3D devices and UIs and interfaces but I think that that's another 30 minute talk in and of itself but the basics of what this application does as it's shown here is it's doing a couple of things with 3JS and WebGL. So the first several lines and I think that that's a little bit hard to read so I'll put the code all up, the code's all up on GitHub and I'll show you some links for where you can go find that later. So you just have to trust me for now that this is what it does. You have a renderer that's drawing everything to the page. You have your WebGL canvas and you have your scene and none of this is really special to VR. You're creating a perspective camera that you can use to kind of look at your 3D environment and we have a couple of different settings that we apply to that camera. The only three lines of code that's specific to VR in this 3JS scene are a controls object which will apply to the camera and say if the user turns their head this needs to be represented in your application too. The second one being a VR effect which is what's gonna render this side by side and stereoscopically saying if my phone screen is maybe this big it's going to be a lot different than if I'm rendering something on a headset that's larger than that. So the VR effect handles calculating the screen size of the VR device that you're using and figuring out how to make that comfortable and look right for the user. And then you have a VR manager that switches in and out of VR mode depending on when the user triggers that. One of the really interesting things about web VR is that we have a very, very rich ecosystem of web applications today and it's unlikely that one day everyone in the world is just gonna switch to VR and that's that. It's really important then that we have applications that can switch in and out of VR mode like if you're browsing something in a store and you wanna see it up close or move it around before you purchase it, that's something that will be really beneficial to have this flexibility with that isn't really there in other types of applications for virtual reality. The rest of the code up on this screen is just general plain JavaScript that's creating a couple of cubes and it's reading information from an Excel graph to then generate the size of those cubes and render them into the screen. And so that looks like this. It does not look like that. I'm gonna go ahead and switch over to the actual application itself. You get a demo early this time. So what this video was supposed to show was a video of the application running on a mobile device so that you would be able to see what that looked like running split side by side on a phone. So what I'm gonna do instead is show how it looks like in a regular browser but since I don't have a desktop VR headset attached to this computer I'm not going to be able to run that. So, all right, that doesn't wanna work either so we're just gonna play the video instead. It's why you have backups for your backups. So you can see here that this is just a regular website. I use Bootstrap to render everything kind of nicely and I have a file chooser where you can pass in an Excel spreadsheet and this particular spreadsheet that I chose was one that represents the cost of living in different cities in the US. San Francisco has a really big problem right now with housing and affordable housing in particular and I wanted to create something that visually showed the differences between this and other cities in the US. So this is actually a relatively simple project like I said, it's only using three lines of specific code to VR itself and it will run on a mobile phone just as smoothly as it will run on a desktop site. Of course, everything loads after I do the demo so I'll go ahead and see if I can make this a little bit bigger and I'll show you a little bit more of the code behind this. So, most of this is just using the ASP.NET files to do all of the front-end rendering but the interesting part comes into our scripts when we look at our page scripts file. So this is gonna be where everything is happening, aha, there we go. Now you can see the code that I was showing earlier and it's got this function paint canvas where everything is being rendered to the screen. I already talked a little bit about how it's just using 3JS. We have a camera here that we create and then we apply VR controls to it. We have our VR renderer here which you saw in the video applying to the mobile phone and the VR manager and then the rest of it is just calculating the objects that we have. It's creating these different cubes out of that information by giving it a geometry, it's a cube material in this case a normal material but you could kind of change this depending on the aesthetics of your own application. We set the position and the sizing of all of those cubes and then we create some text here to put that in front of the cube so you know which cities you're looking at when you render all of that. Once we do that, we're adding our cube. We create a plane for the ground. We position that plane and then we switch and handle the rendering based on whether or not we're in VR mode. WebVR uses a special version of this request animation frame that lets you hit the frame rates required for virtual reality. It's gotta be better than 60 frames per second which is one of the big kind of areas that people are looking into right now with WebVR is making it performant enough to run with that kind of performance. So looking in here, I added a couple of little move behaviors with the camera and if the position of the camera goes less than zero, AKA if you walk off the edge of the platform, it'll reset you. So coming back to what that looks like in this application, I'm gonna go ahead and show you the code behind the presentation that I wrote. So this in contrast to the demo and the application that I just showed you is using A-Frame to render everything instead of just writing it in pure 3JS. So what this is doing is we're loading in the A-Frame JavaScript file. We're loading in an extra text component so that we can add the text into the scene without using the geometry itself. And then I have another page component scripts here that handles the interactions of things in the browser and then I have a font file in here as a JavaScript file because that's what the text component uses. So the first thing that I do here for my A-phrase scene is I create this A-scene element. Everything that uses the A-frame markup style pre-pens their elements with the A tag. So you have A-scene and that's saying everything within here is A-frame related and should be rendered as such. The next thing that we do is we're gonna set up our assets and our assets are gonna be the things that we're interacting with inside of our scene. So I started off the presentation with a tweet and I just have several images in here that I've been using to kind of fake having UI elements or 2D elements in my scene until I can find or make some pretty nice 3D models of the headsets themselves. I was just putting them in with pictures but you also have the flexibility of loading in obj files or other 3D models to make more complicated scenes. I also have the video that came in and did not play that I brought in and then I have my font mix in and that's really standard kind of asset loading in here. You also see that you kind of are starting to recognize a pattern here with how these elements are created. So it's a mix in, I'm able to define that I have a font and I can just assign this mix in to any of the text objects that I have. I could also assign it to any other objects that I had that wasn't text but since a cube doesn't really have a font it wouldn't make a lot of sense. But you can create these mixing components to change up how you want your application to look and to not have to be rewriting the same components for everything. Once I've loaded in my assets I'm gonna start building my scene elements. So instead of having to come in and bring in a 3D camera and apply all of these different things to the scene like I did in the previous experience I just say that I want a camera and I want it at this position. I can also do things like start adding in lights and adding in entities. These entities are components that I'm creating that can really be whatever I want them to be. So in this case I create a stage that holds everything that's kind of default with the scene. So the pathways that you saw, the couple of little trees that I built all of those are held in this scene so that when I wanna go back in and when I showed you that image that the 360 picture you could actually see that right away. And I could show and hide that without having to look at all the different individual components to that. So I created a couple more of these and they all have these different elements to them. So instead of having to set all of the specific components to the geometry to a geometry object and then assign a material to the material object and colors and normal values to that I can just do all of that to one object here. So my path is made up of a couple of different boxes. I set the width and the length of those positions. I change the rotation for some of them. I assign them colors and then I have my box taken care of. And what this is doing in the A-frame JavaScript code is converting all of that to JavaScript items so you can interact with the underlying code behind those objects but you don't have to unless you really want to. So I built a couple of trees here. I put in some clouds and then I come in and I start defining different areas of my talk with kind of the different sections they go to. So I have this pre-title slide which is the placeholder that I use to just create something that sits in front of the camera and uses the tweet as a placeholder to kind of start my talk with. And I then go into my title and as I'm creating the title I'm putting in things like a picture. I'm adding in different entities with text so that I can define kind of what you're looking at in this scene otherwise without context it may not make a lot of sense. And then I'm creating these boxes that have custom components and or custom elements that I'm building this one is called click hide start and it does what you would expect it to do. It clicks, you click it and it hides the start menu. And what this lets me do is this lets me come over here into my page components and write some really simple JavaScript to register the click hide start component as a function and an event that I can trigger when I'm interacting with the object on that particular object. So in this case what it's doing is it's listening for clicks and when I click a particular box it will hide its parent element. I go in and this is how I define pretty much all of the behaviors in my scene for this particular application. I can register different components to show and hide the different parts of the application that I'm using but it looks pretty standard. It's pretty straightforward. It's not really fancy JavaScript. I've only been doing web development for a couple of years and it's almost entirely been for web VR. And this has been a really straightforward way for me to start defining custom behaviors for things in my environment. What I should probably go do is figure out why clicking the video didn't work. Oh, and I can see it. Okay, so I made a typo in terms of what I named this. Anyway, so moving kind of back into the index.html file I go through these different components but the really interesting and fun part about using these to build VR applications is that it's all less than 200 lines of Markup and I have all of this to generate essentially an entire conference talk for me which is kind of fun. And that's kind of one way that you can build these VR experiences but as I showed you, you can also be writing it directly in JavaScript using those libraries yourself. On top of all of that there are a lot more tools that are being developed to start kind of using things like WebAssembly, ASM to generate web VR code from things like the Unity or Unreal game engines. So I have another video that I'll pull up really quickly that's showing an exported Unity application that runs in web VR. So I have this running on my desktop and I'm wearing my Oculus Rift in this picture and I'm just kind of looking around the scene that I built and I've clicked and you can't really see it here because you don't see me but this little button down here is what allows me to toggle in and out a VR mode for this. And this is really interesting because it provides another route to getting applications in the browser that work with web VR even if you're building that somewhere entirely separately like Unity. So there are a few other things that I've started playing around with here. One being what about JavaScript that doesn't run in a browser itself but may run on the desktop? So a couple, about a week and a half ago I taught myself a little bit about NPM and got an Electron application running. So what you can see here is this is actually my talk almost exactly as it was running in the browser, running an Electron now. It's been wrapped and it's running on the desktop. And there's a lot of really interesting use cases for this. You get to write desktop applications now in JavaScript using Electron that work in theory for VR. This version of Chromium that Electron uses doesn't actually support web VR yet but since Chromium and Chrome are slated to get web VR support within the coming months it's probably only a matter of time before you can put that into VR mode because everything else works without any changes. I just wrapped it up in the Electron package. Of course there's so many other things right now that are happening in kind of the web world that continue to be really exciting for virtual reality. Things like web assembly. Being able to create experiences that maybe you surface when you're at a particular location using smart devices and being able to kind of pull in all of this information and start working with it in a virtual sense is really, really exciting. So kind of moving back to the end of the presentation there are two last things that I wanna show you. One, I mentioned that I was hanging out backstage so here's a quick little picture of me backstage before I came on. There's me. I took this with my 360 camera and I put this up online using a tool called Visor which meant that the time that I took the picture to getting a VR-ready 360 photo up in Distributable was about two minutes. If you want to, you can actually go to this URL here 360.visor.io slash v slash moz and you could look at this on your phone right now and see how that works in a mobile browser which will again have that VR support and you can take a look at what it would be like to be sitting backstage with me. So with that kind of in mind you hopefully have had a chance to start to see that we're really just at the beginning for a lot of this. You know it's a really experimental time for the virtual reality industry in general specifically for the VR web but it's one of the most exciting places that I've had the joy of kind of working in because it's changing really fast and it's growing really fast and it just enables so many different scenarios. So I'll go ahead and tweet this link out later and kind of switching back into the last thing here. If you want to learn more about virtual reality in general, the building for the VR web. I have a repository up on GitHub here called Learn VR where I've basically just been putting everything I find that I think is a little bit helpful for virtual reality development up here. You can follow me at Ms. Livy Rose if you want more VR tweets than a single person could ever generate, that's me. More than happy to continue answering any questions offline and I haven't had a chance to add this into my experience yet but I did actually just release a book on getting into virtual reality development so if you want to learn more about that too you can come find me later and I'd be happy to chat with you because it's free for a couple of days so you should. So with that I'm gonna say thank you, see if we have any questions and come find me later if your questions are not answered. Thank you so much. Will web VR revolutionize gaming? I think that there's a lot of benefit to gaming once the kind of browser is able to support it at the performance that virtual reality kind of meets. I think that the bigger question is kind of looking at how virtual reality and the VR web is impacting gaming already and a big thing that I see is one, we're already starting to see examples of games being built with A-Frame and I think that that's really powerful because what it kind of shows you is that there's this potential to release a game that works on the browser, whether or not you're in VR mode you can add that support with relatively little and that's a dangerous thing to say because there is a lot of optimization that generally goes into photo-realistic games especially for VR at this stage but I think that that potential is all there and it's just we're waiting for more people to get excited about developing for it and creating those experiences. I'm talking to all of you there. What other industries is it likely to get into? I think that and I might be optimistic because that's my job a little bit but this is generally believe that everything has the potential to be revolutionized by virtual reality. I kind of look at where we were not even 10 years ago with mobile applications or even web applications at the time and you're starting to see industries picking up virtual reality very quickly. Things like the medical industry and being able to do things like pain management or doing kind of therapy techniques in VR. Getting over phobias is a really big one in the medical industry. I like to show the Excel graph visualizer that I built as an example because I think that as big data gets more and more prominent we're gonna see a lot of opportunities to start visualizing data in new ways. One of the things that I really wanted to do but haven't gotten a chance to is kind of replicate that project but doing things like finance. How much more interesting would my bank account be if I could go in and see it in stacks of dollar bills everywhere and be able to relate to that in a very physical sense rather than okay I think that number may have been lower or higher than yesterday but I don't actually see where it's going whereas if I had a VR experience for my transactions I could see my money get into a little car and drive away if I bought a car or something like that. We're not there yet but I really do think that there are examples of virtual reality that are just gonna come in and change everything and a lot of the really cool stuff hasn't even been thought of yet. Somebody maybe more skeptical asked will web VR suffer the same 3D fatigue that the movie industry went through after its initial hype? I don't think so but I can't speak for an entire planet of people and creators. That's a lot of power in which case then no, everyone's gonna love VR, there's no questions there. I think that it's important to be realistic about what the technology is capable of today but I think that given what I've seen I don't see hype going away and I haven't over the last two and a half, three years as releases for different products were delayed and we're only really just at this very, very tiny, tiny beginning of this ecosystem that's building up. People like to look at low percentages of adoption but realize that we're still so early on that it's kind of like looking at a super Nintendo and saying like, oh that's not actually going to change like gaming, no one's gonna have consoles in their house in 10 years. So I am very excited about VR. I don't think that it's gonna go anywhere because I think we're already starting to see cases where enough value has started to been being provided by virtual reality experiences that there's not really a reason to say, okay well maybe just because it doesn't have as much hype as we thought it didn't already do some significant things. One example that I think really illustrates both that question and the one before it is that about a year ago a doctor was able to save a little infant's life by walking through a 3D scan of her heart and that's not something that ever could have been done before this technology started to come into play. So if you ask that child, do you think that the hype for VR is gonna go away? Probably not because it's already shown that it has some really very real implications and I think that as we kind of look at the consumer space and what people will expect from it that's going to evolve a lot over the coming years but I think that the value that it's already adding to so many places is just not something that you can take away easily. Cool, last question is less philosophical and more dev focused. How can you possibly automate UI tests for web VR? That's a really, really good question and it's something that a lot of new startups right now are kind of looking at. They're looking at how do you capture analytics in VR anyway? Like are you tracing everything that a user is doing as they're walking through your environment? Like how are you generating those depth maps about where they're looking, how they're engaging? So I think that it's really interesting because right now you're at a stage in the industry where more of it is like is the user even understanding where they're supposed to look and how do you build techniques around that? But I think that when you start to kind of look at this the tools will evolve around 3D development, 3D environments, I could write a script pretty easily that would walk through that and if I had done that I wouldn't have had a video that didn't play when I got on stage and that technology all exists right now. It's just a matter of having developers who are really passionate about it, building these tools and like I said there's so much opportunity right now for kind of taking all of the information that you have available on the web today and synthesizing that into things that are going to help make VR better. So it's not probably an actionable question to answer right now but I think that potential is there and I'm really hoping that maybe next time I'm at a conference like maybe next year at this conference someone will have built that library to do that. Cool, thank you. Give it up for Lev Akson. Thank you.