Live CEOing Ep 706: Language Design in the Wolfram Language [Geometry, Graphics and XR]

Meeting: Wolfram Language design review (version 13.3) focused on AR/XR publishing. Demonstration: AR deploy that produces a floating teapot using modern 3D exchange formats (USD on iOS/Apple, glTF on Android). Core issues discussed: where backing cloud objects live (UUID/anonymous cloud objects, external bundle), how to delete/manage them, and how to expose QR/barcode print forms. Design proposals converged toward: a wrapper object (ARObject or XR-form wrapper) that cloud-publish/cloud-deploy can accept, with XR/ARPublish convenience functions for a one-step flow; use external bundle (directory) that the cloud object references so deleting the cloud object deletes the bundle; dispatching logic (user-agent/device) implemented via a dispatcher (analogous to URL Dispatcher / InterfaceSwitch) to serve platform-specific files; support for export formats (exportForm/XR form) that can produce a directory of files (USD, glTF, etc.) for deployment or local export. Action items: document/consolidate user-agent runtime info (proposed $UserAgent), involve cloud object team (Joel, Bob S) and Todd for design, add cloud object display options (QR/print form), and refine naming/permissions (publish vs deploy).
Chapters
Sam. Okay, here we are for another design review, part of wolfram language version 13.3. And we are looking here at. Well, I don't know why there's discrete computation, because this seems to be.
Well, this is a discrete computation team. Yeah, but the. Okay, we labeled the meeting differently.
Very little that's discrete. There's very little that's computation, but nevertheless. Okay, so AR deploy. It's interesting that we were just talking about service deploy, which is probably not unrelated to this.
So the basic idea is this, that you can use your phone as an AR device to walk around a 3D object. And the way we do that is this is kind of new, which is a file format that's emerging to represent AR and VR content, which is this USD format. And on Android, it's so far gltf, we expect those guys to eventually migrate to USD as well, the way it works. So those are two new file formats that we support, and those are rich file formats. And the second.
So I just did this, and it's now got. I've now got a teapot sitting on top of my visual scene.
Isn't that nice?
It's very, very cool. Teapot wasn't just plain gray.
Right. So we're coming to that. So that means that you don't get rid of the teapot.
Wait a minute.
So you don't necessarily need to sort of buy a retail.
I want to know how to get rid of the teapot.
No, you have stuck with a teapot now forever.
Okay.
It's like one of those floaters in your eye.
Yes.
Now it's a teapot. Okay.
All right. So you see, since you try this and. And for those, I think that we can try this online. If you point your phone to this, you probably will get up a teapot too. I don't think it's restricted.
Right. It was deployed. Okay. But now, okay, this is exactly what service deploy is supposed to deal with. Because what you have here, one of the issues you have here, you've got your QR code that came back, but you also have a cloud object that's the backup for that.
Right?
And the question is, where is that cloud object? And how do you find the cloud object? You know, if you wanted to, you know what I'm saying? If you want to.
I mean, you can always export if you want to sort of have the file, the backing file. But, Charles, there's something else you want to say.
But the problem is that you. That if you wanted to delete that instance, right. How do you do that.
So when you say delete the instance, you mean the cloud object.
Yes, the back end cloud. Because that's exactly the same issue with mail receiver function and other service deployments.
I mean, one of the easiest. Yes, one of the easiest ways just to do bar recognize and then you get back the cloud object and then you delete it as any other object.
Hackalala. I don't have a good answer this, except I mean the only, the only answer. I mean literally, we were just talking about things related to this.
I mean, the other two warmed up, you know. Well, or is it mostly problems? Did you have solutions too?
No, no, we have solutions, but they're somewhat complicated and they're more programmer or. I mean, this is beautiful what you have here.
Okay, we figured that we can use the cloud for something.
I'm not even gonna dignify that with an eye roll. No, but look, here's a solution potentially. You've got a print form here. Okay, this is the. And what I might suggest is that AR Deploy returns a thing which is some kind of AR deployment which would look almost exactly like this, but with some additional wrapping around the QR code. And that if you just want the plain image of the QR code, it's a sub value to AR deployment, just as the cloud object will be a sub value to the AR deployment. Do you see what I'm saying?
No. Did you follow this, Charles?
Right, so you want AR Deploy to actually generate an object. Maybe we can call also AR deploy object.
That's what I.
So what I heard too. But that means it's going to be a two stepper.
No, it isn't. No, it isn't. No, it isn't. Watch this. Okay, okay, so my point is. Oh boy, Where am I saving this? Well, that's not what I want to save anyway. I wanted to save this. Okay, well, in any case, What I'm suggesting is that it return an AR deployment and that the AR deployments print form contains the QR code.
Right. So the summary.
Oh, I see what you're saying. Oh, that's a good idea. So then that gives us a handle to a bunch of other things.
Exactly. That we can do all kinds.
Oh, that's not a bad idea.
Right, because then you could also extract the 3D graphics. You could do. Yep. I'm. I'm wondering. I mean, this is very cool. What, what else is kind of like this? And, and, and then I'm going to ask questions about how do I get color on the, on the thing and so on.
Right. So in general, I like us to kind of do more publish, you know.
Or maybe it should be called Arpublish.
Yeah, maybe. Let's talk. Yeah, we do need to talk a bit about names. And so in general, like, for all of our teams, I'm looking, actively looking for ways that we can publish more into the sort of the digital ecosystem around us, because it makes it more useful for everybody if you can get things out and if you can basically publish and deploy.
Right, but this is, look, service deploy. Just so you're clear. What is it? It's for lodging things into external services. For example, a plugin for ChatGPT, for example, a Discord bot.
But it's, it's, it's basically an API, right, isn't it?
No, no, no, Listen to what it is. Okay, Listen to what is. It's something slightly different from that. There is an external service, for example, a mail server. Okay. What you are doing is you are lodging something with the mail server so that when you poke the mail server saying, I'm sending mail to this mail address, then something is activated. The back end is in the cloud, activating in the cloud. Does that make sense? So let's talk about Discord Bot, for example. You talk to the bot, whatever it's called, the Wolfie bot or something.
Right.
And that goes through Discord's infrastructure. Right. And then it calls back with a web hook or some other such thing.
So Discord is some company or some other service or something.
Okay. Slack, Rocket, Chat, whatever, something that you've heard of. Okay. Telegram. Okay. Okay. So any one of these things you are, or, or Alexa for that matter, you're lodging in their infrastructure, something that you will get to with some name that you, you tell to their infrastructure. Okay. You have lodged a thing in their infrastructure that then says, okay, if, if you got to this place, go out and call this thing, which is an API in our cloud.
Right.
Okay. So it's a slightly richer interaction than what you need for this case here.
Yeah, yeah, definitely. But I don't think it's uncommon. There's a scenario to describe for service deploy. I can see from a, you know, for a bunch of things where you kind of knit things together.
Yes. Where the external service is the exposure point.
Yeah.
See what I'm saying? Now what you've got here is a, you know, there's three levels. There's export to a file, right. Where, where it's just like the file is exposed through the file system or whatever else. So in the end, what, what that QR code is doing is it's just going to a cloud object. Right.
Plus or minus, depending on if the cloud object is actually script or just a pure link to the file.
Yep.
Well, what is it in this case?
Well, in. Since, you know, we don't know if you have a, you know, is an iPhone or, I mean iOS or iPad or Android, so you have a code which runs behind the scene to detect the type of device you have.
What kind of code is it? JavaScript or what?
No, just the normal Wolfram code we just push.
I see, I see you're looking at the. When the. What is it called?
The user agent.
Okay, yeah. Right. Okay. Okay. Well, I'm. Why is this thing not so. Okay, but so what is that thing behind. Behind it? If I, If I do a. If I take this and I say, where did I put that? And I just say, you know, barcode recognize of this. What's happening? What's it doing? Oh, what's this?
Well, I mean, we won't ship it with that, but.
Right, okay. But I mean, this is ultimately just a uuid, right?
Yes.
And what's the main?
So by default, on the temporary directory, we create another subdirectory. I mean, it's contained the main script when you deploy it on the cloud, which detect it. So if you specified, for example, that is, you know, that on your own on iOS. So we deploy the actual file. So you don't have actually the main, but you have a link to the actual USD file.
Okay, what the hell just happened? I did a system open on this thing here and I just went to the wolfram.com homepage.
Right. So is that part of auto detection of the, you know, the browser you have? So if you're on desktop, I just.
Should not go to the home page. It should go to a page that says, use this on a phone.
Exactly.
So that was to be a designed page.
Yep. So that's temporary for now. Yeah.
Who's project managing here? Marcy? I am Marcy. Okay, so that's the thing that needs to get done is that page. It should just say. It should just have a, you know, simple explanatory page. Do you guys agree?
Yep.
Got it. I mean, it can just be a cloud object page, just a very simple page, but should be designed. Okay, so you've got. Just got a UUID here and there's no identification of what? There's no dot, something or other file type for this. Is that correct?
Because you may need different ones. You know, Android wants GLTF iOS wants USB.
The word main at the end there, you've. You've decided that it's called main. Is that correct? That could be anything we want.
Yes.
Okay, so I think that should have a name like AR Dispatcher, right? Which makes it less obscure to people. What the heck's going on? Okay, yeah, so what I'm saying, so what should that name be? Ar asset. Ar dispatcher. Really?
I don't have any.
Then let's make it AR Dispatcher. It's a little long, but, but. Okay, so now this will normally be going into your anonymous. It's an anonymous cloud object in your cloud file system, correct?
Yes.
But what if you wanted to. You know what? I, I don't think this is right. I think what we should do instead is that this should be something more like Cloud publish. Maybe. I'm not sure because the whole point is I might want to say what the name of the file that I want to put this in is. You see what I'm saying? Because I might want this to be put into Teapot in my cloud. You know, I might want to send somebody an email, a thing that says teapot and says, you know, you know, just because if I got that URL right, and got that on my phone in email, it would have the right behavior. Am I not, Am I correct?
Yes, but my, and I mean, my assumption was that, I mean, if somebody really want to start to customize, right. So AI deploy, do the whole automation and such. But we hope that in the documentation we just easily show someone like you just do cloud export of the actual teapot as a USD. The cloud object you get there is exactly pretty much this.
No, no, no, it's not exactly pretty much this. It's not it. Because it doesn't have the Dispatcher framework. Right, right. Okay, so that's no good. Right. So what we have, and this is nice, I think what we want is that you would say cloud publish of AR dispatcher of the thing, right? Because it is very much like URL dispatcher. You know what URL Dispatcher does, right? URL Dispatcher takes. See, it takes URL patterns and content. Is that I'm saying? Yes, so this is very much the same thing. Let's see. View Dispatcher. I'm, I'm almost thinking that this could be. I mean, maybe this is wrong, but something like View Dispatcher. Actually, this is very similar to. It's like a device dispatcher. Hold on, hold on, hold on. This is incredibly similar to what we've had to do in the framework for dealing with css. Right, so do you know what I'm talking about there? So you know the stuff that. Okay, so see, let's hope that this is. Here we go. All this stuff here. Okay. Interface switched defines a responsive interface for deployed web pages. Okay, So what this is doing is not by device but by size of web page. Right. It's doing responsive design type stuff. That makes sense.
Yeah.
So what you have here is incredibly similar. I mean, it's very similar to interface switched. What you want here, right? You want to say. I mean, it's something like. But it isn't quite this. But then what you want is just graphics here, correct?
Yes. So in any other expression which can be mapped to a graphic. Yes, pretty much.
So, okay, hold on, hold on, hold on. So I agree it would be nice to have a single function that does this and produces this deployment. But the AR deployment. Is a cloud object. Hold on. The AI deployment contains the whole thing. So. Help me out here. I mean, you understand what the issue is, right? Because we want two things. We want a simple.
I think the main thing you're after is the customizability. Is that red?
Well, I want customizability, I want deletability. Right. So we get deletability with AR deployment.
Yes.
So concerned about having. About being able to put this to, you know, the teapot. You know, clearly AR deploy can have a second argument which is the standard, you know, thing that you would do to deploy to a non default.
Yes.
Now, I mean, you know what? Really? Look, let me show you something. Let me remind you of something. If you cloud publish this, okay. And I say automatically assign URL, I cloud publish it. Okay. Look at that. There's a barcode there. It makes me wonder whether basically we should always display the. Yeah, it's a mess to always display the bar barcode in a. Yeah. Okay, this is a separate thing. This is for Marcy to chase. In a cloud object, we should probably have a sub value to any cloud object that says barcode or QR code or whatever. Am I making sense? Did you understand what I said? Do I need to repeat?
Understood?
Okay, so that goes to the cloud object team, which is probably Joel Klein, I think. Got it.
Hey, while I have you. Oh, there it is. Okay. I knew we had two ways of showing cloud on web pages. So there's the iframe, but there is the second one. There is what I've been looking for.
Yes.
Okay.
Embedding. Yeah.
Yes.
Right. That's the notebook embedder. What do you want? That for.
No, I just couldn't remember what it was. I knew we had it, but I couldn't find it.
Okay, fine.
Just it seems, you know, been lost where I can find it.
Right. Okay, so. Right. Okay. This shouldn't be called AR Deploy anyway. It should be called AR Publish, if that's what it is. See what I'm saying? Because it has permissions. See, this is a mess. It's a mess because, you know, imagine this is the, the next stealth fighter or something. You don't want to publish it to the, to the whole world, probably. You know what I'm saying? So AR Deploy isn't the right thing because. Because that is a. It's doing a publish with permissions to public, isn't it? And if it isn't, it's doing the wrong thing because we have cloud publish and Cloud Deploy. Cloud deploy by default goes only to your account.
Right. And yeah, that's why we, we went with, you know, AR Deploy, set of AR Publish. It always go to your own account.
I know that's often not what you want, right? So I have to say, even though it's really cool to have just one function, I kind of think it will be better to begin with to have Cloud publish or cloud Deploy. And you have all the same options. You have all the permissions, you have all those kinds of things. And then the question is, what's inside it? But you see, that's not going to work either because we need a return thing. That's an AR deployment. Guys, you know what this is? We're about to do make a mistake here. Okay? I think we have the wrong people in this meeting. Let's see who will be the best person. Can Marcy please ping. Maybe Joel Klein is the right person for this. And also Todd Gailey, can you see if he's around, please?
Yes.
Okay. Okay. All right, let's. Let's just go on here and we'll come back to this. Okay? So, Roger, you. You understand? I, you know, kind of. You understand.
No, it's a question of how we knit it in with everything else. I understand that. And fine, bring. Bring in the people. We'll. We'll reason through it.
Fine.
But, but just my point, I hope the meeting will not override the main aim of the function, which is essentially to. For somebody to easily have the object on his device or I mean, on, on his phone. It doesn't really matter that it goes to the cloud or you magically push it to whatever way.
Well, but. How else would you get it to your phone?
No, truth. That's. I mean, the. The only part right now is to the cloud. Right? Definitely. But I mean, I just don't want it to dominate the whole design.
Well, sorry, but you know, that's the whole point. The fact that there is potentially another way to do it like a direct Bluetooth connection or who knows what else. Right. Yeah. I'm thinking here. Okay. Hey, Marcy, is. Is Todd going to come or not? I'm still trying to reach him. I won't give the introduction without. Without that then. So let's keep going. Okay, great. Obj. So. So how do I make the teapot be. Be in color?
So we are still working on it. Not yet on your build, but you.
Know.
We will preserve the look and the feel of our graphics. So this is what we are working on now.
For example, what about geographics? Well, that should also be exportable. The other forms of graphics like geographics, astrographics and so on.
Right, right. In principle, if we can just. Yeah, we just change it to a pure graphic object and export that.
Yes.
And I think you should be able to export any expression and just rasterize it.
Why not? Yep, that can be the default case. We make exception like entities where we have polygons and such. We map it to the appropriate things. Yep.
Yes. Right. Okay. What the heck is Target system?
Wait, please.
No, that. That cannot be right. We. We've had canonical names for these before and that's not it for iOS. Find out what dollar system. Maybe Joel knows that. What's dollar system ID for iOS, Chad?
I don't know.
Okay. I think Arnode would know that. So Marcy, you have to chase him to find that out.
Okay.
Okay. I'm. We. We will have had that when we've got. Certainly for Android, we had that because we had an Android kernel. Is it called iPad OS? I've never heard that.
Yeah, it is now.
It is.
Yeah. It was iOS for the longest time, but a couple of years ago they created an explicit iPad OS.
Okay, fine. Okay. Is Target System the right option to use for that deployment mechanism? Target system is what we use for like gpu, cpu, right?
Yes. On the compiler side.
Yep. It's probably okay. And in the future if this. You know what? You should support alternative values there that are just the file types. Right. Do you see what I'm saying? Instead of saying iOS, just say USD or something.
Oh, okay. I see.
And maybe we have already a thing export formats. Don't we already have an option for that that's called because the reason I'm saying this is imagine somebody comes as they will and they serve. I've got a great new. In fact, I even saw somebody pitching this to me, like within the last two weeks. Some kind of immersive device type thing, right? And it's like, oh, we take GLTF format, right. It'd be nice to be able to use this function and expect that it works for that. Or maybe they have some other, you know, fancy, you know, format type that they take. And then it'd be nice to be able to. Well, what we have to have. No, actually what we need here is the dispatcher. Directly analogous to URL dispatcher. We need something that says, given that this is your operating system, this is the file type to use or this is the file to use. Am I correct?
Yes. It's kind of what we have behind the scene.
Yes.
Right. Which is exactly. URL dispatcher. Is that how you implemented it?
Not as you are a dispatcher.
No, but. But you could.
Yep.
I think. Well, essentially what you're doing is you're dispatching on the user agent type. Yes, but. So what we really want here, much like in the case of interface switched, right, where we're giving a. If you have this use that type thing. Am I making sense? Yes. I mean, this is a little bit different in its behavior. Oh, look, it's. It asks for the user agent string here. What exactly are you using to dispatch on? You're not parsing the user agent string, are you? You're using what we have, but the device type that we've gotten from the user agent string. Is that correct?
Why it is the user agent some undocumented cloud symbol I use.
What is it? What is it, Joel? What do you think it should be?
It's likely to be $, user agent something. Operating system or browser name, I think User agent name.
Okay, well, but we. Whatever it is, better not change. Well, once we're using it for this and maybe we should document it.
Yeah, it's User Agent Operating system.
Yeah, User Agent Operating system. I was actually going to raise a suggestion to consolidate all those fields into a single thing like $user agent. That's just an association.
I think that would be a better idea. Yeah, I agree. Can you do that quickly?
Yeah, like for 13 3. Right?
Yeah, let's try to get that and. And go through Todd for the design, I guess. And then make sure Charles is aware and can use what you're. What you've built. Okay. So, okay, are we getting Todd or not?
Neither Kristen or I have been able.
To reach him yet in the previous meeting we're in. Maybe, let's see. Who. Joel, who else would. Would have an opinion about how to do. You know, we. We've got this different form of cloud publishing and so on with. With a different kind of object that's being published. Who else would have an opinion about that?
I mean, are you the person.
What's that?
People like Ricardo might have some.
All the people who were in the previous meeting. That was such a horrible meeting. Well, okay.
So when it comes to color, Stephen, so I think there's a couple of things to be aware of. There's sort of two kinds of file formats.
There's ones that the older geometry, the OBJ format has just geometry and some of the ones have. Have surface color. I mean, yes, I've had the experience of trying to get things 3D printed and having people tell me, oh, we just don't do color on. You know, we don't do any surface colors.
Right, exactly. But some of the more modern ones, you know, like this USD, they have a full shader layer. You know, it's pretty rich, actually.
Okay, so we just have to be able to output to that.
Yeah. So our goal is to both, you know, in the future to be able to export basically the shaders that we use. It's kind of like our light system plus.
So this version, we should just be able to output our standard, you know, faceted polygon colors. Yes, yes.
Well, we'll guarantee that we'll export the geometry correctly and probably some base basic color and maybe some light.
Right, okay. But.
Well, you know, but, but going further into the future, the. Our goal is to export better visual fidelity. Meaning that.
I understand that, but if it's a. If it's a furry creature, then you can export it with fur, right?
Yes.
Okay. All right, I think Todd is here now. So let's describe the issue. Okay. Okay. This is super cool thing that these guys have that allow you say AR deploy of a. Loves to check is Todd is here. Yes. Yeah, yeah, you say AR deploy of a piece of 3D geometry and hold up your phone to the screen and go to this and you'll get a floating teapot. Okay. That works by two pieces of plumb.
Point your phone to this, Todd.
All right.
Okay. So it works by having deployed several files to the cloud, Presumably in the directory defined by that uuid. Correct, Charles?
Yes.
And all of this stuff here is garbage, right? It's just a UUID followed by sub, sub, sub, sub names. Is that Correct.
Yes.
This shouldn't be here. Right. That's just because of the development process. Correct?
Yes. We didn't want to dump it in any arbitrary thing. So it's.
Yep.
Correct. Well, it shouldn't be dumped anywhere here. It's just a UUID. Right. And the axiomatic theory of the universe is UUIDs never collide. Okay, Right. Amusingly, it really is axiomatic to the universe because we have these atoms of space that are, you know, unique, but you can't prove their uniqueness from inside the universe. Anyway, different topic. Okay, so. So I think it should be. And Joel, do you see any objection to that? They just generate a. What would they do to do this? They generate a UUID and then they put things into the. Then they would deploy to subdirectories of the uuid. Is that right, Joel?
Sure.
Well, is that, Is that a sensible process? Does that make sense? And if they delete that base uuid, does it delete the things, the sub pieces?
Yeah. We have something called an external bundle. That is a. Well, you could just make it a directory, too. That's. That's a new id.
But.
Well, what does if it's an external bundle? Look, we need a specification for these guys where they should put this. And there's no reason for this. Okay? People could put it in a. In a personally named file or directory, okay, that's called teapot or something in their home directory wherever they want it. Okay, but by default it should just go to an anonymous UUID place, right?
Yeah, and with no arguments like you're showing it here, that's what will happen.
No, but it's not what will happen. They wrote this specifically, and it's going in this person's crazy base temp AR directory. Okay, so which is.
Well, what I'm. What I'm talking about is the cloud publish AR dispatcher xxx, that syntax just universally will create, by default, creates an anonymous cloud object identified.
I see, I see. So they should put. Okay, if they put their files, they have three files, right? Is that correct? Guys? You have three files, okay? So actually you have four files because you have your dispatcher, which is not the same as the dispatcher that is part of. You know, so they need an external bundle, do they not?
It sounds like it, yeah. Similar to document generator and auto refresh.
Okay, but so, so then. And that external bundle will then be referenced by one cloud object so that if they. What? Is that correct?
Yes.
So if they delete that cloud object, it all goes away.
It all Goes away. Yeah.
Okay, so then let me explain the rest of the plumbing. So they have something where when you plumb point your phone at this thing, it serves you the URL that is appropriate for your type of phone. Do you see what I'm saying?
Okay, because.
Because they're different file types for iOS and for Android.
I see.
Okay, now in principle, you could pick up other things from the user agent string to use in that dispatch dispatching. I mean, then. Then you'd have to do it custom. Well, what else might you. I mean, you might. I don't know, you could have something depending on geolocation or some such other weird thing, Right? I mean, you could, you know, the, the, the IP address of the incoming. Right, guys?
Yeah.
So in principle, you could dispatch on more stuff. So you might want. In the deployment function, you might want a dispatcher that could be a little bit richer and use other things just for extra weirdness, you know, like, like it can know whether you're a night or day, for example. I don't know why that matters, but it might matter. Does that make sense, Charles and Roger?
Yeah. Yep. Okay, so I don't see an urgency to.
No, no, no. There's no. Right now I'm just trying to get a design. I'm just trying to get a design that can deal with that. Okay, so now this. Okay, so Todd and Joel, you understand that what they need is a piece of code running in the cloud. Actually, it's quite unclear to me why. Okay, how. What's the best way to implement this? They have a front piece of code running in the cloud that simply looks at the user agent string and then serves them one of these three files. I mean, that could just be a raw piece of code. What's that?
Yes, actually, if you like you say essentially right now, essentially we do a cloud deploy of just a switch of user agent and then we just redirect the URL. So essentially it's two files plus a cloud object.
Although they don't actually need to be files. I mean, you could deploy them as just parts of a single cloud object. You could literally say delayed of. And then some, you know, switch of the user agent string, comma, and then one pile of bits and then another pile of bits. Yeah.
Yes. Plus or minus that, actually, in the detail, the Android request some more crazy incantation to make it work. So that's why we needed the. Your redirection.
Okay, so look, Joel and Todd, could you help these guys to get that implemented in the right way?
Sure.
So. So right now this doesn't exist. This, this, this barcode is just generated by hand or something. I, I don't understand.
No, no, no. Everything is implemented. It's, it exists. It's.
The question is what's the correct administrative way to fit in with the cloud system?
Right. And that's sort of future proof and.
Which is practical and all of that.
Right. It's spraying three or four files in with, with a hierarchy into the cloud file system. Okay. And so the thing is first, what should it spray into the cloud file system? That's first question.
Right.
That's so that it is proxied by a single cloud object. So when you say delete object, it will go away. Am I making sense?
Yeah, but it sounds like if there's.
A high polygon count. Charles and Roger, what happens if there's a high polygon count?
I mean, it can be a rich object.
I mean, this thing could be a 50 megabyte file.
Yeah.
So it matters that you can delete it?
Yes.
Okay, Sorry, go ahead. What? You told you were going to say something.
I was going to say that it sounds. Joel, you're saying that external bundle is already this thing that they want?
Well, it's, I mean, it's close. It's close. It's essentially just a directory that has a cloud object that serves as the entry point to it. So when you request that object, it can run this delay.
That's great. That's what they want.
And then they can put other things underneath. Underneath it.
I think that's exactly what they want.
Yeah, sounds exactly right.
BOB S has also got some experience with kind of hooking into the cloud deploy, slash, cloud publish. There's some up value that you set to get it sort of recognized by some parts of the system just as another resource. But it can certainly be a point of contact.
Right, but so, so this is what they would do. It, it looks exactly like what they have right now. They just deploy as an external bundle and then everything will just work. Then, then that API function has to reference the things in the same external bundle. And I don't know exactly how it does that, but that's what you guys have to figure out. So Marcy, you, you understood that BOB S needs to be connected to these guys?
Yes.
Okay, so let's come up with a name for the thing which would actually show up in the uuid right? UUID followed by something here. And that name has got to be something like AR Dispatcher or AR Viewer. What do you think the right name for that is? It's the thing where when you go there.
It serves you the right thing.
Right, so is it.
It's not a viewer. Right there the viewer is in the thing that you have.
AR object.
Yeah, could be.
All right, so AR object, tentatively, because that's what you'll see. It's. Oh, what is it? It's an AR object.
Right.
Okay, so now let's talk about what it looks like when you publish this. So the thing that you need to get back. Okay. When you do cloud publish, you always get a cloud object back. True or not true. The display of the cloud object can contain weird stuff, as it does for mail receiver function. True or not true.
Find weird stuff.
But I mean, they need to get back a thing which displays the barcode.
So you're talking about what happens when you visit the URL on the cloud?
No, no, I'm not. Not when you visit it, no.
I mean we can easily. That cloud object can be baked into that other object that we have. So it doesn't have to be exactly top line thing.
Right. But the point is that the deployment there should have. I mean, the idea is you literally, you get back into your notebook this thing with a. Oh, the typeset thing. Yeah, the typeset thing with a QR code.
I mean, the best will have been that, you know, you do a AR deploy and then you just get a cloud object with the QR code. Right. Instead of the long URL.
No, no, no, I understand that, I understand that. So this would be an alternative. Okay, so that's an interesting idea. That cloud object could have some kind of option that causes it to be displayed as a QR code rather than as the URL? That might be useful in general.
Yeah. Actually.
Why are we using why do we want the cloud object returned, not some other wrapper that contains the cloud object object and the barcode and display.
Okay, we could do that. The, the disadvantage of that, the thing I'm concerned about is we're going to need to deploy a publish whatever. And I don't want to replicate, you know, AR publish, AR deploy seems very weird, right?
But don't we have already. Don't those objects, those functions, cloud publish, can't they already take things they could just operate on this head, this object?
Yes.
The question is what does it return?
Yeah, Cloud publish always returns.
A cloud option always returns. I see.
So we, we have counterparts for this in, in like Create Cloud Expression and maybe permissions group that have their own creator deployer functions that return something with a different head. So, so it's not. You have to give it an expression anyway. But. And it's critical for cloud expression because the way you use it is completely different from any other kind of object.
Right.
That's why it's an exception.
And delete object works on it, but.
Delete object works on it.
Okay, so let's come back to this. Okay, so the. The options are AR deploy, AR publish, two functions, and an AR deployment. Or actually AR object will be the consistent thing. Right. So the. The one possibility is that we have explicitly our. Because people are going to want both the deploy case and the publish case, in my opinion.
And you think of which one is private of these two.
Deploy.
Okay.
Publish has the public root.
Yeah.
And then these would probably create an AR object. I hate that, though, because it's really an ar. It's really a cloud object. Okay, so plan B would be that we have a new thing here that is called where. Where you say cloud publish of ar. Okay, here's an. Here's an interesting suggestion. Maybe. What about cloud publisher AR of graphics that then returns a cloud object whose format has been set so that it displays its URL as a. In this form. Do you see what I'm saying? So cloud object. Right. Now, Joel, I think didn't we put in these things that specify the format in which the cloud object.
There's name formats and URL types. Yeah.
Okay, Cloud object name format. So that could perfectly well say. We could have a setting for that that just says QR code, could we not? Because that. That affects just the print form. Correct. Is that true? It affects the print format should be formatted. Yeah, it's just the print form. Right.
It's the question of how the URL looks is probably after this, because the name format actually changes the URL. It could be by uuad.
I see, I see, I see, I see. Okay, fine.
So we might have yet another thing. Yeah, right.
So we'd need another cloud object display format. Yeah. Okay, so it could either be. And it could be. That would be useful anyway because sometimes you just don't need to see the frigging. You know, you could just say iconized or something. It's just a blob and you just click it to get to it. All right, so cloud object display format. Okay, I kind of like this. What do you guys think? Roger, what do you think of this?
What? So it's a kind of a wrapper, is what you're saying?
Pure wrapper that says make this an arm. I mean, I don't know what Else we'd say ar. What? Yeah, AR object, ar. I mean, and you know, this is nice and short. So then that would go in the. When we have cloud deploy. Right. There's a motley collection of things that you can deploy.
Oh.
Right. Each one is lodged in the server in a different way.
I see. Okay. Just thinking of what else one would use that wrapper for, but I can't immediately.
Well, we don't have anything right now. I mean, I think that potentially that wrapper and. And inside that wrapper you can put all these things like the formats you want, and you can put other, you know, details, like a maximum polygon count or something, whatever the hell you want there. If you see what I'm saying. I mean, the whole point is you need that because otherwise if you just have a 3D graphic there, it doesn't know that this is what you want. It doesn't know you want to go augmented reality with it.
Yeah, I mean, that. That is to give cloud publisher knowing what to do. Right. Instead of having a different function. But then cloud deploy can also work on the same wrapper.
That's the whole point. And so the whole mechanism of permissions and publishing and deployment and, you know, all that stuff and auto refreshed and so on, everything will just work. Auto refreshed, Refresh.
I got to learn more about the cloud.
So auto refreshed is something where. Let's say that the. That the thing you're. Well, I mean, I'm not sure that that would work in this case, but. But you should be able to wrap. Okay, so here's an interesting question. Okay, let's say you want to do the following. Let's say you have an API function that wants to return something that is one of these ar. Well, I guess you just do that. Yeah, you just do that. Because you have to have a secondary publishing. So your API function would then contain cloud publish of AR of whatever else.
Yeah, they would do the same thing as we. As you do in top level. So what you mean.
Right, but I mean in this. So here what you would do is to get out the QR code, you would just say this thing here. You'd have a sub value to the cloud object. We have sub values to cloud objects, don't we?
I don't think we do, but I want. I. I've started.
Information have the following properties.
We have information. Yeah.
Right. So we could certainly put QR code into the information. Right. And then these things could become sub values as well. Does that make sense?
But this AR head that you're talking about, does this exist only as a queue to cloud publish or does it have some other use in the system?
Well, I'm not sure yet. I mean, what else could it. I can imagine that it has other uses in the system. Like, I mean, it is, it is like rasterize. It's a way of converting, I mean, okay, spherical image, for example. How would you get. Wait a minute, you know, for example, you want to make a spherical image? I don't know. I mean, I'm not sure. Roger. Charles, what else could that be used for?
Well, I mean, there was also, I mean, like earlier the AR deploy have different target. Right. I mean, right now it seems like all our emphasis is on the, you know, the cloud side, but is. It's possible that there is a different part later on with, you know, a different device, it doesn't go to the cloud. Right. Or we have a completely different process.
Right, right. But the whole point here is that we would then support whatever it is, Service X, you know, Service execute or something of this thing, which would send it to some bizarre, you know, I don't know, sort of, you know, VR dome or something, whatever the heck it is. I mean, I remember about three years ago I was, I was using. It was unbelievably messy, but I was sending things to the. Oh, what was it? We're using a Vive I was trying to send. You remember that? I think you probably helped with this, Charles. I was sending stuff for the physics project to be able to visualize hypergraphs.
Yes.
How did that work? How did that actually get sent to the vive? It was very messy, as I recall.
Well, I don't know what was iteration after that, but the first prototype was through the Unity link where we were essentially building the whole scene and generating the code for the scene.
Yeah, that was freaking crazy. I mean. Yes. I don't think there was another iteration. I think we gave up at that point. But is there a more modern way of doing that using these, using this GLTF format and things?
As far as I know, those device don't yet have those direct paths. Or maybe I need to explore more. I haven't yet checked, but.
Okay, okay, but. All right. So one question is whether to be more defensive in the naming of AR here.
Right. It doesn't seem useful to have this symbol if it only is used to signal to cloud publish and cloud deploy that this should be done.
They need a signal. They need a signal.
Well, but I mean, if this head is useful onto Itself as a wrapper, general wrapper in the system, then great. But if it has no. And I guess, I guess it probably will be used for some things.
No, no, but, but Todd, my point is it needs to be some signal to cloud publish.
Well, well, the alternative would be AR publish, right. AR deploy.
Which I don't like very much because they're giving you a. I see. AR publish that returns a cloud object.
Right, right.
We just, it's just, we don't need to invent. But then we have to have two other symbols. AR publish, AR deploy. It just seems a little weird to use this AR wrapper head only as a, just as a hint to cloud publish. But, but I suppose it probably.
API function is only a hint to cloud publish as well. Well, I mean, I admit. Okay, well, you can API function you can use directly in the system.
You can use it directly and you can use it in generating HTTP response, which, which is something that you could use for other types of web server.
Situations, which you could also use for this. Presumably.
That's. Let's see. Is that right?
Think so. If this thing is. Yeah, it should work the same way. It should produce its bundle and then you can deploy it. Not in the cloud. So. So.
The bundle is cloud specific. Yeah. This is where I'd want to ask Carlo how he would think of this for generation.
Okay, fine, but I mean, but that's a good point that, that being able to deploy this. Yeah, in a way.
Is this connected to an export format?
Yes, there, inside there is multiple export formats. Okay, but here's the scenario. You want to. Instead of using our cloud, you want to have a piece of JavaScript that's running on some generic Apache server. See what I'm saying? To do the same thing. I mean, I hope you wouldn't want to do that. You might as well use that cloud.
Right, but. But in that usage argues for AR publish.
No, it doesn't, because that's going to the cloud object. Because if you say generate that, otherwise you are generate HTTP response, which is crazy. If you've got this wrapper, this AR wrapper, you can say generate HTTP response. You can do everything that you can do with any of the other cloud object things. All right. I mean, okay, how could we name ar? A bit more defensive.
I mean, in some ways it's kind of xr that we're doing now. It's VR, ar. Mr. What's Mr. Mixed reality.
Okay, Well, I mean, you know, I could imagine something like then XR rendering of graphics or something. Actually, why Not XR form. That, that's the same thing that we have with export form, right? Oh, yes, yes, yes, yes, yes. Remember export form. Think about export form. Was that what you were going for? Yeah, yeah. This is what to do, this is how to do it. See what I'm saying that says that when you cloud deploy, we want this as a gif.
If you remember, that's what I was pointing out at the beginning, that if somebody know the platform where they are you are on like right now, somebody knows.
So then, then you can do cloud deploy of export form of blah, blah, blah.
My point is that these parts are there so we can tell user how to do it and then the best is to have a separate function who does the AI deployment.
It's not the best thing. Think about it. Look, we just went through all the reasons why that's not a good idea. Because it's got tons of options about permissions, about whether it's a generate HTTP response, going to a foreign server, et cetera, et cetera, et cetera. We do not want to replicate that for the AR thing. You see what I'm saying? We want to piggyback on what's already there in the cloud.
I agree, but somebody can replicate it in a few line. The course is that, you know, by embedding it has happened.
No, no, it's not going to work, Charles. It's not going to work. You got to be able to delete the objects. You've got to be able to do all these things which are all provided by the cloud system. You're not going to rebuild the cloud system.
No, no, I agree, Steven, but what I mean is that in a classroom, right, Somebody have to just tell to a kid, you know, just take your plot 3D and generate it to the, you know, export it and look at it on your phone, right? So somebody have to start to type, you know, cloud publish of AR of graphics and generate a cloud object. So there is that, I mean, programmatically is nice.
You know what? You know what? You know the 3D print function? I've tried to use that a bunch of times. It never worked for me. Never worked. I always have to ask you how to use it because it always doesn't quite connect to the printer correctly. Does this wrong. It does that wrong because it was another one of these el cheapo things that doesn't go through our main system. So when things go wrong, you know, you're stuck. I agree. It's nice to be able to say, you know, just render this.
So Is it the case that, that we're trying, that I'm thinking about like a function that's trying to translate something about the environment to which format are we rendering to.
But something in the, in the runtime environment from the phone.
Right. But I'm, I'm trying to imagine how this could be made, you know, like more defensively. So I'm thinking of it in terms of there's a rendering function, or there's a function that's going to take a graphic and an environment like it. Something basically a function that translates from something in your environment to the export format and you could provide that for the different environments. Cloud environment would use User Agent, but another environment might use something else in that function.
Yes, but I mean, that's not the only thing you might want to do. You might want to reduce the polygon count for certain devices and things like this. You might want all sorts of stuff going on. Is XR Publish okay? If you could have XR Publish, for example, as. I mean, if what we did was to say there's an XR form that is like export form, or perhaps it's a version of export form, but it's not because. Because it's got MIME types and things in it. Right. Am I making sense? I mean, I have to believe that there will be a, an on computer version of this before very long. Am I making sense? As opposed to only phones, the VR version will be an on computer thing, right?
I mean, they'll definitely be headsets. No, but are they going to be standalone or.
What about the following thing? If it's on a computer, why are we just acting, you know, like we're dead in the water. Why aren't we just bringing up a, you know, a standard 3D viewer? In other words, if you open that URL on your computer, why not come up with a 3D viewer? Seems like the obvious thing to do. I don't know how you launch a 3D viewer. Is there a default 3D viewer that exists in a web browser, for example? But that's what we should look at. Go ahead.
Well, so when, when you say 3D viewer is pretty much on the desktop, the wider viewer is just based on the file format. So like in that, you know, in the first example, you. I mean, for example, when you try to open it from your computer, the system open, right? In that case, we can't. On Mac.
We just have a MIME type. That's what determines how it opens on a web browser. It's going to open in a Web browser with a MIME type. Okay, so which M what is there a MIME type that will produce a 3D viewer?
I think they all need some kind of plugin. I mean, or do they.
I mean, is that still true? I don't know if that's still true.
I don't think it is.
Wait, so for on the browser by default don't support USD or grtf, right?
They don't yet. I understand they don't support those yet. Right. But the question is when you are serving it to the desktop, what dot you need to serve a dot, blah blah blah file to the desktop. And I assume that the files that you have, the backing files here are named as USD, et cetera, correct?
Yes. And if you open them, there is a MIME type.
Fine. So I'm saying for the desktop we should produce the most friendly, most, least ridiculous MIME type. Right? The one where you're most likely. Or it's easiest to get a viewer and if there is one which is has a viewer by default in. In web browsers, that will be great. Am I making sense?
Yep.
Yes, Global there.
And that means we don't have to have that page of the you got here. But we can't do anything with it unless we think it is so difficult to get a 3D viewer that that's what we have to do. Otherwise you'll go through the operating system mechanism of there's an unknown MIME type. Get a viewer for this. Right.
Right.
Okay, I need to get going in a second here. But, but, but, but, but.
Stephen, were you suggesting what's highlighted on your screen. Cloud deploy of export form of some 3D graphics comm. That is what you're suggesting this should be.
Well, I'm asking. Could we just do that as the. Wait a minute. As the manual version of this, you know, quote XR or something as the.
Manual version of this or as the only version of this?
No, as the manual version and then give Charles his XR publish. That will be an el cheapo version of this that doesn't do permissions, doesn't do all kinds of other stuff. Right. Do you get what I'm saying?
Is there an XR deploy or is it just.
No, there would not be. Just be XR publish. And if you want deployment, you know, you've got to go and use cloud deploy of export of export form of that comma xr. Now, I don't think we should just call it xr. We should just call it, You know, like XR Object or something Mirroring the. The file extent, you know, file name. You see what I'm saying? And that would then deploy as one of these external bundle. Does that make sense to you guys?
Yeah, yeah. I mean, the deployment is an external bundle.
But is it the case, do we have file formats that deploy as multiple files in the cloud? Is there an export format? Roger. There are exports, export formats that deploy multiple files. True or not. Doesn't even hdf, doesn't that have a directory?
I mean, USD have directory. I mean, the whole is a zip file.
So I'm asking a different question. I'm asking.
I think HDF has. It's all baked in.
Okay, all right. But I'm asking, in export, do we ever export a directory?
HTML does that.
HTML does for sure, yes.
Okay, fine. So we've had a precedent for that. So we can simply say export form of XR object. Now then export could also be able to export an XR object, which would be exactly the same thing that you're deploying to the cloud as a directory. Do you see what I'm saying? Right, right. Which is a nice way so that then you don't have to go through all of this auto plumbing. You can just get the files sitting right there on the, on your file system. You do whatever you want with them. Right. Makes sense. Yes. Does that make sense, Charles?
Yes, yes.
But, but if you're saying export, just export of some 3D graphic comma XR.
That'S what I'm saying, is going to.
Make a directory that mirrors the. But is that what people want if they're doing it? If I'm just doing this on my desktop computer.
No, you don't want that. We don't know why you want that yet. It's just a thing you might want. Okay, we don't know what that's good for right now. Okay. The more common case would be that you say cloud deploy of export form.
Yeah.
Of graphics 3D comma XR object. And that would then do everything we're talking about. But there would be an el cheapo form of this, which is XR publish of graphics 3D. Does that make sense?
Yeah.
Why am I saving this?
Geometry graphics?
Do you like the name XR Publish? Would you prefer AR Publish? And I assume we want a default to publish it. I don't think we want to default to deploy it because in your scenario of a classroom, it's not going to work. Do you get what I'm saying?
I think publish is the most useful, at least at this stage.
Yeah. So do I. I think the number of people have secret geometries that they're, you know, that aren't, you know, where they're going to worry that somebody's going to poke into their UUID is, is very small. Okay, so XR Publish, like publish would then have a second argument. That's the destination.
Charles, do you have a strong opinion between xr?
Not really. I mean.
Me neither.
I mean, don't you think it's going.
To be called when the, then the Apple headset thing comes out? Is it going to be called XR or AR. When we find out what Apple has been calling it? Because I think that's going to dominate this market when that finally appears.
It just decided to actually release the product this year.
I mean, Apple have been always calling it ar. I mean, all this stuff, it's ar. Okay, so it always ar.
Then maybe we should call it AR Object for now. I mean, AR seems.
And the meta people, you know, Oculus and so on, they are the Earth folks. Right?
Well, I mean, AR is certainly the more popular name for now.
Yes.
All right, so AR Object. It is an AR Publish. Okay, so then cloud Publish has destinations and so on which this would inherit. And this is returning. Arpublish is returning a cloud object that will have this extra plumbing that Joel is going to implement that allows you to get the QR code make sense.
So that means that will be basically a one stepper.
Yes. Arpublish is a one step thing. This will return a cloud object which will just look like it'll basically return this.
Yeah.
Oops. It'll look like this. And there's a cloud object wrapper around it, which. Well, that's just life. That's okay. Yeah. Okay. I think we got a decent design here. It's pretty cool, actually. The whole functionality is very cool. Right. Anything else?
Fine for me.
What's that?
It worked fine for me when I did it at the start of this meeting.
Yeah, I do just want to try. Okay, one thing here, just one second and I really need to go. Oh my God. Does it need a progress monitor? Probably. What's it doing? Does it run the different file outputs? Are they okay? Why is that? That looks a little odd.
Oh, that's right. We wanted to kind of put the shape of the shape of the object there.
I know that. In what angle? Why not put it at the default view angle?
Yeah, you should probably restore that. We put front on default on.
I don't think you want to do that. I think you want the default view angle. Help. How do I do this camera? Wow. Well, if it wasn't ghostly, it'd be fantastic. Wow. The thing is a little bit. When I pinch zoom the thing, it's a bit fuzzy.
Is there something with the normals, Charles?
Yeah, we have. We need to carry the normal, the color and the rest.
Can you see that? It's a bit.
Oh, right. Because also they. Right. They also look at it as a subdivision surface and they smooth the whole thing. So we need to push the normal to avoid all that.
I focus the stamp thing. It's weird. Okay, there we go. Okay. So it looks like one of those things that's been, you know, printed 3D printed out of some bad plastic.
Yeah, it looks like it's an inflatable too. Might be a good inflatable.
This one might be. Yeah.
Build a really big one. People can walk around it.
Right.
Okay.
Anyway, so minor issues there, but it's spectacular. This works. Okay, I am super late. I'm going to be late to the next meeting. I would guess 10 minutes late or something, which is also a live stream. And we're obviously going to have to come back to the. The remaining stuff that's in this agenda.
Right.
And unfortunately, we are deeply running out of time because there's a lot of other stuff going on this week. But hopefully we can. We've got. Roger, we have a meeting this evening. Maybe we can cover this then if Charles is available. Let Kristen try and deal with that.
Okay.
Okay. Actually, hold on. Okay. A couple of people from our live stream are favoring XR and Mr. And. Yeah. But I think for right now, this deployment and those file formats. If I look up the GLTF file format, will it say it's an AR file format or. Because it isn't a VR. I mean, it's not the thing that you feed to a. You know, to a VIVE headset or something. Right. There isn't a way to do that yet.
Yeah, they are just generic transfer format. Right. For 3D.
Yeah, but so this workflow is really an AR workflow. Yes.
Yeah, it really is. The whole point is that you walk around it, you know, it's places it in your environment.
Well, except that I think the more actually, for our purposes, the thing that I. Where I was just visualizing the object without is. Is also really, you know, that's also useful. Okay, I gotta go. Thanks, guys. And for those following these live streams, we will be starting our livestream probably in about 10 minutes. Thanks. See ya.
Okay.
More from Guy

Cheryl Strauss Einhorn | The Human Edge: Smarter Decisions in the Age of AI | Talks at Google

Rachel Glennerster | Innovation and the Center for Global Development | Talks at Google

Rebecca Winthrop | Rethinking the Purpose of Education in the Age of AI | Talks at Google

Dr. Robert Wachter | A Giant Leap: How AI Is Transforming Healthcare... | Talks at Google






