 The t2tile project is building an indefinitely scalable computational stack. Follow our progress here on T Tuesday updates. It's been a month. Lots to talk about. Let's get into it. I'm going to try to go really fast. When we left off last time, Luke and Dennis had volunteered code to try to run on the grid. And both of their codes had revealed bugs in my code. And we had fixed the one that Luke's code revealed. But we were stuck at the time that we made the video on Jacob's Ladder. Sometimes it would work fine. It would send out these two red rods and then have these blue electric arcs going between them. And other times, bang, we had gotten it down. It was the place that always scares me the most, which is the intertile event stuff, the views that the tiles and the neighboring tiles think that the other one has gets inconsistent. And one guy thinks this thing is still in use. The other guy thinks it's free, or vice versa. And bang, and that's what we were facing. And after a month ago, I was able to run it down, and luckily it wasn't too bad. And so where it came from was in the Splat language, which is what Jacob's Ladder and the Sandray and all the ones that we've looked at from Luke and Dennis are written in. You have a sequence of rules. And the way the language is defined, if none of the rules match, if you get all the way, you know, you try the first one, you try the next one, and as soon as you find one that works, you do it, and then you're done. And then when you come around, next time you do it again. And if you get to the end of the rules and fall all the way off the bottom, and none of them matched, the Splat language declares that that guy is to be erased, that that is just another way to say, replace me with empty. And that's what was happening here. So in the Jacob's Ladder, he's looking for, the at sign is the Jacob's Ladder piece, looking for a empty spot. And if there isn't an empty spot, this unfortunately down here is the cursor. It's not another rule. There's nothing to match. So it fell off the bottom, which again, completely fine. But the way it's designed is the reason that that spot gets set to empty if you fall off the bottom is because the internal engine, the Splat engine throws an error and says no rule matched. And the response to getting an error is to erase the spot and move on. But the engine wasn't working that way. Instead, they had code that said try to execute the event. So all of the Splat code was happening down inside execute event. But if it returned true, then everything went on about it. But if it returned false, meaning that something had gone wrong, then it did a separate path and that path was wrong. In fact, what it should have done is just go ahead and execute the event either way, because everything was handled inside. So since I went through this whole just kill center and commit that, it caused the active side, the one that was doing the event to finish up and clean up without telling the passive side, the one on the other side that this event was now done. As a result, the next time this guy tried to use that same event window number on the passive side, it blew up. So that was now fixed. And so Jacob's ladder and Dennis's other one, a lighted pyramid that we didn't even get to look at because it had the same kind of issue. They now both work fine. Here's a pyramid growing on my desktop. Here's a couple of them growing on the bigger grid. A bunch of them in progress. It all works beautiful. Unfortunately, I don't have video of these things because the blue and red lights twinkle on the thing like a big old pyramid Christmas tree. So progress on that front. In the chat room, AJ has started exploring the possibility of making a low-level assembly language for doing event window programming. Luke is also helping out in that. It's very, very early, but also very exciting, very cool. And starting to build out possible documentation, instruction formats, and so on. So there's a number of times that one super wonderful outcome, if we could actually get to it, of the T2Tile project and this larger research project in general, is to come up with a new instruction set architecture where hardware could say, I'm just going to implement to this instruction set architecture. And software could say, I'm going to write code to this instruction set architecture. But instead of it being the traditional thing defined for CPU and RAM, it's an instruction set architecture that's designed, bent, optimized, robustified for best effort computing. So again, this is just an early, early step, but it warms my heart. The history video, yes. So this past month in February, I also had agreed to do this 15-minute history of computer science. Originally, I thought they had said in the spirit of a drunk history, which I had never seen. And I watched one or two of them, and it's like, no, I don't think I can do that. But later ones were talking more about John Oliver last week tonight, and that's the way I tried to go. And that happened a couple of weeks ago, Friday, February 19th. And so I had this 13-minute, well, 15-minute slot. I did 14 minutes, whatever, in a video. It's now up on the Dave Ackley channel, and doing okay by Dave Ackley standards. It was very scary because, you know, sort of trying to make actual, like, sort of official jokes, I don't feel all that comfortable doing it. I mean, I don't know if anybody really does, but, you know, it worked out however it is. Did any of y'all see it? You know, I'd say be gentle, but I'd rather you be honest. Okay, and so that was that. And I put up Hugh Jean, the ancient co-evolutionary simulation from 2003 originally, now transferred to the tile. And, you know, it really looked pretty good, and it was fun to see it going again. And, you know, it's done fairly well, again, by, you know, T2 tile project standards. You know, doing number one is, you know, like 200 views or something like that. But 8% click-through rate. Oh, that's great. You know, apparently you need to get 20%. And then that's when you actually hit the big time. We're in the small time. So that's cool. And I also released another one. Don't cross the streams. Just about a half an hour ago, as I shoot this because I'm so late. Just playing around with swap lines. And I feel like, you know, got a pretty good chunk of dynamics out of it, out of a fairly, fairly small idea that, you know, don't cross the streams. So what happens when you do cross the streams? You create a new guy that generates streams. And, you know, I put goofy music with it and so on and so forth. So, you know, now there's a new playlist, the T2 demos playlist, because it's got two whole videos on it. And, you know, we'll see. All right. Yeah. And there it is. There's our lonely being shooting swap lines off into the wilderness. And it sort of had driven home to me that, you know, if you send swap lines out in all directions, it actually pulls anything that's out there towards you. It really is a tractor beam, which I always sort of wondered, how the heck could a tractor beam actually work in Star Trek? Well, here's one way it could work. All right. On another front, I've been evaluating, trying to figure out how we're going to shoot half-decent video of the grid, especially as the grid gets, you know, six times bigger than this is now. I tried. I got one of these cameras, this Mocos, Mocosi, who knows, like that. You know, here it is. And I've been experimenting with it. And so, you know, there it is. And in fact, the Sand Rain time-lapse, I recorded on this thing. And, you know, I'm still trying to learn how to use it. You know, when I was looking at the, Don't Cross the Stream stuff, I was getting this crazy, like, you know, this looks sort of out of focus in general, and it is not focused very well. But the blue is like so much more out of focus than the red. How is that even possible with a single lens? Well, it turns out that setting, doing the white balance, which is something that I've never really knew a whole lot about, doing it manually and turning the blue way down, looks actually get sharper pictures and so forth. So it's starting to look like this camera, you know, is like $150, $160, something like that. Wouldn't, probably wouldn't be big enough to do the entire thing, but might be able to do a chunk of it in some sort of tiled configuration. So that's one path that I'm exploring. The other path is, you know, get an incredibly expensive multi-thousand-dollar camera which has, you know, a 50 megapixel sensor and can do 5,000 by 3,000 or whatever it is and just shoot the whole thing. We'll see. That's down the road, lots to do before we get, need to pull a trigger on that. So, yeah. And, all right, so that's it. And the one extra thing that I wanted to talk about in a little bit more detail is the common data manager because there's, as the physics, as I'm recompiling all these physics, coming in from other folks as well as my own, it's taking distribution over the CDM is more and more significant to my own workflow. And it had some problems. The existing system had some problems. Cdm slash common, that's the name of the directory, the folder where all the CDMs go. One, two, three, four, five, all those things, those code numbers, those two digit code numbers are the slots, the 516, 520, those are the timestamps. So a slot and a stamp tells us a specific moment in time for a particular piece of code. And O2 is the T212 infrastructure package. So it's almost two megabytes. O3 is MFM, which is, you know, much bigger, it's the biggest one by far. But it was O2 that was particularly bugging me because included in the O2 package is the very low level assembly code Linux kernel module stuff that whenever that low level stuff gets reinstalled, I have to reboot the tile. It's the only reliable way to get everything all in and get it set up properly. And that was, you know, cramping my style. And so finally I pulled the trigger and said, well, why don't I reorganize that whole directory and try to get rid of that O2 slot and make it unnecessary. And the way it works is, you know, each slot and the file name has the number in the file name. And then in a piece of the CDM code, it has a map that says what we're supposed to do. O2 is supposed to go into slash home slash T2 and so forth. And that's a robustness feature that the code that says what to do with the CDMS files is not in the CDMS file. We don't trust it to tell us what we're supposed to do. It's in the code that we have. Now that came by a CDMS file too, but it was a separate code. And there it is. So for O2, we have to reboot after we do the install. And, you know, here it is. The reason I had all these subdirectories, app stocks, and so forth. So I went back and I did a major refactoring, which is mostly done, but not quite completely, to break it down into smaller CDMS instead. So now we have base CDM low and MFM. And low is the one that has the Linux kernel module on the assembly code. So if we reinstall low, then we have to reboot the tile. But if we do the other ones, if we distribute CDM, all we have to do is restart CDM. If we distribute MFM, all we have to do is restart the engine and so forth. Now that causes four new packages O5 through O8 for each of those individual pieces. And in fact, we can distribute them individually. And it works pretty well. There's a slash low. That's the one that's going to have to have reboot if it happens, but we haven't done that yet. Now, as we've been doing this, so A0 through EF are the physics packages. The things that say I have an element of Swapline, an element of Dreg, an element of Res, a physics is a complete collection of types of atoms all put together that are meant to play together nicely. So A0 is a collection of atoms, A1 is a collection of element types, and so forth. And now that we've got so many of them, the way that CDM was doing distribution was really becoming painful because what it would do is it would just pick, it would look at all of the CDMs that it's got internally, pick one at random and announce it to the neighbor and say, hey, I've got this, here's the date, here's the length, do you want it? And when there was only a handful of CDMS files, it worked fine, but the more you get, it gets slower and slower and slower and there's more and more and more stuff saying, yeah, I got it, I got it, I got it, I got it. So I finally pulled the trigger on that and went back and redid that as well. And there it is in the configuration file. Again, everything from A0 to EF is a physics slot. And so there's a new package now within the CDM code called urgency whose whole job it is is to figure out what we've got, what we think they've got, and then say which thing would be smart for us to announce. And so it's got all these things like I just announced to, so we can record the fact that we told someone, in the original previous version of CDM, we never cared what we said to anybody, we just picked at random, which is really robust because there's no way that we will fail. We can't get messed up. We can't think we announced something if we didn't. If we just picked things completely at random. So this, by making it more efficient, is also making it more fragile, but we still have a backstop that all the way down at the bottom, if none of this other stuff comes through, it'll still pick at random, but now that'll be even slower. I just announced to, they just requested, when they ask for something, then we know something that at that moment, they would like to have as of this. Now, I now think they know what I know, what I think they know. It's one of these logical paradoxes of, I think he thinks that I think that he thinks and so forth. It all boils down to get urgency, which is the absolute bottom line key. And urgency is based on two factors, a time pressure and a size pressure. The time pressure is, how long has it been since I mentioned this particular slot stamp combination to this particular neighbor? And the longer it is, the more the time pressure goes up. It's not how old the package is, it's how long has it been since I mentioned it to them. And the size pressure is, how much more do I think I have of this file? Because this is all pipeline. I may not have the complete file that we're talking about. I may only have 30% of it that I've actually been able to check some and believe that the crypto is good, that I can go ahead and redistribute this before I even have the whole thing. So our lend is how much of the file, the thing that we've got, their lend is how much we think they've got. And the more that we've got compared to them, the more urgent it is. And so the urgency overall is the product of the size pressure times the time pressure. And it's still, so this is now distributed, this is now out there. So here it was when I had to put out, so when I had the whole T212 reorganization, I had to use slot two and there it is. Again, going out one more time, 163K, and it's only got 8% gone because that was the only slot that existed. The five through eight didn't exist until this update went out and updated MFM and so forth. But now it actually works really good. So here it is a chunk of action shot on the grid when we're distributing six different physics files all at once and they are moving. And so that took a bunch of time, but it was pretty satisfying. And here's another shot of it. So that's it on the CDM. And so going forward, now there's a lot of stuff going on still that's getting in the way of hacking on the engine and doing all this kind of stuff. It's just that kind of year. Well, that kind of season at least. And so number one, the artificial life conference, the 2021 artificial life conference deadline is coming up in a week or two. And so I'm not even sure if I'm going to submit. We shall see. I'm working on it. We'll see. I don't know. But once again, is this the third time I'm going behind the wall of science and I'm doing this stuff that I'm not telling you all about because it's supposed to come out in the conference for the first time if it comes out anywhere. We will see. So that's happening for the next couple of weeks. And also I promised the next Hyperspace Academy lecture in January over on the Day Back of the Channel. It's now very late in January. So but there's a lot of progress on that too. That's the we are coders. This is my rant about a way to look at humans and living systems in general and interpersonal relationships and so forth. I mean it's easy to get cosmic about this sort of thing but I think the we are coders approach actually has some pretty good stuff. I mean it's all stuff that's covered in other ways in other degrees. But this feels to me because I'm a coder fairly clean and fairly simple. So I'm going to be working on that. So I have no idea what I'm going to be able to talk about on March 16th. But I will be here. I hope you will be here. I hope things are going well for you. We'll talk again.