We know obviously how tight every game is, how tight the division is at the moment. We spoke about it in the past but the crowd support can play a massive part. So the next two are away from home. I suppose if you can get that fan to try and make that away game feel more like a home match, obviously that will play its difference. Yeah, I think we've had success on our travels when we've had a big away following and it'll be great again this weekend. We know it's a fair old trip over to Shropshire. We'll get as many fans across as possible behind the goal. We've been at Shrewsbury a couple of times this season and the ground's quite sparsely populated around the three stands so if we can get one nearly full or four behind the goal it can really help us so I can just urge the supporters like always to play the huge part in building this momentum and can they help us again at the weekend?


Thanks for the introduction and my talk is about the robot sequestering scheme and it's a joint work with search for okay so so first of all what is sequestering scheme and so actually I mean the former talk and they also say that about sequestering scheme and this is not a very rigid version of the sequestering scheme and then we just use it because for for convenience okay so first for sequestering scheme and actually we want to share a secret my N parties and so there are two parameters where is the for the privacy and we hope that the NAT parties cannot learn anything about the S because there may be some corroborated party inside and another feature is the reconstruction and we will hope that and any our parties can recon completely recover the sacred this year that our definition for the sequestering scheme and so there are very said they are celebrated like Samia sequestering scheme to realize our realize this sequestering scheme and so how to do that and imagine that we have a sacred s and then we just pick a random degree T polynomial FX and the letter F zero equals S for each party and he will get an evaluation of this polynomial at some point and for example SI equals F alpha I and so by very simple like launch interpolation we can show that actually it has it has T privacy and the T plus word reconstruction and so we also call it a threshold sequestering scheme and this is and so what is the robust sequestering scheme and besides the privacy and reconstruction we have another feature for this sequestering scheme and that means that first we imagine that this sequestering scheme we have honest dealer and honest constructor the dealer will distribute the shares among the parties and the deconstructor will collect the shares and reconstruct the sacred however because we know there are some corrupted party and this quarter party he can corrupt his shares and he don't not honestly and report his share so that in this case so assume that we have a tea corrupted party and yeah indeed you know in all side we assume that the first tea is corrupted and so these tea parties are the shares are not corrected and then yeah in this case we still can robustly reconstruct reconstruct the sacred with high probability and the error probability is very small exponentially small so we call it the robust sequestering scheme and okay so and you know in our paper and we consider this this adversity model and the Russian adversity model and so what is the Russian adversary the Russian adversary and actually he's more powerful and because you know during the reconstruction phase and everyone have every party he has to send back his share to a reconstruct but however the adversary and he control maybe for example tea parties and he will delay his transmission until he saw all others share and then his share is depends on the shares of the honest party and in this case we call it a Russian adversary yeah actually it's quite powerful and there's also non-Russian adversary non-Russian adversary means that he don't have this power and his decision is a completely determined by by his the tea quarter party he only can see his share so this is a non-Russian adversary okay so there are some yeah some results and also some previous works in this area and I just list some of them because there are many many results and just this result are more relevant and so yeah so there are actually there are several and there are two performance we can come we can we can do comparison and the first is the share and you know the smaller the share is that the better the performance it be and so first of the M is the M is the sacred size and the N is the number of player party and the kappa is the security parameter you see in this paper we achieve we actually we have two result when result is that which achieved optimal of optimal share size and also the Russian adversary is the more I mean it's a strong adversary model and but indeed this result is not running in polynomial time it's running super polynomial time so it's and another result is the running polynomial time but it's not optimal share size and they choose some end and end to the epsilon epsilon is a very you can be any small constant okay so there are two results we can compare with and one result for CF or 12 paper and they achieve on plus kappa because this is the Russian adversary so we are in the same but the same model but they are share size is much bigger it's all in level and and so and there are another paper it's 16th Europe 16th paper and they actually achieve the optimal share size however and it's not a it's not a Russian adversary by the way besides I mean we all all these results at least all these results are listed they achieve the maximum corruption means that the the adversary is only one less than the sorry the corrupted party is only one less than the honest party so yeah this is the maximum corruption and it's the most difficult problem situation to handle okay so let's compare and do some compare yeah there are some difference between our scheme and a scheme in their paper in Europe 16th paper so actually oh yeah we also brought some idea from their paper and there are two two things two kind of things are same and the first of first we consider the pairwise authentication so that each and one party then he not only I mean share and hold the share of the circuit also he do some verification for the other party so make sure that other party is not corrupted if if it's corrupted and you are honest party you can find his corruption and these kind of settings and also and of course if you verify all the other parties and the share size will go gross to o n so it's too big so we use a random verification graph to reduce the share size of course there are some difference first of all I mean because they use the Russian adversity model and we did oh sorry the model is not Russian adversity models so so they had actually they can do more things like first of all they use it they are they authenticate the share bios and authentication code and so they also authenticate the keys and it says but in Russian model it's it's not in we cannot do that and because in this case and the limit the ability of adversary lying about a key and also but however it's yeah it's in the Russian out of the model they are they are scheme don't work yeah also but in our work I mean we only authenticate some part of the shares instead of the whole shares and it makes so we keep our authentication key secret so yeah but it makes problems more difficult okay so actually there are some building blocks and you know our paper and this one is we introduced to introduce the listed code about codes in our construction and this is also different from their construction they don't have this and this building blocks and it's a very nice we actually we use the 40 the reason called it has very nice property to care correct up to I mean one minus arm and the episode and errors but also the list size are very small in our actually in our paper we have two different settings for epsilon and first setting episode is a constant and the other setting episode is actually here's a one over log n and so because there's a one over log n so it will output the exponential size and so and not a super polynomial science sorry it's not the exponential size but so that's why we got two different result the solutions and when solution is a super polynomial because of our list decodable codes okay so actually also there is a very frequency graph and yeah we every party you need to verify the other some small set of other parties and so that if we say he's honest and he will provide some information whether the other party is corrupted or not however of course we don't know if he's honest or not because that if it's correct party he could also disguise that he's honest or he will do some other strategy to but anyway I mean so so this is very important and because of the honest party is also always be the majority one so we have some kind of mechanism to do to check whether he's on his own honest on not not a hundred percent sure but yeah with some probability or do something so yeah this is our encoding scheme and the first of all we go we get a sacred s and we encoded by the photoresome code and using the verification random graph to add some authentication tag and keys to the share and the first and at the end we encoded the tag as the tag is the starter robustly and globally so everyone can learn can know the tag but if we corrupt the tag it makes it makes no it makes no sense it doesn't help because we store the tag robustly but we also at a sacrifice some privacy of the tag so the tag is known to everyone but yeah if we corrupt it we can recover it yeah with high probability so yeah so this year everyone get yeah and so our reconstruction scheme actually we're all reconstructing because we say that just in our setting at the Russian anniversary model I mean the adversary if you only send your share to reconstruct in one round and the direction and the adversary can learn anything about the honest party so yeah it's not safe so we separate it into three rounds and then yeah this so we first we transmission back send back the other the share and then we use some algorithm and and actually in all people we defined there's some passive corrupted party and passive party and we just see to see if for the passive party is the number of pass but is bigger or small and we have two different road route to find the corrected the sacred to reconstruct the sacred and this is a very key important very important in our analysis we divided the honest dishonest party into two type one is our passive party and other one is the active party okay so let's see some from the verification graph we can we will have some observation this option very key to our analysis and first of all if yeah we first of all we need to find a passive corrupted party the passive corrupt party and he he didn't a crowd if he didn't he didn't craft the si si is just the set result code it's a reasonable code and he just in code they encoded on it we use for the result code to encode the sacred so si is just a symbol of this for the result code and if active corrupted and he can crop anything so this is our definition of of the corrupted party and then and we have yeah there are some several observations first is the passive party and honest party they can all pass over verification of the honest parties because of this property and the second is that active party if you are active corrupted party you cannot pass the verification of the honest party and the last is also very important that this distribution of honest party neighbors are uniform at random so that means if adversely he did when he when he decided which party is the only a passive one which is active one and he has learned nothing about this distribution of the honest party's neighbors and so because we separate into three round and so we make we can make it happen okay so there are two settings first as we assume that there are many passive parties large so the P is very large and in this case we can use the result for the result code to do reconstruction however this will output a list of the candidates and it's not the only one but we can make sure that correct one is also always in this list and then we use them with the help of verification graph we can find the disc correct one out of the al candidates yeah that's and and so let's go to the small passive small p and for small p and yeah actually we have a t-plus one honest party and it's more one at least it's one most at least a more one more than the active and corrupted one so if we can we our organ works for every honest party and we take a majority vote and we will find it the correct sacred so let's assume that we start from honest party and the red one is a red spot is on a green spot is honest one and the red one is a passive one and the black one is active one so because the red one is always be the in the minority so we just and the first step and we start from honest party and we do verification and all the honest party and if he's the neighbor of this red green one and he will be passed a verification also the passive one will pass a verification but to the active one will never pass the verification then the second round but since I'm little bit more subtle because I mean because there's some passive one passive party and the passive party he can he can let the active party pass this verification and so so that the black one will join the circle and join the sets and also you know the because the green one is honest one honest one we always bring the honest one and a passive way and so so but but however our algorithm make sure that if we only do it for constant round and the honest one at the active one and the passive one it is only only will be the minority but much it's only account for very small proportion of this number of the proportion in this set so it's well don't affect our analysis so we don't care too much about it so let's summarize so so yeah let's do some there are some conclusion from our our algorithm and after I mean do it for constant round and the honest party will be a million and it will be the vast majority of the set and but however the active at the passive party and the only account for I'm a square root epsilon of the pad a proportion of the set so so that and because I mean the honest one is the vast majority and we have some other algorithm and the DOS algorithm and we just using the probabilistic argument to find all the honest party and some passive party but the active party is is less than the passive party so in this case I mean because our our yeah we encoded it by resum code for the resum code for the resum code is also a resum code you can treat it as a read some code so they are very good redundancy and so we can then we can use some unique decoding code algorithm to decode correctly okay so this is our two algorithm and we want to have some concluding remarks from for our paper for our result and actually we presented to you about sequestering scheme against a Russian anniversary and yeah one scheme achieves CSS is a suboptimal but a running polynomial time another scheme to achieve optimal CSS but a running time is exponential because of the this size so there's an open problem whether we can do it in polynomial sense or do it in polynomial time and also optimal share size this is my talk thank you thank you any questions so you said that it's on Solomon code should be folded can you can you comment on that why why should it be folded and what does it mean exactly sorry I can why the rates on Solomon code should be folded sorry I can't beg your pardon so are you using normal read Solomon codes or fold like you said they are folded sorry I can't sit here clearly sorry because because maybe it may be the stage for so the reason the question is about the read Solomon code yeah so are you so I understand correctly you're not using any read Solomon code you mean the least size or the size yeah because this is the I mean and this is a new result from maybe eight yeah for there are folks 18th or 14 19th people and by Mary water and I guess I don't remember all the people's name but yet they will achieve very there's a very good result and achieve a constant this size and also like the size of your so you have a verification graph yeah so can you tell us about the number of edges in this oh yeah of course sorry yeah it's a very good question okay so so actually and they are there because we have two schemes one scheme we achieve the optimal size a share size so that the degree of the verification graph is log n or log square n or cubic n I can't remember it yeah but but it's it's a polylog and actually we can see the poll again and the second another algorithm and the achieve another scheme achieves the actual suboptimal and the degree is n to the epsilon or square actually it's n to the square root epsilon and will be more precise okay is that connected to the parameters for the read Solomon code or is it independent actually it's a connect to our our graph algorithm actually we use the expanded graph and so the degree of expand graph and it's and the larger the degree is and I mean so it can expand it more quickly so if the degree is small and expand it more slowly and but but but because first of all we need to come consider a graph algorithm so that we fix our degree and then and but there'll be another problem occurs because if we if our degree is if our degree or in our expansion graph it's bigger and this means that we have we don't we cannot have too many passive party so so and so it will add a difficulty to our list of audio algorithm and in our list the code algorithm we cannot achieve constant you know epsilon we can only chew over log n epsilon so so so it's it's the least size is explained as super polynomial so yeah this is a trade-off thank you thank you any more questions if not then let's thank the speaker again


YouTube team keep it clean. What's going on the same grave in here with another video and in this video Chicago Bay is Chicago Bay is There are rumors about Jordan Howard There's rumors about some other stuff too, but anyway Chicago Bay is they have signed Cordero Patterson and Now I do like to sign it for them I would really like to sign it for a lot of teams, but Chicago Bears I do like it for them because it gives them somebody that can do A good amount of things on that offense and special teams too Of course special teams, you know, he's a kick returner good kick returner Punt returner. He can do those things But then on offense He can be a wide receiver too He can also be a running back And you I mean you could throw him passes out of the backfield You can put him in a backfield to run the ball hand it off to him. You have options So I love how the Bears And this is this is only the beginning of the third year, but I love how the Bears are making sure That miss Trabisky and they did it last year First in this rookie season Who do you have in this rookie season? He didn't have much But his rookie season, they were like, you know what we see what you got. We see some potential I mean, that's why we drafted you in the first place.  It'll come to me But they got who Alan Robinson They got um Taylor Gabriel now with Taylor Gabriel When Cordero Patterson first signed when I found out he signed with the Bears I was thinking it was Taylor Gabriel's deal or one of you wasn't it a one-year deal I really don't remember because I feel like Cordero Patterson and Taylor Gabriel are very similar type of players different bodybuilds But um similar type of players to where they You can use them in so many different ways and of course they got that speed to take off Um Oh, I'm still trying to think of the tight end's name Not trade. I wanted to say trade Boston, but that's the safety from um Oh I cannot think of his name right now It's it's slipping me. But either way, um Cordero Patterson can come in there and can help those guys out He can be another weapon for Matt Nagy and his offense to help out miss Trabisky Um, and it's a very very It's it's an under the so yeah sort of an under the radar move It's not one that's going to get big attention or anything like that but it's a quality signing and Isn't it's not always the sexy signings that may end up meaning the most throughout the season A lot of times you find out with these different teams That is these guys like that when they first got signed you were like, uh Okay, well we signed him okay cool or whatever not saying that the sexy signings that they don't generate a lot of Buzz for your team and a lot of positivity for your team But a signing like this It can go under the radar and it can be sort of underappreciated Like I mean look when the the patriot sign well, the patriot is kind of different because when patriots, you know Anybody who they sign they gonna make stuff happen with them But Cordero Patterson is somebody whose career He never quite lived up to the expectations of a what was your first round draft pick for the vikings, I think Never lived up to it and then the vikings were like, um Get out of here. So he went to the raiders then the raiders were like Get out of here. So he went to the patriots then the patriots were like, uh, well, I received a running back Yeah, we can do that and we'll switch you in movie in and out We'll put you all over the field and whatnot. Have you doing all these different things? And he got a super bowl He got a super bowl How about that? Good for him and now he gets a deal with Chicago so I'm sure he's got to be a good part of that offense Especially a special part of the team and he's gonna make some stuff happen. Anyway team keep it clean Chicago Bears fans congrats And if you can think of that tight ends name, I really cannot think of it right now It's not Burton. Is it not is it trade Burton? It might be trade Burton That don't even sound right. Anyway team keep it clean. I'm out man


what's good youtube this is what you were back at y'all again with another art tutorial today i will be teaching you guys how to shade and procreate if you're new to the channel go ahead and hit that like button come in subscribe make sure you hit post notifications so you will be notified every time you bud josson heat today's video i will be drawing a very successful talented singer that go by the name of trey he's in a group it's called trey and arman they got some dope tracks if you want to check them out you need to go check them out on youtube without further do let's jump right into this video so every time i start when i'm working inside of procreate i'll go ahead and create me a new layer on top of the picture i'm finna use but what we're going to do we're going to select the picture and we're going to drop the opacity down okay once you do that you want to come back to the layer that's sitting above it click your brush go to inking and we're going to click the one right under fine tip the technical pen brush you want to go inside of it and then you want to click streamline and bring it all the way up now what this is going to do is going to kind of auto auto correct your lines when you're drawing and i like to move it all the way up when i'm doing my line work now we're going to zoom in closest we can and we're going to start start adding on or working on our line work the fill in close areas what you want to do you want to grab the paint and you want to drag it and just drop it inside drop it inside i'm bringing our brush kind of in the center do the same thing with the eyes as far as making a closed area bring the paint and dropping it inside you want to get a dope looking cartoon head you want to try to make your lines crisp clean as possible same thing with the other eye we're just going to drag and drop fill in color closer that's my favorite feature about this program just being able to drag and drop a color what we're going to do go to your touch up brush then you want to click short hair and you don't want to move your streamline up too much you can move it to 10.4 so it'll give you more control and now we're going to go to the eyebrows a nice little look we're going to make our brush a little smaller and we're going to come back to our brushes we're going to finish doing the outline of the ears we're going to go to your inking brush and then you want to go to technical pen why we still got it on the same set and so we're going to go ahead and finish our line work i'm going to show y'all a little trick i like to use a little technique you see how all this is black right here and we want to we want to keep that we want to get all the little details out the hairs but we want to cover as much as ground as we can so what you want to do is you want to bring your line up and bring as close as you can to the hairs just bring it close as you can but not too close because we still want to add the real looking effect and we just want to drop paint then we're going to do same thing to the beard okay now that we did that part what you want to do you want to come to your brush and let me find it go back to your go to your touch up brush and then we're going to do the short hair i think it's the short hair or the flowing hair i'm not sure but let's try the short hair out first yes you want to go to your short hair and you want to bring your size up over here on it and now we finna add a we're going to give it a real looking effect give it texture and that's why we left room around the edges but we can come on with that real realistic looking detail now now that we did that we're going to go back to our touch up brushes and we're going to try out the flowing hair just want to see what that okay it gave a nice looking effect so we're going to go on top of what we just did with the flowing hair give it a little more little more little flavor you know i'm saying give it a little more texture just mix it in and how we're going to do the same thing for the beard the beard guy you feel him you want to do the same thing down here and with these different texture brushes it kind of buy you so much time as soon as you get to hang of it it's just you can utilize all these different brushes and make a dope cartoon here now we're going to go up we're going to click our noise brush and bring it down and we're going to come right here we're going to make it smaller you're just gonna fill in i'm going to teach y'all how to do a little nice little thing you want to click this little it's like a little s you want to click that and you see what a little side burns at the edges we're going to come right here we're going to create a imaginary one okay once you want to do you want to come back and close it off and now you want to click the brush again and what it do is it only let you draw inside that area you just created so that's how you can just do the nice little edge if you want to just fade it a little more so we can give it a realistic looking now we can click on to the s again and take it off and there you have it nice little fade so what we're going to do we're going to go back to your your short hairbrush i'm going to kind of bring it in the center and we're going to do just a little to keep it because you don't want it too perfect i'm going to kind of give it a realistic look and touch good so far so what we're going to do we're going to click the s right here then we're going to make a imaginary around the beard because i want to add a little specks of hair only click your brush after your major selection and we're going to go to our noise brush now we're going to go to the brush above the noise brush because now we're doing the specks of hair see i'm going to do too much give it a nice little fade go back to your ink ink brush make sure we close this off line work came out pretty good you know what i'm saying everything came out real good how did we got some good line work going what you want to do click back on to your original photo and you want to click this little arrow right here you want to bring it down and stick it in the corner and bring the past opacity back up now it's time to do the shading so what i like to do is i like to go to my layer of my line work and i like to duplicate it like five times you'll see why i do it it's so much it's just a it's it's a habit for me right now so after i duplicate it i go straight to the bottom layer of my line work and find a nice little scan tone that we're gonna start with and i like to go from light to dark and fill in the lights we got all our basic colors we got all our basic colors laid out so now what we're going to do we're going to click on to it and you're going to click select now what that's going to do is it's not it's going to let you only color inside the lines of the whole head so now that we do that we want to click this layer right above it and now we're going to find a little darker skin tone so what you want to do is to find a skin tone you want to hold hold on to it my touch pad ain't tripping i'm gonna hold on to it and then it'll let you find the color and then when you let it go the color will move up here now what i like to do is when i'm doing shading on the skin i like to go to my noise brush and you find that in your touch ups but once i go to my noise brush the basic shades and when you start with the noise brush it's like a good blend because i start with the noise brush and then i go to like my um airbrush shade and bring it down so and it's very precious and it's like the pressure you use i'm going light i'm not going too hard in a circular motion kind of like press on too hard the harder you press the darker you get now close to this this one side of the face i notice i'm going a little darker and under the nose has a lot of shading so i notice the shadows is hitting harder on this side of his face a little bigger darker so i'm pressing harder right here and it don't matter if we color it on the eyes because we're going to make another layer for the eyes and we're going to put it above all the colors don't matter what i do get a stick i don't top bigger and we're going to get under the neck it's dark on this side so we can be kind of hard and then we want to kind of ease off of it the more we go to this right side here how do we got that i want to click right here closer under this eye just for that darker shade i'm going to go you can see i'm kind of using the original picture for a good a good reference for where i should put my shades and my shadows just to shadow is more on this left side so that's why we're making it more darker to the left but the closer it's going to the right it's going to lighten up move out one of our layers under that shade under that shading layer we're going to move one layer under that while we still got it selected as you can see you can't really see it on here but i got just this area selected so it won't it won't let me color outside of it and that is a big hill so what we're going to do is we're going to find a layer that's not too dark but not too light and you just want to keep using the different skin tones that's on the original on the original picture and you want to try to use it in the same areas is used on the original picture what i like to do after i get the shades right i like to combine my my shadings by sliding them together and i like adding a new line work layer because i always do that method of combining shades adding new line work layers and what we can do we can go after we combine the shadings we can go to the shadings layer and now we can come back where our eraser tool let's see what size i want to make it small so i don't go outside the lines and we can we can bring that eye back uh-oh i need to make it a little smaller because i see them going outside the lines we can bring that eye back and really we can do this at the very end i just wanted to show you guys let's go to the layer the second layer of our line work and we're going to click the color white and we're going to go back to our noise brush and we're going to kind of bring it down and what we're going to do is we're going to add them little highlights and that's what's going to give it more dimension it's going to give it a more it's going to help everything stick out did that go to your layers you want to go to the shading layers and now we're going to pull out the airbrush what you can do you click the first one and you make this brush bigger we're going to select this color and we want to kind of blend it we're going to go light though so now to give it a smooth effect we're going to click all our shadows and we want to kind of add a small little blend but not too much just to give it a more smoother smoother feel the darkest brown we can find make our airbrush smaller we're going to come right in this nose right here it's a it's a it's a pretty good process to use shading skin but once you figure out a nice little method you get your nice routine you'll get you a nice get you some nice results at the end i'm going to show you why i'm making these eyes red on a new layer but now what we just made the eyes red i want to select it you want to go to select and erase it and it's the same method we did that so we can only when we color it it the only color inside the eyes the same thing for his teeth now we finished our shading on our cartoon head finish everything everything looking nice now what we're going to do we're going to add the glares in the eyes what you want to do you want to select color white go to your soft brush inside your airbrush create a new layer that's on top of everything and now we're going to zoom in to the eyes oh gotta make this brush super small we did that we just did the nice little fake inside the eyes we still got it selected we're going to go to like a a yellowish white and you want to go to your hair brush inside your touch ups and we're going to go to short hair now what we're going to do we're going to add this little thing we got a brush kind of in the center we're going to add this little hair fade just to give it some sauce you feel me and then we're going to come to the top do the same thing cartoon head using procreate on your iPad if you're new to the channel go ahead and smash that like button more heat coming soon thank you guys for tuning in thank you for your love and support you know and i'm out this


Good evening. I am Dr. Vinodini. I have secured all India rank 64 in the current UPSA examination. This is my fifth attempt and my optional is anthropology. In my previous attempt, that is my fourth attempt, I got all India rank 360 and I was allotted with Indian Railway Management Service. So, regarding preparation, after my medical college completion, I started with the prelims and main scores with Shankar IS Academy and regarding prelims, my preparation was with NCRTs and two newspapers of Hindu and Indian Express. This was my regular preparation and I also put test series from Shankar IS. So, this was my preparation and secondly, regarding the main preparation, I did regular test series in Shankar and I also continued with the same strategy of newspapers and magazines. So, this was very helpful for me in my main preparation and also reading books for polity like Lakshmikanth and Bipin Chandra for modern India. These were all very helpful for me and finally, for the interview stage also, I did my mocks from Shankar IS Academy. It was very helpful and they pointed out my mistakes very well and I was able to correct it with full focus. For my anthropology optional, I did a self-preparation especially with the regular books like Ember and Ember, Nadim, Hassane, Sir's book and these were my regular sources and I did a quick revision before my exam and this was very helpful in my answer writing. For all the aspirants who are appearing in the future, all the best and have a bright future. Thank you.


All right, we're going to start now. I'm Eric Brewer, VP of Infrastructure at Google. And I can say I've been involved in Kubernetes longer than you, and I don't mean that in a mean way. I just feel really lucky. Some of the things I'll talk about today are some of the things we talked about in Kubernetes in 2014 as aspirational goals. So why did users choose Kubernetes? There's a lot of reasons. I think we'll start with the easy ones. They like open source, and they like the community, love the community. If you didn't notice, there's a lot of community here this week. It's kind of amazing. This is my third, I guess it's my third gubcon, maybe more. I don't know how many they actually have been. Then there's the frequent releases and resource efficiency. That's actually what got Google to use containers 10 years ago was really how many apps can be packed in a fixed number of machines. And containers make that much easier, runs anywhere. In this case, I mean different clouds and on-prem. That was obviously not an original goal for Google, in terms of internal use. But certainly for external use, it's important that we meet customers where they are, which we'll talk about quite a bit today. And of course, what developers like most is the fast deployments. Now in 2014, we had somewhat similar reasons about why to do Kubernetes at all. And the short answer is we felt like we were building applications internally using containers and fast deployments and services. And the rest of the world wasn't really doing it the way we thought they could. And we felt like, here's a platform. Maybe we can change what cloud means. And I think we're actually in the middle, collectively, of changing what cloud means. Enterprises have a few things they like about this, too. All the same things. But really, it's this apply. That's got to be the favorite command of Kubernetes, apply.  And when enterprises think about what they want, both for themselves and move to the cloud, what they want is really velocity. They want to feel like they have a good developer experience that is effective and, frankly, fun. I think apply is a fun command. It's like the little dopamine hit from programming. The reality, of course, is you have Kubernetes as only part of your infrastructure. In some sense, I would say your enterprise is lucky if they have Kubernetes as part of infrastructure today. They almost certainly have some virtualized workloads. And they may even have some traditional older, very old, even mainframe workloads as well. And we kind of have to mix these things together. And that is not easy.  What kinds of use cases do they see for trying to mix cloud and on-prem? And this concludes multi-cloud as well. I won't cover all these. And we're going to demo some of them, actually. But an easy one, the most common one, I see, is I want to do my mobile app. I can build that in the cloud. But it still needs to connect back to my actual giant database on-prem. And that's not going to move to the cloud anytime soon. So I have to have a hybrid solution for that. Another one that's interesting is I want to run a little Kubernetes cluster on all of my big box stores or all of my oil rigs. And so that's not going to be in the cloud. I'm not going to put my oil rig in the cloud. It doesn't work. So I need some local development environment that's consistent across all these different sites and that I can manage as a whole group. There's lots of jurisdictional reasons. I need to keep this data in Germany or this data in Europe. I need to track all user data and keep that in country. That ends up meaning that you have either cloud restrictions or, more commonly, I have this data center that manages these particulars sets of assets and they have to stay there. So we need some non-cloud solution for those things. So there's a lot of other things. The ones we'll talk about today really and give some demos of are local execution and hybrid services. And then you say, well, what do you really care about? This is enterprise. CIO is kind of top level view down. And I think the ones that ring true for me are this first one, move to the cloud at our own pace, meaning moving to cloud is not something we can do in a week. It's going to be five years, maybe 10 years. So what does that mean? That means I have a long period where I have to run in both places. And it also means I can't not modernize on-prem. So the strategy here is give you the choice. You can modernize on-prem. You can move to the cloud. You can do any mix of those two actions on a fine-grained basis, kind of app by app, in your enterprise. That's the freedom they actually want, which is let us move the things we can to the cloud as we can, let us modernize the things that we can't. So Kubernetes in this context is about modernizing things on-prem because it's not ready time for those things to move to the cloud yet. When you want to operate in this way, you have to have a pretty consistent environment, meaning that I wanted to point out in different clouds or on-prem, the environment in which I deploy those apps has to be very consistent. Otherwise, I have to write multiple versions. So what we want to do is kind of take all the things that vary by the environment and pull them out of the source code. I'm going to call that externalize them. We'll talk more about that in a minute. And then on top of that, it's not enough to run the app. I need all the supporting infrastructure of security and auditing and how do I know where the keys are, how do I manage the keys. And I like all that stuff to be consistent across the environments also. Like how do I have a policy that says, here's user access control to this data and that access control has to be implemented consistently on different clouds and on-prem. That's a good goal, not easy to do. So the strategy we have to make hybrid work is really has these two parts. First, realize that the easiest way to get consistency is to run the same code. Then it's consistent. It's not just consistent at the API level. It's actually consistent at the semantic level because the code determines the semantics. If it's just the API level, you don't know for sure that semantics actually match. And guess what? They won't always match. So core to this strategy is less use a bunch of open source. Open source will give us the same code in different environments. And we will get consistently because of that. Consistency because of that. So this shows up as Kubernetes, but also shows up as Istio and TensorFlow Open Service Broker. And we'll talk about a couple of those today. And the second core idea to this strategy is that it's got to be based on services. Service is the unit of placement of functionality. If you break your app into many services, you decide on a per-service basis where it runs. And some services will run on multiple environments. And that's OK. The ones you need everywhere, say like DNS, that's going to run in every environment. Other services like managing your European user assets may only run in one data center because that's the only place it's needed. But the way you're thinking about it is creating and consuming services that span environments. And we'll show you how to do that with Open Service Broker today. Now, I won't talk as much about Istio, but Istio is a big part of this. And I'll show what it does on a future slide, but really gives us the control later we need operationally. So back to externalization. The key here is that all the things that need to vary across the environment can't be in the source code. So we have to externalize them. What does that mean? Well, it means you put them somewhere else. So it turns out containers already do this. They actually, in the container, tell you which libraries you need. And you don't have to worry about how libraries get onto an operating system or onto a machine. The package management part goes away. And that is something that will vary by environment. Services, obviously, we're going to externalize all the telemetry, all of the user access control. If you're writing source code that has check user ID in the source code, you're doing it wrong. That will vary by environment. Therefore, you can't have it there. Likewise, events down the bottom of events are a glue. But they're a glue that is external to the systems that they're gluing together, which means it's easy to glue different services across different environments using events as the mechanism to glue them together. So all three of these big open pieces actually give us some of this externalization. Kubernetes, I hope you know. But really, it's decoupling development and deployment. We can do all of our development stuff first, deploy in different environments. That deployment is consistent. We'll show that today. Istio is really the envoy routing mesh that goes under all services. And because it's a mesh of proxies, it's essentially interposing on all traffic, which means that we can do access control. We can do security. We can do authentication of services to each other. We can do telemetry. So for example, if you wonder the SLO, sorry, the latency distribution of a service, we can collect that at the proxy. It does not, again, it does not go in your source code. It's externalized. And therefore, consistent across all environments. And finally, open service broker is really decoupling service providers from service consumption. So if you know you need DNS, you don't actually do anything in your source code to get that. We're going to actually cause you to look up a service, find it in the catalog, and use that version. And that version will be customized for your environment in a way that you don't need to know about at the time you write your service. So all these together, basically, we're trying to get a level of traction that hides the environmental differences. Decouple development and deployment, decouple traffic management, operational things, setting a policy, that's what you get from Istio. And then decouple services producers from consumers. And we'll show you this open service broker today, where we produce a service that's found in the search broker and then actually gets consumed. And we'll show that on different environments. Where do we get when we're all done with this? Well, you get a open, multi-cloud way to deploy applications, but not just deploy, actually monitor them as well. So all the things you want to know about your service, including how they're running, latency for all the things, all that, you just get to collect in a uniform way. So with that, we're going to move to the fun part of this talk with Aparna and Matt giving some demos. Thank you, Eric. That was amazing. All right, so Matt and I are going to do demos. By the way, there are some seats up front. If folks want to move in a little bit, we can make room at the edges. That would be great. So thank you, Eric. There are a set of hybrid abstractions that are under development. And Matt and I and many of the Google engineers here are involved in them. And so we're going to try and demo two of them here today. If you're a developer that's developing an application that you want to deploy on-premise and in the cloud, you might want a systematic way of doing that. I mean, you could go sort of cloud by cloud and deploy it, but we're working on something called a multi-cluster registry, which is actually Christian Bell here, is leading that work, which is a component in the Kubernetes open source project that makes it more systematic to deploy your applications across clouds.  And you might want to consume other services that you aren't writing. Either first party from other developers or third party services. And that can be a challenge. You might have to go and learn the semantics of each service that you want to use. But there's a standard that is emerging for this, and that's called the Open Service Broker API. And so we're going to demo that, and it's used in hybrid cloud because it's emerging as a standard across different clouds. And Martin Gannholm, who's at the back of the room, has been working on that in Google. The other building blocks that I'm calling hybrid primitives are Istio and the Kubernetes Cluster API. We're not going to go demo those today just because of lack of time. But these are more for operators. If you are managing a large hybrid environment, you want to manage the services and make sure that they're authenticated and credentialed, Istio is a really great tool for that, as well as visualizing those services. And then lastly, the Kubernetes Cluster API allows operators to deploy and upgrade clusters in a consistent way across clouds. So let's get started. So Matt and I have decided that we're going to go into business as a startup. It's going to be a bookstore. And it's going to be a really awesome bookstore. It's going to have fiction, nonfiction, all kinds of books. And you're actually going to be our customers. You're going to buy these books. We've decided that we want a major online presence. So we're going to have books online in a website hosted in the cloud. But we've also struck a deal with a number of different stores, hundreds of stores, where we're going to set up kiosks. And the kiosks are going to be running the same application that's running in the cloud. And you can go there and you can purchase your books in the store. So that's the business we're going into. And of course, these two applications that are running on-premise and in the cloud need to have a shared inventory. So we know who's buying what and how much more we need. So they're going to write back to a shared inventory. And that's what we're going to show you, the hybrid bookstore. Of course, given our heritage, we've decided that the online app is going to be Google Cloud. And we do have some stickers for you for Google Cloud later on, if you want to come get those. And we're going to use Google Kubernetes Engine for this. So that's where we're going to put the bookstore front end online. In terms of the kiosks, so we've had a donation from Cisco. They've given us a set of UCS servers on which they've installed VMware and open source Kubernetes. And that's going to be our consistent environment. We're going to run the kiosk app on those clusters. So let's get started and show you. Here we are. We're in Google Cloud. And this is Kubernetes Engine. So we can just go ahead and create a cluster. And you can see me type with one hand and hold the mic. So we're going to create our cloud central cluster. And the cloud central cluster, I don't want it to be a zonal cluster, because I never want this bookstore to go down. So I'm actually going to choose a regional cluster. This is a beta feature. It just went beta on Monday of this week. Wes Hutchins, if he's here, he worked on this. But essentially, it takes the control plane of Kubernetes and spreads it across three zones by default. But not just that, it also spreads your nodes. So my application will be spread across three zones. So should there be an outage in one zone, my books are still going to survive. And I'm going to choose the latest version of Kubernetes because that's going to have the maximum patches. And it's going to be the most secure. I'm a startup owner. So I'm going to go with two nodes per zone for a total of six nodes in this cluster. And that's it. And I can go ahead and create it. That's going to take a couple of minutes. So we have a pre-warmed cluster here in US Central 1 called cloud central. As you can see, it has six nodes. And that's distributed across these three zones. So central 1A, central 1B, and 1F, two nodes each. And I'm actually going to log into this cluster from this VM, this test VM. And I've also got the credentials for the on-premise cluster, the kiosk that's running VMware and Kubernetes. So let me go ahead and show you those two clusters here. All right, so we've got credentials. Here's cloud central that's running in GKE. And here's the on-prem cluster that's the kiosk. And let me go ahead and get nodes in a nice format for you for the cloud central. And it's what we saw before. It's got six nodes, two in each zone. And then let's also connect to the on-prem cluster and see how that's looking and what does that have. So this one is a simple non-HA cluster. It's got three nodes and one master. And it's running a different version of Kubernetes, 1.7, and a different operating system. And one of the things you're going to see is that it's not going to matter. Actually, the bookstore app is going to run on both of these clusters. And the service catalog is going to run on both of these clusters. And they're going to connect just fine. So now I could go ahead and deploy the bookstore app on the cloud cluster and then separately on the kiosk. But I have hundreds of stores that these kiosks are going to run in. So I'd have to do it individually. And Matt DeLeo, who's my CTO, has been participating in the multi-cluster SIG. And he told me that there's this thing called the multi-cluster registry. And he's created an image of it in GCR. And he told me to deploy that. So I'm going to go ahead and deploy that. And this is how I deploy it. I basically run CR init cluster registry and install it in this namespace from GCR. And Matt's going to tell us why that's a better way of doing our hybrid application. Sure. Thanks, Aparna. So one thing we realized after talking to users of Kubernetes is that they're already running multiple clusters, often even dozens, for the reasons we enumerated earlier. They really need a way to keep track of them all. They need a way to perform operations on a subset of them, or maybe on all of them. And right now, what they're doing is a lot of them are using hard-coded lists, maybe checked in to get, or maybe files on network resources that they share between operators and CD tools. And what the cluster registry is, it allows users to have a centralized store of their clusters. They can define labels that they can then use to filter and enumerate the clusters that they want to perform these operations on. And in terms of the SIG, it's kind of performing the basis of a lot of the tools we're going to be building around multi-cluster. All right. So I think the registry is almost up. So it's deploying as a separate API server and one of the nodes in Cloud Central. And we've prepared each of the clusters as a YAML file. So let us show you the first cluster. This is Cloud Central. Yeah, so we've applied a few labels to this Cloud Central cluster. We've got the app bookstore. So it's going to indicate that we're going to deploy our bookstore app there. We've set the provider type to Cloud, and we have a zone for it. Since we said it was going to be HA, we went ahead and marked it as HA so we can kind of, again, keep track of all the things we care about with the cluster. And the same thing for the on-prem cluster. Yeah, and so this one's very similar as well. We've got the app bookstore. This time, the provider type is on-prem. We have a different zone. Our store is on the east coast. And again, it wasn't HA, so we just marked it as false. So by attaching this metadata to these clusters, when we go ahead, we're going to switch context to cluster registry and then apply these YAML files to register these clusters, as well as a set of fake clusters to model the hundreds of stores that we're going to have kiosks in. We're going to register all of those now with the cluster registry. So now we've got a central database that has all of our clusters. And let's see, get clusters. So now we're running this against the cluster registry API. And we see that we've got Cloud Central. We've got on-prem. We've got a number of other clusters. What do we want to do next? Yeah, so let's go ahead and filter our list down to figure out where we want to deploy our bookstore app. So this gives us the two clusters. There's a little bit of an obscuration, but it says Cloud Central and on-prem is the second one. And thanks. Sorry about that. And then so let's go ahead and whittle it down a little bit more. Let's deploy to our cloud one. OK. We're going to go in business first online. So very simple. We just add the new provider type to Cloud to our filtered list.  OK. So we're going to switch contests to the cluster registry to Cloud Central and then start to deploy our bookstore app. And so let's take a look at our bookstore app. It's got the usual services that you would expect. It's got a front-end deployment and service. It's got an inventory service and deployment, user service and purchase service. So that's looking good. I think we can go ahead and create a namespace for it and then apply. And this is the power command, right? CubeCut will apply and everything in that registry. And pretty much, we should have an online bookstore. So let's see. Let's get pods. Well, it looks like the user service is up. The purchase service is up. The inventory service is up. But the bookstore front-end didn't deploy. And we could wait for it to deploy, but it's actually not going to deploy. And that's because we want to show you a feature here. The bookstore app actually has a dependency that doesn't exist yet. And so it's not going to deploy until that dependency is met. So let's go into the deployment. Yeah, there we go. I'm going to cat the deployment so that we can look at what this deployment looks like and why the bookstore front-end didn't deploy. So it looks like we have a couple of volumes here. So one of them is the secret name GCP IAM credentials. I don't think we created that, right? You're right. We didn't actually create any IAM credentials. OK, so that sounds like a dependency. But here's another one. We've got this PubSub topic at the very end. And I don't think we created that secret either. That's right. We talked about the front-end and in both of the locations publishing what's happening with the inventory. And we were going to use PubSub for that. So we are going to need the PubSub service as well as the IAM credentials. These are dependencies, right? These are third-party services that you might want to use in your application. So what we could do now is we could go to Cloud Platform and we could set up a PubSub topic. And we'd have to learn the semantics of that. Or we could, and then we'd also have to get an IAM service account so that we could get credentials. So we could do all of that. Or there is a simpler mechanism. I think Eric talked about the open service broker API. This API provides a standard way to instantiate and consume any service. And GCP, Google Cloud, and other clouds can create, and any provider, frankly, can create brokers into which they publish these services so that users like Matt and I who are trying to start a bookstore can go and discover these services and connect to them without having to worry about the specific semantics of each service. And so the GCP service broker is actually live. It's in early access. If you want to get early access, you can sign up at this URL. But in order for us to access that broker, we're going to have to set up a service catalog. So and that's kind of a nice segue because it allows you to show us one of the coolest extensibility features of Kubernetes. So we're going to go ahead. And instead of manually provisioning PubSub and then getting the IAM credentials from Google, we're actually going to use the service catalog. To deploy the service catalog, I need to be a super user in the cluster. So I am going ahead and giving APC. Now that's me, admin rights to the cluster. And then I can run this powerful command, SC install. And that is going to install a service catalog, which will then give me access to the full service broker that GCP publishes. So now let's see if that's installed. It usually takes a little bit. So it's not done yet. So the controller manager and the API server is still coming up. And what is the service catalog really?  It's using kube aggregator, which is a way to add and extend the Kubernetes API natively. And so what's happening is that the service catalog is deploying as a separate API server with its own controller manager and its own LCD backup store. It's deploying in one of the nodes in the Cloud Central cluster. But the more important thing is it's also registering with the master of the cluster. And so it'll become an extension to the normal Kubernetes API. And I'll be able to access the service catalog features just like I do anything else in Kubernetes. And that's really the kube aggregator extensibility functionality. So let's see. What have we got now? Looks like we have our API server, our LCD operator, and our side cover. We're missing the controller manager. OK, so we're going to wait just a little bit more. And there we go. So now the full service catalog is set up. And we're going to go ahead and use this powerful command to add the GCP service broker. And by the way, you can subscribe to any service broker that exists. So let me now show you this actually in the UI. So if I go to Kubernetes Engine, there's this thing called Service Instances. And I can go to Service Instances. You have to be part of the EAP program. And then I can click on Browse Service Catalog. And here I should see all of the services that the GCP service broker publishes. And this list is going to get longer over time. But here you can see that Google is providing all of these services through the Open Service Broker API. So that's great. I mean PubSub, Cloud SQL, GCS. I, of course, need IAM, and I need PubSub. So I can go ahead and create PubSub right from there and then create an instance of that service for myself and then subscribe to it, basically bind to it. But I'm actually going to do that here. So let's see. You see the same set of services here in the command line. And now I'm going to go ahead and create an instance of the GCP IAM service in the bookstore namespace. So that's been created. And then similarly, an instance of the PubSub service. And that's been created. And actually, this is going to run a little bit in the background. So IAM instance has been provisioned. And let's wait for the PubSub instance to provision. And what it's doing behind the scenes is right now, when the IAM instance is being provisioned, it's creating a service account for our namespace. And it's also creating a PubSub topic for our namespace. And when we bind to it, I can discuss that a little bit more. Hopefully, it won't take too much longer. There we go. Yeah. So now when we're binding, we're actually going to take the service account and inject the credentials into our Kubernetes cluster as a secret. This takes sometimes a little bit longer than the provisioning, at least during the demo. But once it's done, we'll have the secret sitting there, and we can consume it from our application. But remember, we need to. We need the IAM binding. And we also need the PubSub binding. And so I think it's almost ready. So the nice thing about this mechanism is that it's a common mechanism, no matter what type of dependency and what type of service you're using. And the injection of secrets and then the provisioning of the bookstore front end is kind of a common methodology in Kubernetes for how to handle dependencies. And we think a very elegant one. The binding is being created. And you're good. And then we have to do this also for the PubSub service. And then wait for that binding. And then we're almost there. After that, our bookstore, our online bookstore should deploy automatically. And then we'll be able to see what books are available, and you'll be able to buy the books. So that's just the online bookstore. And then we also have the on-premise kiosk bookstore. And we're doing exactly the same set of steps there. And Matt will show you that. He won't run you through everything, but he'll show you the bookstore coming up on-premise. This is done, right? Yep. All right. Great. OK. Yeah, so now we have our two secrets that our service depended on. And I bet if we look now, we should hopefully see some pods that will come up. This might take a few seconds because it's probably in a back-off loop. But in a few seconds, we should see the front end come up. And our service has already been provisioned. There's a load balancer for it. We'll show that in a minute. And we should be ready to go. Yeah. So the bookstore front end will come up. And then it'll be published as an external service. And then I will get the IP address of that external service. And then we'll open a tab and start shopping. There we go. All right. So get service. And the external IP address is <IP_ADDRESS>. If you want, you can go to this external IP address. And you can shop online as well. So this is the bookstore. Let me make this a little bit bigger. This is our online website. And you got a lot of different kinds of, as I mentioned, fiction, nonfiction. You can go here and you can purchase. And now I'm going to ask Matt to talk about the on-premise bookstore. Sure. So just to show you what we did, we don't have time during the demo to show it. But we did the exact same steps that we just showed you. We ran through, we already had the service broker and service catalog installed. So all we did was create an instance and bind to it for GCP and IM. It's talking to the same project. And it creates a new topic that then we can then use for inventory control. So speaking of inventory control, let's set up the two topics. We have a PubSub reader. This particular one was going to run in our cloud environment, because that makes the most sense. And what it's going to do is it's going to listen to the topics. And the topics are being, again, published by both bookstores. And it's going to give us a kind of a real-time view of the purchases coming through. Right. So both bookstores, as you purchase books, and it does look like someone has bought books. So three people have bought books in the online store. Yeah, four or five people. OK. We're selling out. This is here the on-premise bookstore. And we should give them the IP address for the on-premise bookstore too, so they can go shopping on-premise. Especially if a book is sold out online, you can buy it on-premise, because essentially we have the same inventory here. So it's <IP_ADDRESS>. And we're going to go back and, yes, we've got quite a bit of shopping going on in store one. But nobody is buying yet from store zero. So that's the kiosk. So I'm going to go ahead and what would you like to buy? Let's buy the crock pot one now. The crock pot, yeah, I need the crock pot, yeah. Cooking. I saw math is hard. Math is hard. Yeah, oh, people are starting this. This is good. OK, we're doing well. And yes, store zero is starting to have great sales as well. This is excellent. So that's actually the conclusion of our demo. Thank you for shopping with us. We hope that it's a very successful business. Essentially what we showed was a hybrid retail operation that had a bookstore online and a bookstore in kiosk. They both published their updates through PubSub into a central inventory system. And we showed you the stream from that inventory system. So now we'll kind of come out of the role play. The use cases that we demonstrated here were the local execution and the hybrid services. So local execution being we're executing the same application on-premise that we are in the cloud. And you can also imagine doing CI CD. Should I want to update my bookstore? I can roll it out from the cloud to all my hundreds of kiosks as I go public. And then we demonstrated the use of hybrid services as dependencies through the open service broker work. So there are a number of other use cases that these primitives also apply to. But those are the ones that we were most excited about and wanted to show you today. Again, we believe that these are really helpful primitives for those who want to deploy applications across clouds and on-premise. And I think I hope that you all have a chance to try this out. OK, we're going to open it up to QA. One minute of Q&A. So a lot of these patterns could have been done in the VM world as well. What's different about containers that will make a cloud successful, but wasn't that didn't happen in the VM world? Apply. Ease of use, I would say. Containers also help on other fronts. For example, we're running different OSs and different versions here. And the containers hide those differences pretty well. So we have control of the software dependencies inside the pods. And then we're defining through the service catalog how to find provision and use services and automate that. And it is true, we'll actually be able to create services on other things, like Cloud Foundry, as the pivotal yesterday, or on VMs, on-prem. And you can add those to Open Service Broker. We do that with Apigee, for example. So you'll be able to make services of all kinds, but I do feel like the leverage you get from Kubernetes and the velocity, that is actually, for sure, quite new. Absolutely. The question was, can we run Open Service Broker on premises, and the answer is yes. It is also open source, and if you use it on-prem, typically we have customers that want to use it to actually then put in Google services that they then connect to. So the legacy dependencies use case is often when you have a cloud-native app that you're developing, say in GKE, and you want to connect to dependencies that are on-premise, maybe an ERP system. And really there, if you can put an API gateway in front of that application and create a RESTful API, then you can do any of these things. You can obviously connect to the cloud-native application, but you can also use Istio to manage that service along with your other cloud-native services. So that's essentially that use case. Thank you very much.