 Isaac Newton was associated with the idea of the clockwork universe, though it really goes back farther than him. You know, the idea that the cosmos is all sort of like gears and levers, you know, run by the spring that was wound up by the creator at the beginning, and has just been playing out ever since. Idea bugs people sometimes because it seems like it's got no room for, like, free will or choice on an unpredictability or surprise. But we know a lot more about machines today than we did in Newton's time. We know machines don't have to be rigid, they can be flexible, and we know that machines can be extremely unpredictable, even if only a small amount of information might be hidden from you. So I think we should reboot the clockwork universe franchise as the computer universe, and that's what I aim to do here. So to imagine the machinery of nature as a computer geek, as a computer programmer, I have one, I mean, if we're saying that the universe is not just a machine, but a computer, that implies one absolute requirement, which may sound totally obvious, but it actually matters, and that is that only the implementable can exist. We can talk about things that may seem like they make sense, like, you know, the paradox about the immovable object and the irresistible force, but, you know, if we actually sat down and tried to implement that, we would find out that either the object was movable or the force was resistible, depending on how we implemented it, and of course then there would be no paradox. So if we restrict ourselves to only the implementable, only the implementable exists, that's the price of admission to the computer universe. That leads to what looks like a non-secretor or concrete abstractions. You know, computer science kind of prides itself on being about abstraction, but really that's not just limited to computer science. Art is about abstraction, language is about abstraction, mathematics is about abstraction. There's abstraction everywhere. I think what computer science is particularly special about is not about the abstraction, but about making concrete representations, making mechanically operable representations of abstraction. So it's not so much about the real number, it's about the floating point number that can actually exist. Rather than thinking, oh my god, the floating point number is this poor approximation to the real, so we should think the real is this non-existent thing, which in some ways acts like these floats act. Alright, so to get started with that enterprise, what I want to do here in the first talk is talk about high dimensionality, because I feel like certainly in my own thinking through this, there's an awful lot of stuff where you get trapped in thinking about ways that makes sense sort of in the normal physical universe, the everyday universe that we see it, but don't actually make sense in the land of the computer universe. And then do a demo and then wrap up. So, okay, you remember the climax to Wrath of Khan, when the enterprise and the reliant are flying around in the space soup and trying to figure out where each other is. Spock talking about Ricardo Montalban says his pattern indicates two dimensional thinking. And Kirk gets this gleam in his eye like he just had the idea. And just full stop and jumps over to the command chair and orders the enterprise to go down and come up behind it and wins the day. So to me, this is an example of both the good and the bad about dimensionality. On the one hand, yes, we all can easily get trapped in patterns of thinking and think that we have exhausted all of our possible options left, right, forward, back and have missed something that in fact was there for us up down. And if we can think of up down, then we can, if we can break out of our mindset, then we can have success. On the other hand, to think going from two dimensions to three dimensions is this big breakthrough, you know, is a little bit low dimensional. Okay, so let's, the example I want to do begins with this. This, it's getting a little bit old now because I got it a couple of days ago. This is a hatch green chili from New Mexico, also called a big Jim. And I've got a few others that I bought at the store. This is a Fresno chili. I don't really know them very well. Whoops, a jalapeno, of course, and a habanero. And these are going to be my down to earth subjects that we'll make maps of, that we'll make spaces of. So now part of the idea of concrete abstractions is we want to stay, oh man, once you get the chili addiction, that is one great smell. Staying close to the real is a good thing that we, when we abstract, we have to pay our way and we want to do it. So it might be good to have the chilies over there, so I took pictures of them and we got them over here. Now the idea is we want to go all the way back to elementary school and we learned how to make graphs and work our way forwards again. So here, what can we do with our big Jim? Well, we can see how long it is. It's about seven and a quarter inches. We could compare that. The jalapeno is about three. The Fresno is about three and a half. Habanero is something like one and a half. So we've made a beautiful little bar chart here. It's a little bit abstract. I mean it's pictures now rather than actual, but of course even these things here are pictures to you and they're real to me. That's a topic for another story, but we could easily want to convey more information about our chilies than just their length. We might want to say, you know, how hot are they? How spicy? But now we can't really do that because we already used the vertical axis for stacking up our chilies. Well, we can abstract harder, take these chilies down to something more like a point, not really a point. And now we see that, you know, the chili is still around seven and a quarter inches. And its spiciness in these crazy Scoville units is maybe, you know, five hundred or a thousand or something like that. And we can do the same with the other guys. And, you know, this is interesting. They're sort of a kind of a relationship like the smaller they are, the hotter they are. You know, does that hold in general? No, there's exceptions, but it does hold often. I wonder why it's not our topic for today. But I have still more information I want to represent about this. I had to buy these guys. They didn't all cost the same price. So we get, you know, something like this, where you get this, you know, pseudo three-dimensional like it's going off in the distance. But this is like hopeless, right? I mean, so the hatch chilies were a buck a pound, the jalapenos were a buck a pound, the Fresnos were six bucks a pound, you know. But our data is now hopelessly all alias together. Is that a five inch Fresno now that was free? I mean, we could try to get like 3D glasses, right, and resolve this in depth. But then we're really done. And, you know, I've got more stuff I want to represent. I want to represent what color I like them. You know, I want to have green chili. I'm a green chili fan. State question in New Mexico is what kind of chili do you like? I do not want a green habanero. How much I eat in the period of time and so on. I can think of lots of things that I would like to represent about my chilies. We have to give up on the idea that we can represent these things as single coordinates in some integrated space. And just say what we have here is a bunch of dimensions where things can vary more or less independently along those dimensions, and we want to represent that. So something like this. The same dimensions we had before, except now, no pretense of them having a common origin or supposed to be in a single place. Now, one of the things that bugged me even when I was a kid and still bugs me today is, you know, these arrows. What are these arrows supposed to mean? You know, we say, okay, the length can be up to eight inches and then what? You know, they told us when we was in elementary school that the arrow goes on forever. It's like, ooh. But that's not implementable. And that's the kind of leverage that we get out of insisting on concrete systems. So that arrow can only mean a few things. It could mean that when you get an unbelievably big chili that you want to put on here, you're going to end up writing over some other piece of the graph someplace else and mess up somebody else's data. It's called a buffer overflow. It happens all day long in computers. It's one of the biggest source of security problems. Or it could mean that if we suddenly get a bigger guy that we need to represent, we're going to make more space and push everything else out of the way and let this thing grow as we need it. And that sounds better. But then that has a cost too, right? So now we get someone coming from the outside world saying, you know, hey, man, you know, look at this chili, it's three light years long and now our machine goes crazy trying to generate that much space and we get a denial of service attack. Or the third possibility is that arrow is just a lie. And in fact, if we got a longer thing that came in, we would either drop it on the floor or we would just put it at eight inches. And either way, it's now up to us, the guys who are making up this graph, to deal with the fact that the data is either missing or wrong. And fundamentally, it's not implemented until you've decided what to do about that. And when we say, oh, it's somebody else's problem. No one will have a last name more than 100 characters long or something like that. There's a name for that in computer system design. And when you do one of those things, you work and you say, I'm just going to hack this here. And really, you're not taking a stand on it. You're not saying I'm going to insist the name can't be more than 100 characters. I'm going to grow it if it is longer or whatever it is. You're just leaving it to the world. What that does is increases the technical debt of the code base. It's a great phrase. It's really true. And it means that now this code base doesn't work as well as it did before. It's more vulnerable to failing. It pretends that it works because it handles last names. But in fact, someone else is going to have to come back and find that later, figure out what you didn't do, and pay back the debt that you incurred. All those arrows are technical debt. I love my little button. So let's get rid of them. Now we've stopped the ends. And for this purposes, we're just saying, no, that's it. If you're longer than an eight inch chili, then we're going to score you as an eight inch chili, or we're just going to forget about you. Now, in order to use this and so on, on the other ones, in order to use this, we can't just put down one point, but that's OK. We can mark off on different, on each scale. So the seven and a quarter cost a buck a pound, best color from this green, I ate them a lot, and they're about a thousand on the Scoville scale, and so on. Now, you know, the Scoville scale is a crazy thing. Originally it was like, you know, you take the thing and you sort of mash it up and you start diluting it with water until you can't till a panel of tasters can't taste it anymore. It's a very approximate scale. And one of the things that, you know, a lot of this data, a lot of the data that we carry really isn't all that accurate. And even if it is, what we really want to do with it is often rather categorical, that it's either going to be red or green, the national, the state question of New Mexico, red or green chili. Is it too expensive to buy? Is it spicier, mild, and so on? So we can simplify this graph and also make it more powerful and more oriented towards what we want to do with it. Again, at the penalty, at the price of being a little more abstract, by replacing the scales with predicates. So now it's either spicy or it's not. It's either Dave eats a lot of them or he doesn't. It's red or it's not, and so on. And so here we have, for big gems, we've got 0, 1, 0, 0, 1, as the coordinates of the hatch chili in this little space. And now the great thing about this is that we can make spaces as big as we want, and they're really quite compact representations. So we can, you know, it's good to put them on burgers, it's good to put them on eggs, sure. You know, all kinds of things. Each of these is now a predicate that we're going to say yes or no. Now some cases they're going to be on the borderline and we're going to go one way or the other, and it might be sort of deceptive, and it's just like when you take a survey and you're forced to go into these little categories and you hate it because you think, oh, what there's, you know, you're really misunderstanding. If I say it literally true, it's going to mislead you. I like that. This is how we're paying our debt for having insisted on a two-way distinction right there. From the outside, we're going to say, okay, well, if it was misleading for you to say that you like red chili, because in this particular case, you know, like habanero, is this red or not red? Well, I guess it's not red, but it's not really green either. And when we get done, what we've got is this bit vector. So that's a 20-dimensional bit vector. The questions that we had immediately before it, you know, 001, 001, like that. A bit vector, a collection of zeros and ones, is a fix, a location, an address, a coordinate in hyperspace. And in principle, each of the bits in that bit vector can have some meaning, just like we saw here. That's the basis of hyperspace for us. So, in hyperspace, we can have many, many, many dimensions. The only thing that we don't want to do is think that it's down to one dimension or the other. Okay, that's what I wanted to say to get us started. The computer universe is about implementability, and yes, we can talk about abstractions, but we have to own the fact that when we're talking abstractly, we're incurring technical debt. Until that abstraction is cashed out some completely concrete way, it's still unclear how much we would have to budget. It's still unclear how much the idea would be worth once we did cash it out. And we're going to think of the entire universe as a big, finite digital computer. In the next part, we're going to try to actually do some of the mechanics of hyperspace and look at subspaces and so on. Our purpose here is to get at the high-dimensional thing. The takeaway is kind of a classical Newtonian, the clockwork universe, or at least Newtonian universe. It's very much in this open universe. It's this idea of, you know, here I am, and I'm sitting in this unbounded space. I can go up, down, left, right, forward and back. In the computer universe, the memory is huge, huge, and we can vary all of the individual bits as we wish to make our computation, but it's ultimately finite. So the computer universe is about the real, the finite. And, you know, it benefits. It's willing to abstract, but there's this value in staying closer to the real. All right. See you next time.