I'm very honoured to be able to talk here at the birthplace of Topos's. In light of all the excellent talks, I feel my offering may be slightly more humble, but you know, hopefully be a conjunction of some ideas existing and a couple of new ones will be interesting to some people and they might feel like looking into this further. Okay, so I have some terminology and a disclaimer. There was references to universes and so forth earlier in the week. If you like, take two universes. You're inside V, things in U will be small, things in V will be moderate. Anything not in U will be large, anything not in V will be very large. I won't refer to this again because it's in the background and sometimes you can dispense with this totally, but if it makes you feel more comfortable, take it. Also, unless I say otherwise, all Topos's, and I'm dealing with elementary Topos's a lot, so I'll get into that in a bit, all Topos's co-complete with natural number object, but I don't want to say take a co-complete elementary Topos with a natural number object over and over again. Okay, so the disclaimer is terminology. So here's some terminology which is sort of maybe four or five years old, but not widely circulated. So it's helpful to keep in mind, especially when talking about the relation between sort of forcing techniques which are coming from set theory in particular ZFC set theory and set theory not using set of C. So material sets is where elements of sets have independent material existence. So the elements of a set in ZFC say C is optional or bounded Zermelo set theory with choice, optional again, those who know the history of this area, this one turns out a lot when talking about Topos theory. These are material sets. Their elements are sets too, which are objects of the theory. Material sets is where everything is, there's no good technical definition, but it's roughly where everything is invariant on isomorphism. You don't worry where you say take the rules and then you have to think, do I mean the power set of the natural numbers, the functions from the natural numbers for the natural numbers, you know, the set of all dedicated cuts such the blah blah blah blah blah, you know, it's just the real numbers. It is what it is, they're all isomorphic. I don't have to worry about the elements accidentally coinciding with elements of another set. So structural sets, of course, levier's elementary theory of the category of sets. The primordial example, maybe some variance on this and one that I'd like to advertise called sets, elements and relations or seer due to Mike Shulman whose name we've heard a couple of times already. And this is not published, but it's on the n-lab, yes, thank you. It is a structural set theory that is not a categorical set theory. So you often hear people talking categorical set theory versus whatever ZFC, it's a structural set theory where the axioms are purely on sets, how they behave, elements, how they behave, relations, how they behave, three sorted, it's about four axioms, so shorter than the ETCS list. You know, and after like two and a half axioms, you've got yourself most of a topos. It's really quick. So yes, material sets and structural sets. All right, so let's do some history. Yes? So I've heard that ETCS is slightly deeper than ZFCS. Yes, it's the same strength as bounded Zermelo with choice, but this paper that Ingo mentioned in his talk, Stacks, Semantics and Structural Comparison and Material Structural Set Theories, it gives a formulation in this extended internal language, which is, which recovers full ZFC, a property called autology, and you know, when you can show that formulas are actually classified by sub-objects and so forth, it's very nice. So I can say structural set theory and recover full ZFC strength is no issue with this. There are other people too, like McClarty and others who have come up with replacement axiom analogs for the ETCS. Okay, so a bit of history, but in an a historical sense. So consider the topos of sets and then consider the subcategory of injections and then the pre-order, sorry, the partial order reflection of this is the category of cardinals and the usual order relation, the strict order relation here.  Half of Georg Cantor's life in one line. So the important thing to note is that the power set restricts to sets and injections because the power set of a subset is a subset of the power of the set of the superset, and the universal property here, this restricts, I want to call this on this side, so everything here is classical. We'll get to some more general topos stuff later. And this here is the continuum function, and of course the continuum hypothesis was, what value does this take when you plug in the natural numbers? Is there sort of some A and these are strict inequalities here? So as we all know, Gero constructed a model of ZFC where there is no such A. Any such A that's in between here with potentially equality, it's either the natural numbers or its power set. And then Cohen came along and gave us forcing and he said, well, I can construct a set A, well, construct a new set of a new model of set theory and I build it explicitly with a set A in here with these two different. It's a very nice write up of this in Mordech and McLean's book from Category Theoretic point of view, but they have some nice historical comments and so forth and they say you can actually see the shadow of the topos theoretic argument in Cohen's paper. I'll get to that in just a moment. Because there's a more general question. This is a class size partial order and you have an endo function, what can this endo function do? Given that we can find different categories of sets where it may exclude, it may miss values, what can it do? So there's two cases. So let's say behavior, there's two cases. The regular case, so these are technical conditions, singular case, so these are conditions on cardinals.  Other things is like ALF sub omega, if that means anything to you. Singular cardinals are sort of weird, this is hard and open. This is solved, or Eastern. We know exactly what the behavior of the continuum function is on regular cardinals, in the sense that we know, we can characterize precisely what behavior it can have, what it can't do, et cetera. So, yes, and people like Sheller, Sheller himself literally writes hundreds of papers on this, but other people write hundreds of papers generally, trying to attack this problem for the singular cardinal hypothesis and so on. So why is P so important? This is a set theory notion, why do we care about it as Topos Theorist? So here's a definition of an elementary Topos, because I don't believe we've had one, well, I think one was given in another lecture, he wasn't happy with it. Here's one I'm sure some people may like, finite limits, power objects.  Finite limits is pretty weak, everything else comes from the power objects. In fact, you can relax this even further, but then you're starting to get silly. So this is saying, you know, for all objects, X, I have another object, PX, a relation from X to PX, such that any other object, Y, a relation from X to Y, there's a unique map, F, and such that this square is a pullback. So this is just, all the magic happens from this, it's just incredible. So looking at the behavior of the power object functor, or the power set functor in the set theory case, you know, somehow it has incredible freedom, as we see from the set theory, but in fact it gives us lots of structure, so it's good to sort of understand what's going on here. I mean, this is solved purely in classical logic with choice. If you throw away choice, set theorists run screaming from the room and say, I don't know what co-finality is, it doesn't make sense. Why do you want to do it? I don't know, maybe. So there's, alright, so forcing, I've got to talk about forcing. So forcing is chiefs, this is full stop, there's nothing mysterious about it, details perhaps, but here's the cartoon I'd like to draw. Start with ZFC, start with a small partial order, and it's a site with a double negation topology, take sheaves on it, ignoring that. Alright, now you have two options here. You can take internal logic, and then you just reason in that, it's perfectly good, and then you perform a construction due variously to coal, Mitchell, OCS, Forman and Hayashi, use facets of it, and then you get what the set theorists call a Boolean valued model of ZFC, and the Boolean is the topology on this partial order, take the Boolean algebra of regular opens, and then this Boolean algebra is where your truth values lie. Another way to do it is go further, take, let's see, partial order with top, I mean, yeah, post set, it's without loss of generality, assume it's got a top element, but that's, yes, any small post set. And what is the double negation sign for post set? So this is the site, this is a small site, double negation topology, sieves are downward closed dense sets, so there's an analog of this topology for arbitrary categories for the dense topology, it corresponds to the double negation topology when you pass to the pre-sheaves on that category in the sort of Vietzioni topology sense. So, yeah, partial order, think of it as a category where, like this, and you have a top element and you think of it as being going down, and the further down you go, it tells you more and more partial information about the things you get in here. Okay, so that's one thing to do, I don't know if you want this, or you take in your category of sets, the external sub-objects of the terminal object, and you take a filter, so this is a bit like a point, but not quite because you require different things on this fire, and you can perform what's called the filter equation construction. The details are not important, but this here is now well pointed. The internal logic and the external logic now agree in this category, and so you can reason exactly as if you were in the internal logic, but you just go, well, this is how the objects of this topos works, and then you perform this construction again in various of these various people, and then you get, you know, the forced model. So set theorist will sort of flick back and forwards between these two very points as convenient. Now the thing is these dotted lines, this is a rather delicate and complicated construction involving transfinite well-ordered rooted trees. Set theorist don't like it if you say that set theory is a study of well-founded pointed trees, but it's not really, but that's what they're studying. So this is the step that we like, and perhaps just tack on the internal logic, because that's where all the action happens. Yeah, and if you read Cohen's paper, you can see he's describing, you know, exactly these constructions in some sort of senses, like McLean mentioned. There are all sorts of variants. You can consider a topological group acting by automorphisms and my partial order, and then consider equivalent sheaves, this is called symmetric submodels. You just take a topological group, full stop, and consider continuous actions of this. This is what are called permutation models. They don't give you models of ZFC, but with atoms. So this predated Cohen by about 40 years, and it's basically forcing, but set theorist like that's not real set theory atoms. So, but it fits into the category theory picture perfectly well. Okay, here's the important point. Taking a poset can only affect set many, you know, the values of the continuum function. You know, if we start with a model of set theory, look at the continuum function, do some forcing, the continuum function changes, but this procedure with a poset can only affect set many. It's a particular bound above, based on the cardinality of P. The problem is Eastern solution involved adjusting a proper class of regular, the continuum function at a proper class of regular cardinals. So you can't sort of go, you know, literally you can take all the regular cardinals of which they're, you know, I can't say most of the universe, but it just keeps going up. He was able to shift them, you know, subject to the hypotheses of this theorem. No, no, that means a set. There's a set, and that is the cardinality of the number of values of the continuum function which you have altered. So you can't affect arbitrarily high values of the continuum function by taking sheaves on a small partial model. Okay, and what he did, he did, you know, he genuinely did it. He adjusted a proper class of values of the continuum function one at a time. This might make you pause. Discussions with us. Okay, question. Yes, please. Yes. Okay, speed it up. All right. So there's a notion, there's two notions from SGA which I found which are very beautiful. So there's notion of four topos. This is for growth index and so on. This is because they are thinking growth index topos. And so for us, this is an unbounded set topos. So this is a topos with a geometric morphism to set, but E is not a growth index topos. In particular, so the example they give is you take a large pro group and then you consider, so again, universes as needed, you take the limit of this pro group and then you consider continuous actions of this. And this is, you know, up to some small care as to what you mean. This is a perfectly good locally small category which is a topos with a geometric morphism to set.  And more over, if you write down naively a site of definition for this, it is indeed a large site. I have an application of this in paper in Studio Logica early this year. Actually, it's quite nice. And it uses this unbounded quantifiers internal logic. This is too restrictive. This is not what Eastern used. Consider, let's see, filtered and well founded category, initial object. You can consider a diagram of sites. And I'd like to advertise the morphisms which are vibrations of sites due to Mordak. You can take sheaves, go to topos with bounded morphisms. And this is an example, well, it gives rise to an example of a fibred topos, also an SGA4. And they consider the case where r is small. And you can take the total topos or the lax in particular case, probably want the pseudo limit of this. And they get a topos and people have apparently applied this in a direct geometry. But if r is large, you can't, you just can't do it. If you forget to, in fact, you probably want, sorry, bounded. These are growth index topos. This is sheaves. So this morphisms of sites, so this is probably what you'd call a morphism of sites in the growth index style. But in fact, this is just the right adjoint to a vibration. And this notion, if you think of sites as like a basis for a topos in this sort of sense, we've heard today, a vibration of sites is almost exactly analogous to Jordan normal form. I mean, it's not true. You can pick C, just pick a basis for one of your topos and then you pick an internal side of definition for the topos sitting over the sheaves on this. And then you can pull this down and you get a very nice expression. We have these adjoint functors with cover preserving properties. You can characterize, it's extending this site characterization to characterizations of geometric morphisms by these particular vibrations.  It's just, I think it should be advertised more widely given this sort of viewpoint of sort of using a basis. Okay, so get back to here. What is it, CC? Co-continuous Lex. And this is, this is now a very large category. So I'm thinking of topos is I have sites and then she's over them, see it on here. Lex is sort of starting to creep up just one more universe. So what is the two category then? This is, this is normally means left except, but if you are talking about co-continuous, then you are calling it probably as well. Yes, because growth in topos is co-complete and I'm taking the inverse image function here and I take the two arrows which make the conventions work. We've seen there are different conventions, you pick the one that works. So what is the Lex, what is Lex? Finite limits, co-limits. I mean it's what you might call a presentable category, but minus the actual presentability. Because these are, they factor through presentable. This sort of algebraic notion, but I want to go to the Lex because what happens next is I take, so let's call this big diagram E and I'll let E star be opposite. So R to Lex CC, R is a filtered, well-founded category with, think of it as the ordinals with, sorry, initial object. Initial object, not a zero object. Initial object, and then you have a map from this to, to sides with vibrations. Yeah, and then you can take topos and then you forget, you just take inverse images, the inverse image part. These are like the algebraic viewpoint on topos. I'm forgetting the direct image functions because the direct image functions will no longer exist in the next step. And I take the co-limit over R of E star from R. Now this is not a locally small category in general, but you know you have some universes or you take the first order theory of categories and this is what Eastern does. He picks an appropriate R, in fact it's just a class of regular cardinals. He defines appropriate sites which you know affect one regular, one value of the continuum function at a time and then he takes a co-limit. It's affecting all regular cardinals sitting in my diagram category. That's a two-kategorical co-limit. Yes, that's pseudo. So sometimes I call this the Eastern, it's not a topos, a priori. So you've got to say the theorem. So I mean he has very specific choices, yes? So E is, it's almost a topos, co-complete, hiding pre-topos with finitary, finitary w-types, e.g. a natural number object. So this is the internal logic here is first order intuitionistic logic. We have hiding algebras as your sub-object lattices. W-types means it has algebras for initial algebras for polynomial functors associated to maps which are numerals in a slice category. So very, you know, literally a finite polynomial. Natural numbers are an example of this. And if, if, so notation is above, so, so for every indexing object, every topos, every object in it, and I say power set of x is eventually constant, and you can formulate this in a, in a, just a straightforward technical sense. It means as you keep going by your inverse image functors, eventually the power object stabilizes and then is isomorphisms all the way up. It doesn't change. Hey, oh what for a moment? If this is true, then he is a topos. This is exactly the condition that Eastern finds and characterizes the special case of vibration of sites in that he's using that makes this work. And he's doing localic topos, so all he needs is not for every object in the indexing category, but just in the base category. So if every set in my base category, if its power set eventually stabilizes after passing by the inverse image functors after this class long diagram, then he gets a topos. So you get power, so adding power objects, so all you miss are this. So the sequence of the power objects of the representables has to be used as the stabilizer? Yes, yes, exactly. And in fact you don't need all of them, you can just take some co-finite sort of collection inside the, inside the order of cardinals. For large enough, you don't need to check all of them, you just need an unbounded sequence of cardinals. So here you don't have internal, you don't have internal homes, but adding a power set you get all the topos set structures, but I think I'm over time, so I was going to give, explain Eastern's example of how he characterizes this eventually constant in terms of properties of the posets, but you can see me if you're interested. Thank you very much for your time. What was the, can you recall what was the notion of vibration of side? Ah yes, yes. Let me just, so P is a vibration of categories, so you know whatever Cartesian lifts so on. It is left adjoint to a fully faithful functor going in the other direction and T preserves covers. You're speaking now about sites or topos? These are just sites, these are just sites. So I didn't write the topologies here, but this is the underlying categories and yeah these are, there are topologies here in here. And there are no special assumptions like if this is a finite limit? No. But without loss of generality, if you have complete freedom you can actually choose C and D to have finite limits if you like. But there are important cases when they don't have them, so it works in more generality. Because the notion of reserving coverings is not as good, so if you don't find it. Yeah, it's like flatness or something really. Yeah, yeah, yeah, yeah, yeah, yeah, the image of a covering sieve generates a sieve and you know various things here. So it's in Mordak's, it's in the elephant and Mordak's paper from I should say what year it is to site, site, site, site, site. 1986. So this is a very nice notion and it's only in his paper and in the elephant, and the elephant doesn't elaborate on his paper. So I think it should be pushed more because it's quite a useful technique. So is the category well-powered the one on the left, like what that you get when you're hiding? Here? If it's a co-complete hiding grid topos, you're not okay.  So it's sort of like small, sort of small hiding if you like. Yeah, and it's not even well-powered once it becomes a topos, but it has power objects and it's because of this lack of local smallness that you don't get the adjoint functor theorem to get all the direct image functors that you might think from the co-cone of the diagram. So this is some like a limit except it's really only in the algebraic morphism of topos sense. You can't find the right adjoints. Bounded morphisms. But for all morphisms, if you use your Schultz-Groentz-Tropos sense. Yeah, yeah, yeah, but that's over set. I mean that's like topos slash set. Groentz-Tropos is over set, then automatically morphisms between them are bounded, but I have to forget set anyway, because I no longer have the right adjoint, the global section is functed down to set. So I have to forget that I'm sliced over set. This is definitely because of the size of the issues. Yeah, so I probably have something like up here instead of like top over set, as you know, Groentz-Tropos is, I have lex categories under set. And so I have constant sheaves that are in this big, big topos curly E, but I don't have global sections. Yes, when you say co-completes the topos, do you mean what Peter Justin called a infinity pre-topos or is there a problem with that? Oh yeah, yes, no, sorry, yeah, it's an infinitary pre-topos, sorry. So they call it an infinity pre-topos, but we have infinity topos. So yeah, co-limb, all co-products, small co-products. Yeah, the co-compolises you'll get for free because you have a natural number. Yeah, you can generate equivalence relations.


From a kid on a banana seat bicycle with training wheels, to the 2001 World Mountain Bike Championships, Allison Dunlap has never ignored her dad's advice when he told her, Don't Stop Peddling. During her freshman year at Colorado College in Colorado Springs, Allison was the last women's soccer team player to be cut from the team. Allison soon discovered cycling at the college, and became the only female member of the cycling club. By her senior year, she became the women's national collegiate champion in road racing. Five years later, Allison competed at the 1996 Atlanta Olympic Games in the women's road race where she finished 37th. She then began dating professional mountain biker Greg Frosley, who is now her husband, and she began to realize her potential as a mountain biker. A sponsorship with GTBicycles helped launch her entry into mountain bike racing. Of course, the rider on the front there, Allison Dunlap, the new road rider who's changed over to mountain biking on the GT team. In 1997, in only her fourth World Cup competition, she surprised the competition by winning the race in Budapest, Hungary. Then, in 1999, Allison won her second World Cup, a gold medal at the Pan Am Games, and became the US national champion in mountain biking. I knew that if I wanted to win today, I had to be the aggressor, and so I attacked her half way through the second lap and dropped her, and then just powered on to the finish. By the end of the 1999 season, she was the number one ranked US rider. Allison went on to win 12 more national titles in mountain biking, a World Cup overall, and a World Cross Country mountain bike championship. She also was the sixth time national champion in cyclocross, and represented the US in her second Olympics in Sydney, Australia. After a four-year retirement, Allison came back in 2009 and raced cyclocross for the Luna team. I can see why people come back, you know, because you really, you know, like I have a passion for the sport, I just love it. After getting fourth at the national championships, she retired from racing in 2010 after the birth of her son, Emmett. She started Allison Dunlap adventure camps in 2003 and has been coaching cyclists full time since 2005. Allison also runs mountain bike skills camps in Moab, Utah, the same place where her dad first took her backpacking in 1974. Allison currently lives in Colorado Springs with her family, and she has never stopped pedaling.


We were just helping Sarah with her tree skunk problem. I wouldn't call it a problem. It's an occasional thing that does happen where my dog chases a skunk into a tree. Dog gets sprayed by a skunk. Don't do like I did.  So I had two dogs. I thought that only one was getting skunked, but it turned out the other one had already been sprayed and he ran in the door behind me and then just rubbed his doesn't like to be wet because he's like a little cat dog. So then he rubbed his little body all over everything. I mean, I literally had to throw away furniture. Like I had to ditch the couch. My son's bed had to go. Carpets had to be professionally cleaned. However, I'm going to shortcut a lot of that for you because the key is a thing called an ozone generator, which is the little box that generates pure ozone, which is totally toxic. You have to leave your house when it's happening. And I was like, I don't care. It's already been bombed by a biological terrorist. It is my mother's maiden name. Correct. Excellent. And now I'm in and. Tarn it. Rowling. I just gave them are my second factor. Crap. The worst second factor to use. What? Yeah.  Mike, you're the worst. Yeah. And you know, some of those inches don't apply. I've never had a first dog. Yeah. Oh, I had never had parents. I'd never had a first city. I never lived on a street. Never went to school. I wasn't born on this planet.  Yeah, yeah, just doesn't apply. It's so weird. Roger, the eternal. Yeah, we get it. No spoilers. I'm sorry. Sorry. Have you guys. Do you guys have a leader in the clubhouse on on the new Facebook parent company name? I like the verges idea of horizon. I feel like that that has to be the betting favorite. Right. That's that's obvious. Yeah, that's the odds on favor, right? My account says since Google took alphabet, Facebook will call theirs number set. Yeah. Real or imaginary? I think it should just be the hundred emoji. The actual emoji. Just the emoji name. That'd be amazing. If it's like I'd what if it was all just the thumbs up? Yeah. Oh, dude. Rocket thumbs up is the new name of our company rocket thumbs up. And it had an all of them had the two colons on the either side to like indicate that it was an emoji. That's that. Yeah. That's how they fill in the SEC filings. Yeah, the style guide on how do we God that would actually. All right, if again, let's go to the most cynical world where there's like some some succession level scandal that's going to break on Monday and they want anything to do to just do the conversation away. Like renaming the parent company and emoji would tear the internet apart. Like it would swallow the sun.


Although again, even in the United States, there's a real sense of lose win of zero of some thinking, and in Europe that has become dominant. And I think you're seeing that frustration, that angst among people who don't quite understand what is going on, who don't know why this is happening, and what is happening. You're seeing that all over Europe. And I think the latest manifestation of that, we'll talk about two manifestations of that. One is the growing farmer's strikes really all across Europe. Right now, what's making the headlines in the United States is primarily the strikes in France. I think the latest headlines were something like French farmers are basically surrounded Paris, and Paris is on the siege, but that's just histrionics. But there is, you know, Paris farmers aren't so clean the capital. I think police are preventing them from actually blocking in and out of Paris. But they are out there, tractors all over the place, and they're protesting, but it's not just in Paris. A few weeks ago, the same phenomena was happening in Germany. If you remember last year, we had a big uprising of farmers in the Netherlands that led to a major political win for them last year. You're also seeing farmers take out the tractors and go out into the roads in Greece, in Romania, and I think in much of Europe. So this is now Spain. This is a European phenomenon where farmers are protesting. And you can see kind of the thinking and the zero sum thinking and the distorted thinking in what they're protesting about, because what you get is a mixture of things that are true and right and things that are wrong and distorted. So what are they protesting against? On the good side, much of the protest, and this goes back to the Netherlands, much of the protest is about environmental regulations that are making it more and more and more expensive for the farmers to actually produce their crops. So they're protesting against the climate change regulations, the environmental regulations, the regulations regarding all of that stuff, they are upset about and they want the government to reduce those, that's good. Generally they're upset about bureaucracy and growing bureaucracy and growing difficulties for them to be able to grow what they want, sell what they want, get to market what they want. So just kind of the bureaucracy is bad. And then in addition, on the good side, you would add, you know, they're protesting inflation. As most of us would want, you know, they're protesting the fact that a lot of what is going into raising crops and to growing agricultural products, all the inputs have risen in price and they're complaining about that. And so they have, you know, of course they can also sell for more expensive. Food in the grocery stores is more expensive. They're selling food to the grocery stores more expensively. So farmers in Europe are passing on the cost of inflation to consumers, there's no doubt about that.  I don't think the profit margins have gone down because of inflation. Businesses typically pass on the cost of inflation to consumers. Inflation is a cost borne almost exclusively by consumers. Unless, you know, government is putting price controls. On the negative side, the other two things that they're complaining about. One is reductions in the EU on subsidies. They want more subsidies. They want to be subsidized to a greater degree. They want some of the zero sum thinking, some of the zero sum dividing up of the welfare state to come to them. So they want to be subsidized. The French farming industry has been subsidized for many, many, many, many, many decades. And they only want more. They don't want less. And this is, of course, again, the kind of thinking there's a pie out there. The government has all these revenues.  We're not getting enough of that pie. We need more of that pie allocated to us. And then finally, in what I think at the end of the day, they fear the most and it causes the most discontent. And again, zero sum thinking is the protesting against competition. Competition from outside the European Union, the competition from Ukraine. Ukraine is selling a lot of its agricultural products into Europe because it's much more difficult to Ukraine to sell by shipping through the Black Sea. They still do, but it's much harder with the Russians there. And the EU has loosened up a lot of the import controls from Ukraine because of the war. So there's a lot of agricultural product flowing in from Ukraine that didn't flow in before the war started. And then the rest of the world. And you know, there's a lot of producers out there in the world to produce food a lot cheaper than Europeans do. The Americans are somewhat limited because the Europeans will not allow in GMO, which is another thing that keeps them backward, if you will, European farmers, they're not allowed to use GMO, generically modified organism, generically modified food stuff. In the US, of course, you're allowed to, in Asia, they use it a lot. And of course, it increases yields, it produces in some ways better crops, and it's a huge cost advantage, which the Europeans don't have. But look, they also have massive food production going on in Africa and in non-EU parts of Europe, which they have to contend with. And for that, there are massive tariffs in place. There are very large restrictions on importation of food into Europe. But the challenge, of course, there is that keeps costs up of food in Europe, your food costs are very high. And some food comes in anyway, because it's so much cheaper to grow it overseas that even with the tariffs and restrictions, some of the food still makes it in. So tariffs are going to be, and trade is going to be a big issue for farmers moving forward. I mean, look, one of the great travesties today are the other tariffs that Europe places on food and on agricultural products. Imagine if those tariffs went away. A lot of French farmers would lose their jobs. There's no question about that. But France, France, one of the most advanced, richest, freest countries in the world, is really way too agricultural. There are way too many farmers in France. Usually developed, advanced, technologically sophisticated, relatively wealthy countries are not doing agriculture. France does do agriculture, continues to do agriculture. It's not its comparative advantage. Imagine, and I've said this in Europe, when I do my European tours, I say this to audiences, imagine how much cheaper food would be in Europe if they dropped the tariffs, if they actually competed on 11 playing field with Africa and with the rest of the world in food stuff. First of all, it would provide Africans with huge amount of income. It would probably drive Africans out of poverty. There are massive, there's a massive ability to bring industrial farming into Africa. There are vast areas that could produce huge quantities of food and grains for consumption in not only in Africa, it would lower the prices in Africa itself, reduce the problems of food shortages in Africa, but it would also reduce the price of food dramatically in Europe and raise the standard of living by reducing cost. Many farmers would lose their jobs and they would have to find more productive activities, but they are more productive activities. That's the beauty of comparative advantage to which the Africans have. That's the beauty of trade. That's the beauty of specialization. Europe does not have, given the cost of land, given the cost of capital, given the cost of everything, Europe does not have a comparative advantage in food. Maybe wine in France and Italy and Spain, I don't know, Portugal. Europeans do make great wine. But that's about it.  I wish they didn't advocate for more subsidies and more tariffs. If they just advocate for doing away with the regulations, that would be great. And ultimately, what we all should be advocating for is to get rid of all government involvement in agriculture, get rid of all government intervention in the growing of food and let the markets work and let the global markets work. Imagine how much richer. Imagine how much richer we would be if we actually had free trade. Not selectively, not when we choose to, not once in a while, but really free trade. Isn't it interesting that the European Union means free trade, zero tariffs inside Europe? It's good for the Europeans to trade with one another with zero tariffs. Why not extend that to the rest of the world?


Great. So I'm delighted to be here to give this short talk about perspectives on the future of evidence synthesis in my role as editor-in-chief of the Campbell Collaboration for the SMART conference. So first I just want to declare my interests. I have main role as editor-in-chief of Campbell Collaboration. I'm also involved in various Cochrane groups and have had funding from CHR, WHO and NIHR not for this talk. So why do we need evidence synthesis? I think you've probably all converted and some of you may have seen this quote, professional intentions are not sufficient for selecting policies. Actually, well-intentioned interventions can cause more harm than good. Scared street programs are one example of this from Campbell systematic reviews where juvenile delinquents are exposed to prison and this actually resulted in more crime. In the social sector, almost 80% of programs don't work. So we need evidence synthesis so we can identify those that do work, identify how they work and in which circumstances and for which populations and also how to make them work better. So evidence synthesis is a way to bring together everything we know on one question. The third reason for evidence synthesis is collecting all available evidence. If we didn't do this, we could make the wrong conclusion. The Cochrane logo is a perfect example of this where in 1972, this is a logo which shows a meta-analysis of corticosteroids for women about to deliver prematurely. In the logo, each line represents a single study and it's confidence intervals. In 1972, the first trial showed an effect on mortality but subsequent trials, and you can see these in the middle, actually showed not statistically significant effects and when meta-analysis was finally done in 1991, this showed a 30 to 50% reduction in mortality of children. So where are we now with systematic reviews? Some of you may have seen this slide by John Ionitis. There are many, many, many systematic reviews and meta-analysis often on the same topic and with different fine needs. Just as a more recent example, hydroxychloroquine for COVID-19, which we know is not effective, has over 176 reviews and that's just in the last year and this is from the epistemological database. So what do I think about the future of evidence synthesis? I think we need to think about four things, timeliness, replicability, stakeholder engagement, and the evidence ecosystem. So first, when we think about timely, the time to publication of Cochrane reviews was 1.63 years. For Campbell, it's about the same. A quarter of reviews are not published after seven years and it takes almost three years for updates to happen. So how can we improve? I think most of you, again, are the converted. There are many ways to bring automation into systematic reviews as well as crowdsourcing to bring many hands to bear. James Thomas from the EpiCenter published this article three years ago on how automation could be used in each step of systematic reviews. This is obviously moved on since this article. In Campbell, we're working on evidence and gap maps, which are a map of all the evidence. Each of the circles in this graph represents studies or systematic reviews on homelessness. And this map was actually used to complete three systematic reviews in less than a year just by making all of the studies discoverable. One example is a review on discharge planning for people who are homeless. So future proofing time on this. Campbell's working on evidence and gap maps. We're also looking at a policy paper with evidence synthesis international to bring together the different organizations that do evidence synthesis. And the hackathon and I want to go through this with each of my topic areas. The hackathon is working on connected tools in R to expedite and make reviews more efficient replicability. Most of you will have heard about the reproducibility crisis. This is pretty old now six years, but we still have this issue, especially in the social sector, replicability of primary studies is an issue. But what about systematic reviews? Myself and colleagues led a paper on when to replicate or not replicate systematic reviews. And through a consensus and evidence driven process we came up with four criteria. The first that they need to be high priority. The second that they will have an impact on changing uncertainty about the decision. The third that they will have a large population impact and that could be benefit or harm. And the last that opportunity costs outweigh other things that could be done with the time and resources. Another way to think about replicability in systematic reviews is how do we make our reviews more open. And you'll probably hear more about this from Neil Hadaway. This is his framework for open synthesis that we need to think about much more than just sharing data, but also open discovery, open methods, open source, open code, open peer review and open education. So what are we doing for future proofing in Campbell we're encouraging open synthesis and hoping to move to expecting data sharing this year. In the hackathon we held in 2019 series of discussions about how to promote open practices with academic incentives for both primary studies and for systematic reviews. Stakeholder engagement. Again, you've probably heard a lot about this. There are many levels of stakeholder engagement, but co production remains at the, at the top. In systematic reviews, we're often thinking so much about the details of getting the review done. We sometimes fail to include the people who are affected by the review questions. For example, we currently require stakeholder engagement and the development of our evidence and gap maps, especially in the development of the framework of the outcomes and the interventions that are important for stakeholders. We're, we also have four systematic reviews registered on how to engage stakeholders and the impact of engagement on systematic review outcomes in the hackathon. There is work on going to support engagement such as crowdsourcing, especially for screening and data collection steps. I just want to raise this issue of evidence ecosystem. I'm sure you'll discuss this in the conference. We think about the evidence ecosystem is beyond just systematic reviews. We also have the public that uses reviews we have the primary studies. Other things which that collate the findings of the reviews so guidelines and checklist and portals at the hackathon in 2019. We carried out some foresight planning about the ecosystem and how to improve it and how to save off some of the possible negative future scenarios. And this is a report we published last year in Nature led by Shinichi Nakagawa. And you can see that we have the public, the stakeholders at the beginning and the end of the process. And we also think about how do we make the primary research more available for synthesis? How do we make the synthesis more available for the public? Another way of thinking about the ecosystem is systematic reviews are part of a bigger picture. And in this pyramid that Howard White developed, he's the CEO of the Camel Collaboration, systematic reviews are pretty low down in this pyramid. And what he postulates in his paper is that decision makers actually need more packaged evidence. So things like evidence portals, guidelines and checklists, which tell decision makers what the evidence, the policy implications of the evidence are. And so we can't stop at systematic reviews. So one example of a portal is this Education and Downman Foundation portal, the teaching and learning toolkit, which has boiled down systematic reviews into three numbers. Cost from 1.5, evidence strength from 1.5 and impact in months of education. And you can see how this would be immediately very appealing to decision makers. But it's extremely labor intensive for the toolkit developers to come up with a formula to summarize these numbers. So what are we doing for the ecosystem? In Camel, we're building links with portals such as the Education and Downman Foundation so that it's built on rigorous systematic reviews. We're also exploring guideline development in the social sectors. What do we do at the hackathon? We looked at foresight planning about how to improve those links across the ecosystem. So the future of evidence synthesis, I think we have an agenda of improving timeliness, replicability, engaging with stakeholders and thinking of our role in the evidence ecosystem. And I hope that you'll join all of us in the evidence revolution of taking these steps together. Hackathon is one way. We'd also really invite you to join Camel and decision makers at the What Works Global Summit, which will be held online in October 2021.


So, any questions? No, okay. We changed the world of soccer and I want to take you on a very personal journey. In 2005, I was elected as one of the best soccer players in Northern Germany. In 2010, I played in the German youth soccer league and attended the elite school of soccer, which is actually something. But just three months after this photo, things have changed dramatically. And I considered myself actually in 2010 as the next David Beckham, so I was like a really rising star for myself. But just three months afterwards, I had a new head coach with whom I couldn't get along and I lost access to my most valuable resource during that time, professional soccer coaching. Now, 10 years later, we are back changing the way how soccer is being trained and played, giving everyone access to professional soccer training regardless where you are or when you can train. My name is Leonard and I'm the co-founder and CEO of IOTUS and IOTUS stands for IOT in sports. So, before taking you to the future, I want to take you back to the 1930s because soccer started a bit different than it's today. This is one of the soccer balls back in the days. It has actually two problems speaking in startup language. First problem, you couldn't see the ball on a muddy pitch. So, a big problem in the afternoon and evening because you couldn't play soccer anymore. Second problem, especially in Helsinki during the winter time when there is rain because this is a leather ball from pig bladders actually and it would double in the weight. Now, you can combine a leather ball full of water and freezing temperature in Helsinki combines and ends up in an ice ball. Basically, this thing killed people. If you would do a headshot, either you would fall unconscious or some people told me they even died. So, it has like two problems basically speaking in problem solution language. But people actually attended Slush six years ago and they came up with great ideas and great like new ideas of thinking. They came up with a scientific soccer ball. So, we had two problems again, color. You didn't see the soccer ball and kind of the problem with like health issues with headaches and stuff. So, they came up with the scientific soccer ball. You couldn't from now on change the colors, adapt it. You could make new great designs and actually sell way more. This was the first problem solution. Second, it was not anymore heavy. So, it was now not anymore absorbing water. It was all the time the same kind of standard and people started to standardize soccer balls. This was for the last 40, 50 years. Obviously, with changes and so on, but the overall like idea of soccer balls was the same. Today, we are super proud to present you the next step in the evolution of soccer balls. It is the step from a normal phone to a smartphone, from a normal watch to a smart watch. It is the step from a normal soccer ball to a smart soccer ball. We are super proud to present to you today the IOTUS One. It is a normal soccer ball, just super smart, connected to the internet, and combined with a highly gamified training application. Very important, it is a normal soccer ball. There is no change. It's no impact on the form factor or the overall dynamics of the ball. We did actually a lot of blind tastings and people can't find out the difference of the soccer balls. We have tomorrow a demo booth at A6, just two aisles in this direction. You can find it out, and I bet money, OK? So you don't see the difference. Having said all of this, I want to show it to you, actually. This is my lovely bag. And I brought it to you as a bit of an excitement. Perfect. Thank you. So this is one of our soccer balls. As I said, it's a normal soccer ball, no difference. You activate the soccer ball three times bouncing. Because normally it's sleeping, now it's activated, and you see here our wonderful application. The application has a variety of exercises that are all science-based, first of all, and secondly, a proven way to get better faster. So we are now choosing an exercise I go for, let's say, toe taps. Perfect. What a coincidence. It's doing what I'm saying.  So again, this is one of the exercises, and I'm making one of these exercises. Not too many people know this exercise, but this is one of the signature exercises to get better on an individual level.  There is no hidden camera. There is nothing in the ceiling, not behind, not just the soccer ball, and the super cool app. The sensors that are integrated are connected through Wi-Fi to the application. And if you have finished the workout, you can share, compete, or challenge with your friends. So now I'm a bit sweating. So this is actually the exercise that we've done right now.  You don't need Wi-Fi access. You can do it in the forest. You can do it on the pitch just behind you. Doesn't matter anywhere, anytime. If you're wondering, maybe you have kids, cousins, whatever, if you can buy this for Christmas, again, boost the next door tomorrow, and it's a great idea. Second, I want to show you how we do it. Because we are, in the end, not really a ball manufacturer. We are a tech company. But we partner up with big sporting good companies. And we sell our technology similar to the Intel Inside idea to those big tech companies. We put a sticker on it and say, this is IOTA's inside. Now it's smart and connected. The second step is the onboarding of the athlete into our training application with games, challenges, feedbacks, and, again, all professionalized. So this is really a coach in the pocket. And the last step is providing the data to soccer clubs, federations, coaches, and big corporations for partners. Our technology, and this is actually great, is applicable to all kind of sports. We looked into soccer because it's just the biggest sport in the world. We can apply it as well for volleyball, basketball, and even golf. The technology is always the same idea. Put sensors in something that is moving and build a training platform behind it. Our soccer ball here has a bunch of really cool futures. First of all, it measures 1,000 frames per second. You can even measure the air status of your soccer ball. It's pretty much like in the car. And you get an alarm alert when it's too low. Further, we have an AI-based coach that is at some point in time smarter than yourself because it knows where you need to improve. So it's really all combined within this soccer ball. Summarizing a little bit what I've said so far. First of all, we have world-class coaches on demand, science-based. We partnered up with the best soccer clubs and the best soccer players and coaches to design this stuff. Second, gamification. What we learned in all the interviews that we did. People stopped doing learnings online or coachings because of one single thing.  We are habit-built beings. This is good and bad. It's bad because we don't stick to what we said we want to do. So gamification, that's what we learned, is the number one source to overcome this kind of habit problem. And the last bit is our soccer ball. It's a little bit more expensive than a normal soccer ball. But again, there's actually no point in the future of buying a normal soccer ball again because this one has actually electricity, sensors, and an internet connection inside for a little bit more of a price. Summing up with where we are at the moment, we have raced in the beginning of this year 3 million from one of the finest sports second vessels of the world. We have partnered up with the Volkswagen-owned German soccer champion for Wohlzburg. We have partnered up with Riedl Communications, which is one of the sports tech leaders worldwide when it comes to what is actually happening on the pitch. So we are looking later at a later stage, eventually as well, on the professional side at the moment. It's just B2C. And we have signed a partnership, and this is super important as an early-stage company, with one of Europe's biggest sporting good brands, Erima in Germany for amateur soccer players. We are a team of 11 full-time employees. And quickly, my lovely founding team, Peter, is here as well. I love them. Marcel is one of the best sports tech professionals in the world. He's living in Berlin and worked his whole life in sports. Marcel, I'm a Forbes 30 under 30 and worked in venture capital. Peter did his PhD. He is in the back there. He worked or did his PhD at one of the best sports tech universities, and Christian is a serial entrepreneur. One last thing that I'm done. This year is the World Cup in Carta. And the whole smart ball industry will change from this moment onward, because there is a smart soccer ball used with billions of people seeing smart soccer balls for the first time in their lives. Our industry will change after this winter forever. It's similar to the early days of the internet. Thank you very much. Booth A6 tomorrow.


John Fisher, my name, I just volunteer here at the museum. We come in and do certain things on all the airplanes. Just as work comes available, we do it. I came out here to work on the C-47. It was just a new airplane that had been given to the museum. And we're working on it now, getting it ready for the show or to put on display. I've always been interested in airplanes ever since a young kid. And when I got out of the military, I wanted to go to get my private license and go into aviation. After the tour in the Army, I went to aviation school and became an aircraft mechanic, pilot. And you always run into somebody that either flew us a crew member or actually flew them or rode in them. After working on older airplanes for 30 years, I just would enjoy being around them and putting airplanes back together and on show for the public is really a good job to do. The airplanes are hard to get in, especially like this one here. There are getting to be very few of them left. And to get them over here for the museum is very costly. So we're trying to get as many in as they can. They're working on them all the time, trying to get different airplanes to come in.


Okay, so this is almost a perennial talk for me at this point and talking about the challenges of maintaining configuration changes in PID 1 in terms of reloading state, especially for unit changes on disk. This has particularly been a problem that we've encountered at my company Pantheon because we sometimes have deployed thousands of units to disk. And I've personally worked on the problem a little bit, but I've also gotten a lot of feedback from our own ops team on what we've seen with our Chef-based configuration and managing all of these units. This is not going to advance. Let me restart that. There we go. So part of the issue, you have to understand a little bit about the architecture of PID 1. Almost 99% or more of operations in PID 1 all go through this central loop where basically if something has been requested over D-Bus, if something has been requested, if something is in term, if something is where PID 1 is reporting watchdog information, all of that is going through that single loop. It looks like this. And it's in the manager. And what it does here is you can actually see, I'm not really going to go through all the code here, but basically this has some rate limiting in it. It has the watchdog reporting to the hardware watchdog of the system. This is separate from the watchdogs for services themselves. And it also interacts with D-Bus and eventually basically runs everything through here. But the problem is that this is also a single point of blocking in there. And the way that we do reloading today, whether you're doing a daemon reexec or a daemon reload, is we basically tear down the entire world with the exception of serializing some of the runtime state.  And in the meantime, a whole bunch of things are not happening. It's not able to, I don't believe it's able to notify the hardware watchdog. It's not able to invoke scheduled timers. It's not able to receive watchdog notifications from supervised services. It's not able to provide unit status to monitoring tools. This is the case where you have something that is querying unit status on the system to report failures. Those could time out. It can't process socket notifications or socket activations. It can't automata file systems when they're getting access. And in terms of things running on something like Chef or Puppet or another administration tool, it can't stop, start, or reload services. So it's actually pretty disruptive to have a really long reload. And the reason why it's worked pretty well so far is that the vast majority of systems deployed have few enough units that this is not actually taking long enough to become our problem. But as soon as it does become our problem, it becomes a pretty big thorn in the side of the infrastructure because it interrupts all these things. And we've done work so far to mitigate the problem. The changes internally to system decode, we have the ability to set some options on some units without actually reloading them. This doesn't include changes to dependencies or changes to a lot of the key configurations of units. But there are some things you can do with that. And we've certainly put in place a lot of optimizations for the actual reload process itself where even though it's blocking, we've shortened the time. And externally, at least at my company, we've worked on changes to do reload less. For example, one of the things that I can't emphasize enough to anyone running into this problem is you only need to run daemon reload when you change a unit. If you drop a new unit file, you don't need to run that right now. And in fact, this has been the case for years, where as long as you're dropping something new, you can just do start, it'll load up the unit, it'll add it to the tree of things, and it'll go on without running the reload. So one thing that we do in Chef at my company is when we're dropping a file, even though Chef is designed to be item-putting with the way that it drops configuration, you can have it do a different strategy for reloading depending on whether it dropped a new file or whether it's altering an existing file. We've also moved a lot of the configuration somewhat regrettably into environment files, so that that is actually something that is read at runtime and doesn't require a reload if those change. And then we've looked at things like moving fewer units, removing some units from the PID-1 system D to maybe some child instances and things like containers. And honestly, one of the biggest things that we've seen as an impact is using SSDs for this. If you still use spinning disks on your servers, you're actually taking a huge penalty to your reload time because the random access for loading all these files off disks and all the sim links off disks for which units are activated is, I think it's sped it up for us about a hundred or a thousand-fold some of these operations. So it's a useful thing to look at if you're running into this. But these are mitigations. These don't actually change the fact that the reload process blocks PID-1 and the central event loop for whatever duration it happens to take. And there's still work that's on the horizon. I was talking to Leonard yesterday about what was going on. And apparently it's really close in the pipeline to be able to reload individual units and not have to reload everything all at once. So at least that should mitigate things further. And in terms of the effect, one effect we've seen is not just in PID-1, but when things get spammed on D-Bus in terms of events for units, especially with things like reloads, because basically everything gets destroyed and everything gets recreated. Scaling work like the D-Bus broker should help with things like that as well. I expect. That hasn't been a problem for us in a while, though. But this is also still not going to solve all of the challenges, things like generated units from FSTav, legacy things from system 5 in it that get converted into units when system D loads at state. Those do not get refreshed and don't have a means to refresh them through the pinpoint reloads. And ultimately, you have to update system D. And you may update it frequently if you're using it very heavily in your infrastructure. And Daemon re-exec will still have just as blocking of an interaction here as it does today.  It'll be a while before things are actually targeting their reloads a little more surgically. So just to go over what happens today in a little more detail than just kind of the tear down the world and rebuild the world. For Daemon reload, what basically happens, oh, I had a third bullet point on here. For Daemon reload, it basically serializes the runtime state, deletes the data loaded from disk, reloads that data from disk, and then un-serializes it. As a convention for each of these things, for today and for ideas for moving forward, anything that is an italics is blocking. It basically blocks the main event loop in the sense that nothing else is getting done while that is happening. And generally, most of them are not amortized in any way where they have a particularly bounded time for blocking the loop. Like each of these operations here will just take as long as they take. The biggest benefit to the current design is simplicity. And I don't want to underrate that because simplicity means that something is generally robust. It means that it's easy to make it correct. It typically works. It's a design that doesn't have a lot of challenges around that. The biggest problems with it today are heavy blocking and high privilege parsing. In the sense that heavy blocking is the main thing that I'm talking about, where when things are reloading, there's a pretty extended duration that things get unresponsive. High privilege parsing is a little more debatable. This is the idea that we're using PID-1 to parse the date off disk. If whether the content on disk is malicious or there's potentially defects in PID-1 with the parsing, it introduces some risk to the system, either from a security or a liability standpoint that we have such a critical system that can't recover from a failure doing this sort of loading process. And then we also have Daemon Reexec, which operates pretty similarly in the sense that serializing state, handing over control, loading data from disk, un-serializing, the amount of time for blocking for Daemon Reexec and Daemon Reload is not massively different in my experience. And this supports an important thing, which is updates without reboots. Something that you can't do is something like Dbust, for example. And the cons are pretty much the same as for Daemon Reload. So I have about five kind of ideas for improvement of this. And these are all, they're not necessarily mutually exclusive in the sense that some of these things could be combined. We could possibly do partial elements of some of these. But they're based on some of my experience totally outside the system D world. My experience from the PHP world, where basically we have a multi-process runtime and working with shared memory segments for some of the storage, and working with varnish where varnish exposes its statistics through a shared memory segment to a program that has been compiled with the same data structure library for reading that data. And then that way they allow you to query the statistics of the web traffic going through the proxy server without having to do things like a remote procedure call or have anything within the actual main process respond to those things. But I've also had a lot of problems with some of those architectures in terms of the complexity of them or the performance impacts of them. So I'm gonna try and cover a lot of that. This is probably impossible, but it would be really neat if we could. By impossible, I mean it would probably require some serious black magic of how you have PID1 run. But it would be really, really neat if we could basically use the existing reexec process to start a child or something similar, asynchronously, have it load the state and then hand off control to it. I don't think that this is very likely to be doable based on conversations I've had. But it would be neat because it would basically solve all of the reexec and reload problems in one fell swoop. But there's probably no way to actually run a separate process and promote it to PID1 without having it take over in place but then block in place. And when I say things on here, like too heavy for embedded, I'm usually referring to the idea of when we were working with the state, one of the biggest advantages to the current method for embedded systems, at least for memory restricted systems is that because we destroy the world and then rebuild it from scratch, there's no point at which we have a memory footprint that exceeds the old state or the new state. And if you wanna look at non-blocking methods for reloading things, most of the methods that we could use generally involve us keeping the old world around while we start up the new world. So in cases like this, that would be a problem where we'd basically have a memory footprint that would peak at the combination of the old state and the new state. Anyway, I don't have any diagram for this one because it's impossible. But I do have a whole bunch of other ideas for possibly changing this. Another way that we could be doing this is by treating a separate daemon as a library for this information. And rather than having PID-1 actually maintain the unit data itself or even have direct access to the data structures itself, there could be one that would be queried over say a socket or debus or some sort of inter-process communication to a unit data database, basically. Presumably this would be something that would run alongside PID-1 and it would support the idea of either starting up a second instance of it to load the new world state or to be able to do the complex juggling necessary to switch over the state by reading new unit files off disk and then possibly having things like, like for example, this sort of thing, especially isolated outside of PID-1 could run something like RocksDB which is like an embedded database that Facebook writes that supports the idea of snapshotting where you can basically say, here's all the state that I have, I'm gonna snapshot this right now and then all the changes going forward will be ignored by the current PID-1 until I'm finished reloading all the state and then I will tell PID-1, here's your new state or switch over in a way where as soon as it's accessing it after all of the reload has occurred then it can communicate with that. I would be reluctant to embed a database like that in PID-1 directly but if it's isolated from PID-1 then it's a lot less critical because you can replace this process a lot less disruptively on the system and it can also run with lower privileges and these are the primary benefits of that sort of process. You get a low privilege parser, you get to do high level IPC the reason why that matters is that I found in terms of benchmarking inter-process communication that sending fully baked data structures around is a lot more efficient than accessing shared memory that you have to jump around a bunch of pointers because there's a lot of indirection that occurs in the kernel for inter-process storage that is directly used by say two different things and it's reasonably efficient to ship something like the scale of unit data over something like a Unix socket or D-Bus. It has the potential to be extremely memory efficient in the sense that because we could take we could use more complex methods in a second process we would be able to preserve the memory footprint to a pretty low level. In the case of the sort of copy on write system that I'm talking about with something like ROX the memory footprint would only peak at maintaining the data of the removed or changed things from the old state and the new replacement units in the new state but it wouldn't peak at twice the data it would peak at a slight bump. So in terms of ability to juggle old and new state that's about as efficient as you can get a sort of copy on write system. And one thing that would be really neat is if we got this sort of storage to work well then we could probably retire Daemon reload. We could probably just do Daemon reexec we could simplify PID 1 because since all this data would be being stored in a separate process then we wouldn't have to worry about the most efficient way to reload state in PID 1. We could simply say PID 1 reexec hand over your runtime state and continue accessing this Daemon. Anyway, another one that I think is actually in some ways more attractive and I know that Leonard has heard about from at least one other person proposing some ways to solve this problem is creating a sort of unit loader that constructs a pre parsed image file that has all of the data already structured all the dependencies already constructed all of basically in as close to the final state as possible as a file. And what you can happen there is the unit loader can load that stuff off disk it can create an image file that can get written to disk it can get written to a tempfs for all that matters and then PID 1 could immap it or do a similar operation on it. And the nice thing here is you could basically do a sort of almost OS tree style switch over with it where you could have the current parsed data that system D is using in effect based on the way that Linux handles immap for data you could actually delete that file off disk as long as it's still mapped by PID 1 replace it and as long as it's remapping the data when it switches over the world it would be able to switch over to the new configuration without waiting on parsing a whole bunch of stuff off disk. This would make the switch over almost well it would be atomic as it is today in the sense of switching the world but it would also be nearly instantaneous to switch which world it was talking to with the exception of any kind of serialization or un-serialization but the serialization and un-serialization are not what dominate the time of the reload or re-exec process it's the disk access. This has some challenges though. When you do this sort of thing mapping memory this way you end up with complexity around either mounting it at the same base address every time which can be fragile or you end up using things like offset pointers within the actual memory itself which while they're not a big impact to performance on their own I mean it's basically just adding in the base address of wherever the memory is it means that every single thing that you do with data structures in there has to be abstracted through the idea of expecting that the pointers have an offset to them. So it can complicate the code for writing that. On an upside though even though it complicates the code for accessing that data I don't think that there's a hugely high risk of defects in writing such a system because when you get it wrong and you don't work with an offset it's very obvious versus some of these other approaches that I'll be talking about where we might be able to do things with say threads or other ways to manage the duplication of data where if you get some sort of cross link between those data structures where some of the old data's referring to the new data or vice versa you could end up with some very broken data structures as part of the reload whereas this is that nice packaged file. One of the other really nice things about this is it's extremely testable and you can basically turn the loading off disk into sort of a reproducible build kind of question where for this unit state on disk you expect this data structure to be created you can interrogate that data structure and you can very quickly, it's probably a little high level for a unit test but it's certainly a nicely compartmentalized test that doesn't require running a daemon to actually test out all of the parsing capability and all of the data structure instantiation within the file because it wouldn't have to be a daemon that constructs this stuff it would just have to be a process. The fourth idea on here is something that I know has been talked about in previous years I don't actually find this super appealing because of some of the fragility is moving the reload operations to a thread. Right now, PID 1 is single threaded it's single processed the single threaded for the PID 1 operations and that means that we don't have to worry about things like concurrent access to data structures, locking or any other sorts of concurrency primitives that we might have to use if we adopted something like this. It is probably possible though to adopt this without it having hugely cascading effects on the rest of the design in the sense that in the thread you could rebuild the new unit state off disk in a completely isolated area of memory where none of the pointers to that area of memory would be visible to the rest of PID 1 until it was time to promote it to the current world and then what would happen in the main loop is it would switch the root pointer for the tree of all of the data structures over and then it would be suddenly using the new world and we could destroy the old one. And so it still has a higher risk of defects than these other things. There's no testability benefit to this unlike the previous design and it doesn't actually help us deprivilege the parsing and data structure writing in the same way as the previous design. So in a lot of ways, I would prefer to use the sort of construct an image file rather than reload in a thread and store it all on PID 1. This one is also kind of interesting. This is unlike all of the other ideas this one doesn't solve daemon reexec but it does solve daemon reload. It's the idea that we could exploit the pinpoint reload functionality that loads individual units to allow doing a daemon reload at a globally incremental level. This would require a pretty complex implementation of managing the state transitions because the only way to actually amortize this and keep everything single threaded, single process is for us to take off smaller chunks of blocking work at a time. But we could do amortized scans of the unit configuration on disk which basically means we would be scanning chunks of it at a time. We could cap how much interruption we have each time we do that. We could note the disparities versus the current state because we're already just walking through all the files on disk anyway and not locking anything on disk. We already have possible race conditions around the reloads where if you change something that it gets scanned earlier versus later. So this doesn't introduce a new risk in terms of loading the snapshot of configuration off disk but it does extend possibly the time that that window is open for creating weird disparities. In any case, we could walk through it, we could identify the disparities and we could use an algorithm like Boolean satisfiability which is actually part of DNF and Libsolve as used for package managers. It started off on SUSE and then got adopted for DNF on Fedora. And what it does is it's this idea of what changes can I make that maintain all of the invariance in the state of the system. And this is that what changes can I make that allow dependencies to all still be valid. Like for example, if the unit that, if A depends on B and I'm removing B as part of my reload, then I need to make sure to alter A to not depend on B before removing B. Like I basically need to make sure that I don't create dead ends in the dependency graph as I'm doing these state transitions because what you wanna do with a sort of amortized change is you wanna be, each time you take a step, you take basically the minimum step that's necessary to maintain a coherent state. And then in most cases, this would be pretty simple because most cases changes don't actually have any cascading effects. But the only time that a change would have a larger blocking effect is if the change had a huge cascading effect on the dependencies of the tree. But that's probably okay because it's hard to avoid a huge change to cascading dependencies having a big interruption to the operation of the system. Anyway, with that, I will open for questions. And we have five minutes in the back. Hi, it's more of a remark than a question. So what you should keep in mind if you do any of that is that there are use cases where this isn't the use case. So for the embedded, the world usually doesn't change after deployment and what you should make sure there is the initial startup of system D should not be affected. Yes, that's why I've been referring to the memory footprints of some of these approaches because some of these approaches could double the memory footprint of system D during a reload and some of these approaches would not. And that's why I've referred to things like too heavy for embedded because some of these approaches just basically result in spinning up an entirely new world of data while maintaining the old one. But that said, I don't think they do that significant, the footprints for this. Leonard? You mentioned you had experience with Varnish which implements something like this. What precisely do they implement? Do they go for the shared memory and pointer offset thingy or what did they do? I believe they maintain an inter-process in-mapped block of memory where they use the mechanism where when you do the in-map, you flag it in the kernel that it's going to be accessed in a process. And then the main Varnish process that is running all the web requests, for people unfamiliar with it, Varnish is a reverse proxy cache for web applications. What they do is the main process is writing statistics to the actual shared memory block but is not otherwise interacting with any kind of inter-process things from a remote procedure call basis. And then the tool Varnish stat that shows you what's going on with Varnish right now will connect to that same shared memory segment as read only and it will show you the current statistics of that Varnish in operation. So it doesn't actually do that for configuration but for statistics? It's actually, it's kind of the reverse of what I would do for system D in the sense that the alterations are happening within the critical daemon and the read only is happening on the side of the statistics tool. But I mean, it's so much easier if it's just counters, right? Like if you, do you know of any actual daemon that implements something like the relative pointer thingy, memory mapping stuff? For relative pointers and memory mapping, the, I think, so a lot of the, I've done some extensive work using boosts libraries for this. Not that we would have to use that for this sort of thing but basically they have a whole system where you basically have data structures that are done in shared mapped memory and or just mapped memory with offset pointers and everything down the chain that runs all the data structures has the allocators be aware of the offset pointers and the region of memory that you're working in. It's a lot more complicated though that case than what I'm talking about here because we'd be basically creating a file. We wouldn't need a real memory manager because every time we would allocate a new structure we would just basically make the file a little bigger and then ultimately we would have one file on disk and the other big difference versus the varnish case is that varnish is updating that as a truly inter-process shared memory that is changing constantly whereas this would be writing to a file that would be completely static once it gets handed over to PID 1. So there's not as much of a memory management issue, there's not really as much of a kind of locking or coherency issue because when you, obviously if you have two things changing the same inter-process memory you either need to be using atomics or locks or something but we wouldn't need to do that here. It would just be closer to the idea of what's happening on Fedora with image creation for containers right now where they've created a tool where instead of it being where you create the container and you change, you set up things in there and you capture the image they have a thing where you basically can build the image offline and then launch it. It's not quite the same thing in terms of the fact that of offsets and stuff but the idea is like it's definitely used as a process the idea of creating an offline build of something that then gets loaded for operational use later. A question on that on that M-Map file as well. How do you prevent like that being exploited because you have relative addresses in that that address could be inside some other space that you don't expect? So relative addresses, I don't see how the risk would be substantially higher than, I mean, I'm not actually sure what the exploit path is, you mean? Well, that file could be exchanged before it's passed to system D. So you're basically passing, if you have an exploit already, if you're in the system and you have access to the TempFS then you could swap that file for something else that contains hostile pointers. We just need to manage the permissions for the files. I mean, the same risk path exists for the actual unit files themselves. Like if you can manipulate arbitrary files in the system then you could create a unit that does whatever you want when it gets loaded by system D. So if you have like, we just need to choose a place to store it that would be as safe as unit files that system D is reading off disk. I don't think we have any more time for questions but I'll be around. Thank you.


This is Dr. Rupali Shalke from Vulture Institute of Technology working as an associate professor. In this video lecture, we are going to discuss on the wave equation in lossy media. In the previous video, we are discussed with the wave equation in a lossless media. After completion of this section, students are able to study or derive the wave equation in lossy media. They can represent the wave equation in phasor form. Also, they can solve the related problems. Now, let us consider a transverse electromagnetic wave traveling in a x direction, having the electric field in a y direction and magnetic field in a z direction and wave is propagating in a x direction. This representation shows that the wave is transverse because the electric field and magnetic field are perpendicular to each other as well as they are perpendicular to the direction of propagation. Now, pause the video, recall what value we are considered for the conductivity for perfect dielectric media and free space. For perfect dielectric media and free space, the sigma value is equal to 0 and there is a variation in the epsilon and mu value. Similarly, the assumption for the lossy media and epsilon will depends on the media. Now, let us derive the wave equation for a lossy media. Now, consider a Maxwell's equation derived from the Faraday's law that is del cross e bar is equal to minus dou b by dou t. In this equation, dou by dou t will substitute as a j omega that is a harmonically varying. And as we know the relation between the b and h that is the value of b will be substituted as a mu h bar. Now, we will solve the equation expanding the curl product. But it will be in a rectangular coordinate a x, a y and a z, dou by dou x, dou by dou z, dou by dou z, e x, e y, e z will be equal to minus j omega mu the h x, h y and h z. As we are assumed, our wave propagating in a x direction that is why the value of dou by dou x will not be equal to 0 and the electric field in a y direction that is why the value of e y will also be not equal to 0 and magnetic field in a z direction that is why h z will also be not equal to 0. While other terms are we are considering it as a 0. Now, after solving this determinant, the equation will reduce to dou by dou e y by dou x will be equal to minus j omega mu h z. We will mark it as an equation 1. Similarly, let us consider a Maxwell's equation derived from the Ampere's law which is nothing but a del cross h bar is equal to sigma e bar plus dou d by dou t which is equal to now the dou by dou t will substitute j omega and the relationship between the e and d is d bar is nothing but a epsilon e bar. We will substitute the value of d bar is equal to if you see this equations this is relating between the magnetic field and the electric field. Similarly, we will expand del cross h bar and by same assumption we will substitute the value here in this case dou h z is not equal to 0 now and dou sorry e y will also be not equal to 0 while other terms we will substitute it as a 0 and by considering the common e bar we will substitute the consider equation sigma plus j omega epsilon into other terms. Now solving this equation we get minus dou h z by dou x a y bar is equal to sigma plus j omega epsilon e y a y bar a y will be common that is why the equation will reduce to dou h z by dou x will be equal to minus sigma plus j omega epsilon e y. We will mark this equation as equation 2 we will this use this equations and solve the next problem considering the equation 2 differentiate this equation 2 with respect to x then it will be a second order derivation dou square h z by dou x square will be equal to this term as it is the equation dou by dou e y by dou x we will mark it as an equation 3. Now, substituting the value of dou e y by dou x from the equation 1 we will get the equation dou square h z by dou x square is equal to j omega mu which is a value of dou by dou x h here we will substitute this if you see this equation at the both the side LHS and RHS we are having the value h z that is why we are calling this as a wave equation for the lossy media in the magnetic field or h z term. Similarly, let us consider equation 1 which we are already derived differentiating different equation 1 with respect to x this will be a second order del square e y by dou x square is will be equal to minus j omega mu here dou h z by dou x we will mark it as an equation 4 then substituting the value of dou h z by dou x from equation 2 this value now we will substitute in the equation 4 then the equation 4 will be in this way which is nothing but a second order equation in a terms of electric field. This was in a magnetic term and this is in a electric term this is a wave equation for the lossy media in e y term these both equations are also called as a emboldt equations in terms of h z this term we can represent in a phasor form by substituting the dou square del x by the del operator as it is a second order it will be a del square h z and this term is equal to the propagation constant gamma square h z. If you see this is a phasor equation these both equations are in terms of h z term that is in a magnetic field. Similarly, we can write the wave equation for a lossy media in terms of electric field pause the video think for a while and solve this try to solve this problem. In this case a magnetic field is given in a form of equation which is in a wave direction and the value for the mu r epsilon r and sigma r given and determine the value for the propagation constant that is gamma attenuation constant and beta. As this value it is the equations are for the lossy media the sigma is having some value this is not equal to be 0 it is having some value. Therefore, the it is seems that the when the waves are travelling into the free space in a lossless media then it is a there is no change in the amplitude while when the waves are travelling in the lossy media then there is a losses takes place or attenuation takes place in the amplitude there is a change in the amplitude variations while other term that is a velocity wavelength and beta will remain same. These are the few references. Thank you.