 The T2 tile project is building an indefinitely scalable computational stack. Follow our progress here on T Tuesday updates. Alright, so I'm super late today, again, as usual, so I'm going to really keep it short. I just kind of want to try to do two demos. So the goal for this week was getting ULAM running on the tiles. We kind of have that, and that's what I want to do the demo. Let me get these guys started booting up, and then we'll come back to them in a minute. So indefinitely scalable ULAM, what does that even mean? Well, folks who've been here a really long time, like in August 2019, in episode 246, we already had something like intertile events working, a single go west beam that went on a rental loopback and came back again, and did a massive .006 air, six milliair, but that's not even the point. The point was that trying to take that and go beyond that to not loopback, but between tiles and so forth, it was bug city. Ultimately, I was defeated. I was trying to take the simulator code and turn it in to the real engine, and I was unable to debug it. The whole thing was a mess, so stopped and went back to start over again with a blank sheet, and that's what the T2 native engine is. Doing just what the tile wants to do, rather than trying to retrofit what the tile wants to do into what the simulator, which after all was simulating nothing that actually existed. It was kind of just sort of, well, this seems reasonable. And so that took months and months, and it ran into bugs too, and we only just have gotten the native engine working. But in that process, we cut away all of the stuff that allowed the higher level programming language, the ULAM programming language, and the splat spatial programming language, which compiles into ULAM, all were taken off, because that was part of the simulator code base that I was not letting come in and affect the T2 native engine development until the last few weeks. And so now here we are. This is what it is. Let me see. So I guess here we are. We are looking at ULAM code on a tile on the Keymaster, as it may be. How can we tell? Let's see. You name Linux Beaglebone. Beaglebone. That's the underlying hardware that we're using for this thing. And there it is. And this is a version of the Swap line that just sell a beian that looks behind itself to see, do I have another one like me that's behind? That's what these lines are doing. If the event window, location seven or eight is occupied by one of me, then stay where I am, let the back man catch up. We've got some code to say if there's all empties on either side of me, behind, at me, and behind me, ahead of me, even behind me, if those are all empty, then I'm the last guy in the Swap line, and go ahead and stick a new guy in there. So the Swap line will grow north and south until there's no more room for it to grow. And finally, and then in addition, it swaps forward with what event window someone is the guy out of the West. So this thing is going to be a West going Swap line and so on. Now the idea for these things, the idea for physics on the tiles, this is new, this update, is there's a privileged element called S. Its name is S, its symbol is S, and that is recognized by the native engine as the start symbol, the seed. And when we say init, start up, init a debugging run, it's going to change into a real run. The name is going to change soon enough. It will automatically look for an element of type S and make one of them and place it somewhere in the tile where initialization was caused to happen. So what does the element S do? In this case, it just turns itself into an instance of Swap line. And that would be the typical thing. You always start with element S and when it gets an event, it does whatever you need to get the computation beginning to get the thing growing. So let's try it. We've got Swap line here. It's going to be incredibly painfully slow. So we'll just watch a little bit of it and then we'll branch away and then we'll come back. All right, let's get this guy back to sites. Okay, here we go. Physics. Now it says init debug, but really that means init physics, look for the seed atom and so on. It's blue because the Swap line actually says color blue. And here it goes. It takes something like three and a half or four minutes to actually run all the way through this. And you see it runs ahead pretty good on the edge. But as it works its way through the, in particular the T-junctions, you know, where three different tiles meet at once, that's the place that's most complex. There's the most contention for what's going to happen. That tends to lag back. But once again, once the line has become 45 degrees, everybody says, I need to wait. There's a guy behind me. He has a guy behind him and so on. So as the overall global backman manages to work its way through, the thing gradually goes along. Okay, so that is the beginning of the demo. Now the other thing I wanted to show you was back from before Ulam, this was something that I actually observed before last week's update, but I was scared and I didn't tell you all about it. But I want to tell you about it this time. I don't have a solution yet. So it's, all right, so let's listen to this dude. There's this weird thing that I've been observing since the intertile events finally started working and I even saw it before last week's episode, but I didn't talk about it. So I wanted to see if I could show you an example here. This is splits the end of the universe as we saw before. But if we look at it, it's quite weird looking. There's lots of areas that are basically empty and then a big clog location there, another big clog thing and a whole bunch of relatively empty spots around it. And I've seen this a number of times now and it's as if, like this tile and maybe this and this one over here are kind of jammed up, but they're not really jammed up. If we look closely, we can see things are still moving and in all of these we can see they're still moving. And the absolutely bizarre thing about all of this is that if I just switch what's the display, if I just go to the choice, the panel, the chooser panel, the global menu and then go back, look at this, watch this. You see it? Now it's all picking up again. One's around it, still kind of stuck, but now this one has been awoken. And we can do the same thing down here, jammed up, loosened up. And in fact, if we just send a command to the fleet, tell everybody to display their sites, say, take a minute to get out, look at that. Now that guy picked up, these guys picked up, they're all picking up. It's as if they get in some kind of wedged state where they're still functioning, but they're functioning slowly and yet just perturbing what software is running a little bit is enough to unjam it. So now over the course of the next 15 minutes or something, 10 minutes, we're not going to watch it. This will start to even out again and it'll start looking a lot more like the splits at the end of the universe that we were expecting. So that's it. I don't know. I have suspicions, something to do with the cash behavior, the internals, it seems unlikely that it would make such a big difference. I don't really know. We'll see once we have switched over to ULAM events, whether the same kind of behavior happens, but I don't know. I'm not even sure which way to bet. It depends on what the hypothesis is for the solution. So here we are back on our swap line. And it's managed to make it through this trip three-way junction and this one and this one is now kind of hung up on this one up here. And it's way slow. But again, this whole idea, this whole project, there's tons of things that we could do to speed this up once we get it to work, once we actually say, this is the kind of thing that actually can be delivered. These are the kind of failures like a tile going out or locking up and so forth that software is going to be able to need to deal with. Once we have an actual target line in the sand, then we can say, okay, now how can we actually speed this up by hook or by crook? In the meantime, I am just happy that this is working. This means that we can take ULAM code, we can take Splat code. I haven't tested that yet, but I have reason to believe that we ought to be able to take Splat code because it just generates ULAM code and run it on the tile. So here is the suggestion. Here is my request for two weeks from today. I would love to take a couple of ULAM, if people have it, or Splat, just simple little ideas, simple little rules that could be variations on fork bombs or seeds or anything of one sort or another that people might be willing to put together, put in an element S that starts it off and will try to run a couple of them, starting like a week from today, maybe a week Thursday, something like that. We will try to run two or three of them like a day each on the current grid, the one and three quarter power zone grid and see. So if you have got any Splat, if you have got any Splat in you, I would love it. Come check in at the getter.im slash t2 tile and get me some code and we'll have, hopefully, a genuine indefinitely scalable ULAM Splat t2 demo scene two weeks from today. So we're going to watch this to the bitter end, I guess, had to do extra work to actually get the swap line to just march off the end of the universe there. It actually, the first version I did, just hung up and stopped there, but what we really want to do is have it go by. And wow, is that what I expected? We got this guy chopped off. We got this, both guys chopped off. I'm not sure why this guy isn't still advancing. It looks like a bug. Okay, the ULAM code is so simple. It can't be ULAM's fault. It can certainly be the fault of all the code that I put together to get the event system out of the simulator MFMS and put it into MFM t2. Have to look into that. Well, there's your live demo for you. Step by step, I feel like sort of, you know, getting bigger chunks of progress now. And that's exciting. Thanks for checking it out. Hope to see you next time.