Live CEOing Ep 729: Language Design in the Wolfram Language [LabeledGraphicsBox and More]

Transcript of a Wolfram Language design-review meeting (Live CEOing Ep 729) covering proposed UI/backend additions and fixes: a new LabelGraphicsBox to improve plot labels and layout; style-key mapping and undo/behavior when replacing empty cells; item/input styles and multicell items; notebook/cell information APIs (NotebookCellData vs Information of CellObject) and their scope; and naming for string transcoding functions.
Chapters
You should update your documentation too, by the way.
Okay. All right. Hello everyone. Welcome to another Wolfram language design review, part of our Language Completeness and Consistency series. Hold on, let me just do what I was told to do. Update documentation here. All right. Labeled graphics box.
Ok. So the issue here is I was asked to make plot label better to support labeled style placements. And I'm not really here to talk about the top level details of that. That will be with Brett. And Brett's not here today. He's out today. But, but I am working on what the implementation looks like. And so, I mean, the basic problem is a plot label is awful. It causes all kinds of problems. And adding, adding a dozen new ways to do plot label is not something I want to do. And so we're trying to solve the problem by different means. And so essentially what we're looking at is creating a new box, which I'm provisionally calling label graphics box. And it is a thing that takes in its. And there is documentation if you want to open up the documentation for it.
Well, I wasn't told there was. Maybe it didn't exist when, when we last spoke, John. But if I'd known, I would have included the L.
So yeah, basically the idea is that this is a thing that wraps a graphics OR A Graphics 3D and applies labels to it.
In.
A way that is more flexible, but it has the rubber banding behavior, you know, the graphic style selection around the whole of the label.
Let me tell you the thing that I'm really concerned about. Okay, so let me, let me show you an example.
Sure.
By the way, is this showing me the new when I can type through thing here or not?
No.
I wasn't happy with what I was seeing here. Okay. See that those labels are cut off.
Yeah.
And I think.
Will this solve that?
Yes, yes. So this is. Well, you know, I mean, there's a more significant discussion of how this interacts with graphics grid, which once again, Brett's not here and I haven't really reviewed this deeply with Brett. But, but, but the general issue is that this is a thing that understands how big its label is and can react accordingly. It understands how big this label is. It understands what it can do with resizing the graphic. It has certain rules for kind of resizing the graphic to fit the label or to crop the label if the graphic is the thing that's kind of controlling the size.
This sounds very good. Look, I mean, the other problem is this is leaving too much space. You see what I'm saying? Because it's worried about the label and so on. See this case here? This is garbage.
Yeah, yeah.
I mean, why don't you, you can take this case and just use it as a test. Because I mean, this, if this doesn't work, I don't know why it's leaving all this empty space. But it's wrong. Do you agree it's wrong?
Yes. But there's, there's a lot about the implementation of graphics grid that I, I can't speak to.
I understand that, but the bottom line is we got to fix this, right? I mean, it's leaving too much space. And the thing that you're talking about, which I hadn't really thought about that as a possibility, seems like exactly the right kind of construct to fix this.
Yeah. Yeah.
So go ahead.
So, so the, the initial implementation of this would be looking at placements that basically follow labeled the, you know, bottom left, top right, et cetera, et cetera.
Doesn't label have a, have an absolute relative, you know, 0.7 and things.
Not that I've seen in the documentation. Maybe it has in certain contexts, not as a standalone construct that I've seen, but you know, we're anticipating that you might want to do something like that. You might want to have a label that maybe even partially overlaps with, with the graphic. And this construct is built to be able to absorb that sort of flexibility in the future. But in terms of what we might want to deliver in the next release, we have to keep our mission, you know, doable in that timeframe.
All right, look, if you can solve this problem that's already highly useful.
Okay. Okay. So. And you know, you know, I've written up some provisional documentation. You may not really care. You know, it's, it's to a certain extent is kind of an implementational detail that you may not care deeply about designing. But I wanted to make sure we didn't get too far.
Yeah, I mean, the only question that I have is this label comma, pos mechanism here, which is the typical thing that we've done in low level functions and the higher level things. We've tended to use rules and things like that more. But I think this is a low level function. This is probably what we should use here.
Yeah, yeah. Yes.
Okay.
So sure. Yeah. Okay. And I've updated documentation for this, but I copied the documentation here. So you can. So this is Parent cell and parent box, which right now just take one argument. And so Parent cell of. Of. Well, of Valuation cell, which I think in this case, by the way, My.
My input is dragging here. Something is. I mean, this is a prototype build, so who knows what's going on?
Yeah. So in this case, returns failed because the evaluation cell didn't have a parent. But, but, but this is what would.
It mean to have a parent.
So I mean, well, inline cells. Inline cells have parents.
Okay. So if I say, if I do the same thing. God, this is dragging. This is not typing properly.
I don't know.
Well, I'm telling you that. So I'm just.
I mean, you could just do, you know, dynamic of expression cell.
I'm doing this. Why did that. So now if I do command return here.
Yeah.
Okay.
And notice it's not, it's not the inline cell that it returned, it's the text cell that was the parents. So. Yeah.
Why is it in this font?
Because that is what inline cells and text cells do.
Right? They match the text font. They don't have long.
Fine. Okay, so what should we be paying attention to here?
Okay. Okay, so the single argument form is. Was there before. I'm proposing adding second arguments to these functions of the forms. Noted.
I have no opinion. What do you want this for?
So basically. Well, I mean, you know, basically it's whenever you have, you know, usually a user interface that's doing some kind of, you know, self modification or introspection on the things that contain it.
Okay. You're introducing this because you needed it for something. What was the thing you needed it for?
Louis?
Sorry.
We, we have other solutions for the things that we needed this for. This is the cleaner solution. So for instance, in Control Equal, there is a button that lets you replace the Control Equal interface with the parse. And there's. So we need a way from that button to uniquely determine the box object of the interface as a whole. We have other solutions for this. Currently we use something that we call box IDs, but this, the, the parent box, particularly the fourth line item in John's display here, the type comma N would let us, you know, run directly to the container that we care about.
Okay, great. If you, if this solves that problem for you, the design looks fine to me.
Okay, I agree.
Okay. Style key mapping. So this I started. We've had this for a long time, but we didn't have any documentation. And so I wrote up some documentation because we want to extend it. And this was related to the equal bracket thing that we discussed in User Assistance where if, if you type in an equal, you get a wolframalpha short cell. And then what you proposed is if you type in a bracket, it flips back to an input cell. But an input cell populated with the text equal brackets, which is not something that style key mapping can do right now. So to remind you, style key mapping is the thing that you know is, you know when you type in the initial equal, it gives you the wolf mouth a short if when you type in initial star it gives you an item cell et etc.
Yes.
And so basically, basically what I'm proposing is a style key mapping can take a full cell right hand side.
What could it take before just a.
Style name and then it would create an empty cell of. Of that style.
Seems like a no brainer.
Okay. And then the other thing I noticed was, I noticed a bit of inconsistency in terms of that style key mapping was using this thing called key event. But there are other places that use a thing called menu key to be able to specify things with keyboard shortcuts with modifiers like with the shift key or with the control key or something. And I thought maybe we should standardize. Yeah. So if, if you're. Okay. You know, we haven't really kind of documented any real way of doing this, but I'm happy to just, you know, standardize on key event and start deploying that everywhere.
Sounds fine to me. The only thing is you've got to continue supporting many key. Because there'll be legacy style sheets.
Oh sure. Yes, yes. We don't have to document it, but yes, it still has to work. I agree.
Sounds fine to me. Tell me how. I mean this isn't perhaps relevant here, but percent monetization, is that going to need language support?
I bet it is by language. I'm not sure what you mean by that.
I mean Wolfram language level function, new functions like for example, you know, percent 13 is equivalent to or. Percent percent percent percent percent percent 13 times equivalent to out of minus 13.
Right, right.
What we're going to want is something that is the equivalent of out of. It's not really out. It's really, you know, notebook, previous cell such and such. But maybe we just have that. Maybe that's.
Yeah, well, and. And you had suggested some sort of previous cell sort of thing which is on my. But it. It's not in today's meeting. It's because I. I think it needed to be a bit better design than just previous cell bracket bracket. You need.
Okay.
You need some way to be more.
Wait before you go on. You know. Right. So you know, I raised a question which I want an answer to and you know, and also what does undo do?
That's the question.
I mean, I would expect undo to undo the effect of typing in or of, you know, typing the key, whatever the effect was.
So just unpeel. So equals. Equals unpeels down to. Equals unpeels to nothing.
Yeah, I mean, I mean if, if it doesn't work now, that's just a bug, it should be fixed.
Okay.
And you know, equals.
Okay, now I press undo Command Z.
Okay. So. So that's just a bug.
And that's interesting because when I tested it with. Well, I guess. I think, I think I did it with star, but I, I think Command Z actually undid the whole thing.
It beeps again. Just beeps.
Interesting.
So unless it's always beeping at me, I don't know.
Yeah. Or, or it's a prototype build issue.
Right.
You know, it works, but it works for just regular text.
Yeah, I, I'm not surprised that this might be a hole in undo. And I don't think it's very difficult to plug.
Right.
And I don't think, I don't think there's anything deep here.
Right. Yeah. I'm just pointing out that like with, you know, with equal or with greater than for natural language cells, you can sort of, you know, you can just hit back or go through another couple of equals and get back to where you started. But if, if we're going to replace it with a non empty cell, then it's not, you're not going to get back to where you started because style key mapping only affects an empty cell. So it's, you know, it's going to be a somewhat different user experience.
I don't understand what are you saying? I mean, you've got.
Okay, so type in, you know, in a. In. In between cell insertions. Type in greater.
Okay.
Okay.
Now if there's a bug there should show the type of language it's expecting. Go ahead.
All right, so now if you.
I type two plus two and then I. Now for some reason the Python appeared and now I do Command Z and now I'm beeping and you're saying that's wrong. I should be able to back out of this Greater than sign.
Well, I'm saying you could have backed out of it even earlier, like if you had.
So, so there's a bug here. It's not doing.
Stephen, let me finish. You're not understanding what I'm saying.
Go ahead, go ahead, go ahead, go ahead, go ahead.
So, you know, you start, you. Right, so follow what I'm actually telling you to do. So you know, like type back here.
Type what? What do you want?
Backspace or delete, whatever it's called.
Okay, Right.
See you. You can undo that because the cell is still empty. Whereas you couldn't do that if you. If the replacement created a non empty cell. So that's going to be.
I'm totally confused. What, what.
So it's, I mean, it's not a problem with the way that undo works internally. The. I'm not talking about.
Und I'm talking about the user experience. Right? You can cycle through input to equal to double equals to input just by pressing the equal sign.
Right?
If. Right. Okay, but, but you can't you.
If.
If at any point that created a non empty cell, it would stop the cycle because equal style key mapping only works when you have an empty cell. And so this new syntax where you replace it with a whole cell that has stuff in it is sort of going to break that idiom, which so.
Well, and to be clear, it. The, you know, the old version isn't going away and it would be the preferred version to use for empty cells. So. So this is, this is only something that's useful when for some reason you're populating a cell in some way. In which case, yeah, you won't be able to cycle through anymore. You'd still be able to undo, but.
You'D be able to cycle work. Unless you've typed nothing into the cell. It's only when you've typed nothing into the cell that triple equals gives you an empty cell again. As soon as you type something into the cell, typing more equal signs does the kind of thing I just did.
Exactly.
So maybe a practical sort of implication is taking the equal bracket case that if, if you type in equal, it will convert to wolframalpha. Short, if you type in bracket, it would convert to an input cell with equal bracket populated. And then if you type backspace, you will still have an input cell with a leading.
With a leading equal sign, which is.
And I agree it's maybe, you know, it's maybe slightly weird, but frankly I'm. I'm not really bothered by that.
Let's, let's. When you have it built, let's play with it and see what it feels like.
Okay, I'm just, you know.
Yeah, it's a good point.
My concern in.
Yeah, I got it. I finally understood what you're talking about. Yes. Okay. All right, let's move on. Item input.
Okay, so this was something I discovered actually when I was composing this agenda. So item and subitem and sub subitem have corresponding styles. Item, paragraph, subitem, paragraph, sub item, paragraph. And these styles are basically text cells, but text cells that line up with the items so they don't out dent. You know, they look like they're part of the item kind of going on.
Yes.
We don't have a similar sort of concept for input cells. So if your item has kind of, you know, extra baggage that it wants to accumulate that looks like, you know, that is an input cell. It. There's no way to do that. It just out dents like the first example there. And the output also out. If you evaluate that, all the output.
You'Re saying that this here, that the message will not be indented here. Oh, for God's freaking sake. Why is it doing this again?
I don't know.
It's been reported already and they are working on it.
Who's working on it?
Oh, well, people from Arnaud and Roger or Julie are working with it, and they were supposed to uninstall something tools to see if that was horseware tools.
I think it was.
What did that do? Well, this is a prototype build. But where do I reset this? What do I.
It's in the options vector. It's not. It's not in the preferences right now, really should be. Well, we talked about that too. Yes, You. You submitted that as a suggestion.
Where is it?
Search for message options. And it'll have to be global. And then. Yeah, kernel message action is set to print to console. Who knows why? If you just check the X next to it, it will revert itself back to the default print to notebook. Which is what it's supposed to be.
Yeah, which is what it's always supposed to be.
Yeah. And this is something we've been seeing on your system for ages, and we don't know why. It's got to be something you have installed locally. And that's what our node has been trying to run down.
Okay. All right.
But. But in any case, I mean, you know, see the difference in the message cell and the print cell and the output cell as well.
Actually been happening to me too. And I don't know if I've been.
Running some code that's causing it to.
Happen, but I've had the same thing, so.
Okay, well, then go debug it, please. Okay, so I don't understand the point here. So put a.
Put a bullet right above that. The. In A five.
Okay. Like this.
And. And now, you know, the, The. The. The input. Now the cell group, doesn't it? Yeah, it's so it doesn't look like it's part. You know, sometimes you have, you know, your items have more information that you want to be part of the items. It's kind of, you know, it's. It's. It's kind of a nested outline sort of thing.
Yeah. So it's a multicellular item where the item is the head cell. And what we're saying here is right now, right now, the sub cells here are not indenting. Yeah, correct. But why do you want a separate style? Wouldn't that be totally confusing? If you copy that cell somewhere else, it'll do something ridiculous.
Well, so the problem is that what happens after you finish your bulleted list? I mean, you know, so an input cell after your bulleted list could be part of the last bullet, or it could be, you know, the next thing after the bulleted list. Right.
I don't even know how to get it to be the thing off to.
So the same problem already happens with text cells. Okay. And the way it's solved and has been solved for many, many years with text cells is a new style was added, and the style is called item, paragraph.
Which is what?
Which is the thing that indents as if it's still part of the bullet.
Yes.
And how do I get to it?
It's in the style menu. It's been. I mean, it's been there since, like, version four or something, maybe five.
But is there any way that I can get to it? I mean, in other words, if I'm. If I'm writing bulleted text. So here's a question.
I don't think there is no keyboard shortcut for it.
Okay.
That's what you're asking.
I've got a suggestion. One thing that I often want is I'm writing text, and I'm basically having one paragraph per cell. Okay.
Yeah.
I have no convenient way to jump to the new cell, you know, other than I finish, I click, I start a new cell. Mm. My question would be, should there be something like a command return or something? Which.
Well, so. So there is right now. And you can define a cell style in such a way that when you press Enter, it will automatically create a new cell in that style. And that's. I believe that's used in Docutools authoring.
Well, it's also used in normal text cells. No, you can just option enter to create a new cell of the current style. Right. So if you.
Wow. Coolosaurus. Well, that's the thing that's probably been there for 35 years, and I didn't know it.
Yeah, yeah.
An item behaves the way John was describing that. Enter is just gives you the new.
Cell, a new item cell.
So if you just create a new item cell and then type something and press Enter, you'll get another item cell.
So in other words, making a multi line item is not really a thing. A multi line text cell is a. Whoops. What the hell happened there? Okay. Oh yeah, that's a little confusing, but I guess that that makes sense. But so if I now go option enter, I just get another one of those, which is fine. Yeah, I didn't know that option enter did that. Has that been the case for since version one?
I don't know one, but two, I think. Yeah, it's. It's in the insert menu. It's called Sell with same style. Oh, well, it's like the third item in the insert menu too.
Yeah. Well, so it is. What do you know? Okay. It's a reason for continuing education, so to speak, of all of us and our users.
Yeah.
Okay. All right, so what's the question here?
Okay, so if you look in the format style submenu. So you'll see that we have item and item paragraph. That was pre existing in this notebook. I actually created a private style sheet which adds item inputs.
Okay.
And so basically that's what I'm suggesting is that we have item input and subitem input and sub. Sub item input and in. In 14. Because these, these things will get a little cluttery in 14. We're working on a way to, to aggregate these things into submenus. So maybe we might, you know, push off a bunch of these things. Subitem is just an indented item. So press. So type. Type a star and then press tab, that subitem. And if you do tab again, it's sub. Sub item.
And you can backspace to get back to the previous level of intent, which is nice.
Either backspace or shift tab, either one works.
What about the Delete now? Delete now isn't working to do anything because that is the base.
Yeah.
Right.
Okay. Okay.
And in fact, I use these styles in the last agenda item. I like this so much. So.
Yeah. ITAI was also initially a bit confused when I, when I explained this to him. But yes, I think it's something that, that, you know, for people who know that it's there at least I think is something that will catch the thing.
I like to put in the user assistance meeting. Okay. Something that's initially going to sound crazy, which is the fact That I don't know that option return makes a new cell. Right. If you actually watched everything I did.
In.
Kind of, What am I trying to say? You know, everything I did and typing into a notebook and you were an AI ish thing, you could readily say, hey, why aren't you using option whatever? Why are you using this five keystroke combo when you could be doing this? So something I want to discuss in User Assistance.
I mean, I have no idea how one would even collect a training set on that sort of data.
I know, I don't think it's a machine learning problem. I think it's a, it's a. Not a machine learning problem.
Well, but the point being, I don't think that that chat GPT understands any better than, you know, than anything we could even train because it's just. That kind of data just isn't out there. I mean it's, it would have to be something like an expert writes up, you know, all of the tricks.
Yeah, right. But I mean, it's like a lot of our other rule based things, you know what I'm saying? It's a notifier. If you see this key combination, do this.
Yeah.
I think it's worth thinking about. Think that there might be 10 of them that would really improve a bunch of user workflows. So I'm saying.
Yeah, okay. This is pretty straightforward. We already have information of notebook objects. I'm just proposing information of cell objects. And you can see basically the list of rules that we, that we have at the moment.
Looks reasonable, except for the fact that this font is too big.
Isn't that, well, that, that's the normal font of a data object, right? That.
Yeah, but so it's probably not right in this case because this isn't the normal font of a text cell, is it?
Well, you're also not in a text cell.
I know. And, and this is not. This doesn't look right. It looks way too big, right?
Well, yes. Well, I guess that's what happens when people insist on hard coding font sizes.
Okay, so I'm saying how do we fix that?
I'll take a look at it.
Sorry, who said that?
What? Nick?
Okay. Okay. Yeah, it's probably that it should be using an ambient font size. It's not.
Well, maybe we should take a look at what are the available, available things. I mean, we could just sort of stick everything there in that, in, in the information. But I'm not sure that's necessarily right.
That's a known prototype build issue. It wouldn't show up in a regular nightly build, but it's in the prototype build and it's on my list to fix.
Right.
But when I do this, does this do something sensible? Yes, it does. It sends that.
Yeah.
That string in there.
Yeah.
Do we get a bunch of these?
Yeah, yeah. Get a decent amount.
Would you like them from me? Because I don't send them in.
The. They're of less practical value on nightly builds because. Because the form doesn't track the provenance of what build. It only tracks version number. It doesn't track, like, you know, which build number generated this. So. So for, you know, for builds that are not production builds, it means that we get, you know, the. Yeah. A bunch of crap. Because it's, you know, something that was a bug and then it went away.
Yep.
That's not the latest version of the agenda. I wonder what happened there. But can we. Can we actually look at the thing I asked to look at, which is not notebook cell data, but actually look at the cell information and think a little bit about what goes. Actually goes in information? That's. That's not. That's. That's a notebook object.
I'm sorry, what are you saying? Are we looking at this item here? Information of cell object?
Yes.
And I'm saying look at the next cell which actually has information. Right. The point of this thing is cell object, not notebook object. And so that. Right. That is the available information for.
Okay, you're saying.
I'm saying ignore that.
Yeah. Okay, so this is the wrong thing.
What.
What was really one.
No.
It'S showing, for example, we support information of notebook object right now, but we don't yet support information of cell object. That's the proposal that we begin doing. So and the starting point for what might be in it could be the output of developer back to Excel information.
Sounds reasonable to me. I don't know the details.
Well, that's why I'm asking that we look at it, Stephen. So maybe put a slash, slash column at the. At the next guy and evaluate that and we can take a look. I mean, so, I mean, style, obviously.
Why don't we just make this in a form where we can just like, see. Let's just say data set association. So style names are a bit weird.
Sure, yeah. I mean, you know, these names were done ages and ages ago. I'm. I'm not generally attached to most of the names.
What is rendering and needs rendering.
So rendering is, you know, I'm not actually 100% certain that's totally relevant. It may be from the Postscript days. I'll have to check to see if it still maps to modern graphics. But, but, but it was the notion that, that a cell is in the process of being drawn or that, you know, it's, it's not, you know, it needs to be redrawn. That's in principle what it meant. But Postscript had a very kind of specific notion of how to do this, and that might date from those days.
All right, so this just needs some modernization. I mean, cell serial number. We now have cell IDs, right?
That actually is cell ID.
Okay.
Is it? Wait, wait, is. Sorry, excuse me. No, no, I'm going to retract that. No, actually, I don't think it is. That might be the.
Someone.
Just the creation order in this session.
Except 2071 isn't what I would have expected. Okay, so I, I'm. I actually, I don't remember and I would have to go look that up. I don't want to waste your time doing that here.
Needs some modernization, basically. Concept seems fine. Needs modernization.
Content data is a pretty important one, which you might not like the name for, but it is, it is the type of the cell.
You know, cell type. Don't we have other names for this in other places? This seems uncooked here. This seems like there's more work that can be done. It's not, you know, these names seem kind of cruddy.
And, and do we. So for example, the. Yes. And there's also the question of do we want to include all of these things? So, for example, is formatted something we want to include? Is cursor position something we want to include?
Yes, why wouldn't we?
Well, it's sort of very time dependent. I mean. Right, so. So evaluate the next example. Right. So, and then if you. Yeah, right. So if you click around, you get moving different positions and if you click right above or right below the cell.
Yeah, seems like the right thing to me. I mean, being able to say dynamic of information of evaluation cell seems like a good thing.
Form formatted, by the way, is if you toggle the cell expression on the cell.
Yeah, so if you, if you. Yeah, exactly. If you do shift command E on the input cell, then it'll.
It'll show up as unformatted.
Yeah.
Yeah.
And so is that something again, is that something we want to include? Maybe. Yes.
Yes.
Okay.
Yes.
So I think if I'm understanding ties, you know, sort of meta concern correctly, it's that, you know, information here is maybe returning things that seem a bit more ephemeral than the things typical information.
Yes, exactly. Ephemeral is usually more, you know, summary information and this is a bit more.
Or like current value.
Yes, and notice that I had. And also notice that I had to manually force dynamic updating in order to get this.
I guess dynamic is not automatically paying attention to the fact that cell information could update. Yeah, and I bet it shouldn't because I bet that can lead to some horrifying slowdown somewhere.
Yes, definitely.
Well, so the issue is, should these things be in current value or should they be an information of cell cell expression, cell value of information of cell object?
Well, and so generally, you know, if we have kind of a philosophy of what sort of thing should be an information to sell object, then I think we can make a bunch of these decisions, you know, ourselves.
So what are you saying?
In other words, guiding principle. If we have a guiding principle of what should be in here, then, you know, then we don't have to kind of micromanage every single thing because, you know, Lou and I can kind of apply the guiding principle principles appropriately.
I do tend to think that your point about not putting ephemeral things into information seems sensible to me. But I mean, look. Or alternatively said, information is a one and done thing which if you want to make it dynamic, you have to put go to effort, like putting the update interval in and it can pull out things that are ephemeral at the time when it asks for them, if you get what I'm saying.
Okay.
I think we don't have the ephemeral stuff. We'll be always arguing. Oh, but you could change the style.
So it should be noted if we look at the information of notebook object, there are a couple of ephemeral fields in there. You know, the memory modification, file modification, modified memory.
I think there's a slippery slope here. Now, what should be provided as a current value is a different thing that can certainly overlap with what's in information.
Yeah.
All right.
I would suggest not redraw bug.
Not evaluating.
I was just looking at a pull request for that today actually.
Yeah, there's a futurized draft page for that. I don't know what happened with.
Steven. Just resize the notebook or something and that will fix it up. There you go.
And if this is a prototype build the inputs in that draft ref page will work.
So this is the history stuff to remind you that the evolution of the notebook history dialogue into system function.
There's a lot of pinking math. That's pinking math, Wordsworth.
So yes, there's a Data set issue that I need to chat with ITAI about, but we don't need to take up space for that in this meeting.
But.
So you've seen this function once before. At the time was called Notebook cell Information, and there were a couple of things you didn't like about it, including some of its options. So what's currently in the prototype build is the thing documented here which resolves the issues that you had with it, namely the name which you request to be notebook cell data and the two options which are described at the bottom of the details section. There still exist. I don't know if they need to. They might not need to, but they are. They are now method options. Yes.
I don't think we need this. By the way, why on earth is this thing not aligned properly?
So it's not aligned properly.
The icon, interval, type setting.
Yep.
Okay, so one question is, with a cell object, should have a print form.
Well, it does have a print does.
So it does. Okay. I can't imagine we need this. Well, what are these things here? Those are the. Why is there a key in this association? Why is it not. Because that's the actual cell.
Yes. And if you were to, you know the unfortunate thing about data set. Well, I know you can try clicking on, you know, the. The cell style. That should be a link, but you may need to copy the cell object out of it because it's a. Because of data set.
Why isn't this just a list where this is like cell content or something?
Why is what not a list?
Why is this not a data set of a list rather than a data set? The thing with keys, where the keys are the cells. I mean, the cells are in a definite order. Right.
This function can take lists of cell objects. It doesn't just point at notebook objects in which, as you say, the cells have a definite order. You can give it lists of cell objects in any order you like.
What happens if I repeat a cell object in that list?
Then it will do something.
But cell objects are unique, Right. So it'll drop.
Right. Like the association drops things.
Right.
But what I'm asking is why not just return a list of associations that represent each cell that include. And then when you ask for it for, you know, a collection of cells, you just get a list of results, a list of associations as results.
Rather than the data set.
Oh, and it can be a data set, but it's a data set of a list. I'm just saying I don't think the key being this cell object is terribly useful. I Think it's more useful. What's that?
I don't understand. Why not? Why you don't think it's useful? Steven, are you saying you just want.
The cell object to be a value.
And there'd be a key that gives that column?
That's what I'm suggesting. That it's a list of essentially. I mean.
I mean, things that are in. All right, Whether it's a key or not, I still think it should be the first column.
Sure. I don't disagree about that. But I mean, yes, I think it should be the first column, but to what extent is the cell thing. We just looked at the cell information function. Information of cell object. To what extent is that recapitulating?
So the items that are available in cell information will also be available as targets for notebook cell data as things you can ask for from notebook cell data, as is any current value or any option name.
All right, so there's default here, but now, is there anything in notebook cell data that's not accessible from cell or information of cell object?
Yes. For instance, any current value, font size, for instance. And there are also some custom elements that you can ask for, like cell thumbnail that goes off and does, you know, some new thing or cell image which just rasterizes the thing you're asking for. I mean, notebook cell data allows you to spec lots of things that you might want. You might want the cell expression.
And why does information of cell object not also allow these things?
Well, for one thing, it's because it doesn't exist at the moment. But if you're saying we should just.
Some of these things are not information about the cell. They're computed things based on the cell.
I see, right.
Cell image is not, you know, it's not a feature of the cell. It's a processed.
Is.
Are.
Are we seeing all of the default columns?
No.
So.
So what? We. I don't know what we're looking at in the agenda.
Why can't we. I'm sorry, this is a resource. Why can't we scroll over in the data set? Why isn't one of those buttons aligned? How do I do it?
Well, the data set is wider than the notebook. You scroll the notebook.
Okay?
It is a data set. Without scrolling the notebook.
Please delete this output. We should not be looking at this output. We should be looking at the draft ref page. This output is from resource function. That is no longer the ground truth for what this function is going to become.
But to respond. To respond to Steven's question. Yes. Sometimes you need the two scrollers to see the whole data set.
So why aren't we putting a scroller in the data set itself?
In order to do that, you have to know how wide. You have to actually prescribe how wide the data set is.
But, but sometimes even with the scroller in the data set, you still need to move both.
But wait a second, John, you don't need to prescribe. What you're saying is with that scroller you are changing the left margin in the data set. See what I'm saying? You're just saying that whatever is at the left hand side isn't the left.
But how, how wide does the, the blob. That is the screen, you know the, the on screen rectangle that holds the, the data set. How wide is that? If it's not the full width of the data set, you have to specify a width.
No, no, it's the width. Okay, look what's visible on the screen. If I were to get back this thing that I just deleted. Okay.
You can just evaluate those two cells or. Yeah, that works.
I get this back. Right. What I'm saying is right now if I had a scroll within the data set itself, it would just get it to the point where, for example, this is on the left hand side of the visible sub window that is the data set.
And what's the rightmost column? Where is the right edge?
The right edge is at the right edge of the notebook. It's cut off as it is right now. It's cut off, but all that's happening is this. Oh, I see.
It's cut off because it scrolls off to the right.
Yeah.
Okay, so you're saying that this scroller is doing the exact same thing. I thought that scroller might scroll the whole notebook. It does. But it only scrolls things which are cut off to the right.
Exactly.
That seems like the right behavior. Jose, did you still have a different thing to say on that?
I've seen cases and I think this has been reported that there is a scroller in the data set and another one in the notebook. And the users wanted that to see the data set with the scroller in the data set. And you have to use the one in the notebook to see the whole data set.
Well, I don't know what basis the data set code uses for deciding whether to have an internal scroller, but the front end doesn't care anything about data set. The front end has a thing of a certain width and if that width is wider than the window, it's going to scroll it.
Guys, I really need to take off here. Do we still have to look over this?
Well, I mean, how much review does notebook cell data need to go into? 14 as a. You know, at least as.
Get it in there and let's look at it one more time. Okay.
And did we decide that. Go on.
I mean, I think Stephen did raise the interesting question of what is the relationship between notebook cell data and information of cell. I mean, in principle, since we're at. I mean, I, I suppose. Well, I'm not sure what all the keys are. I. Because I, I've not memorized this documentation.
But there is an item, the second detail there says anything from cell information you can get to.
With notebook cell data.
Whether. Whether the opposite. You know, whether that needs to be true in cell information.
Well, is it ever the case that information can give you things that don't exist in the kind of single argument form of information? So, you know, you do information of an object and then you do information of an object, comma, key. Is there ever a key that wasn't shown in the initial. In the initial view?
Yeah.
For entities it is. You can ask for information of France and it will give you a summary, but you can ask for any property that's an entity value and it'll return it.
Okay. And do we consider that a good design?
Could you repeat what you just said?
That's debatable.
Yeah.
If you do entity value of entity country France, you will get. Or, I'm sorry, information of entity country France, you will get a set of summary properties giving you basic information about France. But you could ask for a property that's in any value which is not in the information list itself and we will still fetch it for you. That's done as a convenience so that we don't say, oh, we have the information about France's population, we're just not going to give it to you because you asked information instead of entity value.
It's a little bit weird, but I think it's okay.
Right. And so then the question is, do we need. Right. So then John is raising the point of if we settle on just having information of. Of cell object, then. Well, I suppose. Well, I suppose the reason we need the cell information data is that it accepts things other than just a single cell object or even a list of cell objects. Right. You can give it a notebook. I know. Can you give it like a selection or other fancy things?
No, just a notebook object or cell objects currently.
Yeah. So I guess. Right. I guess the reason we want cell information data is that you Know, it can also understand notebook objects, and then we can, You know, then it can do the right thing. So, you know, maybe John and I should just take another look at exactly what we want out of information and this, and, you know, we can sign off at the next meeting, hopefully.
Fine.
Okay.
Okay, last item about encode string. I like transcode.
Okay.
It's quite good. The only question is, should it be string transcode or transcode string? Because it both takes in a string, gives out a string. I kind of slightly prefer transcode string, but is that consistent?
Okay, so I didn't realize that video did it in the opposite order. That may be a good reason to go that way.
I'm not sure that it is.
Okay.
Why? Oh, there we go. Yeah. Beautiful. Look at how magnificent, this fuzzy completion stuff. Magnificent.
Right? But yeah, for other things. Like, you know, for other things. Actually, no, I do like transcode string better because. Well, no, I like it.
I like it much better, but I can't. I can't articulate why.
Yeah, I also like it much better.
Right, so we have, like, base encode, base decode, which sort of suggests it should be string transcode.
I mean, we have pure transliterate.
That's true.
I think transcode string is the right thing. I think transcode on its own is too weird.
Mm. Right there. There. There's a little bit of, you know, this weirdness, and I'm having a bit of trouble coming up with a usage message, but maybe that. Maybe John and I can work on.
That offline and be happy to do so.
Transcode string of that thing there, transcodes From Unicode to UTF 8. Is that correct?
Well, it. I mean, it transcodes from the. The kind of, you know, native encoding of strings. I hesitate to refer to that as Unicode, but.
Okay, I think that's very reasonable. Transcode string to UTF8 sounds very reasonable to me.
Okay.
All right, let's wrap it up. Thanks a lot, guys. See you all soon.
Okay, thank you. Bye.
Bye.
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






