Now, hey, it's my pleasure to introduce today's talker, Maryshevsky, from Maragov, from the Institute of Technology. The theory was particularly interesting in computational social choice. The subject of the eight-console curriculum and excellent collaboration with others. Thank you. So this talk is titled about finding a collective set of items. But in some sense, it will be about multi-winner elections. So elections where we choose several people. So since it's about elections, it shows some... You can't see, but this is actually me after I was trying to run for president of Poland. Actually, it's from an election-related promotional movie that we had to make. Anyway, the topic of the talk is multi-winner elections. So first of all, what are multi-winner elections? And there are... One of the findings that we had actually with Arkady and with the co-authors of this work is that multi-winner elections are quite different from single-winner elections in that you really have to think what you're choosing. So maybe you're choosing a parliament. If you're choosing a parliament, it's a complicated process. There may be parties involved. There are candidates with different programs.  So every voter should be somehow represented in the parliament. So maybe the majority should have the say on what's the law, but every voice should be heard. So when you're choosing a parliament, this is the principle that you need to follow. And maybe you're running a company and maybe you need to hire some people. Maybe even it's a university. And if a university is hiring, then maybe you'll get 100 or 200 or 300 applications. You certainly will not invite all these people to give interviews and give talks. Maybe you need to do some short listing. And then members of the faculty, they all have preferences on who is the best person to hire, but based on their preferences, maybe at least you can shortlist 10 people that you can invite. And this is a multi-winner election as well. And it's governed by very different laws than this parliamentary election. So here, one example is that if you have two similar candidates, then maybe both of them should be invited to give a talk, both of them should be shortlisted or both of them should be not listed. But if there are two similar candidates, maybe we don't need both of them in the parliament. One of them already represents people well enough. And this is actually even more true in another example, which is actually the focus of this talk, which is somehow resource allocation with the example of choosing movies. So the running example for a big part of this talk is the following problem. We have an airline and this airline can put only several movies on the entertainment system of the plane. You're flying transatlantic. So I have a, apparently on Saturday, I have a 19-hour flight from Auckland to Dubai. I really hope there's a landing in between because the plane is not supposed to fly this long. But of course, you have to entertain yourself somehow and the company has some choice of movies that can put on the system. And here we have a really poor system that only fits two movies and we have a choice out of four. And the setting we have is the following. We have, let's say, four possible passengers or four passengers or maybe four groups of passengers that you somehow want to please. And each of them expresses some value of the movie that they have. So later on, we will explain the meaning of these utilities, these values. Right now, they're completely unnormalized. Well, actually, they are normalized in the sense that if the green lady here likes Batman movie with value 10, it means that she really likes it about three times as much as the red guy likes the Superman movie. So they're expressed in the same units but other than that, so far we put no requirements on them. So if you were to choose movies for the plane and this is the data that you have, you have to come up with some sort of procedure to pick these. And what can you do? So okay, the most basic thing you can do is maybe let's just some total utility and pick the most appreciated movies. So if we do that, Batman gets 19. So if you sum up 10 plus zero plus seven plus two, it's 19. Total utility for Superman is even less, it's 14. And it turns out that Woody Allen and the cartoon get 24 and 20. So okay, that's a very nice thing. They have highest utility, you're very well justified, except your customers are pretty damn unhappy because the green lady, well, she likes Woody Allen and cartoon the worst. So she's gonna be completely bored on her flight. On the other hand, well, the same is actually true for the red guy, he got two almost worst possibilities. Whereas the orange guy, well, he doesn't care about cartoon at all, but he loves Woody Allen, he'll just keep watching that forever on the flight. And the pink lady gets two of her favorite choices. So you could say it's completely unfair. Of course, you could find some justification and as I actually said, that summing up utilities is a nice thing, but two people will be completely bored on their flight and two people will be quite happy. So how about we pick a good movie for everyone? Everyone should get something. And in this case, it's actually quite possible. So if we choose Batman and Woody Allen, well, Batman gives the green lady, it's her favorite movie, the red guy, it's also his favorite movie, they're perfectly happy watching Batman. And for the orange guy, Woody Allen 12, okay, the purple lady, she could have a better choice, but I mean, it's really very close. So this way, we can pick something good for someone. We somehow have a representative movie for every member of the passenger group. And actually what I told you here is known as Chamberlain Courant, proportional representation voting system. It seems like it's a pretty good thing. I'll tell you some bad things about it later, but it's a relatively good idea. So if you could do that, and at least everyone watches one movie and it's fine. But what if you have a better understanding of your customers? What if you know that people watch movies, but it's a, I said, 19 hour long flight. It's probably more than one movie. So with some probability P, a customer chooses to watch a movie, the passenger, and with probability one minus P, he just stops, falls asleep, doesn't watch movies anymore. So then the probability of watching no movies is one minus P. So we can essentially cancel this factor out. One movie gets P times one minus P, two movies get P square times one minus P. So then, of course, your model would be expected utility of each passengers. So you would want to pick the movies that maximize the expected utility in this model. And now the question is, okay, these are reasonable models, they're very nice. We can study each of them separately, and maybe we'd better allocate our time on doing something more general. So the next thing we would like to do is to somehow find a framework that gets all these things together. And it turns out that there is a very nice mathematical formalism that gets us exactly that. And these are, it's called OWA operators, so ordered weighted averages. So let's look at that. It's a very simple concept and very powerful one. So it's nice to know about it. So these are generalized average operators. The way they work, well, we start with some, so we will be picking K movies. So we start with a sequence of K numbers. These are, imagine that these are the utilities that you get for particular K movies. So for, and the first step in applying an OWA operator is to sort these numbers. So you sort from the best to the worst. So for example, if you picked these K movies and the utilities were 3, 1, 7, 5, 2, after sorting, you get 7, 5, 3, 2, 1. Okay, this is the first step in applying the OWA operator. Then your OWA operator itself is a vector of numbers, typically between zero and one, but it's not a requirement, and we don't assume it. And what you do is you take a simple product of these, the sorted sequence of utilities and the operator, and you get some value. Now, why is this interesting? Why is it nice? Well, if you take the OWA operator to be just one over K, you get arithmetic average. We don't require that. I mean, it's nice mathematically to have it, but we don't require that. So it's much easier to interpret this thing economically if they sum up to one, because somehow that's a nice thing to have. To some extent, where in this talk, I'll be focused on computational properties. And for that, it doesn't matter. I can multiply this by the same number, and I get, or I can divide. I can always normalize to sum to one. So in these examples, this will be somewhat the case, not completely, but through the rest of the talk now. But so anyway, clearly arithmetic average very easily expressible as a weighted, ordered weighted average. So that's nice, since these are supposed to be generalized averages. Now you can get maximum. Just simply take vectors one and zeros. Clearly, you get the maximum operator. You can get minimum, just zeros followed by one, trivial. You can get a median. You put a one in the middle and zeros back and forth. The median operator works. And you could have, for example, a geometric sequence starting with one and then p, p squared, p three, p four up to, and here for p equals zero one, you get geometric sequence addition. So this, of course, models our expected utility. And I will later show you that there's plenty of other OWA vectors that are actually quite reasonable in our setting. But I hope that by this time, you're convinced that this is at least a reasonable framework, at least something worth looking at. So what can we do with it? What do we get? Well, we define our, what we call an OWA winner problem. So I'm a computer scientist. I have to admit, I guess, shamelessly or shamefully, I'm not sure. But so I'm, to a large extent, interested in deciding how difficult it is to find these objects. So I'm interested in some of their properties as well. But for this talk, it's mostly about how hard it is to find a set of items that will satisfy everyone. So I assume that I have a set of agents. So these four guys in the beginning was our set of agents. And you can think of them as really separate people or groups of customers somehow taken and whatever you like. We have a set of items. So the movies that we had were the items available. And we can pick up to K, or exactly K, items that these people will somehow be using together. And the OWA vector, in some sense, describes how they use the items. So the maximum operator OWA 10000, it was, as I told you, this corresponds to the Chamberlain Quran rule. It somehow means that everyone gets whatever the best item they think, and that's it. If we use this geometric progression, then somehow this models the sequence of making choices. I watch one movie, then I'm with some probability I watch the next and so on and so on. And in fact, one could interpret these OWA operators in several ways that I'll mention later when I show you some examples. So further, for each agent, we have this utility function. So each agent has some intrinsic utility of every item, which is then modified by the OWA operator. So intrinsically, each item has a value, but from the process of using these items, the value gets modified as the OWA sets. So for example, with this 10000 operator, it means that in fact, I only attach value to my best item because the rest, I don't watch. And the task is simply to compute a set of item C such that the value of the set of item C is this utility of the sum of utilities of all the agents of this, say, committee of items. So modified by OWA. So I hope it's clear and if it's not, then stop me. And well, if it's not clear and you don't stop me, then well, there's only so far that my responsibility goes. And the questions that we have is what's the complexity and what good algorithms can we get? And unfortunately, we're already bound by results known from the literature, which give us the following special cases. So for the vector OWA of all ones, which is essentially the same as this one over K averaging, this is just sum, but this is the same thing. This is, in voting theory, this is often known as range voting or sometimes as K border or K approval, depending on the nature of utilities of the voters. But this is a very simple setting where this is simply summing up the utilities, taking the guys with the best result. This is easy. The problem is that as I told you with the vector 1-0-0-0, this is Chamberlain Quran's rule. And when the utility functions are arbitrary, well, actually, even for very simple utilities, the problem is known to be NP-hard. And for arbitrary utilities, there's no hope of an approximation algorithm with better quality that 0.63. So it means that the best you can hope for with arbitrary utilities is to get 63% of the maximum possible utility. I mean, this is the maximum guarantee that you can hope for. Of course, if you randomly choose and all of a sudden you satisfy everyone, then of course you get that. But we can complexity theory results tell you that we can guarantee 0.63 and unless the world collapses, there's no better guarantee possible in polynomial time. And the world collapses means P equals NP. So these are the boundaries that we start from. And so clearly we need to somehow constrain ourselves. And we look at two kinds of constraints. First, we pick special utility functions. And these utility functions are either approval utilities. So you can either you love something or you hate it. If you love something, you give it utility one. Or at least you don't love it. You give it utility zero. It's worthless to you or it's worth maximum. Or we can have border utilities where the utilities come from border scoring rule. So essentially if we have say K items, then we have K possible scores from zero, one, two, three up to K minus one. So these are kind of, I'll mention this a little later, but these are kind of two extreme possibilities for what voter can or what agent can think of items. So approval agents, they have very strict threshold. They think if I like it, it's great. If it's slightly below my requirements it's completely worthless. So I will only watch good movies and I will not even try watching anything below my standards. And border utilities are the model people which have very kind of slowly decreasing level of appreciation for particular items. So I really want to watch my best movie first. But if I can't watch my best movies, the next best is pretty good as well and the next one is acceptable and the next one is so-so. So they have a spectrum of opinions. So these are sort of opinionated people and these are kind of peaceful people I guess. And the results that we get is that, well, essentially approval utilities are extremely hard to deal with and border utilities are, well, not that hard to deal with, but still hard. So it means that in essence, for both this setting, we get NP hardness results. But there's a real difference in how we deal with this hardness, whether we can get approximation or not. So for zero one utilities for approval there's next to no hope. So an airline would be perfectly happy if we have an approximate solution that makes most people mostly happy and we can't have that here. For border utilities, on the other hand, we can get really good, almost perfect approximation algorithms. Depending on the setting a bit, but we can get very good results for border. And the next thing we looked at is just classes of different OWA vectors. So a natural first thing to start with is what we call T best of WAs, where you just, you have appreciation for some, you watch, let's say you watch your T best movies. So with T equal one, it means you just watch your best and that's that. And K best is of course this easy example of just summing up utilities. You watch everything there is and then it of course makes sense to sum up utilities. There's an interesting special case of K minus one best where you watch everything except the worst possible of the set. It's interesting because of its computational properties. Then the next group are movies that are OWA vectors that we call T median. So the T median is you're somehow interested in your, in the T best option. And here K median is particularly interesting. So you're actually somehow you're interested in your worst option. So think, why would you ever want to optimize that? Well, if you want to optimize that, it means you're a perfect pessimist.  So you want to optimize against enemies of this sort, so to say. And if that's the situation you're in, that's the kind of the pessimists approach that you should take. Then these OWA's vectors are your thing then. And of course you could also look at Khurovich approach. So Khurovich modeled this form of uncertainty that we can believe that maybe you should be to some extent optimist and hope you'll get to see the best thing there is, but you need to reserve this pessimistic part that maybe they'll give you the worst possible. So Khurovich OWA models this kind of this somehow middle ground between an optimist and pessimist. One best would be a perfect optimist and K-medium is the perfect pessimist. Then the next two interesting sequences of OWA's is the geometric OWA. So of course this is the expected utility model. And our arithmetic OWA with a decreasing, slowly decreasing level of appreciation for, well, or level of importance of each item, which actually comes out as an expected utility as well, but in a slightly different model. So I told you that geometric is an expected utility, it models expected utility in the model where you keep on watching movies with some probability. So our arithmetic OWA shows up, for example, if you have a model of you watch, the probability of watching eye movies is uniformly distributed. So the probability that you watch one movie is the same as the probability that you watch all the movies. And then if you want to take your expected utility, then kind of scaling by an arithmetic operator is exactly what you should do. And finally, one thing that we focus on mostly because of their computational properties are non-increasing OWA's. So this is a white class that captures, it gets T best and well, geometric for P smaller than one arithmetic. So we can deal with them jointly with a relatively simple greedy algorithm, not very good one, but still at least we can somehow talk about them together. And somehow it seems that there's a huge difference between these non-increasing OWA's and ones that are increasing, like for example, K median. And this difference is visible in the results. So the results I told you already that, so for K best, this is well known, this is polynomial time algorithm, easy to deal with. For T best, it's already NP hard and it's NP hard even for K minus one best.  So approximation algorithms are definitely needed here. And it turns out that for this K minus one best, we have a so-called pitas, polynomial time approximation scheme, which means that if you say, I require approximation up to 1%, this means, okay, I give you a polynomial time algorithm that gives the approximation up to 1%. However, the running time of this algorithm is polynomial in the input, but maybe exponential in the approximation ratio. So if you fix the approximation ratio, it's polynomial time, but if you keep changing it, the algorithm might slow down a lot. Here it actually turns out that it's pretty good. And we also have this pitas for Borda also works for T best. And for K, but the idea of approximation for K minus one best OWA is actually very disappointing. Because so we have a nice algorithm for T best OWA's and I'll show you that algorithm actually. And for K minus one best, actually what the algorithm does is, okay, it's K minus one best. It really looks pretty much like K best. Let's just run K best and give you that allocation. And this gives you K minus one over K approximation ratio. So for large K, this is pretty much perfect. For small K, we can brute force. And so we get formally a pitas. And it's a completely disappointing one. Because if for some reason you thought that it's good to use K minus one best OWA and we're giving you a K best result, then you're completely unsatisfied with that. Then to begin, why did you ask us for the solution to begin with? You would ask yourself. And so technically we get a nice result. Practically this actually is somehow not satisfying. But that's the result we have. So then for the OWA's, which are non-increasing, the results are essentially no hope for any sort of good approximation. We can't even have this 0.63 approximation I mentioned in the beginning from a simple greedy algorithm. It doesn't work here. The assumption of these algorithms are not satisfied, hopeless. As far as I know, there's no good approximation unless really weird things happen. And finally, for geometric OWA, we have a pitas. And for these non-increasing OWS, we show that the assumptions of this 0.63 greedy algorithm are satisfied so we can run it and find easy enough. Okay, so these are the results we get. I mean, all these hardnesses hold for border and approval or all easiness hold for border. I will accept with this one, which is general, but disappointing. So one of the natural questions now to ask is what's so special about border utilities that we get all these easiness? And I sort of already told you that the reason for this easiness in border is that if you imagine a diagram where here you have utility for an item that is ranked first, second, and so on, then border looks linear. If you don't get your best, you're slightly less happy but you're still happy. So there's a lot of space for somehow negotiating with the agents. Maybe I will not give you the best thing but I'll give you a little worse and many other people will be happy, that's fine. On the other hand, for approval, we have this sharp behavior. So there's no negotiation whatsoever. If you don't get your best thing, you're unhappy and unwilling to be consoled in any way. And so what would you do if you had this sort of curve for utilities? Is it more like border? Is it more like approval? Will the problem be easy? Will it be hard? It's maybe not immediate to guess what's the result. And actually it turns out that, so we came up with some sort of general way of expressing what it means, what made border utilities easy. So we called it, we called curves like this X, Y, non-fineke utilities. So this means that if at least fraction X of the items get fraction Y of the highest utility, it means you're X, Y, non-fineke. It means that you can be satisfied to some reasonable extent. So if X is high and Y is high, then this means that these are really easy utilities to work with, you're easily satisfied. Because if you don't get your best thing, there's still a lot of other items that can satisfy you. But of course, if these numbers are low, then this means it's hard to work with you. And one of the main goals of the talks that I give on this topic is to learn if maybe this notion is already known in the literature. Because we sort of came up with it because it fitted our proofs. And it took us actually quite some days to come up with a name. None of us is an English speaker. So learning this name involves really some searching through dictionaries. And for some time we were worried that maybe it's a rude word, but apparently not. Maybe. But the problem is of course, it's really hard to find a notion when you have the definition but not the name. So actually we don't know. Maybe we came up with something new and interesting and maybe there's a group of people who have been studying it for the last 500 years. And but so far, no one told us. So that's at least some reassurance. And the nice consequence of our, well the way we did our results and the way we obtained our algorithms is that essentially all the results that hold for Borda, all these pitas that hold for Borda translate into a nice approximation algorithm for all x, y non-phynical utilities. So essentially a pitas translates to something like x minus epsilon approximation algorithm if you have non-phynical utilities. And you can see that approval of course is a non-phynical utility type for a very bad set of parameters. But if somehow your voters approve of many items and you have good properties of non-phynical, you get good enough results even for approval. If everyone is happy with everything, no matter what you do is great. As far as trivialities go at least. Okay, so this was let's say the philosophical part of the talk or maybe introduction. Now comes the punishment, now comes the proof. So I want to show you at least some results and the two results I will show you is first I hope I will convince you that finding k minus one best winner under approval is computationally hard. And next I will show you this algorithm for dealing with geometric OWA's under Borda. So two different settings, two different utility types, how the proofs look like. Okay, so we start with k minus one best OWA and we'll show it is NP hard. Okay, so for those of you who are not familiar with the theory of NP completeness and completion of hardness, the way such things are done is you start with some original, some problem that from some source you know is hard. So here the problem that I'm starting with is called vertex cover. And this is the problem of the following type. I'm given a graph, I'm given a number k and my task is to pick at most k vertices so that every edge is touching at least one of the selected vertices. So in this instance that I'm showing you here on the picture. So if you are worried that I'm showing you proofs, don't worry, these are proofs by examples and by pictures. So in this graph that I'm using here, there is a vertex cover of size three. For example, I can pick vertex V two and V two covers these four edges. So now it's clear that I have to pick one of two of the remaining ones. So I can pick V five and it covers two more edges and I can pick V four and it covers one more. And now everything is covered. So here this is a so-called yes instance of my problem. And when I'm proving hardness, so this problem is known to be NP hard. So there's, as far as we know, there's no polynomial time algorithm for this problem. And we will translate this to asking, is there a committee of size K or this set of items of size K under approval utilities for K minus one best OWA vector for some given set of agents. So we need to translate the question of asking, can I pick a vertex cover of this graph to a problem? Can I pick K items that give me a particular utility? So the way I will do it or the way we will do it is first, okay, let's give a name to every possible edge. And now we need to, so we need to pick our set of agents and our set of items. We start with a set of items. It's quite easy to think of it that if we are picking vertices here, then maybe our items should be vertices, okay? And our agents will be the edges. So edge one connecting V one and V two will have utility one for V one, utility one for V two and utility zero everywhere else. And you can see that all these edges, all these edge agents are made in the same way. So E six, E six is here, connects the V three and V five. So gives utility one for V three and V five. Okay, simple enough. But that's not all. I'm also, I also need somehow competing or completing agents, which are called G guys. So they are G one through G N and they're complements of the guys from the previous group. So E one was one, one, zero, zero, zero. G one is zero, zero, one, one, one. They're made exact, they're always made this way. And now I claim that if there is, if there is a vertex cover of size K for these guys, then there will be a way to pick three items that give the maximum possible utility of K times N where K is here, three and N is seven. Why is that? So let's see, let's see what happens when we pick a correct vertex cover. So I pick V two, I get these utilities. I pick V four, I get this. I pick V five, okay? And now let's analyze the utilities that these guys obtain. So E one gets utility one plus zero, plus zero, times the K minus one best OWA. So E one gets one plus zero and here every agent gets just top K minus one, so top two points. So E one gets one point, right? And G one, well, he has zero, one, one. He gets these two ones.  And this is true for all of them. It will become clear why this is, so this is the case because we had a vertex cover. So whenever we had a pair of these guys, there was always at least one of the pink groups was a one. So we know that if there was just one, if it was say, if it was one, zero, zero, let's see if we have example like this. We have one, zero, zero. So the other one was one, zero, one. So it must be three because you get top two things. If you had one, one, zero, which is, let's see, it's for example here, one, one, zero. So you get two from the top guy, one from the, you get three. And of course, you cannot have one, one, one from any of them because well, E1 the EIs don't have three ones. And for the other ones, that would mean that one of them gets zero. However, to see why this is exactly, let's see what if I chose wrong, what if I chose a wrong set of items. So this simulates the case where there is no vertex cover. So if I choose V3, V4 and V5, clearly I'm missing E1. So now E1 gets zero, zero, zero, and G1 gets one, one, one. But we are using K minus one best. So E1 gets zero, but G1 gets only two. So K minus one, and all the other guys here get three, but still I'm getting utility K and minus one. So I can get my maximum possible utility only if, which is here K times N, only if there is a vertex cover. So is it clear? Okay, at least some extent. So of course, this is written technically, and I hope this explains the idea behind the proof. Okay, and this takes NP complete for border utilities. And at the price of serious pain and suffering, because this proof, writing it up takes half a page. Writing this proof for border takes three pages. And there's a lot of technical stuff that one has to deal with. But basically the same idea holds. So after we've done this hardness for border, we decided not to do others, but it's certain to hold. Okay, so this was the example of hardness for approval. So let's do easiness for border, for geometric. And the way we do that, actually, to give you the algorithm, we have to go back in time and we have to go back to our joint paper with Arkady and one of the co-authors of this paper, which started from doing epithas for border utilities for one best OWA. So how do, if all I care is watching my one best movie, how do I do that? The algorithm is actually very simple. So imagine you have a profile. So here you have voters V1, V2, VN, which I apologize for it being confusing with the vertices. Now they are voters here, or agents or whatever you call them. And each of them has ranks one, two, three M. So each of them puts a permutation of items on right here. And you have to imagine that I will not show this. But for example, if you rank someone, if you like someone best, you put this guy here. And since it's border utilities, this item gets minus one points. Then the next one gets minus two, next one minus three, and down to zero. Okay, clear now. So our task is to pick K items in a way that somehow maximize utilities of these N guys, N agents. So how do we do it? We start with the initialization step, which the step at first, it already starts with telling you forget about most of this information, it's useless. So we compute a number which is called X, which is M, number of candidates, number of items times WK over K, where WK is lumbered W function, which essentially, you can think of it as a logarithm. It's a slightly slower, more slowly growing function than logarithm. It's a solution to, let's see. Ah, never mind. It's just slightly more slowly growing logarithm. So we compute this number and we say everything, everything in the profile up to below this rank is completely worthless. We don't look at these things, we don't consider it not important. Of course, this means that maybe we'll not get optimal solution, but that's fine, we're after approximation. And we have much less stuff to think about. And now, what we do in the algorithm is, in the loop, we keep picking the candidate that appears in the available part, so the available part currently is the top of the profile, most frequently, and we just keep on doing that until we run out of the K guys. So, for example, if, let's say, I showed you some of this top K, most frequently appearing guys in the beginning of the profile, so for example, you see here some weird thing with large teeth, and this shows up one, two, three, four, five, six, seven times, so probably by far the most. So if we pick this big thing with teeth, it becomes one of our winners, and these parts of the profile become unavailable. So they already got there, so we know that whoever comes in this part gets at least this value x, or m minus, at least this value m minus x, and we've used up these voters, and now we continue. Now it seems that the next item that shows up most frequently is apparently a vampire, which shows up four times. So we pick the vampire, and we get another slot. And let's say if we still have one more guy to pick, and while we have a choice between the devil and the Frankenstein, we choose the Frankenstein, and we're done. So this would be our committee of representatives, and as you can see, maybe they will not fulfill this whole space, that's fine. But by essentially pigeonhole principle, one can show that there will be a lot of items here that fulfill a lot of these slots. So essentially this parameter x is picked in such a way as to make this pigeonhole principle argument optimal. And we're guaranteed that the total utility, under border utilities, will be n times m minus one times this function. And n times m minus one would be the utility of, for the case if we pick items that are always ranked first. There are n agents, each of them gives m minus one points to the top item, so n times m minus one is the best possible imaginable set of items they could ever get. So if we forget about this part, essentially what remains is the approximation ratio. And this is one minus two times wk over k, where w is this Lambert's function, essentially logarithm. So that means it's a really, this function really quickly gets to one. So in fact, the approximation ratio, if we show it on a diagram, you can hardly even see this function. So for committee of size 100, we're already at 90% approximation ratio. And what is nice, this algorithm actually guarantees this level of satisfaction, irrespective of how agents rank the items. So if we're picking 100 movies out of whatever, we're guaranteed that we'll pick movies such that you will like one of them more than 90% of other movies. No matter what, this is simply a fact of life. Okay, so this is a very nice thing. And this is the building block. So now the next building block is, we said we wanted geometric OWA. So now we'll say that we have a pitas for OWA winner, border utilities, but fixed number of top non-zero positions in the OWA vector. So just the beginning top two positions have something interesting, everything else is zero. And it's easy to show that we can essentially use the same algorithm to compute the solution of this problem. So now you have an example of a profile. So we're somehow picking, now the items have become people and maybe you'll choose any parliament or something like that. And the main idea is that, so we have K winners to pick and we only have non-zero values for T entries in the OWA vector. So we will select T groups of K over T winners. And we will use that pitas algorithm from, well here's from literature by actually from previous slide. So the way it works, so it computes this X value, looks at the front of the profile only and the algorithm guarantees to find some group, some K over T items that more or less satisfy a large fraction of the stop profile. And then we can keep on repeating that. Then we look, then we repeat the same process for the next group but looking at the second group of X preferences. And then you're again guaranteed a smaller group that appears in both places. And if you do it T times, you have these T groups smaller and smaller but actually the decrease in size is slow. So essentially the same reasoning as before says that this gives us the pitas. Okay, is the idea clear? Yeah, so since we have T non-zero items, you get for each of these guys in the final block you have T candidates that get non-zero utilities and that's nice. So you can ask, okay, but I wanted geometric of WA and it has more than T non-zero items. It has all non-zero items. That's fine. Because of course if P is smaller than one, which is exactly the case of probabilities, we simply forget about everything after the T entry. It's, now if P is 0.1 then even for T equal three or four, you're already not getting anything meaningful there anyway. So this way you can use exactly this algorithm to get your geometric solution. And that's very nice. Unfortunately, we do not have many other algorithms for many other settings. So for example, for the arithmetic OWA, no result. I'm clear. And the summary is that we have a new general family. Well, here I'm writing of multi-winner elections because if we think of this as either form of approval election for a border, we can generalize, essentially we generalize K border rule, we generalize trembling current, we provide some, for any OWA vector defines a new rule, or any OWA vector plus the set of utilities allowed define a new voting rule. And in fact, it turns out that we actually even model things that we didn't think of. So there is something called proportional approval voting, P-A-V, which is defined by, you could say harmonic OWA. So one half, one third, one fourth, and so on, with approval utilities. And actually from our results it follows that there's an NP hardness, even if each agent approves at most two candidates and each candidate is approved by at most three voters. So this is a pretty strong NP hardness result. There are more details about this in recent other papers. So this whole multi-winner thing is now somehow growing to be an important topic in computational social choice. But in general, we have very broad NP hardness results. We have examples of approximation results which are nice. It's somehow clear that this class of voting rules based on OWA's is important and useful. And now actually, a big chunk of my visit here with Nimrod and with Arkady was to understand to what extent and how. And well, thank you and that's it. It's your seminar. Yeah, it's an authority to be hard to choose so many different models where we would like to do that. For example, you have several projects, you create your activities. How to choose cake? Well, if you are able to consume all of them, then of course you can do some of the utilities. However, if you are not able to consume them at the same time so you have to delay some assumption, say one object is your basic object and you consume today, that's the best option to consume tomorrow and so on and so on. Then there's a discounting. So that you have to discount further utilities with some discount factor, so that's a different problem. Now, the third model is that you have to choose the side, you have to choose K, but everyone can consume only the best one. So for example, that's probably a proportional representation. Everybody who gets their best represents 100%. So in this case, only maximum is of interest for me. But in the flight, you can watch three movies, for example, you have 100, which is emotionally free, because flight is six hours, so each one is two hours. So you evaluate K movements as some of the utilities or maybe your best friend choices, maybe some, maybe some. And another model that is also hidden here is that we are choosing to say that some, I'm not allowed to choose my best. So I also allocate a option for me. So if I'm not, he's the high-judge circulation of options, my best option, I call it. Basically, Mr. Porter looks the worst also here in the worst. And in general, that's very common in economics. So the thing that consumers judge is a project looking at the best choice in the worst. All these scenarios fall into this whole WKK scheme. That's why it is so, so general. But as I said, unfortunately, only few scenarios allows us to calculate the set of objects or the set of objects before they come out of time. So if you are able to consume all of these objects and you judge such sets and sets of objects, that is the end of the time. But if you consume all of the K minus one, but the last one, then suddenly the car disappears. So car disappears virtually in all models of choice or say, race. That's why, because whenever you go, you need car complexity, that's why approximation algorithms are interesting in the WK. So you cannot get an optimal option after the best choice of option, but maybe you can get reasonable. So just this thing, that's one thing. So you are not optimizing, but just this thing. And so this is a very good thing because as I said, was all mentioning a particular framework where there was a lot of problems. It was justified to say, well, we have a lot less than we might want to watch. What are we thinking about some of the problems? What are we thinking about these things? It seems like the OWAA function was somehow codifying some expression of preference by individual patients. But the OWAA function is supposed to select their own utilities, but whether or not as a watch is one movie, then the problem is the K minus one second movie is supposed to be across the uniform at all. The micropassage is one movie. So as a watch movie has a book, that as a watch is all a movie. So how can you justify the OWAA function to be uniform? It seems like not just an example. There's a very simple answer. You can't. The problem is so complicated that you have to compromise something. So that was the point of compromise. So if it was a company running it, they would almost certainly have some heuristics, different OWAAs for different group of people. So that's a simple answer. Yeah, this is the case. For example, you're telling us about the employees employer situation, some of the current employees when they're looking at new 10 candidates can be employed. One of them might be the kind of employee that just wants to select one of the new that you have and become close friends. Another person might want to socialize with them and therefore cares about the 10 of them. So it seems like it can be different. I can understand many elections and force people to have them. Yes. But I said exactly there are cases where people may want to have. So if I'm choosing a parliament, of course I want to have 10 representatives because I've done one. I have more voting power, but I'm only allowed to have one. So sometimes it's useful to express that. So again, I would add that this paper to a large extent is based on computer science perspective. It means we want to achieve something. So if we make our model even more complicated, we get even more hardness results. So the starting point for this kind of work was probably from Chamberlain Corrand and a lot of early inspiration and early work of Arkady. And this generalized it a bit, allowing more, but we certainly did not get the full generality. And this question of having individual OWA vectors always arises. And the best thing to do, I guess, it would be great to have it. But the problem is...


Alrighty, I have a really cool construction update for you guys today. So a lot changes in a day now. You're going to see that even in a day. So before you look, this was filmed at around 11 a.m. And then you're going to see the area change even more after that. So I'm starting to speculate that a lot of these buildings are going to come down and the whole area might just be getting gutted and refreshed, but we'll have to see how that plays out because we are really close to Canada's Wonderland opening. Like we're about a month and a half away, technically. April 20th is their first operational day. Now, that doesn't mean for a regular guest. That just means for bank days and such. So it'll be really interesting to see what happens and how this all plays out because I'm assuming that these are going to be have to be prefabricated buildings that they're going to have to bring in. Now, with that being said, over in the tunnel, it is starting to definitely take formation. So it is 100 percent starting to look like it's going to be some sort of ramp. The only confusing part I have left is the wall. So for those of you that don't understand construction, essentially, rebar is used to strengthen concrete or cement.  What that suggests, if they don't grind that away, is that there's going to be even more structure built on top. Now, for that to be utilized as a ramp to get track inside, again, they carry track horizontally, so a track piece can take up a very large section when it's being carried horizontally into something. They need a lot of that space. Now, if they build walls vertically, they're taking away from that space that I would have assumed would have been utilized to carry the track pieces in horizontally. If they do build walls, we're looking at a tunnel about the same size as the maintenance tunnel or presumed maintenance tunnel over on Wonder Mountain Guardian's side. So that definitely confuses things. But we'll talk about that more over at Front Gate. Again, a lot of work going on. There was a little theming garden piece built on the right side of the parking lot there that you just saw. And brickwork continues and adding in the final touches. They're also adding in the security posts already. This is another angle of the construction or deconstruction over in Alpen. I'll keep getting questions. Are you sure it's Alpen? Yes. If you go on Google, it was literally called Alpen, A-L-P-E-N. So it's Alpen. It's themed to like an old German, I guess, ski village. Backlot still showing signs of some sort of refurbishment. Again, with that, my assumption, not my knowing, is that this might be the VIP area or they've completely refurbished the restaurant and there'll be a whole new menu. There are signs of that as well. Again, Wonderland's been teasing a whole new burger menu. So maybe this will be that place also over at the tunnel. They are almost done. They are about three quarters done reinforcing this tunnel. So I'm really excited to see what happens afterwards, because that will be a telltale sign to what's going to happen and what tunnel is going to be used or if both are going to be used. Again, we do need to see a third tunnel. So at around 4 p.m. flight time, this building was almost completely demolished. You can see remnants of Thunder Run's old station. So that was really cool. And the old Coke Refresh Station is getting demolished as well. So I'm really curious to see what is going to end up in this area because this is a very last demolition project. It was teased or it was kind of hinted that if we see anything getting removed, that these are last minute budget changes. So it'll be I'm really curious as to what that could mean and what that transpires again. Like I've never been more lost with a construction project than this one because we have two different routes of demolition and work going on. So it'll be really interesting to see what happens outside of that. I definitely am forecasting more buildings to come down, not necessarily all. But yeah, over here is a better example of the rebar cages or not rebar cages, the rebar sticking out of the foundation keyword foundation. So it'll be interesting to see what type of wall formation takes place, if any, they could grind these away again. Wonderland is being very secretive about what's in the tunnel. They've set up a double wall barricade to prevent anyone from getting super close to here and looking inside the tunnel. So that is definitely really curious, as you can see on the screen there. This new zoom is insane. But yeah, Tiny Tom's sign has been removed and the building is also showing signs of its electrical being removed. So that building also could be coming down, which is again, crazy that Tiny Tom's might be getting dismantled. I'm really curious to see if that's going to end up coming back or if it's gone for good. Again, Wonderland has been slowly removing franchises and corporate venues and just building their own. Here's that better shot of the old Thunder Run station. Again, the whole building wasn't the Thunder Run, but the roof was and part of the structure was and it was just redesigned, similar to some of the buildings actually in front, which were utilized as the queue line for Thunder Run as well. So just fun food for thought. Outside of that, not too much going on. Leviathan is almost entirely on its track. I believe Behemoth is entirely on its track. And a lot of the kids rides have already started testing and not anything exciting, but the helicopters, antique cars, all those kinds of rides, they've already tested and they're ready to go. And yeah, I'm really curious to see if anything's happened with Thunder Run because there was the really, not even rumor, but the statement that they were gonna upgrade the effects in Thunder Run. Over here, this is really exciting. Electrical and speakers and water have all been tampered with in international show place. So it looks like every single speaker, water, sprinkler, electrical thing that's in international show place has started to get removed. Again, a telltale sign of what's about to come. What we're gonna wanna look for is the events page when Wonderland announces it and see if there's any events in that tent this year because that'll be a telltale sign. Here are some crazy long rebar on a flatbed. I wanted to show you guys this as it could either be for a really deep footing or a floor piece or a major wall piece at my best guess. But yeah, that's it for today's construction update. Thank you so much for watching. Today was a big one. Have a great one, guys. Bye.


Hello, I'm Javier Hernandez reporting from Washington. Hurricanes, terrorist attacks, snowstorms, floods. Disasters like these have impacted the federal judiciary's ability to maintain operations. With this in mind, the administrative office of the U.S. courts and two federal courts in the national capital region tested their emergency plans in a national exercise involving all three branches of government. Julie Irriondo has the story. And Hurricane Zoe disaster in the making on the east coast. On Tuesday, May 6th, Hurricane Zoe makes landfall at Newport News, Virginia. The category for storm is now bearing down on Washington, D.C. Within days of the initial chemical blast... Meantime in Washington state, a bomb explodes a chemical tank truck, killing 150 people and injuring more than 3,200. A credible threat of terrorism to the national capital region sends all federal departments to the highest state of alert, COGCON 1. These scenarios are part of Eagle Horizon 2008. Eagle Horizon is a national level exercise. And it's important because it gives all the executive branch agencies and the judiciary and the Congress a chance to test their COOP plans. COOP stands for Continuity of Operations Plan. For the administrative office, the focus is on communication. We're testing initially the alert and notification concept. That is, can we notify the members of our team in a timely manner and inform them of where to be at what time after we are notified that something is happening, something is going on. When disaster strikes, the judiciary emergency response team goes into action. JERT helps courts by coordinating response efforts. That includes relocating operations if needed. On this day, that's the case based on simulated threats. You're fine with proceeding with the defendants can appear there. But if you move out of state within another location, you're going to need to have defendants consent to do those proceedings anywhere outside the state. Meantime at the administrative office's alternate location, executives keep the deputy director updated on the agency's activities. Eagle Horizon is especially important for the Alexandria division of the Eastern District of Virginia. Here, COOP is in the early stages of development. And it's our first exercise to actually sit down and deal with scenarios and decide to talk about what we would do exactly in a COOP situation. Volunteer COOP mentors from the Court of International Trade in New York, the Southern District of New York, and the AO are on hand ready to offer advice and guidance. It's very important that your unit executives are all talking to each other, that there's good communication with the judges because the judges are the people who are going to make the decision on whether to activate your COOP or not. The D.C. Court of Appeals and the D.C. District Court established COOP plans several years ago, but staying current is an ongoing challenge. We learned that we have a lot of work to do updating information. We learned that we really need to get our newer employees up to speed on some things that we've had in place that have changed. We're finding out that there are a lot of holes in our plan, so the tabletop exercise has made us look at who we're going to call, what we're going to do. Testing is crucial to successfully execute COOP in the event of a crisis. And teleworking is still the best way to ensure that federal judiciary employees know how to work remotely. We have a lot of people in our office who telework, and so COOP is just folds kind of naturally into that. And in fact, when we're talking about relocation teams and people going to alternate sites, we can really streamline that because we can do an awful lot of work from our homes right now. Emergency planning isn't just for large disasters like Hurricane Katrina in September 11th. Just a few days before this exercise, a pipe bomb exploded at the San Diego Federal Courthouse. Simply put, COOP readiness is a necessity. Courts cannot afford to be unprepared. You want to be ready for an incident before it happens. You don't want to wait until something happens to say, oh, I should have tested this, I should have done that. We're part of what this country is about, the third branch. I mean, the judiciary, we have a constitutional responsibility to be up and running for business. Events like Eagle Horizon help the courts prepare for that responsibility. For Judiciary Now, I'm Julie Irriando. Reporting from Washington, I'm Javier Hernandez.


Thank you so much everyone for coming. Thank you so much to my team and my friends also who are here to share me up Really grateful to all of you So today We are going to witness a magical act without the wizard's hat because the wizard You know has to travel 30 hours from India So the wizard is little jet lag and forgot his visit visit had at home, but never mind we are going to still see the act and As we can see the title of the talk is Undravelling the magical act of Dr. Slim minifying continued images. How many of you have heard about Dr. Slim? Wow great so Who is a magician for today? My name is Brithin Jay Sharma and I have been Contributor to Dr. Slim for about more than like Seven months now and as an open source contributor. I have been Involved with a lot of open source communities for more than two years now Introducing a little bit about myself. So currently I'm a student. I'm still a student I'm pursuing bachelor's in computer science engineering from Jesus Academy of Technical Education Noida. It's a small college in India. So from there I'll be graduating in August 2022 other than that. I am currently Like contributing to a lot of open source projects previously. I have been a Google summer of course scholar twice once with the cloud native computing foundation and Other than that with our TMS also open source summit Has mattered a lot to me because it has helped me begin with my open source journey in 2019 So today It's my first time that I'm speaking At the open source summit the last time when I attended it. I was an attendee so Introduction and all is done The background is set now Let's talk about the origin of this magical portion of this magic that we are going to see today So how does this journey begin begin? Let's go back to 2013 So as far as I remember I have I mean okay. It's kind of general knowledge But yeah Docker was introduced in 2013 if I'm not wrong, but Linux containers existed before that So what Docker did for Linux containers or for containers in general was what Apple did with smartphones So like smartphones existed before iPhone, but iPhone I mean Those who are not Apple fans may not agree with that but iPhones usually Made the user experience a little more better. So that's what Docker in a way We can if you want to take an analogy dead for the containers They enhance the user experience of course. That's great But people who use to work with production use cases often face two challenges What are the containers production ready and how and what were the major problems pin pain points in those? In understanding it so the two major pain points were that Are they secure? Are they performance optimized? Now this is something that was a problem to a lot of developers and to the developer who created Also face this challenge Created this project called locker slim. We are going to talk about that later how it was created, but yeah so what happened was that The Docker community organized a hackathon called Docker hack day in Seattle in 2015 So there a lot of projects were being made a lot of ideas were being discussed But one man was trying to solve a problem that most of the developers were facing but they were not Trying to think in that direction that how many fine containers Sizes itself can play a large role not only making your image size smaller but also making them more secure and That laid the foundation of Docker slim so Docker slim is Created by Kylie quest He I mean before talking about him and how he impacted my journey also Let's talk about that hackathon. So in that hackathon this tool was not only it won the first prize but it also won in the second prize in the global Pumbler category for that and This too was originated there and He himself called this why why I tried to take a magical kind of idea because he when he when he Produced this tool he called it the magical pill for securing and minifying your images. So That that that thing I saw a tweet seven or eight months back Which talked about this and that actually made me curious to learn about it and since then I have been involved with Docker slim community so Other than that he has mean like working with he has a lot of experience he I think worked with Cisco also previously and I Started my good when I remember that when I started learning Golang because mostly when you work with cloud native technologies or containers or Docker engine of you you need to know go if you are a contributor So when I started with my goal and journey I remember that I started with his blog 50 shades of Golang and I didn't know that this man was also the creator of Docker slim, so it was a funny Like title because it relates with other things also, but yeah, I love the blog and from that blog I learned a lot What sets Docker slim apart like why? Why docus? Because there are various other methods also where you can minify your images So like it all that depends on a particular image, but but it It it it can be said that for most of the container images It can minify your image by 30 x 30 factors So that's a huge, you know difference that can set apart your performance orderly performance it can increase the speed of your how how you are going to spin up your containers in your In a production environment Not only that you can analyze what's happening. What's happening and you can even talk to the Not only the Docker slim containers, but even the intermediate container that is created to minify the container That that's that's what we are going to discuss next How how how this magic happens before we move to the demo we need to know how this magic happens How how does this work? so not only that you can X-ray your images and Of course, it also builds security profiles like app and circle Thus it makes your applications even more secure and more optimized now. Let's talk about how Before we talk about what it does through the live demo. I mean Let's see if the demo gods will be with me because they weren't in the they weren't with me in the morning I was trying a lot. So I have a pre-recorded demo already But yeah, let's talk about how docker slim makes image Six smaller faster and more secure So if I am not going to the code walkthrough because code walkthrough would be another dog But if we go to docker slim code, they are two things one is the main docker slim binary and the other thing is sensor So it's the sensor which injects The monitoring the multiple Tracing tools in a temporary container that is created from the fat image. So suppose you have Like in this example, they have taken an engex image.  You have your large size image ready. It's okay. It's fine But what happens next is that docker slim creates a temporary container. So in that temporary container All the magic happens that it basically does in three steps You can call like it does the static analysis the static analysis is like it assesses and collects things which are not going to be used after being created later and It tries to abstract away from being Implemented of being later on carried Increasing just the weight of the container directly in that temporary container All the collection of intelligence happens what the static and the dynamic analysis After that what happens that It it it applies all your heuristics Like it finds your SSL certificates is detects whether they are shells and then it creates the uses report and make your slim image almost ready The for you know to see like whatever you had earlier It's going to be more optimized more slim, but it's still going to be functional It's not going to change anything that that that's going to ruin your application So that's that's how that's the beauty of this tool that it basically builds upon the top of the temporary container That's just that's main idea is to minify your image After that you have your output as a slim image and it can be used for the future container runs So that was a brief Overview how Docker Slim works how how it works internally Now I think we'll move to demo so just to Let me go to terminal Yeah, so I'll I'll go with the pre-recorded demo because there are some issues in my laptop like it wasn't Working some some problems. So thank you so much for understanding, but yeah Playing the demo we'll we'll be able to talk about more how and see it in action. So Let's see first of all, we'll see what What's the dose? It's a Docker image that we already had it's a no Docker image and As we can see the initial size is 432 MB Now what will happen is that now we are going to run the build command So the build command is the most used command that actually minifies that actually does the magic it also produces a security profile and extra command is used when you need to know the more detailed more heuristics about your Things stuff and now As you can see the application with the Docker slim tool is running. So by default HTTP probe is on However, if your application is not exposing ports You can of course like turn it off, but if for this application for for this use case we had to use it So now we are going to test the size of the new image the slim image that we have created. So if you look at it 14 MB So from 432 MB to 14 MB and having the same use case as you had earlier This is magical and that happened with that temporary container inside actually it Analyzed and collected all the information that you already have, but it's still taking up the size now so so this was a life, I will not call it alive, but a pre-coded live demo of how we minify Docker images and Now moving back to the slides Yeah, so These are the additional resources that we have if you want to do Let me do it the full screen. Yeah So these are some additional resources like if you want to contribute to Docker Slim C Oh one of the fundamental ideas behind all the open source projects that I have learned myself as a student is that if you Want something? You not only ask you can even contribute directly So I would love that you can you all join our community We are active on the squad. We have a GitHub repository a lot of things have to be done A lot of things are in the pipeline one of the things that are in pipeline is supporting Docker compose for this So We are looking forward for that Then we have our origin story that I just talked about today and and There are multiple blogs on how we usually reduce like not only node, but Python images and other thing and and That's mostly about How how how your use case is it can it it has a like let me show you the Docker Slim examples repository it has a lot of a lot of examples So yeah, so this link has a lot of examples like for from Java to node image to Python to Ruby To test out and and mostly they are just you we can do it with just make commands So because we have made we have Mostly scriptified them actually so it can be easily tested out by you and Other than that I Will say that here are various examples like depending upon What kind of image that you have these are examples of how many how by how many factors they have minified they were minified in the Example so like if you see the Ubuntu image that we saw it was minified by 30x Similarly, if it's it it was alpine so this was a smaller image in itself So even after minifying it was reduced to 34 MB, but but it's still better So these are the multiple examples to look out Other than that I think We are done with the most of the contents of the talk and I would love to like discuss with all of you If you have any questions if you have any any any suggestions for us How to improve and what to what ideas do you have what use cases do you have? To learn better to improve the performance of docker-slim also better. Thank you so much Sorry, can you please have it was not valuable? I Think they are giving you a mic. Thank you Will it generate any report to show us what exactly it removed to slim down the docker image? Yeah, you can actually talk about that using x-ray x-ray command so with the x-ray command you will have access to Whatever whatever has been removed what what what what it does how it minified in in fact you can even talk to your temporary containers With the there's a command for that. I think I remember let me show you Yeah, even even the temporary containers can be talked directly. So that's that's an interesting use case an interesting question. So When we talk about the site and we can even have the sidecar containers, which which can actually help you out not only Seeing what has happened, but also debugging the slim the slim the minified container. So This is available on the GitHub repo and we can check more about that But we are using the x-ray command you can you can opt you can understand The insights of what has happened the report as you were talking about. Thank you So I don't know a lot about Docker or Docker slim Containers are big. Okay, and if Docker slim can optimize that Why don't why doesn't everyone uses it? If it if it if it, you know optimizes the code if it reduces and does not make anything It is not necessary that containers are always big right it depends on your particular Docker file and what application that you are building right and whether it will serve your purpose or right and it also depends on on The security profile that you are trying to inject in your containers So it depends again on the use case, but it's it's being used and that's why it's a very popular project if you look at Even the stars it has more than 13,000 stars. So people are using it. However. Yeah, it depends again On what specific use case do you want to use? So if I am a developer and if I have like I personally used it for my goal and project and it minified my images 512 12 factor. So I use that but it again depends like what what the user and the developer experience is all about and mostly Who who doesn't love More slim image, right? So is there like a trade-off of minifying it? Do you lose any features or anything like that? Essentially not But at times you might need to talk and see what happens. That's why we have the sidecar facility to see What can we improve what what are we losing something that? Might be important to us and that's why talking we have this facility of talking to the temporary container as well as to the slim image Awesome. Thank you. Yeah Thank you so much for the talk. I just had one question. So coming into a more complex use case Like let's say you are building a microservices based architecture.  So when you have such kind of a complex use case We have sort of defined in which way the images need to start booting up Is there any facility within Docker slim that sort of manages this or I mean, how does Docker slim take into consideration? Multi-mage approach or a project that has multiple images Right. So this is something that Not only an interesting question, but something that I will be working on very soon after my graduation So we are already actually working on it's a work in progress about the experimental Docker compose support and various Like like Docker compose support wasn't there in in its full form and it's not even there right now but yeah, it's a work in progress and very soon this complex use case that you talked about is actually One of Will be one of the brownie power points for people using the August limb So it's it's definitely an improvement that we will be working on and in fact, I have to be working on after a couple of months I guess I was going to ask is that on average how much manual effort is needed to exercise the container for? For software you write will be quite straightforward But for if you are taking existing commercial software and trying to run it through slim Have you found you need to do a lot of manual effort to make sure slim identifies all the required files Beg your pardon. I missed some I mean like I miss it It's the probe and probes the software to make sure it's exercises and it identifies the files That need to be that aren't used to be removed and I'm understanding the design right right and so for How much effort is that step in your experience to fully exercise software? Like it depends on how you start Using the August limb itself like if you are a if you have just started with that So sometimes the time of understanding the project because again, it's a developer oriented tool. So It's not end user or I guess that's what it's good to think soon as a developer oriented tool that answer makes sense But have you found it appropriate to use on existing commercial software existing containers that you didn't develop? Yeah like I like I haven't used myself directly, but I think so that some of my Colleagues might have worked and and they would have worked with that. So I'm not sure about that personally But yeah, it has been used in production use cases. I definitely one example that I have I think Nirmata Nirmata also uses is for Kyber no because I work I have worked with Kyber no so Kyber no Kyber no example is once such example, which which is being used in production use case Right. So one of the major plans that we have ahead is about introducing the Docker compose feature And the other thing that we are going to work is on that the HTTP probe right now. It works internally it talks internally to the You know the temporary container that's that's what we are going to, you know Not do that directly. We are we are going to use the traditional way of talking to HTTP API. So so that's what That that will not only help us Increase the current flow of Docker slim. That's how it's working, but it would also Help the experience of the SAS application. That's being built over. Yeah So that's that that they are the two major things that we can see Other than that, I think in the slim in the doc in the Docker desktop extension. It's all it's already there the slim.ai tool to To actually just, you know, don't even you don't even have to use those terminal commands just a click to minify your images Do we have virtual questions If you if you wish to connect with me Even post this talk anything like anything like you would like to talk about your we can we can connect on Twitter This is my Twitter handle and this is my email ID. So we definitely love to chat more about Open source engine or Docker simulator And if thank you so much to everyone for attending the talk