 The T2 Tile project is building an indefinitely scalable computational stack. Follow our progress here on T Tuesday updates. Welcome back. Our top story is this time, well, we've got people working on the roof next door. So if you hear some tromping, crunching noises, I'm sorry, the studio is not quite as isolated as one might have hoped. Beyond that, lots of news. Oops, let's get this a little bigger. All right. The Living Computation Foundation. Last time we looked, we had gotten the website up, we're getting PayPal donations. People were buying Living Computation Foundation nerd numbers. The 220 series is now done. The 210s and 220s are out there in the world. It's up as 230 for whoever comes next. We had this problem that we had not quite gotten our non-profit charitable organization status so that if we ever have a larger contributor that they would not be able to use a tax deduction for this. But we now have a product. We received our IRS determination letter saying, indeed, we determined your exempt from federal under... So this is what we were waiting for. We've got a new reworded financial support statement telling us that your donation is fullest extent of the U.S. tax law, whatever it is, differs from place to place and there's a lot of weird little asterisks that I only sort of understand some of, but this is part of the reason to get going and start to understand all this and so forth. And our EIN, our tax ID number is there and if you click on that, it takes you right to the IRS search site and there we are. So that is some progress. On the artificial life conference, which is coming up in about three weeks, so there's going to be one more T Tuesday update before the conference and then that's it. So we've got two things happening there. We've got a tutorial on Splat and Aleph. That's an hour and a half and I'm just going to try to make up some lecture and get some examples and try to pull some material together for whoever might show up. I mean, with everything being online now, I'm not entirely sure how it's going to work. I mean, it's going to be on Zoom, I guess, and exactly how the access control is done. I don't know, but my understanding is it's all going to be recorded, so it'll be available afterwards. In addition, so there it is, that Monday, July 13th, four o'clock Eastern time, the tutorial on programming soft artificial life with Splat and Ulam. In addition, the new research that I submitted an extended abstract for was accepted for a lightning talk, which two years ago in Tokyo, I did a lightning talk and it was eight minutes long, plus questions. Now they are five minutes long with no questions. There's actually a merged question period at the end. So this is going to be at two o'clock Eastern time on Friday. So we've got the tutorial on the Monday at the very beginning of the conference. We've got the lightning talk very near the end of the conference, although the conference goes on until Saturday this time. But there we is. And again, that's probably going to end up being involving a lot of video stuff as well. I'm not entirely sure. So that's all coming up. And so here is the paper. So again, it's an extended abstract, which is just two pages. There's nothing to it. Best effort computing with spots and spatial threads. Spots are stage priority operation teams. I'll talk about this after I present it. But you know, here it is. It's out. I spent two or three days over the recently just last week. The end of last week, cleaning this up, getting better references and so forth. But spatial threads is our good old friend, the Swap line that we talked about a long time ago. It's already been mentioned in a couple of papers. The idea that if you have a bunch of guys that are moving horizontally or in this case horizontally because the line is going more or less up and down. And if they're designed so that they only move when they can see guys next to them, if the guy, if either one on either side of them is already behind them, they'll wait. So that gives you a little bit of synchronization so that the whole line can kind of oogie its way forward without having to literally be synchronized, kachunk, kachunk, kachunk. So this green guy passes right through the little zero and moves it one square in the opposite direction because it's swapping each thing as it goes. These are the basis of this idea of spatial threads that we're going to try to make computers, computational processes that work by extruding these threads that then sweep over the data and search or count or select or do quorum sensing, who knows, data reductions of various sorts and then they go wherever they need to go and they take the answer and they pass it on. That's what the paper is about. That's what the Extended Abstract is about. Got a lot of little demos. The software will be on the GitHub in the Spot 1.0 repository as of the time of the presentation. So that's coming soon. In addition, yeah, people, long-time viewers, you know, I talk about the ribbon cables that they use for the loopback to talk to each other and there's the ethernet cables that you can plug in the side. One that I don't mention that much that's really important is this thing that goes in the side. The serial port, the absolute lowest level base way to get into one of these things. And the good thing about the serial port, unlike the ethernet port, is that you can access it from the front. So even if you have an ocean of tiles, as long as you can get to the front, you know, any possible way, if it's really an ocean, I don't know how you'd get to the middle of it without doing some kind of mission impossible, hanging down from something and so on, you can plug the serial port right into any of the tiles in the middle of the grid. But I made this little hook to make it easier to tab to put it in and out and, you know, there's another picture of the tab, the plastic thing that goes in and that's what happened a week and a half ago. The tab busted off because I was doing all this debugging where I was constantly moving the serial port from one tile to another to see what was going on and it couldn't take it. So that was an excuse to take a few looks at it. There it is. And then PLA and this little neck right here is what snapped off, I just didn't have that much support. I'm also a little concerned that PLA seems to kind of get brittle over time. Is this a known thing? Do people experience that? I've since started switching to PETG for a lot of stuff and it seems like that's quite a bit tougher. So I thought it'd be a good opportunity to do some PETG serial port brackets. So this was the original design. I said, well, you know, why don't we thicken it up? We put more material here and so forth. So I did make quite a few changes. Here's one of the early ones done in the PETG, still using just the captain tape to tape on the actual seven pin connector rather than trying to actually glue it in just so that it's easier to replace as I just did and that worked pretty well and I started getting greedy saying, you know, maybe I could put a little overhang here. That's where the wires go through and I could use it to, you know, hold them in a little bit better. I printed up a plate of them. They worked pretty well and there's an example of one of the men's got a lot more plastic in the where the stress is the interface from where you grab it with your fingers down to where it holds on to the thing. It's working fine. So progress there. So wave particle duality, what am I talking about? I mean, you know, I don't even really pretend to understand quantum stuff. But you know, there's a there's a view that, you know, if it isn't math, it's mere metaphor. So maybe what I'm talking about here is mere metaphor, but I'm not sure it's really true. But I can I can reduce what I was trying to say to a simpler term that as I was debugging all of this stuff and I was talking about, you know, I could get inner tile events working as long as there was just one atom so that they could negotiate and say, yes, I allow you to go to that space. Okay, here's the changes I made. Okay, I see you made those changes and so forth. I was getting that working. And you know, of course, that's the easy part. Well, it's an important part of inter tile events, but it's kind of the easy part because it doesn't deal with the racing that the multiple sides might be trying to have events and empty spots don't have events. So if there's only one particle in the entire universe, there shouldn't be any possible races. So, yeah, so wave particle, you'll see what I mean in a second. This is the point that I'm debugging this thing. I've got one atom. It's winding itself around and, you know, bouncing off the walls and changing direction because that's the thing I've been using to debug. And the stuff crashes. The code locks up, you know, another one of these that like I was showing the last time, but this is after I implemented a bunch of stuff and it was getting into a weird pass that it actually wasn't supposed to be getting into. And in particular, it was having races. So, you know, I actually had managed to solve this and it was, you know, using the new trace files that end up part about, you know, actually aligning the trace files magically with each other. I'm actually not even using that all that often because it's a pain in the butt because you have to take all the files and somehow get them onto one machine so that you can run the thing. So instead, what I end up doing is just kind of setting up three separate terminal things, talking to three separate tiles and let them go through and get the trace stuff coming out and check and see what's going on. And eventually one of them or more of them blows up. So here I hit a break point and I can look and see what's going on and so forth. And so working with these trace files that has all of these coordinate information about this guy's asking for this and this guy wants to do that. In addition to my one new figure that I made for myself, whoops, where is it? Here it is. This is the, whoops, the T2 tile. If I can, I guess I already scrolled out all the way. This has got one little square, one little spreadsheet site for each site on the T2 tile. So if you want to calibrate your intuition, this is how many sites, how many atoms, one atom in each of those squares each of the T2 tiles is going to have. And so all these guys in the middle, these sites in the middle that are marked I, those are internal and you don't have to, if you just wanted to use this site, for example, you don't have to get a lock. But you're not generally just using one site. You're using site plus our event window radius around it. So if the event window radius from this particular site, which is a 10, 10, let's pick something a little different, 13, 10, like that is its coordinate. But if it was a radius four, it would be out to one, two, three, four. So it actually is into the northwest and it would have to look, see about getting a lock. And if it was here, for example, and it's stretched over into this area, that's going to have to look at getting a west lock and the northwest lock. That's why these things say I34 and so forth. Having this in hand along with the trace files telling me what's going on has actually made it a lot easier to debug. And I now can essentially, even though these things are all randomized, so it's extremely hard to get the bug to go on demand in a specific deterministic way, any of these things are going to happen, they're going to happen again. So as long as you're capturing the traces fast enough, because these things are all spilling out to disk and then we look at them afterwards, and you get enough information there, you can piece together what's going on. So I've made a lot of progress and a little bit of video that was at the beginning was getting at that. And so that's cool. And there's still bugs. And the weird thing, the weird thing, I had one atom in there and I got races. And it turns out to be, here's what's going on. As the atom is moving, reaches the edge of a tile, it asks for a lock on the neighboring tile. The neighboring tile says, okay, you can have a lock. Then the guy says, okay, I'm going to make this thing. I'm going to swap one north, so this is going to become me and I'm going to become empty down here. The guy up there says, okay, I can do that. I made the change, and then we're done. We're done with this event. So I'm going to release, tear down all the structures that I had on my side. And that's where it goes wrong. Because now that the passive side, the side that was helping out with the event, the active side is the one that initiated and said, I want to do it. The passive side is done. And if what happened was the atom moved from the very top of one tile to the very bottom of the next tile, now this guy is eligible to have a new event on this side before the other side has necessarily finished. Now how would that happen? It's getting at a sequence. Well, the reason is, is because if you're in the middle of a tile where you've got a northwest guy and a northeast guy, the active side may have to be waiting to get the acknowledgments from the other tile. And the one tile can say, oh, I'm done. I'm going to go on and I will go ahead and start a new event. I will send a lock request back to the other guy because now he's in vision of me being in charge. I'm the active guy. And the other guy says, no, I can't give you the lock because I still have the lock. The particle interfered with itself. Now I could have fixed that by saying the way the interaction works is once the active side takes the lock and the passive side is done, the passive side wouldn't actually release the lock until it got a final acknowledgment from the active side saying everything is done. I didn't want to do that because then the active side gets a big advantage because it releases and it can try to grab the lock again itself before anybody else even knows about it. And eventually randomly it'll work out, but it could really skew the statistics a lot. So it seems to me it's better that the passive side should get the first crack at having the next event to tend to even the statistics out even if it is all randomized. So I think I've mostly got it. There's still a few bugs. I get more and more particles in the thing like you saw at the beginning and it's starting to work. It's not 100% there, but with the trace files plus my T2 tile coordinate grid map, I feel pretty good. I think we're going to get there. So that's the story. I'm not going to do a demo. I'll put a little bit more of the video at the end or something because I talked too much, all right? So the next update will be in two weeks. That'll be shortly before the artificial life conference. I'm saying let's have Dreg and Rez on the tiles by then. We'll see. Sorry about the noise. Hope everybody is OK. See you next time.