Live CEOing Ep 638: Language Design Review of Astronomy, Geography, & More

This is a transcript of a Wolfram Language design-review meeting (version 13.2) led by Stephen Wolfram with Jose, Roger, Nick, Ian, Jeff and others. Major topics discussed: performance improvements to unit operations and disambiguation of temperature vs temperature-difference; semantics and options for RandomDate/RandomTime (including discussion of independent sampling vs inter-event distributions like exponential); extensive design and UX review of tree-related functionality (Tree visualizations, TreeOutline, FileSystemTree, expression-tree conversions, metadata/attributes handling and tooling like tooltips, elision, mouse-over, and defaults such as $MaxDisplayedChildren); and a large new feature set around astroposition/astrographics (unifying geoposition as a special case of astroposition, multiple coordinate frames — horizon/equatorial/galactic/ecliptic, projections, observer models including retarded light-time/aberration/deflection, angular-separation APIs, data ranges from NASA, and planned future support for cosmology/gravitational lensing and richer imaging). The meeting surfaces many documentation/UX fixes and known limitations/proposals to address metadata representation in Tree, better ref-page wording, and visualization polish (autocomplete, scrims/tooltips, default label functions).
Chapters
Okay. Hello, everyone. Welcome to another Wolfram language design review, another in our series of version 13.2 design reviews. And we seem to have a variety of things here. Oh, wow. There's all kinds of stuff here. All right, let's start off units.
Nick.
Yeah.
Any functionality changes here?
Not really. Our big focus for this release was to try and get some of our fundamental unit operations a lot faster. So the benchmark section has a breakdown, but we're basically looking at, you know, two to three orders of magnitude improvement for our fundamental unit operations. So those blue bars are the old timings in microseconds. Orange bars are the new ones.
Good stuff.
Yeah. So our first pass was fundamental unit operations, unit conversion, and then arithmetic is the thing we're still working on, but they should all hopefully be faster and then just knock on effect if everything's way faster. And then.
Yes.
Temperature was the other change we made to remove the ambiguity between temperature.
So if I say something like, you know, 200 degrees Fahrenheit, minus. Minus 10 degrees Fahrenheit. Oh, look at that. Swank. Okay. Right. Cool.
Yes. And these now can be used without ambiguity in formulas from physics like Planck law, Stefan Boltzmann law, etcetera, because it will know when it has to use the object as a temperature or as a temperature difference.
Now, I assume that this has been flowed through to all the other places where we're. We won't have some kind of crazy, oops, that's the wrong kind of temperature thing in formula data and all that kind of stuff, right?
Nope.
We did a comprehensive review of the formula data, formulas and made sure everything looked good there.
Good work. Nice. Okay, should we move on?
Yep.
Okay. Random date. Okay. So what happens if I say random date this century? Okay. All right. And if I say random date. Oh, yeah, fine.
Whatever.
And random time is similarly. I can say random time of today. It'll be some random time today. Okay, fine. I assume that there are no interesting distributions, probability distributions for times.
Could you say that again?
I assume there are no interesting probability distributions for times other than uniform.
Well.
Go ahead.
I mean, yes, they kind of are. Right. So, for instance, if you measure server traffic or human traffic, I mean, like traffic traffic.
Yeah, yeah.
The times between events has a distribution or something exponential, typically.
Okay.
And. But there's a whole slew of other ones, like for. For more complicated queuing models and so on. That's what you vary. Do people cluster up things like that?
Yeah. So there is a sense in which, if it's random time and those times were when cars would go past this point or when people would visit this website, there might be a distribution that makes sense. Right.
It's really the time difference that there are distributions for, if you like. So I'm saying the difference between events.
I understand. Which is a little bit different than what we have seen previously with other random variant type functions where. Where every individual element is picked independently from. From a probability distribution. Right. So when the same random time. We want. Go ahead.
But. But it can go both ways. But, but typically the time between events is independent. It's independent and exponentially distributed. For instance, that's the simplest model.
Yeah, I get it. But I mean, that means that if I ask for 100 random times, that would be. Okay, well, but I might want times that have this exponential difference between them as opposed to. Whereas if I ask for 100 random values of just in random real, each one of those random reals is independently picked from a, you know, Gaussian distribution or whatever.
No, uniform.
No, no, I know by default that that's the case, but I'm saying that. I'm saying this is a different case because what is distributed exponentially is the difference between values.
Yes, right.
Whereas in the usual case, what's distributed, however it's distributed.
Yeah, it's a bit different, but the.
Difference essentially means that the center of the distribution would be a date and the width of the distribution would be a quantity. But it still works as with any other quantity distribution.
No, but, but Jose, what I'm saying is you ask for 100 random times and what we want is this exponential difference between exponential distribution of the difference between times, which I claim is a different type of way of selecting 100 random variants because they don't have the same independence.
Yes, I understand that, but what I'm saying is that this can be implemented by saying we have a Gaussian distribution of dates in which the center is a date.
I see.
And the width is a quantity, which is the quantity of time differences you.
Are talking about more or less. Like we have quantity distribution as a decorator for the other distribution functions, we could conceivably have a date distribution or something like that, or piggyback on quantity distribution.
All right, but it's not particularly important right now. This is. I mean, I do think it's somewhat. I can imagine for testing purposes, for example, that random time with those exponential distributions would be of interest. See what I'm saying? If you're going to run tests.
Yeah, But I don't think that the design today prevents us from accepting other arguments in the future. For instance.
Yeah, I agree. I'm not too worried about this.
And there is a workaround today.
What's that?
Degranularity is actually an option for random date and random time.
Oh. And why isn't it also an option? I mean, we should probably have it supported as an option to date object. Even though date object has us as an argument.
Yeah, I think we'll add it there as well.
And why is there no autocomplete here?
That usually takes a build step.
I think you want random date.
Okay. Okay.
Yeah, I'll show up on the autocomplete, but it should be getting populated already.
No, no problem. Okay, let's keep going.
Before we move on, Nick, do we want to look at some of the pages? And particularly we have a question about quantity.
Right.
How do you express quantity?
Yeah.
Ref.
Quantity has a specific tentative note.
So the first three nodes are internodes that we might have, but the one we want to ask about is the fourth.
This one here?
Yep.
Well, it's rather ponderously written. I mean, I would say. I didn't understand this. It should say temperatures in kelvins can be added together, but not in. But not another scale. But. I mean, this is just very ponderously written. I mean, I agree with.
Why don't we rewrite that, Jose, when we work later in the week? I mean, I haven't seen this before. Did it just get in or something?
Yes, very recently we wanted to have a motivation and. And something to mark as new in the.
But I agree with Stephen. It's got to just. It clumsy.
The sentiment is right. But the, you know, the presentation is ponderous.
Okay.
Now here's a question. I mean, is there a way of getting. It's. It's not worth worrying about. I mean, you know, from degrees Celsius, how do you derive the, you know, programmatically derived degrees Celsius difference as the different. I don't think we care. You know, if you really care about doing that, you can take a difference between two quantities like that and see what the units are. Never mind. I was just talking to myself. That's fine. Okay, onward we go. Ready? Okay, let's go into the trees. Ian.
Right. So we added two new things for visualization and made some other visualization updates and then have some suggestions for new tree constructors.
Okay. All right, so where do we want to go first?
Start with tree.
The ref page for tree. Yep. Okay.
So I added a tentative note.
I don't see it.
Oh, no, it's it's already 132 plus options affecting elision of nodes include.
Okay. Yep. That's what we discussed.
All right.
I mean, I think. I mean, I can see it run. Right. I mean, I could just say random tree of 40 comma max displayed children, arrow 3. Okay, where's the illusion?
So the. The root only has two children. So there wasn't any elision.
But what about all these sub pieces? There's. There's things here with.
It all goes to three.
Oh, Christ. I want to. What the hell happened here? The hell happened here? How can that happen? That's not a tree, that's a bug.
I'm gonna have to track that down.
Well, let me send you this tree before I. Before anything bad happens to it.
Is there a way to like output the random state right now?
Is there? That's a good question. Dollar random generator state. We can try. Wow, I've not seen that before. That's pretty swank. That's disgorging the in insides of the creature. Okay. But here we should be able to reproduce this. And this is the. You know. Well, there you go. Let me just send you this because that presumably is going to reproduce that problem. And I wonder whether that's an elision problem or whether it's something completely different. Something very fishy is going on here. I think it's to do with the elision. Yeah, I don't know what's happening, but I think that's an illusion problem. And I'm also very confused. I mean, if I say Max goes to 2, weird has that same problem again with the 15.
I actually think I know what's happening now. I think I'm forgetting to increment a counter when there's a lighted nodes.
Okay, fine.
Yeah, okay.
All right. But I think this visually looks nice. There's no mouse over for that thing though. But I mean, I don't know. I like this. This is good. This looks really quite nice. Roger, do you have any comments on this or thoughts about this? Any issues?
I think it looks pretty good.
Okay, fine.
But I agree. I mean, I think we should try to think about sort of mouse overs, generally speaking, and we should improve our tool tips for them.
Yeah, I think in this case that having something, you know, for nine, we could put it.
One of the things it could do, Ian or Steven is to. If you don't want to sort of expand and blow it all up to just kind of have a more of a summary table of properties. Like there are so many nodes under here, subtrees. This and that statistics, basically.
Yeah, but even just saying what these nodes are but for nine of them is perfectly doable. And I thought we were going to.
Can't those. Those have sub nodes?
Yeah, they can.
Okay.
Yeah. The total is giving you the total number of siblings at that level. Oh, but maybe on mouse over we could do things like you were saying.
Like, I mean, one day you got to be able to click this and open it up a bit more. But that's.
Yeah, but I think.
Indeed.
I think tooltips are perfectly good. Like when you have a. When you don't have paper, basically.
Yeah. All right, let's go on tree outline. What's that again?
So while we were on this, could you just look at the pages for Max displayed children and $Max displayed children quickly, just like the usage messages and notes.
Well, this isn't right. I mean, it says display m children. It's totally confusing because then I'll just say max display children arrow m and it's only going to apply to the root node.
Yeah, it's like all of these local.
Options, you should show the explicit all arrow whatever. You should show that right under display m children for the root node. And then you should say list all arrow m. You should do that for all of these options where people will otherwise be just like tearing their hair out trying to figure out how do you do it for all the nodes? Okay, you should include that in the table.
Do you think keep the note or remove the note and which note? All arrow m. I wouldn't put.
Follow the note. I would just put it in here. Okay. Okay. But this affects every no node, not just the root node.
Correct.
Okay. And it should probably make it clear in here that $max displayed children effects is the default display the default number of children. And that default is $max displayed children. Right. You should say that. Oh, the default.
There's a note right below that table.
Yeah, but the confusing thing is deflate display the default number of children from for every node. Display m children for the root node. All arrow m display m children for all nodes. You see what I'm saying?
Well, even automatic only affects that node.
But then this is nonsense. You see what I'm saying? In other words, does $max display children affect every node in every tree? Answer? Yes. Right. Okay, so this is not clear, but.
I'm saying setting automatic in a given node only affects that node.
I understand that, but this is affecting. The default is automatic. So the default for every node is automatic. So if I, if I, you know, set $max display children that will seep through every node by default. Right. So you need to make that clear. Okay.
Yep.
Otherwise this looks good. Okay. What was the next thing you want me to look at?
Tree Outline. So there's a tentative note. The basic idea is to update this so that instead of returning an opener view object, it returns something with head tree outline that just formats appropriately.
That was coincidental. They were both 18s. So I'd like to comment that I think doing something like green with those. With those greater than signs would help me to understand what on earth is going on here.
Yeah, Billy and Noah were working at one point on a new UX and design for this. We'll have to pick up after 13.2.
Okay. But I'm suggesting that we just greenify this slightly. I think I will make it less obscure. And if anybody else got comments on this.
There is something that we're working.
Uncompelling about it right now.
I mean, I'm not helped by the fact that the actual tree has rather uncompelling elements in it.
That's true. That's kind of true.
Right. I mean, I assume that some of these trees from file systems will look a lot more compelling. So let's look at that when we get to that.
Can you. Can you look at the documentation for Tree Outline?
Yeah. Is there a way. I'm trying to remember that this is. What do I do? I press the dot?
Yes.
Okay. I was just looking at this.
The one thing I'm proposing is that Tree outline now doesn't literally return an opener view, but it just formats.
That's fine by me.
And then scroll down. There's this thing where. So Tree outline doesn't take. Won't take these options directly, but the idea is to support some of the options of tree. So if you have labels in the tree, you would have those same labels in the outline.
I don't understand why you wouldn't let it take those options itself as an override for the actual internal tree options. Well.
You can't actually overwrite options in that way. You just add options. And since Tree outline isn't really a tree itself, some of the semantics don't make sense.
Really.
Like. Like there isn't a parent edge for a tree outline, for example.
So I don't understand. So your point is these are options for the tree which will affect the tree outline display.
If you scroll down. I think I have an example of what it would look like with xml, maybe in applications.
Well, I'm confused here.
Yeah, there.
I don't Understand what this is? What's that? Oh, that's part of the expression tree. No, what is that?
That's what positions to have opened.
Okay.
So the other proposal I'm I'm making is that since expression tree has nice labels for things, that the tree outline should also use those labels for sure.
Hey, hold on just one second.
Is that the correct DOM tree?
I'll be right back.
I believe so. I mean, so XML has additional kinds of nodes for attributes and we include that in the data. But aside from that. Yeah.
I mean there are some implicit, like paragraph. Is one of those implicit ones that, that you might have, you know, not explicitly marked up?
Yeah, like, is that one like a self closing tag? Yeah, self closing tags are represented with an empty list of children rather than as a leaf. So we can't distinguish empty tags from just text.
But when I look at DOM trees displayed, they mostly look better than this. I think we should. Did I give you the book of Trees?
I don't have a copy.
That and some, some of the actual sort of dome tree, you know, displayers I think are kind of good examples.
Yeah, we looked at the Chrome and Firefox browsers for xml.
I think those are both good actually.
I think we had discussed having tag column value rather than having it below.
That's what I've seen most of the time.
So say again.
We were discussing how to present tags and values for XML in outlines.
Mm.
With a colon rather than having one under the other.
Yes, but in terms of the tree, what are these? What's the payload? Which part of this is the payload?
So the inner nodes, the payloads are a list with the tag and the list of attributes. And then leaves are text, just strings.
I mean this is a new thing, the expression tree. What's expression tree outline? What's that?
It's a idea for maybe for the future.
Okay.
It's kind of functionality at least just get an outline of the XML directly without building the tree.
But the expression tree of XML is new, yes or no?
No, we added that in 13.1.
The question now is what to do with the tree outline of an XML tree, Is that right?
Right. And I think one first easy improvement is to just use the same labels. But other programs and other programs have additional ideas for how to render an outline of XML that might be worth learning from.
Okay, are we reviewing this now or are we not.
Just. Just approving the. Using the same labels and being a form.
I'm very confused here. I'm sorry, I'm very confused. The Underlying XML tree. Okay, so let's just look at this, the underlying XML tree here, whatever this is. Okay, so I just want to take this XML importing some random XML thing. So now I have this tree. Okay, so now I've got this thing and I don't understand now if you.
Mouse over the inner nodes, you'll see the actual payload.
Which is what now? I mean this is, you know, written in terms of roar xml. There's the tag and what's that null list there?
It's the list of attributes as it would appear in XML element.
Okay. Okay. So the nodes are not XML element. They could be. The nodes could just be XML element with all of its tentacles in it.
It's kind of redundant because XML element represents the entire tree, not just the, the payload at a node.
But what, what is the XML tree? What does it look like?
Evaluate xml.
I don't understand why. I see. So this is now being turned into tree of blah, blah blah. Yeah.
What should be there? Probably like that way you have highlighted. So the node name or type is sale.
Right.
Then there is no attributes. But then the stuff inside of it, the values basically is next. The third thing.
And the fact that there's this concept of an XML element, it's kind of, you know, that's a past history from before we had trees. Yes, I mean in the future import of an XML thing just directly generate a tree.
I think, I think it should get the DOM tree, which is, which is not a way of saying what you're saying.
What happens to the attributes then?
They're still there, you have them in the nodes. And tree was designed to do that. Right. Tree has the ability to store annotations in the nodes.
Well, right now we, we have the data. And so I don't know if you just mean having a data at a node at all, or having data like a separation of data and metadata.
Okay, but let's go back here. So we're talking about right now, Tree Outline has a particular way of dealing with XML trees. We also have a particular way of dealing with XML trees in the whole, you know, import, etc workflow. It seems like we have not yet come to equilibrium on this issue of how we deal with XML trees.
Because I think this is the strong future driver for tree functionality.
Yeah, but I'd like to know how I do manipulation on XML trees, etc, Etc. Etc.
Yeah, yeah, exactly.
Yeah. And for that I need to know, you know, I have no idea what, what it's going to look like in terms of doing that.
So the first thing that we did was to figure out how our existing position and level spec languages work for trees. And we basically finished that in 13.1. So you can use tree, extract tree, insert tree, delete, and they actually understand the structure of the, of the tree. Whereas if you do insert, delete, extract on xml, that's the expression that you're working with, not the tree that it's representing.
Hey, so I mean, in terms of sources, Sandra is asking here, what about going from the outline like this to the tree? Well, I think that outline is like an opener. View type outline. I mean, there's multiple types of outlines because there's a notebook type outline, there's an open view outline. Each one of these could be treified. I mean, in general, expression tree is a fairly rich and complicated thing saying how you label, how you determine what become the nodes and the edges of the tree. And XML element is another case of this. Let's not get tied up with this right now because I think we need to separately talk about XML and the generalization of that. Okay, File system tree. That's the one I want to see here. Yeah, this is the type of thing, these structure conversions here. Okay, so what do I look at next? File system tree.
The rep page for file system tree. So since we've looked at this last, the idea here is to use absolute file paths for all nodes and then use file names for edges.
Okay, that's confusing. I mean, why?
That way you can, for example, do treemap over the tree and you can actually apply a function to the file you want because you have the absolute file path.
How does this write to file system map?
So file system, this is basically like file system map of identity.
What do you mean? I mean, file system map generates a nested association, right?
And if you convert that association into a tree, this is what you get with expression tree. So this is like a shortcut for doing file system map of identity and then expression treeing it.
But, but isn't this supposed to be sort of the start of processing? So what, what's easy processing based on this? What are the, what are the things you can do when you have this tree?
Well, let's just see what I got. File system tree dollar installation directory Right? Oh God. What's it doing?
And I think the version in the prototype build.
What's it doing? What was it doing?
I think the version of the prototype build is not using association yet.
Okay, but if I say file system tree and I say, okay, let's say I go to two Levels here. Okay, that looks like a mess. What do I do to see something reasonable here?
Try tree layout. Goes to left.
This isn't great.
And also do tree, element, label, function.
Whatever you're telling me to do is what should happen by default.
Yeah, that's what I have in the documentation. On the left, it's just showing the base names. You just see the base name and then you get the full file path in a tooltip.
Let's just incomplete what you've got on the right here. Is that correct?
Yeah.
The default isn't right. But then how do I specify the default?
You are saying do tree, element, label, function, All arrow, file, base name.
Like this?
No, the symbol.
File base name. Yeah. What is that? Is that a symbol?
Yeah, it gives the base name of the file.
Okay. The heck is this? My God, what is this?
I see that you label the. The directories. Is that right? From Matt goes Wolfram script. Goes to Wolfram script. Oh, what's oh.
Why is that thing called mathematics?
Directories are inner nodes and ordinary files are leaves. Both directories and ordinary files are given. Just like File System Map gives an association where the keys are the file names. This uses the same keys that File System Map does. But then the thing with File System map is you have nested associations. You don't have payloads at the nodes. So File System Tree is using the absolute file path as the payload at each node.
I understand. That's a directory name, right? Why is that showing up like a file name?
It has an absolute file path and the label function that it's using is the base name.
What's this? That's a directory name. That's the subdirectory. So I read down here. I don't understand this file here. And by the way, what on earth is Mathematica Server? Somebody needs to track that down. And Math Kernel. Those are not names that should be there. Am I making sense? Okay, I can look into that. Which is the Wolfram desktop distribution. They shouldn't be there.
The difference is the edges are the base name and the node data is the full file path. It's just that we've specified a label function so that they're both using the base name.
I mean, in a file system, everything is a file, but some have attributes that make them be a directory or etc. Even a directory is a file. But in a tree, that would be an inner node. Right. As opposed to a leaf node.
Yeah. You know, it's a directory because it has an association in its second argument. And files have none in the second argument.
So here we want to say.
There's an. Yeah.
I'm fairly confused by this. How does it decide which ones are going to be elided away now? How come those are showing at the top starts.
It starts from the. The first element of the list of the list add ons.
Why does this go at the top? I understand. I would have thought the elided stuff would go at the bottom.
This is matching what the graph orientation does. When you say left, the first thing is on the bottom. The last thing's on the top.
I think that's screwy.
It rotates at 90 degrees to the left bank.
It's screwy. I don't think it's right. I mean, we might want to address that with graph as well. I don't think we're going to notice except in the case where trees which have ordered edges. See what I'm saying? I think it's just not right. So visually this thing with words crossed out doesn't look great. What can we do about that? The very least we can look some put some kind of translucent, you know, backing behind this or something.
What we used elsewhere is a scrim, which is exactly what you say, translucent backing.
And that's what we've done in other visualization functions.
Yeah.
Okay. So Ian, you should learn how to do that for this.
Okay. What was that? Scrim.
Scrim people with smart shadowing.
But you can't use drop shadowing as a style.
Scrim is just a background.
Okay.
So we've been using it for years. It was invented for smartphones where you hard up on real estate, screen real estate. And so what they do is to show a little bit of the background, but not much. Do you know what I'm saying? So if they completely cover the background, that's kind of a problem when you tight on screen. Real estate.
Yeah. All right. Okay. What else should we look at with file system tree? Good start.
Okay.
Okay. Now new structure conversions. Okay. We probably need to look at these, don't we?
Yep. Go to expression tree. And then scroll down to I believe scope.
That's supposed to be documented up here. Not an interest if they're not documented up here. Making sense.
What do you. There are notes up there. Do you want to look at those notes about which? About this notebook Text element.
Yeah. All right. Okay. Okay. What am I looking at specifically here? There's nothing in this. Just says notebook. It doesn't have anything in it.
That's the example output for what? Converting a notebook into a Tree would do.
Oh, boy. Wasn't very helpful. What happened there?
Oh, you need to do notebook. Get on evaluation notebook.
That should probably work though. So it's an interesting question whether some of these expression tree things should default to left hand layout, if you understand what I'm saying.
Yeah.
This is fairly civilized. That cat of yours is. Is not making the best impression. It would be better if it sounded happier.
She's mad because she's not in the room and can't get in.
I wish let the cat in. A cat could join the meeting. As opposed to. Hopefully the cat is not in a bag. So there's no question letting the cat out of the bag. Okay. Any case. All right, so. Well, this is a. Seems like a good start here. I mean, I have no sense of whether. If I say tree outline of this. Oh, it is respecting max displayed children, isn't it?
No, it needs to.
Yeah, sure does. Okay. What the hell.
It's a payload of the root node.
Okay, but that's not great because that's again, an attribute type thing. I'm confused by that. You know that structure. Anyway, what is that structure? Why isn't Notebook?
That's all. So that's the arguments of the notebook, minus the nested cells and its children. Like everything that's not a child gets put into a list.
This is pretty confusing what's happening here. I mean, the fact that it says cell. This is pretty damn confusing what's going on here? Let me just show you other categories.
Because it's the same problem as with XML element. You know, cell and notebook, they represent entire trees. So this is trying to represent just the data that's at a particular node.
But how's that represented in the. In the ultimate tree structure, the attributes, what do they look like? Because normally it is tree of date of payload, comma, list of subtrees. Correct. Mm.
You were saying in the. In the review of code trees that there needs to be a cleaner separation between data and metadata. We just don't have an idea for that yet. Right now everything's just data.
Okay? So can we please think about that asap?
Jose, were you asking a question?
I thought you wanted to have these labels being shown as the green nodes instead of cell something. Is that correct?
Like in the graph above.
Yes, exactly. So that would hide all these internal structure and perhaps.
Although it would still be available in a tooltip.
Yes, indeed.
Yes, I see that. Okay, look, look. The basic point is in trees, right now. I'm very confused. I mean, cell, what is the actual structure? Here cell is the name of the node. I'm completely confused. There are attributes for that cell.
Expression contains a cell group data which contains a list of cells.
Right.
Then the remaining arguments are styles. And. So that cell goes to an empty list because it has no styles and it has no options.
Listen, let's break off a discussion about how to do. How to deal with metadata in trees, because I think we need to solve that. Okay, can you, can you try and have a think about that and come back with some proposals for that? Yes, because without that, all of these are going to be confused. Now, you've also got some other things here. What are your other things?
You've got text element and trace.
What are you doing with trace now?
So trace is doing the same thing as trace tree.
Okay, but how do I give it.
Input, do trace of some expression.
Let that cat into the bag and then.
Do expression tree of that comma string trace.
Well, it's interesting. I mean, does it have all of those fancy things about, you know, red dashed lines and all that kind of stuff?
No, only, only the graph representation had those edges. The tree, the tree representation doesn't have edges for transformation rules.
So Chase Golf produces a richer output than this. Is that correct?
I'd say equivalent.
Well, it's not equivalent because one of them has tagging for time, like edges, and one does not.
But you can infer what those edges are from this tree.
I don't care. It's not showing that stuff.
Which it probably can't. Unless maybe trace graph should have an option to also give a tree.
Look, look, this whole area of kind of application trees seems like we need certain broad ideas like how to display metadata. And then what's the full inventory of types of application type trees that we're currently imagining? I mean, another one I can imagine is like a data set.
You can take a data set and do expression tree comma, data set.
Okay. Okay. Well, where's the full list? It's in here, presumably.
Yeah.
What's that? Tree graph. What's that? Where it says graph. What's that?
Graph? Yeah, that would be just another way of converting a tree into a graph. It'd be identical to just doing tree graph of the tree.
But this thing here is an expression tree. This is supposed to be a tree. What's it doing with the graph here?
It would have to be a tree graph Q graph.
But I think it's in the opposite direction. This is to convert a graph into a tree. Yeah, into a graph.
And then tree expression would convert a Tree into a graph.
Okay.
Oh, so sorry. Yes. I misspoke. I should have said this would be the same as what graph tree does, more or less.
Okay, listen, again, we need to do a further review that is based on having a way to show metadata, because all of these things have metadata, or many of these things have metadata and we're not displaying it properly. Makes sense.
Yep.
I also. So I just want to see some real operations done, you know, like, you know, there's this whole XSLT language for dealing with XML trees. I want to see us do the things with those. I want to see things that have been traditional, you know, notebook programming with all this weird notebook locate and so on mechanisms. How can that be done? Using tree programming on the notebook version of a. Of a tree expression. Expression tree, rather. Do you see what I'm saying?
Yep.
We're looking into all of those things and working on the design.
Okay, so like with text element, I mean, I'd like to know. I don't know, take a. Take an operation that you might do on a sentence like, I don't know, one that we care about now is a Nafro resolution, getting rid of pronouns and things and see, roughly. Even, Even. Even in some very hacky way. What would you do structurally on this text element, expression tree to deal with that? That makes sense. Yep. Okay. All right, we're going to go on for a few minutes here. We've got a lot of stuff here and need to push back my next meeting by 15 minutes.
And I expect that you might want to sort of follow up on this.
Yeah, no, we're not going to get it all done. Okay, so let's start off with astroposition, because that's exciting.
Yes. So you're going to bend the ref page.
I mean, this is a whole new world, so to speak.
Yes. Actually, I recently realized that geoposition is a very particular case of astroposition. We can do. We have things like geoposition xyz, geoposition e and u, etc. These are all particular cases of astroposition.
Wow.
Okay, so I think the.
Too whimsical. Yes.
Yes. The summary box is not good enough. But we needed something. The thing is that astroposition needs to store quite a lot of stuff, so it cannot be shown directly. So try something astroposition of some celestial object. And remember that the first time that we evaluate it will download data, if you don't have the data already. So it may. It may decide to do a load.
Okay, so now how do I draw where that is in the sky for Me.
Well, try astrographics point. Well, do we need white? Because otherwise it will not of that of the astroposition, not the entity.
The entity should work, right?
It should work.
Yes.
Yes.
Okay, so if I say point this thing here and I say style of that comma orange, for example.
Now the thing is in which coordinates. This is.
Right.
And so coordinates are not so obvious, if you know the.
No, they're completely obvious. And that's presumably the Milky Way.
Exactly. Yep.
Wiggly.
Yep.
Okay, so there are several main coordinate systems to work with here. And by default we use what we call the horizontal or horizon frame. Essentially your horizon is a horizontal line.
And.
In this coordinate frame and there is a part which is above a particle which is below. So if you say for example, triathloposition of Pluto and the second argument say equatorial, then you will get the coordinates of Pluto, but in the equatorial frame.
Okay.
Well, the map is not going to change much. I was saying astral position of Pluto, comma equatorial and you see how the numbers change the string string equatorial.
I don't have yet. Right.
So now it's different names and equatorial. There are multiple equatorial frames. So it automatically changes what's going on.
With these minus signs.
Yes, this is something we have to change in quantity. So mixed quantities show independent signs for all the various quantities. And usually. Yes, but what I wanted to say is in the, in the equator and when you ask for the position of Pluto, it now gives the right ascension and declination.
Yep.
And, and, and, and now. Yes, yes. What I was saying is they are referring to this so called two equatorial true equinox frame. So there are multiple equatorial frames. And you, you have to be specific about which one it is.
Okay, but, but let me just, I'm just playing here.
Yep, yeah, sure.
Okay. So if I like the cosmic microwave background, do we have, do we have the data on that? I mean, do we. Can I, can I show that in.
We don't have that image yet, but we will. It will be one of the types of astro background.
Okay.
You can also increase the zoom level of this image we have. It goes up to Zoom 8 right now.
How do I do that?
I mean, we also have an astro zoom level.
Is that the right way to do it? I mean, is that because there's an astro. Is there an astro range like geo range? Yes, there is.
Yes, there is.
But I could also do that by saying astro zoom level because that might be easier to understand because I don't actually know what the, what the box is in terms of Right ascension declination.
So by default is now using one. No, that's too much for the whole sky, but. Oh, I see, yes. Julian said the whole sky.
Right.
Again. Because we don't recognize the backgrounds using constellations etc it will look nicer. So try astographics of Sagittarius for example.
This here instead of this.
Yes. Remove all that and do Sagittarius probably remove also the rest of the options.
You know, I don't think I've ever typed the name Sagittarius in my whole life.
Do Astro observer equatorial. Data. Do. There is an option which probably which is your name. It's selecting the coordinates you are using for the observation. Do Astro observer equatorial.
Can I put scales on here?
Scales do. Frame goes to true and that's going to give you equatorial coordinates.
Why is this. That's not the. Why is it zero there?
Well, this is using now the Lambda Simutal projection. It's like Geo. It will choose whatever Lambda Simutal the Lambda Simutal projection wants to use.
So it's centered on this. So I don't understand why there aren't absolute coordinates here.
Oh yes. Change the projection. Do use a projection like equirectangular. This is a projection effect. Yeah. Now you have the coordinates.
Let me just take a look at what's happening here. Huh.
So I think, I think it's. Can we have a look at the ref page of.
I want to see this. Yes.
So this is something that Jeff is doing. Do you want to explain, Jeff?
Sure. We've got an intern that's actually going through each of the constellations and we're doing illustrations as a possible option. I think optional background to these things. By default, I think when we plot a constellation, I think we should just show the stars and the stick figures. I think, I think having the illustrations by default would be too much.
Actual bear is a little bit hard to bear.
Right. They're neat to do when you see them individually, but. Yeah, but if you do the whole sky, it's like it's going to look very crowded.
That's going to look very Babylonian. Okay.
These are still coming along though. We're about halfway done with all the constellations. Oh, we may want to revisit a few tweaks to them.
But.
So if I say Astro angular separation.
I think it's. I think it's still called angular separation in the X kernel.
I have to rename it angular separation. Okay.
Yes.
And now do two bodies, sun and.
The moon or whatever, Mars and Jupiter. Oh, well.
Yeah. So sometimes it happens.
It needs data now, obviously in the cloud, we need to know how this is going to work.
Yes.
Jeff has pointed out that multiple times.
So I don't know whether the fat kernel would have all that. And where are the units.
Yes, this needs to be changed. At the moment it's returning radians. I do this just to work better on the performance of the functions. Okay.
But it will return in degrees, presumably?
I'm not sure the unit, but yes, probably degrees.
Probably.
It's better quantity.
I think so. Degrees.
Yeah. So this is angular separation at the moment as observed from door from your location.
Okay. What happens if I want to observe it from Saturn?
Yeah, try that.
So it should get closer together. Yeah. And if I observe it from Alpha Centauri, it should be super close observers.
At the moment, I think they are restricted to be in the solar system. So there are. So you can observe stars, but the observer itself at the moment. So if you want. What do we have right now is a physics. Is something that knows the physics of the solar system.
Right. But the geometry geometrically, you should be able to figure out the angular separation from Alpha Centauri.
Yes, yes. The problem is that there are. There are computations here involving relativity, et cetera. When you go very far from the solar system, this gets more tricky. And that's a part that they haven't figured out yet. For example, there is nothing about cosmology here. So this knows everything about light, deflection by the sun, things like that.
Right. The angular separation of a quasar from another quasar is obviously kind of. Kind of hard to compute.
Right, Right. So for example, this computation when you had. If you put here. This actually not takes into account your position on the Earth. So if you go to the other side of the Earth, the numbers will change a bit.
Okay, so if I go here. So let's say, I say. Let's say I say London here. Okay. And then I say Sydney here. Obviously, I'm looking through the Earth in some of these cases.
Exactly. Yeah. It may happen.
Yep. Cool.
And this, I mean, this changed both because you changed the position and because the positions of the planets changed. And this was time. Yeah, yeah, yeah. This is very precise.
Let me. Let me try it again. My God. Okay. I had no idea. And yet it moves, as people have said in the past.
Now, this also takes into account, for example, the fact that the position is the position of the planet when the light was emitted. So this is doing also retarded computations.
Yep. Yeah, I understand. And so, so is there a way of getting it.
So There are ways. The, the, the observer argument, the second argument of astroposition is very powerful. There are, there are examples in the ref page. And so you can specify things like refraction, whether you want to correct aberration because the earth is moving things in.
Wow, this is really.
Got that. You've even got that Eddington example showing the. What was that example you're showing me earlier? Yeah, where you get that star disappearing behind the sun and you can actually see the deviation. Did you add that as an example, Jose?
Yes, I think it's here in one of the. In one of the scope examples. And it's also in the ref page of astro angular separation.
Don't forget to report that as a spelling word. Microhock seconds. Wow.
Yes, these are all computations. And these you are looking at right now, for example, that last one, this geoposition enu, your position enu gives you a vector from a location to another one on the Earth, which is something that astroposition can do. But of course, in order to get the same result, you have to undo the corrections. So this frame is light time aberration, light deflection. You have to undo those things in order to get micrometer agreement.
Huh.
So that's saying I'm using the horizon frame, meaning my XYZ axis are aligned with my north east up. I'm looking from here. I'm not considering refraction by the atmosphere. Light time is geometric, meaning it's instantaneous, not the correction of the speed of light that we were discussing before aberration. False means do not consider the velocities. And light deflection is. Do not consider deflection by massive bodies.
So wait a minute. So are we in fact going to support the astrophysical and cosmological versions of all of this?
There is no cosmology at the moment, but there will be in the future. I just need to figure out how to do it properly.
Right, but I mean. So for example, gravitational lensing will be something taken into account if you have light deflection arrow. True.
Gravitational lensing? Eventually, yes. Now gravitational lensing is something. I mean, you are talking about ray tracing, essentially. So to create an image of the individual rays, that's hard. So, so this is computing a single light ray.
That's not hard, it's exposure.
Right.
You just. Because you have to do it many times if you want.
Right? Yeah, because astroposition is not, you know, a galaxy is an extended astral position, so to speak.
Exactly, exactly.
Whereas Astroposition, like geoposition is a point.
Exactly. Yep.
So it has to be a swarm of astropositions that you're doing to have an imaged gravitational lensing.
Exactly.
Boy, hopefully we'll have this stuff just in time for when we actually start to need to use it to actually have computable features of our physics project. Just think. Well, I'm not asking you to support variable dimension light propagation, since we don't even know how that works yet, but. Yeah, so this is great. It's really impressive.
There is a lot of physics in this function. It has, for example, very precise models of the precision of the Earth and notation. How models of the precession of. Of most planets. Planets and moons.
How far in the past and future does it go?
The data we have from NASA for the Earth and the main planets goes 15,000 years to the past and to the future. But for the moons it's much smaller.
Yeah.
For some of the most obscure moons, it can be just a few decades.
Although our moon is an exception to that. Right. Our moon is much.
Yeah, exactly. Our moon goes. Goes also thousands of years.
But what about the precession? I mean, I don't even know the. I mean the procession of the equinoxes, like. Like you go back millions of years. No, I mean the whole physics of the solar system is unknown.
Exactly.
Beyond a few tens of millions of years.
Yes. For the precision, we have very good models for hundreds of years. Models that can go back a few thousand years, but not much more. It becomes very unpredictable.
Right, right.
There are. Some people have studied more and there are these studies of the Milankovitch cycles and things like that.
Sure, but what are we going to do? So we have some sensible message that just says we don't have data going. If you ask for this, you know, in the Cretaceous period or something, it's just going to say we don't have that data.
Exactly. That's a possibility. And another possibility is to have a mixture of models at the moment. It's always going for the most precise model we have. Meaning that's the only we have. So the idea is to find other even approximate or extrapolated models or something like that.
Yeah. Well, this is making my day. This is really cool stuff. The. I. Except I want to. I want to see it. So you're saying. So can I get a picture of what the sky looks like from the surface of the moon, for example? Is that easy to do?
Well, the background image we have is considered to be the same for all. Positions in the Solar system.
As long as you're in the solar system, a parallax is not enough that you would visually see much difference. Although you could argue that Centauri might.
But, but, but even just the correct orientation to the lunar horizon, how do I, how do I see it? How do I see it from the Apollo 11 landing site? Right now.
I see. So let's see. I. I think I haven't tried this yet. So let's, let's try astrographics. Do geo range. Sorry, Georange astro range all so that it gives the. The whole sky. And then let's do, let's. We have to define the abstract server. So this is where.
Where.
Right. So abstract server. And, and so here we will need first the frame. It will be the horizontal frame. So string, sorry, list string. Horizon. So this defines that we are going to be using the horizon frame of some object. Now the date should do. Date goes to now.
I say date goes to now. Okay.
Yes. And now the location is where. We have to say where. So use a place in the moon. Yes. So this. Yeah, no, it doesn't work. This, this will work. This will do what you want, but. Yeah, I just realized it's not doing okay.
But somehow this whole thing about the frame, horizon versus Right, essential declination, whatever else it is, doesn't seem to me like this is the right option for that. It seems like that should have its own separate option.
It could be. So you see that in order to define these things you need two things, the physics and the maths. The physics is where, when and in which orientation the math is then. And I want this in cylindrical coordinates, in cartesian coordinates, left handed or right handed special coordinates, this type of thing. And so that's why there is the astro. Observer on one side and then there is the projection in astroposition. There are three arguments. So the second one is the observer, the physics. The third is the coordinate system, the maths.
Right. I mean, I think it's a little strange, the place, right. Which could all be packaged in a geoposition actually, or an astroposition for that matter. All of that stuff, the location and the date, that's all part of an astroposition, isn't it?
Yes, it's an event of observation. Yes, it could be.
Okay, but. But then the horizon thing is it's separate issue. The fact that we are. I mean that to me is closer to the projection story.
Yes, but the horizon depends on the event because the horizon is different from one place or another. For example, it also depends on the date because The Earth is rotating, so it has to be altogether. If we just say horizon, but we don't know the event, we know nothing.
Yeah, except you've got Here and Now by default.
Yeah, but if you want something else.
I know, but I mean Here and Now is like I'm looking out of my window, what do I see? Type. Exactly.
Yep.
So just so I understand in. So we already should have. And I've never tried this and this would be a good demo maybe we've actually, we did try it when we were looking at that. Given a location. Right. As you know, Apollo 11 descended to the Moon, so to speak. There is. We should be able to show kind of the view out of the window at a certain height. Now one of the things we don't generally have is the viewport for viewing. Am I making sense? You know, normally when we have a view of the Earth, we're just imagining that it's a full aperture, you know, view of the Earth. There's no. Yeah, I'm just. I mean we must have done this when we were trying to track that Israeli spacecraft that had that stuff of ours on it that the one that unfortunately crashed into the Moon. We did, we did figure out things from its trajectory. I think we were doing it just from locations. Geolocations above the Moon, geopositions above the Moon. So okay, so then this potentially is a geoposition or an astroposition. And. So I mean, let's say I want to look towards the Earth. Is that easy to specify here I'm hanging out on Mars and I want to look towards the Earth.
Yes. So the syntax would be. But it will not produce yet the image you are expecting. But it will be the Astro range. You couldn't say Earth. The Astro server could be the Moon. So that would be the Moon. Center of the moon looking towards the center of the Earth.
What are the astro center would be Earth.
Yes, that can be too. So center like in Geocenter is a way of specifying the range part of the information of the range in maps. You can say Geocenter is London. Geo range is so many kilometers. So here would be a similar thing. We can say this look in direction of the center. Something with an aperture of so many degrees.
Right.
But again you are thinking of something that would require ray tracing or 3D. So if we had all this in 3D, it would be much easier to do these computations because it will be done. Be hard doing it in 2D will produce just, I don't know, a gray circle or something like that.
Yes. Well, that's a good start. Okay.
Perhaps you want to look at some examples in the Astro graphics page.
Sure. Just for a second here. I know I'm late here. We'll have to continue this another time. This is lovely though.
Scroll down. So these are some of the images that we were discussing before. So this is also a fun example. We see Mars in retrograde motion.
When do I ever see the Milky Way? And this, I mean, this is a very weird projection because, I mean, if I'm looking at the sky, the Milky Way is always appears to me straight, doesn't it?
Yes, because you are using horizon coordinates. This is always in equatorial, you see? Abstract. Server goes to equatorial. The problem with the horizon coordinate is that they keep changing all the time. So it's very difficult to orient yourself while the quatorial view is always the same.
I see, but so you'd still see retrograde motion if it was horizon coordinates. You still see retrograde motion.
Exactly. It's just that these points will be oriented in a different direction.
Okay, and why. Okay, and, and this is the plane of the ecliptic. Is that true?
Exactly.
More or less, yeah.
So there, there's a better example further down with all the main planes. So these are the, the four planes you see there with four colors. So the ecliptic is in green, horizon is in blue, the galactic obviously is brown, and the purple is the equator of the Earth.
Why is the horizon circular?
This is, this is the stereographic projection. In the stereographic projection, planes are always circles or straight lines.
Yeah.
And further down there is the mnemonic projection in which all the planes are always straight lines. Doesn't look great. It's a complicated projection. But here you see the four main planes, each one with its own set of coordinates, etc.
So I mean, somehow if we take a random star catalog and things, this is like going to give us. I mean, you know, you look through a telescope at a tiny piece of sky and the telescope is effectively. And you make a plate or whatever, whatever the modern version of that is. That is some kind of projection of the sky onto a plane. And one of these projections is that one. Is that correct?
When you're looking at a very small area of the sky, it's like when we use a very low scale map. It's always essentially the Mercato projection. It's always in the end, the same scale projection. Projections are very important. When you want to represent the full sky, then they make an enormous difference.
But so now in this case, I mean, like, okay, so another thing we should be able to do is plot a satellite on the sky. Instead of this, we should be able to put, you know, show the position of, you know, random Iridium satellite. Yep. You know, is that, does that work now?
I don't think it works now directly. So if we do compute the astropositions, then you can place astropositions in astrographics. So what Astrographics doesn't do well yet is interpreting all the possible entities we have.
I see. Okay, fine. Okay. But I mean, the way that this will work is you'll be able to show, you know, for jrandom Deep spacecraft, you'll be able to show. Hopefully, you know, we will have, we have a bunch of those trajectories and we'll have more because.
I mean, I.
Think being able to show the trajectory of a spacecraft as observed from the moon, for example, that should be doable with all of this. Right?
Yeah.
Or a spacecraft as seen from another spacecraft should be doable with all of this.
Yes, indeed.
Well, it's lovely. Boy.
So in this first release, I think astroposition will be as powerful as it may be. Astrographics is still kind of far of what it will get, but it will do the most basic things, but it will keep improving.
Fair enough. Well, I think this is lovely. Well done. Yeah. So I think it'd be worthwhile to just enumerate use cases that we're aware of both. And there are presumably ones in Earth orbit, like for example, from the iss, where is, you know, where is such and such a satellite as seen from the iss. Presumably we can do that with all of this. Yes, yes, we should be able to.
As long as we have the astropositions of things, meaning numbers in indefinite coordinate systems, we can do the computation.
Right. Well, good. No excuse for any of those science fiction shows or anything to get any of this stuff wrong anymore. More. Okay. All right, we should wrap up for now. Looks to me like we have another. Yeah, there's probably. There's lots of stuff coming from this. Right.
That's in progress. So let, let's see how far we get.
Yeah, not so much this time. There's no design in particular this time.
Okay. Okay.
No new function, so there are some improvements in existing ones, but the main thing in GEO is still making the default V vector and faster. So that's still the main objective.
Fair enough. Ok. So I think we probably would need a. I think it wouldn't be bad to do another little half hour or something on the astro stuff and just see if we can clean a few more of these options and things. All right. But great stuff. Okay. Thanks a lot, guys. See you all soon.
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






