Welcome to Toffy TV. Well, Ruben Fenagri has been linked heavily with a move to Everton on loan to be a possible back-up left-back, but listen, it doesn't have to be a back-up, it could be a contention for starting and that's what we're going to have a little look at. He's currently at Sport and Lisbon, played in the Premier League with Wolves. Do you think he's good enough to get into the Everton's first team? I don't know, is the answer. Played 35 games or something for Wolves over his career at Wolves, he was there for five years. I don't know. He's obviously a decent footballer, but it's very much a back-up for Michel Encol in my opinion. Frank Lampard, Kevin Thelwell, obviously, they've had a look at Nielsen Cuncu. Seems like they've made a mind-up on him, but he's not going to be good enough. We're well covered at right-back arm. We've got Patterson, we've got Coleman, Mason Holgate can play there, Ben Goffrey can play there. I had a push, you know, Goffrey can play on the left as well, but we saw last season when Llewka Dimyn out the side and then Michel Encol wasn't quite up to speed. We had like John Joe Kenny out there, we've had Coleman out there. There's no output. We had Ben Goffrey out there as well. There's no output from that side because they're not naturally left-footed. So it makes sense from that perspective that you can get him in on relatively low wages, you can come in and battle, I guess, keep Michel Encol on his toes, but also, I think you've mentioned it a couple of times with the five subs. It gives you that option of maybe adding a sure and something up, or if Michel Encol was tired or whatever, if he's not in an injury or if he's on a booking, you've got a safety sub there, then having you to be able to swap him out or whatever, and we haven't really had that luxury. The squad is staying in places and quite clearly Evan and Frank Lampard have thought that left back is an area where they need another player because they are the well-covered centre back, the well-covered right back, like I've just said, and it is that left side. I thought Encol would be given certainly till Christmas, but maybe the manager's looked at him and gone, he's not quite where we want him to be. So it'll be interesting what happens with him. Did he give him a new contract and give him another loan, or did he try to sell in the summer because he's only got, I think, 11 months left on his deal? Yeah, I think in terms of a deal I think for me it is that safety element first. Ben Godfrey was, you know, played as a back-up, left back at times over the last couple of years. You'd want him now to settle down in a centre back row, you know, whether it's in a two or in a three or whatever. You know, you want people who can do the job properly, I think, and I think if he does come in, I think that gives, as you just said, cover in all aspects then, and Cunco, I just don't, I just think he's defensively all over the place. He's more of an attacker, isn't he? Yeah, he is, but I just think defensively doesn't have, just doesn't have that real idea how to defend properly. So I think there's a little bit of experience there, even though he's only, what, 23? There's a little bit of experience there, playing in the Premier League, playing in, I think he's played games in the Champions League as well. And it just seems, for alone, it just, it does make sense, it does make sense to me, to say whether it comes off or not, we're waiting to see, but it does make sense just in that short time, and, you know, it's, don't we, you know, bring it to me, and we can have a look at him, make sure that he's up to speed, what we, you know, Kevin fell well. Obviously it was at Wolves, so we love knowing all about him, so it'll be interesting to see whether we pull it off and then what the knock-on effect is with Nars and Cunco. I think it's always, as well, it's always good to freshen the squad up anyway, to get other players in there. I think you don't, I'm slightly underwhelmed at the moment because it's not an area where we're looking at and going like he's a starter and we need it back. So it makes you, it is a little bit underwhelming from that perspective, but if you look at the whole thing, it kind of does make sense, you're right Thelwell, it does work with him at Wolves, knows about his character, knows what he is. He did play some Champions League games last season, I think he played 18 times over all the sporting. They've took the option on him at bottom the other weekend and now sending him on home, which is a bit of a strange one. Also putting a clause, an option in his contract to be both for the same amount of money they paid for him, that's what the report seems to be, which is a bit strange as well. But this Neverton could take him for a year and decide, like we did with Sid, he's not what we need, it gives them a year to look at him but also gives them a year to identify another left back who can come in if he's not up to speed. So it's squad depth, 23 go days, not being capped by Portugal at full level yet, but was capped at every level below the full national team. It's never scored a career goal. Also, you know, listen, might do for us. The last Portuguese left back we had was pretty good. Pretty good, new enough. Let's just have his numbers from last season. He played 14 times in the league, no goals, 1 assist, tackles, 1.1 per game and his cross accuracy was, looks like 11%. 11%. Let's just compare that to Michael Encoe's from last season. So 16 Premier League games, 1 goal, 0 assist, 1.9 tackle, so better in the tackle and the cross accuracy 20%. Almost double. So yeah, so if he's almost started straight away, you're looking at Michael Encoe and he's got much better numbers and that's fair enough because he will be the starter and if this kid comes in he will be the back up. You've got to have two players per position, haven't you? This idea of players floating round. When you've got a small squad, we've seen this last season, what tends to happen is you go, sand, they can play in that position and then someone else gets injured or they get injured and suddenly before you know it, you're looking at your numbers and you're looking at your positions and you're like, you mentioned John Joe Kenny playing left back for us last season and he was the back up, the third choice right back and then ends up playing left back and you need players who can play in that position as the back up. I think especially for left footers on the left side, it's so important to be able to put deliveries into the box and it just takes away half your attacking game, you're breaking quickly, you've got to stop and put it back onto your right foot, teams get set and all that. It's not enough left footers in our squad anyway, but neither of them, if Michael Enco is on the team's creativity level, we're still missing that really and that's something that Michael Enco has got to improve this season and obviously we sure him during the day scoring a lovely volley at Blackpool and that's the kind of thing he's got to do. We had a goal and an assist on Sunday, didn't we, against Blackpool. It's what he's got to do, get himself high up the pitch and this fella, if he gets his opportunity, he's got to do exactly the same, get high up the pitch, get deliveries into the penalty area for Dominic Alford-Lewan. And if, you know, he could become a player that is helpful for Flanglamp. That's all it is, isn't it? At the end of the day, it's not the most glamorous, wouldn't be the most glamorous signings in the world. It's not what we're all clamoring for, you know, midfielder or a striker or whatever, but in terms of the squad, it would be an improvement, I think. You're right, absolutely spot on. There aren't too many left footers in there, are there? So suddenly they're having the choice of having another one who can come into the team and you're not just sticking a right foot in there, it's a completely different side, isn't it? So we're waiting to see what happens with any potential deal. Let us know your thoughts in the comments, your thoughts on them. If you've watched them, let us know your thoughts on them. If you're any Wolves fans, any sport management fans, let us know your thoughts on the player himself. Would he improve? Everton, tell us in the comments. Don't forget to give this video a like, subscribe. If you haven't already and you want more videos, exclusive videos, daily live videos, join us over on Toffy TV Premier. The link is in the description and it will be on the screen in a moment. See you later.


Item number SCP-441 Object Class Euclid Special Containment Procedures SCP-441 is currently housed in a designated outdoor pasture at Bioresearch Area 32. The 100m2 field is surrounded on all sides and bisected into two rectangular halves by a concrete wall 1m high. Once a month, a team of 6d-class personnel is to lead SCP-441 from whichever half of the pasture it is currently residing in, through the gate and the dividing wall into the other half of the pasture. The previously occupied section of the field is then to be thoroughly cleaned. The field must be carefully examined for any instances of SCP-441-1, which are to be dug out at the root and incinerated. Fresh sod must be sown in places where SCP-441 is grazed or where SCP-441-1 has been removed. All personnel dealing with SCP-441 are to remain in proximity of less than 20 meters for no longer than 30 minutes. Any personnel showing any health problems whatsoever after contact with SCP-441 are to be examined by medical staff and reassigned. Description SCP-441 is an adult male Jacob Ram. Prolonged proximity to SCP-441 leads to a depressed immune system in humans. After approximately 30 minutes of exposure, D-class test subjects showed markedly decreased white blood cell counts. After an exposure of an hour or more, subjects display symptoms of severe immune deficiency. After 90 minutes or more, the immune systems of subjects generally do not recover and death results from massive infection. Laboratory analysis of a tissue sample retrieved from SCP-441 revealed a clear viscous mixture of interstitial fluids and blood, not unlike arthropod hemolymph. Cell structure is identical to mammalian cells, but lacks a nucleus or apparent genetic material. It should be noted that SCP-441 now reacts with aggression towards any personnel wearing a standard issue foundation lab coat. Patches of ground where SCP-441 is grazed begin to exhibit growth of SCP-441-1 after several days. SCP-441-1 resembles common pasture grasses, but exhibits black pigmentation. SCP-441-1 tends not to grow beyond small patches, but appears to have a slightly higher growth rate in the shadowy areas around the concrete containment wall. Similarly to the tissue sample of SCP-441, analysis of SCP-441-1 has revealed a cellulose-walled cell structure identical to terrestrial plants, but lacking in a nucleus or genetic material. SCP-441 shows little interest in humans, but will make eye contact with any staff members entering its vicinity. Following a routine monthly cleaning, SCP-441 showed a market and stubborn interest in D1570, a schizophrenic. On duty staff recognized this change in behavior and convinced D1570 to participate in Experiment 4411. Experiment log, 441-1. D1570 spent a two-day period living in containment with SCP-441, his official role assigned as keeper. His duties were to groom, feed, and clean up after SCP-441. D1570 was observed, developing an extreme physical and emotional attachment to SCP-441. Surveillance tapes show D1570 sometimes speaking to SCP-441, and other times sitting cross-legged on the ground in front of it silently, for extended periods of time. Frequent medical examination showed that D1570's immune system was degrading rapidly, and the subject perished 43 hours after first exposure. Referred to select transcripts below of an interview conducted with D1570 shortly before his death. Excerpts from an audio log of interview 441-1A. Begin log, 1452. Interviewer, please explain your relationship with SCP-441. D1570, you mean... Interviewer, what? Please repeat your answer. D1570, it's what he calls himself. Interviewer, may I remind you, these interviews are intended to be conducted with the utmost seriousness. D1570, I'm completely serious. Interviewer, so you claim SCP-441 is sentient.  D1570 was unresponsive for several seconds. He tells me things, such things. He's waiting. Interviewer, waiting for what? D1570, doctor, have you ever felt detached from your own body? As if you were still there, still inhabiting your person. But there was this thick wall of cotton between your mind and your body. Like, you witnessed every action your body took three or four seconds after it happened. D1570 ceases to respond to questioning at this point. 1503. Interviewer, have you obtained any further understanding of SCP-441-1? D1570. Oh, the black grass? It reminds him of home. D1570 begins coughing. Interviewer, are you aware of the effect exposure to SCP-441 has on your health? D1570, yes. Interviewer, and you have no qualms with it. D1570, he said it was the only way. Interviewer, please clarify that statement. D1570, would you like to see what he's done? At this point, D1570 begins lifting his shirt. Interviewer, oh God, s***, data expunged. Screaming over microphone. We need a medic in here! End log. Closing statement. D1570 died shortly after interview 441-1A from complications relating to acute pneumonia and... It should also be noted that SCP-441 has never been recorded or witnessed making vocalizations of any sort. Lesson complete. If you missed the previous orientation, go watch SCP-440, Sand-Based Ecology, right now. Or for the complete course, watch this playlist.


Since 1987, the North Shore Mountains have been a much safer place than they were before Tim Jones started volunteering his talents and his time. Tim participated in more than 1,400 missions, 1,400 missions, and he helped more than 1,600 people. He risked his neck every time to make sure that those 1,600 people got home safe. And when we lost Tim, we lost a real British Columbian hero. This March, at the legislature, we will dedicate a memorial to search and rescue volunteers who have lost their lives in the line of duty. And today I'm proud to say that the wilderness that Tim Jones loves so much will bear his name forever. Part of Mount Seymour, Tim Jones Peak, will stand long after all of us are gone. I don't believe my dad could ever have imagined that his simple obsession for helping people through his rescue work could lead to such a significant honour, but it has, and our family is so thankful for this recognition of his service. On behalf of our family, we'd like to extend our sincere thank yous to the many people who worked hard to make this extraordinary honour happen for my father.


How is that going through the gag? There's just a little bit more. Just a little more. Are you learning things about yourself today? I don't know. Maybe. Can she breathe? Why is she squirming? Probably not very well. You might be killing her. She's not moving. Your name plates are off and that's really good. Okay. I'm really proud of you. Stop. Why are you looking at me like that? I don't know. I just wanted to see myself in your camera. Let's start. Are you touching me?  You look like you're struggling to exist right now. You have to pee? Okay. Come with me. First of all, if world music on you can mute it in exchange for listening to Tevin. Yes, we do have live music. I'm going to switch to my invisible avatar which is also my male avatar. I hope I don't emasculate you. I don't want to look better than you on your day. In this first round, you get to meet everyone that's around, socialize with them, ask them a few questions and if you like them, you can make them go on to the next round. The ones you don't like are going to get eliminated. After you're done with that, the second round will be a talent show round. You're going to see all the amazing things they could do. Let's do it. Are you ready? Alright, I'll go get the first one. I'll be right back. Oh my gosh, he's so awkward. So tell me what you're looking for today. What are you looking for in a girl? Well, I was looking for some big booty bitches, actually. My primary concern was and the rest I thought we could fill in the blanks. Well, I'm not going to lie. That's... I have a normal booty. I'm not going to lie. Karen, come here. Some of your booty. Yeah, you. Right now? Okay. How are you so bad at everything?  What? Is that Jesus? I'm sorry.  Oh yeah! Wait, yeah! When she's screaming. Your actions have consequences. Say it. Your actions have consequences! Yeah, let's see. Is that you, grown up? No. Is that your brother? You know, I get that a lot. Somewhere down the line, you guys are related. 100% chance. Yeah, I believe it. Yeah, yeah, yeah.  I know! I'm sorry. I'm not interested. I'm sorry, I'm not interesting. I'm so sorry, dude. Well, okay. I never said you weren't interesting, but what is your... Tell me what your hobbies are. Well, like to... Never mind, that was weird. Where was your sense? Your work is a nanny, so I was gonna say... Say it! Say it, I command you! I like to play with kids! You like to play with kids?  You're embarrassing me so much. Okay. What do you want me to say? Listen, remember what I said earlier? I said they have no sippy cups here. I know you have sippy cups here. I command you to give me a sippy cup right now. Five, four, three, right now! All right, give me a sippy cup! I'm sorry! For the record, we did get the fact that... Jack Daniels? Here, have some of this. What are your favorite types of kids? My favorite types of kids. I can't do this. Just go ahead and pound a couple of liters of that. I can't do this. Karen, do you have a sippy cup for this or no? Yeah, just go ahead and... Hold on, I've seen this stream before. Okay, we can stop. I just had flashbacks. So, you didn't answer. What are your favorite types of kids? I like... I'm just gonna say it. I like little boys. What? I'm sorry. Jack, please. Yeah, we'll go to the next stage. Yeah, no, I know. It's okay, Karen. Thank you. So, look at this. Isn't this sick? It's my pal and armor. Thank you, ma'am. Thank you. Hey, how are you doing? Hello, I'm doing good. What's your name? My name's S-Fan. Nice to meet you, S-Fan. They call me Safari. What do you do, Safari? Looking good. What do I do? Shit, what do I do? I clean. I clean. I work. I make that money. Oh, nice. I like the sound of that. Sir, are you a sugar mama? Oh, you're looking for a sugar daddy. I'm looking for... I don't gotta be a sugar daddy. Is that a drugs? I don't know what a daddy is. So, a daddy? Okay, that's like a daddy, but, like, ooh, that's like an instant, like, panty dropper, right?  You like... Shit, I'm about to bust it while I open. Really? You play sports. Yeah, I play football. Time for one more question. Oh, football. Who's your favorite team? Uh, Cowboys, unfortunately. I will say I do prefer just a little bit more. I like baseball just a little bit. I'm a White Sox girl.  I didn't get those same memories with football, but I do like the Super Bowl. Yeah.   Thank you. Okay, that was the last question. We have to get the next one. Would you take the milk or the beer? Uh... Here you go.   Oh, wait. It's from the tap. Wait, hold on. Come back. What's behind you guys? Yeah, it's fine. Alright, you guys can leave. Hi! Hi! Hello. Hi there. I'm good. What's your name? It's Hoddy. My name is Hoddy. So, I'm not really a dog. I'm a dog and a turtle at the same time. And I kind of go in heat like a lot. I like me humping objects. You might see it. I don't know. It happens when I'm just a little nervous, but I'm good now. What's good?  That's pretty much it. You're never going to find a job.  But I can do tricks. I can do tricks. I can be an entertainer. So, you have no skills.   Yeah. Just like any other woman. I'm 21. What the frick! Are you okay? You keep getting scared. Why? I'm really nice. You don't have to worry about me. I don't bite or anything. Is there anything I can do to make you feel more comfortable? I don't know. You seem a little tense. What about a hug? Can we hug? Here, give me a hug. Okay. Oh, I didn't mean to go down here. I'm sorry. It's not the first date. What are you trying to do? I'm sorry. You're right.  What the frick was that? Hi. Love your mustache. My name is Strumpet. Pleasure. What is your name? Strumpet. It's a local name. It just means whore. I try to change that. Okay. Well, that's how I like my woman. Ideally, last seven months has been sparse. I'm dry as a Sahara. I'm looking for my oasis. It could be you. Really? Maybe you could moisten me. Be the rain down in Africa that I need. That's a good song. Have you ever been to Africa? I like that song a lot too. Never, but I'm looking to travel if you're a millionaire. I just bought a house. Oh, well, I guess I could travel around there naked. That doesn't stop me from doing an expedition. That's why I literally lived with her. I said it was fine if she wanted to walk around naked. But she decided to move there naked. Well, I assume you are the manliest. And that makes you the strongest and thus the leader. So why isn't it what you say goes? I don't have an only fan subscription. Well, you don't have to pay with me. I prefer if I only have one subscriber and paid in love. Kind of cheesy, but I'm okay with that. Mm-hmm.  Yeah, I mean...  I spilled. I spilled mine too all over myself. Oh my gosh. Well, I guess we'll just have to clean each other off. Yeah, I don't have a towel though. Well, you could use my dress. Does that work for you? Yeah, I'll use the long side. Where did it spill? Here, yeah. Right all over your front. Just really get it down low right there. Thank you. You're welcome. Oh, Jinx. It's okay. You can owe me a soda that we could spill later. It has to be game fuel and sponsored. I'm down to do a little powdered fuel with you then. Maybe the two of us could drink it together over our next date. You're actually crocking. That's perfect for me. Oh my god, I love a himbo. I think we're gonna get along just fine.  Are you calling me a slut?  Your shirt has a gap. Oh yeah, you have a jacket. That's fine. Thank you. Milk is good. I think it's starting to curl. You want to feed me? Okay. Too fast.  What are you doing? It's slower. I'm gonna pull out my hammer. You like my hammer? It's pretty sick, right? Well, there's a chance to proc fire damage and it's gonna put a dot on you. It hits for like 300 something. You want to take the hammer and you want to stroke the hammer. When I'm in the full body trackers, I actually lost them and then I found them recently and I just didn't have them charged and ready to go for tonight's dream. Hop in full body, we could be anime girls together. Really? Hello. I'm a DJ.  I slob on knobs all day. You slob on knobs?  I didn't realize that that other side of the booth was so buoyant. I guess it is. Yeah. That's cool. I'm a writer's talent. But also I do holy damage. I mean, I'm into that. I'm a masochist.  So you can hurt me anytime you want. Really? I have holy semen. I mean, I am a masochist after all. I mean, you can really hurt me. I'm okay with this. It might burn through your skin. I heal fast. Don't worry about it. I heal fast. What kind of shoes are these? It's pretty bouncy. They're my high heels. What's under your heel? What's under my heel? That? That thing on the bottom of my shoe? What does that say? Is it under your leg of hire? It's a barcode. I would not skin it. Is it a fire? I can float. I'm a demon. What is that? It's a QR code. Oh God. Don't. Don't. I don't actually know what it leads to. It scares me a lot. I'm not huge into tats. Can you change my mind?  Yeah, I do. You do?  All right. Have a nice day. One or two more dates before we move on to the next round. Let me see. Where is the date? There you are. Nice to meet you. Please have a seat. What is your wingspan? How far can you reach your arms out? Yeah. Nice. Can you make your elbows touch your... Can you make your elbows touch? Oh. Okay. That was an oddly specific way to approach that situation. You can make your elbows touch. Where did you get such a thing? Absolutely. Oh. Okay. Go ahead. Oh, you want me to... You want to pour that in my mouth. Okay. Ready? Okay. Thank you. That was an awfully generous of you. Where did you buy that? Oh, thank you. Thank you, man. Is that a sexual thing? I'm going to be honest with you. I'm really enjoying watching you struggle. Are you a soccer player? Well, great.  Don't fall. Rise. Wow. Yay. That was sick. Good job. I'll give you some water. Ready? How is that going through the gag? There's just a little bit more. Just a little more. Are you learning things about yourself today? Um, I don't know. Maybe. How are these so much more than these cups? I'll be filled to the top, if I had to guess. Can she breathe? Why is she squirming? Probably not very well. Is she too tight? What's going on? You might be killing her. She's not moving. Yeah, but... Okay, they're fine. They're fine. They're fine. Thank you very much. You did great. Thank you. Oh, her. Yeah, you did great. Sam, I'm not bricked. Guys, this isn't remotely erotic to me. Or sexual. Hello, William. It's like a drop in. Yeah, a soft end. What do you call that thing that men have that's in the... What? You gotta go. I'm just here for filling. Who's that? Who's that? What are you? I'm just here for filling it. I'm being bricked. Get the last one to steal all the credit. Okay, it's fine. You are so brave out there. Thank you. What do you do for a while? What do I do in my spare time? That's a really good question. Typically, I like to eat crayons and stare at walls. But I actually reached level 8 the other day. So I'm thinking about moving up in the world. Becoming a little bit more powerful, you know? Have you ever drank crayons? No, so listen. I once on my microwave food snacks, I tried to drink that. It was like molten lava sliding down my throat and then becoming an amorphous solid. Kind of like glass, you know? I had 30 degree burns and I'm not allowed to... You wanted some lava sliding down your throat. Well, no. I didn't realize that when you microwave food snacks, it would be really hot. I thought they would just become liquid, you know? Yeah. Lava... Okay, I can... Two, another one. That's going to be... One time, one time, I tripped over and my shoe lace that was untied tucked into my shoe and I never had a time that she's ever again. Wait, really? Yeah, yeah, it was magic. I basically invented, like, sketches with the little push-ups. So I bought these Nikes. They're like $2.70 something or whatever. I don't know what they're called. And they have an orange on the back. And I never undid the tie out of the box and I slip my feet in and it fit perfectly and I never had to tie them. That's like when you get a hat and you never take the tag off. Same energy, right? No, because they can't even see because the lace goes under my shoe. So nobody even knows. So it's cooler because, like, I don't show off the freshness. But nobody else knows. You see what I'm saying? Like, the freshness is on the inside. I see, I see. All right, S-Fan, we're done with this round. Cool. Crush some hearts, destroy them. I'm ready to eliminate them one by one. Yes. Okay. Let me switch to girl form so I can be cuter. Hold on. You have a moment to think about who you're going to eliminate. We'll do an increments of four, okay? So you'll eliminate four now. And then the final round will have four. Okay? Four people to eliminate. Who's it going to be?


First of all, thank you. The outpouring of people who stayed is pretty awesome. So thanks for showing up. That's half a life, right? So today, we're going to be talking about Kubernetes storage developments for stateful workloads. My name is Erin Boyd. I'm a software engineer for Red Hat. Hi, I'm Michelle. I'm a software engineer at Google. Yay. So today, we're going to talk about the background of stateful sets within Kubernetes and kind of the history around that, what problems we're trying to solve by local persistent storage and Roblox storage, which this is focused around. The solution to that, a demo, and of course, what the future work is, because the work is never ending. So there's some expected knowledge.  So today, we're going to look at pods, labels, nodes, persistent volume claims, persistent volumes, storage classes, and stateful sets. Storage classes and stateful sets being the most new API objects. Are you guys familiar with both of these? Not really? OK. So storage classes are a way for the administrator to classify the storage that they either create through static or dynamic provisioning. This allows the administrator to create sets of volumes, maybe for a specific zone that they're dynamically provisioned in, or maybe a specific use within the corporation, you might provision volumes specifically for accounting and make them really slow. And then stateful sets allow us to create an identity that sticks to the pod. And any time I see that word within documentation, I constantly have this image of sticky. I don't know if you guys at the last KubeCon were able to go to the wall of bubble gum in Seattle, but it's rather disgusting. So as I mentioned, we're going to be talking about local persistent volumes and Roblox volumes in terms of stateful distributed workloads. So that word kind of gets tossed around a lot. Law of the keynotes, they talk about distributed, distributed, distributed, and Kubernetes being stateless. Well, we hate to burst your bubble, but Cassandra, MongoDB, and GlusterFS, as many other distributed applications actually need state. They replicate the shared data for high availability and fault tolerance, and many of them are critical infrastructure applications within the enterprise. Many of these that utilize data analytics, for instance, you can see where local persistent volumes can provide data locality for performance. And data gravity, I think, is probably the biggest issue here is you can execute on where the data is today. And last, high performance tuning. So with the advent in the maturity of Roblox volumes, we will now be able to tune the storage more appropriately to really get what you need out of Roblox devices. And so there are some other features, in addition to what was merged, that have been merged since 1.6, I believe, Kubernetes, that benefit stateful workloads. Stateful sets, as mentioned in the assumptions, are ways to provide that stable identity. It's a normal controller if you went to any of the keynotes, they talked about the cat set in which you just have a controller that is intending to go to a certain state and constantly executes trying to do that. How is this different? I think the common question I get is how is this different than my replica set or my deployment? It's the stable identity and the stickiness that it provides. It's not necessarily appropriate if you don't care about those things. It's also for workloads that you need to have a graceful startup or a graceful shutdown in which things have to happen in a certain order. Zookeeper is a perfect example of that. As each one of the nodes come up within Zookeeper, they're given a unique DNS network identity that then defines them within the quorum. The next feature in Kubernetes that also benefits stateful workloads is a pod disruption budget for control disruption. And I have to kind of giggle to think about what a control disruption is in such an immature system. But it's actually pretty remarkable. So this allows you to say, if I'm running Gluster and I have a replica 3, that if I am doing a rolling upgrade, we're not talking about kernel panics or anything like that, that I need to at least have one of those running at all times. That I cannot have my entire replica go down or, of course, we have data loss. So the pod disruption budget allows us to say what we can tolerate in terms of the replicated pods being down all at once. The next feature, a pod affinity in NiInfinity, those being the same things, allows us to co-locate or spread pods among the nodes. You can see where there's a huge advantage in pod affinity where if I have two pods that can benefit about being co-located together, this feature is wonderful for local storage and analytics to provide that support. The anti-infinity really kind of solves the noisy neighbor problem, where you have a lot of noise, either network bandwidth or cash consumption that you need to be removed from other pods and not scheduled in between that. So similar, I think, to Tains and Tolerations, if you've read much on that, but providing what we need in terms of a stateful set. The last one is pod priority and preemption, because everyone, of course, has the most important application that runs within the system. But honestly, this provides a way for the scheduler to determine the priority if it cannot find where the pod can be scheduled, it can then begin to evict less important pods within that so that your pod can be scheduled appropriately. Not on? Oh, there we go. So even with all these new features, there are still few missing pieces to the puzzle. Namely, currently, stateful sets work very well with remote storage, but not so well if you want to use local storage for better performance at reduced cost. Currently, the only way in Kubernetes to use local storage is to use a host path volume, and they have a lot of problems. As you can see on the right, I have a pod spec, and I have to specify two pieces of information. The first piece of information is the path to the local disk I want to access, and the second piece of information is the node where that disk resides. So you can see the first problem. This pod spec is not portable. It is specific to the configuration of this specific node, and if I wanted to scale my application to hundreds of nodes, that means I have to create a pod spec for each individual node that I want to scale on, and basically manually schedule and manually scale my application. The second problem is that host path volumes are a big security risk, because you're allowing the user's pod to specify any path in the system, including a path to someone else's data, or a path to some system-critical data. For that reason, many administrators disable host path volumes altogether, and you wouldn't be able to run your workload on those clusters if you had to use host path volumes. So the way that we decided to solve all these issues, oh, sorry. So what many application developers have had to do today is to either manually maintain the pod specs for all of their nodes, which makes scaling very difficult, or they have to write their own custom schedulers or operators, and local disk reservation and lifecycle managers in order to handle all of this, to automate all of this manual process, and that developing and maintaining all that extra infrastructure just to port your workload to Kubernetes is a big engineering effort. In addition, you wouldn't be able to, it would be more difficult to leverage existing Kubernetes features, like you wouldn't be able to take advantage of stateful sets, and auto scaling and automatic rolling updates. So to solve all these problems with host path, we decided that the best way is to extend the existing persistent volume claim and persistent volume model in Kubernetes to also support local disks. So to give a little bit of background, persistent volume claims and persistent volumes basically add a layer of indirection in between the users storage requirements and the actual storage available in the cluster. So in my users pod, I'll specify a persistent volume claim, and inside the claim I will specify some generic volume requirements that I need for my application, such as the capacity. Then the cluster administrator's job is to create persistent volumes for these specific volumes that are available in their cluster. In the case of local storage, that information would include the node where the local storage is, and also the path that you can access that local storage on. So let's take a look at some concrete examples. Here I have an example of the users pod and persistent volume claim. I've taken the same pod spec that I used for host path volumes previously, and I've converted it now to use a persistent volume claim. You can see this pod spec is now completely portable. I've removed any mention of a node name and I've removed any mention of a disk or a path on a specific node. I've replaced it with the name of my persistent volume claim, and in my persistent volume claim, I'm just specifying some generic parameters, such as access mode and capacity and the storage class that I want to use. So now I can take this spec and I can run it on any cluster and I can run it across any environment and I don't have to change anything in the spec. It will just work. So now on the administrator side, this is where I define the specific storage that is available in the specific cluster. In this case, I have to specify the storage class that this persistent volume belongs to. I specify that this volume is a local volume and you can access that disk at a certain path. And then there's this third new argument to persistent volumes called node affinity. So don't worry about the really long field names. Just think of node affinity as a node selector and we are basically saying we want this volume to only be accessible on nodes that match the label and key matching that I have expressed here. So in this particular example, I'm saying this volume can only be accessed on a node that has a label with the key kubernetes.io slash hostname with the value node one. And actually, because we're using labels here, this node affinity can be expanded to support more than just local volumes. It can express any arbitrary topology that your volume might have. So if you created some crazy volume that is only accessible on three nodes, you can specify all three nodes here. You can, instead of using hostname, you can use key equals rack in rack one or rack two. This is a very powerful notion that can be supported and expanded beyond local volumes. So to summarize what we have implemented so far, we first introduced this feature in 1.7. And in 1.7, what you are able to do is you're able to create a local persistent volume type and specify a node affinity for it. And the scheduler is smart enough to read that node affinity on your persistent volume and schedule your pod to the correct node. In 1.9, we made further improvements to the scheduler so that the persistent volume claim binding also happens during pod scheduling. So what happened before is that the persistent volume binding would happen independently from when your pod is being scheduled. So it's very possible the binder could have chosen a volume that can't actually run your pod or could have chosen a volume on a node that couldn't actually run your pod. But now in 1.9, we improved that a lot better. So now the volume binding decision will also take into account your pods, CPU and memory resources, node affinity policies, pod anti-affinity and affinity, node tains and selectors and so on and so on. It's all integrated together now. So to basically summarize what this feature gives us is it gives us a portable, consistent user experience across different clusters and different environments and also across local and remote storage. We've added a general mechanism for volume topology and putting this all together, we lowered the barrier to support these distributed stateful workloads. So now I'm going to hand it off to Erin who's going to talk about another feature we added to help support these workloads. So in addition, whoa, speaker, to the local persistent volumes, it might be that you need to keep it local. It's not like you work for the NSA and you put all the top secret data out on NS3 volume for the world. So in addition to having local, the Kremdolo Krem is really having local raw. So a lot of applications can actually use, have the performance benefits to do this. Though it's not completely included in the 1.9, we had some specific goals to expose raw block devices, not as mounts but actual devices within Kubernetes, enable durable access. So what happens when the lights go out to make sure that our data is there and it's secure, provide flexibility for users and vendors to support all storage types. Prior to 1.9, all volumes that were created in Kubernetes file system was always applied to them. Even if they were started off as a block device, it ended up as a file system. So there was a lot of work, I don't know if you were able to make Mitsuhiro's talk at two o'clock, talked about all the work that had to be done to enable that to happen within the flow. And the last goal really was to break GitHub, right, Michelle? Yeah. So if you ever wonder how exhausted the community is in Kubernetes to make sure that we get things right, we have an incredible amount of conversation. We started within a Google doc, eventually moved it to a PR and eventually broke GitHub. There were so many comments within it. But storage is nothing new. A lot of the problems that we're solving, though unique to Kubernetes are still important and so feedback is always requested. So I wanted to just quickly go through so we have time to see Michelle's demo, what these API changes we had to do for block to be able to support that. So let's start out with the admin since we're only supporting static provisioning in 1.9. It starts with the admin creating a block device and then indicating what volume mode that they want that volume to be consumed as and this is block. Devoid of specifying the volume mode, it will default to file system which is the expected behavior today. Now the users also put volume mode block. This allows us to be very intentional about how we want to consume the data and to make sure that I've asked for block, I expect block to be considered on the backend. The other changes you'll see in the far right corner is the volume devices. If you're familiar with pods and setting up your storage before, if you're using a file system, you would put that it's a volume mount. If you're using a block device, you put volume devices along with the path and the container on the actual device. Now for the demo. All right, thank you. So I'm going to demo and hopefully show you how easy it is now to switch between remote and local storage now that you can use both of them with the same persistent volume claim objects that you used today. I've taken the basic replicated MySQL example straight from the Kubernetes website and I will go ahead and load up my cluster now. Let's see. This is hard because I can only see, okay, maybe it's better if I like face the thing. I'm just going to do the demo like this. All right, all right. Where's the minimize button? Can't see it. This is the monitor we all dream of at home. Okay, let's do that. Too big. I know. All right, so let's take a look. Okay, I've, oh, can you see it? It's slightly, that's okay. It's just one character off the edge. It won't hurt anything. So I have my two files here. The first file, one file for specifying remote storage and the second file for specifying local storage. Let's take a look at my remote file of my stateful set. Can you see the colors? Yep. Okay. Not in the back? Well, I'll upload this on YouTube. All right, so you can see I've named my stateful set my SQL and I have specified three replicas for the stateful set. And if we look at the bottom of the screen here, this is where I define my volume claims in the stateful set. And you notice here that I specified my storage class name to be standard. And then I've specified I want 360 gigs. So standard in my cluster refers to a GCE remote storage. And I've already deployed this cluster, or sorry, I've already deployed the stateful set. So let's just take a look quickly. Okay, so I have three replicas running. And if we look at the volumes that those replicas use, you'll see that there are three persistent volume claims, one for each replica. You can see that these persistent volume claims use the storage class standard. And if we look at the details of one of the volumes that the claim is bound to, let's take a look, let's pick one. You will see that this persistent volume is a GCE persistent disk. So this is, and the storage class is standard. So this is my remote stateful set. Now I want to launch a similar stateful set, but change it to use local storage. So I will quickly show you the diff between the two.  This looks more like a diff. So you can see I've made some cosmetic changes. I just changed the name for the local one to call it MySQL faster. Other than the cosmetic name change, the most important change I've made is I've changed the storage class name. For the remote spec, I use a storage class name called standard. And now for my local spec, I'm using the storage class name called local scuzzy. That's the only change I've made to this stateful set between the remote and local storage. So if I go ahead and launch this stateful set, let me start some watches and let's go ahead and create it. So you'll see that the stateful set controller has created the first pod in the stateful set on the left, and it's also created the first persistent volume claim, which immediately got bound to a local persistent volume on the system. And now the volumes are getting mounted in the first pod and we're waiting for them to become running. Now the containers are running, so the stateful set controller creates the second pod and the second persistent volume claim, which gets bound, then it goes ahead and mounts the volumes and brings up the containers and then waits for the second set of containers to come up and it's waiting and coming. It's kind of slow.  I didn't even see it. Okay, it brought up this. Oh, so even it's now on the third replica now and we created the third persistent volume claim and, oh, everything's up. Okay, that was fast, faster than I could talk. So if we look at, let's summarize all of this. If we look at all the pods on the system, you'll see I have six pods now, three for my stateful set that was using remote storage, three for my stateful set that was using local storage. If you look at the persistent volume claims in my cluster, I also have six, oops. Three that are using my remote storage, which is a storage class standard and three that are using my local storage, which is local SCSI and now if we take a look at one of the persistent volumes in detail, which contains the actual storage information on the particular cluster, we'll see that this is a local volume. It has this path, mount disks, SSD one. It's in the storage class name, local SCSI and then because this is an alpha feature, the new node affinity field has to be specified in an annotation, which is kind of a pain, but it will become a field in beta, but here you can kind of make it out. This is where we specify the label of kubernetes.io host name in values and then this is the name of my node. So there you can see, so that's the demo, there you can see how easy it is to now switch between local and remote storage just by changing the storage class. This is a huge improvement from what you had to do before, which is you had to use a completely different method. You couldn't even use persistent volume claims. You have to write your own schedulers, your own operators, your own, all this extra infrastructure just to use local storage and now you no longer have to do that. So let's go back this, where's my mouse? All right, all right. So now I would also encourage you to try it out yourself. There is a user guide at the end of this presentation that will show you how to bring up and enable this alpha feature and to create some local volumes. Take existing stateful set examples you have or any helm charts you may have, just change the storage class name to use a local storage class and then just experiment and give us feedback. All right, I think Michelle already gave a really good summary about why local persistent volumes are important and the work that's been done to have noted affinity and smarter scheduling and also how we're going to be provisioning rock block volumes as part of the API. The only plugin that made it into 1.9 is for fiber channel but there's a bunch more on the way. And all of these are building blocks to allow us to fully enable stateful distributed workloads. So in the future, there's still a lot of work to do. There is a groundwork already set forth, as Michelle mentioned, as part of the topology for dynamically provisioning local volumes. We also need to have dynamic provisioners for robloc volumes for these really to become fully utilizable and scalable within the environment. And then the plugins, these are just some of the plugins that we're looking at updating with this support. And then lastly, the CSI interface, I don't know if you guys have heard of that. It's the buzz around storage. Also, we'll need to be updated for block devices. These two links will guide you on GitHub on how to set up both of these. So please check them out, again, give us feedback. And if there's any questions, we would love to take them.


It's going on everyone Sam here with late in sports cards rip in 22 23 We need impeccable basketball hobby three box case break number 40 tiered random team style There's a look again at your random results as always you can find those on the websites under the results tab As well as a Lincoln chat. So good luck everybody. Oh, you're done with cops, right? You're just on to uh All right, here we go impeccable tiered random team style Thanks again everybody for uh jumping in this brick appreciate Got our an empty lid Nine cents a minute just to call in to hear the sports scores and uh 275 is Daven Mitchell on your stainless stars for the uh Cavaliers nice one there All right, Jalen Williams 420 That's one there. It's up Danny watching from Oster. Love dude. Nice one there for the uh thunder amperity simons 30 of 30 green for the uh blazers Got a cam thomas 48 of 99 for the next Avery johnson nice one there that is gonna be 31 of 99 for the spurs Avery johnson with a uh bible inscription as always Going to the magic Caleb houston 32 and 99 on the floor colored rpa congrats Orlando. That is uh Bradley are I might have said piston so that's uh Stopped high uh, we've got johnny davis 35 of 99 that's going to the wizards on the rookie auto johnny davis Uh orange is going to be a 17 of 25. That is a terry eason For the um rockets nice one there houston terry eason That's uh jersey number. I believe yes 17 of 30 uh 25 that is jersey number very nice And go to chang s and the thunder jalen williams 88 of 99 nice j dub On the uh rookie auto Grats on that one very nice very nice very nice on the j Uh, thank you there chris picking up the saints down to just two teams to go Texans and titans two afc south teams Two group rake spots left that night everything else is now sold out. So thank you all That is awesome. Hey, thanks ty doing it's 100 likes appreciate you all right 36 of 99 is keegan murray stainless stars rookie for the king's second one check one thing A little optimistic on that one uh jordan pool 51 or 61 of 75 for the wiz And yonte murray 249 nice one there for the hawks Gots 91 of 99 that's going to be andrew wiggins Can't be worse than four like stuff Still mad about that that freaking desmond radio. Yeah, it's off about that tiny Lonnie walker indelible ink, uh 22 and 99 for the lakers. Nice one. He just signed summer nets I think let's see if something that's Nice one there That's lakers got going to the bowls bj armstrong canvas creations 59 of 99 got shidehound bj armstrong Next up. We've got a christian brown 95 of 99 on the auto Haha, what up elon appreciate you buddy Will pick it up the Texans. Thank you will m just the titans available everybody that is it 100 gram is i've had now That next one up. We've got is 21 of 25. Oh shiig bhaji nice one there for the um jazz there you go, utah very nice grads utah And last card of box two jaylon williams again two of 25 this time very nice Congrats on that one there Going to the thunder there you go thunder Seriously come on now Yeah, never gonna have the one that you need to see this one. I'm gonna say yes, dude. I'm pretty I'm I'm much more confident. I'm yeah, I would Much more confident on that one Last one here Now I feel better because there's two of them. So I feel better. I feel better sending it back x Yeah, good to see you two elon Hope you're doing well, buddy bar card and empty empty All right joel mb to 20 the uh sixers and two of 30 ant man anthony edwards for the uh symbols Got jimmy buckets nice one there 91 and 99 for the heat One pack of reveal full of jen ivy auto.  That's rough elon There's glenn rice 44 99 and immortal ink for the heat I could always see if you could try to replace it to elon Here you go heat got uh rookie autos gonna be dalin terry 97 of 99 for the bulls This is sick. I'm one of my favorite players right here. It's gonna be rip hamilton 2 of 10 on the watercolors for the pistons That's nasty going to bradley. Congrats bradley 2 of 10 on the rip ucon legend ncda champion rip hamilton Uh, we got a redemption that is gonna be a tyrese halibur and watercolors signatures. I'm assuming that's gonna be the uh Pacers I just want to double check that Leave a voicemail. Hopefully they'll get back to you on that. Yep. Pacers card number seven I'll be going to the pacers nice one there And really cool one here impeccable stars.  Yeah All right, we've got nice. That's gonna be chat home grin 15 of 20 going to the thunder chang s killed it this break. Nice one there, buddy 15 of 20 chat home grin Very nice on the bar card the nba once around to find silver. All right, no quick recap here Pacers uh tyrese halibur and richard hamilton gallantary glen rice Ocha egg bhaji christian brown bj armstrong lani walker terry eason johnny davis kaleb houston avary johnson two jaylen williams autos 225 and 88 of 99 to the thunder we had the uh chat home grin 15 of 20 for the thunder on the bar card And then we had uh two of 10 larry legend larry barry going to seize I'll do it for the break guys. Thanks again for the film coming up next is football


The Acting Inspector General of Police, Mr Kayo Diegwetogw, has ordered commissioners of police and supervisory assistant inspector general of police to replace responsive policing during the Salah festivity. The false public relations officers, CSP Ulumu Iwa Adeyjabiz, said this in a statement today in a bouja. The IG also directed the CPS and AIGIS to configure the security architecture in their areas of responsibility to ensure adequate security throughout the festivities and beyond. He also won the personnel to be disciplined, professional and also respect the fundamental rights citizens as well as conduct themselves with decorum and alatness. He pledged that the force will unless all available asset included working with relevant group, association, sectors and security agencies to build security in the country.


Welcome back. The first project is the Sandhi, mentored by Mr. Aviral Chandra. The project in charge is Mr. Kiran Kishore. Sandhi is a graphical programming language designed for control system simulations and real time system control. It offers simple abstraction and massive computing ability to the end user. Hello everyone. I am Rishabh from Project Sandhi, a part of the FOSSI team. Our group FOSSI is a group which aims at providing and enhancing the scope of open source software. So one of such attempts is our project, Project Sandhi which you can see is envisaged to be an open source alternative to LabVIEW. Now most of us are familiar with what LabVIEW does. It is a graphical programming software used for A, control simulations and B, data acquisition. So such things are very enticing on first look but when it comes to the cost factor, it is costly. It costs around 60,000 rupees and the renewal charges are around 10,000. So here is an open source attempt to bring down that charge and that cost of, obviously it will be free of cost. The essence of graphical programming is what we have tried to bring in our software. Well, what graphical programming is, it functions as a sequence of blocks.  So you do not have to write a single piece of code for your software or program. So let me give you a slight demo so that you get an essence of what we are doing in Sandhi. So this is how our software looks Sandhi. Here you can see is the main pane. In this I have made a simple program of x raise to power y, a simple power function. As you can see here we have got a block, a power block which has got two inputs 25 and 2 as base and exponents and we have a number sync. That is sort of a printf statement in your command line. So when we execute it, we get the output 625. Alright, now we have incorporated the features of blocks and flow graph in our user interface. Now everything in Sandhi is in the form of blocks. It can range from as simple as an addition block to something as complex as a Kalman filter block. Everything will be in the form of blocks and they will be connected so that we get a total flow graph as our program. Now how we structured it? Well we obviously did not start from scratch. That is the beauty of open source. So we used a software called GNU radio. It is an open source software used in the field of digital signal processing. It also runs in the principles of blocks and flow graphs. So we took that as a basic platform for our software and then we expanded over it. We deployed more and more because and we chose this thing because it facilitated very robust system of block addition. So we can add to the functionalities of our software of GNU radio sorry and create something that is relevant to an entirely different domain, a domain of control engineering. Now GNU radio is coded entirely in C++ but it allows you to code in Python as well. But actually the control computations and calculations in control engineering are way complex than they normally are. So coding entirely everything in C++ and Python were out of time and a lot of lines of codes. So we took a workaround. We used the power of Sylab. It is another open source software which is taken as an alternative to MATLAB. So we have Sylab as a back end for doing all the computations. We have GNU radio in the front end for giving us a wonderful GUI and in middle we have Python to interface both of them. So the flow goes like we have a GNU radio software. The values are fed from this brought to Python workspace. Then these values are fed to Sylab and the Sylab returns the output and we then push it up to the mainframe. Now the purview of our work. Well we were four people. I have some earth with me. I have a Kansha with me and I have a noop with me. All of us were working on different modules. My task was to deploy more, more custom blocks so that they fit in the domain of control engineering. Summers was working on plots. A Kansha's work was in interfacing more and more hardware devices. Right now only one hardware devices were interfaced before we came. That was SBHS and she has been working on devising strategies of interfacing more and more hardware devices and then we had a noop who was working on interfacing this and the framework from browser. So the compile file that you saw there could be actually triggered from the browser and the output could be seen at any remote location and that's a larger aim of bringing this software forward in the field of virtual labs. So here is my task. First of all I begin deploying a generic Sylab block. What this block does is you give it any Sylab script. It will execute it for you and print the output or sorry dump the output into the flow graph. Now you would ask why code? Because it is meant to be a graphical programming software. But the answer is that right now it is in a very nascent stage of developing. We don't have all the blocks available for us. So a lot of things that should be done should not be delayed only because we don't have enough blocks. So for simple purposes you can use Sylab, take its output, fit into the flow graph and do whatever you want to do with it. Let's have an example of this. This is a very simple Sylab script quite similar to Matlab. Here I am printing and plotting a sine wave. This is the block and here we feed in the parameters. You can see I have mentioned the path of the Sylab file and I've also mentioned the variable whose values are to be dumped because you can have more than one value. You can have x, you can have y, you can have z. So the variable that you specify here, that value will be dumped to the flow graph and then here is a normal plot thing that plots the values for you. So these are the two blocks, two plots that we get. The first plot, this one is the one that has been generated by Sylab because Sylab also executes that flow of control and this is the values that have been dumped to the Python workspace to the flow graph. Well, this has to deal with plots. That is what we have done for the debugging purpose. If it is a real-time plot, what is changing here? I don't see 200, 400, 600, 800, 1000 changing. Sir, we are coming to that. That will come on the plot section on which he has worked. We have got a lot of plots. For the demonstration purpose, I have used this plot to show to you. He will come on to this when his part is there. So that was the generic Sylab block. This is the snapshot. Now let's come to Merdley order transition block for continuous simulation of a system. Well, before we came here, we had a block called C-Sim block that was used to simulate plant and controller dynamics together and simulate the entire system. Well, it worked totally fine. The only glitch with that block was that it supported only plants of order of transfer function of 1, but we wanted more. We can have it up to any level that we wanted. So we have now added functionalities to this block. We have made it in two versions. In the first version, you can specify the coefficients of the numerator and denominator of the transfer function. So if your transfer function is like a1x plus a2 upon b1x plus b2, you can specify the coefficients a1, a0, b1, b0. So that will define your transfer function. The other version is you can input the entire transfer function in the form of a string. Now, why did we have two versions? Well, the first version facilitates the use of sliders. So suppose in runtime you want to vary the value of some parameter, say b0. So we can have sliders and we can vary its value as per our needs. So that is why we had two blocks. Now the limitation with the version of coefficients is that it supports up to three order. And I think that is quite enough as per the contemporary needs are there. It can be expanded without any trouble. This is how the block looks. We have got these parameters. Definitely it looks ugly. If you want a beautiful version, you can insert the entire transfer function in the form of a string. Here is a polynomial plotter block. Often and on the people of control engineering and general electronics people, they would need to know the behavior of any polynomial, say x cube or x square anything in a given certain range. So this is the block that facilitates it. You just provide the value of the polynomial, the expression for the polynomial and you specify the range of values over which the plot has to be plotted. So the range for this is minus 40 to 40 and it plots it for you. This Crete time simulation block. I am pretty sure the people of electronics background must have heard about something called Z transform. Simulating systems are discrete timed. So this block simulates a system of discrete domain. Now the math behind it is something like this. So we have got a transfer function that defines your system. Then we have got an input in the form of in time domain. What we get as an output is another sine wave, another output signal in time domain that is the response of this system given the input. I will show you the working of this block. So this is the discrete time simulation block. Here is the transfer function I have fed. Again I have to fill in in the form of the coefficient. We have fed in the numerator, we have fed in the denominator and we have connected a input as an input and the plot thing plots it for us. This is the response. ECP will must be familiar with response. It will plot according to it sir. You give anything, it accepts only string values. It will pop out an error. You want me to type your name? It will simply not run. Sir we have not yet worked on the entire GUI fine. I do not know anything about control systems. Can you feed in some values which give me minus infinity and plus infinity as whatever the value of the plot? If you are giving it an input it will behave according to the output sir. Correct. So tell me I have generate some number there which creates minus infinity and plus infinity on the plot. Right and more or less sir whether the infinity is plotted or not is not our issue. It is the issue of the plot. All right. Everything that you I try. Definitely. As a user. Definitely. This is not my infinity and minus infinity. Well we have another block WX GUI sync that will plot all the things for you. Give me straight line. Whether you get an infinity or not depends on the transfer function that you are feeding. So I cannot because I am not a control engineer. So I cannot predict on which values we will get infinity. So we have sir we have tested it up to transfer functions of order 10 and we have got good enough plots. That is not good enough. Give something to the world. It has to be robust. Definitely. Robust means I should do everything including I think your point is very valid and we were confronted with the situation whether we should go on adding more and more functionalities or we should develop everything together entirely full proof. So we were guided in such a way that we had taken a step towards making things more and more functional. Right. As you can see the GUI is very cramped. Okay. It does not look very good. It has to be improved. So there are certain things that need to be done and beautified and more function and you know spreading of these things can be done. But right now we have just added more and more functionalities to this thing. You are a good talker. No, no, no, sir. That I can see. Okay. That does not absolve anyone from the responsibility of writing well tested code. Sir. And because of. That everybody knows who has worked. Definitely because of such interruptions by our guides we have been able to do this thing. This is good. Okay. Now Samath, it is your part. He will explain more about the plots. All right. Before I start, I would like to stress on the fact that it is still in the development phase. Everything that we worked on is in the development phase. And our focus was more on adding more functionality rather than giving something which can be given out as a product outside to the world. I basically dealt with plots in Sunday. The first one was my major task. I have been working on a generic plot block which would give you more or less anything that you try to plot. But again, there is as we found an error infinity. It does not show that you are plotting an infinity. So it is just in the development phase and then we are trying to accommodate more and more. Either we will shift to a plot because this plot is basically a real-time plot. You feed in values, it will plot real-time. That is what its main functionality as of now is. If it is a real-time plot, if I keep on feeding it 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, up to 1000, does my Y scale automatically change? Yes. It changes? Yeah. There is an auto zoom feature. There is a, there is also a feature. No, does it change? Yes, it does. So when after going up to 1 million, I start ramping it down. Does it change back? Yes. You can also view whatever happened at time t equal to 0 to till time t equal to 1 million. And you can view and it will fit whatever you have given in the screen, whatever range is there in the screen, it will demonstrate you according, it will scale it down accordingly. According to whatever is visible. Yeah. It will scale it down accordingly. Good. So, yeah. That is what I said. I have been working on something which is generic so that you can use it. And also, we have created two versions of it. And first of all, I would like to tell that initially when I started working on this, we had bugs. This module was already existing in Sandhi. And this thing had bugs. The first and foremost was that first of all, it was not giving you real-time plots. A window used to freeze. And that bug was fixed. And then, if you suppose want to change, if you have a slider and if you move the slider to adjust the values, then they were not getting deflected onto the plot. So, that is what we implemented. Now, again, it is capable of handling real-time plot. Now, it can plot the output from almost all the blocks. I would like to say, I forgot the part where it says almost all the blocks. Then there was a certain extra features added where one is auto zoom, the other is the history part. Like from t equal to 0 till t equal to 1 million, you can view the entire plot wherever it goes. If it is plotting real-time, you will be able to scroll it as and when the values are accommodated. So, this is a snapshot of the working of the plot-sync block. I will demonstrate that. So, this is how it works. So, you are getting the values. It is changing the scale accordingly. And then once, now this is the first version wherein after it reaches the end of the window, it will move forward and you will not be able to view what has happened in the past. So, this is for one use and that the other version is where you have the scroll bar functioning, you can view back and forth. Now, why do we need two plots? First of all, the Z-transform value, this interval where we are updating is very small. But then the Z-transform, the block that we had. Yeah. So, this is one version of it. The other version was where you have a scroll bar functioning and it gives you proper plots. So, that was the major work that I had. Now, the challenges that I faced was there was no proper documentation of GNU radio block. GNU radio software. So, we had no clue where to look for. First of all, I didn't know what the problem was. The problem was in a way defined as that the blotching block is not working. Now, we didn't know which files to look for, what to look for in those files and what to change. So, it took a good amount of time to can through all the files and find the files which are associated with the lot block, modify those files accordingly and then bring about the change and that is how we got it functioning. So, that was the entire work which is related to the blotching block. Now, the bode block. Now, from whatever I have learned about control systems in the past one-one-and-a-half month work, that everything revolves around transfer function. And you want to visualize some plant, a system, you model it using a transfer function. Now, transfer function looks like basically a polynomial function. Now, what you want to do is you want to see it using different plots and you want to like literally view it as a graph. So, that's what the bode and the plots, the blocks which I am going to demonstrate they will be doing. One is the bode plot. Now, why do we need the bode block? The first reason is that it is capable of plotting the frequency response of a given transfer function. Now, what is frequency response? You have an input, you have an output. Now, if you do a change, certain changes in the input, how is the output going to change? So, that's what the bode block represents. So, it has both magnitude and phase plots. It is something which belongs to the control engineering domain and if a control engineer is sitting here, then I am pretty sure it will be able to realize what exactly I am talking about. So, I will demonstrate this software is basically focused on work, control engineering domain. So, this is the input. You give it a normal transfer function which is in the form of polynomial. It is unlike what Richard had done, he had given coefficient and was looking bulky. But here, you just give it a polynomial and it will work. And again, this script is run using silas and if at all there is an error as if you give say a random string like Avinash, then the silab won't run it and then again, it will not work. It won't throw an error, but it won't work. This is again a screenshot. And since this is graphical, how do you handle unending loops? We don't have loops. There is no loop block as such as now in Sunday and in Sunday. Control systems normally have a feedback loop, no? That's what I am telling you that there is no functionality of loop as of now. We don't have, we haven't dealt with it. It's not our, we weren't assigned to work on that. It's somebody else who's worked on it and he's our mentor. So, we won't be able to comment anything on that. Yeah. So, this is again a snapshot of the Bode plot. Now, the Nyquist plot again, it's again a plot which is used to visualize the transfer function to assess its stability to find the region of conversion. It is similar, let somebody else talk about something. We will run out of time. We understand what you have done. Okay. So, then again, you have full zero block and then I would transfer it to, yeah. So, I'm Anup. I've worked on triggering these scripts to the browser what we just saw. So, initially I worked with the SBHS as a single board heater system. And the main aim was to access the graph, I mean give heat and fan values and generate the graph on the browser. So, here we have a three tier architecture. We have the client, the Google App Engine and server. And the server interfaces with the single board heater system. So, what happens is the client sends a request to Google App Engine. Google App Engine picks up the heat and fan values and forwards it to the server. The server sends the heat and fan values to the SBHS. The SBHS upon receiving heat and fan values starts changing its temperature values. These temperature values are picked up by the server and returned to Google App Engine, which returns it to the client. At the client side, we plot a graph using Google charts. So, this is the basic approach for handling the SBHS. Yeah. So, this is basically how we designed it. This is the client page where the client can enter heat and fan values using the knob input. And upon clicking submit, he gets a sample graph something like this, depending on the heat and fan values that was submitted. This is another graph that we got for a different heat and fan value. Now, we move to a remote triggering of the Sandhi framework. What we earlier dealt with was the SBHS. Now, we were looking at generating plots from Sandhi on the browser. So, the main objective was to be able to run Sandhi framework on receiving a request on the browser and sending back the actual plot onto the browser. So, what we have, this is the architecture we have used. We have a client and a server. And the server, client sends a request to server. Server makes use of an XML parser to modify the actual flow graph that was on the server. The server also maintains a mapping of different directories which contain flow graphs. And it invokes the appropriate flow graph depending on the incoming request. Once the request comes in, the server executes the flow graph and sends the response back to the client. And again at the client end, we use Google charts to render a graph. So, now we have the issues like sending parameters to the flow graph. Since our flow graph is already defined, we have to have some way to send parameters to the flow graph. Who designed the XML? That came with GNU radio. So, the GRC file itself is an XML file which we modify to send parameters. Yeah, so we modify the GRC file. The GRC file is basically an XML file. So, we modify the XML file and send the parameters that the user requested. And now we have to retrieve the file and send it back to Google charts. We faced with two situations. One is with the plot sync and one is with the file sync. In plot sync, the file is sent to STD out. So, that's where we pull it out of and send it to the browser. In a file sync, the values are pushed into a file that was defined on the server. So, we process that file to get the values. One sec. What about a T? Oh, both. Yeah, then you can pick it up from either place, because the same values are going to plot sync. Am I allowed to do both? Yeah, you are allowed to do both. Yeah, you are allowed to do both. This is the sample application of that. We have a client page where you can select a sync and the type of flow graph. Currently, it was only designed for two flow graphs, the square and the generic. So, in the square block, when I select square, it asks me for the vector values, which is 1, 2. I've given 1, 2, and minus 2. And then for now, we just have a static flow graph being displayed on the browser along with the plot. The GUI is in work in progress. So, this is the flow graph. This is exactly the flow graph that was there in Sandhi on the browser now. And this is the corresponding plot. So, you have 1, 2, and minus 2 being plotted repeatedly. Yeah, this is for the generic block now. In the generic block, you can also specify which function you want to use. Like, here I'm using the absolute function. You can also use sine, cos, etc. So, yeah, again, a flow graph is displayed. And this is a corresponding plot of the absolute function. Now, go to action. It asks us to deploy a block, a standalone block for a MIMO device. Up till now, only one device was interfaced with Sandhi, that is SBHS, and that single output device. But now, I was supposed to take up multiple input, multiple output device. So, the requirements were multiple port mapping, handling data from multiple channels, and we had a quadruple tank and reactors available that we could have interfaced. A quadruple tank system. It's a multi-variable control process in which we have six outputs and two inputs. The two inputs are fed to the two pumps, and we have to control the water levels in the two tanks. And the six outputs that we get are the four flows in the four tanks and the two water levels in the lower two tanks. The earlier approach that we took up was to use a DAC card to acquire data from the device and use comedy drivers to interface the device. A comedy block. We could deploy a comedy block in Sandhi, and then we could easily access the drivers to collect data from the sensors that are the output from the quadruple tank. DAC cards, data acquisition cards, function as a device that digitizes incoming analog signals, signal conditioning, interface sensor output with the system, comedy, control and measurement device interface that provides drivers for a variety of DAC cards. So, there's a list of cards that are already being interfaced and the drivers are available. Why did we choose Arduino? Because the DAC cards weren't available to us because of the ongoing research. So, we had to take up another approach for it. So, we used an Arduino to interface it because it provided with the six analog pins that could be helpful in acquiring data and the digital pins as well. So, we used serial communication then. We decided to take this up for acquiring data. Then interfacing Arduino and bringing it to Sandhi framework. Reading sensor values, we had to establish a serial communication. So, we started off by interfacing two sensors that the Hall effect sensor and the thermistor with the Arduino and finally bring it into Sandhi framework. So, our task was to first check that out. So, we decided to have a standalone block in Sandhi that could read the values from the sensor and then we could plot those values using plot sync. So, this is the diagrammatic representation of the same. We had the two sensors and we interfaced it with Arduino and then finally brought it to Sandhi framework. This is how the block looks like and these are the two values that were plotted from the two sensors, the Hall effect sensor and the thermistor. Interfacing, we had the same approach. Could then be followed for interfacing the quadruple tank as well, just like we interfaced two sensors. So, we could try the same thing with the quadruple tank sensors as well. The other thing that we did was facilitating sliders with SPHS. So, up till now, we had an SPHS block but we had to give feed-in values with separate blocks, the fan value and the heat value. But now we had sliders. We had sliders to input the fan value. So, this is how it looks like. We could just pass it as a parameter to the SPHS block and now the fan value could be changed from here itself. I would like to conclude with the future scope. First of all, the GUI doesn't look that good. So, the next task is to beautify this so that people use it because if it doesn't look good, nobody is willing to use it. The next task is to whatever functionality has been added has to be properly tested with almost all the inputs and considering boundary conditions and give out proper errors instead of code, I mean errors in the form of code. Next one would be facilitation of multi-channel plots and plots. As of now, you can only plot one source. What if you have two sources or three sources? What if you want to view all of them together at the same time and they're interrelated to each other? At that time, what you do is that the next thing that we can go forward for is a multi-channel plot thing. Now, again, we need to have more hardwares which need to be interfaced with Sandy so that this can be used across all the colleges as it is being planned to incorporate it with virtual labs. And the one more thing is that as of now, the security aspect of using Sandy via the browser is not touched upon. So, it'll be very, very good if it's secured because otherwise people, if it's not secured, you won't use it. So, that's the end of it. And I would like to tell you that five experiments as of now have been converted from LabView to Sandy using the tools that we have developed over the past one and a half months. So, that is there and that's it. I have one question. Is nothing similar available on the web? It is something which has been used, which has been forked from GitHub and we have modified that. But there is nothing similar for control engineering.  You don't have anything which can do such things. Now, what is the stage at which Sandy is there? Does the LabView product, for example, have a pump? And their graphical representation of pump is some rotating thing. Is that what it is? When you say my, our graphics is bad? Yes. The answer is yes. The LabView is at a level where you have, when you're talking about a plant. Where instead of a plot or instead of something, I have got, I can see that rotating animal or rotating pump or whatever it is. Whatever SbHS, I see a graphical view of SbHS. And apart from that, there is a temperature which says, is that what you are saying better? I'll tell you about the graphics. Suppose you have a knob. You can rotate that knob in, like, you can literally get the feel of rotating a knob when you are using LabView. But in our case, we just have a slider. You have to slide it. And there are various other functionalities which are there, like, which are graphically appealing to a user, which are there in LabView, which for a person who's working on it might not require, but they're appealing to the user because they look fancy. So that's what we're trying to tell you that our graphical user interface is not that, at that level where LabView is as of now. And also, if you click on a particular block of LabView, you can view what are the internals of the block. You can go deep. What if that block is composed of, say, sub-blocks, you can view what is there inside the sub-block to an extent or gives us. And when you say view, it means physical pictures. It's like you have a circuit. You can view the circuit diagram. Suppose you have an SPHS block and you have a lot thing. So you put a wire over there. So if I want to see what is there inside SPHS block as of now, you can't do that in this. But LabView, if it has an SPHS block, then it will allow you to do that, go into details to see exactly how it is. And one of you, when you say you are integrated, triggered using web, that is the first step towards giving a graphical representation on the client side so that I can use it to trigger the server and get the output. Is that what you're saying? When you said you integrated Sandeep with a browser, is that the first step towards giving me a client-based application with all the graphics? I can turn a knob.  That has to be done in Sandeep. This is just for remotely triggering the framework. Suppose you have the main aim was your virtual lab. So I'm sitting right here and I want to do an experiment with a device which is there in IIT Bombay. So now I want to give a heat and temperature value and I want to see the graph, but I don't have the device and I'm not even willing to pay for the device.  So that was the purpose of giving it to a browser.


So, in other words, there will be another indictment and you'll think there'll be Americans involved. I wouldn't be surprised if, for example, this week on Friday, not knowing anything about it, but Friday is the day that the grand jury indictment has come down. What began at all. It's the investigation right now, but I do think also if anybody from the Trump family, an extended family, is going to be indicted, it would be in the final act of Mueller's investigation. You know, let's be specific, this is really good news for a lot of people around Donald Trump. Well, the day of reckoning has arrived and the media isn't taking it too well. Over at MSNPC, they're in tears and over at CNN, they're clinging to hopes of mystery indictments for crimes they haven't even made up yet. The levels of delusion and denial that we're witnessing here are certifiable. Ken, my biggest question, and I'm going to have this along until somebody answers it. How can the president be pointed to as leading collusion with Russia of aiding a Russian conspiracy to interfere with our elections if none of his henchmen, none of his children, none of his associates have been indicted? It's pretty simple, Chris. Everything that you people have been spewing for the last few years has been completely made up. You manufactured a conspiracy to explain how you lost the election and how it's blowing up in your face. You people literally thought that Trump was a Russian agent. How utterly deluded do you have to be in order to accept that as a real possibility? It just further proves that the media is more interested in advancing a partisan agenda rather than just reporting fact-based news. Because we know about the meeting in Trump Tower, June of 2016. We know about the meeting in the cigar bar with Kellemnick. We know, my God, we know about all those meetings with Kisselike at the Republican Convention in Cleveland. All these dots, we're now to believe don't connect. Gee, Chris, maybe that's because the media misrepresented all of those stories. For example, the hotel meeting story that amounted to nothing. We find out later that there was four representatives from Fusion GPS there. That makes it seem like the entire thing was a setup. We don't know that it was a setup. Maybe that'll be in the report. But it just goes to show how people like Chris Matthews had a narrative and stuck to it despite all other information that was available. He makes it sound like the hotel meeting was some sort of slam dunk, but that just isn't the case. That's why there aren't any indictments. Like I said, we're going to have to wait and see what's in the report. But CNN, MSNBC, and all these other networks don't exactly have the greatest track record. After all, many of them are currently being sued for one of these fake news stories. And all of them willingly helped Jesse Smollett perpetrate his hoax. The common thread with all these stories is that they all have partisan political motivations. The biased reporters want the stories to be true, and so they only report the information that confirms that. Our job tonight as a country sort of, or at least what everybody in the country is going to be doing tonight, is trying to figure out what it means that the report of Special Counsel Robert Mueller has finally been submitted. Do you see that? She's crying. It's like election night all over again. Journalists don't cry. A journalist is not emotionally invested in their reporting. This person, Rachel Maddow, is a DNC operative who is heavily invested in this story. Not just because their credibility is online, but because they're trying to get Democrats elected. The Democrats and the media are still holding on to hope. Just as I and many others predicted, as soon as the Russian collusion hoax was debunked, they would simply move on to a new manufacturer scandal that they could use as a weapon against Trump. Just as they were all so certain that Russian collusion indictments were right around the corner, now they're putting all their hopes on these SDNY investigations into Trump's business dealings. The most hilarious thing about all of this is that these people are all hinging their hopes on reassurances from Senator Richard Blumenthal, who's most known for lying about his Vietnam service. There's a strong possibility of additional indictments, including President Trump's family. One of these anti-Trump resistance news sites is actually ordering opponents of Trump to turn off the news, saying, quote, there are obviously more indictments coming. They'll just come from places like SDNY as opposed to Mueller, which we've explained all along. Turn off your television, stop posting inaccurate, no more indictment responses in my timeline. You're 100% wrong. What we're witnessing right now is a slow-motion version of what we saw on election night. Right now, they're in the denial stage, but soon that will give way to grief. One thing is for sure. This is a bad precedent being set by Democrats that when you lose an election, you simply try to imprison your opposition. Does anybody believe for a second that the Democrats or the media will go along with any of this if the tables were turned?


Disrupt the culture wars. One of the great challenges faced by Westerners who oppose the political status quo today is the way the narrative managers of both mainstream factions continually divert all political energy away from issues which threaten the interests of the powerful like economic injustice, war, militarism, authoritarianism, corruption, capitalism and ecocide, and toward issues which don't threaten the powerful at all like abortion, racism, sexism, homophobia, and transphobia. This method of social control serves the powerful in some very obvious ways, and is being used very effectively. As long as it remains effective, it will continue to be used. The worse things get, the more urgent the need to fight the class war will become, and the more urgent the need to fight the class war becomes, the more vitriolic and intense the artificial culture war will become in order to prevent political changes which inconvenience the powerful. This is 100% guaranteed, and what's tricky is that all the vitriolic intensity will create the illusion that the culture war has gotten more important when in reality the class war has. It's just a straightforward fact that the more miserable, impoverished and disempowered the public becomes, the more hateful and all-consuming the artificial culture war will be made to prevent revolution. That's what's been happening, and that's what will continue to happen. You can hate hearing it, and you can hate me for saying it. But it is a fact, and I think we all pretty much know it's a fact. So what's to be done about this? Obviously it's not an option to just throw disempowered groups to the wolves and ignore the abuses they're suffering under the directed hatred coming after them from the right. And obviously it's not an option to run to the other side of the artificial partisan divide and play along with the mainstream faction which says we should focus only on culture war issues, as in Hillary Clinton famously arguing that breaking up the banks won't end racism and sexism. As with most problems, the first step toward finding a solution is to bring consciousness to what's happening. Draw attention to the fact that marginalized groups are being used and abused by mainstream narrative managers to keep the public from turning their gaze on the abuses of their rulers. Draw attention to the way rightist narrative managers direct hatred toward marginalized groups to keep hatred away from our rulers, and to the way liberal narrative managers seize on that to direct their herd away from issues that can inconvenience the powerful and toward exclusive focus on the culture war. Stop letting people get sucked up into the performance and instead draw attention to what's really going on here.  Those are actors on a movie set! Can you imagine how hard it would be to get lost in the narrative of a movie if somebody was constantly doing that to you? After a while you'd stop seeing Oppenheimer and you'd only be able to see Sillian Murphy. Basically, all you're trying to do is take the emotional heat that's being diverted into partisan feuding over issues whose outcomes will never inconvenience the powerful and the slightest, and steer that emotional heat toward the people who are directing all this.   It's about as loathsome a thing as you could possibly come up with. They're pitting human against human at the expense of society's most vulnerable members and watching them from on high like Greek gods. Can you imagine anything more vile? Draw attention to how disgusting what they're doing is. Draw attention to how deeply evil this behavior is. Keep shouting in that movie theater and drawing attention to what's really going on to highlight how profoundly depraved these monsters really are. Draw people's attention to this dynamic wherever you see it. When right wing populists babble about LGBTQ conspiracies and shriek about wokeness, mock them for the ridiculous sheep they are for playing into a dynamic that directly serves the elite power structures they claim to oppose. When liberals are ignoring economic justice, war, militarism, authoritarianism, corruption, capitalism, and ecocide, to focus on culture war battles whose outcomes will never even slightly inconvenience the powerful, highlight the disgusting way they themselves are feeding into a dynamic that imperils the marginalized communities they claim to defend. People on both sides of the divide will object to this message. The source of their objection is the exact programming I just described. The truth hides just beneath that objection. On some level you all know this is happening. Keep breaking the spell and drawing attention to what's really going on, and you can stomp out the abuse at its source.


How have Europeans benefited from the euro? This is Sophie from the Netherlands. She was born in 1992 in Maastricht. That same year, European leaders gathered there to sign the Treaty of Maastricht, a document that would prove to influence Sophie's life in unexpected ways. Without it, she might never have met her best friend Maria from Spain or her German boyfriend Oliver. But why is that so? The Treaty of Maastricht was not only a milestone for European integration, it also set the stage for the euro. Sophie still remembers the time before Europe had a single currency. On family holidays to Austria or Italy, Sophie's parents always had to buy foreign currency. So they wasted a lot of time and money exchanging currencies back and forth. Today, travelling is much more convenient, thanks to the euro. For instance, when Sophie planned her exchange semester at university, she could easily examine the living costs for different places in the euro area. She also knew that she could use her Dutch debit card in these countries. So nothing stood in her way when she decided to study in Spain for six months. It was here that she met her best friend Maria. After finishing her studies, Sophie got an attractive job offer in Germany. She still lives in the Netherlands but works across the border. Thanks to the euro and EU law, she is entitled to receive her salary in her Dutch bank account at no extra cost. And she doesn't have to worry about exchange rate fluctuations. In Germany, she also met her boyfriend Oliver. Along with Sophie, Oliver and Maria, millions of other Europeans benefit from the euro, while travelling, studying or working abroad. Just as Europe's political leaders envisioned back in 1992. For more information, click ECB.europa.eu.