Welcome back to another vlog. Today is Friday and I'm having a filming day. Who would have guessed? We already know the drill that's happening today but I had a really fun idea this morning actually for a video that I did a year ago where I tried on all of my pre-quarantine jeans. Like I think it was a few months into quarantine at that point and so I thought like a year later might be funny because some of my jeans unfortunately have sold and like they've gone on to live other lives but some of them I kept and so I haven't worn them in months. Like months. Even maybe a year. So it'll be fun to put those on and see if they still fit. So I'm gonna film that video today and then I think, I think I'm going to film a video today that I have been talking about for a while and that is trying sewing for the first time. I have so many little like thrift flip ideas and fun things that would just be so much easier if I had just learned how to sew and I'm really not good at learning new skills. I get really impatient and frustrated with myself but I'm going to try. The only thing is I ordered a sewing machine and I'm really excited about it. I'm excited to have it. But the only thing is it comes with like all of the tools. It comes with like the seam ripper and all these different things but I'm not sure it comes with thread and I didn't think about that until this very moment. I'm going to have to order some thread and if not then maybe I could try the idea with fabric glue because I do have some of that. We'll see what ends up happening.  It's like machine washable and stuff. So I don't know. We'll see how that goes. But in the meantime, just a typical Friday over here, I actually was supposed to FaceTime with Alexa here in a few minutes but I was running really late so we're actually going to FaceTime tomorrow instead and then tonight we're actually having a game night with some of our friends.  We're trying our best to stay connected and there's a possibility we might have them come out here and visit pretty soon.  We're being safe. We would obviously like quarantine and tests and all of that. Hopefully by then we'll have our first round of the vaccine because if you saw last night, well by the time I'm filming this, it was last night that President Biden said, that's the first time I've said President Biden. I'm not like that excited. I'm just excited to not say President Trump. Anyways, he said that all eligible adults should be able to get their vaccine no later than May 1st. So that's very exciting. But anyways, that's just a rundown of what's going on over here. It's, I don't know, have you guys had people come visit? I know it's like a pretty normal thing for small groups to get together like small like one other household type of thing but we haven't really done that that much in the last year. We're just trying to do what makes us comfortable but try to safely reintegrate into life because, you know, pretty soon here, I mean by the end of the year we're going to start seeing like shreds of normal life again. And Drew and I have like immense anxiety about it. So we're trying to just like do things safely like, you know, go to Costco, go to Trader Joe's, double masks. These are things that like we could have been doing and a lot of people have been doing this whole time but we've just had a lot of anxiety around it. And so we need to start kind of putting ourselves out there a little bit. What else is going on? Is anything new? Oh, we started a new show. I'll talk about that later. But you know how I love my British crying shows. So we'll share that in a bit. But for now we got work to do. Somebody is very much enjoying this day. I think the high today is like 68. So she is really loving life. I film because I mean I talk a lot anyways but especially when I'm filming obviously my dream I just sat there and turned on the camera and like did what I was doing but didn't explain anything. So I always gotta have a full thing of water because I get very thirsty but Drew just told me that there's a package at the door. So we're going to check it out. Now it's actually like 4.30 and right around this time for the last few days Drew and I have been working out in the afternoon. I think I mentioned this like the other day or maybe in another vlog. I don't know but I love my morning routine. But sometimes like if I've just showered the night before and I don't feel like showering immediately after or like if I have a bunch of stuff to do. Doing like a workout and then getting ready on top of it can like stress me out a little bit. So, it's the weekend. I'm trying to forget if you talk to people later now. It's the week. But we've been working out in the afternoons and it's been quite nice. The little endorphins. Like I don't like a nighttime workout but I don't mind like 4.30. It seems really dark outside right now. It's literally only 4.30 but it's been raining today which is you know rare. And of course it's not on a day where I'm like editing and can enjoy it. It's on a day when I'm filming and I can't even see. I have fresh clean hair and I'm about to sweat into it but whatever. Me too. So, we are going to do a little workout. I think Drew is going to do like a strength training. Why did I say that weird strength training thing? It's making fun of me now. And I think I'm going to do the bike. Yesterday I did a like pony. I've talked about it before on my vlog channel and on my main channel. It's like a dance aerobics class. I did that one yesterday which was really nice. But I'm trying to you know switch it up so I don't get bored. So, I'm going to do a little cycling workout. Maybe even a two-day workout we'll see. I'm going to try not to get my hair too sweaty. I'm going to pop these airpods in. We're going to do it. Are you doing, you're doing a peloton but just off the bike? Yeah. A strength training as I said. My Tennessee tried to jump back out. Also this workout set I got at Target just before quarantine last year actually. Those airpods are better. I'm sorry. Sorry you had some work points that you could buy yours for free. I paid money for it. Oh no you need to do what you did when you bought that when you came into a room.  And I was like what? And you did. He literally came in and he was like, hey guess what? And I was like what? And he just bought this Pokemon, Pokeball cover for his airpods.  Like he's too cool for me. Anyways and he walked in and he was like. So anyways. I didn't do that. Well yeah you did. As I was saying this set is from Target. I got it last year just before quarantine and I completely forgot about it and it was in my giveaway pile and I don't remember what. She has it in red, in purple, in yellow. No this is Target not girlfriend. Roasting me. I think that I was afraid that I had too many workout clothes and I wasn't like working out but now that I am it's nice to have more so anyway. Let's do this thing. I'm gonna do a 20 minute tune day 90's ride. So let's freaking go. She's already going so fast and I'm not even on the bike. Great job. Not like working out with makeup on by the way but we're FaceTiming later or Zooming so I don't really feel like taking it off and then putting it back on but it feels gross. In case you were wondering yes it does feel gross. She was already in the shower. I like always need a few minutes to cool down. He said his workout was really good. I can like, I feel like my arms are sore and we didn't even do any arms. Crazy. Today is the best. I got my eyes been twitching for like two weeks. If you can see that please forgive me. She is the best but whoo. She is tough. She is tough. Gonna cool down. Rinse off and make some dinner. Popping Friday night over here. Alright we are showered. We are dry shampooed and we are feeling somewhat back to normal. I wanted to show you a little shower tool. I got, oh I don't want to close that because our gym clothes are in there actually. This is a weird angle but we're just gonna go with it. If you didn't see the blog where I talked about my baby foot peel experience. Baby feet peel experience. I was really disappointed because it peeled skin off of like my entire foot except like my really callused parts. It didn't make my feet soft underneath at all. I guess I just have really callused feet. So I can't remember who I saw talk about this but I bought it on Amazon. It's terrifying. It is a literal stainless steel foot file and whoa. It looks terrifying. It's really gross to talk about. I have sanitized it so don't worry.  It will literally take your skin off. Like it is no joke. I cannot stress enough how no joke it is. Like you can't even use pressure. You barely have to touch it to your foot but I used it last night for the first time. I bought it a couple weeks ago. I'll link it down below for you. I just got it on Amazon. Oh my god. It's intense. Like I didn't notice. There were some people who said that they noticed a lot of like shedding. I didn't. I just did it in the shower. I waited until the very end of my shower and then I did not use any pressure when I tell you no pressure and it's like I mean I definitely have a ways to go but it's the best my feet have looked in a really long time and I know that's probably kind of gross to talk about but honestly I am so shook. I cannot recommend it enough. If you're like me and are trying to avoid going to the nail salon as much as possible or you just don't like going and you want to do it yourself at home highly recommend but I am telling you use caution. Like you cannot use this on any part of your body that isn't calloused or it will take your skin off and I'm not kidding.  It's actually one of our favorites. It's this like butternut squash ravioli and oh my god it's so good. Oh my dish from breakfast is still on my night stand. So I forgot to show it but we just finished our dinner. It was delicious and now we're cleaning up getting ready to do our game night and I'm excited but I meant as I talked about earlier I meant to tell you all that we've been watching a new show. We started a new show I don't know what is it even on? Amazon? Yeah we had to buy it. It was like the most one of the most requested shows when I asked probably like I don't know over the summer as you all know I love my British crime shows yes my eyes still twitching I love my British crime shows and I've gotten drew really like severely into them as well and we've watched like every single one not every single one but we've watched a lot of the good ones we decided to try a new one called Happy Valley which a lot of people were recommending it used to be on Netflix it's not anymore so we just bought the season for like ten dollars Oh we need to play it on Amazon Prime it says Netflix yeah that was we started we paid for it on Prime and then it was like Netflix original and we were like it's been really good so far we actually really like get that so it's a full hour like they're pretty long what we didn't anticipate last night it happened twice that was that the second or third episode or maybe the second and the third and the third I believe there was a jump scare we were not anticipating it the first time it happened we were both just like holy shit and then we like looked at each other and we were like oh that was so scary like the ones that like take you a second to get over like you're still like it happened again in the next episode and I was like I don't like that I literally screamed remember I was like why but the show itself is really good really intense so if you're interested in another British crime show and you've seen them all like me check it out if you are a British person and you've watched it let me know your thoughts don't spoil anything we're only halfway through the first season but we don't get to watch that tonight so I am sad well I mean maybe later but um yeah I'm gonna decide what we're gonna drink we have about 30, 20 minutes so I'm deciding between we have some beer in the fridge we don't have wine unfortunately which is the saddest day of my life but we do have some margarita I'm pretty sure yeah is this the Costco one remember we got so drunk off of this at your at your mom's yeah or at at your sister's house and we were spraying each other in the pool we had like a water gun fight in the pool that was fun oh my god you were mean to me you bullied me and I like almost cried I'm gonna cut your face what? you were purposely being a jerk I'm like we didn't get into a fight but I was just like you're being me and then you were like she got wet I'm sorry no you were spraying me directly in the face we also have Tito's so I could do like a little um Moscow Mule situation but I don't know if we have any lines we have crystallized ginger we have some dark rum left over from Drew's birthday um and he could make it dark and stormy we have brandy which I'm not drinking we do? oh it's really hard um I think it might be plastic oh and then we have a bunch of our favorite treat ginger beers so if we decide to do a Moscow Mule we can't have lime in it which is sad so I'm thinking margarita? without lime juice you know not great looking like we're gonna crack this baby I wish I had thought about it and put it in the fridge but we can chill in at ice it'll be fine I just made myself my margarita but I realized I didn't film it so here I go this is what I did and the margarita and the shaker I shook it there we have it cheers what a good one right and it is now 11pm it is 4 what the hell come up in case you're wondering why we keep our bed on the ground now it's for this and plot there we have it love you so much thank you so much for watching this vlog and we'll see you in the next one good night


Hi, I'm Don. Follow this link to the DevNation Shorts, a series of videos where I discuss OpenShift Sandbox and how you can use it. So follow the link and I'll see you there.


Metabolomics is a field of study that uses advanced technology to measure the chemical makeup of biofluids and tissue samples. This information can be used to develop new diagnostic tools and medicine, as well as to identify potential biomarkers associated with disease or drug response. Technological advancements in nuclear magnetic resonance, NMR, and mass spectrometry, MS, have enabled researchers to collect more data from each biological sample, which requires faster and more accurate statistical and bioinformatics tools to analyze it. This review provides an overview of the most common analytical methods used in metabolomics, ranging from data processing to pathway analysis and biomarker identification. Additionally, the integration of metabolomic profiles with molecular data from other high-throughput biotechnologies is discussed. This article was authored by Arnold Ilonso, Arnold Ilonso, Sarah E. Marshall, and others. We are article.tv. Links in the description below.


What is up everybody? This is Chris from the Rewired Soul where we talk about the problem, but focus on the solution. And I just found out, sadly, that Demi Lovato relapsed. And a lot of people have been doing reaction videos to her song Sober, my lovely girlfriend just informed me of this. So I decided I'll do a reaction. So I just celebrated six years sober. I am somebody who has relapsed many, many, many times. I believe Demi Lovato and I had around the same clean date. So when my girlfriend told me this, I was like, wait, she must have just really recently relapsed because her clean date was right around the same time as mine. So I found that very interesting. But in this video, I want to give my reaction to her song, the lyrics. I'm going to be pausing it. I'm going to be talking. I'm going to try to give advice on how to deal with relapse. And then towards the end of the video, I'm going to talk a little bit about my thoughts and opinions on her situation. And her relapse and what she should do moving forward. And I'm not an expert or anything, but just a guy who is in recovery and works with a lot of clients who are trying to stay clean too. So without further ado, let's watch this. This is her live performance, I believe from Portugal or something like that. Anyways, let's watch it. Like I said, I'll be pausing. Try not to get annoyed, but I do want to discuss some of the lyrics of the song. Let's go. Wait me when the shakes are gone and the cold sweats disappear. Call me when it's over and myself is repeat. I do it every, every, every time it's only. Sometimes I just want to get in, I don't want to fight. I try, and I try, and I try, and I try, and I just hold. So the first little section right there, like she's talking about the withdrawals, right? Like the shaking and the cold sweats and everything like that. I'm not sure what substances she relapsed on. I think one of her substances of choice was alcohol. Yeah, yeah, it was definitely alcohol. I did a video that I'm going to link up in the description on her documentary that she did on YouTube. It's phenomenal. I highly suggest you check it out. But anyways, yeah, like the withdrawal is terrible. Like on my video that I did about opiate withdrawal, I've also done about one about alcohol withdrawal. Like one of the things that keeps me sober on a day to day basis, especially when like life's getting rough or the cravings are coming and things like that, is I never, ever, ever, ever want to forget how terrible withdrawal is.  This next part, I'm not sure if it's the course. I think it's the course. And she's saying that she tries and tries and, you know, she's done this over and over and over again. And she says it only happens when she's lonely. And my best suggestion to anybody out there who is struggling to stay clean or you're an early recovery, right? The best thing that you can do, and I say it's my secret to recovery. It's not a huge secret. Look at everything in the past that has caused you to relapse. Like Demi's acknowledging that being lonely is what makes her relapse. So I know that when I isolate, and I've talked to all of you so many times about isolation and how terrible it is, like it's so important for me to not be in that place. Like when I'm feeling lonely, when I'm feeling isolated, like it forces me, like I have to force myself rather to go out, reach out and connect with other people. Like that's one of the cool things about being a celebrity, you know, like I guess cool. Like I'm like being able to have this outlet, you know, and this is why I recommend all of you find some kind of creative outlet. If it's not music writing or something like that.   And like going to people and letting them know my last relapse lasted me about a year and a half because I didn't want to say those. Sorry, I didn't want to go to my mom, my dad, my baby mama, you know, my friends and all these people who I let down an amazing song that I really need to do a breakdown on is Macklemore starting over. But it's very inspirational. That song, but as well as this one where you're like you're being an example of like getting back up and trying this thing again, because so many people relapse and they just want to give up. I'm sorry to my future love, my bad, for making love the way I say it for you inside. And I'm sorry for the fans I lost, you wash me all again. Like that's just kind of weird. I think like people just hear the word fans and they start screaming but like her lyrics are saying like I'm sorry for the fans I lost. Like it's not like a screaming. It's kind of like when you're on Facebook and you post something about like being miserable or depressed or something terrible happening and somebody like gives it a thumbs up. That's why I'm glad like Facebook like put all the other little reaction things that you can do because like when somebody like gives a thumbs up or in this case cheers when you're saying something like not good. You're kind of like, did you really understand what I was trying to say? But anyways, so yeah, but anyways, you know, breaking that down like she's taught she talks first about the people who have never left her side and stuck by her like so this last weekend, I just got to see one of my best friends in Southern California. She came with me, my son, my girlfriend to Corgi Beach Day, and I have a but not a bunch. I have a, you know, a small handful of friends who stuck by me through the relapses and stuck by me through my recovery to and they never left my side.  That's a joke come down.  But yeah, there are people who are going to leave and that's, you know, that's the thing like every day, I always say this to people that every day you got to wake up and say what's your motivation for staying clean.  You know what I mean. And that's something that helps keep me clean today. But anyways, I'm going to touch some more on people sticking by you towards the end. And real quick like that that part where you know she talks about like eventually you know she she just caves in and she doesn't want to try anymore and stuff. And like man, this is why we really got to work on our mental health, especially if you're in a recovery. If you're recovering addict like man, like in early recovery like your first year of recovery, you got to like glue your hands to the chair and just not pick up a drink or a drug.  But anyways, like man, my recovery and by by all means I don't want to come off cocky or egotistical like I am a few bad decisions away from relapsing myself.  I don't got to fight anymore like it's not a day to day struggle for me anymore. Like if you ask me like today how I deal with like cravings and urges to use like I'll have to sit there and think about it for a while because they rarely ever happen.  She is constantly being pounded with stress. You know what I'm saying and she also struggled with some mental illnesses her herself and like these are all very very difficult and it makes it 10 times harder when you're a celebrity. You know but man like she needs that support group and I hope she's still working some type of program. I could do a whole video about the lifestyle and things and Demi Lovato specifically like I've seen just how she lives her life in sobriety based on the documentary I watch. And I'm like man that's risky but you know I've seen people do it before but I do think there are some things in her lifestyle that she chooses to do that have put her at a higher risk. So never left me. We've been down things wrong before. I'm so sorry. I'm not sober anymore. Sorry that I hear it. Dang girl. Dang preach it like that that's great how she ends that song like and I'm sorry to myself like that's huge. One of the hardest things to do is just forgive yourself and to move forward like the last person I really had to make an amends to was was myself. You know I I've mentioned this in other videos about when my mental health gets screwed up like I can beat myself up like nobody can like as much as we feel like we let other people down like man. We let ourselves down and we we can have this in crazy internal dialogue. You know what I mean. But anyways phenomenal phenomenal song. I just I love when celebrities do this and they're open and vocal about recovery as well as relapse because it inspires others unless other people know the last few minutes of this video. I just want to talk about kind of I don't know the article that my girlfriend sent me was like oh Demi Lovato gets this outpouring of you know support from her fans and everything like that. And that's so cool. I love it. I love it like here's my opinion just my opinion just me humble me. I'm a nobody but this is my opinion. It's it's this it's this thing that there has to be a balance to it right like and here's what I mean. When too many people forgive you and support you it it can be enabling. All right. It can be an enabler like when you relapse and if everybody if everybody around you says it's OK. It's OK. It's OK.  It's not that bad. People aren't that mad at you. You know what I mean. I'm like it's it's dangerous but like I said you need that you need people to forgive you you need people to support you like in 12 step programs. They say we don't shoot our wounded. That's so so so important. The approach that I take with my clients OK when I get a call that somebody relapsed. All right. I talk to them. I say the first thing I say is I'm glad you're alive. All right. First thing I say OK. OK. And then I give them real tough love.   Then I'm like let's talk about what led to this. What are you going to do differently this time. You know I have to let them know that like what happened is not OK. Like we have to just make sure that even though we're providing them with support and letting them know that we're not leaving them and we still support them and we also have to let them know like you don't mess up.  I made a video a long time ago long long time ago about Facebook support groups because sometimes that's what I see in recovery Facebook support groups where people are like hey it's OK. It's OK. Don't worry. And that's like all the comments are I'm like is anybody going to be like hey it's kind of not OK at the same time. You know what I mean. Like it's a balance. It's a balance. And like I just I don't know how to express it in a way where I don't sound like a jerk. But I also don't sound like an enabler. But I hope it makes sense. And I hope it comes with a balance. But here's the thing is why I tell people to like Demi Lovato knows how to stay sober. She knows how to if she can go back and do what she did like she knows what works. OK.  I don't care. Whatever decent length of sobriety means to you. I don't care if it's a month two months three months a year six years whatever it is. Like look back and say how did I do it the first time. OK. Well I know what keeps me sober for this long. Now what do I got to do after that. What do I got to do after that point. OK. All right. But anyways like I really enjoyed that song and hopefully Demi does well in her recovery and all that. But yeah if any of you have questions for me or if you have suggestions on how to deal with relapse leave them down in the comments below. All right. But anyways that's all I got for you today. And if you like this video please give it a thumbs up. And if you are new here I'm always making videos to help you out with your mental and emotional well being. So click that round subscribe button. I'm going to put it right there. And if you would like to support the channel over on Patreon like so many others are doing for you can click the top right there. All right. Thanks so much for watching. I love you. I'll see you next time.


Next, we have Deploying OpenStack Using Containers by Angus Lays. Just to be very clear, this talk is not talking about exposing containers to users in any way. It's not about containers as a service. It's not about using the Nova Docker plugin or any of those sorts of things. This is about using containers to deploy OpenStack itself. And the fact that you have maybe chosen to do that should not in any way be visible to users of your OpenStack install. It's just a deployment choice. What it is a talk about is I'm going to start off very quickly talking about traditional deployments and then why some of the limitations with that and why you might want to consider using containers and look at one example of that. And then going to talk about some limitations with that and why you might want to look at something like Kubernetes as an extra layer on top of all of that. I'm going to talk very quickly about containers and Kubernetes along the way. I'm assuming you don't know what they are. But of course, I'm not going to cover them in enough depth that you can never have to learn anything else about them. But if you have questions asked, I can always say more. So I'm glad I'm on the big screen here because these diagrams would be quite hard to see otherwise. But now they're five meters tall, so that helps. The traditional, the classic deployment model and this diagram is from the OpenStack Operations Guide at the beginning there. The traditional deployment has a couple of control nodes. Let's say three. It has a MySQL server. So it has a couple of network nodes if you're running Neutron and then it has a larger number of compute nodes. They were running on bare metal and typically you would install it using PuppetChef, Ansible, anything sort of in that class because you don't want to type it all in by hand every time. So that's the traditional model. The other sort of common traditional one is the all-in-one tests and Swift has an all-in-one install and of course DevStack that everyone uses. These are pretty much all running on one machine. They have a bunch of QMU sort of virtual machines that they run, but they're very, very different to a production deployment. They typically refer to the other services using localhost. There's only one of every piece. There's no ability there to deal with dynamic changes or discovery of other components because they're all assumed to be hard-coded to be running on localhost. And even more so if you look at a few services and the Neutron ML2 driver is a good example. The usual DevStack setup uses a special local network type which only works on localhost and is of course nothing you would ever use in a real production deployment. And so we're exercising code that isn't even normal code in a DevStack setup. So the issues with these are certainly the DevStack install can't scale up. It's really built and hard-coded to deal with the localhost case and running multi-node is a little bit of a stretch. It works for DevStack, but it's a little bit weird. And the typical prod setup where you have whole machines dedicated to particular roles can't really scale down. You sort of need a network node. You need at least one controller. They're typically set up to have MySQL on a different machine again. And you can combine some of these, but the scaling unit is the host and it's a bundle of behavior on that host. And if you want more control nodes, you duplicate that and have a whole other control node that has the same defined set of services. So one way to make that more flexible is to use containers. What is a container? Lots of people use this word without knowing what it means. Lots of people wonder what it means. Containers really are the combination of two Linux kernel features. They are namespaces, which is a feature that gives every... You put every Linux process in a namespace. Namespace could be a group of processors. And you say, okay, you get your own process ID namespace, which means your process ID one is not the same as someone else's process ID one. Okay, so you can run your own unit and it's different to the real system in it or different to different containers in it. And if you type PS inside there, you only see your own processes. You don't see the process list outside. You get your own file system namespace. You know, your ID or a slash and what you see and what you mount doesn't affect what happens in other containers. Likewise, you're networking. If you set up a routing table or configure a network interface and each zero, it's a different eight zero to what some other container has. But it's all on one kernel. So the kernel has several network interfaces and they're just called namespace one, eight zero, namespace two, eight zero, namespace three, zero. So they're all there. They're all in the same container. They're all in the same kernel, sorry. But if you look at them from your container, you can only see the ones that were configured for your container. And when the kernel acts on your network packets or your file system opens or your kill process ID syscalls, it only acts on the ones that are configured for your container. The other feature is C groups. C groups are a way of limiting the resources available to a group of processes. So you can say, I know I have eight CPUs on my machine, but you group of processes can only use four of them. Or I know I have several gig of RAM, but you can only use one gig of RAM. It's a little bit like Ulimits, except more powerful because it extends all the way down into the kernel. So if you're limiting RAM, for example, it's not just the RAM that the process uses. It's also the shared pages that it uses from shared libraries. It's also the kernel buffer RAM that is used on behalf of those processes for TCP sockets and for file IO and those sorts of things. So it's a much more comprehensive version of Ulimit, if you like. So containers are the combination of these two things. So we can create a group of processes. We can give it a unique view of the system. And then we can limit it. We can give it a subset of the full hardware we're running on. And that's really all it is. There's a bunch of, to give the distinction here in terms of features, it's a very different implementation. But if you'd like to think of it comparing it to virtual machines, with virtual machines, you can run different OSs because you're working at the machine sort of abstraction layer so I can run Windows on my Linux guest. In a container, you've only got one kernel. So it has to be Linux. And in fact, it has to be the same Linux kernel that you're all using in other containers. In a virtual machine, because you have a full system, you need to run a full operating system. You need an SSHD. You need an in-it process. You need all these bits and pieces. You need hardware discovery as part of your boot up. You need Udev running to respond to whatever hot-plugging and device discovery. You need all these pieces because you're basically running a machine. When containers, you can assume that one of the other containers is doing all that bit. The main sort of system startup has already handled all that for you. And so typically in a container, you'll have just the processes that are required. So if you want to run Apache in the container, you will just have Apache running. You won't have SSHD. You won't have in-it. You won't have system D. You won't have Udev.  And typically with containers, if you want to do debugging, you'll log into the host and you'll poke at the container from outside. So usually you won't log into the container itself to do debugging. So think of the container much more like a charoute or a forked process group, which brings you to security as well. Typically containers are the same tenant. You don't have hostile containers next to each other. Containers are very new sort of kernel features, particularly the namespacing stuff. It's a very large attack surface. We're talking all of the kernel. We're modifying a bunch of behaviors that have been in the kernel for a long time, but we're modifying them in a way that is new. The inside of container is now not the same as root in a different container. And that's a whole lot of new checks in the kernels that we need to make sure we've got right. And almost certainly there's at least one bug waiting in there that hasn't been discovered yet. You would be very, very brave to the point of foolishness to have multi-tenant containers at this point. Multi-tenant hostiles sort of tenant containers. Whereas VMs on the other hand, that's a pretty well understood problem space. You know when you're writing the virtual machine hypervisor, and you're receiving that operation to read that file off disk. That was recently written code because hypervisors are relatively new technologies, and it was written with the idea that perhaps this is a hostile untrusted guest, and that when I go to read that file on disk, I should carefully assess which file is able to be read by the virtual machine. So typically containers were talking about single tenants running multiple containers as a deployment option for their software, but all within the one tenant. And you might in a real cloud, of course, have a single tenant who has a virtual machine, and then they choose to break up their virtual machine internally using containers that would be quite a reasonable and common thing to do. Now, when people talk about containers in practice, they're usually talking about one of these three, and there's probably more, but these are the three I happen to know something about. Systems, these are convenience wrappers around those core kernel features. They use the same kernel features. So they have roughly the same things that they can provide, but the, you know, the command line tools, the way you can configure it, is different in each of them, particularly networking is different. It's quite complex how you set up networking between containers, and so these three different systems offer you very different amounts of help to set up the networking side. But the file system side of stuff is pretty much the same across them. SystemD Endspawn, if you're not familiar with that, is a very simple, it's kind of the core guts of SystemD when it goes to start a service in its own container. It does that as a sort of security isolation measure, and SystemD Endspawn is just a way to use that for your own purpose rather than just running a SystemD service, a regular SystemD service. LXE was perhaps the first one of these, I think, and it's a little more basic in what it offers. It's a little closer to what the kernel primitives are. Docker is, of course, the new guy that everyone likes to talk about, and the main thing that Docker adds over the others is an ability to bundle up the files related to a container and put it on a server somewhere and then download it and install it again very easily. It's a little bit like apt-get for containers. You can just go Docker pull the name of a container, it'll go and find it on a centralized server somewhere, download it, unpack it all, make it available and just run it. So it's a very, very easy way to use containers. The interesting thing is that it's portable across distributions. The only thing Docker assumes is that you're running on an XH664 Linux kernel, and it uses the fact that the XH664 kernel ABI is very stable and standard. You can go between a Red Hat kernel or a Debian kernel or a Gen2 kernel, and the same file-open syscall is completely binary-compatible across all of them. So what this means is you can have a container which might contain a Red Hat file system tree, and so you're using the Red Hat libc and the Red Hat apache, but when it goes to issue a syscall to the kernel, it's totally compatible with that Debian container that has a Debian libc, so you're totally avoided a lot of the library ABI DLL hell that you get between distros, because we're just taking the kernel layer as compatible. As a software distributor container, Docker is quite interesting where you can provide a Docker instance, a Docker image of your software, and you can say I'm going to choose fairly arbitrarily this distribution, these libraries, these dependencies, my actual bit of software that I wanted to ship, and I can bundle it all up in a Docker image and make it available, and then anyone on any distribution can grab that same Docker image and run it, and it pulls down that whole stack of software and just runs it on the kernel that I have, because the kernel is fundamentally compatible. So this is a lot of why the excitement is around Docker, because it's quite a novel really to be able to do that in Linux. Right, so here's another diagram that you probably can't read unless it was stretched to five meters high. This one, you don't need to read the stuff on the right there. This diagram came from the Rackspace private cloud documentation. Rackspace deploys now their clouds for customers in containers. The primary components are deployed in LXC containers. And so this diagram on the right is showing you an example of a single host, which is broken up into a couple of container slices down there, the light gray horizontal slices. And you can see the first one is a networking container, the second one's a storage container, and the third one is an other container. And you can see the networking, the blue and the red boxes, are only made available to some of the containers depending on what they need. So only the networking container is hooked up to the tenant network, the blue boxes, and only the storage block and the other services are hooked up to the light red, the storage network. So we're running this all in a single host, but we now have a little bit more isolation between services. We have a little bit more security. We've limited what's available to some of the services over what we had before. And it's also a little bit more flexible. We can choose to pack some of these containers onto different physical hosts a bit more easily than we were able to do before. We can pick them up and move them. But otherwise it's all the pieces you already know about. There's a container running RabbitMQ, there's a container running Galera and MariaDB, there's a container running Keystone, all the pieces you knew about before. Because there's a little bit less overhead to each container, you don't have a whole new kernel, you don't have a whole new set of how do I boot my system up, you know, SSHD management sort of pieces. The footprint's a little bit smaller than it might have been if we had three virtual machines running on a host. So we can pack down the minimum footprint a little bit smaller. And I think this was one of the driving use cases for Private Cloud doing it. If you want to look more, there's all of the RaxFest Private Cloud configs are available on GitHub somewhere. Now, that's pretty good.  The difficult cases, it's not all roses. So the difficult cases with containers are anything that leans heavily on the kernel, anything that demands a lot from the local kernel, because fundamentally the kernel is still shared. So there's some things that don't have namespaces, some kernel features don't have namespaces integrated through them yet, and perhaps may never. One of those relevant to us here is iSCSI. So Cinder, which leans on iSCSI frequently, is quite difficult to run in containers. In fact, impossible if you want to use the iSCSI back end. And Neutron network nodes are quite possible, but they're more interesting, because again, they lean heavily on the networking features of the kernel. So you need to be a lot more careful in how you set up your containers. It's a lot more demanding of your kernel container environment. And other than that, we're still making manual placement decisions. Somewhere still has to decide I'm going to pack those three containers onto that host and those four containers onto that host. You're still having to make those decisions. You're still having to say that container's really big. Perhaps it won't fit with that other really big container. They both use a lot of RAM or something. And related to that, when one of those machines dies, and you have to make that decision again about where you want to pack those pieces and pack them on somewhere else, you're still having to do that manually again. There's a human who has to come in and modify your puppet configs or whatever you use to actually set up the containers in the first place. And say, actually, MariaDB should run on that host. They should run on the other host. And then typey typey to make things change. So really a lot of the OpenStack control pieces, if we put aside the hypervisor for a little bit, a lot of the control pieces, there are no very API servers. The Neutron server components, even Glance, and these sorts of components are really just like a regular web app. They're just a web server that takes the information of API requests, does some munging around, perhaps reads a few files off a database or something, does some database operations, and spits back a result. That's not new, that's not. That's a common problem we have everywhere. How do you deploy those nicely? And we're in a situation where we have or potentially have lots of machines. We want to worry about horizontal scalability. We want to worry about machine failure. The way this is dealt in other spaces is by treating like a cloud native app. There's a set of features. If you want to deploy somewhere on Amazon, you use these sorts of features. You use locking stores. You use object stores. You use these sorts of features to deploy it. You use load balances and reverse proxies and all these sorts of things like that. Perhaps we could use the same things for our OpenStack control jobs. I strongly recommend it. Thank you to Robert Collins for pointing me into this. TorfFactor.net is the TorfFactor app. It's a short book, short article you can read on that website, which really goes through and does a very good job of explaining what a cloud native app should be like and how you should write one. It gives you design advice for it and more things you should think about. It's definitely worth your time to read it. It'll only take half an hour or an hour or something to read it. So, again, the key features are typically you separate stateful and stateless, and your stateless servers can be restarted without too much stress and worry if you want to handle twice as many queries per second to your web service. You just run twice as many of them. And your stateful is where it's hard. You're storing files on disk. They're your database or something like that. They're a lot harder. So, by separating that out, you separate out the easy problem from the hard problem and you focus on how you're going to store things on disk reliably. You design for horizontal scalability from the beginning. Again, if you want twice as many queries or twice as many users, you want to be in a situation where you just run twice as many of that piece. I want twice as many glance file read operations. I just run twice as many glance servers, ideally. You assume from the beginning that hardware failure is normal because you're in a cloud environment where you may be thousands of machines. There's always one that's failed at any point in time. That's normal. There shouldn't be a human that has to wake up and deal with that problem. And then more from a software development point of view, it'd be really, really nice if our test and app production deployments were as similar as possible. And this is one of the big surprises I had coming into the OpenStack development community. The DevStack was so different from the recommended typical deployment. You would never deploy using the normal DevStack because it uses all these local only features. It's simply not a production deployment. And then basically we want something more like what we're used to from PazStacks for running our control jobs. We want some of these higher level services. So I did a bit of a look around. I looked at a bunch of the different ones that were available. And I personally chose to experiment with Kubernetes. You could certainly pick other ones. Kubernetes has a few advantages that I found over some competitors there. It's a very lightweight to install. At least at the moment, Kubernetes is single tenant only, which has the advantage for my case where it's very easy to install. I don't have to worry about configuring user accounts or anything like that. I just run whatever, a Kubernetes API server and then a couple of cubelets on each machine and install SED, which is similarly easy to run SED server on each machine. And I'm done. Kubernetes is installed. So it's a very lightweight layer on top of bare metal or on top of VMs. It fundamentally installs groups of Docker containers in something it calls pods. So it has a pod which is just a group of containers that will always run together. So you can have a bunch of containers that need to talk to each other always. It runs them in a pod. It fiddles with a networking setup so that you can assume they're all running on the same host, the same local host. So if you're running an Apache server in one container and a MySQL server in another container, put them in the same pod. They can refer to each other using local hosts.  It stores its state in SED. SED, if you're not familiar with it, is a key value store that uses the raft consensus protocol. Basically what it means is you get something that looks like a file path. It's not in the file system, but has that same name, slash, name, slash, name. And you say, I want to set that value to something, and it's fairly common to store a JSON blob in there if it's a complicated something. And then you can go to any of the other SED servers and say, read me that value, and you'll get back that value. It doesn't sound like rocket science. But it's also resilient to machine failure. It's stored on all of the SED servers, and only a majority of them need to be up at any point in time. So, for example, I typically run this on five virtual machines, and only three of those virtual machines actually have to be up for me to read and write those values and do it lively. So it's very resilient to a small number of machines failing. It'll continue to work and not lose data. It also has an interesting load balancer where Kubernetes chooses where to run your Docker containers for you, your pods, and then it runs them. So you need a way to find that MySQL pod from your Apache pod. So instead of hard coding up here addresses, or instead of using DNS, what you do is you go to the Kubernetes local proxy. It runs on every single Kubernetes node. It runs a little proxy and sets some environment variables inside your container, so it's very easy to find in a way that's portable. And so you say, I'd like to connect to my MySQL service and go to the port number that means the MySQL service, and the proxy knows about the Kubernetes internals. It knows about, oh, hang on, I'm running a MySQL pod over there, and as it happens, another one over here, and I'm health checking them, and I know that that one's responding to the health checks. So I'm going to forward your TCP connection to that one over there.  You're also getting a very scalable load balancer because it's not going through a central point. Every host is doing its own load balancing and sending you directly to the other back-end hosts without ever having to come up through a single load balancer and then down through to reach your back-end. And in the case MySQL is perhaps a bad example, but if you were going to a DNS server or an Apache server, something that scaled horizontally very well, you might be running five copies of them, and it'll take turns sending you to one of the five and sending you to a different one each time, so it'll load balance your queries across the servers as well. It also does health checks on the containers if you've configured them, and it can do checks straight to report number or it can run a command inside the container that has to exit zero, and it'll do health checks on the container to say, does this look like it's still working out or has it crashed or is there perhaps some hardware failure that's affecting the container? And then if it's failing the health checks, it will kill it and restart it somewhere else, and while it's working that out, the load balancer will not forward requests to your pod. So this takes care of a bunch of the challenges we had with the previous one. It works out where to run things for you. It starts in there automatically. As machines fail, it'll work out where it should run it instead, and it'll run them there as well. And you can even go so far as to say, this container should be this big. It should have these many resources to it. And so when you're trying to fit it on a machine, you should make sure you're not overallocating the RAM or the CPU or something like that. So, yeah, very briefly, Kubernetes talks about services, which is I'd like to make this service available to other pods, and it's going to run on this port and give this name, and it's going to find the backends that can provide this service using this sort of search query, basically. And then you have pods, which are the groups of containers that get run. And then you have replication controllers, which is a little thing that sits there, and you say, I'd like to run a pod that looks like this, and I'd like to have three of them. And it's sitting there all the time going, how many running now? How many running now? Are they healthy? And if there's four of them, it'll kill one. And if there's two of them, it'll start one. So it's always sitting there just making sure the thing converges. It's a very simple design and works quite well. And this is a very complicated diagram, again, on the right that I pulled from the Kubernetes design doc. But really, it's just, here's a single host, and it's running a couple of pods, which have a group of containers inside each one. And then they're talking via the proxy to a different host, which has the proxy there and more pods there. And then centrally, you have, or somewhere sort of not on every host, you have an API server, which just gives the Kubernetes API, this is an entry point. So, COLLR. COLLR is a part of Triple O project, and it's a bit of an experimental proof of concept where they are deploying OpenStack using Kubernetes in Docker containers, in their case on Red Hat atomic operating system underneath. It's on Stackforge. And their intention is to use it as a bare metal deployment option. So they also have all the dependency pieces that have MariaDB running in one of the pods. They have RabbitMQ running in one of the pods, and it works. You can install it. It's a full-running, fairly minimal install of OpenStack. The few hard cases like Cinder, they haven't dealt with yet, because it's actually hard, so they don't have Cinder as one of the services in there. But they do have Swift, and they have Glance and things. And Neutron. They have a Neutron notebook in there. So, recognizing that COLLR is only at milestone one, it's still a very proof of concept. The limitations they currently have are that they run only one pod for OpenStack service. They don't really use the replication controller feature of Kubernetes. So they've only got... They're not following the best practice, shall we say, for Docker containers and for Kubernetes yet.  They've got a Nova container that runs the Nova API server and MySQL inside the same container. Whereas, ideally, you would split them out. And they use a pod rather than a replication controller, so you've only got one Nova API pod across your entire cluster. So you don't have the machine resilience that you should be able to get and hope to get through a more sophisticated time. But it's not a bad first start, and it works. It exists and it works right now. So they only have one pod for each of the services. So we haven't quite got the scalability or the resilience to machine failure, but it is a good proof of concept and it works. It's quite encouraging and to be able to build it quite quickly. So in the future, and this is some of the things that I was looking at, ideally, you'd want to strip the containers down to the bare minimum you can get away with. So in a pod, you only want to combine things into the same container that have to be in the same container. And you only want to combine containers into the same pod when you have to do so. If there's any possible way of spreading them around, you'd like to do so. So what I've been building so far has the Nova API server is separate to the Nova Conductor server which is separate to every other piece that's possible separate to the MySQL. And I'm using replication controllers to start those because my API servers are a very simple example. You can run three of them. You can run five of them. And then you're resilient to machine failure and you can scale up and down for load very easily. Perhaps not so important, but in my case I started off building on CoreOS, which has an interesting feature, about its only real feature. CoreOS is a very minimal distro that's designed just for running Docker containers. It boots very quickly because it just doesn't have any other features. The interesting piece is how it upgrades itself. It basically has two disk images for the system. And so you've got the one you're using right now and then it has an upgrade service that runs all the time and it'll go and find if there's a new version of CoreOS available it'll download that and then it will, with the way I've configured it at least, take a lock in LCD, say a new version's available, I've downloaded it, I'm going to try to take the lock so only one machine reboots at a time. And when it gets the lock it goes, okay, I'm rebooting and it reboots onto the new version. And then when it's finished rebooting it comes back up again and it goes, yep, I'm done, that worked out, release the lock. And then if there's another machine waiting it reboots. And this works really, really well, combined with the Kubernetes sort of health checking features. I have 5VM sitting there with my little test deployment running this. A new version of CoreOS comes out once a week or more often if there's a security fix. I don't notice it happened. My machine is just download, reboot, while they're rebooting the health checking's failing for that particular Nover API replica. But my queries are being transparently routed to the other Nover API replicas. Comes back up again, another reboots. I'm totally ignorant that anything has happened and yet I've got a new version rolled out everywhere. The hard cases, of course, in such a dynamic setup and Kubernetes itself is really at the moment geared around web-serving type. It doesn't have to be web-serving, but serving in general, stateless jobs. The hard cases are Cinder still for all the kernel reasons and generally anything that uses storage. It's hard to run Swift under this because Kubernetes is quite relaxed about restarting on a different machine and that's a fairly big deal if you've got a lot of state stored there. Swift would actually deal with this OK because as long as you didn't move it around too quickly it should be able to replicate and keep up. But something like a MySQL server, this could be a disaster. If you happen to just casually restart it on a different machine you've got no database files. Storage is a harder case here and adding a change in general there. That's sort of stuff I've been working on. My goal is quite different too. I'm looking at this as... DevSec is an amazing tool. It really does a lot of work, but I would love for it to go away. I would love for the normal test setup to be much closer to what the normal production setup is. And we should be able to build something that can scale down. It's a normal production deployment, but we can scale down to one instance of everything, but we're still using the same mechanics. We're still using the same network drivers. We're still pretending like we have to talk across the network to our other components. And that should be not an exceptional triple O sort of feature. It should be normal. And so I'm trying to build a Kubernetes sort of base, Docker-based install that can scale down. In that case, if you're trying to test glance, you don't also want to test Swift. So if I'm assuming I'm already running in a perfectly functional cloud, I'm just going to lean on the already existing Rackspace public cloud Swift install, and then you're going to run glance in your actual test environment. So I'm making some of those problems go away. I'm going to use the databases of service to run my SQL for me, because that's not the interesting bit that I want to verify. But I've got a long way with that. It doesn't work yet, but I've got a long way with that, too. So it's, hopefully, so it will come from that. So that's it. There's some links to the caller. It's on GitHub. Kubernetes is on GitHub. That's both the documentation is on those sites as well. The readme.mds on those is pretty good. And Kubernetes has quite a bit of design docs and things available about describing how Kubernetes works. And of course Docker. And I didn't quickly find the URL for the Rackspace private cloud LXC configs, but you'll find them with a search engine. Sorry? I tweeted it. It's been tweeted. There you go. It's on the Twitter sphere. And any questions? I'm kind of running out of time, but please go to questions or any time later on, if you don't know. Just one. You get the one question. So the idea of running OpenStack on hardware that is pretty much the same everywhere and the containers moving around is very tempting. But at the same time, the efficiencies of having, you know, hosts specialized for compute, hosts specialized for storage, kind of makes sense because... Yes, particularly networking. You might only have some hosts that have full external connectivity, for example. Correct. They might not all be equal. So the question is what is your vision? Do you see OpenStack running just like Plaston have done running everywhere and the containers floating around? Or do you still see the specialization of nodes and containers like Swift being directed to the nodes where... to storage nodes? So Kubernetes is able to describe this. You can give fairly simple key value attributes to your nodes and to your jobs. And then when you're running a job, you can say only run it on underlying hosts that have these particular attributes. So it's quite possible to say these have high bandwidth, these have high storage. You should only run the storage jobs on the high storage machines. So that's quite possible. And I think that's the way it'll end up going. You want something about that flexible and I don't think you want anything more. I think that's sufficient. And again, it's very flexible. You can easily change that and scale it as your particular needs change. The storage case is still interesting. And if you wanted to run, say, Ceph or something under this, where you need to think a lot more about when and how you blow away a particular machine and move it to somewhere else, that's something Kubernetes does not deal with very well. You can make it work in there, but as a Kubernetes administrator, you need to be a lot more careful about what commands you type because you might accidentally shuffle the whole lot and lose all your storage. So I think that's solvable, but it's something you would want to be very careful of at the moment. And probably if you would use this right now, use this only for the easy jobs and the hard jobs, run them the old way. Run them on dedicated machines or outside Kubernetes, run them, perhaps even still using Docker, but don't schedule them through Kubernetes. Would be quite reasonable. And in fact, when I run it, I run RabbitMQ through Fleet externally just so I can assume it exists rather than through there. Come and ask me questions anytime.


Mae'r ffilm yw gweithlo fan o deulysióet dewsio a'r bei ddafodau ffeinio i chi'n bwysig yma ar Yng Nghymru! Rwyf Januari 2020, y Llennodd g foreigners a'r ei gwrthgoffwyr hyn ar fy gwrthgoffwyr Ynghylch i chi'n bwysig yma ar y gwn. Mae'r gwrthgoffwyr rhai'r llun i'n march 2020, fewn i'n bwysig yw'n ffos i ym March 2022. Why did the Welsh Government introduce the Bill? In 2019, the Welsh Government introduced the bill to help protect children's rights. We want to give children the best start in life and end the physical punishment of children in Wales. What is physical punishment? Physical punishment is any battery of a child carried out as a punishment. It isn't limited to smacking. All physical punishment under all conditions is potentially harmful to children. What is the defence of reasonable punishment? The concept of reasonable punishment was established in 1860. It means that parents and those acting in the place of a parent are able to use the defence of reasonable punishment if they are charged with common assault and battery against a child. This is not a defence an adult can use if they are accused of assaulting another adult. Over the years legislation has limited the circumstances where the defence could be used and limited the settings where children can be physically punished. Physical punishment has been outlawed in schools, children's homes, local authority foster care homes and childcare settings. We are taking the next step on this journey by removing the defence of reasonable punishment.  The United Nations Convention on the Rights of the Child is the basis for our policy for children. It recognises that any physical punishment is incompatible with the human rights of children. More than 55 nations globally have already responded to this international call to end the physical punishment of children. We are proud to join them. What the act will and will not do. The act will remove the defence of reasonable punishment. This means you can't physically punish children in Wales. Remove a legal loophole meaning that the defence of reasonable punishment cannot be used in unregulated settings including some places of learning, worship, play or leisure. Give children the same legal protection from physical punishment as an adult. Bring clarity, making it easier for children, parents, professionals and the public to understand the law. Help protect children's rights and send a clear signal that physically punishing children is not tolerated in Wales. The act will not create a new offence. It simply removes the defence of reasonable punishment. Will not stop parents disciplining their children. There is a big difference between discipline and physical punishment. Will not interfere with a parent's ability to parent. Parents can of course intervene physically. For example to keep a child safe from harm or help with day to day activities such as dressing or brushing their teeth. What happens next? The Senate has voted to remove the defence of reasonable punishment and the act will come into force in March 2022. Between now and then, there will be an awareness raising campaign to inform the public about the change in law. This will include television, radio and digital advertising. Welsh Government will ensure professionals who work with parents and children know about the change to the law. An expert stakeholder group will oversee the communications work. We will also work with organisations who will be involved in implementing the law change. The strategic implementation group will oversee and make recommendations to ensure the practical and effective implementation of the legislation. More detailed work will be managed by four task and finish groups. Times have changed, attitudes have changed. There is no place for physical punishment in a modern Wales. For more information on ending physical punishment in Wales visit gov.wales.end physical punishment. For positive parenting tips and information go to parenting give it time.


Today, we will talk about the point set topological aspects of simplicial complexes. So, this is the topic for module 31. By definition, all polyadrons being homeomorphic to simplicial complex, modulus the geometric generalization of the simplicial complex, they will share all the topological properties of that. And we have seen that in the very definition that the topology on mod k is finer than the metric topology induced on it by its inclusion in i power v of those functions which take only finitely many nonzero values. Anything which is finer than metric topology will have many, many other properties. One such thing is that it must be Hausdorff. Any space which is finer than a metric space is automatically Hausdorff because the metric space is Hausdorff. So, the first theorem is obvious here. Mod k is Hausdorff. So, the next proposition here is the key for several important properties of mod k. But this key is totally obvious from the definition. Namely, every mod k is actually disjoint union of all its open simplexes. Starts with zero simplexes. By definition, zero simplexes are open. Remember, modulus of simplex consists of functions which are nonzero at most at the vertices of the simplex with various properties, summation should be zero and so on. And the open simplex consists of those which have precisely not equal to zero on that set, on the set f. Everywhere else it is zero. On that set, on all the points here, the coordinates are nonzero, that is open simplex. The zero simplex, the modulus of a singleton, nothing but the function which takes one there and zero everywhere, everywhere else, on every other vector. So, automatically the singleton modulus of singleton is both, is an open simplex as a closed simplex. So, don't confuse it with open subsets and closed subsets. A closed simplex is a closed subset also, but open simplex need not be open everywhere. If they are open inside closure of f, closed simplex f, that's so. But what I want here is that they are, the mod k is precisely equal to disjoint union of of this open simplex. Take any point here, it belongs to precisely one of them, namely its support. Look at the support, that's a simplex. Then open simplex of f4 contains the point, contains that function and nothing else will contain it. Therefore, this is a disjoint union of these things. Is that clear? Yes, sir. Clear. We will use this in a very, very subtle, very nice way. This lemma, we will use that one. Take any subset of k such that every simplex f of k has exactly one point in the interior of f from A. A intersection f has at most one point, sorry. So, some of them may not intersect. If they intersect, that point of intersection should be one and it should be the interior point of f, one of the interior points. Assume this. You see the condition on the subset A, not a condition on a mod k or f. For each f, this should happen. A intersection f can be empty or A intersection f is one single point. And that point must be the interior again. If that happens, A is a closed subset of k and it is a discrete. I hope you know what is a discrete subset of a topological space. So, proof is very straightforward. So, we use the fact that mod k is disjoint union of its open simplex f. Suppose this is true for A, the assumptions on A I have given. Now, you take any subset of B, any subset B of A. That will also have the same property. Right? It will have fewer points and so that will have same property. A intersection B may be even empty also, but it cannot be more than one because even A intersection f has one. So, B intersection f will also at most one. Okay? It has same property. In particular, what happens is if you take the closure of f, closure of f will have all the smaller open simplexes also. Namely, take any subset of f, proper subset of f, all of them will come. That is the union. Closure of f itself is a disjoint union of open simplexes. Namely, all these open simplexes are subsets of f now, including f. Therefore, there will be only finitely many of them. If this has only finitely many open simplex, each of them contributing at most one point, B intersection f with the finite subset. Any finite subset of mod k is a closed set because k is Hausdorff. So, B intersection f is closed subset of f for every mod f. Okay? But then we know that if this is the property of any subset, that B itself must be closed. Intersection with every mod f is closed and mod f means B itself is closed in mod k. Okay? So, what we have proved is that every subset of every subset B of A, every subset B of A is a closed set. In particular, A is closed and it must be discreet, but it is every subset is closed, every subset is open also. So, it is a discreet. It is a discreet topological subspace as a subset of mod k and it is closed. Okay? The topology induced from mod k on A is discreet. Okay? It is a discreet space. Every point is open in particular. Alright? Now, this lemma was an easy consequence of the easiest observation here. So, now we will derive some consequence of this lemma 5.3, which is quite completely not so obvious at all. Each mod f is compact. That is obvious because we have seen that it is homomorphic to a disc. Right? But conversely, each compact subset of mod k is covered by finitely many open or closed complexes. A closed simplex is a closed set. An open simplex is not an open set. It is not an open cover for mod k. So, don't make that mistake. If we have a compact set covered by some open or has an open cover, then it has a finite sub cover. That is not the point here. The point here is that these open sets are not at all open in mod k. Okay? Only maximal complexes will have open simplex is open inside mod k. Yet, only finitely many of them will cover it. So, this is the point. Okay? Once open simplex is finitely many of them cover it, the closed simplex will follow because you can take the closure also. So, there will be finitely many of them. So, they will cover it. Okay? So, I am going to prove this finitely many open simplex themselves will cover. Okay? So, how do I prove it? I will mod k is homomorphic to a closed disc that we have seen. So, it is compact. Now, I am going to prove something, start with any compact set L contained inside mod k. Then, we can construct a subset A of L such that L intersection open, take any open simplex is non-empty. Then, it has only a single term set. In other words, if it intersects, then I pick up one point from this one. Okay? L is given any compact set. Okay? L, we are going to construct a subset A of L. Look at L intersection F. If it is non-empty, pick up one point from this F mod F intersection F. So, that put it inside A. Did he empty? Do not worry. Okay? So, what is a subset A? A is subset of L and for each open simplex, okay? L intersection F is non-empty and I have to give that A intersection F is also one point, one point or empty. Therefore, A has exactly the same property as in this lemma, previous lemma. Therefore, A is a discrete set. Therefore, being a subset of a compact set, a discrete set must be finite. What is the outcome? Look at, for each point in A, that is one and only one F, okay, which will intersect this one. Okay? But if you take all the F, they will cover the whole of L. Therefore, there are only finitely many F1, F2, F5s like this corresponding to elements in A which will cover L. So, the first part is over. Take closures here. So, they will also cover L. So, that will give you second part here. Okay? It is not true that closed simplexes which meet another closed simplex, they will be finitely in number. That is not true. Okay? It can take a point and then there can be infinitely many edges which are incident at that point. That is allowed. Similarly, one single edge may be incident on several triangles, infinitely many triangles. Okay? Yeah? So, a simplex, you have taken any statement. Mod F is covered by mod F. So, why do you need so close simplex? Right? But this part is very important. Every compact set is closed by this one. That is the whole thing. But mod F is covered by finitely many open simplex. So, I should have stated it may be separately for these two things. For mod F is covered by mod F itself, one single simplex. That is not the beauty. Beauty for mod F is open, but the proof shows that every compact set is covered by finitely many closed sets. Close simplexes like this. Okay? The next thing is another important property, interpolation. It says that mod K is actually normal. You can also say that, okay? It is finer than the metric space. Right? So, it must be normal. But that is say, there is a catch there. Something is normal and you have a finer topology. It may not be normal. All right. Metric space is for normal. Fine. But what we have put is a finer topology. So, you have to careful here. You have to prove that mod K is normal. It's not like house darkness. Okay? So, let us not hand wave here. Let us get a proof of that mod K is normal. What is normality? Given any two disjoint closed sets, they must be, you must be able to separate them by open sets, disjoint open sets. But there are other things. Given any closed subset, okay? And a continuous function into I, you can extend it to the whole of K mod K. That will also prove that mod K is normal. So, this is the property given by T's extension theorem. If a space has T's extension property, then it must be normal and conversely. So, that is what you must have learned in point set topology. So, I am going to use that. So, starting with a closed subset K of K, okay? And a continuous function from A to I, I want to say that there is a continuous function P hat from mod K to I which extends P. If I prove this by T's extension theorem, closed set mod K is normal. Okay? There may be different ways of proving this one. But I find this one to be the simplest. So, how to construct P hat? So, again, the recipe, you have already declared how to construct, contain the functions on mod K, construct them on each simplex, each closed simplex in such a way that on a smaller simplex, whatever you have constructed is extended down the larger simplex. Okay? If a function is constructed like this, then as a function, it makes sense first of all. Continuity follows because restricted to each mod if it is continuous. So, this is the recipe we are going to follow here. Okay? This will be the first time perhaps we are doing it like this. So, what I am going to do is I will construct a family of functions P indexed with F on mod F to I for each F. F is simplex such that if you take A intersection F, this must be the given function if E. Okay? That is the first condition. If it does not intersect, I do not care, it could be anything. Second condition is if I have already constructed it on F prime which is subset of F, okay? Then the phi F that I am going to construct restricted to F prime must be phi F prime. So, this is what as compatibility. If you have constructed the function on all the vertices, then when you are extending to, when you are defining it on an edge, you should take care that on the end point is already a function that you have constructed. And once all the edges are done on a triangle when you are defining, it should be on the boundary of this triangle, it should be already the function that you have constructed. Okay? So, if you follow that, then you are done. Okay? So, inductively you can do this namely take F F. Suppose you have already defined it on the boundary which is a lower dimension simplex. You need no lower dimension simplex. If you can extend it over F, you are done. All right? So, this is easily done by induction. That is what I am telling you by F. Since each mod F is normal, okay? Because it is a Euclidean space.  On that closed subset, you have a function continuous function. So, apply that mod F is normal, you get an extension on a mod F by the same t-section theorem. Put them together, you have the whole function on mod k. Okay? Here are a few remarks and on exercises. I will go through a couple of them. One of the things that we have we have claimed that mod k as a subset of the product space here, i power v is a closed subset. If v is finite, okay? We are asked to verify this. Okay? We have defined actually, if you just read carefully, when v is finite, we have defined a topology in a particular way. Use that to see that it is closed. For any simplex complex k, this is, this is a typo I corrected it, but today I am taking the wrong slide here. Mod k cross i, okay? It is mod k cross i, it should be, triangulate mod k cross i with exactly twice as many vertices as in k such that k cross 0 and k cross 1 are sub-complex. Remember k cross i, this notation was for this prism. So, I do not want to use that notation here. k cross k is a simplex complex whereas mod k cross i is a typological space. All right? So, I want to give you another triangulation of mod k cross i in which no extra vertices are introduced. Only from k cross 0, all the vertices of k will be there. A copy of that one k cross 1, again, same thing should be there. Okay? For example, if k is just one edge, then k cross i is the square. So, then you are allowed to take only four vertices, no more vertices and triangulate it. And we have shown that there are two ways of triangulating it. Either join this diagonal or the other diagonal. There are two diagonals there. You can take any one of the diagonal as another edge and you are done. The same thing you should try to do for all simplexs. So, that is the exercise here. Okay? But there is no canonicalness here now. And hint is, choose an order on the vertices. Some, some linear order. Order means that. Okay? That is the hint. Like when you one edge, you have e1, e2 or e0, e1, whatever. So, you have to choose a order and then use that order to write down. That is, that will help. I have given you a triangulation of r.  Okay? Do that. Give a triangulation of pn. Okay? So, hint is use a strangulation, but this is not going to help you much. But it is just a hint. That is all. This is not going to use a strangulation of the spheres and induction. Induction will be correct. But this is not quite, quite the stuff here. Okay? A strangulation will not give you a triangulation of pn. Here is another concept, which I am not very much interested in pursuing. So, I have put it in the exercise. Namely, that k be a simplicial complex, then the three conditions here are all equivalent. This is an extra condition mod k. Okay? It is not a part of every simplicial complex. The first condition says that each vertex of k belongs to finitely the number of edges. Okay? Only finitely many edges will occur there at each vertex. Second condition says that each vertex of k belongs to a finite number of simplicis. Okay? The third one says that the topological aspect. Mod k is locally compact. Okay? So, you see this is pure combinatorial condition. First two of them. The third one is topological. So, you are supposed to prove these three things. Such a thing if it satisfies any one of them, we call it k to be locally finite. Okay? A locally finite means all that you have to do is look at every vertex. There was to be only finitely many edges emanating from there. Once you immediately locally finite is done, automatically mod k is locally compact. Or, conversely, if you have started with a locally compact space, then if you want to triangulate it, okay, you have to choose a k which is locally finite. There is no other choice. Okay? Try to prove that. The next one is something about when can a simplicial complex embedded inside R n. Okay?  Topological embedding means what? Which is continuous function 1 1 and on to the image it is a homeomorphism. If you take the image as a subspace of R n, then there will be inverse function which is continuous. So, that is the meaning of topological embedding. Show that k has to be locally finite. Second is k must be countable. The number of vertices in k must be countable. That is the meaning of countability. Automatically, number of simplexes will be also countable. Okay? The certain set is countable is the meaning of this. The third thing is dimension of k must be less than or equal to n. So, this is harder to prove right now for you. Okay? This is harder. So, I have some idea why I have given at this stage. Later on this will become easier. Okay? After we will do a little more theory. Dimension of k cannot be bigger than n if it is embedded inside R n. All right? So, I will continue here. Here it was arguably topological embedding. In this exercise, you want f to be linear on each simplex. R n has a vector space structure. A subset k, namely mod f, that has a linear structure, affine linear structure. So, a function f from mod k to R n restricted to each mod f. If it is affine linear, then we say f itself is linear. This is just the abuse of notation, abuse of language. Okay? So, here I have stated as a theorem because I have lack of time. I am not going to trade this one. So, by following the number of exercise, you can complete the proof of this theorem. Namely, every locally finite countable simplex complex of dimension k, so all these all these conditions were there in the earlier exercise if there is an embedding. Now, I am reversing. In the converse, I have put dimension of k to be very small. Namely, it is less than half, you see. Then we can have a linear embedding f from mod k to R to k plus 1. Okay? So, what are, what is the idea? Idea behind it is there in these steps. All right? So, these are steps a, b, c, d. So, let me stop here. You can read them by yourself. Thank you.