Hello, good morning. I'm here today with Marique from Nier Protocol. Marique, would you like to introduce yourself to our viewers? Sure. Hi, so I'm Marique Flamon. I'm the CEO of the Nier Foundation, which, as you've mentioned, looks after the Nier Protocol. Fantastic. Great. So, I mean, we're here today in La Bourse, which is formerly the French stock exchange, and you yourself come from a TradFi background. Could you perhaps talk to us a little bit today about the trend that you're seeing in more and more traditional finance TradFi people coming over into the cryptocurrency sector? I think, you know, I think it's not just TradFi, actually. It's an entire Web2 movement that's actually coming to Web3. And to be told, we need so much talent, right? Because in crypto and blockchain, what you've seen so far is actually a lot of people who are very, very core developers, building products and so on and so forth. But actually for products to be successful, you need a whole array of people. You need lawyers, you need operations, you need go-to-market, you need marketing and so on and so forth. And you need, actually, especially if you want to work in DeFi or sectors like that, it's very helpful to have TradFi experience, right? So, I'm seeing a lot of talent come from, let's say, a more traditional world into Web3. That's very welcome and we need more. Fantastic. Yeah, I know. And so, Nia has had an incredibly busy 2021-2022. Would you be able to perhaps talk us through your priorities for this year and perhaps some accomplishments over the past, what, four or five months of 2022? Yeah, so our long-term goal is to think through how can we have billions of users actually being on the Nia protocol, whether they know it or they don't, right? Because ultimately, the Nia protocol is an underlying technology and as a user, you shouldn't have to worry what technology you're on. To do that, especially from a foundation perspective, we have three large objectives. Number one is how can we help raise awareness, not just of Nia, but also just of the space in general, Web3, OpenWeb, what does it mean, back to talent, right? How can we actually help attract more talents? Within raising awareness, we're also extremely focused on how can we help have real use cases that actually are going to enable that large on-ramp of people who come from Web2. So for example, yesterday we announced a partnership with Sweatcoin, which is an app, you walk, you actually get Sweatpoints and now they are choosing Nia to be their protocol for moving that to crypto.  The second mandate and our objective for this year is actually how can we support builders on Nia? And we have a very large grant program, so we can give small grants, larger grants, grants that are focused, for example, for DeFi or certain regions, so that's how we can help support builders. And the last part is actually governance and regulation, right? We are only in a space that moves very quickly. How, as a foundation, can we help spare head that for the ecosystem? Okay, you said something very interesting that allowing users to use Nia, whether they know it or they don't. What do you mean by that? Could you perhaps give us some examples of where that's happened to date?  You don't know that, right? And so I think what we observe most of the time is that, especially in the crypto space, we're still very much in the technicalities of it, right? Like it's this building block and that and so on. But it's not that user-friendly or the UX is not fully seamless. And what we believe in is actually the technology needs to solve real end user problems. And so how can we build some of those cases where ultimately it's just great tech that is enabling you to do something that otherwise you couldn't do. Sure. I mean, as you mentioned, that example of an email, how far out are we from when we will suddenly realize, okay, I'm using crypto without using it. I'm using Nia without using it. I think we're actually getting closer and closer, right? For example, examples such as Sweatcoin are really interesting because the app today perfectly works in a Web2 world without any crypto in it at all, right? So the idea is like, okay, now if you power that with crypto, it shouldn't change fundamentally what's happening, but actually it's doing things that can be more seamless and can empower more use cases. Similarly, we're starting to see and look at DAOs. I think DAOs are fascinating, but the ultimate holy grail of DAOs is that you can participate and be in an ecosystem and take decisions without having to worry too much about the intricacies of the technology that you're leveraging. Okay, got it, got it. So Nia is split between California and Switzerland, as in, you know, at first it was born, correct me if I'm wrong, by the way. And we're seeing more and more cryptocurrency projects and Web3 developments take place in Switzerland, but obviously with this entry point into the EU. However, the EU has recently made it quite difficult with the new KYC regulations. How would you describe or how would you evaluate the current operating environment within Europe at the moment? Yeah, so a couple of things there. So we're extremely decentralized actually as a team. So yes, you're right. The protocol and the founding team started from San Francisco. Today we are actually from all over the US, from all over Europe. We have quite a large operation in Portugal because a lot of the teams were actually based in Ukraine, have now relocated. We have teams also in Asia. We basically were extremely decentralized as most people are in the space. I think the point you mentioned, it's really interesting to actually look at the regulatory landscape and the movements that are happening there. Because, you know, a couple of months ago, I'm not sure we would have been so positive about the take that was taken by the US towards the landscape of crypto. And actually it's starting to be more positive and you look at Europe. And I think every week we are seeing new things that are coming out almost of nowhere and that actually could be threatening for the entire ecosystem. And I think that's something to watch out for because the talent in this industry is extremely fluid. So the talent will go where things are enabled and where things are possible. And I think also from a European perspective and we're trying to help also spare head that but we need to be more coordinated in having a voice for the industry and ultimately coming together with regulators because the intention of regulation are absolutely the right one, protects consumers and product businesses and the intention of the space are the same one. So there is a middle ground, there is a two-sided education that can happen there. Very good. You mentioned regulation there. What would you say are the hurdles or things that you have to navigate on a daily basis within the industry? Well, I think within the industry if you look at where you employ people, employment law, it can be also sometimes, it varies a lot across for example, across Europe, across different places. I think that's definitely one. I think regulation, I think adoption from a market perspective it's really interesting to think that all of us are trying to bring models that are very global and yet it's very local. Like you come here to Paris, you can meet the Paris community. It's actually quite tight, needs very strong community but you go to another place in a different community. So I'm actually fascinated by that, I don't need to have very local footprints to actually be a very global player. Yeah, absolutely. I mean, looking forward to your vision for the sector, what are you most excited about? What is it that really inspires you in the space? I'm personally extremely inspired by DAO. I've been watching the trend over the last few years and even before when I was in Tratfy the ways of working are fundamentally changing. The creative economy, the passion economy, the way we live our lives is just completely shifting and the 9 to 5 being in one location, that's just something that's not here to stay. If you look even like how we're motivated to do things today, how the next generation want to work where they want to work from and so on and so forth. So DAO I think are so powerful to reinvent how we participate into projects that matter to us and I think we're just at the beginning of that but that's definitely the area I'm looking at and very excited about. Any interesting examples or use cases for DAOs that you'd like to share today? Yeah, definitely. Thanks for asking. So we've recently announced that we are working with Cell GP which is a sailing competition that's been spearheaded by Larry Ellison and we are basically the league is enabling a DAO to buy a team which is the first in sports history like having a professional team that's going to be enabled to be acted by a DAO. So I think that's really interesting. Another example because it's also quite close to our heart is we've launched Unshamed Fund which is a DAO for raising funds for Ukraine which has been extremely successful I mean it's been beautiful to see the amount of capital that flew in that super fast and that was therefore enabled to be unlocked very fast for local help. Yeah absolutely and speaking of capital we're here in a form of institutional investment style building would you say that institutional investment or interest at least is here and is it here to stay? Oh 100% it's here. We are seeing a very strong appetite from institutional investors to understand the space to understand where they can participate and here again regulation is going to play a very big role right because a lot of companies within the space can be actually token based and I think being able to actually understand something that's token based is not given in every market so for example if you take the example because we're here in France it's actually quite difficult for funds to be able to accept that. Other markets make that more easy. So I think institutional funds are trying to find what are the models where they can see something they recognize which might be more equity based and how they can actually start participating. Institutional so we're seeing a lot of web 2 companies wanting to get into a great example of that but like many many others are thinking through oh my god what does this mean I have a hotel business what does this mean for me right? So all those questions are starting to arise. Fantastic I feel like I could ask you any question related to the industry you definitely know your stuff is there anything else you'd like to share today or anything that's particularly top of mind while you're in Paris? No but I think thanks for having me I think it's great. I think it's maybe the last point would be that the local footprint that we can see here is actually and I may be closing with what you said we are in a very traditional building but you can sense that innovation is actually pushing the boundaries of what the traditional building will be going forward. For sure it does feel like we're at this sort of inflection point. Definitely. Thank you so much Marie. Thank you so much everyone and we look forward to speaking with you again soon.


Let's explore hormones in animals. Remember, hormones are messenger molecules which are used for control and coordination. But why do we need hormones? Because you also have nervous system. Nervous system also can be useful in controlling and coordination, right? Well, to understand that, let's look at the difference between hormones and the nervous system, the hormonal system and the nervous system. Well, the first major difference is that this is a chemical system, meaning you need to use molecules to control and coordinate. Nervous system uses electrical impulses, okay? The second main difference, and this is the big difference, is that the medium over here is blood. So hormones are sent into the blood, and then the blood goes to all the parts of the body. Versus nervous system uses specialized cells called nerves, so it uses that. And now we can understand why you need hormones. See, hormones can reach all the cells because the blood reaches all the cells. So you can control all the cells using this system. But nervous system has very limited reach. Nerves don't reach all the cells. That's why hormone system is also super important. But then I wondered, well, if that is the case, why do we need nervous system? Hormonal system would be enough to control and coordinate, right? Well, no, because hormone system is very slow because it takes a lot of time for it to go into the blood and then get circulated and then finally reaches the cell. Versus nervous system is super fast. So you see, both systems have their advantages and disadvantages. So we need both the systems. Okay, now that we understand what hormone systems are and how useful hormones are, let's look at some of the important hormones and hormone secreting glands in our body. Now the hormone secreting glands in our body are called endocrine glands. Well, glands means organs that secrete things and endocrine because it is duct less, meaning there are no pipe systems over here. For example, if you look at salivary gland, then you can see there is a pipe over here. But these endocrine glands, they do not have any pipe. They don't need a pipe because their job is to secrete it into the blood. Okay, so that's the whole idea behind this. So let's look at the various endocrine glands and look at their major hormones and the functions. We start with the testes. The major hormone, the secret is testosterone. And what's their main job? Well, in creation of sex cells and secondary development in males. Similarly, in females, ovaries give out estrogen or progesterone. These are useful again for developing sex cells and secondary development in females. Then we have the pancreas. One of the main hormone it secretes is insulin. You probably heard about it. Insulin's main job is to absorb blood sugar whenever the sugar level increases in the blood. Because if the blood sugar level increases in the blood vessels, then it can damage the blood vessels. And people who have diabetes, well, their problem is that they don't have like insulin secretion is a problem. So that's the whole idea behind diabetes. Okay, then you have these two hat shaped glands over here above the kidneys. We call them the adrenal glands. One of the main hormone that they secrete is adrenaline. What does adrenaline do? You know, it is called the fight or flight hormone, one of the most important hormones. What happens is when you are in a situation when you are in danger, this hormone will increase your heart rate, will increase the blood supply to your skeletal muscles and it'll either prepare you to fight or flight, go away from the danger, run away from the danger. Okay, then we come focus to come to our neck. Here you have an important gland called the thyroid gland. One of the important hormones it secretes is called the thyroxin. The thyroxin's main job is to regulate the metabolism of fat, carbon, carbs and proteins. Now, when the thyroxin glands are not working properly, they either they will you will have increased metabolism, in which case, you know, people tend to become very thin, or you can have decreased metabolism, in which case, the people tend to get obese. And this is also the reason why we intake iodized salt, because iodine is super important for the creation of thyroxin. That's why we take iodized salt. Finally, the last important gland for us is the pituitary gland, which is situated in the brain. What does it do? Well, it releases a lot of growth hormones. It's responsible for our growth. It's also responsible for our height. Sometimes some people are dwarf because the growth hormones are not secreted enough. And sometimes people are very, very tall because their growth hormones are secreted a lot. But another thing about pituitary is that it's also called the master gland. And the reason for that is because it controls all the other glands. For example, if you want thyroid to release a sacred thyroxin, the pituitary will actually release a hormone that stimulates the thyroid, which releases the thyroxin. So it's the pituitary that actually controls all the other glands, which is why it's called the master gland.


It's the mat work. Stat flow says, how should an artist with no established fan base get unbiased feedback on their music? All right, so there's a lot of different ways to answer this question. Like one go out in the streets, right? You just ask people, what do you think about this music? Or you can have your friend show your other friends the music, not have your friend show your other friends. Say, hey, go show some other people this music. Don't tell them who it is, right? Or they might not even know who you are. And then let them report back to you with feedback.  If you need to pay them, you probably shouldn't have to. But if you need to pay them to do that, then do it. But also, here's something that everybody can do. This is a challenge. I want somebody to do this and report back to me. Trust me, I will feature you if you do this. I'm looking for people to actually do this, which I call the $5 Ad Feedback Challenge. And it doesn't have to stay at $5, but this is where we start, right? Create an ad on Facebook. You have your music put in the ad. You can have a meme caption that says looking for feedback in your meme caption. And it's playing the song in the actual ad. Maybe you have a little video clip or something interesting. And then just be straightforward and honest in your caption. Say, hey, I'm looking for feedback. Would love if you give me feedback on a 30-second or 60-second clip of if you like this music or not. Please be honest. This is a part of my development, right? You don't have to use those exact words, but be straightforward, right? And then run an ad for $5 to see how people react. Now, the thing is, you probably still want to do some testing to just see which ones are getting the most engagement, right? And this is something that you might add. You might add an engagement ad in this scenario, right? I'm not going to write the whole word out, right? You might add an engagement ad for this particular type of scenario, right? Engagement ad and a traffic ad would be the two that I would test. No, an engagement ad and a video view ad would be the two that I test and see how those are responding. Because you do need to still test which one is getting me the most feedback, the best feedback within a certain amount of views and for a certain amount of money. Test both of those things. And no, yes, no, what? Yeah, I'm serious. Run this challenge. Anybody who does this challenge, DM me, right? DM me that you did the challenge. I'll give it at least three weeks after whenever this video posts. I'm hoping that somebody does it and will I'll start collecting getting feedback of what happened with people. Let some more people know what exactly happened and maybe even talk to some of y'all about the feedback and have y'all on on the show. However we run it, but try this challenge. Post a song. I encourage that probably having a meme caption, right? That means the video, but then the the caption at the top of the video within the content that says, looking for feedback or need your feedback, listen to this, something like that. That's letting them know, hey, check this out, right? But then in the caption, right? Straightforward say, hey, I'm trying to figure out if my song is good or not. I'm a aspiring artist or something like that. Please be honest. Some type of language in that vein, some people will have probably better copy than others. But I guarantee y'all will get honest feedback because you don't know these people that you're running an ad with. I always say an ad is the easiest way to get unbiased feedback. Are they clicking or not? Right? You know what's happening with it, but there's nothing better than also just straight up asking for the feedback. Right? So then you might find out why people didn't click. Right? And let's let's start there. It's the network.


Well, last night's elections did not go too well for Republicans, and as I record this video, they are currently coping and seething, and as you watch this video, they are likely still coping and seething, because this probably isn't going to be a wake-up call to them, because I think they're incapable of introspection and growth, but it is very, very disappointing if you're a Republican, in particular, if you want women's reproductive rights to be controlled. So we're going to talk about some of the results and we'll get to the coping and seething, but first, let's talk about Kentucky, because as you saw, Kentucky's Democratic Governor Andy Beshear defeated his Republican opponent and won re-election. Now, this is significant for a number of reasons, first and foremost, this is a deep red state that Trump won by 25.9 points in 2020, yet a Democrat just won re-election. Now, second of all, this is important because the GOP tried to drive down his popularity by using trans rights as a wedge issue, but it failed, which gives us some insight into how this issue fares at the ballot box and, thankfully, not great. So let me give you some additional context. Back in March, the state GOP passed a bill that banned gender affirming care for trans youth. It also regulated bathroom usage of trans people and mandated classroom censorship akin to Florida's Don't Say Gay Law, and this was likely intended to be a sort of political trap for Beshear, because if he was too afraid to veto massive legislation during an election year, well, his base could feel disillusioned and he could lose, but if he did veto it, he was basically teeing up an attack against him by Republicans who would inevitably portray him as a woke groomer or something, but he did the right thing. He vetoed this bigoted legislation, and on top of that, he defended trans youth. AP reports Governor Andy Beshear said in a written veto message that the bill allows too much government interference in personal health care issues and rips away the freedom of parents to make medical decisions for their children. In his one-page message, he warned that the bill's repercussions would include an increase in youth suicides. The governor said, my faith teaches me that all children are children of God, and Senate Bill 150 will endanger the children of Kentucky. Now predictably, Republicans quickly pounced on the governor's veto to try to portray him as out of touch with most Kentuckians on the issue. Andy Beshear thinks it's okay for children to have access to life-altering sex-change surgery and drugs before they turn 18, state Republican Party spokesperson Sean Souther said in a statement. Today, he revealed how radical he truly is. Now, as journalist Aaron Reed points out, Republicans went on to spend $2 million in ads trying to portray Beshear as an extremist on LGBTQ plus issues, and they ran ads featuring Riley Gaines to warn voters that trans people are somehow destroying women's sports. But despite all of that, he won, and they lost. And this indicates that demonizing trans people isn't as politically advantageous as Republicans hoped it would be. Beshear even flipped Letcher County, which Trump won by nearly 60 points. And Beshear's success has left a lot of people confused. For example, Gateway Pundit, a right-wing outlet, asks, someone please explain how Kentucky Republicans can vote in the GOP AG and Secretary of State by 17% and 22% and then vote for the Democrat for governor. How does that work? Now, if you look at the responses, they essentially all think that it's rigged because Democrats apparently forgot to rig the down ballot races when they were rigging the gubernatorial race. But in reality, it's a pretty simple formula. But I'll let Beshear explain what he did to win. Our blueprint was as simple as show up, work hard, get results, and care about everybody. And don't get distracted by whatever the issue of the day is in Washington, DC. Now, when people wake up in the morning, they don't think about President Biden or President Trump. They think about, do they have a good enough job? Can they afford to take their kids or their parents to a doctor when they're sick? Do they feel safe in their community? Are their kids getting the best education? Is the road they drive on to work safe? Does it need repairs? Those are the things that impact everybody's daily lives. And I hope that not just Democrats, but Republicans and independents go there. You know, enough of trying to demonize groups of people, of driving a wedge between people of the attacks and the anger. How about we all talk about how to improve people's lives, and then the electorate can decide who has the better plan or the better ideas or who they trust more to move them forward? And that's it. It's not rocket science, but other Democrats just can't seem to figure out how to win, especially in these red states. And oftentimes they lose when they shift further to the right to appeal to moderates because they end up isolating their core base, but just deliver and they will reward you by voting for you.  It's that simple, really. Now, on top of that, he also just ran a good campaign and he found ways to cut through the GOP's propaganda and appeal directly to voters. And this viral ad that he used in this campaign to speak to voters on the issue of abortion is one of the examples cited as to why his messaging was just so effective.  I was 12. Anyone who believes there should be no exceptions for rape and incest could never understand what it's like to stand in my shoes. This is to you, Daniel Cameron. To tell a 12-year-old girl she must have the baby of her stepfather who raped her is unthinkable. I'm speaking out because women and girls need to have options. Daniel Cameron would give us none. Now, it is really hard to hear her story. It's gut wrenching and nauseating, but people need to hear her story. They need to see the reality of post-war America and how anti-abortion Republicans want to further victimize victims. So that ad is one of the moments from his campaign where he demonstrated to voters that he gets it. He understands these issues and he's willing to de-center himself and center the voices of people affected by these policies. Now, on the subject of abortion, well, the good news doesn't stop there because Ohio became the 24th state to legalize recreational marijuana and, most importantly, devoted to codify abortion rights into their state's constitution. And this was a hard-fought victory because Republicans did everything in their power to prevent this from happening, but it still failed. So, if you're unfamiliar with issue one, here's some additional context from our coverage of it in August. Now, what they wanted to do was make it more difficult for citizens to amend their state's constitution by raising the vote threshold to 60% as opposed to a simple 50 plus 1% majority. Now, this ballot initiative would have cemented that and they cynically chose to hold this special election in August, even though literally earlier this year they effectively banned August special election citing the cost and low turnout as part of their reasoning. But they chose to violate their own law to capitalize on low turnout in a brazen effort to push through an undemocratic amendment that would increase the odds that they would defeat this upcoming pro-choice ballot initiative. So, their desperation here is palpable, but they're not wrong to think that they'd lose if they didn't rat-fuck this election. Because as NBC News reports, abortion rights have won in literally every single election since Roe v. Wade was overturned. Just over a year ago, Kansas voters rejected an amendment that it would have eliminated the right to an abortion and on November 8th, abortion rights won in all five states where it was on the ballot, notably including red states like Kentucky and Montana, and a purple state like Michigan. And Ohio is now the seventh state to reject attempts to restrict reproductive rights thus far. And this doesn't even take into account the Wisconsin Supreme Court election held in April, which was largely about reproductive rights as well, where the pro-choice judge won over the far-right anti-choice judge. So, two things are clear. One, after seeing that video, I need a haircut. But two, Republicans were scared shitless. They also purged voters from the rolls, which I didn't mention there, but voters saw through their bullshit. Now, fast forward to today, and they've now protected reproductive rights in the state's constitution. And it's evident that the GOP's propaganda failed and their opposition to abortion rights hurt them, even with independents and some pro-life Republicans. And that's not hyperbole. The New York Times reports, Wendy Pace, a 52-year-old independent, said she didn't normally vote in off-year elections, but came out because she wanted to vote yes on issue one. I have a teenage daughter and I don't like having my rights taken away from me, she said. I fear that this is just the beginning of rights being taken away, and I do fear for my daughter and what her rights would be going forward. Another person says, I am a Christian, but I am thinking long term. It's between a person and their maker, said Caroline Lloyd, 54. While she typically votes Republican, she said I would hate to see women suffer because of maybe a weak moment or malfunction with birth control and have to bear that burden. Another person says, I think mother's lives are important. I think baby's lives are important, but if a little girl is raped at 10 years old, I don't think she should have to carry the baby if she is pregnant, said Delana Reid, 65, a registered Republican who considers herself pro-life for religious reasons. Now, these anecdotal examples demonstrate how toxic the Republican Party's opposition to abortion has become to the point where some of their own voters are turning against them, and people who don't typically vote are galvanized by this issue. I mean, we heard it from that one lady who said, I don't usually vote in these, you know, off your elections, but I'm coming out to vote specifically because of abortion. Now, what's interesting to me is that even after multiple defeats on this issue, Republicans are still shocked by this. In fact, this tweet by David Brodie demonstrates this perfectly where he says, here's an absolutely disgusting exit poll statistic from last night. 24% of so-called white, born-again or evangelical Christians voted for Ohio's pro-abortion constitutional amendment. It's not just the left, just horrible. It's so good.  I love it so much. Now, other Republicans are predictably seething as well, and in response to exit polls in Ohio showing broad support for abortion rights, theocratic fascist commentator, Matt Walsh, responded by saying, you will hear from many on the right that this result means we should give up and simply accept the mass slaughter of infant children. I will never accept it.  Nothing matters after that. Look, I for one am very glad that he is continuing to pretend like abortion rights equals baby-killing because that deceitful strategy of lying has been a demonstrable failure for Republicans. But by all means, please double down on that losing strategy, Matt. Please continue to persuade Republicans to run against abortion rights because it's going really well for you all. Oh, love it. Love it so much. Now, there's also more elections that I want to react to. Big elections, small elections, but here's what stood out to me. So in Virginia, Republican Governor Glenn Yonkin tried to hold control of the state house while flipping the Senate to Republicans. Now, he ran on his political accomplishments and assumed that his popularity would carry Republicans to victory. He also tried to create a new blueprint for Republicans struggling to sell abortion bans to voters. And he told voters that if Republicans took control of the state that they could look forward to a more moderate ban on abortion.  And on top of that, they elected the state's first transgender state senator, Donica Rome. So it turns out that Glenn Yonkin overestimated his popularity and Republicans overestimated the popularity of transphobia. You love to see it. Now in New Jersey, the entire state is now controlled by Democrats after they flipped the House of Delegates from Republicans to Democrat. And in Pennsylvania, Democrat Daniel McCaffrey defeated Republican Caroline Carluzio in their state Supreme Court race. Now in Mississippi, Republican Tate Reeves, aka Mitch McConnell's younger doppelganger, did end up defeating his Democratic opponent and win reelection. But it was still surprisingly close. He won by 4.6 points after Trump beat Biden here by 16.5 points. And that's big because we're talking about Mississippi. I mean, this is a deep red state. But as you see, a Democrat got really close to beating an incumbent Republican. That is a sign for Republicans that things might be going bad for them in the future, even in red states. Now, those were the biggest races, but there's still some significant local races that I do want to touch on. So late Supreme Court justice Antonin Scalia's daughter lost the school board race that she was running in. And I'm glad that that happened.  Now a Republican running for city council in Texas was arrested for possessing CP literally hours before the election. And he ended up losing. In fact, he came in third place, which is reassuring because there was some concern that they would still vote for him regardless. But he came in third. So that's good. Now this one is crazy to me. So Democrat Joseph D Martino won the Derby mayor race in Connecticut after Republican Digiovanni Jr. beat the incumbent mayor, Rich Dezikin, in the GOP primary by 10 votes. Now Republicans presumably ousted Dezikin because he was too moderate, whereas Digiovanni is a MAGA chud and he is literally facing charges over his participation in the January 6 insurrection. So, you know, he was he was the MAGA guy and they wanted a MAGA guy. So they voted in him by 10 votes.   Now, one more thing that I want to draw your attention to is Aaron Reid's write-up about how moms for liberty fascists suffered major defeats in school board races across the country. And I'm not going to share the article with you, but I'll just link to that down below and encourage you to read it because it is very encouraging. Now let's get to the part that you've all been waiting for, the right-wing coat. So as you saw, Matt Walsh was very sad about voter stance on abortion. But to push back against this notion that he is wrong and it's a losing issue, let's look at what he's saying. Quote, five years ago, lots of people on the right assured me that the trans issue was a political loser. We proved them wrong, really? Now nearly all of those same people are assuring me that the abortion issue was a political loser. I'm sensing a pattern.  Most Republicans who took your advice and ran almost exclusively on transphobia got rocked. But don't you worry, I'm sure you're going to prove everyone right about abortion, just like you were proven right about the popularity of trans rights. This is maximum cope, but it's just so funny to me that he refuses to admit that he's wrong. This is cognitive dissonance and action and it's hilarious to watch. But I do want to move on from Walsh because Rick Santorum, someone who I haven't heard about, someone who I forgot existed, is also grappling with Republicans' poor performance and he's going to make a really interesting admission here. And you put very sexy things like abortion and marijuana on the ballot and a lot of young people come out and vote. It was a secret sauce for disaster in Ohio. I don't know what they were thinking, but that's why I thank goodness that most of the states in this country don't allow you to put everything on the ballot because pure democracies are not the way to run a country. Incredible.  We can't let people vote on individual issues because most of the time they're going to vote against Republicans, so it's best to not let the peasants decide for themselves. I mean, in this moment Republicans are collectively coming to the realization that most Americans just don't agree with them. They don't. Even Sean Hannity admitted this on Fox News and the sadness that he was feeling while he made this admission was almost palpable. I'm not going to be honest about this and I consider myself pro-life, but I understand that's not where the country is. I would say first trimester or Dobbs 15 weeks seems to be where the country is, Kayleigh. I want to stay with you on this issue and these issues will be decided by the states. You talk to the Speaker of the House. I talk to the Speaker of the House. It is not going to be an issue in the House of Representatives. This is not going to be decided any longer in Washington D.C. The states will decide, but Democrats are trying to scare women into thinking Republicans don't want abortion legal under any circumstances. Now, where on earth would Democrats get this idea from? A better question is where on earth would Trump get this idea from because he also warned Republicans that abortion extremism and bans with no exceptions are going to lose them elections. So it almost feels like maybe Republicans are the ones scaring women, not Democrats, doesn't it? Of course not. It's Democrats. They're always the bad guys, no matter what. There's no objectivity, no nuance whatsoever. It's not Republicans, it's Democrats. Amazing. But I want to get to the best cope of the entire election cycle because failed New York City Council candidate Brian Robinson wrote this concession speech on Twitter after losing and it is an absolute banger. Quote, thank you to all that fight the good fight with me. NYC is irredeemable. Congratulations to Keith Powers. The city has blindly chosen its own suicide.  My family will be.  Solace bastards. I think that he might be a little bit mad that he lost the election. So in conclusion, these results are absolutely fantastic. It indicates that despite Joe Biden's dismal poll numbers, voters are still motivated to vote based on issues, which is a good sign and puts me a little bit more at ease after seeing the New York Times poll published on Sunday, which showed that Biden was losing in almost all key swing states. So in these dark times, I'm really happy to bring you at least some positive news. Things might be bad, but Americans are seemingly waking up and rejecting right-wing propaganda when it comes to abortion and trans rights. And if the fear mongering around these issues isn't persuading voters, then what else do Republicans have? You know, they're not running on economic issues because giving tax breaks to the wealthy isn't going to galvanize people. They're not running on increasing the social safety that are actually delivering for voters. So what do they have?


Welcome to HowlRound. You might be wondering, what is a HowlRound? What have I gotten myself into?  Because frankly, I want nothing to do with that. No. HowlRound is. Are you ready for this? I am ready. HowlRound is a knowledge commons by and for the theater community. Hmm, yeah, I don't get it. Well, let's break it down. The theater community. You know, directors, actors, stage managers, playwrights, designers, dramaturgs. Okay, yeah, yeah, yeah, I got it. So being an artist can be isolating at times. Where do you share your ideas and frustrations and find a connection with other creators? Is that where the common comes in? Is it like the Boston Common? Yeah, sort of. Or like common sense. It's shared knowledge for everyone. And you mean everyone, like no exclusive access. You don't require a sacrifice to the HowlRound gods. Uh, no. Because when it comes to art, everyone's story matters. Even my co-worker Polly, who steals my yogurt every week. Yeah, even Polly is part of the community. Huh, and HowlRound is built on the community. Absolutely. It's driven by the community with user generated content. So you watching are part of the community. You are HowlRound. Congratulations. Well, now all that's left to do is for you to tell us your story. Check out our participate page or put yourself on the map. Write for the journal. Dream an event on HowlRound TV. Or join us every Thursday for a live theater Twitter chat using hashtag HowlRound. Our team is eagerly waiting to hear from you. Look at those faces. So eager. If you want to get some more details on how to participate, or you already forgot everything we just said, head to HowlRound.com slash participate. And some more good news. We use social media. God, we're hip. We're on Facebook. We use Storify. You can find us on Twitter at HowlRound and Instagram at HowlRound underscore commons. So make sure you check us out. Roll the credits. HowlRound. HowlRound. HowlRound. It ruined.


Hello, everyone. Hope you all are doing well. This lecture, we will talk about Python's list, which you are all very familiar with by now, and our very first data structure. Yes, we're four weeks into the semester, and now we're going to finally look at a data structure, and this particular data structure is called an ArrayList. So we'll talk about what it means to be a data structure and how they, this particular one, the ArrayBasedList, operates. So we've had a lot of build-up to this point, right? We talked about kind of how memory works a little bit in Python, and we're going to see why that's so important today. And last time, last week, we talked about the concept of Big O, and this week we're going to put it all together along with classes and objects. We're going to put it all together, and we're going to see why all that stuff, memory, Big O, objects, classes, why it was all so important that we kind of lay the groundwork for that, because now we're going to get into really talking about the substance of the course, which are data structures, okay? So let's get into it. So, so far we have been using the term data type quite a lot, and you're familiar with data types. You know integers, you know strings, and now you know how to create your own custom data types by defining Python classes. Now there's a difference between a data type and a data structure, and you need to know this difference. So the data type, recall, is the data and the operations you can perform on that data. So in Python, you have a list class, for example. That is a data type. It's got methods, it's got information that is stored within it, right? And in our discussion of classes, we had a student class, and it had data about names, and it had an operation called say name, okay, right? So that's a data type. A data structure has more to do with how the data items inside the data type are stored. How are they arranged? Where are they put? And when we say, you know, how are they stored? What are they, how are they arranged? What we're talking about is how are they arranged and stored in memory, okay? And what we'll see in this lecture, in the coming lectures, is that how these things are arranged in memory has an enormous impact on their efficiency. And how do we measure efficiency? We measure efficiency using big O, okay? So data type, data and operations. It's a concept, right, and an implementation. Data structure is more of like the strategy. How does the data type deal with the data it's storing? And you haven't had a lot of control over that so far. But in future parts of this course, we are going to be implementing our own data types, and we are going to have very precise control over the data structure. But let's start by talking about a data structure that you are already familiar with, and that is the array list, okay? So you need to know this, the array list. Python's list class, which you're all intimately familiar with, organizes its data internally in what we call an array list data structure. Now what is an array? If you're coming from other programming language background, you've heard of this word array. If Python's your only experience with programming, you haven't probably. But what is an array? An array is a contiguous block of memory. Okay, so we've got these main memory sticks out there living. And then inside Python, we have heap memory, which lives somewhere physically on these RAM sticks. A contiguous block just means that we've got a whole bunch of things right in a row. Okay? Remember memory is byte addressable. We can go to any single byte of memory. A contiguous block just means they're all packed one next to another, right? It's a chunk of this memory that is kind of set aside. It's not just a single place, but it's a group of these things, right? That is an array. Contiguous means there's no gaps in here, okay? All right. So arrays are really powerful, and they've been around since the earliest days of computing. The main benefit of using an array-based list, or an array list data structure, is that we can access any element of the list in constant time in big O of one time. Okay? And that's really useful. That is why Python's list, and when we talk about list indexing, we're talking about, you know, when you call list sub zero or list sub one. Turns out looking those things up is really, really fast, and it doesn't matter if you've got a billion items in your list. If you call list sub 999 million, it takes the same time to go and find that 999 millionth item in the array-based list, as it does to find the very first item or the very last item, okay? So we're going to talk about why that is. All right, let me, let me get rid of myself on the screen here, so we've got more room. Okay, see you later. I'm still here. All right, so you are creating a list in Python. You have made a new empty list, all right? Let's talk about very specifically what happens, um, and so that we can understand why this array list data structure is so fast in certain cases, okay? So here's our view of memory, all right? I've just kind of picked a block out of memory. The address values here really aren't important. Just know that I've picked a chunk of memory here, okay? And this is out there, it's living on the stick. So when you write your code that says names gets empty list, okay? Python goes to its heap memory and says, hey, I need a chunk of real physical memory for my list that I'm going to make. And as we demonstrated in one of your homeworks, if you go and look, this thing, despite the fact that it's an empty list, it actually occupies some space in memory, right? Like, uh, I don't have, let me see if I can pull up a command prompt real quick, right? Hopefully you can see this and hopefully I can get it to work, right? So I've got Python here and when I create a new empty list, I call it names, right? And I do sys.getSize of names, 28 bytes, right? So yours may be different on your computer if you do this thing, the number of bytes returned, that's okay. But the point is this empty list occupies some space, all right? Well, what space does it occupy? It occupies this stuff, okay? Python jumps out there and it puts a few pieces of information in there for you. The first is it creates an object header, okay? And let's say that this is 24 bytes. You don't need to worry about what this object header does. You don't need to worry about how big it is. Just know that it's there. It's something that Python uses internally for some stuff. The other part of what it creates, and this is interesting and you do need to know this, is called the length, right? The length of a list is stored as an integer, okay? So what does Python do? Python is keeping track of the size of a list as you add things to it or even removes things to it and it keeps track of it in a little bit of space here dedicated to kind of an integer variable. This is kind of interesting and it's going to be important for us later. So again, when you make an empty list, Python creates this block of space and it puts some data at the beginning called the object header. We're not going to worry about that. And then immediately after the object header goes the length of the list. Well, what is the length of an empty list? The length is zero, okay? So the value here is going to be zero, all right? That's cool. Fine, no worries. It also kind of reserves, and this is important. Oh, before I get there, the exact number of bytes that each one of these things takes varies. It's going to depend on your computer, right? Are you on Mac? Are you on Windows? And are you running 64-bit Python, 32-bit Python? That's not important. What is really important here is that the number, the amount of space that these things occupies is constant for your computer, okay? We're going to see why that is so important in a little while, okay? But anytime you make an empty list on your computer, it's going to take some fixed amount of space in memory just to say, hey, I'm a list and I live here, and also here's my length. This happens every time you create a Python list. The other thing that happens, so I guess I should say, when you call length, length of names, length of a list, all Python does is it returns this integer, right? So it's kind of neat. It doesn't actually run through and compute how many items are in the list. It's just keeping track of how many items are in the list as you add and as you remove, and then whenever you need to know how big or how many items are in the length, it just returns this integer. It's not being computed every time. That's a neat little efficiency, right? Calling length of list is big O of 1, and that's why all it's doing is returning an integer. As we talked about in our discussion about analysis algorithms, we treat returning values, looking up variable values as big O of 1, okay? The other thing that happens when you create a list, Python goes out to memory, it puts this information in there, it pre-allocates, it reserves a larger block of memory in anticipation of you putting stuff in this list, okay? Now arrays need to be contiguous. We'll see what happens later. But now we've got some room here, this green area, that if we want to append stuff to a list, it goes in here. Down here, we've got some free memory. This is not part of the list. This is like empty space. If you define, say, you create a new variable, it may go in here. This is free memory. It's not part of the list. It's there. It's up for grabs, okay? All right. So what happens when we do like one of the most basic operations, which is list.append, right? So let's append names, let's append Alice to names. Okay, what happens? Appending an item to the list, the first thing that happens, actually, is the string Alice is created somewhere in memory. We don't know where it is. Python goes to its heap and says, hey, the user wants a string called Alice. I need to put that somewhere. And so it goes and it puts it somewhere. Who knows where, right? Python knows. You don't know. But that's the first thing that happens. The string is created somewhere in memory. Then when you append Alice into the list, you don't append the actual value of Alice, okay? Instead, what you are appending is the reference to Alice that lives in memory. Okay, so Alice lives at memory address, this thing, the string of Alice lives at this memory address. When you are appending, you are appending a reference that kind of says, hey, the first item in this list, I don't know what it is. You got to go over here and look for it. Okay, so that's really interesting because this means, if you recall, you can append different things into memory. Names can have strings, which makes the most sense, but you could also append an int in here. You could append a float in here. Regardless of what you append, all what you are really appending is a reference, okay? Out to this thing that lives in memory. Each object reference is going to be 8 bytes. Now, the exact number of bytes depends on your computer, but it's constant, and that's the important thing, okay? Let's go over here. We'll go to the next slide, and then we'll go take a quick look at the Python tutor, right? So let's append Bob. Bob is going to get created somewhere here in memory, right? We don't know where. Python knows, it's at this address, and what happens inside the list data structure is you get a little reference to Alice or to Bob. You're not storing Alice directly in this space in memory. You're not storing Bob directly in this space in memory. You're storing a reference to them. It's really important, okay? So, Python's list, what happens is this, it has a data structure called an array, an array-based list, and every time you append, you are adding a reference to that thing you appended inside the list, okay? The data structure here, this is the data structure for a list. The data structure is an array-based list, okay? So let's take a look at this in our Python tutor. Let me pull it up real quick. Here we go. Let's see this, PythonTutor.com, okay? Start visualizing our code, and I need to make sure that let me render all objects on the heap down here, okay? And let me go into live programming mode, okay? Render all objects on the heap, all right? Let's do names gets this, cool. I've got a names object and it's pointing to an empty list. Now let's append Alice to this list, all right? So see here what's happened? I've got this string Alice that's living somewhere in memory, and list, my names is a list of type, and at index zero, it's pointing to this thing. The actual value is not there. It's pointer to that value, or a reference. Pointers in reference, that means the same thing. Bob, right? The list are full of references to these things, and I can append an integer, I can append a float, doesn't matter. They're all references to these things that live elsewhere in memory, right? So it may be convenient for you to think of lists like this, and that's okay if it's convenient for you to think of lists in this way. But be aware, you need to know, as good computer scientists, that what the list actually looks like is this. And you have to understand that, and this is why we talked about memory so much a couple weeks ago. You have to understand that because this representation of a list explains why certain Python list operations are big O of 1, and certain Python list operations are big O of n, okay? All right, so again, you know, this is how you can think of lists, and this is totally fine. Just be aware that lists in Python are not storing the actual values in this block of memory. Instead, they are storing references or pointers to where these values actually live in memory. Hugely important point, okay?  There are a lot of list operations in Python, and they have different big O's depending on which one we are using, okay? We're going to go, in a minute, we're going to switch over to our worksheet, and we're going to explain why these list operations are the big O that they say they are, okay? You are responsible, just telling you now, you are responsible for knowing what each one of these list operations does, and you are, so, here's the code, here's the operation, you need to know them, and you need to know their big O, okay? Why do you need to know? Because we are going to use this list to solve some common problems in computing. We're going to do that in a video or two, okay? So, you got to know the big O's here. Now, what we're going to do is we're going to switch over to our worksheet, and we're going to talk through why these things are what they are, okay? So, we'll be back in a minute in a different video where we're going to work on our worksheet. See you then.


Hell, yo, what's up guys? This is Chris Pike. Muffin's coming, big C. I'm back again, guys, today. Tell you a little bit about freedom. Freedom is hiring. That's right, guys, money. Guys, freedom is hiring in our talent acquisition division. We are looking for talent agents to join us. If you are interested in, you know, referring people or recruiting people to the Freedom Network, and as a freedom partner, I should note that a lot of you, if not most of you, are doing this already by posting videos and saying, you know, in your comments and stuff, saying, yeah, I'm a partner with freedom. Well, we want you to make money off of that, guys. Here's how it works. If you get involved and you get approved for the program, you get 20% commission for anybody you bring into the company for their first 12 months. That's just done. That just happens, guys. So if this is something that you're interested in doing, you want to make some money, you want to do some recruitment, stuff like that, it's available. We are looking for some good people. The link to the entire job description is in our description below. It's a bit of an inception, but it's all there, guys. So there it is. That's it in a nutshell. There are some other serious perks, though, for getting involved with the talent agent or talent acquisition team. Another perk is, well, this is a professional job. If you get involved, you're going to learn some serious things. You're going to learn some sales processes, some marketing processes, some outreach, things like that, how to use Google Sheets and track all your stuff. Guys, this is a real job, and with a real job, you will also get letters of references and recommendations. Guys like me who've had good jobs in the past, but maybe I've told my boss to go f**k himself a few too many times. I don't have a lot of good references, so this could be good for you guys that are up there that are like me that don't work well with others. I don't know. Just throwing that out there. So that's there, too, guys. Other things you want to think about are base salaries. We have over 100 employees at Freedom, and almost all of them get a base salary. Now, starting out with this job, you probably got to go through the ringer and test things out and go through the interviews and stuff like that, but I can say that guys on our and gals on our retention team, we have people getting paid base salaries over $1,000, maybe close to $2,000. I can't really give up the exact numbers, but serious base salaries are being paid out to star performers, people that really enjoy doing this stuff.  This is just throwing that out there, guys, but it's the real deal. Definitely worth checking out. Also, we've had a little bit of a change in management in the sales or the talent acquisition division, so if you've applied in the past and maybe it wasn't your thing in the past and tried it out and you didn't like it as much, well, we've had some big changes in there. We've got a new guy named Devin kind of running the talent acquisition team. I work with him daily, so you get a chance to work with him. He's pretty cool. You get a chance to work with me and I'm awesome. Just ask my mom. She'll tell you that. But guys, yeah, there's some real changes in there and it's definitely worth a shot, guys. So anyways, long story short, but whole nine yards, it's in the link in the description below. Check it out. If it appeals to you and you want to get involved, do it. We need people. We need you. We're coming to our freedom partners first. Just throwing it out there, guys. I hope you enjoyed this video. I will be back soon with some more stuff. This is Big C. I'm checking out. Bling!


So there's one for block IO. I think you can imagine what that one does, right? Block IO. So with the block IO, for example, you can say, hey, I have a C-group blue. You can only use 50 IOPS per second, all right? Whereas C-group red, you can use 150. And you can also get detailed metrics about that. So you can say, how many IOPS to this particular C-group breed, or how many bytes has it written? And there's other ones. There's one for CPUs. There's one for memory. There's other ones for the huge translation, look-aside-buffler, et cetera. We're not going to go through all these. We could spend a day, maybe an hour on each one of these. But we're not going to. So how do you work with these things? They use the Pseudo file system, right? You guys may have used this. So imagine you just got a file system, and you're looking at it in your Bash shell or whatever. Looks just like a regular file, but it's magic, right? So you can write data to this particular Pseudo file. And what it's doing is it sends it into the kernel module, and it's a way for you to configure or send information into the magic. You can also read from them. So for example, you can just do a cat on a Pseudo file, and it could give you some data back. And that data is not just in the file. It's coming directly out of the kernel module. And this is the way that you interface with C-groups. So there's particular files to allow you to set. For example, how many IOPS per second this particular C-group can use. And likewise, you can cat a file and get the amount of block IOs it's done, or the amount of bytes it's written, et cetera. So how does this look from an overall perspective, right? The C-groups. So these things are mounted, just like a regular file system. And the way that they work is when you mount them up, you get a directory for each of the subsystems, which is shown in those. Yeah, you can kind of see it in the blue. So you'll get one for each of the subsystems, and it'll have the Pseudo file system populated underneath it. That is the quote unquote global or root C-group. Now if you want to create a new C-group, let's say I want to create LXC. Literally what you do is you go create a directory under there, and boom, kernel magic populates all these Pseudo files underneath that particular directory for that C-group. And then, you know, if you want to assign processes to that C-group, it's pretty cool. What you do is you just take the process ID that you want to be in that group, and you just cat it into that task file. And this task file says which processes are in the C-groups. And once those processes are in the C-groups, you can get metrics about them by querying their Pseudo file system. You can set limits and constraints with them by echoing data into them. So this is the interface into the C-groups. All right, so first aha moment, or maybe not. We have our beautiful Linux container. We have some processes in it now. Now what we've done is we've added in a C-group. And so the way this looks is in a Linux container tool set that you would use, let's say you say, hey, Linux container tool, create me a new container. What it will typically do is go create a new directory under each of the C-group root directories for your container and then put your process IDs in there. And then let's say you want to tell your Linux container tool, hey, I want two gigs of memory for this particular container. The tool set will go echo that data to the C-group file system to max it out at two gigs, for example. So there's our first step in building a Linux container. We now have the ability to control and get metrics on the actual processes in that container. So the next step, name spaces. So this is all about resource isolation. So imagine on the standard traditional Linux system a couple years ago, five years ago, you have all these global resources. You have interfaces. You have mount tables, et cetera, et cetera, process IDs. What we need to do here is we need to provide an isolated view of these for each of our containers. And Linux name spaces allows us to do that. There's about, what is that, six of them that are available. So there's one for the mount. There's one for process IDs. And they all work the same, but they operate on different resource set. So for example, the actual PID name space will give in your container, if it has its own PID name space, it will have its own process IDs inside of that container. But outside of the container and kind of the root level of the system, they're different. And that's actually a pretty cool construct, because imagine you wanted to take one of these things and then migrate it somewhere else. It really doesn't matter what your process ID is outside of the container. All that matters is what your process ID is inside the container, because it's isolated. So the other ones work very similar. You have one for network. You get your own network interfaces in there, your own routing tables, et cetera, et cetera. I think you guys get the picture. Here's kind of a very colorful picture of how that might look. At the top, we have kind of the global or overall name space. This is what you would get if you're not using name spaces. And then we have a purple and a blue name space. And just kind of notice here in the actual text that each of these, for example, in the mount name space has their own set of mounts. And they don't see these mounts outside of the name space, so it's isolated. And the same comm sets apply to the other name spaces there for IPC objects, network, et cetera. So this chart is just a mapping, high level mapping of the name spaces and C group functionality into the kernel version, approximate kernel version that they went in. The main thing to take away here is that some of this stuff is still pretty new. In fact, the user name space is still under development. So bottom line, the newer kernel, typically the better if it's stable. And then on the bottom right, there's a mapping into some of the standard distributions of Linux. I need to add a bunch of 14.4 in there. All right, so next aha moment. Now we have our Linux container again. But now we've added in isolation with name spaces.  And now your processes are also inside their own name spaces, so they can have their own host name, their own ethernet adapters, their own routing table, whatever, their own process IDs. So now we're kind of starting to fill out this picture of how to build a container. All right, so what about a file system, right? I mean, you have to have something to run, right? You need some binary, some library, some configuration files. What's traditionally used with that is something like change root. I'm sure you guys are all familiar with that. Basically, it changes your apparent root directory. Change root is great. What I've seen is pivot root, which is just a more secure version of that is typically used. So to visualize how this is important, imagine you have a raw file system, which has MySQL and its dependencies on it, right? Now, you want to run a Linux container of that image, file system, raw image. The underlying toolset will take that, explode it on the file system. It will then actually use something like pivot root to change you into the root directory of your image. So this kind of gives us the notion of the file system inside the container. So we'll sprinkle that into our container, right? So now we have the root file system there as well. This is how we can realize and actually run an image with some binaries and some libraries. So we're starting to fill this puppy out. So security, this is probably a big one for a lot of people, right? So there's a lot of different mitigations for security in Linux containers, right? One of them is Linux security modules, right? So this is a feature that's provided by the Linux kernel. It's kind of a pluggable feature. And there's a number of implementations out there today, for example, App Armor on Ubuntu, SC Linux for Red Hat. And these guys allow you to do mandatory access control. And if you're not familiar with this, here's a very generic depiction of how it's different from discretionary access control, which is what we probably typically use. So imagine discretionary, which is more standard or more common when you own the system. You, as a user, come in and you grant privileges to your files or your resources that define which users or group IDs can access those, right? So you, as the owner of them, are giving that, you're granting that privilege to some other group or user. The way that that's different from discretionary access control is that only a user or a special admin process can grant those particular accesses or restrictions to a process. So instead of the user saying, hey, you can use all this stuff under Root and this and that, we have kind of a magic user or a magic process that says you can use this stuff in a circle. So it's a very more controlled and more secure way to do this type of realization. There's also Linux capabilities. Not sure if you guys are familiar with these, but imagine your process in Linux having a little flag or some kind of a value that maps to a capability. There's a whole bunch of capabilities. Now imagine your process making a system call under the covers. What's kind of happening conceptually here is when that system call is made, there's a check and that check says, oh, do you have the admin caps capability? If not, you're out of here. If so, yes, we're gonna let you do that. So that's the very bland version of capabilities. And you can assign capabilities to your processes in your Linux containers to secure which system calls that they can do. There's some other security measures, right? So there's some magic. You can bind, mount and file systems to your Linux containers. And when you do that, you can choose the access, right? So you can say, oh, you can only read it.  You can also use things like security constate to clamp down the actual SysCalls. Obviously, you keep your Linux, your kernel up to date, right? I mean, the kernel is really your hypervisor here. And, you know, so it's just kind of standard knowledge to keep that up to date. There's this, there's this work stream going on right now to, to hash out the user namespace, right? So this is, there's really two pieces to this. The first piece is allowing users that aren't root the ability to launch a container, right? So right now you need to be root to launch it bad. No one likes to do stuff in root. So this feature, which is in the kernel, but still being solidified will mitigate a lot of that. They'll allow you to launch it as a non-root user and they'll also allow you to map your user IDs and group IDs right into the container. So very exciting. Hopefully it's gonna solidify here soon. All right, so back to our container here. So now we've added in confinement around our processes. This is the kind of Linux security modules confining what the process can do, putting boundaries around it when it's created. And now we have capabilities. We can assign a list of capabilities to our processes, which limit which system calls and things that can do on the system. And all the other security stuff I mentioned too, which isn't in this beautiful picture. All right, so we built a Linux container. And like, let me see what time it is. Well, I guess we built it in like 15 minutes. So tonight go home, write a Linux container tool set, open source it, see you tomorrow, okay? So here's just a broad view of the industry. We gotta go kind of faster, run on short on time. So there's a lot of tools out there. Everything from commercialized stuff like virtual also parallels, which is like a whole solution. I don't want to compare it to VMware guys, don't kill me. But it's a whole solution for Linux containers, the whole management stack, everything. There's Docker, right? Everyone knows about Docker. There's other tools, you know, Google just open source their LMC and TFY. Let me contain that for you.  They all have pros and cons. They, more or less they can do a lot of the same things, but the main point is that there's a broad set of tools out there. There's orchestration and management. So how do you do these things across hosts in your data center and, you know, orchestrate things, right? So there's stuff in OpenStack. We're gonna talk about that right now. There's a couple different ways to get through there. All right, so you can do like libvert LXC. So you can do, you know, use the libvert driver to realize Linux containers. You can do Docker. Docker has a heat plugin. Docker has a vert driver. And I think there's something in the works for OpenVZ. I don't know. There's CoreOS, right? So there's these new operating systems emerging that are really focused on just a very minimal operating system to run Linux containers. And there's a couple other ones, Project Atomic. Red Hat just released a couple of weeks ago. It's pretty sweet. And then there's other third-party apps. You can go to GitHub and find all kinds of things to orchestrate across containers and hosts and things like that. There is some work being done to support migration, right? In the CREU project, CRIU, and these guys are, I believe they're associated with OpenVZ. They're basically bringing migration to the Linux container side of things. So really exciting stuff there. But the story isn't quite as good as it is with traditional hypervisors. This is still emerging technology, right? So there's a few gaps. All right, so that was the first section. Let's see if we start in there. So guys, we gotta go pretty fast through this. So the second set of charts is about some semi-active benchmarking that it did. And what it is, it took OpenStack. I basically stood up two nodes in SoftLayer. One was just a controller. It had all the standard Glance, Nova, and all that. And then another bare metal node with Ubuntu on it. And I did some benchmarking with OpenStack Project Rally, which is basically benchmarking as a service. And I compared the results of what I did with Libvert KVM versus what I did with the Docker driver. And that's what this is about. All right, so here's the environment. I kind of just described it, right? I wanna be clear, KVM is awesome. So don't think I'm trying to put down KVM. I love KVM. I love Docker too. So I did a couple of tests here from what I'm calling a Cloudy perspective, right? And the whole idea here was to understand from a Cloud user perspective, what did Linux containers buy me, right? So the first test that I did was kind of this steady state test. So I in a secretly jammed out 15 VMs to the host, and I gave it five minutes to bring the CPU and memory to a steady state. And I measured everything on the compute host while that was happening. So we're gonna look at the results in one minute. The second test I did was more of a boot test. So, serially, I booted one VM or container depending on which driver I was using waited for it to become active, spawned another, another in that fashion till I had 15 and then I tore them down. And you can see the visualization there. The other one was about rebooting. So I fired up a VM or a container, waited for it to become active, and then I soft rebooted it five times in a row. And I did that till I had a total of five VMs there. And then finally I did a good old snapshot test, right? So I'll throw a VM or a container out there and then snapshot it to image. So let's just quickly look at these results. So here's the average boot time with a Docker vert driver versus KVM, right? So about three and a half seconds is what I saw with Docker about 5.78 with KVM. So that's the boot time for VMs versus containers in this test. Here's the reboot time, right? Takes a little longer to bring down a whole guest and bring it back up in KVM. Pretty fast in the Linux container world. Delete time, about the same, okay? Nothing special there. So how about snapshot? Now Linux containers are a little bit faster, still gotta take the image and capture it on the compute host and throw it up to Glantz. So some of the same stuff going on, although it's a little bit different in Docker versus KVM, but there's still a difference there, right? All right, and here's where we get into, so these are the compute node metrics, right? So while I was running all these tests, I ran DSTAT, which basically pulls a bunch of stats from your system on the compute node, and I graphed them. And what you're seeing here is the steady state test. Now remember, I started this test out by throwing 15 VMs all at once at the system, giving them five minutes to stabilize and then tore them down. And so you can kind of see at the beginning how it spikes up and then it flattens out and at the end a little bit of some bumps there when it's tearing them down. The top one is Docker and the bottom one is KVM. Kind of an interesting metric in my opinion. So here's what I did, and this is not scientific, right guys? So I took the graphs when it kind of stabilized from the previous one and I segmented it across the same timeframe, right? So the top one is what the Docker CPU looked like with 15 VMs stabilized. The bottom is what it looked like with KVM, right? So about 0.2 user CPU average for Docker, 1.91 for KVM, I'll let you do the math. So kind of interesting factors, right? I mean, this is, to me, this is showing something that's kind of interesting. I'll leave it at that. Here's the memory, right? Red, KVM, blue, Docker, right? So I did some magic math up there, right? So about 49 megabytes per VM with Docker versus about 292 with KVM. And again, remember, I said these things are lightweight. You just need application and its dependencies. And so it's a smaller image, it's a smaller runtime and, you know, this is proving it. So here's that serial boot one, right? So I booted one, wait for it to come active, booted another. So basically the compute node was almost always seeing a boot going on. And you can see in KVM, the user CPU starts to really kind of balloon and grow as you go through the 15 VMs there. Docker, I mean, it had some bumps, but it always came back down to a stable state pretty rapidly. And there's some averages there.  So just Google, Bode and Russell, SlideShare. And this whole benchmark thing is called out there if you want to check it out later. So here's what I did. I took the, you know, from 8 seconds to 58 seconds of the serial boot test and I kind of just grafted out and drew some trend lines. Red stuff is KVM user CPU. The blue is Docker, right? I mean, KVM seems to kind of ramp up as you throw VMs at it in a consistent fashion versus Docker, which is pretty flat. This is, again, just a memory graph, one on top of the other, you know, so you can kind of see the way that the memory grows as you throw VMs at the system, right? I did the same thing. I took that memory graph and did some, and I did some linear lines on it. So you can kind of, I mean, if you want to do some very simple math, it's about, you know, one third less memory here, growth and a booting perspective. All right, so the second set of tests I did here, and there's a lot of stuff on these guest tests, right? I mean, if you go to the OpenVZ page, they have a whole section on performance tests they did. They did some really cool work there. I checked that out because OpenVZ is Linux containers as well. So what we did here was actually go into the guest and do some testing inside the guest to see, you know, what does it look like on the guest? What's the performance realization? So basically KVM versus Docker, same network throughput. Here's some other numbers. The top right is some memory tests using MBW, right?  I mean, Docker and bare metal are equal, right? I mean, again, back to my point, Linux containers run at bare metal speeds, period. That's it. And at the bottom, we did linpack across them. The, we scaled up the CPUs all the way up to 30 some and compared versus bare metal. You can see bare metal on red. Linux containers in blue-ish, about the same. This is just random read, write, IO, right? Using Sysbench. This is a synthetic test. So take this with a grain of salt, right? I mean, benchmarking is an art. It takes time. This is a semi-active test. This is not a fully active test. I'm in there looking at every IOP and what's in the IOP. So take some of this with a grain of salt but, you know, take it. So Docker in blue, KVM in red. So then what I did was take MySQL and did a Sysbench, you know, L2B test on it. And you can see they grow, you know, pretty much at the same rate as we scale threads from one to 64 there. And that's the number of transactions. And we did the old index insertion test. I don't know if you guys are familiar with this. This is a new popular one that basically just throws a lot of data, a lot of write data at MySQL. And along the bottom, you see the table size growing in increments of 100,000. And then you see how long it took to write that 100,000 rows to the table. You know, they're pretty much on par between the two Docker and KVM. So I want to take a minute here to step back to things that weren't necessarily reflected in the benchmark, right? If you go to the Docker CLI or to some Linux container tooling and you say run Buddha container, right? On Docker when I tested that on the compute host, it was less than 200 milliseconds, right? And with the Nova VRT driver, it was about five and a half seconds. Now that's not a hit on Nova. What I'm saying is that with the technology that's this fast, you're sometimes limited by the throughput or constraints of the actual orchestration capabilities, right? So just kind of think about that. We need to make our things, we're really gonna need to make fast orchestration and management systems to keep up with these Linux containers and realize their benefits, right? I mean, three and a half seconds isn't long, but man, I don't like to wait, okay? Especially if you're doing a lot of short-lived workloads. And then finally, here's the difference in the image sizes that I tested, right? Docker was about 380 megs and the KVM was about a gig. So in summary, Linux containers are fast, they're damn fast, right? They're fast at runtime, they're fast in the cloudy ops space. They reduce the image size, they reduce the footprint, they reduce the resource consumption on your host. What does that equate to? Greater density, probably. Greater return on your hardware, probably. So I'll leave you with that from a benchmark summary perspective. There are gaps, right guys? These things aren't perfect. They're new, there's not a lot of knowledge in the industry about them. That knowledge is still growing today and it's becoming more and more popular. And there's still some other gaps. There's concerns about security. I would argue that there are mitigations for security, but yes, there needs to be some work done. And there's some other gaps. I really want to try to tie this up because I think we're almost out of time and I want to catch some questions here. And finally, here's some references, right? If you want to go check out the benchmark results here on SlideShare, I have like a 60 page thing on deeper into the namespaces and stuff. And there's some other great links there, like Docker and OpenVZ and all those guys. And then a word from my sponsor, right? So there we go, IBM Track. And here's some more technical sessions from IBM and rock on, I guess. So that's it guys, questions. I think we have, we've got five minutes? Yeah, so we've got five minutes. If you want to ask a question, please come to the mic. Great presentation. So one question is that I believe that OpenVZ, the OpenVZ kernel has allowed users to run as full root in a container. But it kind of seems that with LXC, we're sort of waiting for a few things, be that improved kernel support or improved capabilities or ways to better contain that. So I guess like, how is that the case? How is it that OpenVZ handles this to a point to allow full root? Whereas we're sort of still mitigating this with LXC. So there's probably some OpenVZ guys here, right? But my understanding is that the OpenVZ team is actually, so when you install OpenVZ, you get a set of kernel patches, right? So they're patching the kernel with some extra stuff, whereas traditional standard LXC is using upstream kernel. So LXC, the OpenVZ guys have the ability to get stuff in there faster, what they need versus standard LXC, which is kind of relying on the development community in the kernel. So I think OpenVZ is a little bit ahead because they don't have to have that overhead of the development cycle. Did that answer your question? It does, although it's kind of curious to me that OpenVZ has been around for a long time. And so it kind of seems odd that some of that hasn't been shared into the mainstream kernel. I mean, maybe it's an implementation detail that's undoubtedly harder than we're probably looking at it. But if there's anything else that you might have to say on, like your comment about moving Docker into being able to run an underprivileged user, the Docker process would help mitigate this problem. But it kind of seems like it's more a kernel space issue rather than, well, let's just run Docker underprivileged. Great, it is a kernel space issue. And I know the OpenVZ guys do work with upstream kernel. I don't work with them. So if I'm wrong, come up here. So they are working with the community, but the development process is a little bit slower. But I think you're right. This is a kernel issue. We need to get development upstream in the kernel to make these things more solidified and realized for the consumption of standard LXC, right? Thank you. Thank you. Hi there. Yeah, you were booting your Linux containers with Nova. And connecting them to their own isolated network, did you find a way of connecting the network that the Linux containers were running in with a virtual network that VMs, like KVM, would be connected to? So you could talk from LXC to VM? So right now, from an OpenStack Docker driver perspective, there's some gaps. It's still under development. They've done a lot of great work, but there is still some work to get the networking support in there and some of the other features. So the answer is no. I would encourage people to put on their Python hat and help out with this. I think we'll see it. But today, right now, it's not a full-blown story, if you will, right? OK, thanks. My question is about a VPN connectivity to containers. Last time I looked at this, you couldn't really do Ipsack or you couldn't do OpenVPN inside of containers. Have you run into this or did you ever notice this? I've never tried it to be perfect. I don't want to pretend to know because I don't know. OK, because I had a unique workload that needed IPsec inside a container. Yeah, I think there's probably some really smart container people here and around. I know a couple of the Docker guys are here. I'm sorry, I don't personally know. But if you want to find me later, I can try to find one of the Docker guys or something or OpenVZ guys. Anything else? Oh, guys, they're tearing me down. Hey, I got some business cards if you want to grab one, stop up. Thank you.


I just want to share a video with you that is unbelievable. This is going to be of an 11 year old boy from Austria, he's a big fan of my YouTube channel and has been following certain things and trying to duplicate the exercises that I've put on YouTube. Now the exercises that Klaus, the 11 year old boy has been working on and duplicating are very high level skills. Now let me say how high level are they? Very few professional dog trainers can do and accomplish the exercises or know how to do these exercises that Klaus is doing here in the video. So I just put up a video, a series of videos probably within the last three weeks of a black German Shepherd named Axel teaching him how to bark on command at a ball because he's preparing for protection work. So I went through all the exercises of staying at the leg under control and holding himself with no leash on and him barking at it without going at it and bringing the ball to him or letting him go to the ball on cue when he's told. So this is not an easy exercise. This takes a lot of self-control and discipline from the dog to hold that position with nothing restraining him and talk to the ball in frustration and when he's told and wait for the ball to be given to him or to be released to it. Very difficult like I explained in those videos how hard it is to do and not only that all the exercises here I'm gonna show you first the exercises that we did on YouTube and then Klaus doing the exercise with his dog in Austria. Difficult exercise. Having the dog follow your body in a circle around the ball and the dog being talking to the ball and focusing on what they want most and having to hold that leg sideways in a circle is the hardest thing a dog can do while being focused at it and talking to the ball in a circle and hold that leg as best they can and not jump out for the ball at a frustration and continue to hold it and wait until they're told to get the ball. Does it beautifully with his doorman? Beautifully. I mean we're talking high level stuff that this 11 year old boy is doing that most dog trainers on the planet cannot do. Amazing. So the next exercise was the walking backwards having the dog stay at your leg and moving backwards while the dog talks to the ball and holds the leg straight back until released to get the ball. Klaus decides to throw a double into the mix so you'll see him come out here into his kitchen and do circling and then reverse so he added two exercises circling and reverse walking before he let his dog have the ball. Getting even more complicated right and more advanced combining methods. So as 11 year old boy from just watching my YouTube channel was able to achieve level exercises of disciplined self-control on his two-year-old doorman. Very impressive so I had to put this video up giving honoring Klaus as 11 year old boy for achieving such high level exercises. Amazing. Now here Klaus's dad you'll hear his voice in the video.  And here you'll see Klaus duplicate that exercise with the doorman. Here Klaus throws in also dad Klaus walking backwards in reverse doing down sit reverse so reversing the dog and throwing commands in as the dog goes in reverse away from him. I have a video of my goal retriever that I put up years ago. I'm assuming that he was basing it on this video. It's very good right so you got to give props to Klaus and Klaus Jr. I mean amazing and they're not professionals. They don't do dog training for a living it's just their pet. So you got to give them a hand right it's very good and the stuff that Klaus Jr. showing their very elite stuff again that most professional dog trainers can't even do. So hats off to both Klaus and Klaus Jr. Very good job. So want to share this because when people send me things if they take time to work on things I'm more than happy to put stuff up on my channel if they've taken the time to do them execute them well. I'm all game for putting somebody's stuff up if they've taken the time to do that. So Bravo Klaus Klaus Jr. Till next time, Miami Douglasburg.


he proof of concept and again I'm showing the proof of concept first time after the fixing and we send the following HTTP request to the SAP server and it works it works sorry here we can see that we executed the task list command and right now we can execute the command in the SAP servers but if you see the screenshot on the shell script is not displaying the user name of soft processes it means that the user which running our shell script doesn't have enough privileges to show that info so what we need to do we need to escalate privileges again after we started to analyze the SAP processes by process hacker and we discovered three processes that running under system user for us interesting was the following processes SAP host exec SAP OS call exec files processes we use the process monitor for tracking the activities of that processes and we started to analyze and we started to tracking what kind of file they're creating executing modifying etc and we saw that there are a few activities but the most interesting was that the SAP host exec process this one is executing every two minutes SAP CIMB dot exec process after analyzing permissions of that file we found out that many user sorry any user from the operation system of SAP server could delete that file by this name in the folder so what we did we built we created a shell code in dot net built and uploaded to the windows machine the shell code was opened should open the port 444 listen any interface and when he received the commands he should execute that command by cmd we upload that file and we replace SAP CIMB dot exec file and it worked the SAP host exec is executed our shell file and I don't know why I don't know what was wrong but our shell file has been signed by SAP SE maybe it come from SAP maybe it's back in process hacker I need to investigate but you can see in the screenshot that our shell script has been signed so after the executing net cut you can see that port has been open and we could connect to that shell and execute it with my command that's it but again you remember that we should compromise the SAP cloud right we need to jump to one of the SAP servers here from SAP Java to cloud connector to do that we decided to dump memory of LCS our customer said that we couldn't as we are system we could disable the Microsoft antivirus and use Mimicast there but he said we couldn't disable the antivirus we couldn't extract the dump to our Windows machine to analyze that dump so we had another way only we downloaded C sharp mini dump from the github and build that program to dump the process the dump memory of the LCS process but of course this program is detected by antivirus by any antivirus included Microsoft antivirus we modified that file the source code of the sharp mini dump we modified it, we replaced some strings we replaced strings by Charcerize we compiled again and again has been detected by Microsoft antivirus and you know the bypass was so beautiful we just set file extension to we used file extension that has been registered in Windows machine and we executed by cmd C mini dump bypass ms.exe.pp and it has been executed and he dumped the password and hashes of the processes so after that we had the admin users and passwords from application and from operation system and right now we should jump to the SAP cloud connector and you know how we jump it was so easy because in the last cave there was over 100 SAP servers and the SAP admin set the same passwords for all the SAP servers landscape so we jump to the SAP cloud connector we connected the SAP cloud connector by SSH and started to analyze the system as the SAP cc is based on the page tomcat the password was in users.xml file in hashet in hashet mod so we continue to analyze the system to get other ways how it's possible to discover the password we found SAP SSFS file the SSFS is a modern SAP secure storage and we should try to analyze this secure storage after some researching of SSFS structure for SAP cc we found that the SAP cc SSFS contains the following properties should contains the following properties but the encryption algorithm has been written in binary files and traversing that binary files takes a long time for us and we choose another way we with so that there are LEAP SAP SSC20 GNI.SO file and that file had one exported function sex store access get record and what we did we just used that SO library as native function we used that function in our mini java code and as argument we passed the properties that we discovered this one and this one and we got the password for java key storage password for the SAP cloud connector so what next we open the SAP cloud connector UI and log in there and right now we can manage the SAP connections we can move the traffic from the cloud to our servers or we can move traffic from on-premises systems to ours to our another server and we can manage the traffic we can listen the traffic we can discover some private info etc so as a conclusion you the SAP admins should install the SAP security nodes that we discovered and they shouldn't use the same password for SAP operation systems they shouldn't use different passwords for different systems I know it can be so hard for the admins but it's the one way for protecting the SAP servers for password reuse attack so that's it thank you if you have any questions alright folks you know how this works at this point priority to anyone who submits VS Lido will also give it a couple minutes and if anyone is feeling brave you can also ask and I will repeat the question as I refresh it's supposed to be real-time it's not that real-time one with questions call it a day shortly alright I guess we're done with this track for the day thank you again so much it's a pleasure having you and thanks for walking us through that that was excellent