 The T2 Tile project is building an indefinitely scalable computational stack. Follow our progress here on T Tuesday updates. Our top story is this week, it's still the wall of science for the month of February, but I figured at least we could have a nice New Mexico sunset picture with the graphics. I'm working on it, I'm working on bonds, they're wiggling. That's what I'm mostly going to talk about today and try to do a demo is the development of the intertile sequencing story and you know a couple of weeks ago we saw this simulation of a simulation you know just running on one conventional computer of all the different tiles as they were trying to talk to each other and so forth that got me part way there and then last week I had this thing channel sim which was another just a simulation just running on a computer written in pearl high-level programming language to try to deal with not just having them connect but having them connect and being running different possible versions of MFZ different laws of physics so the connections are going to have to handle the fact that the adjacent tiles might be talking different laws of physics and we really need to not let them speak to each other if that's the case. So this week I took that simulation and carried it over to the tile so I made some to do for myself this is on Saturday and Sunday to use that pearl code that I wrote to sort of sort things out with the levels and how we're always falling to level one where we touch each other and then we're trying to fall to level two where we have level zero and then level one where we have compatible laws of physics that we can open up the gate and let events start happening and that's really where the simulator MFMS begins you know it kind of pretends it has separate tiles and it's true that they're implemented with different threads and they run in parallel and so forth but the MFMS code the initialization code has no way of handling the idea of an tile actually just sort of crashing and rebooting after it's been going for a while MFMS can't simulate that and the idea of having tiles that are running different sets of physics MFMS can't simulate that either so all of this stuff needs this front-end stuff before we can get to the point where we can do the events and run Ulam and Splat and so forth that stuff has to be worked out and that's what's been happening now so the idea was to take the simulation from last week and actually try to make a version of it that was on the tiles now where instead of having two simulated tiles with a simulated connection in between them we'd use two physical tiles with an actual connection in between them and just try to get that basic stuff going of saying are we on the same level can we both talk what are you running what am I running and so forth demo first cut on tile level simulator level sequencer no display hacking allowed that was my rules because it was an incredible amount of time and and I worked at it and you know the way the way I write draft code I'm not sure if everybody works this way I mean I'm you supposed to have specs and everything like that but when you know what you want to do roughly and you need to start fleshing it out what I always do is I sort of start from the top down I run right the top little thing and then I say if you get here fail because you have incomplete code and then I run it and so I got it to compile and then I run it and and I got incomplete code and that's big success and then you go back to wherever it was I disease by driver's seat this is actually a different one than we saw in the picture it's a little bit late and then you write some more code and now it fails at ITC CPP line 21 and and then ITC line 27 because we're making progress you go back you get rid of the call of the fail you write some code there that leads to something else when you fail there and so forth and that you know MFM IO CPP it fails at and eventually it got oh yeah well now this is a case so all of those cases of failing with incomplete code as far as I'm concerned in my development process that's success that means we're making progress right because we decide we're gonna develop this little bit of code then we need to have that thing when we hit that now we know we're right in the moment where we need it then we go write it this program received signals sig sev segmentation fault that's where I failed that's where I lost the game when I get coding complete I won when I got this it meant I actually wrote a bug so I got the simulator going and figured it out and I had failed to initialize a variable it happens all the time and then back into it incomplete code write some more tile okay now we need to have the tile and the tile it's sort of funny I'll talk about in a minute but so I have not the real tile just a tile model because that's what's going on here this is all about getting the intertile connections to talk to each other and you know I suspect I don't really know but it's possible that this little spike this little attempt just to get the sequencing working might ultimately grow up and eat MFM T2 which is the whole giant code base that's directly based on MFMS because MFMS has a whole all of those assumptions like the tiles will always be there once they're set up and the tiles will all are all running the same laws of physics guaranteed and so forth that are not true in the actual tiles so it may be that I call this tile model to distinguish it from the real tile code in the MFMS code base but it's possible that with a few more spikes a few more developments a few more weeks after the wall of science comes down that this little thing that we're looking at right here may end up growing up into the new MFM T2 a fresh start where we then just pull in individual little pieces load the ULAM code do an event and so forth and put it into this thing we'll see and then incomplete code and so forth so this went on for a day or two whatever it was and there we go and oh yeah and then eventually we get to a point where it didn't fail very distressing now it's it's in a loop doing some updates that partly I'd written and so forth and which means now I need to have more what in my mind I want to happen because I've implemented all of the semantics all the behavior that I was going for to begin with I there's no more places to put it in complete code I need more idea now it's incomplete thinking so I go back to channel sim I go back to the pearl code this is a whole different language and I say okay well what else did it do that my guy isn't doing well we're waiting to hear that they're here so here's a whole another stage that I can now go back and implement put failed codes in there again and okay great now we're the complete code again and off we go to the races we go all the way through this and more failures and so forth and you know writing to the log file oh and this was an exciting thing right the first time my little on the tile thing detected an incompatible MFC because you know there's no way to do that with a loopback because of the loopback cable says I'm running MFC to hey I'm running to talk to himself so the first time I got incompatible MFC that was actually had two separate tiles that were running with separate serial cables and I was looking at the log files above them and I finally got it and here it is and so I obeyed my rule which is don't waste time doing graphics and all that stuff because it's an incredible time sink and just focus on the behavior I got this far a t Tuesday update coming not that far away I went back and graphics code for it so I went to the t2 viz guy you know the one that displays all the statistics and stuff and I started stealing code out of that to do with this it's very rough but let's try a demo okay so here we are so if I've done this right we've got three tiles here that and they've all been changed now so that they boot up into ITC spike 11 instead of booting up into MFMS and so they're not actually prepared to talk to an MFMS tile if I plug in another random MFMS tile that I haven't done this with everything gets all messed up because they're sending packets to each other over channels that they don't understand yet but as long as they're only talking to themselves then things go fairly alright and I don't know how the display is going to come out you know there's a general issue that I've got here I mean these are very cheap LCDs that I'm using for these things and furthermore it turns out there's actually I bought them in a couple of different batches and the batches aren't quite the same which alright but here we're coming up okay so we boot into t2 we get our splash screen and then they're going to boot into this ITC spike 11 which is basically just going to be displaying the status of the connections the ITC connectors so red means I'm hearing from them but they're not talking sense blue means I'm hearing from them but we are incompatible with them gray means I'm not hearing from them at all and that's what we've got here so this guy is currently running MFC zero physics this is running MFC 2 this is running what MFC 3 so they're all running incompatible physics so they're blue and red between each other but the sooner I made my tiles change what they're running quite frequently 0 3 2 alright 2 yeah quite frequently what do we got here 2 and 2 there we go yeah so now this tile is green it says we have gotten far enough to compute that both tiles are running the same laws of physics we can open up the gate and start letting events go now these two guys are running the same one now in reality these tiles would not be changing the you know it's as if you quit one simulation and started completely different simulation you were doing bond stuff and then you quit it and started doing dragon res stuff like that so it would have completely different meaning and it wouldn't make much sense to start saying events I'm sending you an atom of type whatever and they say well types only make sense in the context of a given simulation a given MFC so these guys are green because they're both talking MFC one there we go everybody's talking MFC ones three tiles and so forth so this is working pretty well now of course one thing we can do is we can you know use a loop back because one nice thing that we'll know about that is that just like we said before with a loop back cable there we go so it's red I hear them talking but they haven't spoken pro there we go and now it's green so these guys east and west should basically always be green sometimes they'll drop black back to blue for a second when their physics is changing before they've notified each other of it but then they're coming back up so this guy's running MFC zero and you know it all works we can we can hot plug other guys in there I don't know if we're gonna sit here long enough to wait for him to come up because it still takes a minute for them to come up but that's where we're at so right now there's you know this this is still you know rickety it's not as it's not as snappy as I would like it to be because there are these trade-offs between spamming and sending tons and tons of packets saying are you there are you there versus backing off and I probably can't read this but each of the ITC's once they sent a packet and haven't gotten a response they wait longer before trying again to avoid spamming it but that slows down the response when things may have actually changed underneath so all of this exercise over the last two weeks what it really did for me is it changed my perspective from thinking you know it's all about the tiles and the tiles are the most important thing to now really the important thing is the inner tile connectors because they're the ones that have to do all the work you know the tiles aren't the tiles you know the tiles don't look at the inner tile connectors in this the tiles just do whatever they want they're the complete prima donnas they can crash they can reboot they can change whatever they're doing anytime they like and it's up to the code that's talking to the other intertile connector code for them to figure it out to notice the tile has changed what it's doing and go back to a level renegotiate with the neighbors and so forth so really it's the ITC's are the heroes of the story at least this week because they're the ones that have to keep on going no matter what there there may be no events happening as far as oom and splat is concerned as far as the artificial chemistry there might be a hard wall here nothing to see but the inner tile connectors are down there ceaselessly checking what are you running what are you running what at your level what your level one stage two I'm at level one stage two let's move on and so forth so and that's and this guy came up and then the ITC's the hardest-working bits of code nothing took care of it so that's the story there's only three weeks until the wall of science comes down there's probably gonna be a week extension so it might be four weeks but have to really move hard on the bonds I'm not sure how much intertile sequencing stuff I'm going to be able to do in the coming week I'm not gonna put myself on the hook too much for that got a bunch of other things that I haven't talked about that are coming along that hopefully I'll be able to talk some of them next week as well we'll wait for next week and find out see you next week