 Computers keep changing the world, but their power and safety is limited by their rigid design. The T2Tile project works for bigger and safer computing using living systems principles. Follow our progress here on T Tuesday updates. This is the sixth update of the T2Tile project, let's get into it. Last time we were supposed to have gotten to talk about the fork bomb, that sort of basic question that comes up in people's minds once they know that we're dealing with this extremely parallel, extremely distributed computation. Once you have some kind of element and add them in there, that it's only job in life is to reproduce itself into the spatially adjacent spot, what happens? How do you control the uncontrolled growth? Talk about that today. I don't have an absolute answer for it, but then I have an argument that there is no absolute answer and then I do have a strategy which I'm interested to see what you folks think of. I was supposed to work on the Ubuntu packaging for ULAM-4 and Splat and MFM. I did look into it a little bit, but I didn't get much done. I do have an excuse, I'll tell you about that in a minute. The goals for next week are, well, we have a new version of the board, the carrier board for the whole T2Tile is pending and I sort of thought it would be in by next week, but we'll see. At any event, it's time to get really serious about getting ULAM-4 out of there out there and move it out. So that's the plan. Yeah, so these web companies these days that are, you know, you're speaking to some faceless, who knows what, a zillion time zones away from you, they've usually gotten really quite good if we're giving you very incremental feedback about exactly where your order is. So I'm a little bit distressed because I'm not sure what's going on with the board order. It's now been sitting in this start production phase for over a week and I don't know, that surprises me a little bit. I don't know if something's messed up about that or if seed is just, you know, really busy or if I screwed something up. Don't know. So we'll see whether we have board in hand by next week, which I sort of assumed we would. So that's the story there. This past weekend I was in a panel discussion up in Santa Fe at the Santa Fe Institute, one of their annual meetings. And it was really great. There were three of us on this particular panel talking about the future of computation. I was giving my normal stuff about let's get beyond hardware determinism and definite scalability and so forth. There was a quantum guy there and a guy talking about thermodynamics of computation. It's all very interesting. Lots of really smart people. So we agreed on the panel that each of us would do a little five minute intro and then we'd have discussion and then we'd discuss with the audience. So I did one slide just giving the pitch. They wanted to know the future of computation. I showed them figure one from the past to Beth at past path to best effort that takes us from 1940 to 2039. You want the future? Here it is. So that was really good. The SFI science was tweeting about it and the tweet did some fairly good business by my standards of multimedia, social media, powerhouse. So that was all very good. There was one weird little thing which I sort of hesitated to bring up but I feel like I kind of need to because it's part of the plot of what's going on. So Alan Kay, one of my heroes, was at the meeting. He spoke on a panel after, a while after the panel that I was speaking on on Saturday and he actually made an oblique reference back to me. He didn't say my name but he said, you know, the previous speaker distributed computing in the presence of noise. That's called the internet. People don't really understand about the internet anymore. They just take it for granted. And so he was dressing me down. He was schooling me for not having recognized that I had just reinvented the internet. You know, so how am I supposed to react to that? I mean, I didn't speak to him. I would have at the evening reception but I don't think he was there. You know, so I thought about this quite a bit. And really, I think, you know, my final reaction, it sounds a little snarky but it's actually sincere and here it is. I am honored to have my work mischaracterized by Alan Kay. You know, a little five-minute overview. How could he know that it isn't, that it's far from that there's a million distinguishing characteristics that are sort of important and fundamental about a definite scalability versus the internet and so forth. So how could he possibly have known? The fact that I was only given five minutes to speak was sort of supposed to be obvious but whatever. So in the end, in the bottom line, I'm really sincere that, you know, it's nice that he sort of knows far enough about it to think that this is just a reinvention of something from long ago that isn't being appreciated. So in the end, I am calling that progress. I am bringing up the T2 tile project progress meter and we are now advancing. We've got a long way to go. But that was kind of cool. All right. So that was this week and that was part of the reason doing that whole panel and so forth is, you know, so I lost a couple of days as far as nerding out. All right. The fork bomb question. So, hey, Andy X brought this up a while ago. Is there any known defense against the fork bomb? The thing that just keeps reproducing every time it gets a chance and all its reproductions try to reproduce and those and so forth. It seems like cancer or worse, like the fears and atomic bomb incinerating the atmosphere unstoppable chain reaction. Kyle, the scientist added a little more recently, you know, when we're talking about splat, how we have the dot rule that matches anything. So an at with a dot next to it means, you know, next to me, I'll match anything. How about a cell type that's only read only so that it could overrule. So somehow like if we had an at dot rule and we tried to overwrite it with something, well, then it wouldn't work or something like that. And, you know, of course, it's all up to us. We are the gods of these rules. We are defining the laws of physics for what we want this thing to do. And what do we want it to do? So here's the fork bomb in splat. The name of the element, the fact that it's symmetric. Me with anything next to me gets replaced with a me in another copy of me. All right, let's let's just do it. Oh, and one of the other things that I did do this weekend on the way to getting an MFM and splat all packaged up was I did a little work on splatter. So we now actually have like a little bit of help. And one of the one of the things that I like, I think every program should provide this. Well, then most programs do these days. So we can make a demo dirt or something like that. Go into it. And then if we do splatter dash I for initialize, it writes out a whole bunch of stuff for us. Directories make files and notes files or anything in the notes directory, but it's there if you used and it actually creates a little element. And this element, my element is a nice fork bomb, a kind fork bomb. The underscore recall matches an empty space. So if we see an empty space, we'll replace it with two of us. Otherwise, we'll just hold. And so that all just gets generated automatically. Whoops. Not what I wanted yet. And so we can just make it. And we actually are getting the copyright information starting to come out now and just all the stuff that we should do. We're actually going to ship some software and eventually this thing will. There we go. Okay. And here we are. Here's my element. We can make it and it grows. Now, again, whoops. This particular one is meant to be a friendly one. So if we have a defensive line, this is not the clearest defensive line. I don't even know if it is a defensive line or not. Then it should survive. The fork bomb shouldn't pass through it or our friendly fork bomb, which is really hardly a fork bomb at all. As far as the philosophical computational question about what to do about these things. Okay. So the point is that's splatter dash I it's in the GitHub. It's in the repo, but nowhere else as yet. So let's make let's make a real fork bomb here first. Whoops. Yikes. That's not what I wanted to do. So we have to go find out here back down into. Okay, there we go. Now we'll make fork bomb dot splat elements fork bomb. I'll just do minimal stuff here. Symmetries all rules me with anything next to me goes to me. I mean, just for fun, we point out that we could have written it this way. It doesn't matter because symmetries also symmetries all and we'll let this grind through. It'll take a little while because it's not that the dog sings well for all this code. We're just trying to figure out what we actually want to do. All right. And now. Oops. Now we've got a mean fork bomb. Actually, what the heck we could put it up against a friendly fork bomb and see what happens there. You should be able to guess. Yeah. Friendly fork bomb does not have much to say against the mean fork bomb. So what are we going to do about this? If we went if you went to MFM rocks the other day, you would have seen the anti fork bomb. Now how the heck could that possibly work? Well, let's get out of here. I have prewritten a bunch of code to save us some time here in demo one. And so let's try this one. All right. So now we have anti fork bomb. So we'll make an anti fork bomb and we have a fork bomb. And so we'll see what happens. The anti fork bomb is just a happy little thing wandering around minding its own business until it sees. Didn't work so well. Did it? Let's try another one. All right. We'll make. Oops. There we go. Okay. That's more like what we want anti fork bomb to do. And the idea is the anti fork bomb sort of fills space, but very lightly, not very densely. And when it sees a fork bomb, it goes nuts. And it the key to the success of an anti fork bomb is that it has to be able to reproduce faster than the fork bomb. And so let's take a look at the code. See how this works. So I've taken fork bomb here and I've added a little object orientedness because it makes things more convenient. So down here, the rule looks exactly the same as before me with anything next to me replace it with two means. The only thing that we did here is we added a base class and inheritance. We said a fork bomb is a subclass of a quark called Q fork bomb. How do we know it's a quark? We don't really accept by convention. We have quarks beginning with Q. But here it is. This is the entire declaration of the Q fork bomb. The Q fork bomb quark. It has no data. It has no methods. It has no nothing. It's just a flag class so that we can recognize things. Anything that inherits from Q fork bomb is something that anti fork bomb wants to attack. Now this is kind of a strange thing. When you think about it, why would fork bomb choose to do that to allow it to be identified? Another issue in, you know, fundamentally if we're talking about this, if we're imagining that unknown splat code is going to be coming from the world at large, there's really nothing much we can do. So all of this design that we're doing here is like, okay, if we're trying to build sets of elements that are going to work together and they're going to have unexpected emergent properties, they're going to interact with stuff in ways that we might not intend because this is not serial determinism. We do not get to say what global boot time is like, what happens at the one and only moment where everything begins. And so we can't even pretend that we're going to control it by having one domino knock over the other, knock over the other and so forth so that even if there's a million dominoes elsewhere, if they're not part of the official little path that we've created, none of them will fall over. That's not the way this works. We're building fundamental transition rules, basic types of dynamical behavior in different classes, and we want to know, well, you know, they're supposed to be used in this way. Our intention is to be used in this way. If you start them up under normal circumstances, they will go through this kind of progression and they will do this and that. But that doesn't mean that's the only configuration that can happen. So having these discussions, having these design thinking about how are these things going to play together when they're not in a configuration that we really intend is very important. So, all right, there's the fork bomb. And here's anti-fork bomb. And so a little bit more complicated. In fact, it has one little disgusting thing that uses a sort of subtlety or splat, which I'm going to mention it because, well, I'm being honest. And, you know, every programming language, every semantics, every model of computation has its weird little quirks. This is one of them. In the movable feast, what happens at the edge of the universe? What happens when you get to the edge of tile and there is no tile next to it? Now, from the point of view of the MFM and event window, the event window is always 41 sites. Manhattan Distance of 4 around me in the center. But there may not actually be 41 sites that are really alive, that are actually real. And that is, in fact, detectable. And in the normal way that splat is written, if you write a rule down here, so we're saying B, we're trying to match a B. What is a B? Well, we don't know. We have to look up here. We're basically saying B is a bomb. If B, and this is where we're taking advantage, ooh, this should probably really wants to be Q fork bomb. Well, we'll leave it for now. So what would happen if we're trying to match a B? But in fact, there's nothing there. There's no universe there. We've reached the end of the universe. Or maybe not the end of the universe, just there could be a tile missing in the middle or a tile that's not responding. There could be a hole in the universe. If we didn't say given B, and true, which is kind of a special syntax, it's a little bit general. That means that even if we're asking this B match on a site that doesn't even exist, go ahead and match if you can. All right? And in this case, when we say vote B is a fork bomb, that means wherever we say this, it's going to look what's actually there. And if the thing is a fork bomb, it's going to count one vote by default. And if it's not a fork bomb, it'll count zero votes. And in particular, we want to go ahead and count zero votes if it's non-existent space at the end of the universe. That's what given B true does. And so there are five different things we can do. We can do given, vote, check, and change. That's four. Is there a fifth one? I can't remember. In this case, we're using three. Given B true means go ahead and match B's against non-existent sites. Vote B is a fork bomb means pick, count a vote for every one of these things that is a fork bomb. And change B means when B appears on the right-hand side of a rule like it does down here, then do this code. And this code is essentially ULAM code. So we can't actually do the entire matching in just splat. We do escape back to ULAM to do more normal, sentential type expressions because not everything is well expressed spatially. That's fine. Even though splat stands for spatial programming language, we're not pretending that we're trying to cram everything into the model of spatial relationships. We're just trying to make spatial relationships easy to express and splat does that. Okay. So what it does is it says if any of the B's on the left-hand side match, then the vote will be greater than zero. And the default rule is to say, does this rule match or not? It matches if everything on the left-hand side has at least one vote. So we get a vote for ourselves. AdSign gets a vote for itself. If any of those B's is a fork bomb, then we get at least one vote coming out of that. So the rule as a whole matches. We then go to the right-hand side and we say change. Well, if the event window, the current site is a fork bomb, then replace it with a copy of us. That's the rule. So that's how anti-fork bomb works. If it ever sees any one or more fork bombs in its immediate eight neighborhood, then it replaces them all with itself. And that's how it beats the fork bomb. The fork bomb just did one squared a ton. So if we started with one fork bomb here, then at most we'll have two fork bombs after one event takes place here. But in principle, we could go from one anti-fork bomb to nine anti-fork bombs in a single go. That's how it works. We have to be able to outrun the bad guys with the good guys. Well, but you know what this is going to happen, right? Well, what happens if we have a meaner fork bomb that says, you know, suppose I have anything on either side of me and now we can go from one fork bomb to three fork bombs in a given go. And that's what we've got here. So we've got... We can take a bomb two and we can put it down. And if we now do a bomb two against an anti-fork bomb, it's going to be bad. Well, actually, let's make a bunch of anti-fork bombs. It's bad. But we can correspondingly... Whoops, we can have anti-fork bomb twos that grow in response. And now we're in good shape against fork bomb two. So you see how this is going to go. The obvious limit is... Stop there. Fork bomb four. What are you going to do about that? The fork bomb rule says, if I am surrounded by 40 other anythings, replace them with copies of me. This is now writing at the maximum speed it's possible. We've completely filled the event window with us in a single event. Is this legal? Sure, it's legal. We can do it. And anti-fork bomb four tries to do the same thing as best it can. The only problem is that it goes ahead and thins itself out if it hasn't got anything that it needs to do. So if we come in here with a fork bomb four, we are completely wiped out. Get some anti-fork bomb fours going here. And then this is where we end up. It's a stalemate of sorts where depending on who gets the edge, either side may win. In this particular case, the fork bomb has a slight edge. Why? Because the anti-fork bomb, you can see it. The anti-fork bombs, they start to die out once they don't see any fork bombs because they're kind of trying to be the good citizens. They're trying to say, I would like to leave as much space available for other computations to happen while I just patrol to make sure these nasty fork bombs that won't leave any space for other computations to try to happen. But that in fact means their growth rate is slightly less than the full-on fork bomb. So this is looking pretty good. Maybe not. But thinking about it from the big picture, regardless of who wins this war and once again the bad fork bombs won again, it wasn't very good for any other computation that was actually happening in this space. So how are we going to fix this? Let's watch this one through the end. We'll see. There we go. Okay, this is the ending that we think we want. Right now we've got the entire universe full of mustard out veterans coming back from the World War of the fork bombs versus the anti-fork bombs that are gradually thinning out and making space available, but it has to be plowed and settled completely from scratch. It was a completely burnt earth, scorched earth that was created left behind by the war. All right, so that's it. So the simple fork bomb reproduces itself once. We can beat that with something that erases the things faster than them. But if the event window is fixed, which it is by the architecture, and you're allowed to rewrite the event window arbitrarily, which was the basic rule that we were settling on, then at best we get a stalemate with a slight edge for the bad guys. The bad guys just overwrite everything as fast as they can. The anti-fork bomb guys, you can make a more sophisticated anti-fork bomb that doesn't muster out as quickly, that will stay inflamed, will stay aroused for a period of time, that they don't see any fork bombs. And you can get it so that it's basically 50-50, but you can't really do better than that. So how are we going to make the decision? It's easy to say, oh, well, just don't worry about it. Make it impossible to replace a dot with something. But you need to replace a dot with things. When you write rules that actually do useful stuff, you're writing all over the place. So philosophically, how do you break the tie? You've got a bunch of one type of element that's making all these transitions, is writing all over the place. You've got a bunch of other elements that are making all these transitions, writing all over the place. How do you tell which one is good and which one is evil? Now, when you're doing game design, balancing a game is very similar to this process, these kinds of questions. How do you decide how to make a weapon powerful but not too powerful and so forth? We built into the game, we have the player. Now, if it's a player versus player, then we kind of want it to be all balanced out so that it comes back just to the differences in the player playing the game. But we don't know who is the good guy and who is the bad guy. So what I want to do, you know, finish on this is suppose we say we're going to give the edge to the incumbent. Whichever guy is already there, meaning that that site has not been written lately. The guy's been sitting there doing whatever it is, flipping a few bits but not very many. And here comes fork bomb. Its hallmark is that it's doing tremendous amounts of writing. It's doing writing extremely rapidly. And that's what we want to detect. We want to somehow say, if you're doing too much writing, we're going to slow you down, we're going to make your events fail a little bit and so forth. Whereas if your growth rate is more sedate, then you'll have a higher probability of success. Is that guaranteed to do what we want? No. If we have a dug in situation, a dug in bunch of guys that for whatever other purpose we think they're evil, well, they're going to be very powerful because they're going to be incumbent evil. But it's the only way that I can think of that breaks the symmetry between who's supposed to be the good guy and who's supposed to be the bad guy. We're going to say the good guys are there first. And because we're going to engineer it that way, that when we power up a tile, we'll seed it with what we want. So that's the fork bomb question. I will stop with that. At the moment, there is no implementation of incumbency. None of that exists in the movable feast machine. I've had some ideas about how to simulate it, how to implement it, but it's not implemented yet. So that's all for the future. What do you think? Is there a better solution? Is there any solution? Not sure. But if we're going to be gods, gods defining the laws of physics of this indefinitely scalable universe, it's on us to take these questions seriously. Next update will be in a week. Thanks for watching.