 Let every nation know whether it wishes us well or ill that we shall pay any price, bear any burden, meet any hardship, support any friend, oppose any foe to assure the survival and the success of liberty. So Russia invaded Ukraine last week and things are all kind of uncertain at this point. Now I mean I guess people are killing people every damn day somewhere on the planet but when one of the groups has thousands of nuclear weapons it seems like a little bit of a bigger deal. But I am going to act under the assumption that there is a future that we should continue to work towards so we'll go ahead and do it. I'm gonna start by showing a new demo some old code but a new demo running on the Lotus 1 and 2. It's actually still running now we'll just have a little sample of it and then circle back around to explain why I want to use it as an example for today. First be robust then correct as possible and as efficient as necessary. We were looking at a whole bunch of Adam Dex little rectangles sort of floating around there as an example of building bottom-up and where this all came from was last week I took part in this panel discussion this online panel discussion that Intel Labs was running and it was fun I mean I learned stuff so I'm gonna show like 60 second little clips from it to set up what I want to do with it and then we'll take it from there. Thank you Tanya. I wasn't exactly sure how I fit in here. My interest is making computers do new things by themselves because that's cool. By the late OOs I was depressed about computer security. One bug is all it takes to take over the entire machine. The CPU and random access model is broken. The circuitry of the of electronic circuitry is incredibly redundant and therefore software can be incredibly non-redundant and that's baked into the DNA of computer science and the claim is the suggestion is we have to stop eating the glass sandwich and here's my conclusion so rather than saying you know it's turtles all the way down we want to build bottom up and say you know it's thermostats all the way up so build bottom up and you know one of the good things about doing these kind of events is that you know I have to refresh the slides and prepare them and so this time I came up with this 12 steps to robust and it was the same old thing where I was trying to figure out what my conclusions were going to be so I could put them up front but then it's just started you know seeming like the Christmas song so I started all fitting it in and you know it's really got all just about everything if I can pick any one of them and unpack it to get more of the robust first best effort and definite scalability story you know I'm not gonna say it you know I mean there's actually like little hand gestures that go with each each verse and everything you know maybe if I ever get to a you know a thousand subs and I'll sing it anyway the point is number three build bottom up you know saying it thermostats all the way up is not a really very clear way of explaining something on the other hand saying turtles all the way down isn't really either so what I wanted to do is take the atom deck data structure creature agent code thing and unpack it in some detail it's gonna go on a while to see as an example of what building bottom up actually means and you know one of the reason another reason that I want to do this is there's a phrase that I really have always hated but I really it wasn't clear why and the phrase was solution in search of a problem and what I kind of realize now is that that that solution in search of a problem is kind of a sneering way that top-down engineering dismisses bottom-up engineering you say so you're working on this stuff you say well you know if you make it out of mud and straw and you can make this interesting thing you know and then I don't know what you use it for I was originally starting to find a cure for cancer and now come up with a new way of making a brick and well you know it's a solution in search of a problem and so what I realized finally is embracing bottom up engineering building bottom up the response to isn't isn't that a solution in search of a problem yes it is it absolutely is and that's good why because when you take a problem first when you're working on problem solving you handed the problem to start with what you invariably do what I invariably do what we all invariably do is we cut away everything that isn't really relevant to that problem and just focus on what will actually get us there to whatever specific thing is and what does that cause happen that means everything else goes hangs you know it's not specifically in the problem specification is you know whatever just do something that focuses on the problem and you know the the result is and this is another phrase this is the complementary phrase to solution in search for problems is that you're going to end up with when you do top-down engineering you're going to end up with unintended consequences like that as if that helps you know saying no I inadvertently burned up all the energy in the world you know wasting time in order to do proof of work for you know proving something to do a solve a distributed coordination problem or whatever it happens to be and you know yeah it might be unintended but that doesn't mean that people who are familiar with bottom up engineering might not have seen it coming miles away so yes let's do bottom up engineering let's own it and say you know the point is there's all of these things that you can do that are not specific to one particular problem like taking care of your space cleaning up after yourself making sure that you don't pollute your space making sure that you've got redundancies so that you can get communications all that kind of stuff which you can do independent of how you whatever specific problem you're going to work on so that's it that's the goal and so here is the atom deck each of those blue rectangles is one of the atom decks that that yellow dot there that is a seed that's actually wandering around looking for enough open space to pop another atom deck in this particular demo once an atom deck reaches a certain level of maturity meaning it's had certain amount of inserts and removes into its data structure it pops out two of these seeds and that's it then it never does again it may continue growing but it won't seed another time all right so what is a deck a deck is a shorthand name for double ended queue so it's like a list or like you know a line that you go get movie tickets where you can get on the end of the line and the person at the front of the line go gets a ticket and everybody moves up except in double ended you can also put people at the front of the line and take them off the back of the line you can go in either direction and you know here I dug this up this was a you know a program assigned to implement a deck in c++ that was actually do 22 years ago tomorrow you know of course by the time I left academia you know we weren't even implementing decks anymore it was all all you got to do is figure out the name of the class and what the names of the methods are and off you go but this was fun this was good and it's get the basic deck idea and you know it's got these stringent efficiency requirements that in order to put it out so we got instead of front and back we use left and right because it's double ended so there really isn't the front really in the back insert and remove in order one time blah blah blah and so forth okay so here was part of the code that I used in the solution that I showed the class afterwards that we have data which is a pointer to an array of char's characters because that's what we're going to store in our deck a number max saying how much room we've got and then left and right saying where the head of the left end is and where the head of the right end is and the key is this little bit of code here we don't have to go through it all I mean first we just say you know well if the thing is full then you know we can't insert but the key is is this part data sub left or data sub right and then manipulating the index at incrementing by one or decrementing in these little tricky ways but this is where random access memory comes in going from data and leaping all the way to data plus a million and two if it's a big deck with lots of stuff in it that's exactly what we cannot do in the movable feast machine in our asynchronous valuable cellular automata where we only have tiny little local connectivity that's all we can see and we keep saying it's a good thing but then how are we going to do the equivalent of you know leaping out and getting stuff arbitrarily so how do you make a deck with no array indexes no pointers really array array indexes and pointers under the hood the amount to about the same thing and pointer access brings far data near well it seems like what you have to do but we have secret weapons number one we're our only best effort so if we actually get messed up and we can't insert something we can say sorry we can't insert it and we're allowed to do that now we shouldn't say that unless we're absolutely packed full but it's up to us and then number two everything is alive unlike having just the one thing that we're actually doing the algorithm step by step by step we have a bunch of stuff all part members of the same team they can work together to bring the data close so let's take a look at a well let's look at a cartoon first okay so this is the example of bottom up building bottom up so we've got this array this rectangle and these are all unless there's something else in the square this is adadad that stands for atom deck atom deck so this is a rectangle of atom deck atoms and they're going to work together to do the job now this guy here po that stands for plate operator and what that does is that actually coordinates the growing of the plate the moving of the plate up and down and so forth that we have seen in a number of different demos that we're all using the same plate operator so this is how we build up once we've got a symbol basic thing and a you know a group of atoms that can work together to implement a rectangular shape and take care of important stuff like dying cleanly staying in communication healing up when something goes wrong all of that happens at the level of the plate and then the plate operator does operations that need to happen sort of just one at a time like actually moving or growing and then all of that becomes a base layer of competence of knowing how to move that we can add atom deck semantics that's what ads is going to do atom deck sequencer on top and the ads just has to know how to get out of the way when the plate operator is doing something destructive like moving or growing or something like that and we do that and have discussed it in previous t Tuesday updates using priorities and so on and so forth but again that's all kind of working so that the code for the atom deck sequencer can essentially ignore it it just starts up and says you know it can i go ahead or do i need to wait because something else is happening at a lower level is going through so here's where we go now suppose here's an atom this is an atom of something and we the outside world tells the atom deck sequencer wants to insert it on the left say so these two rows up here are the left end of the thing these two rows down here nobody's got anything in it are the right end so we try to plop this thing right down here but we can't just put it down because why well because we don't know what this is the flip side of everything being alive is that everything is alive you know this could be some kind of dangerous fork bomb or dreg that's going to mess things up we can't just stick it inside an arbitrary atom stick it inside our data structure and expect everything to be okay so we don't do it instead we have this two atom molecule a a dimer that called single quote and the idea is we take one arbitrary atom we split its bits basically in half we put part of them in sq1 and part of them in sq2 and then they together amount they have all the information needed to reconstruct one atom the atom that's inserted so what we actually do is we insert and move around sq pairs rather than actual atoms and it's only when someone asks to remove one we take an sq pair out we convert it back to an atom and says okay now it's your problem like that and so the idea is we put these things so we say we insert on the left we might put it down here well now there's a question if we if ads is now asked to insert another one on the left it's going to run into trouble because ads and all of these things can only look four squares away so this guy could go one two three four he could look out to here and so it's okay but you want to keep him in order the first one wants to come off last if we're going inserting and removing at one end so what happens is we want to get this sq atom moved out of the way to clear space right next to the ads so in case there's another insertion on the left there'll be room for it like that and so similarly than they would move out something like this get all nice and spaced out so that there's easy room now how do we make these things move did the sqs the single quotes do they deal with all the details of atom deck sequencing no we don't want them to do that they want to be just general they have very little behavior of their own in fact the only thing that the sqs really do on their own is they know how to die appropriately if something goes wrong around them and they get the signal that they're supposed to die well they take care of themselves and they die that was actually a bug the previous version of the atom deck didn't the single quote didn't work correctly so how do these things actually move they move because of all of these background atoms these are all alive too they're not just you know dead sitting there so they're actually like there's one right here say in between these two and it can reach out this farther and so forth so we get them all going and now second thing is well suppose we've got you know what if the outside world asks atom deck sequencer to remove something from the right hand end the right hand end is down here well there's nothing here but there is if we had wrapped the q around this way and said this is the head of the left end this is the head of the right hand and now both of them one two three four are in reach of the atom deck sequencer so if the outside world says please remove the right side then we pull this one and convert it back into an atom if it says remove the left hand side it does this one if it says insert on the left we put it in here and then what happens well they just start automatically start making space because that's what all the rest of the atom deck does and so forth and it works really well and you know in fact it's a lot more like the way the movie line works right there are no pointers in the movie line everybody shuffles forward same thing here and if the line has to wrap around an escalator and head for the ATM well that's what happens so that all works great and there's one more little trick and since i've decided to do a deep dive into atom deck today i'm going to talk about this thing i mean because now again so suppose suppose we get a bunch more insert on the left like that and so these these guys all start moving around and now this one is going to want to roll down like this and well but suppose something else happens suppose we now get some removes on the left so this one's now out and this one's now out or you know whatever let's say this one's now out and now this guy he thinks he could roll around to the other side if you wanted to it doesn't really help it would be better if he was further down so that he would need to head downhill and get closer to the front by going to the other side but if he's in this case one two three four one two three he can't see this entire other one and we can make it even worse you know if there was a burst of traffic on the left-hand side it might be like this that you know this thing is now how is this guy gonna know let's put it this way all right so so now we've got two guys here so this guy would definitely like to roll around and end up up here over here or something like that but he's not supposed to do it because this is the next guy in line who just hasn't gotten around to walking all the way forward yet but how is this guy supposed to tell the difference between this state where he's not allowed to move and this state where he should move like that so there's one additional trick there is a east empty flag that all of the atom decks have and you can actually see it in the demo and we'll look at it in a second it's a slightly different slightly darker color when the empty flag is clear and a lighter color when it's set so the idea is the empty flag everybody we clear all the empty flags whenever we do anything because that means we don't know the flag is set if we have confidence that everything to our east is empty and so the guy the atom decks at the very end these guys they know they're at the edge of the plate entirely so they go ahead and they set their empty flag and then if this one here is another ad and it looks over it'll set it so gradually the east empty flag propagates in it gets erased whenever it needs so really what happens is this guy says is the east empty flag set in these areas and if it is then it knows it can go ahead and roll around and if it isn't it knows there's something further off to the east that it has to wait for like that and so layer upon layer individual atoms plates plate operators more complex sequencers manipulating the datum which are you know almost completely passive except for dying and so forth so let's look at an example here all right here's one that I grew it from a seed it's already going this is the there's the plate operator it's got a ton of information because it has to figure out you know how much clearance is there around me is there room for me to move is there room for me to grow that's all the job of the plate operator all the the atom deck sequencer which in this case is called the qa I'm not exactly sure why but yeah atom deck sequencer if you can see that it communicates with the plate operator by telling it what the desired size is and at the moment this thing is not big enough it might be big enough let's just let it run a little bit all right there we go all right so there it is and now we've got a single quote atom here it's got a bunch of random bits in there it's got some more random bits over here and so forth so this is a single quote atom that's one step away from it's at the head of the right end of the q and if we let it run a little further maybe it'll get pulled out maybe it'll get moral get oh see well right so I was gonna say maybe moral get put in there but there's only room for one more thing at the moment because our atom deck is not very big we'd like to grow it more off in this direction but that hasn't happened yet so there now it's actually packed we've got the one here and one here there's no room for anything and if an insert comes in from the outside world now in this case the the atom deck sequencer is just making up requests by itself at random because it's a demo you see this is the other point that you know when I give a talk I don't consider it a satisfying talk unless there's a demo and you know why do I like demos so much it's because demos are the way you show how much progress you've made with your bottom up um engineering how many levels you've gotten with top-down engineering you have a problem and then you show performance you know learning rate 97.2 percent world record by two tenths of a percent or whatever it is whereas in bottom up you say look here's a thing it's doing a stupid task random insertions and deletions but look how robustly it's doing it look how it's making room and getting around and so forth it all hangs together okay so in fact that's what was going on and I suppose we could go quick maybe just take a little bit of a look again maybe I'll jump so there you can see it now uh uh there is the uh the white thing is the atom deck sequencer those lighter blue things are single-coat atoms that are in there doing it they're they're they're moving back and forth and wrapping around this one looks pretty full this one's got some extra room and so on so that's it everything is alive everything works together to bring the data where it needs to be it's all it's all betting you know put it put it one square away by putting it one square away there's room to do one more insert while it's still close enough to be removed immediately and then once you haven't got once some an extra one gets in there everybody's social distances down the line and wraps around and then when somebody gets pulled out everybody creeps forward and so on it's nice it's good okay that's the development story uh on the um on the research side I finally managed to get going on the guts of the Linux kernel module for the new clean clean screen event engine redo in particular there have been two separate Linux kernel modules one for dealing with these special pins that were for locking the other one dealing for sending and receiving packets but we really need to get them together so that as a result of these special pins saying you know in the ring oscillator says it's your turn to do an event they need to be able to send packets and communicate back and forth we have gotten to that this is code from the uh the packet initialization thing that goes over and calls the initialization on the generalized distributed ring oscillator side and that is now working as we can see because it announces its activities I'm going to take march off there's not going to be any t Tuesday updates this is the only t Tuesday update in march to focus on really cranking on the stuff I also have some scientific writing I need to do in a bunch of other stuff um so I'm hoping to push this a lot farther so but that's the research story for now on the outreach side you know we have the short story search quiet wake they got rejected by asmo science fiction magazine uh last time I was asking folks what they thought whether I should try to send it to other magazines or whatever among the folks who did get in touch uh they uh were saying yeah submit it someplace else try again maybe shoot a little lower and it was great and there were some suggestions in the discord of science fiction magazines that I've never heard of uh including one called clark's world that seems kind of interesting uh it was also you know a little bit of you know humbling to read about uh because the guy clark who who's the editor of the thing founder publisher whatever it is uh goes on and on in his blog postings about you know people that submit to the slush pile just sending in stuff unsolicited uh you know typically they send in seven and a half stories before they get one accepted and so on so you know here I am you know I wrote this thing sent it off to one place and I'm all ooh because it got rejected it's all right a bigger problem from my point of view is I got some more reader feedback from a friend and I was kind of brutal and accessibility is the problem that you know the story makes a ton of sense to me um but otherwise you have to be really kind of willing to go along with stuff that doesn't make any sense for fair chunk of time reading through the story before supposedly it pays off and it makes sense and uh you know I'm gonna work on in March I'm also gonna work on making it more accessible um it's a little bit challenging because the whole thing is written as if it's in the future so it's a little extra work to figure out a reason to say stuff that would make sense to us losers way way back in the past uh but we'll see and you know who knows maybe I'll even send it off to Clarksworld uh they have a bunch of slush pile readers and they talk about uh turn around times typical turn around times in days uh and that's because of course they're saying no to you know 90 percent of everything so we'll see how it goes so that's the story um the story um and and that is it oh and I finally finally sent out our emails to our two latest uh living computation foundation nerds once again thank you no t tuesday updates in march that's two of them off the next one is going to be april 12th it's like six weeks away yeah i'm stuck uh um and the goals are you know but it would be good to build a third lotus to get us you know really get a little more sizable right get the story more accessible get this new clean screen stuff up to the point where it's actually interacting between uh user space and the linux kernel module and let's have a bunch of fun and hopefully let's not all get reduced to a nuclear sender uh between now and then I hope you guys are all right I will put some links uh down below uh on things that I found for helping out Ukraine you know liberty sounds like a good thing liberty and justice for all I think Ukraine is going to be in the shorter end of that given this current confrontation so let's root for them thanks for coming by folks uh uh I hope to see you next time