Everybody forced here ripping a box of 2021 leaf metal pop sentry for Brian B. Thank you Brian See what you got bud Ben Wasen's root 21 pop century On Harrison Ford start with a Robert O'Neill auto looks like 215 It's like what's his name? Robert O'Neill there. Oh, here we go. Sheech Marin auto. There we go. Nice. Sheech four of five on the cheech Love me so cheap. Dude, what a photo. Yeah, I wish you had the big mustache That's pretty cool a Jim Carrey relic 39 of 80 Superstar swatches And a Joe exotic auto Let's go Joe. Oh exotic 11 of 20 There he is That'll do for your Brian congrats on the Joe exotic We'll get it right out to you


These few hours are all about science and research which has heard the interesting of research pitching competition and Discussion on research We wanted to highlight some really interesting companies that That show the importance of research research can also create really interesting spin-offs from universities and research facilities Yeah, definitely. We've got four Start-ups in the lineup here and there are all working on some really interesting stuff Four different industries, but they're all working on some pretty cool deep tech and I think by just taking a look at these companies we can Maybe see a little bit into the future of some of these industries The companies we've got in the lineup are solar foods Silo not in Gale health and Lilliam Now these companies are doing things like creating protein from co2 using only renewable electricity That's that's pretty wild But yeah, I guess let's go ahead and give the stage to the startups


The 11th Mu is currently deployed in US 5th Fleet as a presence and quick reaction force. This doesn't mean our warfighting capabilities waver. Our Kuwait full mission profile consisted of a variety of live fire ranges to include live fire maneuver and urban mount, all with various weapon systems. The realistic, high stress environment the Marines and sailors trained in will be applicable in real life situations. The 11th Mu is consistent with maintaining raininess and this is how we do it.


Welcome to Sperner Lemma. Today we are going to do purely combinatorial result and one single result, okay. As a result in topology, but a combinatorial result, it has a very distinctive role. It is a landmark result which opened the floodgates for many other combinator results inside topology and vice versa. It is very simple to state. It is stated for the simplicial complex, namely the standard n-simplex, okay. So that way it is very simple, simplest object as such. What you have to do is take any subdivision of the standard simplicial complex, simplicial, the cell n-dimensional, simplex delta n, okay. And take a simplicial approximation from delta n prime to delta n. One more condition you have to assume on this simplicial approximation phi. Phi, sorry, see it is just a simplicial map. It is a simplicial approximation restricted to the boundary complex delta n prime. The boundary of delta n, remember, is topologically Sn minus 1. On that Sn minus 1 to Sn minus 1, you have the identity map. That is a continuous function. So that function is simplicially approximated by phi on the boundary. Inside the simplex, it could be any simplicial map, okay. Then the number of n-simplicies of delta n prime of the subdivision which are mapped on to the entire of delta n, this number is odd. In particular, there is at least one, you see. There will not be two. There will be at least three then. If there are two, then there are already three. This number is odd. That is the meaning of this. In particular, there is at least one, and that is very important. Instead of proving that it is at least one, we are going to prove it is odd. So what is the meaning of that? We are only counting everything mod 2 and then show that it is one. So even the counting is done mod 2. We are not bothered about 3,500 and so on. No, no, no. Don't get it. Just mod 2. Go on. So this is what we are going to do. The proof is what in common-to-all method, what one does by counting in different ways, two different ways, maybe three different ways and so on. So I am going to state another version of the same lemma, Sperner lemma which I am going to define and that will be much more elaborate and that will give the proof of this lemma once you prove that. So that is the idea of the proof. So here is an expanded version of the same lemma. So delta n prime is subdivision of delta n and phi is a simple shell map. That is the same thing. Now l I am denoting the original delta n minus 1, the boundary instead of writing every time boundary and so on. Without any its subdivision. So l is the boundary of, sorry l e, one of the simplex is namely delta n minus 1. The last vertex is chakrav. That is sub-complex. For any n simplex f of delta n prime, I will denote alpha f. I am going to define various numbers here now. Alpha f is the number of n minus 1 phases map on to l. You have fixed one phase n minus delta n minus 1 is one of the phases, right. There are in delta n as n plus 1 n minus 1 phases. So I have taken l to be delta n minus.  Look at alpha f, denote the number of n minus 1 phases which are mapped all to l. Put S1 equal to sum of all these alpha f's where f range is over all the phases of delta n prime, okay. Next, that is S1. S2 denote the number of n simplex is of delta n prime. This time n simplex is which are mapped on to delta n by phi. Then last there is another one S3, the number of n minus 1 simplex of the boundary of delta n prime mapped on to l again by phi. So three different things we are counting. The claim is that all these three are equal if you count mod 2. If any one of them is odd, other two are also odd. If any one of them is even, all the other two are also even. That is the meaning of S1 is congruent to S2 congruent to S3 mod 2, okay. So let us prove this one. Then Sperna lemma will fall away. First note that fix one simplex f. See what is this? f is a n minus 1 simplex, okay. Alpha f will be either 0, nothing is mapped on to l or it could be one, one of the simplex supposed to f or it could be two of them, nothing more than that, okay.  So let us take for example 1 simplex. Then I am taking n minus 1 will have a single point. So these two points, none of them may go to that point, only one of them may go to that point or both of them may go to point. That is very easy. Now we take a triangle for example and take a simplex, one simplex. So there are three edges there. None of them may go there. Only one of them may go there. If two of them go there, the third one will have to go to a single point. There is no other choice. The same way, if two of the things go to n simplex, to n minus 1 simplex, the rest of the other things will have to be going into a smaller set than n minus 1 simplex. Therefore the first thing to observe is that alpha f is either 0, 1 or 2, okay. What does it mean for alpha f is 1? That means one n minus 1 phase goes to n minus 1 phase. It is only one. That means the rest of them must have gone to n simplex, okay. So that means phase restricted f is a bijection onto the whole of delta f, okay. Thus the collection of all n simplexes of f of delta n prime is divided into three groups, depending upon alpha f is 0, 1 or 2, a naught, a 1 and a 2, okay, according to the value of alpha f. It follows that if you work modulo 2, a naught and a 2 will not contribute anything. Only the class a 1 will contribute 1, because either this is 2 or this is 0, right. So that is what we have. So s 1, which is sum of all alpha fs, okay. Instead of taking all f, you can take only f inside a 1. So each of them will give you 1. Sum total is precisely now equal to s 2, because a 1 corresponds to those f which are mapped onto fully onto delta n. That is the definition of s 2. So we have already proved that s 1 is congruent to here, congruent. This is equal, that is equal. So it is equal to s 2. A congruence is modulo 2 here. Next. Now s 1 also counts the number of n minus 1 phases of g, okay. Now 1 phase is g of delta n prime boundary, which are mapped onto l, except that you see if you look at all n minus 1 phases, each n minus 1 phase will occur twice in a n phase, in a n simplex as boundary of one side and other side. There are exactly two sides inside a delta n. There is no other choice. So it will count twice if and only if it is an interior n minus 1 phase. On the boundary, it will be only one. It will count only once. Therefore, cutting down all these entries which are occurring twice leaves us with only those g which are in the boundary of delta n. The boundary of delta n n minus 1 phases occur as a phase of an n simplex only once, only one simplex. The interior thing will occur exactly in two different places, two different simplex. So when you are counting s 2, those things won't contribute anything. So this last thing tells you that cutting all these entries, okay, the sum total is actually equal to s 2. So s 2, sorry s 2 congruent to s 3, okay. So therefore s 1 and s 2 and s 3 are congruent to each other. If you still have difficulties, what you have to do is do it for n equal to 1, where it is completely obvious, okay. You work it out. You have to read carefully. I have read it in the beginning at least three times and now I have taught it in n times. So that's a different thing. So everybody has to work it out on its one. Do it for a single edge. You have to cut it into number of edges, number of edges, right, because it is subdivision you have to take and then work out what happened, what is happening for s 1, s 2, s 3, understand that. If you still have doubts, do it for a triangle, the next stage, okay, see what happens. Beyond that, you don't have to do, it's not easy either, okay. After that you have to do, by that time you must be very, very confirmed that this argument works. Only logic will remain there after that. No pictures, okay. So now we can prove the Sparer lemma by induction, because we have a passage from delta n to delta n minus 1, right. That is the whole idea. So let c n n greater than 1 be the statement for Sparer lemma. Accordingly, we shall temporarily denote these numbers s 1, s 1 n, s 2 n and s 3 n, where they are located, okay. And we want to show that s 2 n is equal to 1 mod 2. That is the Sparer lemma. The first, the same middle one, okay. For all n we want to show. For n equal to 1, this is very easy, okay. Namely, s 3 is 1. Since phi is the identity map, now you have to use that well. Phi is the identity map on the boundary means say 0 goes to 0 and 1 goes to 1. There is no other choice, because that is already simple here. After that, so b delta 1 is boundary, b delta 1 c 1 e 2, okay. So that's just two vertex, okay. So now, having shown that n equal to 1, this is true. Assume the statement for c n minus 1, n minus 1 and n greater than 1, okay. Since phi is a simple approach to the identity when restricted to the boundary, each n minus 1 phase of phase g prime of g, where g is an n minus 1 phase, okay, of the boundary will be mapped into itself because it's identity map. In other words, only some of the n minus 1 phase is l prime of l prime are mapped onto l, okay. Therefore, it follows that s 3 of n is same thing as s 2 of n minus 1. But now we have proved that s 2 of n minus 1 is already odd. Therefore, s 3 of n is odd. The s 3 of n is again s 2 of n, modulo 2, okay. I will repeat this part. So what is happening here? Look at this one. Look at n minus 1 phases of l prime, l is one of the simplex, okay. If it's divided into some, you know, into smaller pieces, okay, n minus, there will be n minus 1 phases, okay. They, because identity map, they could not have gone out of the l. They will have to be inside l. So that is why you can apply induction for this delta n minus 1, okay. Therefore, you can look at this s 2 n minus 1 is already odd, but that is equal to s 2 of n, s 3 of n for this part. So I am computing s 3 of n, but it can be counted by s 2 n minus 1. But s 2 n minus 1 is odd, so s 3 of n is odd. So on the boundary, its identity map is used to get into the induction hypothesis, cutting down the dimension. So Sperner lemma to many results we can apply now, okay. Our aim is to prove the Brouwer's invariance of domain, okay. But first we can prove Brouwer's fixed point theorem for general case. We had proved it for n equal to 2, right. So let us, let us be done with that. For any integer n greater than or equal to 1, each three statements are equivalent. I think I have done it for n equal to 2, but the proof is exactly the same in general case. So I will repeat, what is this? The first statement is Brouwer's fixed point theorem. Every continuous map on the closed unit disk to unit disk has a fixed point. The second statement is the boundary s n minus 1 of d n is not a retract of d n. The third statement is s n minus 1 cannot be contractible. Yeah. So if you might have forgotten maybe we will repeat this proof quickly, okay. So how a implies b? a implies b we are trying to prove what we are trying to prove. If not b then it is a not a. Suppose s n is a retract of d n, okay. If r is a retraction then we will get a contradiction to a. So if r is a retraction, a retraction means what? A continuous map such that on the boundary it is identity map. So take I think take alpha to be the antipodal map. Then inclusion into d n. We get a map from d n to d n. Take a point on the boundary. It goes to the same point here. Under this it goes to minus. Under eta it goes to again minus, right. Take x here on the boundary. It goes to x itself here. This under alpha it goes to minus x. Then again goes to minus x. So x has gone to minus x. What is happening? What is happening? Any point here, okay. Post something goes to minus x goes to minus x. So where alpha x is minus of this. Eta is the inclusion map. Then f has no fixed point contradiction to a, okay. So if there is a retraction then there is no fixed point. If you take any point on the inside the boundary, in the interior it has gone already to some point in the boundary. Again under alpha it goes to a boundary point and retouch it goes to boundary point. But the original point was in the interior. So those two cannot be equal anyway. So chance was only in the boundary. But the boundary points go, x goes to minus x. So that is also no. So there is no fixed point at all. That is the contradiction, okay. Now let us prove beam prices. The proof is exactly the same as that we wrote for n equal to 2, okay. So what we have to do? We have to draw a picture x, fx, draw the line, joining x and fx, extending towards fx, get a point gx. That will be a retraction. So that is what we have done, okay. Now let us prove b and cr equivalent, okay. We have seen that if x is a contractible, if fint only if x is a retract of the cone, this was one of the theorems, okay. The cone over sn minus 1 is dn. So what does be say the boundary is sn minus 1, dn is a cone. The cone is a retract of the x is a retract of its cone. Sn minus 1 is retract of the cone over that. Then what? Then x is contractible. So here is sn minus 1 is not contractible. Sn minus 1 is not a retract. The same thing as sn minus 1 is retract. Sn is contractible. Sn minus 1 is contractible, right. Therefore, since we have proved b, not contract, say sn minus is not contractible and conversely, okay. Now how we are going to use this to prove Brauer 6 point theorem itself. This is our equivalent. I have proved any one of them. We do not know whether any one of them is proved. If you prove any one of them, all the three gets proved, right. So for n not equal to m, yeah. Finally here, to prove that each of the statement is true, we shall prove b. That is there is no retraction from dn to sn minus 1. If there is 1, okay, take a simple shell approximation to it. Call that as phi, okay. Apply Sparner lemma. Sparner lemma says that the number of simplices delta n, mapped on to the whole delta n is at least 1. It is actually odd. But if it is a retraction, the whole dn is going inside sn minus 1. Therefore, no n simplex would have been mapped on to n simplex, okay. On the boundary, no matter how many times you divide, the boundary there will be at the most n minus 1 simplices or smaller, right. Because to begin with, there are only n minus 1 simplices and you are going to going on dividing them, that is all. So there are no n simplices left. All the n simplices are inside, they are all going on to the boundary now. The boundary has only n minus 1 simplices, nothing comes into the whole of delta n, all right. So Sparner lemma gives you immediately that there is no retraction of the entire disk on to the boundary. Therefore, Brause-Wiffen theorem is also proved, okay. Now we will prove the simpler version of Brause's invariance of the main. Many books call this itself as the Brause's invariance of the main. What is it? It says that Rn and Rm, n naught equal to m cannot be homeomorphic, okay. I have stated it next to that. Rn and Rm are not homeomorphic. How do we prove that? Suppose there is a homeomorphism, then you know that you can take one point compactifications of this, they will be also homeomorphic to each other. What are one point compactification of Rn? It is Sn, Rm, it is Sn, n and n are different, okay. So we have got a homeomorphism between them. In particular, Sn and Sn will be homotopy equivalent, right. You see the theorem that says for n naught equal to m, Sn is not homotopy equivalent to Sn. So that will complete the proof of Brause's invariance of the main, the next theorem. How does this one is proved? Suppose you have a homotopy equivalent from Sn to Sn. We can assume n is less than m by interchanging the n and m, okay. Now we have already proved that if n is less than m, any map is not homotopy. So this f is not homotopy. By pre-composing with the homotopy inverse, homotopy inverse is from G to Sn, right. So G from Sn to Sn, if you compose it with f, composing with any f, homotopy, if f is homotopic to G, G composite f is homotopic to G composite the, sorry, if f is homotopic to constant map, G composite f will be homotopic to G composite constant map, it's a constant map, right. Therefore, what you get is Sn to Sn, see Sn to Sn is G, then f Sn to Sn back, Sn to Sn, okay. G composite f is homotop, null homotopic is what you get. But G composite f by definition is homotopic to identity map. So we have got Sn to Sn, identity map is null homotopic, but we have seen earlier, any space, if the identity map is null homotopic, then it's contractable, right. Right. Now part C of the previous lemma is you that there is E2 added conditions, Sn minus 1, none of the spheres, if N is floating here, this is not fixed for all N, this is not contractable. So I repeat, because of this theorem, what we have proved is two different spheres of different dimension cannot be homotopic type, same homotopic type, in particular they cannot be homomorphic. From that it follows that the corresponding RN and RM cannot be homomorphic, okay. So when this was proved, it was a very great result, landmark result. How Brauer proved it more or less through his invention of homology, he had different proofs of this also by the way. It's a proof by some dimension theory and so on, which are much, very much more complicated. So nowadays, homology theory gives you the standard proof of this one. So what I have got is, I have got you this one by just simple shape approximation and sperm outlet, okay. There is a stronger version, I obtained you this weaker version, what is that version that says that if you take an open subset of RN, non-empty open subset of RN, suppose it's homomorphic to another subset of RN, just a subset, not the whole entire, there is no homomorphism of the whole space, just a subset, okay. Suppose this subset for example, A is homomorphic to an open disk, just then A itself will be open inside RN. So that is called actually invariance of domain. Remember, domain was the word used for open subsets, open and connected subsets inside analysis. So that is how this came to be. So that will be our next task, proving the full version of of invariance of domain. So we will take it up next time. Thank you.


Send it. That was a hit! Well, I thought you didn't know this gun. Don't, I guessed. Because it's on the 14 and a quarter. And you just made 20 bucks.


Good morning everybody another one This is Nathan Zowder from Drake, Ontario, and you are watching Trucker Josh Vlogs on YouTube As you can tell by the shape of it. It's a little different than the last couple underneath Same deal though tarped going to Brainerd. Let's go Just like I mentioned in yesterday's video After we're done unloading today in Brainerd yet, we're going to head over to Fargo, North Dakota There's a load waiting for us there. We'll put it on our trailer tomorrow morning. We'll head home with that When I get home, I'm gonna have to take a look at my starter I think the solenoid might be going on it or maybe there's just a bad connection Sometimes this morning when I tried to start it It's not cranking Fiddle with the ignition for a little bit and then it cranks over then it goes so Make me a little bit nervous. I can hear that the starter was spinning though So, you know how when the starter spins It spins and then it shoots out the gear right which turns the motor and then it sucks it back in I can hear it spinning. So I think it's just a little It's not shooting out the gear into the motor to The starter spinning is but it's not cranking the motor that could mean that I need a whole new starter. I Don't think it's the solenoid if the starters actually turning in there though. It could be I mean, I'm not the the the biggest expert. I've had this stuff happen to me before That's why I knew what the issue was right away. Oh, great. Here goes the starter so That's something we'll be dealing with along the way hopefully Well, we'll have the part waiting for us at home And we'll get a switched out when we get there. So hopefully it won't give us too many issues until then I just got to get this load delivered go pick up my next one. That one's gonna take me back fingers crossed at least it's just a starter right and not a blown piston or blown motor or anything Starters easy Practically it's a bolt-on part for most part for the most part I don't know what they're going for nowadays though. Probably a few hundred bucks like I always say We fix it and we move on When you come up to a problem, you don't panic, you don't stress out I'm talking to myself now because I usually panic and stress out Structuring about this the whole time Talking to myself now Stay calm. We have a plan. There's a part waiting for us back home. The truck is running now It does crank over the starter is turning. It's just it doesn't always want to grab the motor We're gonna be okay. It's fine. I'm on here Going in this direction when I'm headed down towards brainer and I can go right through here But this is obviously just one lane one way, right on the way back up to Ontario You have to go down a back road off to my left South of here, which is actually a better shape than this Practically pretty much just three bolts and then a bunch of A bunch of connections pretty much you go and you disconnect the batteries first And you disconnect the power source to the starter all the other little wires attached to it You touch those I'm gonna have to buy a couple of tools, but it's okay. I need a bit of an extension Put the new one in bolt it in Reconnect all the little wires reconnect the power supply and then go and reconnect the batteries when you're all done And trucker Josh can do in the park somewhere get a starter for myself and Bring it on back to the shop, and I'll work on it this weekend. You can see he's Unloading me really quick I'll be in and out of here tarps rolled up equipment all put away less than 45 minutes and off On the way to Fargo, North Dakota, which is another 239 kilometers two and a half hours of driving That's about 150 miles In there someone just estimating 150 miles I Want to try and find a spot to park at the Flying Jay though. I have my doubts that it'll work Because that flying Jay in Fargo I've been very disappointed in the direction of their parking lot in the last few years that parking lot used to be a Go-to for me. There was always spots to park Well, it got full, but you know, it was filled up with drivers that actually needed to park now You go to the Fargo flying Jay like I guess this is at the risk of me sounding like I'm complaining because I am bear with me Fargo North Dakota the Flying Jay a Third I'd say close to between a quarter and a third of the parking spots last time I was there with my father No, and we're looking for spots was drop trailers It almost looked like an entire like companies trailers were just scattered through at the parking lot taking up just two dozen parking spots just drop trailers and if it wasn't that it was people's personal vehicles parked in truck parking spots a Huge number of Bob tails and I understand that's a That's a truck stop by truck stop scenario usually I always When I'm Bob tailing I won't take up a full five's like 75 foot spot That spot someone with a trailer who's been driving all day needs that spot. I'm Bob tailing. I can go park anywhere sometimes there's a There's a Bob tail and RV side at flying Jay you can go park at sometimes There's a Bob tail section you can park in and people still park in the big spots Even though there's a section for them and then Or you could go you could park anywhere Walmart any any parking lot anywhere side of the street You're Bob tail. It's almost like you're driving a car like you can park anywhere You don't need a full spot But I would go to the truck stop park in a spot if I can't find anywhere else Go in have my shower get what I need for the night and then move my truck out of that spot and to a different lot Somewhere if I have to just so that someone who comes in who needs it because there's nothing more frustrating Then you know end of a long day you're coming in with a full load You get to the truck stop and half the spots are Bob tails Or half the spots are You know drop trailers So I apologize if I sound like I'm a little bit frustrated. I was last time I was there I'm not frustrated right now. It's a long time ago. I'm over it. Believe me sort of maybe not really Not really over it. I'm I'm still kind of upset about that But we got there and the whole lot there was only maybe like out of let's say a hundred parking spots There was only maybe 30 spots left for actual drivers who needed them and those fill up very fast Well, so very fast The reason I bring that all up now is because that's where I'm headed tonight and I'm going to get there Hopefully before midnight around 11 No between like around 10 30 is what I'm gonna get there. I'm guessing it's gonna be the same scenario I talked to the manager there flying J I asked him what was up with all the drop trailers and apparently they don't have authorization to drop them That's why I bring it up. It's not like they had permission No, this like some company there is dropping trailers and just leaving them there either all weekend or all week and not Asking permission Which then the next question would be like I just told them You know what if you're not allowed to drop trailers at the truck stop parking That's a big rule. It's a big taboo unless you go and ask permission They usually give you a day or a four-hour period or whatever they they got to get your plate number down and stuff And you know, they'll give you a certain amount of time It's not like they never let you park there or drop your trailer there But this this was over the top and if they hadn't asked permission and they're just dumping all these trailers And you're not leaving them there for days. I told them, you know what? told them Get a wrecker out here get them all out of here bring them to some big impound lot somewhere and let the owner of them deal with it That's what I would do But maybe I'm way off base. Maybe I'm out of line You know, I'm willing to be wrong if I'm wrong and I'm just if that's just the way it is Okay, if that's if that's within the boundaries of the rules and I have nothing Inconvenient for us drivers who need a spot at night, but if you're okay with it and you own the place Hey, it's your place, right?   There's the loves across the street and I can go over there I got a fuel card for loves to I'm gonna start fueling over there. I Mean they never have dropped trailers at loves In Fargo never but they don't have a big very big parking lot either so It's not just this Fargo or this is the thing I've noticed this in many different places across Canada too a Lot of truck stops in Canada sort of turn into almost warehouse yards, you know guys They just pull in there.  And they don't always ask permission to do that either and sometimes their cars get towed and other times the Just Staying them saying like that. I don't know. Have you guys noticed this where you are too? Am I the only one I need to know I need to feel like I'm not alone Paperwork signed everything's off the trailer except for my equipment, which has been secured put away properly Nice and neat and now We'll go check out the situation in Fargo. What's the situation? Another load complete another happy customer if I didn't show you You wouldn't believe me. I got a parking spot like right near the front, too Right in an open spot where I could drive straight out in the morning It's a safe spot. It's what I call it Well, I don't got to worry about my neighbors ripping off my hood first thing in the morning because they can just drive straight out here To the wide open lawn. I was not expecting that and it looks like all of the drop trailers from The last time are gone They held true to their work. Maybe I made a difference. I Mean I did talk to them about having like two dozen drop trailers in their lot last time I was here I didn't think they'd actually listen nice They probably had nothing to do with me There they probably had lots of complaints. I was probably just one of many Looks like we got lucky tonight And it's good to see that you know this whole parking lot is filled up with drivers who need them You know every spot is filled by a driver who needs that spot Total total like black-and-white difference from the last time I was here Maybe that was just a bad day today was a good day found parking Got a load on the north side of Fargo tomorrow morning And I got sane before I think I told you already a couple times. I want to get unloaded tomorrow almost Friday I'm gonna get loaded first thing and then get to Winnipeg get unloaded and then go home And then I'm hoping I can find a starter for this truck I'm hesitant turning this truck off right now. I'm just gonna leave it running till I get home Because last time I shut it off The starter didn't want to engage the engine. It was spinning, but it didn't want to engage the engine So I want to make sure I can get home. I can get the part and just replace it myself I'm pretty sure like I was saying just three bolts and a couple of wires and we're good to go Never done it before but I'm gonna figure it out Save myself some money. I Just got to find that part so if I call into my regular shop Where I take this thing for services See if they have it if they don't have the part then I'll call Kenworth and Winnipeg see if they have the part I'll find it somewhere. It's a starter. I mean, it's gotta be pretty common, right? I Hope I don't have a big long wait on it. Anyways, thanks for joining me today everybody though. It's been a fun day Tune in tomorrow for some more fun. We're gonna go all the way back up to Winnipeg. Oh But first I'm gonna go to this wonderful wonderful place that's in my head Or dreams come true every time every time so I have to lay down right over there This is like my my routine and lay down right there. I close my eyes and before you know it. I'm in dreamland Do you guys dream at all? Is it true that some people never dream if you've never had a dream in your life? Let me know down below in the comment section. Do you dream every night? Do you remember your dreams? My dreams are weird I remember them only for about an hour after I wake up and I'll remember them vividly and Sometimes they'll even make perfect sense Like it'll be a whole storyline and nice beginning middle and end and I'll wake up like wow that wrapped up really nicely What a nice story that was and an hour later. Don't remember a thing about it I never remember my dreams for very long, but I know I have them. What's it like for you? Can you control your dreams? Sometimes I can most often I'm just along for the ride. Let's talk to you guys tomorrow


and Santa Clara for the Velocity Conference, Riley Media's Velocity Conference. This is Silicon Angles theCUBE, our flagship program. We go out to the events, extract a signal from the noise. I'm John Furrier, the founder of Silicon Angle. I'm joined by my co-host. Hi everybody, I'm Dave Vellante at Wikibon.org. Nicholas Zekis is here. He's a staff software engineer at Box. Nicholas, welcome to theCUBE. Thanks for having me. Yeah, so you're welcome. So we're here at Velocity, your peeps. What's the vibe so far? I think there's a lot of energy, a lot of excitement as there always is every year. I think this is one of the conferences where when you hang out in the hallway in between the talks, you get to learn just about as much as you do when you're in the talks, because there's so much cross conversation going on, people sharing ideas and experiences. It's just a lot of fun. Yeah, so I appreciate, by the way, getting dressed up to come on theCUBE. Most guys don't know what this is at this conference. So what are some of the conversations that you've been hearing today in the hallway that have been interesting to you? Well, as you're walking around, you hear a lot of mummals of la-la-la performance, and then you hear like ma-la-la-la, oh, JavaScript, which is always interesting to me, because that's what I spend a lot of my time working on. There's a lot having to do with the amount of JavaScript people are using and the JavaScript solutions that they're using, because there's a lot of libraries out there and people say, oh, well, I'm using Angular, oh, well, we ran into these sort of problems and here's how we solved them. There's a fair amount of that going on. There's a fair amount of discussion about mobile performance, since that's something that is still really new and something that we're all dealing with just kind of as a fresh problem. So a lot of talks about some of the keynotes this morning and the performance tools related to mobile that were there. Some of the challenges about going over 3G versus LTE just a lot of stuff along those lines. The recurring theme on Twitter was seeing a lot of tweets coming in here, but the recurring theme in most of the talks here at Velocity is the perception of speed and user experience is just as actually important as the system speed. Do you agree with that? Absolutely. I think that perception is sometimes more important than reality, that if you can make people believe that what they're seeing is faster than what it actually is, then they're happier and you can do that by doing a few different types of tricks. And one of those is just making sure that you understand what your user is looking to do when they come to you and making sure that they can do that as quickly as possible. So I got to ask Joshly Box, I still call them box.net, they changed the name to box, but Mark Hawkins and I always talk about box.net, it's kind of like branded in our head. They have challenges too, it's cloud-based and it's now they're going into the enterprise, it's mess-out-lays related, but more importantly, you worked at Yahoo front page and so that's sacred cow for Yahoo. I mean, that's not like no one just, it's not like Mark Zuckerberg breaks stuff and then you don't do that when you have about 50 million people or more hitting that thing a day or a minute, whatever the stats are, it's massive. So you've got to really focus on page load, utility speed, that perception is one angle. So you got, in managing that every day, I mean, how do you do that?  Yeah, there's, so I think that everything starts with analytics is that it's hard to know if you actually are slow or not if you don't have anything that you're watching all the time and I can visit a page today right now on my laptop and say like, wow, that's really slow and you using a different laptop might say, wow, that's actually really fast and so getting to a good definition of what is fast versus what is slow is the first important step. Let's get our analytics in there, let's figure out what our important metrics are and then once we have that, let's figure out are we happy with those or not and some of that is just basically like, you know, if the time you spend on the server, rendering a page is like two or three seconds, you should be unhappy with that, that's not good enough. However, then you put that in front of real users and you see what their reactions are, is this fast, is this slow and get that feedback and some of the interesting things that we learned are that there's a lot that you can do with perception to tweak whether things seem fast or slow and one of those was if you have a very large blank space on your page and people are staring at that for a second, it's gonna seem slow, whereas if you're able to make a blank space that doesn't look as empty, so you actually have some frames in there, you have even like a loading spinner, that makes it seem not as fast and so we did a lot of experiments as we were trying to dynamically load more content onto the page where at first we started out with this giant blank area and people said, wow, that seems slow and we figured out ways to make it seem like it wasn't as big of a blank area without changing any of the actual performance and put it in front of people and then they came back and said that seems much faster. So take us through analytics, I mean monitoring and app monitoring and analytics is always kind of like, is it big data? Is it a little bit different? Both, when you hear A-B testing, everyone talks about A-B testing, it's a way to get to validation on that. So what is the current standard or momentum around the current app and monitoring analytics? What are the frameworks and things that are being used? Well, there's a lot of different tools but they all fundamentally do the same thing and they're measuring different points in time from delivering your web app from the server to the browser. And so one of the most important pieces of data that we look at with the web application is how long does it take to get to the onload event? So how long before everything that's on the page is completely loaded so people can start using the application? And a lot of people spend a lot of time looking at that specifically. One of the tools that comes from another guy who was at Yahoo, Philip Telus, is called Boomerang, he works for SOASTA now. And that basically is a technology that helps you measure not only onload time but a lot of the other associated times between that. So how long does it actually take for a DNS lookup? How long does it take before you start to get data to the client after making the initial request? And how long does it take for JavaScript to load? How long does it take for the images to load? And things like that.  Velocity conference isn't about the cloud only. It's not about just UX and front end development although they got fluent for that. Probably a field day for you to kind of hang out a fluent given all the JavaScript focus. But it's really a hybrid integration of design, decision making at the infrastructure cloud or cloud ops or dev ops, what I want to call it and the app side. So it's converging and pretty clear that that's a trend. So we probably agree with that. But I want to ask you though in context of things like Node, right? Node has opened up the kimono for creativity because you can have low latency discussion to say the browser. But one thing that wasn't talked about a lot at Fluent was WebSockets, right? So WebSockets has been around. It's not like a new thing, but with browser, native browser thing, you're seeing a much more reliance on that kind of linkage or that connector for lack of a better description. So okay, you got Node, you got JavaScript on the server, you got native browser. Where's this going? Now from your perspective, you've been the Yahoo guy on the front page. Do you want that sacred cow and the critical nature of it? Speed, every little ounce of energy you can squeeze out of that makes a difference in the business model. So okay, given you have that and you were in this new world, what does this mean? What is this all the node, trend, WebSockets, native browser velocity? Tie it all together for us. Yeah, I think the most interesting part of that is that you can write one language and build a complete stack out of it. And that's freeing up a lot of people because there were engineers that loved JavaScript, but were not as enamored with the browser side of it because browsers are really hard to deal with. And there are dozens at any point in time. They all behave slightly differently. And that's kind of a pain. And there is something nice about being on the server where you control that environment completely and you know exactly what version of Node you're going to be using, how much memory you have and all of the other aspects of the system. And so now for those people, and I worked with a few of them, we said, you know, I love JavaScript. I just don't want to deal with that HTML and CSS stuff. Now there's actually an opportunity to have a really awesome fulfilling job by doing Node on the server. And that allows you to bring a lot of knowledge about JavaScript over into the server world that can make a huge difference. Things that are very hard to do with languages like PHP and Java are actually very easy to do with JavaScript. And when you have Node compiling JavaScript down into byte code, then it can run just as fast, if not faster than those. So I think that we're seeing a bit of an evolution where people who started out as web developers are starting to say, you know what? My passion is actually on what's going on in the server and getting data to the browser, but now I can use a tool that I'm familiar with to do it. So I got to ask you the kind of fundamental elementary question, which is good to have on the archives. There are a lot of new developers out there. We were commenting earlier, like, you know, the new, the news for VC funding for entrepreneurs and the new series A is the new series B. It was just written by Andrews and Horowitz. Saw that on the web. And meaning they can get some seed funding and then they can get to scale pretty quick. So that means you've got to make some good design decisions, even as a small scale, not just hyper scale. So if you do that right, you could really cross over and not be one of those abandoned startups. Or if you're an IT guy and you're doing, hey, I want to roll out some mobile apps, I want to do it right. So for the folks out there that are doing, making design decisions around UX and UI, for say a mobile app that has a node or something else in it, and they want to make it fast, they want to do some stuff, what would you say to them? What would you share with them? As key things to think about, whether it's features, functionality, platform stack, et cetera, what's your advice? I think the most important thing is to understand your users. So why are they coming to you and what are they attempting to do? And then you make the fast path, whatever they're there to do. So I like to use the example, like Yahoo Mail. If I'm logging into Yahoo Mail, then chances are, I'm either wanting to read an email that somebody sent me, or I want to write a new email to somebody. Or you might want to just see an ad. That's all I'm saying. There are plenty of places to do that on the internet. We're not going to have that. I had to dig on Yahoo Mail. So I had to do it. And as long as you can do that, as long as your users can do that when they come in, they're going to feel like the experience is pretty fast. So making sure that you really understand what user expectation is when they're coming to your app I think is most important. So fast path in the right experience. Yeah, fast path in the most important thing that they're coming, that they're coming to you for. And then after that, you're free to do pretty much whatever you want. So if you decide, okay, I'm going to fast path composing mail, then maybe in the background, you start to load some of the other stuff that is on your application. But you never want to leave large blank spaces, tons of loading time. One of the things that annoys me about Gmail is that loading bar at the beginning. Because I know it's telling me, I'm not ready for you to do what you came here to do. And I think that goes to the perception of performance more than anything else. That if there is some way to progressively load things so that you don't get those giant blank screens and like long waits with loading, whether it's a spinner or a progress bar, that will make it seem faster. So let's talk a little bit about your talk here. Tongue in cheek, what do you got against JavaScript? But your talk is enough for the JavaScript already. And we almost put that at the context. You're not against JavaScript, obviously, but you want to judiciously use it, if I could say so. Yeah, definitely not against JavaScript. I love JavaScript, it's my favorite language. And it's what I built my career around. So I have no problem with that. The big issue that I'm seeing is that people are using so much of it that they're running into problems they wouldn't otherwise run into. And when I was consulting, I would go into these companies and they would say, help me, our application is slow, what's going on? And I would go in and inevitably I would see, we're talking about like one to two megabytes of JavaScript being loaded into the browser. Well, of course it's slow because you have that much code. So how can we achieve the same things, but with less code? Yeah, how much of that one to two megabytes is actually necessary in being utilized? That would be your experience. A lot of times when I would go in, what I would find is that there would only be about 35 to 40% of that code that would be used by the time the page was completely loaded. So that meant that you were loading in over a meg because it might be used at some point in the future. And I think that we're starting to see that a lot more. People are saying, you know what, computers are faster, browsers are faster. I'm just going to start loading a ton of code and we tend to repeat this pattern over and over again as engineers. Because when I was growing up and I had an Apple IIe, people were very, very careful about how much memory they were using in their programs. But as computers got more powerful, I said, you know what, memory is free, CPU is free, I'm just going to do whatever I want to get the end result. And we always end up hitting this barrier where we run into a performance problem. And the answer a lot of times is like, well, the computer will catch up eventually, we'll just keep what we're doing. And so what I'm trying to focus on is you can actually achieve a lot with a lot less code if you stop and really think about what it is you're trying to accomplish. Okay, so obviously that's what you're going to be talking about, your talk is tomorrow, right? Yeah. Good, so what time is that? Just a little plug here. It's five o'clock. Five o'clock tomorrow, so check that out. Talk about other sort of lessons learned, sort of best practices that you're advising folks, maybe as a former consultant. Once a consultant, always a consultant I save. So things you see that might be useful for some of your colleagues and peers. Yeah, I think one of the biggest things is to make sure that you're taking full advantage of the various layers of a web application. And by various layers, I mean there's JavaScript, obviously, there's CSS, there's HTML, there's the server, and there's the browser. And all of these parts have important jobs to play in the overall lifecycle of your web app. And just like any team, that when you're able to delegate responsibilities efficiently across all of those team members, then everything works better. So I would always leave my clients with a phrase that's when you can do it on the server, do it on the server. When you can do it in HTML, you do it in HTML. When you can do it in CSS, you do it in CSS. And only once you've exhausted all of those other possibilities do you go to JavaScript. And by doing that, you create a nice balanced web app where you don't have to touch JavaScript every time you have to make a change. And that, in turn, helps a lot with the performance strategy. Yeah, so avoiding JavaScript creep and then getting much more efficiency out of your code. What's going on at Box these days that's exciting you? What are you working on that you can talk about that floats your boat? Yeah, I think the most exciting thing about Box is how the company is growing. And one of the problems that I love solving is for scale. And Box is going through that place that I think a lot of companies want to get to that is we've grown from a small company and have started to get larger and larger and larger. And as you do that, it's time to shift the way that you think about solving problems because the way that you deal with 10 customers is not the way that you deal with 100 customers. And so there's a lot of interesting growth that's going on, both technology-wise and organizationally, and the company as a whole, obviously we're a sponsor at Velocity this year which is really exciting for us. And really just getting in and seeing all of the great work that people have done to lay a foundation of a really strong company and helping that organization to take the next step. So how do we eventually end up at the same scale as like a Yahoo or a Google? So talk about your sponsorship here. What's the motivation? What do you guys get out of the sponsorship here? It's a little bit different than a belly to belly exchanging cards type of thing. It's, you know, you're giving back to the community, you're recruiting people. Talk about that a little bit. Yeah, well, I don't think that there's a huge secret to why companies sponsor conferences. We want to let people know that we're a part of this tech community and we're giving back, I'm giving talks here. We've had a lot of people from Box giving talks at like Velocity in Europe. And we feel like we have a lot to offer because we're in a space that's kind of interesting and that I think a lot of people are still unfamiliar with that a lot of companies who usually sponsor large conferences are more consumer focused but there's a really interesting and compelling technical set of challenges when you're dealing with the enterprise and we want to share our experiences, give back and also just interface with everybody else and see, you know, how can we take what we've learned that may apply to what you're doing? How can you explain to us what you've learned? Maybe we can apply that as well. Excellent, all right, Nicholas Sekis, thanks very much for coming on theCUBE. We appreciate it. John, we're going wall-to-wall today. It's tomorrow. Yeah, and tomorrow, this is theCUBE. We'll be right back with our next guest after this short break. This is live coverage of theCUBE here at Velocity Conference in Santa Clara. This is Silicon Angle and Mookie Bond. I'm John Furrier with Dave Vellante. We'll be right back with our next guest after this short break.


In the year 2000, at the very depths of the technological realm, there existed a mysterious operating system called, Windows Code Name Jupiter. An operating system that was said to have been named after Jupiter, the fifth planet from the Sun and the biggest of all the solar systems planets. After the tales of Windows Code Name's Moon, Mars and Ceres, Code Name Jupiter was said to have possessed powers beyond the imagination of human beings. Rumors began circulating claiming that it was a project at Microsoft that was going to become a very successful operating system. If it weren't for its strange reality manipulating superpowers to have plagued the operating system, the project was therefore abandoned as it was deemed too dangerous to fix the bugs and superpowers in the operating system itself. As the rumors of Jupiter's own existence spread throughout the technological community, I decided to test the operating system on my computer, but whatever I did, I was greeted with a user interface far off of how an ordinary operating system should have in general. The boot screen showed planet Jupiter with the Windows logo next to it, like almost always, the startup sound was the same one used in Windows 2000, as with the other operating systems with planet themed code names. Everything was normal at first until strange things began to happen within minutes after the booting process began. A strange luminescent aura was illuminating my whole room. Within the computer itself, files would disappear before reappearing in the most unexpected possible places. Cryptic messages would often display. Strange whispers were heard emanating from the speakers. The screen would often flicker. Distorted figures of familiar characters would often appear and disappear at times. The most disturbing thing I found about the system was that it is capable of opening up a wormhole inside of it and it was capable of throwing objects at me from the wormhole, as if the fabric of the real world was blurred by the system itself. And so I tried to uninstall the system, but it kept sending out cryptic error messages telling me to stop, until then, I managed to successfully uninstall the operating system without crashing my computer screen or ruining it, just with a sigh of relief. To this day, the nightmare of the Windows code name Jupiter continues to haunt some people to this day, even people too dared to install it on their computers would never feel comfortable to install it again, even the memory they had would appear in their very own nightmares soon.


Emily is the chief of mission of a medium-sized office. On top of her duties, she and her team are running a very important project, and its deadline is approaching. The team gets along well and begins their day with a coffee meeting. We are making good progress. Remember, we have to finish the project on time. The deadline is approaching, so the workload is getting heavier, but I am sure that we will manage to get it all done. I used to be very passionate about this project, but now with the deadline approaching, working hours have gone beyond what I can manage. At the end of the day, Emily is surprised to receive a message from Anna in which she complains about an offensive email she had received from Sakon that day. I am always obliged to complete or finalize your tasks. Are you unable to carry out your duties? Stop making me do your work on top of my own. It's as if he's trying to tell me that I am incompetent. I'm forwarding this email to Emily so that we can talk about it. I can tell the pressure must be getting to them. They are very stressed and tired. I'll send them both an encouraging message, telling them I understand how tired they must be, but they are doing great work. The next morning, Anna and Sakon receive their supervisor's email. That's just great. Instead of talking to me about it, you go straight to the comb. Over the next few days, the atmosphere worsens. Lucky you, leaving at this time. Have a good evening. Ah, I am so frustrated and tired of having to do everyone's work. I am the only one that stays after hours. Anna could be doing her job better. She just doesn't care. Emily notices that her team is not doing well and that she needs to do something for the atmosphere to improve and to reach the deadline of the project. I thought my email would have been enough to settle this issue, but everything has gotten worse. They barely speak to each other, nor do they attend our morning coffee meetings anymore. This is affecting our work. I have to do something more. Emily decides to get advice from another chief of mission on how to manage conflict. Well, in my experience, I learned that as managers, we should take workplace conflict seriously and address the issue with each person separately first, so it does not escalate. You are right. I have to start over and address this issue differently. Emily starts over and begins by asking open-ended questions. She speaks with each employee individually first and listens actively. She then asks both employees separately first if they would be willing to meet for a discussion. Sure, we can try that, but I am not sure Anna will accept since she doesn't talk to me about it in the first place. Anna accepts. Yes, of course. I was thinking to discuss this with you before talking about it with Sakon. I was afraid to approach him on my own. As I heard them speak, I discovered that the issues came from lack of communication and lack of clarity in defining their roles and tasks. Anna did not understand what Sakon needed from her, while Sakon wasn't aware of the scope of Anna's responsibilities. I realized that it might have been my fault since I did not clearly define their roles. Each employee realizes that they have a part to play in this conflict, even if it wasn't intentional. I am sorry that you felt like you were being overworked. I just did not realize that you found the work to be incomplete when I sent it to you, Sakon. I guess I never explained clearly what I needed from you in order to properly carry out my own work. I am also sorry for sending you a disrespectful email. Once the underlying issues were uncovered, they began exploring options. We agreed on a few solutions. Sakon and Anna both decided to communicate their needs to one another. I insisted on having a follow-up meeting three weeks later. They both said it would not be necessary, but I kindly insisted. After a few days, the atmosphere in the office improved. The follow-up meeting allowed Emily to verify if the solutions put in place were working or not, and they were.


Yesterday I took about script execution control and I ended the talk with, well, some things that could improve kernel security. And today's talk is about hypersorinforce, kernel integrity for Linux with KVM. So this, well, the kernel is not perfect and there's still a lot of issues, a lot of bugs and potentially also a lot of exploits against the kernel. And that can be leveraged by attackers to, well, get some, have to read or write to the kernel and then, well, bypass everything. So what I'd like to do is to be able to enforce integrity on the kernel. So here integrity I defined it by being able to guarantee well, critical parts of the kernel to be predicted. Well, there's a lot of potential issues, known and unknown. And yeah, we'd like to protect against that. So let's end with it. Let's say the attacker is able to use an exploit to gain up to read and write to the kernel. And here we're talking about a guest kernel. So maybe the host is the virtual machine that is in charge of managing other virtual machines. In the case of KVM, guest virtual machines are what we commonly call virtual machines. So it's when you spawn something and you can play with it. So here we're trying to protect guest virtual machines. So the third one is, well, the attacker could, is some way be able to, well, through user space processes, even network packets or even malicious block devices to be able to attack the kernel and to exploit a bug. What we like to hear is to use virtualization and especially hardware-based virtualization. There's currently a lot of different protections on the kernel to protect itself against such kind of attack, but well, it is a self-protection. So once you have enough power to change or to disable such protections, well, you can bypass them. So these are good things to have, but we can improve that. And for that, we need to rely on something which can have more privileges than the kernel itself to be able to protect it from the kernel, the guest kernel, than the hypervisor. So there's a lot of different hardening mechanism. That I use, that can be used. So there's, let's say, self-rotation mechanism like JSCD, Pax, and OpenBSD is using a lot too. Linux, well, kind of improve his states with different mechanism too. Windows is using what we call virtualization-based security, VBS, and this is a set of mechanism that is able to protect a Windows operating system from an integrated point of view and even to, well, protect some secrets. For Android, there's, well, Samsung AKP and the YY hypervisor that can do kind of the same things to protect an Android smartphone. Well, iOS, iPhones use similar techniques and they develop one version, watch, watch tour and then improve it with some hardware mechanisms. For Linux, there's also a virtualization-based security. So mainly, VDFender's hypervisor memory introspection is used, well, it can be used to protect a guest channel but also to introspect it. So that might be useful for debugging, developing or even, well, analyzing attacks. Intel also released a proof of concept with some mechanism leveraging virtualization. And in this talk, I will explain what we did and until which point and what we can do to protect a guest channel. So for this, we took a look at different patches which were submitted some times ago, mainly the KVM patches which was like 30 or 40 patches but also the parameterization control is the pinning patches and the IPv0-based integrity which was presented some years ago but yeah, well, last one doesn't really, well, there's no pretty code, at least only some part of the code. So yeah, nothing really for Linux yet. So that was our goal. And for this, we wanted to use KVM. So KVM is de facto Linux hypervisor. There's mostly two parts, one is the hypervisor itself and the other part is the guest drivers which might be used to, well, have improved virtualization. KVM kind of leverages Linux mechanism, well, Linux channel code to like the scheduling and resource limitation and well, you can create, spawn and manage the machines thanks to what we call a virtual machine monitor which can be, for instance, QMU or cloud hypervisor. So this is a new space program running in the hosts part. Okay, a word about chain of trust. So here we like to enforce integrity but bit more than that. So we need to rely on some stuff, some basis and so the idea is to rely on, well, to have something to trust as a basis. So for this, I can rely on an instance echo boot which can be used to give some trust to the base, mainly the virtual machine monitor and the hypervisor. Once this host is ready, it can launch a new virtual machine. So in this case, guest cover and guest use space, guest applications. And well, the rule of a kernel is to manage use space to create processes and so on. And the goal of this kernel is well, I should protect such processes. There's a lot of stuff in Linux to enforce access control and even the static stuff like virtual memory management is useful to kind of isolate and protect applications. So the idea is to rely on the hypervisor to enforce rotation on the guest kernel and then the guest kernel as usual can enforce restriction on applications. So what we like to have is to let users manage on kernels. We don't want to enforce anything or to, well, require some stuff that users might not have or code or external code and so on. And yeah, we want them to have the same control as they have currently with kernel self-protection mechanisms. And well, if we want this feature to be usable, we want it to be simple. And well, we sell both no configuration. From a security point of view, well, we need to rely on something as I just explained before. Mainly, well, secure and trusted hypervisor and virtual machine manager. The security we like to enforce are mainly two or three. Simplest one is to enforce control logistic pinning. So it's a simple hardening mechanism which can be used to restrict the user of hardware capabilities that should not be usable once a kernel is booted. So that might be leverage, for instance, by an attacker to, well, disable the right permission that could then enable to write to any part of the memory. And also some similar mechanisms like SMAP and SMAP. A second part is to enforce restrictions on the kernel memory. So for the kernel data, we want it to be set really, which is already the case, but we want to enforce that from the hypervisor point of view. So this includes syscall table, set the case, key security configuration, and a lot of stuff. We also like to enforce a global execute ZOR write kernel memory policy, or commonly called write ZOR execute. So this means that we like only some little bit kernel memory pages to be executable, but to deny everything else, I mean, from the kernel part. But we also need to run new space, so that need to be handled as well. This fact series is, well, contains two parts. The first one is a common guest kernel API, and the second one is a KVM implementation. So what you like to have here is to let the guest, the machine, the guest kernel, configure itself like it is already done with different kernel-safe rotation mechanisms, and to not rely on a specific hypervisor to enforce that. So the first impression is KVM, but we like to have more implementations. Well, we need to, of course, run the hypervisor in some way. And well, that might be useful to also get some attack signals and to give them or to make them available to the return machine monitor in a way that it could be logged and that could be then, well, used to inform the user that there's an ongoing attack or stuff like that. So the idea is to have a common layer, normalize, and this API should be able to be simple to use to enforce, well, to tie kernel memory pages to, well, protections, memory protections. Well, we don't need to rely on hypervisor implementations or we don't want to. And last but not least, we'll do some tests and we want them to be, well, usable by any hypervisor implementation. And until the guest API looks like this, it's pretty simple. So as we can see at the bottom here, better, there's mainly two functions, protect ranges and log zeroes. And putting protect ranges takes, well, mainly one argument, but it's split in two. It's a pointer and a size. Number of elements. And, well, this point to an array that identify a set of virtual address, well, kernel address ranges. So, well, these first virtual address definitions and then this need to be translated to physical address ones. So that's why you can see here, virtual address range and physical address range here. And then we can tie these memory page ranges to a set of attributes. And here, okay, it will be protections. And the two protections that we define are the no write and the exact dimension. The second helper, the log CRS, is to, well, pin control registers. So pretty simple to use. So I talk a bit about the boot process. And here I want to highlight some part of the gas cannon. So it's really a summary, pretty simple. But the important point are when the kernel is initializing itself, there's a first call to the API in it, which is in charge of configuring kernel sections and to map kernel sections to memory permissions. Well, then it's not part of these batteries, but it's relevant. There's a marked only call, which is in charge to enforce the kernel set production mechanisms, especially to enforce memory management unit predictions. And then just before launching the initial process, there's a Hickey late in it call, which then enforce restriction on memory protection from the part which is managed by the IPRESA. So I will explain the EPT part later. And then once everything is set up, once everything is locked, we can launch new space that could, in some way, maybe compromise the kernel. Let's talk about the KVM implementation. So as I explained, there's many two parts. And for this, well, I implemented two IPRESA calls. The first one to enforce kernel memory restriction and the second one to be able to pin control registers. And yeah, the underlying idea is to only be able to enforce more and more restrictions and not to unlock them. For the control register pinning IPRESA call, it's pretty simple. It looks, well, it's quite close to the guest API. There's a new IPRESA call ID, locks here, date. And then two arguments. The first one is to identify the control register, in this case, CR0. And the second argument is to identify a flag that we want to pin, which means that should not be a date table, but the guest kernel after that. The second IPRESA call is to enforce memory page ranges protections. So this will lie on EPT that we'll explain just later, just after. For this, we need to rely VMCS, which is a virtual machine control configuration register for hardware virtualization. And yeah, the ID after that is for the IPRESA to log beta channel items and potentially to forward it to secure logs and things. And as it is a case for common memory management permissions, once a fault is detected, well, we need to create a page fault. In this case, it will be created by the IPRESA itself and forwarded to the guest kernel. So what is EPT? Well, in fact, here we're talking about what we call second layer address translation, a slot, or also called two dimensional paging, TDP. And well, for Intel, it's called EPT, and for AMD, it's called VI or NPT, it depends. But what is really interesting here is that it is a second layer of permissions. So the first layer is controlled by the guest kernel itself with MMU. But this second layer in order to enforce kind of the same restrictions, but by the IPRESA itself. And this kind of restriction are not directly available to the guest kernel, otherwise it will be useless. Okay, and so they need to rely on that to enforce the restriction that the guest kernel wants to be enforced on itself. But there is a mission. Well, common memory predictions may need two, three. There's read prediction, write prediction, and execute prediction or permission. And the issue is, well, with a common kernel, there's kernel space and new space. So there's two kind of memory. And well, if we can only enforce one kind of permission on new space and kernel space at the same time, well, that might limit us. Because that means that we'll need to enforce restrictions on all running code. So the kernel and all new space processes at the same time. And that is very difficult because well, there's a lot of different new space, code, application processes, and so on. But here come hand back. Mode-based execution control. So it is an Intel mechanism which can say, well, these are kind of something similar for AMD, but here we only worked in leverages this mechanism. The idea is to split the execute bit permission into two permissions, either the kernel-bound execution or the user-mode-execution. And that's really interesting because you seem about to, well, enforce like a deny-by-default security policy on all the execution, the kernel-execution pages, but to not touch and to not care about user space which should be restricted by the kernel itself, by the guest kernel itself. So how does it look like? So here is kind of summary of the kernel memory. Well, the whole physical, the whole guest physical memory, which is available. But here we are only talking about the kernel memory permissions. So you can see, well, there's mainly two, well, main two section, the text section of the kernel and the read-only data section. But the thing is, if we don't have and back, well, some parts of the read-only data kernel section must be executable because, in fact, the read-only data section contains your space code, in this case, VDSO, which is mapped to your space processes and then used by them. So if we deny a section on this part, well, your space processes will not work well at all. And here comes another thing, is that, well, every new memory that can be used by user space must be, well, should be executable, executable in some way, otherwise you will not be able to run code, use space code. And so this means that we cannot enforce restrictions on memory which is not allocated yet. We need to be able to differentiate between kernel execution, kernel code, and use space code. With and back, it's much more easier and cleaner. So we cannot enforce a read-only data section in a read-only web, but this time again, it is only for the kernel. So the VDSO here will be executable for user space because we don't configure that, we don't care about that. And we can enforce read-execute-permission for the text section of the kernel. But most importantly that we can enforce a deny-by-default policy for everything else. Everything else should not be executable by the kernel. Okay, let's see some demo. So it's mainly, well, a code which is part of an RFC we sent last week. So I'll give you the links at the end of the talk. So as you can see, at the right here, well, I will launch the guest, a guest-veter machine. And at the left, well, it is a host. So we'll see the host-slope at the top. And at the bottom we'll see the test code which will be executed at the right. Let's get back to the beginning. Okay, so you can see here, so I let it at the left. So it's a assembly code that will be executed by the kernel. And the important point is that it is stored in the renowning data section, which is not common. It should be in the text section, but that's to check that renowning data section is not executable. And so the code that will be executed is really simple. It just take an integer and implement it. Okay, the test code here, well, is, well, the guest kernel is still using the kernel server protection. So the first step here is to disable this protection at runtime. And after that, to execute the code, which is, by the way, not something easy to do, but it is doable to disable the kernel server protection. Okay, at the right, I'm launching a virtual machine. So without any process, because we don't care about that. And I'm launching a normal kernel without the HKE protection. Okay, so you can see here, the test failed. And well, we can see that three plus one equals four. So that's good. But what is not good is that this code successfully disables the kernel server protection and executed a code that should not be executable. So we're doing the same, but this time with HKE enabled. So what we can see first is that there's initialization, the guest kernel. So it may identify five sections and enforce protection on them, either the no-write restriction or the exact permissions. And at the left, you can see the KVM logs. And well, the request is received. And you can see that once it is received, everything, well, all memory which is mapped to the guest kernel is set as the permission. So it is deny section for everything except what is allowed. So as you can see, the right, the no-write permission is an allow list and the exact permission is a deny list. We can do a deny list for execution because the execution is quite, well, it's not difficult to enforce because it's not common to have new executable to code, but it is quite common to have new data that you want to update. And once the permission is enforced, well, the IPv0 lock the guest configuration. So at the bottom, you can see that's the test. The test, well, kind of failed. We don't see the end of the test because the guest kernel is trying and trying again in a loop because there's no kernel page fault handling implementation yet for this kind of exceptions which is kind of uncommon for a guest kernel, but the kernel cannot execute such code. And we can see that, you can see the kernel virtual address here and it is here, well, receive and blocked by the IPv0 and the IPv0 create a fetch page fault which is then send to the guest. So the guest should receive that, well, it receive it, but it just ignore it for now. So that's really part of a free to work. Okay, now let's see a second demo. So it's much more simple this time. It's about control with the pinning. So you can see the same, the test code at the left. So it's quite straightforward. The code, well, the kernel test code, let's say the exploit, read the CR4 register and then we try to remove this map bits. Then the right will launch a new video machine, a guest which is not protected with a key at first. And we can see, well, that the test failed because the guest kernel was able to disable and to remove this prediction. If we do the same test, but this time with a Hickey prediction, well, you can see that the test failed. Well, the test succeeded because the attack failed. And you can see at the left that KVM IPv0 well, code is update and blocked it. So yeah, it's not really fancy for a demo, but yeah, it's always difficult to show how it works. Well, there is some limitations. From now, this facility will only set clean force permissions. So dynamic kernel module is not allowed, which might be an issue of course, but that sort of feature might still be useful. If you don't need KVM modules. And well, there's some attack techniques which are out of scope, for instance, rope. So there's a written or anything programming. So be able to jump to, legitimate easily to KVM codes is not restrictable by Hickey because what it is not its job. But there's other mechanism that can be leverage, even with hardware features. Okay, so what we like to do is to be able to handle dynamic code of course. And for that, we need to rely on something, not only the IPv0, but something which is less privileged to avoid this path of code being exploited. And there's two way to do it, either to implement that in the virtual machine monitor, so QMU or cloud IPv0, or to use a dedicated WadiGa virtual machine, which is what is using Windows VPS, for instance. And we also need to handle, well, kernel memory being freed to remove such permissions. So that will be much more complex, but still do. Second important thing is what we improve to kind of save position mechanism because that is the one that are kind of used or copied to the IPv0. So what we can improve the Hickey intervention by restricting more MSR updates, by using the IPv0 manage linear address translations, which is a way to kind of prevent MME changes mainly. We could also use execution memory for the kernel, but yeah, that's not, well, there's some issues there, but that should be possible. And yeah, we like to also enforce this kind of restriction on the KVM host as well, but KVM is not designed for that, so yeah, that might be a big issue. Anyway, we can protect the guest, and that's good. Other things to, other ideas, is that we can move to attacks by creating new interface to log such attempts, and potentially to react to such attack. And so what is not quoted yet is nested vectorization, because of the Mbeck feature, but that might be possible. And so we like to, well, support more architectures. So for now, it's only the Intel architectures, but AMD should be usable the same way, and maybe, okay, let's wrap up. Hickey, the difference in depth mechanism that leverages hardware visualization, and especially the Mbeck feature, which is, by the way, also used by Windows for the same purpose. So the RFC we sent last week defined a common API layer, and KVM implementation as well. So it's fairly available, you can use it and test it. You don't need to update or change Cremium, which is nice. And yeah, it's a new project. We're looking for contributors, so if you're interested, please reach out. There's a lot to do, a lot to do. For instance, support other iPersoles, to support other architectures, to improve gas channel support, and also to enhance the term machine monitor, so Cremium, cloud iPersoles, and other stuff. You can take a look at this link. There's some, well, useful links in these links, and I will post a demo and the slides there, too. Thank you. I'm curious if you're handling huge page support in the second layer address translation. Do you facture memory, you know, demote it to 4K pages or something like that if you get a request for smaller regions, I guess, for local addresses? I'm not sure. I need to add that, but that should be doable if it's not the case. So right now, the thing is, the confusion is pretty simple. The canal just identify a set of sections and just send the related physical addresses to the iPervisor, and the iPervisor just protects it from the beginning to the end without caring about which kind of memory it is, so. And does all this map cleanly onto existing Hyper-V semantics? Sorry. Does all of this that's proposed for Linux as a guest already map cleanly onto what's offered for Hyper-V? In the inverting and the enlightenment? So you're working on new Hyper-Viser support, right? So that's going to be some change to guest code in Linux in order to support other Hyper-Visors like Hyper-V. Does Hyper-V already support all the necessary semantics from the guest to Hyper-Viser interface perspective to implement what's proposed for the Linux's guest? So this KV implementation, well, there's some stuff going on for Hyper-V. Hyper-V uses similar mechanisms, but it definitely doesn't work same way. It uses kind of a side-cohabitor machine to enforce such restrictions. So it's not the same interface. And that's one reason why we want to have a common API layer for guests can then to kind of not care about Hyper-Viser information details. But yeah, it's only a KV implementation. Yeah, you're going to need some kind of VM API kind of interface abstraction that will let you do this on Xen or KVM or Hyper-V or VMware, right? So yeah, there's some backend drivers that can be plugged into this common API. So yeah, I'll just put my Microsoft hat on for a second. So yeah, there is a common layer mentioned in there that is meant to be Hyper-Viser agnostic. And as far as possible, we want to make sure that any existing Hyper-Visors are supported. And so this talks about the KVM implementation using that. Yeah, so there should not be any limitation to Hyper-Viser to implement that. It's, yeah, it's just, well, some Hyper-Viser are not implemented. In the case of Hyper-Vises, well, the Hyper-Viser implement some stuff but other stuff are implemented elsewhere. For Xen or other stuff, what is new code to add? Okay, any more, any question? Thank you.


The NIH Stroke Scale is a very useful tool for emergency physicians. The greatest hurdle is to become trained in it and to do it consistently. We recognize that emergency physicians have great time constraints, but the NIH Stroke Scale provides significant benefit and can be done in less than seven minutes with the patient. There are about 10,000 neurologists in practice in the United States, but over 600,000 strokes. The large majority of patients with stroke are cared for by non-neurologists. And I think here is the really big value for the Stroke Scale that it can be done in the primary care setting by healthcare professionals that are not necessarily trained neurologists can make a very quick assessment of their patient. I think nurses need to be empowered to include this into their practice. You realize that not so long ago the care of a stroke patient, nobody cared about what happened to the brain because we were basically just there to prevent pneumonia and urinary tract infections and make sure they didn't get bed sores. The reality is I would rather be treating somebody's brain. I would want to know that some of my interventions and my assessments helped allow this patient to go home and be independent. If anything, the nurses and physicians' assistants may actually do a little bit better than neurologists. Again, neurologists very often want to score how they think the patient should do, whereas people such as nurses very often will want to follow the protocol exactly.