Welcome to our lecture on the binomial distribution. Permutation is a particular arrangement. For example, if I ask you how many ways can you range letters A, B and C? Well, I'm listing all the permutations or arrangements. A, B, C is different from A, C, B different arrangements. You can also do this B, A, C or B, C, A, B or C, B, A. So you really have six ways to arrange the letters A, B, C. Using a calculator, you'll see it will be 3 permutation, 3. Okay, now we know 3 permutation, 3 is 6. Well, how do we know that? Okay, first N is how many objects, in this case letters? How many we have? There were three letters, A, B and C. Then we have R, which is going to be the number of slots, the three slots. Okay, so let's look at this. We have three letters, A, B or C. So in the first slot, we have a choice. We put an A, a B or a C. Suppose in slot one, we used an A. Now in slot two, we have a choice of B or C. Suppose we use the B for slot two. Well, that's left to C. So there's your first arrangement, A, B, C. If you start over with an A and then a slot two, you put a C. And nothing left, except for a B, which goes to slot three, A, C, B. Suppose you started with a B in slot one. Well, in slot two, you can put an A or a C. Let's see who started with an A in slot two. B, A, now all that's left is C. You've got B, A, C. If in slot two, you put the C after the B, so you have B, C. You must have an A that's all left. You've got B, C, A. This is called a tree diagram, actually, if you can do it, you'll see. So that's how we know that three permutation three ends up being three factorial. Three times two times one. So three permutation three is three factorial. If you look at your scientific calculator, you'll see an NPR key. P stands for permutations. N is the number of distinct objects before we had A, B, and C. So these are the objects you want to arrange, and R is the number of slots or spaces. So the previous example, we had three objects, A, B, C, to range in three slots, and that becomes three permutation three, which is three factorial, which is three times two times one, which is six. The general formula for permutation is NPR is N factorial divided by N minus R factorial. Thus, when N equals R, then NPN is just N factorial. And the way you read a factorial is shown to you, but let's do it with numbers. Ten factorial is ten times nine times eight times seven times six times five times four times three times two times one, which is more than three million. It's three million, six hundred, twenty-eight, eight hundred. So it's a large number. Six factorial is six times five times four times three times two times one or seven, twenty. It's actually surprising how large these numbers become. If you try fifty factorial, it's going to mean a credibly large number. Let's look at some problems. How many ways can you assign five workers to five different tasks? Well, that's five P five, which is five factorial, five times four times three times two times one, which is one twenty. Again, you have a factorial key, so you can just get it directly. One twenty. How many ways, example two, how many ways can you arrange ten different books in your bookcase? And suppose it only has room for five books, that's like the slots, spaces. So we have ten per mutation five, remember the second number is the slots. So it's ten per mutation five, and that turns out to be ten times nine times eight times seven times six. The five four three two one is cancelled out by the denominator. But if you just put it in your calculator, you get thirty thousand two forty. For example three, how many ways can eight cars line up single file in front of a toll booth? You can resume this space for eight. So it's eight per mutation eight, because there are eight spaces and there are eight cars, which is eight factorial, which is forty thousand three hundred and twenty. The fourth example, how many ways can you arrange twelve guests around the table as twelve chairs? Well, the chairs are now like the slots, so the spaces. So N is twelve, the twelve guests, you want to put them around the table as twelve chairs? That's twelve per mutation twelve, which is twelve factorial. And look at the incredible number that is, four seventy nine million six hundred. And now you can see why so many family feuds occur when it comes to seating family members at weddings or bar misfits or whatever family event you have. So many ways to arrange them and if your family is like my family, somebody is always going to say, why did you seat me next to Jane? You know I haven't talked to her in seven years. Why did you seat my daughter next to Ellen? You know they don't get along, things like that. But look how hard it is. You know twelve per mutation twelve is more than four hundred seventy nine million. Well now we're going to talk about permutations and combinations. Permutations, the arrangement of the items is important. Each unique sequence is another permutation. Thus ABC is not the same as BCA, which is not the same as CBA. You just change around the arrangement the way it's ordered and it's a different permutation. So you get generally a larger number than you're looking at combinations. The combinations ABC, BCA, CBA are not counted as three separate arrangements. It's the same combination. You still got ABC, the same three letters are in ABC, BCA and CBA. So let's see how this works. So for example, if I ask you how many different groups of three can be selected from seven people? Let's call the people A, B, C, D, E, F, G, they're seven people. And now once you select B, D and E, the fact that they can be arranged six different ways, B, D, E, E, D, B, E, D, it doesn't matter. It's all irrelevant. It's the same three. So obviously you can get a smaller number. So that's the difference between a permutation and a combination. Note you have both keys. You can do an NPR or NCR on your calculator. This is the formula for combination. N, C, not P, now it's a C. NCR is N factorial over R factorial times N minus R factorial. So it's the same as the permutation formula except now you're dividing, you're shrinking it, in fact, by dividing it by R factorial. So that's why we see that NCR is NPR over R factorial. Anyway, you don't have to worry about all this. You have the NCR key on your calculator to solve any combination problem. Make sure you have a calculator that has that key. Okay, you shouldn't even buy a calculator that doesn't have NPR and NCR on it. They're very cheap now. So for example, how many different groups of three can be selected from seven people? Sampling in general is a combination problem. So if you want to get groups of three from seven, again, you don't care how they're ordered. Once you get the three, that's it. Okay, so seven, combination three, which is seven factorial divided by three factorial times four factorial, and you put this into your calculator, you should get 35. How many different hands can one draw from a deck of 52 cards in a game of seven-card rummy? Again, you don't care about how it's ordered. You just want to see how many different decks from a deck of 52, how many hands of seven can you get? Okay, that's 52. That's N, combination seven. That's like your slots. 52, combination seven. That's 52 factorial over seven factorial times 45 factorial. If you do it in your calculator, you'll find it's 133,784,560 different hands you can get in seven-card rummy. Let's try the next example. How many samples of size six can be drawn from a population of size N equals 50? Well, this is simply 50, combination six, 50 factorial over six factorial times 44 factorial. Using your calculator, you'll get the answer 15,890,700. And that's, it's very simple. Once you learn how to use your calculator, you have no problem. The biggest problem you'll have is deciding is it a permutation or a combination. And that's easy to figure out. Do we care about the arrangement or not? If you don't care about arrangement and once you have ABC, it's the same as BCAC, then you're basically looking at a combination. Now we're ready to learn about the binomial distribution. The binomial distribution is used when the sampling process works as follows. There are only two outcomes. There's two possible outcomes. These two outcomes have to be mutually exclusive. We're going to call these outcomes success and failure, even though you might not consider a defective product to success. It's just a terminology to use. Okay, so here are some examples where you just got two outcomes. Heads, tails. If you flip a coin, the only two things are going to happen.  Or you pass a course or fail a course. If you take a course, pass, fail. You're getting a P or an F. Or, as I mentioned before, defective, not defective. Dead or alive. Hit or miss. So when you have two outcomes only and they're independent events, which means, and you'll see more clearly in the third condition, the probability of success or failure is constant from trial to trial. For example, the probability of getting a head on a coin toss is the same on every toss of the coin. Even if you've got, let's say, four heads in a row already. You've got head, head, head, head. Guess what the probability of a head is on the fifth toss? It's still 50%. Even if you've got ten heads in a row.  Imagine having a ten in a row and most of us will say, well, now they'll probably change. No, it's a fair coin. Even on the 11th toss, guess what? The probability is still 50%. And again, you'll remember that there are two outcomes, because the word buy means two. Right? So when you see binomial distribution, you know it's got to be two outcomes. The formula for the binomial distribution. This is what you need to know. Obviously, you need to know n, p, and x. Okay, p is the probability of success. Again, success doesn't have to be a good thing. It's just an arbitrary term. Once you know p, since there are only two outcomes, you know what 1 minus p is. Okay? So I tell you it's a 5% chance of a defective product. That means 95% chance it won't be defective. So once you know p, you know 1 minus p. x is the number of successes out of n. Well, if you have x successes, n minus x will be the number of failures, because it must add up to n. And here is the formula called the binomial distribution. The probability of x successes is n combination x, p to the x, 1 minus p to the n minus x. And a quick check when you do this and you write it out, make sure that pn1 minus p add up to 1 and make sure x and n minus x add up to n. If you do that check, you won't make any mistakes. Well, there you see the formula again for the binomial. The probability of x successes, n combination x, p to the x, 1 minus p to the n minus x. We can figure this out mathematically. The mean or the expected value of binomial distribution, mu is just np. The variance turns out to be n times p times 1 minus p. So just keep that in mind. You'll see common sense will tell you the mean is np. Here is another problem involving coin tossing. Coin tossing of the classic binomial. Two outcomes, head to tail. The probability never changes. It's always half, 50%. Okay, if you toss a coin 12 times, what's the probability you'll get six heads? Okay. Now, but those of you who know a little bit of math know that the expected value is supposed to get six heads on average. If you keep doing it over and over again, you will average out to six out of 12 tosses. How do you know that? np. Mu is np. So 12 times p over half, you should get six heads. That's the most likely outcome. But let's see what the probability turns out to be. Many people think it's 50%. It's not. The highest that probability, six heads, but it's not 50%. The probability of getting six heads in 12 tosses will not be 50%. And let's prove it. 12 combinations, six. And there you see that in the parentheses 0.5 and 0.5. That's the probability of the head and probability of the tail, obviously. Or you want to call it success and failure. And notice the exponents are six and six, because you want six heads, which means you automatically have six tails. It works out to 0.2256. And by the way, with 100 tosses, we know mathematically, mu equals np, 100 times a half. So you're supposed to get 50 heads. That's the most likely outcome. But the probability of getting 50 heads in 100 tosses works out to only 0.0796. Again, just check the formula. You'll see it's a low probability, 0.0796. It's the most likely thing that's going to happen. But it actually happens. You toss a coin 100 times. Sometimes you'll get 49 heads. Occasionally you'll get 50. Sometimes you'll get 51. It'll average out to 50 heads. That's what mu is, like a long-term average. Expected value, we talked about that. Okay, one more problem. Suppose you know that 60% of the students at CUNY are female. CUNY is the city university of New York. If you're not from Brooklyn or Manhattan or Queens. So what is the probability that in a randomly selected group of 25 students, there'll be exactly 15 females? Now notice, by the way, if you want to get mu, which you expect to see, it takes mu equals np, or 25 times 0.60. That's the most likely thing you should be. Most likely outcome. But let's use the binomial. So x is 15 out of n25. And you see the two probabilities, 0.60, that's the probability of female. And we're assuming there are only two categories. Again, you know things have changed. And it's not just two categories. Well, let's pretend there's two categories, female and male. So we have 0.60 and 0.40. And then we have 1 out of 15 females. So 0.60 to the 15th power. 0.40 to the 10th power. And again, the 25th combination 15 is obvious. And when you solve that, you'll see the probability is 0.1612. Here's another example. Suppose the probability of passing the organic chemistry course at your college is 40%. Which is, of course, 0.40. What is the likelihood in the class of 45 students taking the organic chemistry course? That 22 will pass. Now remember, you only need n, p and x. Well, n is 45. We're asking about 22 out of 45. So x is 22. And the p, let's say 40%, that's 0.40. So it's 45 combination 22 times 0.40 to the 22 power times 0.60 to the 23. As a check, look at the two probabilities. 0.40 and 0.60, it adds up to 1. Okay, that's logical. Let's look at the two exponents. 22 passed. That's 45, that means 23 failed. So we have 22 plus 23 is 45. It has to add up to n. So that's logical. That's where you check your work. So the answer is going to be 0.0572. Let's look at another problem. A machine produces parts that are very difficult to make. Three-dimensional printers are now being used to make kidneys. That's difficult. It turns out 1 out of 20 is defective. That's your p right there, 1 out of 20. And you have to throw those parts out. So I ask you, what is the probability you buy a sample of 10 parts or a batch of 10 parts? You got 10 parts. What is the likelihood it'll have zero defectives? Okay. This is a standard binomial. When you see two outcomes and they're independent. So we know p. p is 0.05. Okay. We know n. I said that we have a batch or a sample of 10 parts. And we want to know what x equals 0. Okay. So there it is. 10 combination 0. n combination x. 0.05 is the probability of a defective. That's 1 out of 20 is 0.05. You want zero defectives, that's 0. And 0.95 to the 10. And as again as a check, look at the two probabilities of the parentheses. 0.05 and 0.95, they add up to 1. So you make a mistake there. And zero defectives, 10 non-defectives, 0 and the 10 as the exponents add up to n, which is 10. So your logic is good. Now look into your calculator and you've got this. You could actually do it if you have a scientific calculator straight across. First to the n, c, r thing. In this case you don't have to do it because 10 combination 0 is 1. You can do it in your head. And anything to the 0 power at the point of 5 is 1. So you don't even have to go crazy with that. That's 1 and 1. All you got to do is 0.95 to the 10th power. That's all you got to do for this kind of problem. And your answer is 0.5987. All right. Here's the problem. It works a little bit differently. We're still using the binomial, but we have to use it in a little bit of a different manner than before. Suppose we have a smartphone that's produced with eight critical components, and each one of those eight parts has a 1% chance of being defective. It sounds pretty good, but we'd still like to know what's the probability that a randomly selected smartphone will not work properly? Okay. If any one of those eight parts is defective, it won't work properly. But think about it. If two of those parts are defective, it won't work properly. If three, if four, if five, and certainly if all eight parts are defective, it won't work properly. So this is a little bit more of a complicated problem where you can get the probability for each of those situations, the probability that x is equal to 1, is equal to 2, is equal to 3. And then you add them all up because those are mutually exclusive. And the sum total of all of those probabilities is the answer to the question, what's the probability that a randomly selected smartphone will not work properly? We're going to show how that works and then hopefully figure out a hack to do it a little bit differently and a little bit easier. Let's take a look at the work here, what we have to do to solve this problem. The probability that the smartphone will not work properly is the probability that there's one defective, as you can see, 0.07457 plus the probability of having two defectives, 0.00264 plus the probability of three defectives, 0.0005 plus the probability of four defectives and this number is so, so small that it's in effect zero. And the same thing holds for the probability of five defectives, six defectives, seven defectives, and eight defectives. When you add up all of those binomial probabilities, you have 0.07726. So the answer to the question, what's the probability that the smartphone will not work properly? It's 7.73%. 7.73% of the phones coming off the assembly process will not work properly because of defects in these eight components, possible defects, probable defects. Now take a look at something else. The next item here, what is the probability that the phone will work perfectly? Well, that's easy. We don't have to get a million probabilities and add them up. The probability that the phone will work perfectly is the probability of zero defects, which we haven't done yet. It's not one of the probabilities on the right side of the screen. The probability of zero defects applying the binomial formula is eight combination zero, which is one. P to the zero, which is also one. And then the only thing you actually have to compute, 0.99 raised to the power of eight, which is equal to 0.92274. Well, look at that. That makes my job a lot easier. Instead of getting all of those binomial terms and adding them up and getting the sum of all the binomial probabilities of the various ways that we could get a defect, we could just get the probability that there is no defect. The phone works perfectly. And that's not what we want, of course. But if we take one minus that, one minus 0.92274, that's everything else. That's the probability that it will not work perfectly. And it turns out one minus 0.92274 is indeed 0.07726. So this is a kind of a problem where you are asked for a probability you know the binomial distribution is involved, but you have to figure out what you want to compute to make life easier for yourself. And then work with that in order to get the answer to the problem. We'll see another example of this coming up. Let's look at a problem. Let's pretend an air conditioner made by a certain company is made of 20 distinct parts. And let's assume each part independently has a 0.004 probability of being defective. That's another way of saying four chances and a thousand of being defective. And you're going to assemble this 20 different parts and each part has a 0.004 probability of being defective. What is the probability that a randomly selected air conditioner will not work perfectly? What does not working perfectly mean? That's the trick to this question. Not working perfectly means, well, one defective part, it doesn't work well. How about if it has two? It also doesn't work well. Three? It also doesn't work well. How about if all 20 don't work? You're going to have a very bad air conditioner. All 20 parts are not working. So now we know P equals 0.004 and is 20. And I ask you what is the probability that it won't work well? So you're really looking at that it has anywhere from 1 to 20 defective parts. And I'm going to show you a trick how to solve this problem. Well, the best way to solve this problem is not to solve it for not working. Because what does not working mean? It could have one defective, it could have two, it could have three, it could have four, it could have five, and it certainly won't work well if all 20 parts are defective. Let's try to use a different approach. Let's first solve for the problem of what is the probability that it works perfectly and what does working perfectly mean if something consists of 20 parts? It means you have 20 parts, all 20 are good and zero defectives. So that would be the solution for a perfect air conditioner. 20 parts, zero defectives. So that's 20 combination zero, 0.004 to the zero power, that's the defective side, zero defectives. And 0.996, that's the probability each part works perfectly to the 20 power because you want all 20 parts to work perfectly. That works out to, remember the 20 combination zero is just one. 0.004 to the zero is one. All you got to do is 0.996 to the 20 power, you get 0.923 and that answers the question of the air conditioner working perfectly. All 20 parts are good, no defectives. Now you want to know what that wasn't the question. The question is that it doesn't work well. What does not working well mean? At least one defective. Two certainly not going to work well. So you just take one minus the 0.923 and that's 0.077 and that answers the question that the air conditioner does not work well. In other words, there's a 7.7% chance that a randomly selected air conditioner made by the company will not work perfectly. Now how do you improve quality? That's the reason we're doing these problems to let you think logically. Of course you can try to improve the defect rate and change it and work hard on that. But what many companies have discovered reduced the number of parts. Today you can make a computer out of like 15 parts. The fewer parts you have, the less likely something will not work well. So now you have a key idea regarding quality control. Try not to make things with fewer parts and of course you try to reduce the defect rate for each of those parts and then you'll have a better product. Once you have studied the material, find as many problems as you can. You'll find them in all different areas of the website and you'll find them in all different kinds of books and we even have it in the boot camp. Do lots and lots of problems.  It will become second nature to you.


There's another specific problem that we can do here. How much heat must be absorbed by 125 grams of ethanol to change its temperature from 21.5 degrees Celsius to 34.8 degrees Celsius? So I've written down all of the necessary information for you to do this problem. The only thing that you need to provide for yourself is the equation for specific heat. So does anybody recall that equation? Q equals mc delta t. Yeah, very good. Q equals mc delta t. So it's asking for heat, which, of course, is q. And so the other part of the equation you need to know is that delta t. What if delta t equal? Tf. Tf. And it's tf. And it's tf. Very good. And we have both ti and tf. So we can start there. So tf is 34.8 degrees C. And ti, 21.5 degrees C, 13.3 degrees C. OK, and now it's just a plug-in drug type problem. But I like to show when we're doing these problems to expand specifically the specific heat portion so you can show the canceling of your units. So in that case, we're going to say q equals m. We've got m at 125 grams. And c, this is what I was talking about. So 2.42 joules on the top and 1 gram degrees C on the bottom. And then finally, delta t, which we figured out earlier, 13.3 degrees C. And hopefully, you can see we cancel like that. And we get joules as our final unit. And joules, of course, is a good heat unit. So we're going to multiply what we have before 13.3 times 2.42. And multiply that number by 125. So the calculator gives us 4,023.25. But if you look, all of these numbers have three significant digits. So you can only go to three digits. So even though it says 4,000, we're going to have to put that into scientific notation. So 4.02 times 10 to the third joules. Is everybody OK with that? Another way you could do this is instead of leaving it in joules, you could convert it to kilojoules. So in order to do that, it would give you a better, more manageable number. So for every 1,000 joules, that's 1 kilojoule. So cancel, cancel. So what are we going to have? 4.02 kilojoules. Any questions on that one? OK, cool.


For more videos on people's struggles, please subscribe to our YouTube channel. Hello and welcome to People's Dispatch. Today is October 9th. In 1967, on this day, October 9th, Che Guevara was killed, perhaps assassinated, in Bolivia, where he had gone to build a revolution alongside his comrades, many of them Cuban, some of them Bolivian. In honor of Che, on this day, almost 20 publishing houses from around the world, from Bharati Putta Kalam in Tamil Nadu to Expresso Popular in Brazil, will release a text, a free downloadable PDF, which contains two essays by Che Guevara. First essay is Letter to the Tri-Continental, and the second essay is Man and Socialism in Cuba. These are two iconic essays by Che Guevara. The text, a free downloadable PDF in about 20 languages, has a preface by Maria del Carmen Arlet Garcia, who's a researcher at the Che Guevara Institute in Havana, Cuba. And the text has an introduction, a fresh, brilliant introduction, by Ajaz Ahmed, who is joining us today to talk about his introduction, and as well about the importance of Che Guevara. Ajaz, welcome to People's Dispatch. Thank you very much. Well, as I said, today is the anniversary of the murder, assassination, death of Che Guevara. Che is generally understood in a sort of legendary way, you know, outside the real Che. He is lifted up to legend.  Could you walk us through a little bit about the context of Che's life and the things that he did in that life? Che, he has been raised to the level of a legend, rightly so. But I think what happens with raising of him to the level of a legend is that that the figure is romanticized out of his actual existence. Romanticized and romanticized both as this brilliant guerrilla fighter and as martyr to the revolutionary cause, fearless and so on, which is I think somewhat reductive. Che, I think from the very beginning of his, from the time of his youth, had first of all an immense curiosity about the world that he lived in. For example, while he was still a medical student, he went on a tour of all of Latin America to actually know his continent. Secondly, he was, I think from the very beginning, a very voracious reader on the one hand, trained medical doctor. And at the same time, a great voracious reader of revolutionary literature and revolutionary history. And it's significantly, and you know, the amazing thing about Che is that he, his entire life, actual texture of his life is that of profound internationalism so that it's, he happens to be in Guatemala at the time when there is an American intervention, sponsored coup d'etat against the government of our bands. And as a young man there, that is the first time he immediately commits himself to fight with arms in the defense of that revolution. So something that he said much later or variations of which he kept saying on his life is that when you are talking about the revolution and revolutionaries, it is not enough to support, it has you have to join the struggle and either win or lose. Die or you go to death or victory as a part, as an element, a proletarian element in this great revolutionary wave of our time. And he always saw himself as that. At the same time, for him, the ultimate arena of revolution was actually the world. And it's dialectically thought out that imperialism, you no longer have national, you know, capitalism in this country, in that country, in that country. The very fact that that capitalism has entered what, as he put it, the last stages of capitalism is imperialism. And in this stage, precisely because it is a global order, the revolution is intrinsically and fundamentally international in character. And more than that, he believed that it cannot be fought country by country.  The battle will be one either on a grand global scale or maybe lost country by country. So there was a profound internationalism of a personal temperament and personal view of himself. But there was also this dialectical understanding of what the relationship is between imperialism and the revolutionary possibility. And at the same time, while he thought of a revolution as something that has to happen on a global scale, he had a deep profound understanding of the relationship between revolutionary nationalism and the communist project, the socialist project, the communist project. So that is not that like some fashionable people was again, internationalism was not opposed against nationalism or as something higher than nationalism. You make a revolution in where you are, and you try to make open fronts nation by nation, where ever you may be. So it is. So within this perspective, very early in his life, from Guatemala, he had to run after the coup and ended up in Mexico where he met with them. And he had extraordinary, extraordinary insight of having very long discussion with chair, but at the end of it, committing himself to a lifelong partnership with chair for making the revolution in Cuba. Again, as an internationalist, partly as a Latin American internationalist, partly as global internationalist, for him, revolutionary project was a revolutionary project if it was not happening in his country, Argentina. He would fully and completely commit himself to the Cuban revolution, which he did with an extraordinary dedication. And once he had done that, and once the revolution was successful, and he emerged as one of the key leaders, not only one of the key leaders during the war, but also key leaders of the revolution. In fact, he was something of a, he sometimes acted as something of a not ambassador, something more than ambassador, less than head of state, representing Cuba in any number of world forums. Fidel was, of course, always a great leader and questionably, but he had that kind of a position in his world out there. So committed himself entirely to the Cuban revolution and at the same time, said to Fidel, look, you're the head of the revolutionary government in Cuba and you don't have the freedom to attend to the making of a world revolution. I, on the other hand, can have that freedom. And it was joint project, but it was a division of labor in which he did in fact participate in African countries and towards the end, when he went to Bolivia, the idea was not only to make a revolution in Bolivia, but hopefully create bases there that could then help extend the revolutionary process into Argentina, I'd say. So there is this extraordinary kind of internationalism in him. The other thing that I think is very important about Jay, and this again, I think also applies to Fidel, but since we're talking about Jay, Jay had a certain idea of what the revolution does.  And in that he did never subscribe to this instrumental notion that you have to go through a period of massive socialist primitive accumulation and then in high levels of industrialization and high levels of production and so on. He was very skeptical of that idea of productivism as such. In fact, when I read Jay on that side of Jay, I always think of early Marx, for Jay, one of the absolute objectives of communism is to create human beings and other human beings and other human beings and then who then create a society of such human beings, who as he puts it quite clearly, who then overcome the kind of distortions of human personality that capitalism has introduced to our own psyche, our own nature and so on. And this is classical Marxism. Marx said that the capitalism not only destroys nature outside human beings, but it destroys human nature itself. Human beings no longer act in a natural manner. In fact, capitalism gives them an entirely different view, individualization, alienation from themselves, alienation from their production processing, alienation from society, abstraction of money, etc., etc. You live an alienated existence and overcoming that and for that Jay was quite clear you did not need a very high level of industrial production. In fact, the kind of advanced capitalism that we are dealing with is so destructive that any real communism will have to step back and create a society in which it is not, the aim is not to create more and more goods and more and more commodities, but what human beings need for happiness and for reconstructing human society that has been destroyed by capitalism. And that this is a process that is what revolutionary process itself makes possible for human beings to imagine what a revolutionary society would be like. You know, well, as a young person in Calcutta, the first Che book I came across was the episodes of a revolutionary war, which are, you know, his diary reflections on the war. And, you know, I read it, of course, with great interest and I couldn't really figure it out because the edition we had had no context. You know, it just was his reflections. We were under an air attack and there's a charming sequence which I'll never forget where he is tending to, you know, a civilian in the Sierra Maestra and she basically says, you know, doctors always they fool you and he tries to explain that not this kind of doctor. And that puzzled me. I remember this vividly, this idea that no, there's a different kind of doctor and there's a different kind of of a person in the world. And then later, I read Man and Socialism in Cuba, which we've included in this text, which really affected me greatly because it talked directly about, you know, the nature of what it is to be a human being. And I suppose what you're saying as well is there's not only an echo of all of Marx, but there's an echo of a text that I don't think he read, which was Marx's 1844 Paris manuscripts. But regardless of that, he seemed to touch something that that text, which you know, is part of a book is just so beautiful. I want to just briefly, if you could reflect on this thing you were just talking about, which is, you know, we don't have to be the kind of people we were. We can be a different kind of people. And, you know, it goes against every bourgeois assault on socialism, which says that, look, your ideas are beautiful. They're just not possible because we're not that kind of person. And Jay is just saying, listen, people, you don't have to be that kind of person because to be honest, you're not that kind of person.  Yeah, yeah, it is very interesting that you remember that particular passage from his diary of the Revolutionary War about the doctors.  You know, you have been involved in this. The medical missions that the Cubans have been sending out into the world, regardless of what kind of political system they have, it's not only that they went to Venezuela because it was a fraternal socialist country. They sent them to Pakistan after a great earthquake and things like that all over the world. Unilaterally, these socialist doctors go there on a human mission as ambassadors of human socialism and as this new kind of human being that Jay is talking about in this article, in which it's not a relation, it's not a relation that goes through the mechanisms of exchange. It is not a money relation. That fundamental thing, you know, he may have been already read the 1844 manuscripts, but you're quite right. That is what I thought of when I was reading the article recently. But Marx actually comes to it everywhere, including the manifesto again and again about throughout capital detox. So this is something very fundamental in Marxism. But since the second international, there has been this other kind of notion of communism that comes after the productive forces have reached their maximum capacity, etc. Whereas what we find is that in reality, that process is endless. Revolution does not come at the end of it. Revolution is an interruption of it. Revolution interrupts. It reverses. And it sets up on, sets up a logic of changing human beings, human relations.  And that, I think, is something that he, of course, says it most beautifully and as a fundamental tenet of communist belief. But I think there's something about the tricontinental revolutions. You know, there's a very strong tendency of that sort in Mao. Again and again, to be able to create a really anti-capitalist socialist society at a relatively low level of development of productive forces, because human being can do it. You see some of it, quite a bit of it, again and again in a place like Canada, where it is a state within the Republic of the bourgeoisie with very limited resources and so on. And yet there are extraordinary moments again and again and again, where this human solidarity for the sake of us all, no one in particular, this erupts and becomes a part of the way of life that the communist movement in Canada is trying to create.  If you can do it within the Republic of the bourgeoisie, this dreadful Republic of the bourgeoisie, with so little resources, then this is something that is conceivable as a form of planetary life, which can reverse all the horrors that capitalism has created, both in human nature and the nature outside. And for Jay to be sensitive to all of this and so eloquent about it was extraordinary, because in that time the second international notion of what socialism should be or can be was also quite dominant in the Soviet Union and some of what Jay is saying is partly a criticism of what has not been done in the existing socialist countries in terms of creating this new kind of human being, not to the extent that he wanted to, etc. Well, you know, when we later, we're going to put together more of Jay's text, the other text is his speech in Algiers, where he goes into this at great length and it's a brilliant speech. Finally, again, this is October 9th, when we're releasing this book, which will just be called Jay, with a gorgeous picture, you know, done by our designer things from Tri-Continental. It's a really remarkable cover. On this day, Jay Guevara was assassinated. And we are very much thinking of commemorating it as the International Day to Abolish the CIA. And so I just wanted a reflection from you on this moment of ours in the anti-imperialist struggle, you know, where we are to some extent on the back foot. And this idea of an International Day to Abolish the CIA. Oh, absolutely. International Day to Abolish the CIA. But we should also have an International Day to Abolish the Pentagon. Of course. Of course, you know, the amount of you have also written about it, the amount of damage CIA itself has done to the revolutions of Tri-Continental directly is at least as much as pentagonist. Because they have intervened against actual growing revolutionary movement to nip them in the burden. Absolutely. Absolutely. Okay, great. Well, you know, this is People's Dispatch, which is the media arm of movements around the world. We are commemorating on October 9, the assassination of Che Guevara in the midst of the International Week of Anti-Imperialist Actions, which is a project which you can find out about at antiimperialist.org. Please go and download in one of 20 languages, Canada, Gujarati, Spanish, Portuguese, Slovenian, Hindi, English. Download this text called Che. It's quite remarkable. And I know that if you read man and socialism in Cuba with the same open heart as I remember reading it as a teenager, it's going to have a big impact on you because it has an impact on everybody that allows this text to come into them without fighting it. Eja Zemba, thanks for joining us. Thank you very much.


Welcome back everyone to theCUBE's coverage here on location in Las Vegas for AWS re-invent 2023. I'm John Furrier, your host. This is theCUBE's 11th re-invent. We've been watching the transformation, the growth of the cloud, growth of Amazon. Every year it's the same, almost the same story. What's Amazon going to do? They're under pressure and every year at re-invent they drop down the narrative and they have the last word of the year and the industry in terms of conferences and they did a great job this year. Generative AI center stage, but the subtext of that is clusters, inference, standing up a lot of compute and infrastructure so application developers can have a feeding frenzy on the foundation models and more at open source. We've got our next guest here who's going to help us break down the Kubernetes side and the container side. Barry cooks with VP of Kubernetes and Container. Registries for AWS. Thanks for coming on theCUBE. Yeah, it's my pleasure. Thanks for having me on. So we love Kubernetes. Everyone knows theCUBE is at KubeCon. Kube is at KubeCon and CNC is at CloudNativeCon, which has been kind of the industry trade show for open source developers, which includes companies, end users, companies like AWS, end users like Lyft, Intuit, Airbnb, all donating great software to open source as well as the industry at large and developers. So that's become the CloudNative world. But interesting makeup. Amazon re-invent is your show. And so there's an intersection between the open source growth of AWS' team and the success it's been having in Kubernetes has become the lingua franca. It's become de facto standard. It's becoming more invisible, boring as they say, which is a good thing. It is. Give us the update on how Kubernetes is playing in the center stage of generative AI with all this talk about developers standing up, applications, new inference clusters, compute clusters. What's the Kubernetes story here at re-invent?  Gen AI obviously is getting all of the attention these days and ultimately you really need a lot of cycles, compute, you've got to run it. And we've seen explosive growth of that in Kubernetes for EKS in particular, the elastic Kubernetes service here at AWS. One of the things that's been great about that is to see the level of success we're seeing amongst a number of our key customers. So at the show this year, we've had presentations from Adobe who has their Firefly Gen AI. So text to image product backed with EKS and we were super happy to work with them on making sure that they could scale up to the level that they needed, get the resources online, scale back down to avoid excess cost. Same thing with Anthropic, they came out this week and pointed out that using some of our technology, including Carpenter, something that we just donated to the CNCF in the last few weeks, they were able to drop 40% in their cost month over month as soon as they enabled Carpenter on some of those really big Gen AI models. And so we're seeing a lot of success in that area. What was that project you donated to CNCF? Carpenter, so Carpenter is a sort of a note auto scaling project. It's something that when we started one of our mantras and you were talking about the CNCF ecosystem and the landscape and how it leads to a lot of coordination and cooperation across all these different boundaries, including hobbyists. And so we like to say how Kubernetes is bigger than just us. Yeah, totally. And so when we started the Carpenter project we chose to do it completely in the open. And so it has been in a slash AWS repo now for a while and as we've matured that and really feel like it's gotten to the point where it's high leverage, high value to folks and Anthropics is a great example of someone who's seen that value in the real world. We wanted to donate it to the CNCF, put it under neutral governance, which is what we just announced this week publicly and continue to see it evolve, continue to see it grow and become this standard for how people can really pack in those workloads on Kubernetes clusters. Talk about the scope out the order of magnitude of compute that's involved. You mentioned Firefly, Adobe, I've seen a lot of image stuff going on. I mean, if you just go back five, six months ago some of the capabilities that's being done in the cloud right now would say compute just image generation alone. It's pretty spectacular. Inference, we heard at KubeCon Tim Hawkins from Google said inference is the new web app on stage which was pretty kind of pointed because inference is going to be the iteration of how people engage with the applications. Okay, so all that's going on. Now as developers need to stand up more infrastructure the platform engineering role and now a new role is emerging called the data engineer. And we're hearing that loud and clear at this re-invent. It's kind of come out like, okay, platform engineering, we know what that is, shift left, DevSecOps, securing the pipeline, shift left. But data now has to be kind of, not rethought, but architected and engineered to maximize the value for the generative AI pipelines. So that's data pipeline, that's engineering. Airflow is an app that Airbnb did. They donated that to open source. So a lot of stuff's going on. What's going on with Kubernetes and your role at Open Source to help get that new infrastructure engineered? What are some of the areas you see that's going to be important for that persona infrastructure? I almost say middle layer, but infrastructure meets that abstraction with Kubernetes. That's a sweet spot, it's almost like a bullseye area. It is, and you said at the beginning, Kubernetes is not really, but almost becoming boring in the sense that it's matured. It's a nicer way of saying it. It's gone to a level of maturity where the amount of dependence on Kubernetes is now huge. So people look at this and say, that's the best way for me to get into the cloud. And what we like to talk about is like, it is the front door to the cloud now. The Kubernetes API is how people want to get into the cloud and run things. So this gap that you're describing is really between, you have these operations teams, you have these experts at infrastructure managing it and running it and orchestrating things onto it. And you've got this collection of different skills around data scientists and data engineers. And what sits in between those is typically going to be an IDP, an internal developer platform. And that is the abstraction layer between this underlying sets of infrastructure and the components associated with it. And something a little more understandable and grokable by folks who are not actually infrastructure experts. And that's the key layer that we're seeing a real explosion at. Adobe actually talked quite a bit about this in their talk this week. Well I think that's a great call out and I want to just double click on that because I think that's where I was getting that action area because what we see happening on theCUBE and our CUBE research team is doing some work in this area is that the power law of models coming out. So that's more the top end of the stack. And then now you have Kubernetes, okay it's getting boring for the right reasons. It's a good thing, Linux is boring, but it's everywhere, right? It's not boring technically, but it's nothing new this. It's great, it runs stuff. As Kubernetes evolves to maturity, as gets more mature, the conversation shifts from, oh this is how you stand up a cluster, here's how you do stuff, two more use cases. And generative AI is going to accelerate the use case conversation around what needs to be done or work backwards from that use case where now the Kubernetes maturity phase is, I've got clusters going up. They could be GPU clusters, they could be up on bare metal or in the cloud. So you have now this new thing going on where that next level is enabling the work use cases.  So you now have a composability simplification productivity drivers, not how to set stuff up and mechanisms, I know Amazon loves mechanisms, but the point is that's the next level where Kubernetes is going and it's got to be ready. How do you see that? It's a good point. So I think that there are fundamentals to this and I think one of our base premises is focus on fundamentals, focus on security first, focus on operations and operation capability second and everything else after that, it has to be reliable, it has to scale and it has to run well. That's been the focus for the last five years. Kubernetes in AWS, EKS turned five this year. So we were off celebrating with cakes yesterday. So in that time, there's been this maturity for those operational processes, those scale processes and this next tier is the simplification. How do you take it and make it more consumable by these sets of people who are coming in the door and saying, I can't even spell Kubernetes. But I need to run these workloads and I need them to scale out and I have a sense of what I'm trying to do but I don't have a sense of how I can do that on the infrastructure. That's the next place. That's going to be the big push. Yeah and then this workload is going to come fast so it's going to have to be fast. So the next question is, what's your reaction to the data conversation? Because I know Kubernetes is more of an infrastructure thing on cloud native, but the data piece is coming in quick. Inference is going to be in these clusters. So does that impact much what you're doing, the whole data tsunami or the data engineering? Does that impact your area? It does have some impact. I mean I think in general if you look back in time you would say that oftentimes Kubernetes was amazing for stateless. It was really great for stateless and you didn't see as much of the connection to data. And now as you look at ML training in particular but also inference you actually need really tight high bandwidth connections to data. And so that is a space where we've got a lot of focus now as well. And you see people looking with a strong interest in connectivity. We announced S3 mount points for Kubernetes this week. Give you a file system interface into S3 through EKS. So that gives you a really nice path into big high bandwidth data applications like some of the ML ones that we're seeing. I can see a lot of conversations that are here and there at KubeCon and re-invent. Well it depends on what level of stack you're on. If you're more to the app, you just love it. And you could hallucination, we'll deal with that through model integration, maybe some testing. But when you get down into the platform engineering there's almost zero tolerance for hallucinations. Yeah. Because we're talking about infrastructure here. So how is that being thought through? Or what do you think the market place is thinking about? What's the psychology of that persona right now? Relative to generative AI aspect. Automate what they know as a more automation concept sir. So I think what's interesting about things like Q and is that as we look, which was one of our launches this week as you know. And as you look at this, what you really want is to go from storytelling, which is what we've captured the world's attention with generative AI and large language models to actually training models to be very specific and very technically focused on correctness. So you go from teaching a model how to tell a story to teaching a model how to debug a system or how to configure a system. And that's a super interesting switchover that I think is where the meat for the enterprise is going to be, which is how do I simplify those kind of workflows to really be game changing for operations teams. Yeah, yeah, yeah. And architecting and optimizing the workloads in the IDE. That's came out huge on the keynote. Exactly. Much of the business side was like for the co-pilot answer. But I think, you know, in testing, you mentioned testing, that's a hot area. I was just taught, I saw Bill Vass, all he's gonna be coming on today in the registration check-in. He talked about the role of synthetic data and how hot that is right now. Is that being used at all in the infrastructure side? Is that not an issue for synthetic data? You see any of that going on? I haven't seen as much of that yet. I think it's early days still. And I think there's just a lot of experimentation. This is kind of the fun early days for these things because you, a little bit of Wild West and a lot of like, I'm going to go try this. And you see that level of experimentation. It's one of the things that we really like is the ability to do those experiments rapidly and iterate and then change and then come back with a new idea. Fair, I really appreciate your insights on the marketplace. Let's talk about what your role is at Amazon VP of Kubernetes and Container Registries. Share with the folks some of the things that you guys have done. A lot of people might not know the work you guys have done in open source. A ton of this happened. We've been reporting on it as well over the years. What's some of the big accomplishments you have? And what's going on now for you? I think there's a few things. So Kubernetes has gotten a little more boring but not that easy still. And we talked a little on some of those changes. One of the things is so many enterprises are using it that there's a mental shift in the enterprise. And if you know enterprises, there's this tension that Kubernetes creates with enterprises because enterprises typically want to upgrade more or less never unless they absolutely have to. And Kubernetes as an open source project and a highly innovative one with a lot of people involved moves very fast. And so these two things don't go together great. So one of the things that we just launched was extended version support for EKS. And our idea here was what we really want to do is allow folks to upgrade a little bit more on a cycle they define and not be dragged forward by the rate of change in Kubernetes. So you pick a version, you can stay on it an additional 12 months. It gives you 26 months of support. We will go take on the burden of CVE find and fix. So allow you to feel comfortable and safe on staying on a version longer. Work with your ISV partners to ensure you have the certifications you need and then roll yourself forward. And we're building tools to help that roll forward as well. So it feels like a little in the weeds but it's been really well received. It's a culture thing too. Enterprises also the enterprises tend to solve complexity more complexity. And that's not the way Kubernetes is going. It's being more of a hard top to enable the developers there. What about going forward? What's on your agenda now? What's on your roadmap? What are you working on? What are some of your goals? Yeah, I think it's a goal. We talked a little about simplification and I think that's really one of our goals. How can we work with our customers to understand what are the pieces you're putting together and how can we help offload some of those? What AWS has been really good at in this ecosystem has been to say, what are your problems and how can we operationalize pieces of that so that you don't have to do that lifting? That's exactly what EKS was when it started. It was like, we're going to go run that control plane for you and you can focus on the nodes and you can focus on the other pieces. So as we look forward, we continually work with customers to continue to grow our assistance if you will and make it easier for people to roll out these new workloads. It's interesting, you guys are both an end user and an enterprise contributor. Because that's the power of the CNCF right now is you got a developer community of just individuals and you got companies like Capital One and you got companies like AWS contributing. So they're contributors and consumers but the idea that an Airbnb or an Envoy with Lyfts can just donate all this IP is a good thing and I think we're seeing more of that now as open source matures like your projects. Is that a feature or a bug? I mean, I don't think it's a bug. I mean, I think this is where the open source goes because as the business models change you're seeing a lot more contributions in bulk, componentize. I absolutely think it's a feature. I think you do see some people who are confused by it still or trying to wrap their heads around like, hey, I'm giving this away. Is that really the right thing to do? And the reality is that the strength in something like Kubernetes is its community. It is the fact that you can take an idea and express it into the community and watch it grow even bigger. And in our view in say the EKS world is really simple. We want to make EKS the best place to run those workloads. And if we can do that with the community, then we're going to win that business and that's our goal. Barry, I'm old enough to remember in my house in college we used to pirate software and that was illegal. It was almost like dealing software. I tell the young kids, what, you bought? Wasn't free. And so open source has gone through such great iterations. But it's one, it is the software industry for proprietary software is moving into these hard top environments where it doesn't matter, it's for performance. You're seeing that with chips and other system component levels. But open source as a software is standard. I mean it's kind of, I think there's no real role for proprietary software outside of unique environments. Exactly. Yeah, I think what you've seen the drive in this world B is, and it's driven by the consumers of the software themselves. They want to have more flexibility in open standards, open APIs, gives customers the view that I am flexible. I have enough control that I can also modify it to suit my needs. A lot of enterprises like you mentioned some like Lyft who jump in and say, I'm going to solve this problem the right way for myself. And so by creating that set of contributors, you really have a much more robust way for everybody to be sharing in the key aspects of that. And then under the covers on there, there's going to be things that are very AWS specific that we'll continue to own, we'll continue to drive to give you the best experience on AWS. It's a great world we live in. I mean, I had a quote on my Facebook page a decade ago, beauty's in the eye of the beholder. And now you have a personalization with GNAI that the app layer, people can customize solutions, big theme here at reinvent customization, the idea of general purpose software. I mean, not a lot of, not a big marketing or maybe some small market, but specialism, specialty models, custom silicon, customization, fine tuning. This is all kind of like the next wave. This is it. Not one model to rule the world, not one architecture. Right. It's more flexibility. It's about flexibility. Flexibility, adaptability. Yeah. Barry, thanks for coming on theCUBE. Really appreciate it. And we'll see you at KubeCon. Great work you guys do. Love the open source mojo going on at AWS. And it is a standard and open and choice will always win on these big inflection points, making things simpler, reducing the steps it takes, making it easier. That's the simple formula for success in these big waves. And we're seeing it play out here on theCUBE. We'll be right back with more coverage. Back to Palo Alto.


If you already have the Servish Revolver and it's already in Zavala's loophole for you, this video is clearly not for you. If you didn't ever complete the Triumph back in Season 6, or never actually got the Servish Revolver back in Season 3 when it originally dropped, then this video is for you. How's it going guys? My name's DPJ and I'd like to thank you for stopping by and checking out my video. If you do enjoy it, leaving a like really helps out and subscribe for your new rounds here and enjoy daily Destiny videos. Let's use my voice by the way, I am full of a cold and it's telling me a new one. Okay, so the Servish Revolver was originally a weapon which made an appearance back in Season 3. But came back in Season 6 with Zavala and this required you to complete the Season 6 Completion's Triumph, which back in Season 6 required you to complete 40 strikes. In doing this, Zavala had one unauthor which you could purchase after doing these strikes. Doing 40 strikes back in Season 6 also added the Servish Revolver into the Vanguard loophole, meaning you could get it at the end of strikes, at the end of nightfall and from Zavala there is a grand package you level up. Now if you did neither of the unlocking it within Season 3 or doing 40 strikes in Season 6, it is believed you can't get this to drop. I was led to believe there was a bug within the system stopping it from dropping for those who didn't acquire it, but have the strikes done before it required strikes this season. I can confirm this to be true. I am one of the people who never got this weapon. I didn't get it in Season 3 and I didn't do the Triumph in Season 6. The Season 6 Completion Triumph isn't even within my Triumph's page. And I remember as when I come back last season towards the end, I blame Apex for that, and seeing the actual triumph. I was going to do it while I was told there's no point because next season you'll be able to get it either way. While months later and hundreds of strikes later, nothing has dropped. While that people was until the other day, the service revolver actually dropped for me and this happened at the end of my 134th strike, which is triple the original requirement of 40 strikes. Now after a little research, many people had the exact same issue of never getting this weapon. One person I saw had completed over 400 strikes and never got it. While after further research, it seems the bug was fixed with the Solstice Patch and the service revolver for those who did never have it can now get it to drop at the end of strikes, even nightfalls. I'm willing to bet you though that you will still have to do at least 40 strikes this season to see it drop. So that's what you've got to do people. If you already have done 40 strikes this season, farm, farm and farm more strikes until you get the service revolver to drop. When that happens, I'm pretty certain, so while it adds it to his packaged loot pool, which means you can use those Vanguard tokens and hopefully land yourself a perfect role. This is the hand cannon many people by the way believe he's better than the Lunas and are not forgotten. I would make my opinion on that one actually get a better role. But until then people, I'm going to farm more now, I know the bug has been resolved and it's now in my loot pool after getting it from the end of a strike. So yeah people, this is how you get the service revolver in season 7 if you've never had the weapon before. Do at least 40 strikes and then after that I believe he's added to the strike loot pool. Complete more strikes until you get one to drop, then it's added to his revolver as loot pool, meaning you can get it from the endgrams he offers for Vanguard tokens. But on that note guys, we have come to the end of the video. I apologize again about my voice. This cold is absolutely killing me. But on that note, we are out so I hope you enjoyed the video. If you did leave a like really helps. If you're new around here and enjoy daily Destiny videos, be sure to subscribe and if you never want to miss a video I upload a content notification on by hitting that bell. Also guys, thanks as always for stopping by, hopefully you enjoyed the video and hopefully I will see you on that next one.


Welcome to the newcomers and the first following people. So this is the first of our two talks about free BSD containers and virtualization. So this one is about bots, a container system, a way to manage containers and free BSD. So please, I think you can go. Yeah, about one minutes. Yeah, some small talks before. I mean, I would like to wait the right time, so if I'm coming up. Just presenting myself. My name is Luca Pizzamilio. I'll give you a switch. I'm previously introduced since eight, nine years, more or less. Post-committer, I'm coming to Freshman. So started in Morris last year. His job, I work at Trubago. And my main occupation is building custom repository for free BSD. So I use a lot of Paudrier. Thanks, who did it? This is a system that allows you to customize your package repository on free BSD. So that's who am I? What was my motivation that drove me to start this kind of project? Technically, I don't have a real good definition about what a container is. It's kind of virtual system, but it's not a virtual machine, but it's not something in between. For me, it's kind of a clean environment when you can run something that looks like a virtual machine, but it's not a virtual machine. It's kind of virtualization of the operating system level. Why I needed these kind of instances? As a port commuter, port maintainer, I really need sometimes a clean environment to test my ports. Oftentimes, when you build software, you have unexpected connections. AutoCorp is really bad. It takes the wrong library, wrong configuration. So if you have a clean environment, it's pretty easy. This is what Paudrier does. But to develop a new port, Paudrier is not really a nice platform. It's nice to build, to manage all of them, but not to develop stuff. Another personal need was to... So Stack is a kind of configuration management tool. I really needed to run on my laptop some network virtual environment to have client server configurations to run several stuff, to run web services. Nowadays, you don't have any application anymore we have web services to build stuff. And I really like to push in these directions also on my laptop. There are already some solutions available on FreeBSD, basically based heavily on jails, like EasyJail, IOCage. But I have the feeling that they didn't really provide what I needed. Moreover, it's open source means that if you want to reinvent the wheel, you can do it. So my motivation was also that. I had other, for instance, EasyJail doesn't support easily the DCGP configuration. If I run on my laptop normally, you don't have fixed IPs, but you have a DCGP on one network and you want to virtualize the network inside. I want it without any shame. Imitate Docker. I don't like Docker 100%, but there are a lot of use cases where Docker is really a killing feature, I mean, killing technology. And FreeBSD doesn't provide the similar user flatness that Docker has. So I tell you something. I saw other developers using Docker. Oh, this could be nice to have something similar. Automation that provides more user friendly common line interface. Also wanted to something that I built up for myself so I can experiment different solutions, taking wrong paths also, different concepts. And of course, was for me an opportunity to learn more about FreeBSD technologies. I didn't develop any new features to FreeBSD. I just use what already available was basically. JS, ZFS, PF, LCTL, CPU set, whatever, we spoke about later. What is POT? POT is basically just a tool that automated management of my container model.  So new needs for higher programming languages. Advanced features probably will need better stuff, so we'll see. What the name comes from. POT is used for cook and can contain something like pasta. I'm Italian, so obviously cooking pasta is the right analogy for that. The idea is when you cook pasta, you see the tomato sauce pasta and carbonara spaghetti. In both cases, even they're completely different, but you start with a pot, boiling water. So you put the salt, and then you put the pasta to cook. So there is a kind of reusable start of beginning from the recipe. So that was the idea. To have a different concept inside my containers to be able to reuse some stuff, basically reuse the pot. Also, it's three letters that is important when you have common line, don't write. TBSD contains a new technology. It could be a huge common line. This pot is short. Three letters is easy. What is, there's no new ideas. Just copy good ideas from there and there. OK, would be like to split a FibsD system in three logical components. You have FibsD base, the packages, and basically customization means everything else. It would be nice to have these three logical components separated into three logical, like this partition, ZFS data set, basically. Who knows exactly what ZFS data set is. So ZFS is the file system for FibsD. And you have to imagine, in this case, data set like a logical partition inside of a three structure. So you can create separate partition, disk partition in this case. And they put in one partition, the FibsD base stuff, in other partition, the packages, and in other partition, the customization. I found a way to combine them and recreate a proper FibsD tree. What is good in the FibsD that the tree is already well separated. All packages, for instance, are installed under USR local, so they are not mixed up with everything else. So that's helped me a lot. And then I have a bunch of symbolic link that make it possible. Box images. Basically, what you have when I create a pot, I need a base. As you see, the base 11 is the first thing that you have to do when you create a new system, let's say. And then you can create a pot A.  I call it 11-1 because, as you see by the name, using the base 11-1 is the same base. What that every box that you see is ZFS data set. When you create this 11-1, it takes this pot as a reference and it's used the same base. Basically it's mounted in a read-only, so it's not duplicated. It's exactly the same one. And it's using the same component and those are just for the pot A. In this case, I use again the same components and I customize with packages and customization about the configuration. The point is to be able to reuse completely one data set from one pot to another one. Maybe a little bit more clear with the command line workflow. Protein is just to initialize everything. Create base is able, it creates basically the base that you can reuse. You can specify version of FreeBSD, that means that you can have multiple versions. For pot's commuter, it's pretty useful because time to time something doesn't work on 10.3, but I have a current and you need some different versioning. So it's really useful to have multiple bases. You create base, basically download FreeBSD 11, create all data sets, and create the pot base, maybe this level zero reference. Then with pot's create PA, B11 means which base should I use and you create these new pots creating the package data set and the customization data set and the same for the pot B. Then there is a command start and stop. What start does, it mounts all data set in the proper manner to create a valid FreeBSD system and then it starts the container that is basically a jail. The stop does the stuff in reverse order, stop the jail and mount the first data set. The point to have this kind of read-only mount, this mechanism is to exploit, I mean the problem is you can, with new virtualization trend, imagine container, you have virtual images for everything. People, it's so easy to create new virtual images that nobody will really manage them because then you can create 50 hundreds of virtual machines and you say, we have to run a security upgrade, a security fix and you have to go in all machines, in all virtual machines and upgrade them. In this case, if I make some modification in the first one, I can see immediately, I can use it as reference, if I make modification there, I can see immediately the modification here because it's mounted via nullFS, that means it's really the same component. It's not duplicated, it's really the same. So a modification there is immediately applied to every container that is using the same data set. Questions so far? Yeah. To create the base, is it like, a bit like for the absolute, then you can build from source, the grab binaries? No, currently it's just binary download. Extract them, it's not yet so sophisticated. When I start to play with it, I say, okay, three fast system components, usable as building blocks are not enough for my vision of the future, let's say. So I would need more fast system components. I would really see a way to build an image as a building blocks. I would like to add code repository or a database or caches and reuse them in several occasions. So, I'm using Solmaster as an example, as a real example. Basically what I do, we have configurations, for instance, for our servers stored on Git. So I have my repository there on my laptop. I make some modifications and I use a specific container to run the server. I don't want to use my laptop as a server. So I can isolate in this isolated environment in an isolated network. I can use the same repository, but I use the container just to run the server instance. And I can use my laptop to develop new stuff and do whatever I want. So then all my credentials are on my laptop. I'm not in the container. The container is just the executor. It's like the server. So for do that, I create also a different concept called fast system component. So you can add other pieces, other ZFS dataset.  You just say which part, which fast system component and where has to be mounted. Podger was really an inspiration for that because it's basically what it does. But it's a B. No, P is the name, the part name. So they have here the fast system component called repository, P is the part. So here, I'm adding this fast system component to this part and this is the mount point. Normally I use P for the part name, F for fast system components, B for basis. Just I'm trying to be consistent in all common lines, but personality again. In this case, I have other type of spaghetti. What that means, it can not just use the same part of the recipe if I'm cooking with my pasta and my pot. Here, I can even cook two different dishes with the same physically pot. I can cook spaghetti there and then when it's cooked, I can serve one with carbonara and the other one with ragu in this case. So the reuse can be pushed even further. This is a real example that I'm using on my laptop. I forgot to mention what the level is. The level is the number of ZFS data set or fast system component that I'm mounting in read only. In this case, I'm not reusing only the base, so the previous debase, but also the package. Here, I have a level one reference container where I install everything that is related to Saltmaster and here I have two instances where they are using those definitions and they have just the customization inside them and an external repository outside. In this case, I have two instances of the same server with two different configuration and two different repository, but I have only one package data set and only one base data set. So it's to push the reusability even further. So it's allowed to do that. This is the workflow, it's similar to before. I create fast system components, I create the level one part and here it's slightly different. I just say, okay, use Saltbase as reference because it's a level two. That means you don't have to use only one data set in read only but even two. And then I add the different system components and this is a kind of real case that I have on my laptop. Question so far? Yeah. There is any limit with the levels? The question was about, there is a limit about levels. Yeah, there's only two levels. I was thinking about it, there are taking me some problems. If you want to reuse more stuff, it can be tricky. For instance, if you have a PHP package, a server can be engine mix or Apache, all our packages and you have only one of them. You cannot combine. Here I have Apache, here I have PHP. They are mixed in the tree. So for directly prospective, it could be really tricky to do that. Probably possible but I don't see really, it can be too complicated. Network side, currently POT supports automatically two network configurations. One is generic, typical use for built means that generic the network stack of your machine. So you don't have any configuration. You cannot expose any services outside it but you can have access to internet or whatever. Or you can create a virtual network inside your laptop. It's exploiting VNet. There is not yet officially activated in previously kernels. So that means that you have to rebuild your kernel. Inhead is already cleared. Nice. It's supported by PF using a net. Just look in the big picture. Basically this is the host. In the configuration file, you specify the big stuff about your network. The network addresses, the internal gateway. This is the gateway for your internal network. And this is currently my natural interface. Those are possible paths. Every container has an IP address. And the system automatically creates this pair of network calls. One, we belong to the container. One, stay outside in the host. You just attach the card to the bridge. And then if you have an internal communication, you use the bridge. If you want to go out via PF, it's going out. Currently it's support IPv4. Probably in the future I add IPv6. If you are using IPv6 only network, it doesn't work. I tested before. So it's not yet ready. I guess there is some trick to have to do with the net. It's just really trivial configuration. The good part is in just doing the creation, when you say, hey, use as internet address. One of these, it automatically creates the infrastructure that you have, that you need. There are several missing features in this area. For instance, it would be nice to have a container directly attached to your network card. So having a fixed address, which is what JS support. My system doesn't support yet, but it should be easy to do. I would like to add a small tool to help management of this network system because I cannot run a real VACCP inside. So something like that. And the third part I'm working on it is expose network services inside this virtual network. So basically, I've already done the work about DNS part. You can create an internal automated DNS part that work as an internal DNS for the system based on console. So your container can start, register the services to console, and then they are reachable via DNS.  In your host, you can make everything available, dynamic, microservice friendly, all this kind of stuff. But it's still ongoing. It's using tooling from other suppliers. It's taking very possible. There is no limits to do that. What is heavily based on ZFS? Everything there is on ZFS dataset. ZFS, if you don't know, you can do magic stuff like taking a snapshot of a dataset. So you can take a snapshot of a pot. So you have a container. Oh, this is nice. I can take a snapshot. So I can, and then I can reuse this snapshot in several way. For instance, I can make some test modification and then it doesn't work. You can roll back and reuse the snapshot that you take before. So those are pretty useful features that are for free. You can even clone a snapshot. And that can be used to clone a pot. You have a container. Oh, this is nice. I can clone it because I want to run some modification. I want to test something so you can clone a current container and make your experiments or whatever. You can rename it. This looks like trivial. But believe me, it's not trivial when you have a lot of three that has to be renamed inside, but it's doable. The work in progress is that promote is a kind of tricky concept.  You want to say, okay, the experimental one now is my production tree. It's not the other one. So you want to exchange the importance of them. So this is what promote does. In your use case, you have, I don't know, you have a production container that runs some web service. You make a clone. You test your stuff there. And then you won't change them. And in this case, you need officials like promote because otherwise the snapshot stay attached to the original one that you wanted the snapshot stay attached to the new one. Smaller is the first step, but the missing feature to have this kind of nice cloning availability. Then flavors. Physically, you have two kinds of flavors. The first is typical one, provisioning. EasyJLockage, provide them.  And there is also a possibility to have two flavors. I mean the default one that for all your container is the same one and then customization. And then I extended the concept of flavor also with a set of pot commands. For instance, I want to attach for system components automatically because I know that I can do it. So I can write a script that does this kind of feature possible to enforce priorities. For instance, I want to run a pot container with a client and I can attach automatically the server. So before start the server and then the client, this kind of prioritization. This is an example, quite rich. This imitating project is game. If I want to have a building system to build packages basically or to test stuff, I have created this flavor called build port. I have two files. One is the pot script, so to say. And the other is a real shell script. Here is adding basically all five system components that they need or that they want. And that will be the script that will be executed inside. Basically is adding the parse tree where the disk files, basically the source file where are downloaded. So if I have different parts that I don't have to download every time the same. Just one question about the script. Are you running it through the first boot mechanism or are you building your own? The question was about if I'm using the first boot or I'm using a mechanism of my own. I just start the container. I copy before the script there and I run it. No sophistication at all. It's really easy, easy there. And other question about, yeah, we spoke about runtime dependency. There is this add depth command that allows you to create a runtime dependency to different containers or pots, whatever you want to call them. This is client server architecture. So if you have a container as a server, container is a client. In the client, you can add a dependency to the server. In this case, you have a sold new client that's used for testing. And this is a server, this master. When I start the sold test, automatically I say, oh, so possibly it's already running. Yes, good, no, I have to start it and then I run it myself. So you can create a kind of error sheet inside it. We can speak about four hours about resource limitation. I add it because it looked like really cool. Believe me, it's not. It looks like a really nice topic but it doesn't work. I added CPU set is the command available for these debateries in old Unix to stick some processing, in this case container, to specific CPUs. With this command line, I say that the part named pot, fantasy, is running on CPU zero and two and only on those two CPUs, nothing else. In this case, I can limit the usage and the conflicts between different containers running on the same machine. There is a kind of, I would say, raised conditions, so to say. I cannot run the commands before the jail is created. I have a batch for that CPU set it is inside the jail command directly. So it's planned. Nice, it's nice. So just repeat, that will be solved with CPU, with Js, that will be support CPU set inside. I would like to have improvement. Currently, this minus C02 means that you are, in the configuration, you say that this container run on CPU zero and CPU two, it's not dynamic at all. I would like to just say, hey, use two cores, not which one. So just when you start the container, it's identified which is less used and allocates smartly way. Missing feature, it become. Then I start to play with RCTL. Who knows RCTL? It's still deactivated, you can confirm it. It's not yet activated as a framework, it's a limit resource. That was a limitation resource management framework inside previously. You have to activate it at good time. I currently use it a lot to show resources used by your container. You can see how much memory is your containers using, how much physical memory, physical memory. There is an estimation about, are you operations, and so on. Theoretically, you can use it also to limit those resources. For instance, you can say, hey, I don't want this, my container use more than one gigabyte of physical memory. Such a bad idea. First of all, normally you have to say, how much memory? And you don't have really clear idea how what can be a limit for a container. I don't know, could be reasonable to have one gigabyte, could be two gigabytes, you don't really know exactly. And then I make some experiment to understand what's happened when it's reaching this limit. I mean, I creating a denial of service, is crashing everything, is going after memory, what's the effect? Second, I have an instance of salt master. I say, okay, how much memory is using? An empty salt master is a Python server, 430 megabyte doing nothing. I say, okay, try to put some limitation. So I say, slightly 400 megabyte, still working. No complaints. I say, well, how is it possible that the system run with 30 megabyte less? Be aggressive, 200 megabyte, still working. But sometimes it was above. So the first question was, okay, if it's above, it's not so bad. It's not crashing. I mean, the features is safe. But limit, 50 megabyte, still working. 10 megabyte, still working. I was really, really confused. And I looked, what it does, it's basically force processes to free all physical memory that are not really necessary to use. Basically that all read-only pages, like text segments and so on. So in this case was a Python process. So all Python process, there were several Python processes. Every could take, I don't know, 50 megabyte. Then few of them was restricted to 40 kilobytes. Because as minimum working set, the working set is a nice operating system theory name. And actually it's exactly what it does. It's reduced the working set of your processes at minimum. It can have performance penalty because obviously working set, there is a reason to keep those pages in memory instead of loading every time all of them. I wouldn't suggest to use this kind of limitation because, I mean, just with it, it doesn't feel really correct. It's good to have somehow a way to avoid or to control what several containers are doing to avoid mixing.  But still, I'm questioning about how good this kind of limitation can be. The question was about if these constraints are affecting all other containers? No, it's per container. So you can say, okay, please, this container use just 10 megabyte. It's somehow good, but first of all, it's not respected because it's only that read-only pages can be drop-off. If you have to load an image or data that has to be modified, it has to be there. They stay there and they use memory. So it's not a strict constraint. So because otherwise you have your out-of-memory and the other process die and you're not happy as well because then you have denial of service. I mean, it's not really something that you want. It's controversial as a topic because when you reach the limit, what happened? Still struggling with what could be. I mean, it's usable, it's still there. I mean, I left these features there because it can be useful. You can prioritize, basically, also the usage of memory in your system, but my suggestion is leave the memory management to the operating system is doing the best job. You have to keep an eye, okay, if what's using more, but free memory is waste memory. So this is what a lot of people used to say. Really shortly, PCPU is percentage CPU. RCTL theoretically allowed to limit the percentage of CPU used by a container or process or something like that. I wasn't able to use it really. I don't know if it's a bug or not. I need time to identify it. I use stress in G as a stressor. Stress in CPU, user space, everything was fine. I say, okay, I use 60% of CPU. I was using 60% of CPU, nice. Then I say, okay, use fork stressors. Start to fork as a hell. And the CPU percentage users was around 25,000 percentage. I say, it can be possible, it's a fork or, cannot reach 250, I guess there is something wrong in the counter, but what I've seen is how it works. If you reach this limit, the processor are stopped, completely stopped, full stop, frozen. They'd not go for any further. So I saw this delay of seconds because I have to reach again this 60% of usage, it was 2000 and go back to, it's checked time to time, it's not a really strict.  And then you say, oh, I used too much resources, so you stop it. And then, okay, now you have more time to use it and then you stop it. So it's kind of strange behavior, pushing some delay that is not really easy to observe. I would prefer to use CPU set. You limit the number of cores that you are using, more than limiting the percentage of, it's easier and probably is stress less the scheduler. If someone knows better than me how RCTL work on PCPU, please help me in this case. Probably is a bug, I would say this number is. Talk to trash. Questions so far? Have you tried the, since previously 11, there is IOS throttling inside the IOS throttling, you can say the bandwidth or the number of IOPS you want to allow a container to use, which can be useful for something that goes crazy and try to write a lot. And you can say, okay, I will limit it one. Have you tried it? The question was about another way, IP, IO? IO, input output strong. Okay, there is a way to limit IO. No, I didn't do it yet. My idea was basically to add RQ to limit the usage of bandwidth between containers to prioritize the usage of the network card or something like that. But I'm still developing, discovering new stuff there and there. But please, you can submit patches, help me with that. I'm very short, the big picture.  I did it in the last three months in my spare time. So really green system. I'm the only user, so it's full of bug. But working with it, I have kind of big picture. What could be really nice? For instance, I'm trying to port an electron on FribisD that use a library based on Chromium. That means it has to build Chromium itself. If you haven't compiled Chromium on your own, you'll notice only the sources compressed are around 500 megabytes. It takes normally on a server with multi-core 10 hours, I would say. Something like that on your myletto could take two days. So I say, well, I start to work on it. I would like to take my container and move to a powerful server and do the work there. Currently, I cannot, but for people that doesn't know, ZFS snapshots can be transferred per network. So theoretically, I can send a part is a connection of ZFS dataset. So I can just send them to another server and then allow this container to run somewhere else. So it's not impossible to do it. So imitating Docker Hub or something like that.  You have a snapshot exporter, so you have to take snapshots for every container that you have. But the good part is locally, you just need, for instance, one instance of the base 11 because all of them, they are based on the same base 11, just one of them. The same for everything is using with all. And the good part of those snapshots is that you can send incremental snapshots. That means if you have already sent, if I have an update or an upgrade from, for instance, package PHP, oh, new version, I create the new snapshots and I send here only the differences between the previous dataset and the new one. And then all of them are immediately upgraded to the new version of the layer. That is division. I don't know if it really works in the production environment. I have no idea, so I would like to add more feature and to try it one day. And then nice name for orchestration, yeah.  I truly believe it doesn't work. But here is, it's just boxes. I really like to use LibreOffice and the mouse. So that's why I created this, but there is no real meaning on that. It's just, you know, we have a bunch of, I have four web services, I distribute them. The yellow one are just kind of sort of backup, but all the intelligence is in the load balancer. So it is my personal vision of orchestration. I can send my containers there and it's the load balancer that keep them ready to be used, running in parallel or whatever. But still, this is really far, way far to be implemented. Fast conclusion, the project is on GitHub, fork it, submit requests, issues, whatever. Please use it and give me a lot of feedback. Because as the only user I know that is broken, something that is really good to remember, containers cannot be better than the operating system that is under the hood. So making some Docker comparison and say, okay, Docker does this stuff in this way because Linux has these features. BBC is different. So you have that, ZFace dataset, you can do different stuff. I wouldn't say better words, I don't care. It's just different because I'm using the operating system has different peculiarity, different features and that's why it's different. But you cannot overcome this kind of stuff. If there is no process isolation, you cannot do it. Without Jase, I cannot do this kind of containerization or something like that. Here, thanks for coming. We'll enjoy it to do it. Question?  Are you aware of the new Poudrier image command? Nope. So it's basically the same idea as what you're doing except that, well, it's mixing the various components. Okay, I have a jail already, I have packages. If I can have some of my repository and stuff like that. If I mix all of that, I can make a USB stick an image or provisioning something for a container system that I don't have. And I think it would be a good idea to see how those can work together so that Poudrier can generate some kind of different snapshots than you can import using your product. And so you have some kind of provisioning tool that you will reuse. The question was about Poudrier image, a new command of Poudrier that can create an image with all the packages created to be ready to be used. Kind of USB stick that you can already install with your custom version of FreeBSD packages and so on. I wasn't aware of that. One idea was, for me, was create packages with Poudrier, run a part that install these new freshly experimental packages in a container or a multiple container, especially if you have web server to test or distributed system to test. This can be really useful to automate all this kind of stuff and create parts that just install new stuff, test them, look how it goes, also to create, to test upgrade procedures. I take a snapshot of a part, so there's always the current stuff of the previous stuff. So I run an upgrade, I see, okay, there's a conflict, why there's a conflict, and I can test also database, current situation, comparing them and so on. So that was my idea as component to attach to Poudrier, but it would be really nice to have this kind of output. Yeah? What about documentation? Ha, documentation, the question was about documentation. Your, it's me. There is a super nice read me on GitHub. It's 0%, I would say. I have to work especially to how to do this stuff. I mean, yeah. That's also why I need feedback because I know how to do it. I know under the hood, but please, ask me most of the recent examples or whatever. No. The question was if I had a way to import existing Jays to Poudrier, no, I don't have this, not yet. I said, it's fully customized on my needs because I'm the only user, so. But feel free, join the community, do it. I really enjoy to have more people working on it. I mean, to me it's a cool idea, but along I cannot do really, it's potentially a lot of work, a lot of use case that cannot really manage. You could probably just pre-existing Gail in his structure because if it's just set up as data set. I guess, so where he would pull in the base 11 once, I would pull in a pre-configured console server and then do the configuration as a layer on top of that instead of having previous D's and then console packages and then your issue. The question was, yeah, I mean, it's still something that I'm struggling. This stratification is really needed. That is still something that I'm questioning about. I mean, splitting base and packages is really needed or they can be condensated with only one and who cares about the customization is obviously different. It's per container, but the other can't be, because if what I'm doing, basically if you have a base that is clean, then you make a clone by cloning it. Only the difference are stored on the disk, so it's not a waste of space and still struggling. The idea was really to split them to send, to reduce as much as possible or something like that, but can create problem. Currently, I guess, easy Jail, for instance, create only one ZFLAZ dataset for the whole Jail. No, currently, I mean, it's possible to make something.  You have no time to make a short demo. I can assure you this. It's really take 30 seconds to create a pot. If the base is already there, it's really just run it, because ZFS clone is immediate, run the Jail, it takes two seconds. So creating a new pot is zero time. Technically, we can do it. It's, why not? I have here, ready the line. This is a complex one. I create a pot called test. It's readable for everyone, make it bigger. Pot called test, based on a base 11.1 with IP address of my internal network. I'm using the built pot flavor and I want to use the DNS as a pot instead of inheriting the DNS configuration from my host. And it was completely clean and this is what it take. It just launched the DNS, for instance. It creates the pot and it's running all, that's it. It's running all the flavor. So to run a flavor has to run the container, run the flavor inside, stop it. So that's why it take a little bit, but that's, I created a container and I don't know. Two seconds. Everything is already there. That's why it's so easy, certainly. You don't have to download every time, everything. But that's what more or less I did. Just to make, let's see. This is the container that I just created. It's called test. This is the IP, it's currently not active. Those are the data set and those are the names and where they are mounted. So that's why migration is a bit tricky because what pot does is forcing conventions to know exactly where data sets are, where to be mounted. So it's to make automations. Otherwise it can be hard to make this kind of automation with stuff. But basically that's it. Activated and now, I mean, if you see the network is inside, there is only a little smaller. Yeah, this is the network configuration inside. We have the this address.  And it was automatically created. It wasn't active before. It was, ah, the bridge is missing, creating it with the gateway address. And this adding, where is it? Member, I have the ePair network card added automatically. I mean, it's just pushing more automations. You don't have to meet all tricks to use it about network and so on. So that was my, I tried to make stuff easier. I would say that time is over. So.