Live CEOing Ep 691: Language Design in Wolfram Language [RealValuedNumericQ and More]

Stephen Wolfram leads a design review on Wolfram Language predicates for real and complex numbers, debating whether to revert a recent change to Im/M that risks breaking code, and discussing new functions like RealValuedNumericQ. The team also designs a flexible bibliography system with inline citations, BibTeX import, and DOI lookups.
Chapters
Okay. Hi everyone. Welcome to another Wolfram language design review. Part of our incremental language development and lots of throat clearing and let's get going. Okay, first up, real value numeric Q. What is this?
Right, so we've had for a long time an internal function, real value numeric Q, which tests that something is both numeric Q and A and that the value will be, you know, a real, you know, real integer, rational, not.
You.
Know, not something complex valued. And you know, there's been some talk about making this a system function and it has become, I think, sort of more important with the recent change to m. So in 13, two and earlier, if you took M of a machine reel, you got exact zero and now it gives a machine zero.
And how's that blown things up or. I mean, we don't know.
I'm really quite worried about that. There were some changes in the startup code, particularly where it's using exactly that example there Im of something is same Q of an exact zero. And that was previously the best way to test that something was real valued.
But double equals will still work. Is that correct?
Absolutely. Absolutely.
Well, yes and no. I mean, it would give true, but it would also give true to something that's, you know, complex with a small imaginary.
No, zero has no tolerance.
No, no, but it does. It does give true. If the complex number has an exact zero machine zero part, it will give zero.
So there's some fuzz in the. No, there's, there's no, there's no fuzz around. Zero for, for equality to zero. The fuzz. The problem with using equals zero and this, this function possibly has that, that problem too. The same problem is that if X is, you know, say the special trot zero, which is a hidden zero, then it can take time to, to evaluate. Let me be, let me understand what you're saying. So go ahead. Right, so okay, if I say, I think I'm going to just. If I say this, okay, that's an exact zero because it's a. Oh, sorry, I meant times I. Now if, now if I do this as two point, how far do I have to go before it. Or let's see this. Equals, equals zero is false. Right? What's the confusing case?
Well, so, well, M of a complex number. Yeah, right. M of 2 point plus 0 point I equals, equals exact zero. Now exact zero point, zero point. That's it.
Zero point one.
No, one zero point zero, not zero point one. Oh, right.
Huh. Oh, I see. Equals zero.
That's correct.
Yeah.
Yeah, but this, that's Also correct.
Okay, but what isn't correct is triple equals here.
Right, right.
And that was in the previous version. That would give true.
Yes, that would give true because the M would evaluate to an exact zero.
Let's take it.
No, no, no, no, no.
Not that you're confused.
That's right. Yeah, you're right.
That hasn't changed.
That hasn't. This hasn't changed. What has changed is em of 2 point. Get rid of the complex part.
It might be easier if you do it without the same queue to see.
Yeah, yeah, I think Christopher's right.
No, no, no, no, no, no, no, no.
I mean this is where it would break, but it's just use what it's returning.
Right, so that, that is.
Now.
Why is that in the exact zero? So maybe that your versions are up to date.
No, no, no, the thing on the right is 13:2.
Ah, okay. Yeah, yeah, yeah. So, yeah, so that is the change. And the reason, the reason for this, Stephen, is because like before we, we used to have just one machine precision type, so the machine real number. But in the compiler we have a real 32, we have a real 64, we have a real 16, and we also have all these different integer types too. Like an integer 8, integer 16. We want the IM to return the same type as the. As the real number so that we. It's type consistent. Not, not previously it would return machine integer 0, which is kind of not very useful. It doesn't tell you anything about the type of the real part.
So yeah, this makes me nervous. But if it isn't blowing things up in 13:3, then I guess it's okay.
Well, it blew things up because of this change.
And so what's it going to do to use a code?
Well, any user who's using this test of, you know, numeric.
Can we at least scan external code for this? For this test? Same Q of M. Just see how much same Q of M there is.
I don't know how we scan users.
I don't know.
Public, public code. I think our node has ways to do that. Let's try to not give somebody some insidious bugs of code that's worked for 30 years and stops working. Please.
I mean, that's one reason to provide a function like we have.
No, it's not a reason to provide a function. It's a reason to not change what we already have. The only way we're not going to blow up code is to not change what we already have. So, you know, honestly, your explanation for why we want this, it's a kind of a mild nice to have, but if it's going to blow up a bunch of code, we shouldn't make the change. It's too insidious a change. I mean, I understand your reason for wanting it, it's well and good. But let's find out whether it's going to blow up code because I think, you know, you have a hypothesis. This is the only. Well, okay, yeah, please, let's find out whether it's going to blow up code and let's understand what was the code that already blew up in startup system? Well, I think we've understood that. Well, what is it? What's the answer?
It's exactly this.
Where was it used? Was it used in something that was a system level thing? Was it used in code that was kind of reasonable user level code?
I don't know what that means.
I'm asking was it only used in something which was essentially meta programming of some kind, which we can expect that only our startup packages would do, or was it used in just some random mathematical, you know, function setup?
Right. It was used in stats, for example.
And what statistics. Startup code, MX code just kind of blow things up. This is going to lead to some horrible, insidious bugs.
I think. Right. And the thing you'd imagine, someone's doing it, they're just trying to test if their number is real.
Yeah.
Which is not a particularly meta programming.
Thing, but this is not a good.
Way to do that.
This is. I don't care, Tom, I don't care. No, no, that's fine. We can't have that code. Hang on, hang on, just let me finish. Yeah, let me just introduce a better.
Function and we can revert the old.
Behavior so that old code doesn't break. But can we have a more literate way to express this idea rather than the rather fragile. That's fine, I'm all in favor of that, but I think we can't break existing code. It's just, I mean, what we could.
Do as a compromise is introduce these functions. Say that they're more descriptive, more efficient as well, because like this.
Okay, fine.
And sameq is doing two things. One, it's doing an action on a real number, creating a complex.
We can encourage people to use the new functions.
Yeah. And then we can maybe review this in a couple of versions.
That sounds fine, sensible. I think we should revert the change and let's figure out how to make a nice shiny new function that does this. Okay.
I mean, that's what these two functions do real value number Q and real valued numeric Q. So real valued number Q, it's just a predicate. It just looks at the type of the number and that's it super fast. It doesn't.
Why isn't it just real Q? Why isn't it called real Q?
Yeah, well, there's a. I mean, there's a difference between. I mean. Right. Well, real number Q is different from real valued numeric Q. Right. So I understand that real numeric Q and real number Q is what you're suggesting.
No, I'm not suggesting real number Q. I'm suggesting real Q. Because why isn't it the same as integer Q? Isn't it doing the same thing? Well, no, because integers will also be valued.
Right.
I see what you're saying.
I get it. I find it's real in the sense of it has to be real. Yeah. Floating point. Rational and.
No, no, no, no, no. The point you're making is it's real in the sense of having zero imaginary part rather than real sense for being a real data type.
Right.
That's why the valued is in the name. Yeah.
I don't understand how we can have a function real valued numeric Q. Because I can always give you a number that's real valued and you. There's no decidable procedure to decide if it's real.
Yeah, but it's.
It's a little bit like, definitely decidable to be zero. So it might.
But it's a Q function, so it must give. Must give a mathematically correct answer.
But does it? The case you're talking about, though, is something where it's like. It's in some complicated symbolic form and you can't decide whether the.
No, no, not symbolic because it's. It's all number Q. Like, I take cosine of 2 PI over 65,537.
That's number Q.
That's.
That's numeric Q.
That's what I'm saying.
So numeric Q. Wait, wait a second. Already with greater than isn't or double equals. Right. I can make a. But this is not Q.
It doesn't have to decide.
No, I see.
Right.
Numerically, I mean. I mean, numeric Q doesn't actually guarantee that the thing will end up being.
Numeric and not exactly numeric Q can fail, too.
We don't have to add more of the functions.
Numeric Q is not. Is top level now.
I can't remember.
Yeah, numerically is.
Yeah, okay.
Impossible. 0q is already something that can fail. So this, this is basically possible 0q of the imaginary part, right.
In the name.
Well, so it could be, it could be possible. Real Q.
I think.
I mean, another thing would be, do we make a distinction between numeric Q and number Q where number Q is more surface level?
Yes.
So we could have real number Q instead of real numeric Q or whatever it was.
Yeah, because numeric Q is true for PI and it's not, but number Q is not true for PI, is it correct?
That's correct, yeah.
Because number Q is literally, you know, integer, rational, real or complex.
Okay.
So. Yeah.
Okay, well, I made that point in the agenda that we do have a real valued number Q which we could also have a system, as a system function, but that's really sugar because that's really just number Q. And head is not complex etai.
It's useful in, in things like array.
Q or matrix Q or vector Q. Yeah, yeah.
Right.
And.
And they're.
Those cases are optimized for those functions.
Yeah.
So they're.
Yeah, so. So when I went through the startup code, the graphics guys were really happy to get rid of this test Im of something. Number is equal equals zero. Because when they do their array processing and using the real value of number Q, now that's super optimized. And so their, their pre processing of like, you know, packed arrays and stuff got more efficient.
All right, well, look, I think, I mean, I don't see we have any choice about the name real valued number Q. I think that's about all we can do. It's a bit ugly, but I think that's all we can do. Because of the horrible hackalola of half a century ago, that real means floating point. Right. That Dedekind will be rolling over and whatever, you know, it's reals are not floating point. They're just. Or whatever. I don't know. I don't even know what. It's not our abuse, so to speak. It was a 50 year ago abuse, not due to us. The only question I see, real valued number Q and then real value numeric Q. With Michael's objection that the numeric queue is undecidable.
Yeah, but it could be just a question of documentation. We can definitely decide that it's, you know, evaluatable as a real expression.
Yeah.
There are any number of functions which when they can't make a decision, they say, you know, can't decide if this is exactly zero. Assuming it is or assuming it isn't. Typically they assume it is. And so we could issue a message.
But only a small number of them have a queue at the end.
Right. Although the queue has escaped to be a little bit. As in possible 0q. Yeah, I don't think we have any pattern for something like this because numeric Q which also has this problem. We could hide a zero multiplying an X in something. It could be a number plus a hidden 0 times x. And then numeric Q is. But realize numeric Q gives false answers too. Trinumeric Q of sine of 1, 2.
Yeah, exactly.
Like this.
Yeah.
Right.
Because it has had numeric Q and only and only numeric arguments. So.
So it assumes it will evaluate a number, but it doesn't. And also, you know, things that generate exceptions. You know, a hidden one over zero that's going to bring an infinity or indeterminate or, you know, I mean there are all sorts of exceptions to that.
All right, so look, I think I'm agreeing with your proposal here. I think number one, we have to revert the thing. But number two, we have real. Real valued number Q and real valued numeric Q. Okay, right to me.
Good.
I like those. Okay, on would we go I recognizing Michael's objection, which is valid but difficult.
I guess there's one other question that should.
Sorry, I still have a comment. Like if you read the ref page of numeric Q, numeric Q does not say something is numeric. It gives the clear decision procedure based on heads numeric function attribute and such things and gives the right answer. So the proper documentation of real valued numeric Q is the real challenge here.
Yeah. So what's it going to say?
You cannot say that something is real because it must do some quite different things. Like numeric does not say something is numeric. It says a certain number of conditions is considered.
Okay. It's a numeric quantity which has been determined to be real and false. Otherwise. Yep, that's. Yes, great. Which. And if it hasn't been determined, then. All right, let's go on to the next topic if we can. Some of us are not in the agenda for other topics, so. Okay, fine. Bye bye. Thanks for joining us. See ya. Okay.
Okay.
All right. We got quite a long way with this bibliographic references stuff a while ago. What happened to it?
So to my knowledge, we last discussed this in the third live CEOing live stream and in the intermediate time we've added external identifier which is a component.
That'S needed third one. You mean like 500 back something back in 2013 episode three and when. 2017.
Yep.
Wow. Okay.
Well, We've got so external identifier I believe came out of that. And this is now revisiting the references specifically.
Okay, so Michael and others, who's here to comment on this? Who's here to talk about this?
Ian had sent it along. So we have seen it. Eric is here.
Okay. I mean, Michael, do you support us trying to do this?
I think there are two combinants, one having the structure in the notebook. And I like what Ian has here in front of us. I strongly support this. The more interesting one is have this really as a convenient workflow in the front end. Right.
I mean, I'll give you an example. You know, I have been, you know, we've made some bibliographies for. I've made some bibliographies for, you know, combinators, second order of thermodynamics, things like this. And I would like to have had some way to do it like this. It would have been very nice. And I mean, I wasn't using BibTech or anything like this. I was just doing it raw in a notebook.
So can I comment that workflow is describing citations, which are basically things you embed in a document that point to a reference. The proposal here was to focus on the language design for references. But we do have. John, if we need to discuss citations.
What is it I don't understand? What's a reference versus a citation?
A citation is something that you actually put in your sentence. It's like a one or whatever, and it links to.
Oh, I see, I see.
In the bibliography, one is the bibtex.
File and the other one is the usage of the biblical reference in your.
I got it, I got it. I mean, the bibliographies I've been making don't have that kind of micro referencing. But your point is there's got to be a way to footnote something in the flowing document in a convenient way.
Like pointing to this notebook which has my 5,000 biblical reference items. And then conveniently, with autocompletion, Also select relevant 1.
It's also not just selecting them because the citation might include something like a page number.
You mean, I would think this belongs into the reference?
Well, no, I mean, like, presumably you want one bibliographic reference for, you know, whatever thing you're, you know, a book. And then you want many citations pointing different pages of that one reference.
Yep.
I think it depends. Like, for example, like in entity stores, when we have lots of definitions, each one, you kind of want a symbolic representation for the reference. And that usually Includes a page number.
Okay, so let's just understand even roughly.
Itself is a separate entity.
I think adding, being able to add a page number like, like reference one, comma, page 715 or something would be, you know, some people like to do that. Not everybody, but some people like to do that.
But there's also a whole, a whole, you know, structure. Do you cite the page? Do you cite the chapter? Do you cite the addition? Do you cite or like, you know, the volume if it's a movie, do you cite, you know, the minute mark when the thing happened, you know, whatever?
Yes. I mean, look, there's a lot of. I've discovered this in things that I've tried to do. There's a lot of modern media where traditional citation is pretty silly. I mean, let's be realistic. The actual thing you want is URL you can click on. You know, all the other stuff is just for window dressing. I mean, it's magnificent and it's kind of interesting to see, but it is not. It depends on the context. For scholarly stuff, where the mathematician wants to see where it came from so he can go and verify that you didn't pull the wool over his eyes. He wants to see. What about a link?
Well, what if it's a movie, right? You're citing a movie and you're citing minute 36, or it's a book that's not in print or something.
You scroll down list of, of like, kind of brainstormed types we might want to have. I didn't.
I'll show you an example. This is a real example. This is an actual bibliography. Okay. And. Well, this one is a very old line subject which won't have a lot of modern stuff in it. So I mean, this is.
Also one that you made that that's going to be, you know, have all the restrictions of the way you made it. Right. I mean, you were just saying that you made it.
Yeah, I know, exactly. It has some nice stuff like independently published, which is non standard, non published. You need a way to be able to say that kind of thing. Private note, private communication. Yeah, that one's weird that it says independently published. I bet we got that from the. I bet we asked them how to cite that. Weird, funky.
Well, I think stuff like that is usually specified in like the style guides. Like, like if you read it, if you go to like modern, you know, citation generators and stuff like that, they'll have like 50 different types of things you can cite.
Right.
I mean, this stuff is very weird here. I mean, this is. Okay I mean, what that is. I don't know what that is.
Could you give a string template as one of the properties to inform how to format the thing for certain types?
Yes, but it's already complicated. So the other thing I've got here. Sorry, is another can of worms here probably is translations, which is another complicated thing.
I mean, I was going to say. I think so. Right. I mean, I think generating citations is usually a lot more complicated. Complicated than that. I mean, it might be worth looking at like how BibTech or something does this. Because, you know, BibTech, they have like, probably on the order of like 100 different citation or, you know, bibliography styles and I'm sure they have some representation of them. And of course they have a representation of the items that are being referenced and so on. So might be worth looking at that.
Well, is this.
Might be worth even calling out to it.
Yeah, that's why. I don't know, because I just. It seems like it's really. Okay, so we've got.
But there are two things. One is the abstract thing, which is in some sense always the same article, book or whatever, and the other one how it's formatted. And I think the two should stay distinct.
Indeed.
Yes.
I mean, this is, if I might say so, kind of nonsense, what they've got here. I mean, this is an utterly inadequate. The 14 BibTech entry types is utterly inadequate.
Well, that's the base thing about like article versus book versus whatever. But I think it goes.
Where's the video?
It's all. It's all just miscellaneous.
Yeah.
So that in the agenda notebook, I've put together a list of more like modern types of things that we want to reference. But I think it would be good.
Before we get one, we can drop. No, I'm not completely serious. I'm not completely serious.
No, no, no, we should keep it.
I'm not. I'm not serious. I'm just. I'm just. I'm. I'm like dying.
Yeah. So I think it would be helpful if we went through the current situation section where I have the different kind of entity examples that we have currently pretty varied.
Okay. But I'm still trying to ask the question, so. I see, so you're imagining that it's a type of essentially external identifier.
I'm imagining external identifiers can appear inside a bibliographical reference.
I see what you're saying.
I think so too.
Yes.
You know, in the end.
You know.
In here, for example, realistically, if I'm going To go there. Okay, that was nice. You know, I just want to click something often.
You can't.
Yeah, I know. Like, like in these ones, I can't. This one, it is unclick. Super frustrating.
I mean, right? It seems like probably it's just you want to have some kind of, you know, sort of bibliographic reference representation that's, you know, similar to how BIBTEX works, where basically you just have whatever keys and values you happen to have and you just, you know, fill in as much as you want. And then separately there's a mechanism for actually converting it into a string.
Right.
I want to just bring people's attention to the first few citations here. Look at these.
Yeah, so like, if you include the DOI key, then it should have potentially.
Look at this can of words for what's happening here in the citation. We've got the thing, it's in German. We got the translation of the title. We've got where you can find the translated version of it.
That looks like a page range before the doi.
Yeah, that's a page range. But look at this. The fact that there's a translation of the title, for example, which is useful, obviously, right?
I mean, this is, I think this is very standard stuff in modern times. And these things are just generated automatically, like, I don't know what the.
Okay, all right.
You know.
Okay, well, so then the question is, could we just use. Okay, the question is, could we just use bibtech, for example?
I'm kind of, at least for the last step, probably beyond bibtech for the large tint of things that fall under miscellaneous.
Well, I mean, like, for example, if you want to deep link into a notebook, that's a non trivial thing. I mean. Okay, let's zoom out for a second. I mean, part of what we are trying to do, which we've been trying to do for 25 years, is sort of the computational publication story, where we've got traditional publishing and we've got building for the future. And so whatever we do here better work for building for the future. So, for example, one thing we don't have, and maybe John Fultz could comment on this, is anchor. Here's a question. How do you make an anchor link into a notebook? On the cloud or not on the cloud? Is it, Sean with us or not?
Yeah, yeah. By anchor link, you mean link to a particular cell?
Yeah, let me show you. I mean like, like in, you know, for example, okay, if we go to your average, you know, random thing I've written, you know, here Right. This has a table of contents here, and this here has, you know, has that hash sign URL. Do you know what I'm saying?
Yeah.
So it links at least to this level and we're actually planning to link even further down to these individual things. Okay, but, so, so my question.
Sorry, sorry, I'm just, I'm just trying to remember what's actually been done here and I'm refreshing myself on that. Yeah, I, I don't know if there's a way in the cloud to kind of create a URL scheme that does that, but there's nothing in our hyperlink interface that will, that would try to like automate that for you in any way.
All right, so I think this is a, this is an issue we should address, but it's a separate issue from these issues. In other words, it should be the case that you can link to a section, for example, in that we can generate, I mean, in the cloud, for example. I mean, if I were to take this notebook, right, and I were to, you know, let's say I, you know, publish to cloud to an anonymous URL, why is that thing not. Why is it sort of splattering? Why is it, why is it not. Oh, good. For goodness sake. Why is this not just working? Why is it spinning? This is not a big notebook, is it?
No, I don't.
It's not a big notebook. Why did that happen? What was going on there? I don't know. Okay, so here we have this notebook, right?
Right.
So what we want to be able to do here, you know, really what we want is in the right click menu. Where's the, where are the gears? Do we not have gears in. In this view?
It's published. You don't get gears in a published notebook. If I recall correctly, you're not logged in. Are you even logged in? I don't know whether you're logged in or not, but yeah, this is a read only notebook, so.
Yeah, okay. Yeah, Well, I mean, on the web it's surprisingly painful to get the URL for a particular element. You know, you have to go into the Inspector and so on. Right. But here, I mean, it could be in the. I don't know that. Does it make any sense? It could be in the share menu, right? It could be in the share or something there. See what I'm saying? I mean, if there was a. Now that you have unique IDs for cells, it seems like it should be possible to just put a, you know, hash sign, blah, blah, blah thing there.
I agree in principle.
It might.
It might even be possible in practice. I'm just not aware of how it's done.
If it's possible, if you know the expression uuid, you can use that as an anchor in the URL. Or if it has cell tags or cell id, you can use those as well. I put an example link in the. In the chat. In that case, I used a cell tag.
All right, so this worked.
Yeah, I had to insert that cell tag into that cell, though, otherwise it.
Would be a weird. So if we could expose that id. Okay, so there's this question of how do we expose. How do we get the cell id? Okay, so you're basically saying this has already been built, but we need to make sure that it has a proper interface. Am I making sense?
Yeah, yeah, I think so.
So, I mean, this is a discussion with also the cloud team, and maybe we should tackle this in user assistance. Is that the right place for it, John?
Yes.
Okay. We should start livestreaming some of those user assistance meetings there.
Or not. Or not.
Whatever, people. If anybody's watching this who has an opinion about that, they can express it. Okay. Okay. What's the thing Brad has just put in the URL chat for the Library of Congress. What is that?
Yeah, I was just thinking about cases when we don't have links directly to the document. If there's going to be a secondary, like, online library source saying at least that these books exist, it's just not just a figment of imagination made up by some chatbot.
That's a modern problem, isn't it? Yes, the invented citation. Yeah, sorry.
Another example along that line is like a preprint of a paper. You might not have access to the published paper that you can get your hands on, but there might be something on arXiv.
Well.
Well, I don't know.
That's kind of different than what I was talking about because with the, with the preprints, you click the link and you're can directly in the document you can get all the information. But then for like these old books and things, they might be stuck in a library somewhere or basically Brad is.
Saying it will be nice to have a proof of existence even if you can't. Even if it is only like the DOI in a sense provides a proof of existence. But older documents don't have DOIs.
If it's a valid DOI, not one that's made up.
I understand, but any of these things, you could make up a Library of Congress identifier.
Right, but you can't make up. But you Cannot make up the actual record at the Library of Congress.
Exactly. It's like a blockchain, you know, it's. It's like a. You know, it. It is a ledger that, you know, it's like a title deed. It's like any of these things where there's a central, you know, repository.
I see there are two Library of Congress identifier types. I don't know what they are. Authority ID and control number.
Yeah, those are standard library science things. Okay, but that's a. That's a separate issue. It's an interesting thing. Okay, let's take a look at what your. So, okay, one question is how do you insert the little footnote, you know, ones and things? Is that addressed here or is that not.
No, I would say that's. That's the insert citation menu item which I have listed under integrations.
Okay, Okay, but, but so hold on a second. So. So the typical workflow would be you maintain this great big file. I mean, for bibtech files, do people just, like, have a file on their desktop? Basically, that is. Is their collection of reference academical type people. Can you tell me that, Eric?
That was my least favorite part of writing a dissertation because it's hard. It's difficult to keep all of the bibliographic information in the most standard form.
Roughly, what do people do? Do they have a file called Dot bibtech that is just a big list of things and they just add things to it?
Yeah, or possibly more than one file. You might have a file that's specific to one chapter or article that you're working on.
No, no.
Some people do write the. Or, you know, they're sort of dedicated BibTech managers to help you, you know, keep track of your.
Okay, so it sits in a database somewhere. And for example, you can tell, oh, how many times have I cited this paper in my last 50 papers or something that. The type of thing.
There are some people who do that.
Yes.
Like, oh, I haven't cited my friend enough times in my last end papers. Let me give. Let me throw in a citation in this one that. Am I too cynical? Okay, but, but so, I mean, it is standard practice, I believe, for people to maintain, you know, I have my file of references.
Yep.
Right. And then to cite something from that file of references, there are presumably bibtech managers that you can just go and click something and that will copy the reference in the right form to put in your paper. Is that correct?
Yep.
But the thing that goes in your paper is not in any way symbolic it is literally the series of characters that make the citation in the correct format. Is that correct?
No, no, it's, it's. It's a pointer to the database so that.
Okay.
So that, you know, when you compile it, the style of your article dictates how that entry is formatted in your paper.
I see, so. So like, for example, for us, a date object, for example, might be rendered in different ways depending on your preferences, even though it's the same data object underneath. Is that right? Sure. And in this case, it's kind of like we've got.
Or names, you know, first name, last name.
I understand, I understand. But the point that I'm saying here is that what you're saying is that in the notebook there will be a thing that isn't actual. If you looked at the box form of the thing, it would be. Okay, what happens if you drag select over a piece of a reference in a notebook where you have a reference being given? What happens when you drag select? Do you get the characters that you actually see? Or do you get something different? Or can you not drag select it.
When you drag select what?
When you drag select the rendered citation? Okay, well, well, well.
So I mean, in, in. In a useful system of the sort that I think we're talking about, you wouldn't be able to. You probably wouldn't be able to edit such a thing in place because, you know, it's a constructed thing.
Okay, that's what I'm. That's what I'm trying to understand. So this would be. So if I, if this was a rendered thing, if I, If I drag select, it just wouldn't select.
Well, it might select. I'm not saying you wouldn't be able to like copy text out of it or something like that, but if you tried to type into it, it would just reject your keystrokes.
Okay, fine. Okay, so what do we have that's like that traditional form is not like that.
Like the hyperlink editor might be something relevant. So if you mouse over it, maybe there's a little button that pops up to edit the values.
Yes.
Can you scroll up in the notebook and look at the entity store examples? Well, I guess it's down, actually.
Yeah.
Publications. So I think for me, there's two different use cases. There's like the bibliography at the end of your notebook, and then there's having these things as values of properties in entity stores.
Yes. Okay, so the thing at the end of your notebook is a selection from here that is rendered as text.
Yeah.
So if you look at the next section, you'll see some examples of how we've been doing references. And it's kind of different for each entity type. And then also there's a separate. There's usually a separate property that has these things formatted as like rows and things like that.
Okay, so you're saying that the proposed idea is that there is a bibliographic reference and I'm not even sure we should do that of having a base type there. I don't think there's anything very base about that type. I think that all the properties should be able to be mixed and matched because I think there's the things which are barely a book. Is it a book, is it a pamphlet, is it a poster, is it a postcard? Is it a, you know, it's a. It's a, you know, it's a. It's one of those things that's like, you know, how maps sometimes fold out and they have a little booklet around them? What the heck is that?
So in BibTech, the like 13 standard publication types have different selections of required and optional keys, saying.
I think that that's a question of.
Are they all optional for us?
Yeah, I think it's old news. I think that, I think that we need to just have something where there's a soup of keys and we define. I mean, again, we should have asked somebody like Aaron who's actually, you know, librarian oriented. But what I would suggest, I mean, there are many attempts, like whether it's the Dublin Core thing or whatever else standardized, all this stuff. I think that, you know, I think it's a moving target. And I think that my suggestion in modern times would be that it's just a big association and we try and standardize the keys in the association. We say, here are some reasonable keys. Am I making sense? Do you understand what I'm saying? We don't have a base type because I don't think it's going to work. We have a convention that if you say type error book you get these keys are required. Am I making sense? Okay. I even think we need, you know, like author may not be possible. There may not be an obvious author. Who's the author of, I don't know, the UN Charter or something. Does it have an author? I don't know. Does it have a. What's the answer to that? I mean, I don't know, there's probably some fake citation thing that people put in there.
Well, they'd give the publisher. Right, which would.
No, no, they wouldn't the author. I'm asking the author, not the publisher. The author. It would probably be listed as. Not as a person, but the, you know, whatever Committee.
Right, Committee or organization is.
All right.
Okay. What happens if you want to cite a. What happens if you want to cite Stonehenge? Or do you not get to cite that? What happens if you want to cite a.
Or is Stonehenge just falling under an external identifier?
No.
What happens if you want to cite a. There aren't any tablets at Stonehenge, but, you know, let's say there were. Okay.
Oh, they're unknown.
Okay, so you. But, okay, fine. They're anonymous.
The Rosetta Stone, maybe.
That's a good one. Yeah. You might cite that, I would think. Why wouldn't you cite that? Sure. Either author unknown, or you'd be citing.
Something other than the Rosetta Stone itself.
For instance, an early document about it. Exactly. Yes. Which is commonly done. Indeed. Right, but I think it's more. Okay, but. So look, my point is just. Okay, it's. Bibliographic reference just becomes an association. Then there are rules for how to pick up the keys from the association to render it in different forms. Does that make sense to people? Yep, it seems straightforward. I mean, this seems like the obvious thing to do now. And in terms of, you know, manipulating bibliographic references, presumably there are certain functions that we need for that. I mean, presumably that can be turned into a data set. Presumably it has sub values that turn it into various kinds of things.
This is all on the agenda if you want to go back.
Okay, well, fine. Where is it?
There's properties and there's. Well, so first we have the different ideas, like. So, for example, Itai suggested we might want to have different kinds of buttons for whether you want to copy just the plain text or copy a text cell.
Yeah, I would think so. Okay, what is the external identifier?
Is this like an entity in its way of choosing a label or more.
Like an external identifier? Right. Which has an external identifier, has a. Why did you have those here up here? That has an appearance. Right. I don't remember how that's done in the.
Go back down to where you were. An example there, the entity external identifier under formatting Ideas. Right. So without the label, you just get the ID you specify.
Without the label. So what do you mean without the label? What? Oh, without the label. I get it, I get it, I get it. Right. So, I mean, this citation thing could be another thing that is similar to the similar to external identifier. Is that what you're proposing? What are you proposing here?
I don't know that I'm.
Okay, so I'm going to propose something. I think it should be, you know, first of all, I don't think it can. I think if it has a styling, it has to be a very light styling because I don't think people want a big, you know, big boxes around every reference. Am I making sense? Look, what it should do is the thing should format that. Okay. Bibliographic reference should format in some reasonable way based on some, you know, you can presumably set some global style for your bibliographic references, just like you can set a global style for your dates. Am I making sense? How do you set the style for dates? Your date string format sets them globally. Right. Okay. I knew there was a way to do that. Okay, so you know, a similar thing could be used for bibliographic references. You set it in that form like.
A dollar bibliographical reference format.
Yes, for example. And that will be the default way that they would display the notebook. Am I making sense? Yep.
Should probably be something that can be set on a per notebook basis too.
Right.
Not just a global. Maybe it comes from the style sheet. I mean, maybe you can have it set from the style sheet. John, would that be possible?
Yes, it's just basically template box.
Okay, fine. Okay, so then. Okay, so that's how it would display and. But what operations do you want to do on it? So you might have, you know, there's some backing database that has this stuff. Okay, what happens if I want to suck a BibTech? Suck something from my BibTech citation manager thing into a notebook? We used to have like 30 years ago, didn't we have. What was the name of that thing?
I think import of a bib file should just give a list of bibliographical references.
Fine. But we used to have a thing, procite. Right. We used to have some kind of link to procite, did we not? Nobody knows about this.
We had a link to endnotes.
Okay, Maybe that was the thing. Okay, so how did that work? Or does it still work?
No, I mean, the feature is still there, but it's. No, it's not really in good shape right now. And we haven't even tried to track more recent versions of EndNote. So it's probably.
Where would that be just going to take out.
Yeah, insert. There's a citation menu.
Oh, wow.
And we had supported EndNote and BitTech here, but this is code that's not been maintained for a long time.
Nobody's cad.
And I believe it was Windows only.
Endnote was Windows only. Bibtex was cross platform.
Oh, okay. What does this do? What did this do?
So in principle, what it did, was it you would there. I don't, I don't recommend trying to use it. I've tried and it doesn't work right now. But in principle, what it did was you would set your master bibliography file database, you know, weather endnote or Bibtex, and then, you know, it would have a little kind of scrolly interface that you could bring up to say, you know, I want to, I want to find a reference and I want to plop it here. And it would, it would, you know, set up, you know, the superscript type reference, and then there would be an automatically managed section at the end of your notebook which would be the list of references in, you know, that were.
Consumed in a very actionary distancing.
Can you click a one? Can you click the one?
It didn't work.
There.
Oh, yes, it did work.
If you look, this is actually a reference cell and the earlier one was an inline citation cell.
Wow, okay, so there's a whole mechanism for this there. I mean, I hate this action of distance thing. Am I making sense? I mean, is there something better we could do in modern times? It seems incredibly old.
Well, I mean, I mean, I mean, there are two actions. There's, you know, there's an action exact you're at, and then there's a secondary action at a distance. Just in case you're not clear on that.
Well, what if this one thing was a direct hyperlink? I mean, hyperlinks, you know, in some ways hyperlinks are the modern references. You know, in the past you just didn't want, you know, look, some journals you would put, you know, reference to Smith 1972 or something.
Right, but, but the notion was that you wanted to, you know, I mean, you know, at the, at the end of your notebook you would have a list of the references that were used in this notebook.
Yeah, I understand, I understand. I'm asking very old school. I mean, because in modern times, why not have every reference just be a hyperlink to the external things?
So the other use case, you know, for an entity, you know, what's the reference for this theorem? You know, it's, it's a value returned from a property.
Okay, I mean, I mean, I don't think it's that old school. It's how Wikipedia works.
Yeah, I know, I know, it's how academic stuff works. Right.
But I mean, how academic is Wikipedia?
Well, there's a different thing there, which is more like the bibliography of mind that I was showing, which is a bibliography that you are expected to read.
And I think that that has some value. I mean, you know, in the Wikipedia context. I mean, I mean, I've done this, you know, sometimes in the Wikipedia case, I, you know, I see a specific citation and I want to go and look at it, but sometimes I just want to go and look at the whole list of citations just to see where they're coming from. Yeah, that has value.
Oh, it has value. Yes. It's a very scurrilous value, but it has value. It can get very scurrilous.
And, you know, I mean, I think that, you know, in terms of, you know. Yes, you shouldn't, you know, cribbage your stuff directly off of Wikipedia. But you know what, Wikipedia is a great place to, you know, start to get a list of sources. If you don't know where to look for sources.
If the Wikipedia editors don't take down the best sources because they happen to not like the people.
Well, yeah, I mean, you know, political issues aside, it's, you know, the, the point being if it's an area that I don't know anything about and I'm looking for a first approximation, we don't.
I read, we don't discuss that. I mean. Yeah, so it feels very bizarre to me to do something which, which in our kind of world that just goes, you know, like to me, multi pane notebooks are vastly more important than some weird thing with references where you stick stuff at the end. I mean, it just seems very, you know, yes, it was a fine thing to do on paper and yes, people do it imitating paper on the web, but it just seems like a really old school thing to do and it doesn't seem obvious to me and it seems like it's fraught with difficulties for us. Like you're.
What's the new school?
Just links. Just links.
So I just, I never get to see the totality of.
I agree that it's useful sometimes to see that totality. I just think it's, it's. I don't know, I think the idea that you stick the things sort of on paper at the end and you're having many to one mappings where you can have the same thing cited multiple times, but only, you know, where it's a, a 7 and the 7 appears multiple times in the document pointing down to the same Lump of material at the bottom. You know, I, I'm just surprised we can't come up with a. I, I don't know. Maybe this is the only way to do it. Maybe this is the, the, you know, it's.
I mean, maybe you want. Maybe that shows a reference on a tooltip rather than possible. And, and I think that kind of what you're talking about is really about citations. And I think references are still useful independent of citations.
What you're saying is something a little bit like what we have in plots where you have legended versus labeled versus call out, etc, etc, etc. It's the same type of thing. I mean, legended is another action at a distance way of indicating something in a plot. Making sense. That makes sense.
Yeah, it's less distant, but.
Yes, it's less distant, but it's still not right there. Unlike labeled, which is right there.
But not everybody has it at the end. Especially the history books have it typically at the bottom of the page.
Yes, indeed.
And that's another thing. I read history books and that's another thing I use all the time. And.
Yes, so do I read the footnotes more than I read the main text often. But what's your point? I mean, we don't have pages here, right?
No, but, but can be right. Right hand side.
Yes. Well, if we had pains, that's exactly what we could do. You know, have notes in the right sidebar type thing. I don't know whether that would look good, but I mean, I haven't seen people do that, but that seems like a possible thing to do.
Well, to be clear, I'm not fighting for a particular location. I'm fighting for the ability to see the summary.
Fine. I don't disagree about that. I'm just saying. Okay, let's go back to the original point, which was having some bibliographic reference, symbolic object. And then the question is, what operations do you do on that other than display it?
I think one important one would be auto completion through course to crossref and other places.
So we had a mechanism for that we were looking at a few years ago where you give, You know, where you give some reference that's sort of messy and it goes out and finds the clean version. Is that right?
Yeah. We suggested last time something called like bibliographical data and maybe you could give it an ISBN and it'll give you a formatted reference.
By last time we mean five years ago.
Yeah.
Okay. To make that work, I have a.
List of integrations that we haven't gotten to yet, like import and interpreter.
Yeah, that's nice. That seems very useful. So you can just copy something from some paper and. It will canonicalize it into the symbolic form. Now, how would this work? Does this work by going to a central database on the Web to look all this stuff up?
One central one?
Well, I mean, Bowker presumably has the one for ISBNs in the US I don't know whether that's. I don't know whether there's a. How would this work? I mean, you've written this here, but how would it work? Or do you not know? I mean, please, please say I do not know. Okay.
I think for various cases there are lookups, but not for everything.
Yeah, I agree. Right. How about the next time we do this, we include Aaron and. It's probably the most relevant person who will know this kind of stuff. But so, you know, for example, can this be. Do we have an external identifier that is an archive link?
Yes.
Okay, so there again, we can, you know, that could be picked up from there. You know, I've seen a new convention. This is an interesting one, which I hadn't seen before. You know how, like in physics papers where there are 500 authors, it'll be, you know, Aardvark et al. Well, in some recent LLM papers, I've seen that people just put all the names in the references. It's kind of cool for somebody whose name begins with W. Not that I've written any papers for anybody for 40 years or something, but have you seen that?
Yes.
I mean, is that just an online thing or do they print that in journals as well?
I think there are still PLL papers where the household name is more than a page.
No, no, no, no, no. I'm not asking that question. I'm not asking about the author. I'm saying when they cite the paper, people are not citing it as Aardvark et al. They're citing it as Aardvark, Aardvark 2, Aardvark 3. You know? You know, do you understand what I'm saying? They're giving the whole list of names in the citations at the back. Have you seen that? No. Well, I've seen it in the last. Actually, just the last few weeks, a bunch of LLM papers look like that. Okay, let's wrap this meeting up. Okay. This will be continued another time with some additional people. Okay, sounds good. 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






