 The T2 tile project is building an indefinitely scalable computational stack. Follow our progress here on T Tuesday Updates. So I made up a name for these guys. I call them the face plants. They don't really move around. They can move, but they don't really move around very much and they reproduce by seeding, so they're like plants, so they're face plants. But these are obviously different. They're all puffed out. They're like Venetian blind face plants. And that's what I want to talk about today. And so we'll just get into it. So a week and a half ago, I just had a random idea. What about diffuse plates? You know, I've been thinking about the fact that these things are so solid, you know, they completely fill space, which is useful because they have all this great redundancy. You can look at any site and tell exactly where you are relative to the entire plate. But what if, you know, they had some space in them? And it seemed to me that it could have some, you know, and the idea was I've actually used it before, that in the 2D printer way back when, when it's sending a tecton through, it was a swap line back then, but it was, you know, morally a tecton, when they were sending it through to pick up the next line to be copied in the 2D printer, they had to actually open up two lines in the object, one for the tecton and one for enough space to carry whatever line they were picking up. And so they would open up two lines, go through it and close it behind. And I started to think, wow, you know, just like I originally, the original idea of plating was just a temporary scaffolding to be used during reproduction. And then it produced the idea of plate tectonics, which has been very productive. And I really think it's going to stick, you know, the plate tectonics, the basics of size and position of the plate in each site. I could easily see that ending up getting some hardware support earlier rather than later. And then I started to think, well, maybe that's the same thing about this idea about having, you know, extra space between the plate coordinates, that maybe it's worth keeping it around rather than just having it as a temporary thing in the process of copying. So I started to explore it. And, you know, if we did that, then it would be possible to take two plates and have them like intersect with each other. And we could use it to make a crossbar switch, a particularly kind of networking signal routing switch called a crossbar could do neural net weight matrices could do lots of things with it. So I started to explore it. And so now, you know, plate the basic API application program interface for the plates now has a method stride returns a 2d coordinate saying how far you move in the x coordinate to go from plate to plate and how far to plate site to plate site and how far you move in the x in the y and x and it defaults to one by one, meaning the next event window coordinate is the next plate coordinate, but it doesn't have to be and we're now supporting one or two stride in each x of x and y for four combinations all told. So, you know, you got like a three row a three column by four row plate, which is now on a stride of two to meaning it's every other position in the columns and every other position in the rows. And, you know, I finally settled, you know, let's, I finally said, let's pound out the notation. And so I took what I had actually done in the T Tuesday update, you know, what a month ago, two months ago, she's square brackets for the size of the plate parentheses for the position of this particular site within the plate. Now we've got curly brackets for the stride of the plate. And so here is a stride one plate. It's a three columns by two rows. It's one by one. And so this guy is being is zero zero on the plate all the way down to two one. That's the maximum position for a zero base thing. But we can also, whoops, we can also, where is it? Here it is. Here's a two one plate. So same thing three to but two one meaning in the in the horizontal direction, the x direction, it's skipping every other position. And that's what we were seeing in the opening video, we're seeing face plants that were on two one strides to two strides, just completely, you know, spread out. So that meant, you know, of course, everything seems so simple when I first think about it. And then actually, as I start to develop it, you know, what about this? What about this? What about this? So now one of the things is what about plate relations? It had been so nice that between any pair of plate sites, you had these very simple relationships, they were on the same plate, a contained B, B contained A, they were siblings, or they were overlapping, neither of which contained the other, which is still the case that we're declaring overboatin that, in fact, the code that I typically right now, if it detects the overlapping, it goes ahead and try, whichever plate detects it tries to tell the other plate to kill itself, whether that actually happens, who knows, but we're saying that having the clear, you know, good fences make good neighbors having the clear spatial hierarchical structure is so important that, you know, violating it is, is like a security problem. And it's very, very natural. Anyway, the point is, is that now with stride, there's additional cases, like what happens if this plate and this plate, you know, they all look, everything's all fine, but they have different strides. I went through a bunch of cases of possibilities about how they could possibly relate. Finally, I just said, well, heck with it, you know, if they're not the same stride and in sync with each other. And if you ask for a relationship between them, you get interface plate that they're just, you know, coming from a different reality and what you want to do with it, it's up to the caller. So, and here they were. This is a over here is a one two plate. Here's a two one plate. The other ones are one ones. Here's a two two plate and the process of growing. And, you know, it started to work. It was pretty cool. Now, one of the things that I tried to wanted to do with this is that, you know, so if you imagine a two by two plate. So now you've got a plate site and then an empty and then a plate site and empty and also vertically the same thing. So in a sense, each of the plate sites is part of a little group of a two by two group of event window sites that are sort of all it's. And so that was this idea that maybe you could have different phases within the stride. And I thought, wow, geez, that would be really cool that, you know, I'm trying to do everything stigmurgically trying not to use internal state wherever I can, but instead change the configuration out in space in a way that suggests what should happen next. And so one of the ideas was, well, suppose we could take like a two by two plate. And when we're trying to make it move, instead of actually having a big heavy clunky tecton go through, we could just have it sort of squeeze into its adjacent spot within its little two by two and let that be a stigmurgic signal that it was supposed to go on to the next one. And so something like this, it pushes it over and then hops over it, it pushes it over and then hops over it all the way down. And it's recognizing it because it's seeing something that claims to be the same size and position it claims to be a consistent plate with it, except for the fact that it's off by one. It's been phase shifted. And, you know, I spent several days trying to get this kind of phase shifting to work. And this thing just heads off to the races. The next attempt just started duplicating things and so forth. And I never got the phase stuff, the phase signaling to work. That doesn't mean it couldn't work, but it did drive home that you really need to be very careful about, you know, by having the stride be fixed that they'll be able to do. The whole plate is a one by two plate or whatever it is, that you know you add two in the horizontal direction, two in the vertical direction, you'll find the next one. And you can double check by checking its position and you know what it's got to be. If it's allowed to move around within the phase, then you actually have to kind of search, which is a good thing. Well, I was going to say it's not a bad thing, but actually I think it's a good thing, except not necessarily in this case, because it was like everything was getting ambiguous. And you know, my feeling now, this is this is one of the reasons why building a whole new stack takes time, that you know, I bet there's a way that you could do what I was trying to do with the with the phase shifting to make little signals and stuff like that. But I don't understand enough about doing stuff with strides and variable strides. And what do you have to hold on to? What do you have to get you confidence? You know what's going on. So that now you can start doing variations against that confidence. I didn't have enough confidence. I don't yet. So for the moment, the whole idea of being in the wrong phase of the same thing that we're not just not doing that. So if you're a two one stride, everybody is expected to be every other column and every single row and so on. So this was me trying to debug it, you know, with a guy squeezing up from below and squeezing down and so forth, could not get it to work. So eventually I fell back on the color plates. And there they are, you know, these are, there's a two one, there's a one two, there's a two two, and so forth. Now that created other problems like so two two, that that's the biggest one, the lowest density one. Now the idea of a plate that had an operator, we were reserving one one to be the operator site so that it could easily talk to the root and they could interact and it could issue commands to the root and so forth. Well, so now what do we do if it's a two two plate? So initially I said, well, you know, we'll stick with one one in event window coordinates and have the plate sit there. The reason I wanted to do that is because the window is really small. And if you moved it out to one one in plate coordinates, it would be way down here, and it would be one, two, three, four, it could barely reach the root. And you know, okay, what are we going to do? So I did this but it had consequences to eventually so I started getting tectons going, you know, in the first tecton I did it didn't respect the stride. So I thought the plate was four highs or it made four tectons got that fixed. So now the tectons copy the stride of the plate that they're moving. And that moved through. But then the plate operator didn't get moved because it's not part of the plate. So I went around and around on various ways to deal with this. And I do think it's important for the operators to be able to take care of themselves. And I did that for this thing. So you'd see this comic a little thing that, you know, the plate operator would discover that it was out of position and it would scurry to get back in line. But it was still running into all kinds of trouble and it could get left behind. So eventually I said, well, no, let's let's break down and see there is it's it's in two one now in event window coordinates and it's not even in the plate at all in plate coordinates. A second problem by going to a bigger stride is that you can't reach as far in terms of plate coordinates because they're farther away. The event window doesn't get any bigger because you're doing a two by two stride. So this was an example that was already a problem for the face plans that the CS is the the sub plate operator the one that release the coordinates popping out the left eye in the mouth and the right eye and having them all be maintaining relative positions and sizes in comparison to the overall plate. When it was trying to put out a left eye or a right eye, whoops, it wanted to do a three by three sub plate, but that didn't fit in the event window. So it actually did this incomplete sub plate and then counted on the sub plate for the eye or the mouth to heal up later on. And this guy and you know, and this is when it was placing it just one away as if the stride was one one, but it's not. So in fact, the upper left hand corner needs to be all the way down here. And again, it can't reach very far. Now, you know, you could say, well, then you shouldn't be doing this higher strides. And maybe that's true. But it went back to an idea that I had mentioned before the idea of talking to yourself when I was trying to do the construction arm, which I still hope to cycle back to, but I have no progress to report on that. That I wanted to send a copy of the transport operator to the far end so that you were actually talking to copies of yourself and you were forming sort of a little distributed you that each side knew which end of the line it was at. Well, I use that here. I had the sub plate operator since it couldn't reach far enough to deploy the plate it wanted to. It deployed one of itself. And with that one was flagged to say it was supposed to do it. So here it was. Here's a signal coming up that's going to say it's time to release an eye. And there it is. And the way it does it, it releases another sub plate operator that in this case is flagged to know that its job is to do the release the sub plate. And so it does a sub plate. Now, that's in a one by one stride, but that works in all strides because you only have to be able to reach to the next one to put down the thing. And so there it is. We've got these. Low density, crazy plates that as we saw in the opening video they can they can get inside of each other and one plate can grow next to each other and so forth. It's wacky. And right there it was that we saw it. Now, there was this basic point though that where is it? Here we go. One of my concerns about the solid plates was that, you know, eventually plates can only be so big because they only have so many bits for coordinates for where they are and how big they are. So eventually, for larger scale computations, plates are going to have to be interacting with each other. And if they're completely solid, then they can only interact on their edges. They can send, you know, messages back and forth or talk directly across an edge, but that's about it. And that's that's linear, you know, two times width plus height. That is the amount of interaction between one plate and another. But with stride 2, 2 plates in particular and the other strides, you can actually stick plates right next to each other right inside each other and get a full the entire plate interacting with an entire other plate. It's very powerful. And so that's why the crossbar was an example of something that I wanted to try to implement. That's what I implement. I just whipped it up. All right. So I've got my crossbar. Yeah, I do put it up in the corner. And so whoops. All right. So it's a little too big. So this is two plates that are interleaved. The XO plate is the switch output. The XI plate is the switch input. And we can send data. We've got blue, blue data. We can stick that in, stick one of them in, and it gets propagated down the input plate until it gets to the correct position to be routed to the output plate and then sent out. You know, we've got red ones too. Where is it? There it is. So if we get red ones, red ones start at the near end, blue ones go to the far end. We can send bunches of them and so forth. Now that's the whole point. This is an N by N crossbar. So there's N squared places where an XI and an XO are adjacent to each other. And that is the switch for that pair of couples. We can make a generation, just stick a whole, you know, go ahead and generate a bunch of them. Well, what the heck, we'll just fill it in. Whoops. Empty here. Clean that up. And another thing, you know, it's just a lot of fun that, you know, by the way we're designing stuff so that everything builds itself, everything heals itself, at least, you know, in simple cases. That, you know, I can just draw this stuff and if I miss, I just erase it and everything gets taken care of. I don't have to worry about it. You know, this live editing of Sheenery is, it feels like the future to me. Just like surgery, just like doing medicine, you know, where there's a problem or just like kicking a mechanical device that isn't working right, maybe can jar it loose. It's the same sort of thing. I mean, you know, here we can actually even, you know, fill in multiple input rows. Oops, I blew it again. And start really pumping these things. Now, you know, half of my data emitters in each case are not doing anything because they only emit into empty spots. So all the ones that are next to the XIs, you know, you get the idea. This thing is getting pretty full up. So crossbar, a crossbar switch that is, you know, pretty inherently tough. If we make a bigger, you know, if I erase, whoops, I did not want to do that. Let's erase stuff. There it is. The switch heals. It's a self-healing full crossbar switch implemented in software on top of the movable feast machine substrate. It's pretty cool. Because it's software, you know, we can, we can change size of these things. Let's make an X2. We can make a bigger one. And how much I've got right there. It's like I got some of them right anyway. And I won't take the time to clean it up, but you get the idea. Now, you know, is it clear that you really want to have a full end-by-end crossbar in this kind of computational setup? Well, maybe it really isn't that, you know, when we're building a system, maybe what we're really going to have is sort of a handful of point-to-point connections between subsystems that are working together to do some bigger thing. And it would be smarter to build point-to-point connections between them because we can do that sort of thing. And, you know, you're tempted to go for something general, like a full crossbar switch, when you don't exactly know what the routing is wants to be. And that's really flexible. But we have alternate ways of being flexible, like tearing down existing machinery, rebuilding machinery to do something different. Maybe we don't actually need to spend the area, the real estate to build large end-by-end crossbars. But the point of the demo is it shows how we could, and it shows how we can have quadratic interactions. Two plates that are touching in all of their sites, essentially, N squared sites. And, you know, couldn't we have just made a single new kind of plate that did both the input and the output stuff? Or, but what we're trying to do here is to build basic spatial layout principles that we can then reuse, like pull one plate out and put another plate in its place, and get a different behavior without writing new code. Step-by-step. All right, so that's pretty fun. Quadratic plate interactions. Self-healing crossbar switch, I like it. All right, so just to, you know, the insider's report is utter failure. The constructor arm, I haven't given up on it, but it also, it feels a little bit like doing the crossbar switch in the sense that it's kind of sort of imitating traditional deterministic computation, which is maybe not the way we really want to do it, but it's useful for understanding, you know, points of contact, simple points of contact. I have not revisited the T2 tile debugging. That's going to be a big load schedule, a chunk of time for that. But this time, what I'm putting myself on the hook for is a take care of cleaning up the infrastructure, putting off a bunch of stuff that I've been putting off for years. In particular, this whole workstation setup that I use to do all of this that is, you know, it's pretty well dialed in or more or less. And I haven't wanted to touch it, so I'm running Ubuntu 16.04, that's a five-year-old operating system. I'm going to tear this thing down, I'm going to rebuild it, I'm going to deal with all of the stuff that's going to break. And I'm going to work on the biological distributed algorithms workshop. That's going to happen after the next update, but it's going to happen fairly quickly after the next update, so I've got to start working on that. Building a whole new stack, a lot of it is, you know, springing the design bear traps, just finding out what's out there, doing the simplest thing possible, getting comfortable with it, circling back around. This is still getting comfortable with what can plates do, step by step. I'm feeling kind of excited about it. Hope things are going well at your end. Thanks for stopping by. I hope to see you next time.