 Computers keep changing the world, but their power and safety is limited by their rigid design. The T2 Tile project works for bigger and safer computing using living systems principles. Follow our progress here on T Tuesday Updates. I'm Dave Ackley. This is the 18th T Tuesday Update. Let's get into it. There's two more weeks to the episode 20 deadline, originally trying to have an entire grid of 133 of these new individual tiles built and running together. We're not going to achieve that, but we're now still hoping to have all of the parts ready to go so that we can pull the trigger and say manufacture these things by that time. We might make that. We might just come close. I'm not sure I'm getting a little more comfortable with missing deadlines, but having a lot of progress to show for everyone tried to get to it. So last week we looked at 3D printing the cases for these things. This week we're going to follow that up a little bit, talk about the circuit boards themselves, the printed circuit boards that it's going to hold everything. And we're going to talk about intertile software, which is what you are supposed to be holding my feet to the fire to for this week. I'll tell you how far we got. I'll show you what we did. The goal for next week is to get all of the remaining parts, which is primarily the through-hole parts, which I'll talk about a little bit later, in flight as far as I possibly can. We're going to be emerging from the Chinese Spring Festival, so hopefully I'll be able to put some orders in there. We'll see how it goes. All right, so last week we had ordered 200 of the final revision circuit boards that are going to be the basis for the T2 tiles. From China they had gotten shipped on January 23rd, and then they went on this merry dance and they ended up going to Phoenix and then going back to LA. And then that's where they sat at the time of the last T2 update. I didn't know what was going on. I didn't know why they were held after the T2 update. I actually called DHL and it was like, you know, OHL. The boards are missing. They went to Phoenix and then back to LA. And actually I had never called DHL Customer Service before. They were pretty helpful. I didn't have to wait long. And the idea was, you know, they probably just missed a flight someplace. And it was like, you know, the cartoon guy that has to back up in order to get a running start. It had to go to LA in order to get a running start to get to Albuquerque. In fact, though, that's what happened. And the boards did ship from LA back to Phoenix and then to me. All and they arrived a week ago. The T2 update a week ago. And here they are. I want to do more. Why not? There we go. Here they are. It's pretty heavy. 200 boards. They are shrink wrapped vacuum packs in packs of 25 boards. 200 of them all told. So there we have it. As far as I can tell, I haven't ripped any of these open. And I've tried to build one of them or anything, although I probably should. But so far they look pretty good. Yeah. All right. So that's the story of the board. No secret tariffs, no anything mysterious. As far as we know, they just missed the flight. I think it's easy. The things that are heavy like this, people pick it up last. It's just easy for it not to make it. Whoops. Do that every single time. Okay. Now, as far as the getting the rest of the manufactured parts. The part I was worried about the most. This is the female header two by eight. That seems to have basically vanished from the entire planet. I'm hoping that again, as spring festival ends in China, these things will start to show up again. I don't know. The thing is, don't actually need these to make the tiles. These things go in the intertile connectors. What we actually need to send to ETS in order to pull the trigger manufacturing the tiles are these, which are the ones that made up with those females. These are male shrouded headers that we need six of them to go around the board. So I want to get a big order in for these. These guys have them. The shipping once again is a concern free shipping 39 days. These guys, you know, for 22 cents a piece, something like that. It's really not bad, but the shipping is kind of a killer. And there's also, oh yeah. So the other through-hole parts, in addition to the six intertile connectors around, we have these two big connectors that connect the Beaglebone green to the circuit board. These are the parts that are necessary. 22 cents a piece from this particular place. 39 days delivery. These folks do offer faster delivery, but it's an arm and a leg. Another hundred bucks to get it delivered in a week and a half, two weeks. You know the drill. I'm going to have to try to get in touch with these guys and see if there's, in some way, we could get the shipping to a more reasonable range. I will let you know as it develops. The other possibility was to get these in the United States. Adafruit.com will ship these to us from Brooklyn for 75 cents a piece. Paying the incredible shipping rates for FedEx, i.e. from China, they end up costing about 45 cents each. So they're still cheaper than getting them from Brooklyn for 75 cents, for 60 cents each in quantity. But then the shipping for Adafruit is really expensive. So we'll see. The ones that I've been assembling now, the ones that you've seen so far, all did come from Adafruit. So the through-hole parts are still needing to be worked out. We'll see how it goes. All right. That's the manufacturing and logistics story. So the 3D printing last week, we started looking at the various possibilities. I was trying to get things to look a little bit cooler with some kind of sort of an industrial look. I started with a small thing. Didn't like it too much. And eventually I had sort of a bigger open strut work thing that I kind of liked pretty well and got some various versions of it going. Afterwards in the chat room, Andy Walpole, Andrew, who seems to be noticed, everything about everything is also a 3D printing person, as you mentioned last week. These cases, they look good. But they were four hours of pop. Andrew says, print one at .3 layer height. And I had been printing them at .15 because that's sort of the default optimal thing that they recommend. They gave it a try. And it really looked good. The main thing about it is... Oh, that's right. I don't have the pictures. The main thing about it, about the 3D printing news, is that we got the Prusa Galaxy Black PLA in finally. And I've been doing a bunch of printing with it. And it really looks pretty nice. This is one of the cases done in the Galaxy Black PLA. It's really sort of a dark gray. And it's got all of these little flecks of silver in it. It's sort of deliberately designed to kind of look like the Prusa printers themselves. But I'm liking it. I think it's really quite nice. So we're probably going to do that. So these things all use these socket cap screws that go in. I got a new tool, a wonderful tool instead of those little L-shaped hex wrenches. This is a ball-end hex wrench. So it's the correct diameter for the thing. It's a 2.5mm is what we need. But because the whole thing is rounded, you can kind of come in at an angle and it all just works. It's very nice. So that makes me happy as well. I did a version that had a two-color, a white inside with a black front. And I thought that was pretty cool too, although it was a ton of work. And also I ended up busting this one because these sidewalls are really quite weak. And I've now made some improvements, put some strengthening ribs on them and so forth. So we've gotten the five reels of PLA, the Pruselment Galaxy Black PLA. There's about nine meters per case to make one of these things. There's supposed to be 330 meters on a roll. So we can easily expect to get 30 or 40 cases per roll. We've got five rolls. That should be enough to print the cases. And hopefully we'll see about the intertile ones as well. So tweaking 3D printed designs is just never-ending. You can always make something a little bit better. And so I did spend a significant amount of time on that, even though it was supposed to be doing intertile software. And speaking of which, all right, so my first joy when I actually got down to this is, I don't know if you can see this. This is a log file, a Linux kernel log file. And the one thing you do not want to see in your Linux kernel log files is oops, internal error oops. That means you've actually managed to kill something, make a mistake, something going wrong inside the kernel itself. In fact, it'll do quite a bit to try to help you out. But really, this is where things are supposed to work. So now in this particular place, the kernel bug is in code that I wrote, intertile connector packet dot c 659. And in fact, that line of code if you go there, it says bug if this condition is true, and it was true. It took me a day and a half really to run this all down. And it was ending up being a sequencing problem, which I don't even completely understand. There's this crazy thing called SystemD, which is this master all singing, all dancing architecture for getting a Linux box started up. And in old days, there was just a bunch of files and it was obvious to go where you could go look and see what it's done. The problem with the old file approach is that the boot time took a long time as it worked its way through all these directories and just fired things off. So SystemD has this highly sophisticated graph structure that tries to start things all up in parallel, which means it's really easy to get race conditions to get things that really need to, in the graph, it needs to say, don't start this before you start that, but you forgot to say that or somebody forgot to say that. And as a result, it may work on one machine but not on another, it may work on Tuesday but not on Friday and so forth. Eventually, I got this sorted out. I created a new little micro SD card and I reflashed my tiles to get to the same basis and then I was able to move forward. And in fact, let me see if I can get this to work here. So if this is working, you are seeing five tiles, all running at once, all interconnected. These two are the new ones. This is the Galaxy Black PLA. These three are ones that I've built over the last, you know, year and a half now. I've been doing this a long time. This is the case that I got from Shapeways. These other ones are ones that I printed up and so forth. Here's power coming in over here. Here's our user buttons that don't actually do anything and so forth. So we've got these three guys on the left connected to a USB, I'm sorry, an Ethernet hub, black, blue and red so that we can monitor what's going on on these three tiles. So we can just log into these three tiles. Can't log into these, although I'm using the debug serial connection to get into that one as well. So what's happening is it's over here. Gray, blue and red correspond to the three things and what you see is got packet, send it, announce, host unreachable, ignore it and so forth. It looks like gobbledygook because it's debug output. What we have so far, I'm going to put these guys away because I'm stressing the machine trying to capture these signals at once here. Okay, so but I think this is very cool looking and you know, look at this. We've almost got a ring here. We've got a one surrounded by four, two more. That would be a complete ring. It's, to me, it's much cooler when a guy is not talking to himself through ribbon cable but he's actually talking to someone else because there's all kinds of things that can happen. They can't happen when you're talking to yourself. The nicest thing about this is there have been no packet corruptions, no bid errors, nothing. So far, so good. All right, so let's take away this video for now. All right, so these guys, what they're doing is they maintain each one has a directory, a common directory of files that are supposed to be the same on everyone. So the idea is the, when it says announce, the particular file of files are all MFZ files, which are files that wrap up, sort of like a zip file, that wraps up stuff for the MFM simulator, which can also wrap up other files. And we're using MFZ files to wrap up everything. So the file system that we're going to share is going to be shared by sharing MFZ files. And what I'm aimed for, but I've got to do it really carefully, is even be able to send an MFZ file around to update the common data management software itself. So that's pretty tricky, because as the common data management software propagates, it means it might be talking to older versions of itself or it might be talking to newer versions of itself, so it's got to be really careful. That's not going to happen immediately. We'll use it, but I want to use that down the road, because I've already told from spending the week working on this that there's no way that you're going to get into the interior and be putting hands on all of those tiles buried in the middle of a grid. You don't want to. We have to be able to manage it without it, and the way we're going to manage it without it is by having this common data directory and say you just plop a new version of an MFZ file in there. The common data management system will pick it up, announce it, discover that it's new, check the check sum, check the signature, all of that stuff, and then start spreading it to its neighbors, which will spread it to its neighbors and so forth. What we have here is check the files, see if they're signed, get the date out, announce to the neighbors if the neighbors have got it. The neighbors get the announcements, they pull it apart, they decide, do I need it? Yes, they think if they do, they need it. They build a stub saying, okay, how much of the file have I got so far, and they start requesting pieces of the file. That's where we are now. So the software, not quite moving yet, but there's a tremendous amount of infrastructure, and one of the things that I wanted to talk about, taking too much time, so I'll just say a little bit about, but this was an example of taking the robust first design philosophy and applying it even in traditional software, because this level of stuff, the content management, this is not implemented in atoms and elements. This is part of the lower level infrastructure that is being implemented in Burl as it happens, because that's what I tend to use. When I first set up these things, I made a subroutine called init data, common data or something like that, that was going to read all the files in the common directory and process them up and hold them into an internal data structure. But then the more I thought about it, the less I liked that, because what if something changed out from underneath it? Why do I necessarily want to do that once and then do it all over again? What I would rather have is something that every so often it looks to see if there's any files. When it wants to announce a file from A to B, it picks a random file to send it, maybe it's already announced it, doesn't matter, it just announces it again. So there's a whole style of programming, style of arranging computations. It's very old, hasn't been studied a whole lot, but it was started more or less by one of the giant names in computer science, Ezger Deistra, called self-stabilizing protocols. And the idea is when you have distributed systems around that are all cooperating to get something done, you want to design their interaction so that no matter what state they start in, eventually they will fall into a correct state and once they get into a correct state they will go from there. That was much more, so I went back, I tore out the initialize everything and now it just sort of reads the directory every so often. It looks at a file every so often. It actually deliberately randomizes which file it's going to announce and so on. This feels much better. One of the things that we want to do is reduce the load on the machine. This is not the main event. This is background update for things that are going to be relatively rare. As a result, we don't need to be efficient about it. It's better just to be robust so that if one guy goes down and comes back up, the system will handle it. We'll have more about this once I actually get it working. All right. All right. So finally, only have a minute left. Last week's T Tuesday update had a funny little second hump in it. I'm not entirely sure why, but I think YouTube might have decided to push it out there for people that were interested in 3D printing so people took a look. Most people didn't look very much because it wasn't really what they were after, but if any of you did stick and think it's interesting, thank you. I'm glad you're here. Say hi. We'll see how it is. And we also have a new computing update came out that is a tie-in because I'm such a marketing genius. Talks about the Christmas rant for people that listen to computing up. Finally, in terms of propaganda, the Artificial Life Conference is in England this year. It's at the end of July, the beginning of August. I really, really, really want to have A-Life demos running on the grid for that. But the key thing to notice is March 8th is the deadline for paper submission. That's a month away. That's a real deadline. Okay. In the next episode, we'll be out in a week. Thanks for watching.