Robert Long - VR/AR Open Metaverse

devtools.fm July 29, 2021
Source
{/ TAB: SHOW NOTES /} Join as a we talk with Robert Long (AltSpace, Mozilla) to talk about all things open metaverse! {/ LINKS /} - https://www.youtube.com/watch?v=UIwdCN4dV6w - https://altvr.com/ - https://hubs.mozilla.com/ - https://www.babylonjs.com/ - https://threejs.org/ - https://sketchfab.com/ - https://en.wikipedia.org/wiki/GlTF - https://modelviewer.dev/ - https://www.blender.org/ - https://github.com/mozilla/Spoke Tooltips Andrew - githup.co Justin - https://egamebook.com - https://github.com/mrbbot/miniflare Robert - https://vitejs.dev - https://github.com/NateTheGreatt/bitecs {/ TAB: SECTIONS /} [00:00:52] AltSpace [00:04:51] Burnout [00:11:14] The Future of Collaboration [00:14:33] Mozilla Hubs [00:27:49] Open Metaverse [00:42:05] Tooltips {/ TAB: TRANSCRIPT /} Robert: So things like annotating 3d objects with metadata so that a screen reader can tell you, you're looking at a duck, or this is the wall in front of you, things like that. And you can use it for all sorts of other things. Metadata is incredibly useful for all sorts of user interactions and things like that. Andrew: Hello, welcome to the devtools.FM podcast. This is a podcast about developer tools and the people who make them I'm Andrew. And this is my co-host Justin. Justin: Hey everyone! Andrew: Our guest today is Robert Long Robert's work over the past few years has been focused on making the VR space on the web more open and collaborative. He recently left work at Mozilla to further focus on making VR experiences more inter-operable. Robert, would you like to talk more about how you got here and what do you do? AltSpace [00:00:52] Robert: I've been a web developer for a long time. Before I got into 3d stuff kinda did all sorts of like unique single page web apps. I worked on like a music social network that Andrew knows about. We went to college together and I've worked on that while I was there. And then I did some stuff with robotic cinematography later on Marquez brown Lee actually has a video on Kira one of the robots that I worked on and built some software there. And that kinda got me into 3d a little bit more formally. Just tinkering around with things in my spare time. And that's about the same time that like the Oculus rift and the HTC Vive came out. I saw that for the first time I was up in Portland and I was like, I gotta do this. This is the future. Like I have to change everything about what I'm doing and go work on this full time. So I Moved into a friend's dining room in San Francisco. And I taught myself a unity, so left the web world completely and started learning 3d there and got a job at Altspace. I got really lucky, met a whole bunch of people in the VR community there and started working on that. And I was there for about four months before Altspace was potentially shattering. And then they got bought up by Microsoft and I decided to jump ship and go work with another former coworker from Altspace at Mozilla. I worked there for three and a half years on Mozilla hubs, which is like a browser based 3d social Communication app kind of like zoom, but you're an avatar and you can talk to each other in a VR headset or on your mobile device or in a browser wherever. And it is amazing just pushing the limits of what you could do in a web browser, like just using all of the different web APIs out there. I could definitely talk more about that. But yeah. And then just recently honestly, I was all burnt out and was ready for a change and I feel like I got to do some really amazing work there and it felt like it was time to move on to the next thing. And so now I'm working on the whole interoperability, web VR, 3d web ecosystem in a new open source sort of way. Andrew: Yeah. So let's start at the start. So for our listeners who might not know what alt space is or was can you explain that to us a little bit? Robert: Yeah. So if people are familiar with VR chat it's, your avatar and you kind of role play as different things. A lot of people have created memes out of it. I'm sure some people have seen it. Altspace is like a much more more focused on private experiences, more focused on communities and things like that. Some of the most active ones where like educators or symphony are there's a really vibrant LGBT community there. Just a lot of really close knit communities that would meet up inside of these virtual spaces. There's a lot of like worlds that you can visit. The interactivity is, has become a lot more advanced since I left. That was awhile ago now, but when we started out, it was like, you're hanging out with friends around the campfire and you're feeding each other virtual marshmallows. It was a lot of fun. It was a really big leap in what you could do in social VR. Like they were one of the first people to like, come out with this very bridge VR experiences. They had maybe the first of your wedding in Altspace, which was pretty cool too. It's once Reggie Watson, Justin Roiland, was one of the creators of Rick and Marty, was in there doing live performances. Virtual events was like a big part of the platform. So yeah, I worked on the developer SDK or around that and trying to make new, interesting content able to be produced. And actually a lot of that was web based, so you're writing in JavaScript and you could use three JS and it would run it in a web browser, but then it would interact with the underlying unity game engine. So yeah, it was pretty cool. Burnout [00:04:51] Justin: Maybe before we dig into another technical topic, it's something that you said earlier in your introduction. So you're going through this transition where you're working for Mozilla, and now you're like shifting to do your own thing, but you went through some burnout and 2020 beginning of 2021. I feel like a lot of developers are feeling burnt out. I know I myself have went through that whole thing. Shifting to do your own thing when you're fresh and excited can still be pretty scary shifting to do your own thing when you're feeling pretty burnt out can be really scary. I it's maybe a little bit off topic for dev tools, but are you comfortable at all sharing any of your thoughts and experience on that? Just because I feel like it's very relevant in our current. Robert: I can only speak from my own experience, but yeah, I've spoken to so many of my friends and family recently about burnout and it's every industry out there, but from my perspective in the tech industry there was just a lot of pressure put on all of us to maintain release cycles. And we are trying to function at a normal productive rate while also in the middle of this pandemic, in the middle of a lot of very just traumatic current events happening in the world. It's just really hard to stay focused through all of this sort of stuff. I think Mozilla is a great employer and has great policies around making sure that we have enough time off or giving a lot of like personal wellness days and things like that. Unfortunately, and I think for me, I needed a lot more time than just, you know, a day here and there. It was much more deep burnout than some of these things can happen. And I think a lot of people are running into that. And I don't really know what the solution is. For me it was taking some serious time off and unplugging for awhile. For me, it wasn't unplugging completely. But I stopped programming for a long time. And I focused on organizing communities instead really focusing on talking to people like flexing all the soft skills versus trying to stare at a code editor, which wasn't working anymore. Unfortunately. So I think I'm recharged now. It took me about three months for some people I can imagine that can take longer. Maybe it's shorter. Everyone's different. But yeah, it was a huge, huge improvement for me being able to do that. So yeah, Andrew: Yeah. Robert has a long and storied history of getting burnt out on one thing and going to another, I think you uh, you, did you quit college twice? Robert: Yeah, I did. I gotta add that to my PolyWorks work the two times college dropout! Yeah, I think technically the first one was a leave of absence, but yeah. Yeah, I I love what I learned in college. I love the first time I was in college and the second time, and I think I gained a lot from both of them, but I'll think of it as like a gap year. I learned a lot coming up here to Silicon valley when I was 18, 19 years old and really like experiencing Silicon valley at its, I wouldn't say it's the peak, but it was crazy when I moved up here and I experienced a lot. And that really helped inform what I wanted to do in this industry. So, yeah, I feel really fortunate to have been able to do that. It was a huge risk but it worked out! Andrew: Yeah, back then. I definitely envied you a little bit. You had already found a skill set that was so workable. And you're like, I just can't like focus on this school stuff. I got apps to build and that's something that I've definitely taken forward. Robert: That was the challenging part of being in school and having the urge to build all this sort of stuff. You're like, oh, I know just enough to be dangerous and build things that sorta kind of work. The first company that I worked for really took a chance on me. And I think I did a pretty good job on it, but it was definitely a risk and I was learning on the job the entire time I was learning on the train ride to the interview for the job. So yeah, it's a lot of work and yeah, going back to burnout, early on in a person's career we push ourselves really, really hard to like even get into this industry. And I've definitely know that like you need to take that time to really address all of that as well. If you're feeling burnt out, like after I did that first job, I also faced a similar level of burnout. Not quite as much as 2020. That was a whole different ballpark, but took some time off and really re-evaluated things reevaluated, like my relationship with m y work and my personal life, trying to learn healthy habits. And it's a little bit of a constant thing that you have to learn. It's tough for some people, but yeah, I'm getting better at it. We're all working at our own things and yeah, it's been a big learning experience this last year. Andrew: A few years ago before I started working more in open source. So I'd look all the people tweeting about being burnt out on responding to GitHub issues or like just looking at their GitHub notifications causing anxiety. And I was like, "ah, that'll never happen to me!" Then two years later, I'm like, I don't even want to click that blue dot. Robert: Yeah. I definitely feel that working on hubs we had a pretty small team and just overwhelming amount of support. We had just tons of people using hubs because they were, moving their events to a virtual medium. And yeah, that's a lot to put on a small team is like this giant influx of of new users. And this happens, this is like a, usually a success story, right? If you get product market fit and all these users start coming in the door and having to scale up real fast is a great problem to have. But also doing that in the middle of a pandemic is a lot of work. Andrew: Okay. Robert: So yeah, Justin: yeah. You talked to her a little bit earlier about so when you've taken some time off from programming and focused on building communities and I mean, community during the pandemic has been a hard thing to establish. And like you just said, a lot of people were moving to like remote solutions, like hubs and many other things. I'm attending Recurse currently and Recurse has their own sort of virtual like gathering space. And it seems like these virtual spaces are gonna continue to be pretty vital to remote culture. And there's like several different forms of this, there's like 2d where you have a web browser and you have like space. The Future of Collaboration [00:11:14] So I think of like gathered town is a piece of software that I think of where you're a 2d avatar and a 2d Zelda, like world, and you're walking around and you've kind of like join a conversation. And then things like hubs, which are like 3d in VR. Do you think that VR is going to be the standard going forward for these collaborations spaces, like VR in particular will be best suited for this? Or do you think it would be like a hybrid or what are your thoughts on the the future of these remote collaborations? Robert: Honestly, this is one of the biggest lessons that I think we learned at hubs, which is that virtual reality is great. The experience that you can have and a VR headset it's amazing. It's like nothing else. You really feel present with other people there the experience that you have and the abilities that you have. It's really interesting. If one person in the experience has a VR headset, then it elevates everyone else's experience because they can bring in 3d media and manipulate it a lot easier than other people. We, we were saying when working on hubs that each platform has their super power. So if you're on a touchscreen, you can draw a lot better. If you're on a desktop, you can bring in links to content a lot better. And if you were in a VR headset, you could manipulate the objects a lot better. So, that, and just the availability of VR headsets, the need to be able to join these events on the go the rise of PC gaming, like kind of makes that a little bit unclear. I think we need to design for all the different platforms and the web is a really great way to do that. Like you can build once using library like three JS or Babylon or whatever 3d engine you pick. And you can release for all these different platforms in a similar way that you're just doing like responsive design, adding VR support is a little bit more effort than just like designing for different screen sizes but it's the same concept. And I think like we should approach these sorts of virtual experiences in the same way. You're going to have a much larger audience for a product that can support all of these different methods of joining in. You're gonna be able to bring in people with different needs like not, everyone's going to be able to get up and move around in a VR headset. Especially if it's like a six degrees of freedom, like where you can actually walk around your space. Some people are only going to have access to a laptop or a phone. So, yeah, I think it's important to do all of them. I also think like for gather town that's a 2d experience. The 3d experience is really nice too, but each of those has its own strengths and weaknesses as well. Like a 2d experience you can create new content really easily. Growing up, I learned how to do pixel art and I could create some content for gather town if I wanted to. Whereas 3d modeling has a little bit higher barrier of entry. So that's really cool. Like you can build more content, you can create richer experience. It's like more accessible to people to build out their own space in something like gather town. And then hubs like the 3d experience lets you, well, make richer spaces where you can go vertical or whatever else. So yeah, I think there's a need for all of these. And I think that they're all great for different use cases. Mozilla Hubs [00:14:33] Andrew: Stepping back a little, we've talked about it a little now. Mozilla hubs. What is that for people that might not know? And how does that, like, how does it differ from Altspace. Robert: yeah. Mozilla Hubs is browser-based 3d communication app and what I mean by that is you get sent a link like you would in zoom or Hangouts and you can join in to a room like we're in right now. And you can see each other as 3d avatars. So we have like robots or humanoids, or you can be a Fox or a carrot, or any inanimate object, if you want as your avatar. We've got like a lot of different customization options there. And you can do what you want with the space. You can design your own spaces in this other tool that I helped build called spoke or you can use one of the existing scenes that we have there. And you can, have a meetup. You can have just a get together a game night. You can share your screen, play Jackbox games. You can do a lot of different things that you could do in zoom, but then you can also bring in 3d objects and create like a 3d collage or you can have a like mixer where You can have a lot of different conversations going on at once. Because we have spatialized audio. So if I get further away, then you can't hear me as much. So we can self-organize into different groups. And that really helps if you want to have a party or the social interactions between conference talks or after the meetup, things like that. Which was really, really helpful during the last year is to be able to have that unstructured time to have multiple conversations going on at the same time, that would be otherwise really hard to do in zoom. Like, could you imagine, like having to use breakout rooms just to be like, Hey it's good to see you again. It's been a long time. Let's catch up. So yeah, it helps create this like unstructured communication that we've been missing for the last year. Andrew: Yeah. Trying to have a conversation on zoom with like more than three people is just terrible. Robert: Yeah. Andrew: The thing that always happens, people try to start talking and they talk at the same time and then they both try to be polite and let the other person talk and you just get this, like, it feels just so much tension there, hopefully spatial audio and the technologies you mentioned could help fix that. Robert: yeah, I think so. And like gather town's doing it too. Yeah, it's becoming more and more of a thing like these days. Another thing is that hubs does this all on your browser too. We've got I think an advantage over something like Altspace or VR chat, because you don't have to download anything. I can just send you a link and in 10, 15 seconds, you're in. So when you got your microphone set up, but most of us do these days. And yeah, that alone is humongously powerful. Like I can tweet out a link and get 15 people in a room. Yeah. Talk about stuff. And that happened one of the VR reporters out there had a, just like informal get together. He was testing out a new VR headset and I popped in and he was like, oh, you work on the hubs team. Let's just talk about like hubs in this. He was testing. I think it was a quest to right before it came out. And he was like talking about all the new features and stuff like that. It was great because we didn't even test on the quest to, we didn't have hardware. It just worked because it was one of XR and Oculus quest to support this WebXR. Andrew: Yes. It's been interesting to see all these like conversation innovations that have happened over the past year, just because we've all been speaking. Our offices. reminds me a lot of a clubhouse. Robert: yeah. Yeah. And a lot of people are using it like that too. I've popped in on a lot of different conversations in a very similar way. The, I think what's different is there's no discovery mechanism inside of hubs. And at first I thought that was a really bad thing. But now that I see how people end up using hubs I think it's, I think it's mostly a good thing. I think like private VR spaces, at least for me are much more profitable than public ones. I've been in VR chat spaces, and haven't always had the best time. And being able to choose which people are invited to your VR space, I think is really powerful. Not to say that you can't do that. And all these other platforms, it's just a link is so much easier to be like, "oh, I just want to send it out to this discord community. Or I want to send it out on Twitter to absolutely everyone or just for this call" you know? So, yeah, what's more powerful than just having a link that you can share however you want. So that's great. Justin: it's a fun idea. I always have wondered what it would be like to have a mix of both. I haven't personally used hubs, but I've played around with some similar sort of Multiplayer VR experiences or whatever that are not necessarily social, but the idea of like public private spaces is interesting because, yeah, you're, I think you're right in the sense that if you're just in a like, Hey, this is just a bunch of random people from the internet, it could be a potentially toxic and, or not great place because it's the internet. But at the same time, there's like this spontaneity to it, but having a sort of a communal space where communities can gather that are around potentially similar topics or something seems interesting. Robert: yeah, any community, it takes good moderation strategies to create that healthy community. So we definitely encourage people to attach it to those existing communities. Within the hubs community our community manager, who's now the product manager of hubs Al Glyn sky McLaren. She's really been instrumental in creating that like very thoughtful and like inclusive community. And I think because we set the example, we have like our weekly meetups. It's spread across the different hubs communities out there. So hubs being an open source project like anyone can fork the project and spin up their own hubs. We call it hubs cloud instance. And so you can have your own copy of hubs and you can modify it however you want. And they carry along that same ethos, which is really good to see. Andrew: Something you mentioned briefly was accessibility. I know you're talking about like accessibility from like different browsers perspectives, I think. But what about like ally accessibility? Screen readers and disabled people is stuff like that built into the VR platforms that you help build? Or is that like still something that's on the horizon yet to be done? Robert: It's still something that needs to be tackled. It's something that I worked on for a while in the last year I was like spearheading a project to get accessibility to just our 2d UI. But in the process I was working with our design team on brainstorming ways that we could bring that to XR. So things like annotating 3d objects with metadata so that a screen reader can tell you, you're looking at a duck, or this is the wall in front of you, things like that. And you can use it for all sorts of other things. Metadata is incredibly useful for all sorts of user interactions and things like that. I think there's a lot more work that needs to go into that, but there's communities out there around particularly around this one 3d file format that's called GLTF which is a standard 3d format. If you're unfamiliar with 3d formats it's hard to explain how it's different, but if you've ever worked with them they're really hard to like port from one engine to the next, or bring from one game to another because each 3d model format describes their visual characteristics in a different way. So GLTF has a standard material that basically makes it really easy to port between all these different experiences. And we've seen a humongous amount of adoption of that in the last couple of years. I was on the working group early on for that and wrote the first unity importer for it. And yeah, since then it's exploded. I mean, Amazon, Google, Facebook I'll use it. There's a giant 3d content repository on Sketchfab. That's fantastic. Cause I don't know probably millions of pieces of 3d content on there. Apple's got a competitor called USD Z, but it's also interchangeable. You can go between the two pretty easily. So yeah, I think the accessibility community can really use this new standard 3d format as like the next HTML, but for 3d. And so we need to start pushing accessibility into the 3d formats themselves so that these object checks can be semantic in the same way that the web is and describe themselves and make it easier to use them with screen readers, as well as just other ways of navigating 3d content. Justin: that's awesome. I actually just had my first experience with GLTF a few weeks ago. I, long time ago, my first sort of experience in open source was messing around with blender. So I I have this little set of tools that I'm working on for obsidian, and I made like a little animation in blender and exported it in GLTF and Google has this web component. They call it model viewer. But just built on three JS that like, lets you easily import a GLTF to display. And it's an interesting time trying to figure out how to get all the animations and everything working in that. It was a fun experience! Robert: Yeah. And the team over at Google worked really hard on that. It's pretty awesome to just be able to drop a one web component into your page and have like a 3d component. And yeah, I know they've got like some scripting stuff available for it now. You could probably build like product configurators out of it, or at least really bridge previews of different 3d objects as well as like integration into AR kit and all that. So it's pretty cool. We've come a long way really fast. I haven't seen another like standard, like this, move that fast. Because 1.0 spec was probably, I think it was like 2016 or 17. Yeah. Or I guess it's 2.0 the 1.0 was spec fully adopted the 2.0 is really the one that really got put out there, but yeah it's come so far, so fast. Justin: Yeah. It's really easy to get started with. It's kinda crazy. Robert: yeah. Download blender and just export a cube. Just check it out. It's right there. Justin: Even with the animations and everything I had, I'd never done 3d animation and within. Like a day and a half, I had this whole like animated logo on a site has good fallback. So if you don't have JavaScript enabled it like renders an image. And I don't know, it's like, it felt like magic based on going from I know nothing about this to , I have something working on a site. There's a lot of hard work behind the scenes to make that happen. Robert: yeah. Speaking of blender that has gone so fast in the last couple of years when blender 2.8 came out that really made me rethink blender because I. I grew up tinkering around with like 3d applications. And they were always like a PR, they were pretty inaccessible to me. Like I was like following tutorials and like trying to figure things out and yeah, I got some basic stuff created in three DS max and maya but never anything, all that impressive. But it was mostly it's the user interface. It's the dev tools are not accessible really, unless you've spent years of your life trying to learn them. And blender was notoriously bad at that. It was probably harder than the rest of them. But this 2.8 release that happened a little while ago. Really, I think changed that for everyone that I know that's used it recently. And yeah, if you've tried blender in the past And you didn't like it and you haven't used it since 2.8. I would recommend you give it a shot because it's pretty nice now. And it just keeps getting better. They keep adding new stuff. Like they have geometry nodes now. So now you can like, without any code, you just wire up some flow-based programming stuff, and you can have like a bunch of scattered rocks or a bunch of other really cool effects, whatever you can really think of. So procedural, geometry which is pretty cool and it's free. Justin: Probably one of the most high quality open source projects. Like it's been going for so long too. And they're like, now it's it's really getting to this is like professional studio quality. I mean, people have been using it professionally for awhile, but like now it really, really feels pretty polished. So it's good to see. Robert: They've gotten an insane amount of funding too. I think they got an epic mega grant. They, I don't know, like a bunch of the big companies out there starting to fund it because they see how powerful it can be and how important 3d is getting in the last couple of years, like we're introducing 3d to a lot of different places now Open Metaverse [00:27:49] Andrew: I see your career as it is right now has had this pretty easy to follow progression. You started in Altspace, which was like a siloed game. You moved on to hubs where it was taking Altspace and making it more generic and reusable and remixable. And now you've moved on to the open metaverse, which I feel is like another layer above that. Would you like to explain that a little bit? Robert: Yeah, that's true. That's like a pretty good start of a description for it. And that's definitely where my head was at. When I decided to start this well, I didn't decide to start this. I actually saw it on Twitter. It was pretty cool. I have been like playing around with glTF and trying to figure out how to build more rich, 3d content that's portable. All these different environments. So I worked on a tool called spoke which was the level editor for hubs. And it's trying to democratize 3d content creation and it exports, these glTF files, these 3d scenes. And it has some additions that aren't in the core glTF spec, these extensions and they add things like particle effects and sounds, and actually triggering animations and sky boxes, things like that. Things that would make a richer environment to be in VR, just walk around in 3d. Someone on Twitter was talking about wanting to do a standard for an open inventory spec. So not really totally related, but I saw that and I was like, well, I would like to do a open sort of like environment specification and inventory implies like 3d models that you're like collecting and things like that. This is mostly, I think coming off of a lot of the hype that's going on around NFTs and things like that. And so yeah, I just thought, like if there's a community out there that really wants to make this happen, I'd love to help out in any way I can. So I joined up with my now co-chair Jesse Allen. Who has been working on this community called angel XR and they're doing open source XR projects, just like a collective of different projects going on in there. And we decided to make this open metaverse interoperability group a real thing. And it turns out a lot of people really want these standards for content, for identity, which is a huge one avatars inventory a social graph all these different components that you would need in order to make a open social 3d internet. we've just got a ton of support. We are in our fourth month, I think of running this consistently getting around like 20 or so people and on our 9:00 AM meetings, every single week, different crowd, usually each week. We just got our open collective, so we've got funding to start some of these projects. And we are a W3C community group now which has our like IP protection for any of the specifications that we come out with and things like that. And we're about to start some specification work here in the coming weeks on some glTF extensions that will start to formalize some of these things that I started working on with spoke and other people in the community have implemented in their own. It's just really exciting very new and very topical right now. The metaverse is just a huge buzzword right now. So, we're trying to help people understand that you can't just attach metaverse to everything. There is a better definition for it than just like a bunch of NFTs that you can't really use. we like to think of it as the The metaverse is like completely dependent on interoperability. Like no one company can really own the metaverse. You've got to have a lot of different players, just like you have multiple web browsers. Or multiple websites for that matter. It should be ran in the same way that the internet is ran. It should be decentralized in the same way that the internet is structured. So yeah, a lot of our work is an evolution in one way or another of internet concepts, but for the social web, the 3d web doesn't have to be 3d. It could be 2d, could be 3d, whatever social virtual worlds that you are trying to connect. That's really what we're all about. Justin: this reminds me a little bit of the, I'm probably going to say this wrong. There was this idea floating around a while back about open social specification for like social networks. Right. It's like back in the day there was talking about having the sort of data that Facebook would store about like who you are and your connections and your like social graph, but that being like an open specification, so that any of these sites can share it and it feels very similar to that. That didn't work out. Obviously we don't really have that thing, but it seems similar. Is it more than just, I'm assuming it's more than just like glTF or like these models, specifications, it's like a lot more. What sort of the aspects that are involved in this thing? I mean, you Haven't written a specification yet, but in your mind, like what is that kind of look. Robert: well, , a lot of the community comes from some of these backgrounds. maybe one of the projects that you're talking about is diaspora. I think that's how you pronounce it. There's scuttlebutt, there's all these different decentralized social networking protocols that are active or in various states of activity. We have some members of the activity, pub group working with us on some of these specs. And yeah I think we're interested in a lot of that. We've talked about using a protocol called web finger, which is you give it an identifier and it has a well-known rest end point, and you can get some more information about an identifier. So an identifier being an email address, or in our case, it could be just a URI to a virtual world. So one of the reasons why we'd want that is so that we could have more information about what should the 3d thumbnail look like for this world? And not every world being a webpage, like we're trying to do both native and web apps and build protocols for both. So we're thinking of like, how can we repurpose existing standards rather than create a new one? We don't want the. Quintessential XKCD comic going on. So we're trying to reuse standards when we can trying to pick the best ones for these purposes. But yeah, I think we have a lot of the same sort of goals of some of these decentralized social networking projects mixed in with some of these 3d virtual world concepts. So yeah, it becomes a pretty big scope. We've been able to narrow it down by focusing on one thing at a time trying to find a commonality between these different metaverse platforms, figuring out where people want to work together. The whole thing is just driven by the community itself saying, Hey, what if we did this? Like, are, would you do this too? And figuring out where we can, you know, Placing some levels of interoperability in there. Andrew: What are some cool examples that this interoperability might enable? Robert: One of the things that I would really like to see is a decentralized version of the steam friends list or like X-Box live friends list. I think that we're missing a social layer on the web that lets us join in on experiences together. I know you can send URLs to people but we don't really have an amazing way to send those to groups of people or like a single person. We could use the web share API that could be a good foundation for some of this stuff. But having statuses just different ways of. Discovery of different applications and things like that. I think the web is really missing that social layer, the fact that the web was designed without it, I think also left this big space for players like Facebook to come in and dominate that space, having a single sign-on that you use across all of these different web applications and people until very recently, never really thought much about it. And now we're thinking about, oh, well, that's a lot of power that Facebook gets by being able to own the identity layer. Especially more recently with the real identity policy that they have alienating people from the trans community, from people who go by a non real, real name. So yeah, I think like we, we can do better. And I think that's something I'd really like to tackle is identity and like this social graph area. Andrew: Yeah I see some parallels between what you just talked about and web three and what meta mask is doing. it's interesting to see this problem starting to be attacked from so many different angles now. Robert: Yeah. I'm really fascinated by it as well. There's a lot of people in our community who are really big on blockchain solutions. I, myself, like I'm, I have meta mask install in my browser right now. I think like it's somewhat challenging right now. The. Technologies that we use to build these sorts of things. We need to make sure that they last a long time. So making sure that we do not pick a technology or framework and instead focus on protocols and specifications, I think is the right way to go. It would be ideal if this outlasted us, like we could just go and build this on Ethereum, but what happens if, there's the next blockchain that comes along and replaces it? So. I'm not opposed to people using blockchain is like the backbone for, different methods of doing identity or a lot of the different ownership or financial sides of different pieces of the metaverse but I think at its core, we need to start thinking, okay, what are the protocols that we want to implement? Like we can we implement on if ethereum? Great! Can we implement this just using open web standards? Great. Let's stop thinking so much about like the technologies that we use to implement them in a more about the protocols themselves. Andrew: Yeah. Something that just came to mind is one of the problems that I see with NFTs today is people look at them and go, Hey, my piece of art that's stored on the blockchain it's forever, but it really isn't. And that's like a problem of decentralized systems is you're things have to go somewhere. And that somewhere has to stay around for awhile. Do you guys think about that when you're building out these protocols for the metaverse. If I have an item in one game and I want to transfer it to another, if I'm understanding things correctly, if we're outside of the game, where is that stored? Who owns that storage? Robert: Yeah. I can only speak for myself here, but I think like I've been looking at IPFS and dat for awhile and both decentralized file storage technologies. Neither of them are crypto related at the start. But they can be made monetized so that you have an incentive to store files longterm. So like file coin being used to pin objects to the blockchain and all that. Yeah. I think people are being sold on these ideas without fully understanding, like the fact that like your NFT points to URL sometimes. And then if that URL goes down, then what, where's your content? We have some things that are actually physically stored on the blockchain and I think that's great, but like it's really expensive to store data on a blockchain. You can think of a blockchain. It's just a really expensive, slow database. And if your problem works with that great, like you found the thing that blockchain is good at. If it doesn't, then you may as well start looking at other options or, use a side chain or a different scalability technique and I think we're getting some of those solutions, like the using filecoin to like pin and asset to it. But I don't know. It's it's still early days. We're still building a lot of things on top of proof of work technologies, which I personally have a little bit of an issue with because it's environmentally not great. Ethereum's moving to, proof of stake, which is a lot more efficient can produce a lot more transactions. So I think that's great. We'll see when that happens, it could be awhile. But yeah, it's an interesting space to be in it. There's certainly a lot of ethical dilemmas around it. And it's a sensitive topic that we as a community inside OMI talk about quite a bit. There's a lot of like pretty productive conversations happening around all these sorts of things, how we can use a and NFTS for item ownership, how we can use DAOs to like structure organizations that like build virtual world infrastructure. Things like that. It's something that we're keeping in mind, but there's no one opinion. It's a collective of people with a lot of different opinions. All right. Trying to learn more about the options that are out there, blockchain or not. Andrew: Very interesting. Tooltips [00:42:05] in These tool tips, sections, I've mostly been sharing my daily driver software for developing. And one of the, my most recommended tools I recommend to both new and advanced developers is Gitup, GItup is a visual interface. for git that makes understanding what your git repository is doing really easy. Before I started using Gitup, git was just like this crazy complicated thing to me. I didn't know what any of the commands meant. I couldn't really visualize the graph in my head at any one time. But Gitup solves that problem by just trying like the main interface for interacting with your repo is looking at a graph of your commits. And I've found that through using this, I have this super power to now just be able to look at a git graph and go, oh, I see exactly what's going on, where things came from and it really drives home. the lower level concepts like merging and rebasing. Cause if you rebased your commits, you literally see your branch of commits went one by one onto where you were rebasing. So if you struggle with visualizing what gets actually doing, I would highly recommend using get up to, to visualize that and interact with it. Then also one of the key features that's really cool is it has undo redo. So if you fuck up your repo, while you're doing things, you can just press control Z back to a state where you knew everything was okay. One guy was developing it for a little while and I think he just went on and did other things and it was like, ah, you guys can, you could do it yourselves and another cool thing about it is he built it in like with a design system thinking involved. The entire UI is components that you can use to actually build your own git GUI client. So if you don't like how he did it, you could take his objective C code and remix it and make your own get GUI. If you wanted to. Justin: My first for the day is it's the site egamebook.com. I think I've found this on hacker news recently. Going back to the start of programming for me I've always been fascinated with text interfaces because like most programmers start in the console. Right. And you're like, write a hello world program, and then you learn how to operate standard in, and you're like make a program that has a prompt. And inevitably, if you follow this, there's a lot of people would just make like text games. And some of the earliest computer games were text-based right? You have these like mud, like adventure style, text games. And so this egamebook is almost a textual game engine of sorts. , the creator of this is like released one game on the app store that you can download and play. But there's just like this sort of very beautiful description on the website of what this thing is and what they're trying to achieve with it. And there's a lot of things that resonate with me. I, as someone with ADHD kind of struggle with games sometimes, cause they can really absorb my attention and take over my life. But this is supposed to be this like really light experience where you can pull this game out of your on your phone, pull it up on your phone and it's a textual base game. You can think of it like a dungeon and dragons light style, but instead of just being oh, here are these predefined text prompts. It's like generating these scenarios and doing dynamic simulations behind the scenes. So you're play through always sorta be different. And I don't know, it's just, I think the site game book.com, this is very beautiful. The app is very well done. The principles here are nice. It's just a fun thing to check out. I think the game, yeah, the game that was made from this is called Knights of San Francisco. You like do a dungeon crawler and like Salesforce tower or something. I don't know. Andrew: Yeah, this is pretty cool. So is it like, can you build your own games out of it or? Justin: I don't think so. At least not yet. From what I've read, I don't think it's open source or available. But maybe eventually, hopefully that'd be nice. Andrew: Yeah, text games definitely are a great first stepping stone. I like literally just the other day recommended to my girlfriend's sister who's learning programming. And she was like, I need an idea to. Hone my skills on. And I was like, how about a terminal Tamagotchi? And then it was like, oh, light bulbs went off and all the things and all the concepts you could flex were just like right there. Justin: yeah, it feels like a real Rite of passage. It gives me a lot of gives me a lot of joy to see these sort of things. But the really interesting thing that I, that jumped out to me is they have this visual graphic sort of in the middle of the sites where they have this picture of Skyram and then they have some object detection that's applied to it. And then they have what this description end game might be. And there are still to this day, some light. Online muds that you can play where it's very much role play environment. Somebody will act as like an environmental director or like a game master or whatever, and they'll build content and set up scenarios. It becomes like an online, like textual Dungeons and dragons over chat or something, but the idea of having that more automated but it's like a dynamic sort of rich and even potentially closer to real-time environment or like time-based is it's pretty fascinating. Andrew: That is cool Robert: this has been my favorite project lately. I, I kind of, have a lot of project ADHD. I start projects all the time and the faster that I'm able to get them up and running and fail or write the actual piece of code that I want to write the better and Vite has been great because there's, it's got these great create Vite generators, which have type script and react and vue whatever your flavor is. They have a lot of really great basic Vite projects, but then the zero configuration set up where I can just like switch to TypeScript in an instant is pretty awesome. So yeah I love this project. It's just, it's very great for my workflow when I'm like starting a new thing. So I highly recommend it. Andrew: Yeah, I haven't gotten a chance to play around with it all too much yet, but it definitely looks very interesting. I like how they're taking all of like the bleeding edge dev tooling that's out right now. Now combining it into one tool where you don't have to worry about any of that and you can just get to building. Robert: yeah. As someone who's sunk a whole bunch of time into Webpack and I know a lot of the Webpack configs by heart this was really refreshing and I pretty much completely stopped using Webpack. I'm pretty much just using Vite now. It's great. Justin: I have massive respect for Evan. You he's like consistently. Started such high quality tooling over the year, over the years. And I think to to emphasize how like important Vite is to the computer to the community even svelte has recently released svelte kit which is, they're sort of like think of it like next JS for svelte. It's there like site building framework or whatever, their meta framework for building site it's built off of Vite. It uses Vite to build it stuff out or whatever, powered by vite if you will. It's an awesome tool and it's exploding. There's so much like meta tooling being added to it. And so many new capabilities. Andrew: My last tool tip of the day, isn't really any specific tool, but like a learning methodology. Over the past few weeks, I've been setting up lots of different home automation, things and home servers, and I can't stress enough how much I've learned. About networking and all of that just by doing this myself, like I even took a network's class in college. I don't remember one thing from that class, but I can tell it all my networks, knowledge comes from trying to make computers in my own house, talk to each other. So like the lowest level tool tip I could give out about this is your computer's name means something. So if you name your your computer ASD F on your local network, you can go to ASD F dot local, and you're now accessing that computer on your network. It has all its ports. It has everything. So like for instance, I have a few services hosted on my network attached storage, and I can just go nas.Local and go to the various ports and visit all of them. So learning those little tidbits you don't really come across them in like a school setting, but while you're trying to make your own network work you definitely want to lean into them because who wants to memorize IPS, even though I'll know them all. Robert: that's using MDNS. Do you have to have anything else to like, Andrew: No, I didn't set up anything on my network. Yeah, you can like, it's. Yeah. Like you could probably even do it for your Mac book's name. Just go like your Mac book with dashes, for the spaces dot local, and you'll now be able to access it on your phone. Yeah. I guess where the, where that knowledge can lead you is if you're a web developer like me you might want to test a website that you're developing on your phone to a junior developer that might seem like an almost impossible task. But if you just know that little tidbit about networking, you can go to your computer dot local, the port, your site is already being hosted on and then see it on your phone without any cables. Yeah. Justin: it does record in DNS DOE and windows in particular. Doesn't out of the box support, Indiana S and I know this because I was trying to work on an elixir nerves project which is embedded elixir on a raspberry PI that's supposed to use MDNS over a connection over USB to be able to like shell into the device. And it wouldn't work. I spent forever trying to figure that out and I still haven't. But. Andrew: Yeah. So you heard it here, folks from Justin don't use windows. Justin: Oh, I'm stuck on it until the new Mac book comes out. I don't want to buy anything until I get my 16 inch M1X or whatever Andrew: Yeah. Hey, maybe this year. Probably not, but Justin: I think so unless the chip shortage really, really, really pushes it out. I think it will be. Andrew: fingers crossed. Justin: So this is just like a small library that I came across this week. So mini flare is like a way to run CloudFlare workers locally. It's not exactly CloudFlare workers. But if you think of like virtualization methods to run like AWS functions. AWS Lambda functions locally. It's a similar sort of thing. I personally love CloudFlare workers. I'm actually in the process of porting over my personal site over to CloudFlare. So CloudFlare workers are pretty interesting because they actually are. They run in V8, isolates, V8 being the JavaScript engine that powers Chrome and node and everything. So you can almost think of a CloudFlare worker as like an individual Chrome tab, right there, sandbox in that similar sort of way. But there hasn't necessarily been an easy to test your code locally, to work with it locally. So this mini flare is a library to, to let you do that, to say, Hey, I've got these CloudFlare workers and I want to test them locally. The caveat here is this is not an official CloudFlare project and it's not exactly the same environment. So things like timing and start times or whatever are not going to be exactly the same. So take it with a grain of salt, but it's a good way to test. And just to verify things are okay before pushing your production. Andrew: Usually a good thing to Robert: This is great too. Like I didn't know that this thing, it had the durable objects support already, which is great because I really want to play around with it. Justin: Yeah. Cloudflare's the ser they're their worker functions. They have a key value store. That's really good. And the durable objects. I mean, it's really, it's really excellent. Like it's really excellent. I've used vercel for a lot of things like hosting sites and stuff. We do that for dev tools that FM, but CloudFlare workers and it's pages and that whole ecosystem, gives you object storage on the edge and that's super powerful because it's basically everything you need to build, like a full site, with things like auth and all this stuff without having to think about pulling in an external database. Yeah. I don't know. That's great. Elbow them for some sponsors like, Hey, we're. Robert: Yeah. So this last project it comes out of this community that I've been helping maintain called web ECS. We've got a discord should totally join it. We just talk about ECS, which is entity component system, which is like a pattern for really fast and modular ways of building video games or simulations of any type really. And it's about data oriented design. So you describe your data and how it's laid out in memory. Loop over it using quarries and systems. And you can describe entities by composition but you're composing entities out of components. So components are data entities or just like an ID. You can attach components to an entity and then a system iterates over entities with specific components, which you define in queries. And you can define systems that like run physics or run particle systems or animations or rendering all these sorts of things. This guy in our WebECS community built this library called bit-ECS. This thing is screaming fast. I've not seen JavaScript. Run this fast in like very usable API. It's kinda crazy. He did a test where he wrote the same thing in wasm it was just like, well, there's not really much to gain here, so it might as well just keep it in JavaScript because the optimizing compilerare just good enough, like your JIT is going to optimize all of this code. If you write it in the way that he has it structured here your data is going to be laid out linearly in memory, which is great for you're going down to memory cache or sorry, page cache caching and things like that. For getting all of my data oriented design terminology here, but basically the thing is screaming fast and you don't have to know a whole lot about data oriented design to get into it. Like you just have to know these couple patterns and you can write really fast, really composable systems highly recommend it. I've started working on a project based on it and three JS not quite as developed as I'd like it to be. maybe keep an eye out for that, but definitely go check this out and definitely join the discord server to learn more about this library and more ECS libraries written in JavaScript. Andrew: Yeah. I recently saw a tweet from the Preact guy who he's been playing around with making Preact like stupid, fast, and. It is crazy how fast JavaScript can be. He was getting like 600 renders a second out of Preact just like crazy frame rates. Cool. Robert: yeah, the benchmarks here are in the like millions of entities being processed, which is just mind blowing. Justin: Wow. Andrew: That's a lot. Robert: wrote an ECS system. If you go up to the benchmark there, we wrote one at Mozilla called exi. And this one just kills it. Like you can look exi 9,600 ops and then bit-ECS 234,000. So, Andrew: Yeah. 31 ops on this one. Robert: I don't know what to do about that. Go use bit-ECS it's great. I can't recommend our own library. If you're looking for performance, the API of ours is a little different. Maybe it's a little bit easier to use, but I find bit ECS to be pretty understandable. And you just can't beat the performance there. Andrew: Thanks. I think that about wraps it up for this week's episode. Thanks Robert. For coming on, this was a fun chat. We really went everywhere and learned about some new, cool things for sure. Robert: yeah. Thanks for having me. This has been great. Andrew: That's it for this week's episode of dev tools, FM, be sure to follow us on YouTube and wherever you consume your podcasts. Thanks for listening. Justin: thanks everyone. It was awesome.

Discussion in the ATmosphere

Loading comments...