Everybody forced here ripping 21 22 immaculate basketball hobby five bucks full case number 22 tiered random teams Thanks for joining everybody and good luck Yeah, I know illegal. I'm sorry, man There were a lot of big hits, but I felt like they were all like a few teams I think there were quite a there were a handful of spots. I didn't do very well in that break All right, here we go y'all I Didn't say it already you can find those the late sports cards calm at any time links and chat as well I Empty briefcase, yeah, send you some base cards Even the Royals had that had that book that book was crazy both the books are full were crazy Here we go y'all Pacers got buddy healed it's to 49 26 of 49 Everybody joins the break hope they don't get nothing now Jumbo Jersey Jim all Mary 44 of 99 for the Nuggets The standard the game worn vets a game worn immaculate Standout memorabilia three-color patch Pascal C. Occam 20 of 25 for the Raptors Recall our jumbo patch game worn next up. It's the Alex Karusha Bulls auto five of ten There he is the Karusha. Oh, these guys are outrageous What a bunch of hooligans I say Yes, Yaka was great nice low numbered patch auto for the Nets Joe Harris seven of ten Joe Harris Game worn patch auto Brooklyn and an RPA Herbert Jones Pelicans 15 of 99 New Orleans. There you go Braden Matt, what's up, buddy supple-handed forest? All right. This is just This has gone on long enough. I'd love to pull a logo man. Last case had a gay swoosh To 10 Deontay Murray spurs base 6010 Nuggets game used Jersey Monte Morris 81 of 99 Matt, you going to the national this year? Let's go Oilers patch card Raptors Pascal C. Occam 10 of 25 another three-color C. Occam patch Yeah, that's right. It's in Chicago. Yeah, it's close to you Closer to closer to you than most I should say redemption here Is a grizzlies premium patch auto red Xair Williams. There you go grizzlies. That'd be the jumbo patch rookie auto Xair Williams Bucks shadow box signatures of drew holiday 19 of 99 Solid vet hit for the bucks and Celtics immaculate legends auto Larry bird 11 out of 25 Big bird Beautiful card. Love these designs this year on some of these like the legends and the rookie introductions Awesome, man Let's go legal Sean M with the C's there you go.   We're gonna be talking people the entire time we're there Whatever plans rich has for us after the show. I'm like, nope. I'm gonna hang out my friends John Collins 51 out of 99 for the Hawks Mike. We'll see you there Yeah, come see us at the booth. You got to get there early though. We'll be giving away stuff for sure It goes quick. The giveaways go the swag goes so fast at the national Marcus smart jersey 41 to 99 Celtics Everybody everybody in shacks going To be a party Nets. Whoa a Nets Kevin Garnett dual jersey 28 of 75 there are there is some damage on that five and a seven actually so there's some damage kind of all over this one on the Frames here. Unfortunately for the Nets. It is a game worn dual jersey KG. We'll send a box and wrapper So you try to get this one in place Nets KG Celtics fans close your eyes I guess T-Wolves fans too, but KG don't like the T-Wolves Autos now Kings heralded signatures Mitch Richmond 4 of 10 Low numbers low numbers in the auto so far. We just need to see like some big rookies now Or even big vets Shadow box signature Bojan Bogdanovic for the jazz 43 of 99 Now this is what i'm talking about his next card right here Zion Williamson Signature moves Pelicans 24 49 Brayden K again Grabbed a couple of the last spots That's hit a couple nice cards here the rpa of um Butler right Sorry herber jones herber jones watch that butler and then these Zion signature moves. That's gorgeous Clean sig number one inscribed to it doesn't always sign number one that mag two more boxes here No Anyone can have my auto for free. I don't know why you'd want it, but you can just have it I only charge illegal and cash only for the cars been saving up from these breaks Dude what a bunch what a bunch of lunatics right now Crazy nice luke on number 81 of 99 base parallel Dallas Grizzlies jerseys card jaren jackson jr. 43 of 99 Uh kd jersey card net 66 of 99 Game worn inaugural ink rookie auto clippers brandon boston jr. 15 of 99 Dude, I can't I pull this guy's auto all the time now jerry stackhouse heralded signatures 35 of 99 Who do I have one in the Super Bowl? I'm gonna say jaguars bangles I wish it was jagged. I hope it's a jagged for sure I just they their road is gonna be way end up being way too tough Even if you beat the cheat just like oh well now you have to go to sins to your buffalo now And redemption Dennis rodman shadow box signatures We got a checklist. He does have he does have pistons hits in this so It's a decent chance. It's pistons Rodman, let's see shadow box rodman cart 33 is bulls bulls on the rodman His pistons are award winners and soul of the game His bulls are shadow box sneaker swatches and sneak peek. No, it's not even that they're like the best team. I just She's like, ah, why not the bangles? Hey, nick. What's up, man? Do you know you got a VIP passes you get early acts? So when's the day before it starts you get early access like a few hours before I think it's vip's only that night It's I don't it's called like some odd showcase Um, I think you get early access every single day as well. Like you get in like a few minutes early So you have to wait in this crazy Crazy line. I'm not sure what else it gets. I think there's like a VIP booth.  Oh, yeah, it seems to be Well worth it if you if you're about it. Yeah, we got a thickie coming up Rookie jersey card josh giddy number 86 of 99 for the thunder Whoa, nick. That's good. That's interesting, man Yeah, both of my nephews are through um Are through surrogacy. That's that's pretty cool It's exciting. You've got that is Freakin cool soul of the game Rockets Hakim Elijah on 9 of 25 jumbo sneaker relic And yeah, that's game worn Game worn Hakim the dream sneaker relic. Let's go man. Yeah, LA gear.  There you go, Gerald Hakim Elijah want dude. Love the sneaker. Alex and iMac 360 point man Should fit. Yeah, yeah Passive present signatures kevin hoarder 48 to 49 hawks That's what it's for I see Because we're never we're not used to putting actual 360 point things in cards. It's always like filler. It's like, yeah That's so cool, dude Prime patch rookie auto for the thunder erin wiggins one of 10 Nice hit thunder Thunder hitting well tonight. You chin s with the thunder Dude Is that an l was that l4? Oh Oklahoma l Oklahoma. Okay I thought his name played it first That's awesome, man What an insane Comment I got you Nick. Don't worry and a clippers brandon boston jr rookie introductions auto 29 of 99 You go clips Clips on that one Dude la gear hakeem. Oh my god. It's so cool Let's do the recap You know what in fact, let's do this You know what? How about There we go That'll solve that problem for now All right relics now josh giddy Kevin Durantz jaren jackson jr kg again, this one's a little damaged We're going to send a boxing wrapper with the nets here nets kg Marcus smart Pascal siakam Monta Morris pascal siakam jamal murray autos now Brandon boston jr kevin herter Jerry stackhouse brandon boston jr boyan bagdanovitch Mitch richman's Drew holiday is irie williams premium patch auto red redemption for the grizzlies That's the jumbo patch rookie auto there Joe hara seven to ten Caruso five of ten for the bulls denis rodman bulls on the shadow box in a church redemption very nice redemption there for chicago the worm prime patch rookie auto to ten erin wiggins with thunder A soul of the game hakeem Elijah won la gear partial logo of the shoe I don't know what I really know what else to say at nine to 25 That's so that's so frickin cool Yeah game worn by the way if I didn't say it seven times already senator moves syah williamson pelicans Monster legends auto larry legend 25 cell fix and rpa for the pelicans again herbert jones 15 and 99 That is awesome man case 23 coming up next


Now, when it comes to leveling up, earning that XP, chasing that max level, new players are seemingly going about it all wrong. Let me explain. How's it going guys, my name is DPJ and if you do enjoy the video, leaving a like really helps out and if you like what you see and want to see more, be sure to subscribe. So I have seen this tons already with the Abel IV and that is people chasing XP farms, people chasing the fastest way to level up in this game. Which I guess is fine, I myself have pulled out a couple of XP farms, but in reality guys there's only one proper way at going about this, and that is completing the game's campaign first. I mean yes for sure. Using the also popular dungeon reset farm to earn levels and armour is a great great method in doing what it says on the tin. It works a treat, but in reality doing this before completing the main story isn't doing anything for you besides wasting your time if you plan on getting the most out of the Abel IV and let me explain why. Then it becomes a time and this will happen eventually when your build is the most important part about your play through in the Abel IV, but in making the most out of your build you need to be able to get those sacred and unique items, which are both more powerful than legendary items and these guys only drop in that World Tier 3, they will not drop in World Tier 1 or 2. The thing is, World Tier 3 only unlocks upon you completing the game's campaign. You also in World Tier 3 find Nightmare Sigils to unlock Nightmare Dungeons for even more powerful loot, again you can't find these in World Tier 1 or 2. So if you're going to play this game the way it's intended to be played, if I were you I wouldn't waste my time in using any XP farms until you have completed the game's story, the main campaign. I mean for sure, use them if you want a couple of levels or if you're chasing any specific item, but remember there's an absolute massive chance at the gear you're using right now if you're on your first play through will eventually be scrapped or sold anyway. So yes guys, the best way to run about earning XP and levelling is post-compane completion when things in Diablo 4 really start to get serious and that also great end game starts. Now don't get it twisted, you play this game the way you want to, I'm just giving you guys my guidance, I'm giving you guys my advice and how you should be if in reality you plan on making the most out of this amazing game. Diablo 4 isn't meant to be completed within a day or so, it's meant to be played over months and months hence why it's a live service game. You rush in to get max level before you complete the main campaign story is a pretty pointless one because you're going to get the highest level you can anyway via just playing the campaign. The amount of XP you earn via playing the campaign is amazing. So you may as well just play the first campaign, the main campaign within your first play-through and level up that way and also unlock World Tier 3, switching straight to World Tier 3 and playing the game on this there and forward. That's the way it makes sense to me. Anyway, but hey I'm just giving you guys my opinion on the way you should be playing this game if you plan on making the most out of it. Guys if you enjoyed the video leaving a like really helps out if you like what you see and want to see more be sure to subscribe and hopefully guys I will see you on that next one.


A very good afternoon to all of you that have gathered here. As we all know, International Women's Day is observed globally to celebrate the significance that women have made throughout the centuries or the years. It is a day that we observe to celebrate their achievements, also their influences that have laid the world into a better world today. International Women's Day, when we look beyond what it is all about, we get to understand that it is kind of a reminder for all of us for the existence of injustices in the world. That women pushing through towards the injustices and making things possible, like achieving the right to vote or having the right to come in the forefront to achieve their dreams. International Women's Day, I need not go further to make you understand what it is all about, for we are all aware of what it is about. What we need to understand or what we need to look or have a strong hold today while celebrating International Women's Day is that we should empower and encourage each other. We should encourage and empower each other by that I mean to say we should always, when we see a student or a person who is capable of doing things that they are interested in, we should say to them or push them forward or say to them that you know what you can do it, you know what you are important and the progress that you are making is going to have an impactful thing in the world. It is for us to understand that International Women's Day is like I have said, it is a reminder also I thank all the people that have come forward to give their signature and is very participated in our signature campaign. Let your signature be the first step towards your fight against injustices in the world or injustices in your home or in your society. It is the encouragement that you bear or it is the encouragement that you give to others or have to yourself brings the best or brings about the better world that we all deserve to live in. So with that I conclude and also thank the coordinator of Women's SIL and the opportunity that has given to me to address you regarding this International Women's Day. Thank you. Thank you Kenny for those inspiring words. We are very happy that Tetsa College is having this opportunity to speak to young minds so if there is anyone here who would like to add a few more pointers, a few more things then I'll just give the time. I'll give the time to our General Secretary, sorry to think. Good afternoon everyone, I'd like to thank our team for giving me this opportunity. Like today here we are celebrating International Women's Day and here we have put up a flash against gender violence. So we are born in a generation where we should put up equality. I'm a generation in equality and I urge everyone of you to stand against gender violence. Thank you. I'm Kuku of BS6 Semester and I just want to let you all know that you are beautiful, you are precious, you are strong and most importantly, you are very important. Thank you. Thank you everyone for being part of this and may all women be empowered, may all of us learn to be equal. Thank you.


Overcome guilt and condemnation easily with these verses have mercy on me Oh God because of your unfailing love Because of your great compassion blot out the stain of my sins wash me clean from my guilt purify me from my sin For I recognize my rebellion it haunts me day and night Against you and you alone have I sinned I have done what is evil in your sight You will be proved right in what you say and your judgment against me is just for I was born a sinner Yes, from the very moment my mother conceived me, but you desire honesty from the womb teaching me wisdom even there Purify me from my sins and I will be clean wash me and I will be wider than snow Oh, give me back my joy again. You have broken me now. Let me rejoice don't keep looking at my sins Remove the state of my guilt created me a clean heart. Oh God renew a loyal spirit within me


We're here with Kenny Beachham. Can you name the last 10 rookie of the year winners? We had Paolo Ben-Keveron 2023. We had Scotty Barnes in 2022 and in 2021 we had LaMelo Ball and in 2020 we had we had Jamerat 19. We had Luca Donchich. Can I skip 18 for now? You can skip 18. We come back. Okay, okay. Is 17 Malcolm Brogdon? It is. Okay, 17 is Malcolm Brogdon. Cat 16. Wiggins 15. And then 14 was Michael Carter-Williams. Let's go. Come on. Just missing one, right? I'm just missing one. 18. 2018. Aha. It's been seven. There we go. Yes. There we go. Go.


Hi there, and welcome to another episode of Visual Studio Toolbox. I'm your host, Dimitri Lailand, and I'm excited to be back with Eric. Eric, welcome to the show. Thank you. Thank you, Dimitri. Yeah. So we're going to talk about SQL Server Data Tools today, one of my favorite topics I've been on with Kevin. You've been on this show with Robert right talking about this, and today we're going to talk about the DevOps Pipeline. So why don't you give us some details? Yeah. Today, the main topic is about the SQL Server and SQL Database on Azure CI CD in DevOps Pipeline. So to get there, we are going to start with the database development approach, which is migration-based approach, which is more traditional, and state-based database approach, and then we will jump into CI CD. Most of this session, we'll go through, we will run it over demos so that they can be more exciting. Yeah, we love demos. That's the plan for today. Sounds good. So just to set the context for people a little bit more just in case maybe some of you aren't as familiar with all this technology and all the acronyms here. Yeah. So we're going to specifically look at how Visual Studio, let's say Visual Studio 2017 developer using the SQL Server data tools. Right. Can use all this technology that we have for the developer in Visual Studio to let them work with SQL. SQL is part of their source control, their team-oriented development, and specifically the DevOps Pipeline, which is all the stuff that you're going to use in a demo. Yeah, you got it right. Also, let's start with then what is the migration-based and state-based? What's the key difference? Yeah. So the key difference between those two approaches is about what is the system of truth for your database. In migration-based development, your live database is the system of truth. Then there. All right. All we got there. So state-based database development, your database source code is the system of truth. So let's get to the demo and take a look at what is really mean in the session. Awesome. Let's take a look. Okay. So let me switch to application. This is my demo application. It's called the BanchoWorks Directory, and let's put on a hat as an application developer today. Okay. Awesome. So we are not like professional DBAs or we are application developers. Sure. So what kind of app is it? Is it just being on this one? Yeah. This one is Azure Web App Service by using SQL Database on Azure. Basically, what it does is that it pulls down the employee information like a phone book. If you click up one of the employee information, it shows detail of that employee. Now, if you take a look at that, there are sensitive information there. So as a developer, I start my day by looking at my work. So if I expand it, then the task for today is that make a mask sensitive employee information. So we are showing like a phone number and then the emails. So ask is mask it, hide it. Sure. Very common ask. Yeah, exactly. So in SQL Server 2016, there is a great feature called the Dynamic Data Masking, my favorite demo scenario, that you can really easily mask any sensitive information without making any single line of change in your application. So let's- The database handles all the masking in your application just gets the data back and displays it. However, we choose the mask to be applied. Right. Cool. So let's look at the migration based approach first. Ever since SQL language was invented back in 1970, database developer have lived in the world of writing and executing, create, alter, and drop statements. Yes. Then for making changes to your database. Right. Then emailing those scripts to your friends and the team to run locally. That's right. Until you release the first version, it's straightforward that you can do all the app actions. But once you have the first version released, to the public, then you have many users using your app and services day and night. Then the change like this is business of altering your live database. So let's take a look at what it is. So first, let's take a look at what we have. I will execute it against the, I'm connecting to my live database, which is running on local, which is my dev environment. So I connect. So you get SQL Server 2016 installed locally? Right. Right. I'm running SQL Server 2016 locally as a dev environment which is my currently live data. Right. I execute it. As you see, emails are all shown very clearly. Right. So the key thing is that with the dynamic that I'm asking SQL Server 2016, it's really simple code change like this. There's two line of code and I will execute it. Boom. Two errors. Right. So your database is like the stem of truth. Now as a developer, I need to understand what's in there exactly. Right. And then I can understand what is these errors. Right. Right now what message is selling us is that, the employee view has dependency on the table that I modify. Also, there are other objects that is actually using this table at the same time. So to figure out as a developer in the migration approach, either you need to get a great tool to figure this out, or you have to have a great knowledge about your live database already. Yeah. Or you have to ask around your friends and experts. Or keep trying to alter until you run out of error messages. Right. So that's kind of a typical approach. Let's do that in the state-based approach. Then let's see the difference there. Right? Okay. So in state-based, as I mentioned, I'm going to solution explorer. Everything is based on source code. That's your system of truth and not the live database. What is most natural way as an application developer to make a changes or creating a new version of application? Right. Let's take a look at, before we go jump into a database side, let's take a look at the application. So I have, this is my web application code, it's written in C-sharp, and there is a v-employee model class. Right? So let's say if you don't need this property, what you do is you delete it on the source code file. If you want to modify, then you modify the changes on your source code file. Right. That's what you do, and now you have a new state of your application, and then you build it, test it, and you install it. We're deployed to the web app service. Sure. So that's the practice. You can do the exactly same thing. Let me just to close this one, don't save it. If you go to a database project, SSDT database project, which is all state-based, then you do the exactly same thing. All your database objects are captured in the project as a source code. SSDT is smart enough for those that maybe haven't tried it in a while. I mean, it knows the relationship between it. It really is rich intelligence, friendly environment. It's part of your source control, part of your project, and get latest on your developer friend next door to you. Next desk over will get the changes you're making here. So it's a great way to collaborate, but just listen to challenges you got to work through. Yeah. So let's make the same change like altering it. Now here, likewise, you modify the class in your Shisharo Java. In state-based, you're not dealing with alter business. It's always your definition of the table, which is defined and created. You can always look at your table in whole holistic view. What you need to do? You make a change. It knows you made the change. You're deploying it. It will alter accordingly. It doesn't require you to create alter statements. Exactly. So just to declare the state where your table should be like this. So in this case, I made a change, exactly the same change on the definitions up and I go build. Okay. So first, we showed the ad hoc capability of SSDT from Visual Studio to run SQL code. So you ran some SQL code just to demonstrate that that wasn't as straightforward as you find it. Now, you're doing it more of the way we would recommend people do this in this approach. In state-based. Yeah, in state-based. Right. So the build was successful. There was no error. Then likewise, you're installing app, but you can install or publish, if you will, to your live database, which is a target. So like your Dev database, let's say your common Dev database. The concept is that you're making your target, whatever it is, to the state of your source code that you just developed and verified. That's basically the key concept. So to make it easy, I made up the published profile here. So I can just double-click that goes to my local database and I run it. I'll turn it over here. I love the fact that you can generate the script if you can't. Yeah. Let's say you don't want to run it until you look at what the changes are that it's generating. Exactly. I'll show you that one. Yeah. So error. Okay. Let me click. We should probably we have to do it again. It's a data loss case. So just a second. It's trying to protect us. Yeah. So what we just showed here is actually, when you get an error like that from SSDT, if you're confident that the changes something you want to go through, especially in a Dev environment, right? Yeah, I see. In production, you would think about this a little bit harder. All right. So you want to know what happened? Actually, this is my fault. I was kind of a prepping the demo and then practicing it on my local machine, and I actually made the really dangerous changes at the same time that could cause the data loss illustration. Yeah. So it actually, SSDT detectives smartly and stopped it because there is a possible the error of losing your data, right? So if we go to the publishes setting and there is a one. Yeah. The blog incremental, yeah. Blog incremental deployment if data loss might occur. It was checked. So it was basically blocking it. Yeah. That's the default setting, right? That is the default setting. That is the most protective. That is right. So I was not expected. So that's why I was, oh, what's happening here? But that's actually a legit feature and it's a great feature that you can, we can always guarantee that you don't have a data loss. And at least you have to, like me, you have to figure out, oh, wait a second, wait a second. The data loss can happen. So I have to check it out. So my change was just changing the column size here and there. Yeah. That was my experiment before this session. So that's what happened. So that's it. We don't have bugs, folks. We show features. That's features. Just say in the demo. Demo. It wasn't unexpected, right? Unexpected part of the demo. Unexpected. Right. So let's run it again. So actually, it's another demo of data protection. I wasn't expecting. So I was a little bit confused. But yes, it is a part of the SSD feature. Now it is successful. So let's go back to our script. And I love the fact that it shows you the various states of published rights. You can see what happened before and what's succeeded now. Exactly. I always find it irritating when the tool kind of takes away the previous state. And you're like, oh, what did happen? You know, maybe you can email somebody about that. Even though it worked for you now, OK. So that's great. I will show you that part after seeing the result. So now I'm running my query as a suspicious user and see what happens with the dynamic that I'm asking. If you take a look at here, it's all masked. Right. So the data is still there. But SQL Server is just taking one of its capabilities and masking, getting you as this user with this level of access, with this query. That's what you're going to get in there for. An app could get the same data. The same hair close works. And the index is defined on this field. It all works exactly as is. That's the dynamic that I'm asking is the great feature. So let's see then how it worked. Before, with just the simple auto statement, it was not working, right? But with the statement, state-based, it worked. So let's take a look at the preview, what happened. Basically, the SSTT detected that the email address table has dependencies on the many others, like employee view has a schema binding here. You see that it will make it bigger. It has a schema binding. And then the employee, the view itself, has a dependency with many other stuff here. So to make that simple change work in migration way, I will show you the other script. And so before we showed you the preview of what the changes were, that's why there was no coloring of the intelligence. It wasn't code. And here's the actual code generated. Exactly. The other one is just a summary report, right? And then this is actual code that ran against the target database based on your state in project, right? So a bunch of this code had it to be executed to make those simple auto statements successful. So using SSTT powered by DAGFX, it intelligently figures out all these dependencies and schema bindings and index matter. And it generates, produces the necessary physical scripts when you deploy your changes to target database. So it depends on your target database version. It can be a different version. It has different content in it, like in terms of schema. And it produces different schema that changes your database to the state of your source code, which is your system of truth. That's a state-based. So we just covered the basic, right? That's the difference between migration versus state-based database development. And the state-based development is very natural to application developer because that's the way that application developers change their application code. So if you're changing C-sharp, that's what you expect. You wouldn't expect anything else kind of as a process. You would want to just have your source code be the truth. And your published version is just executable. Database, in this case, is being treated as an executable sort of speed. And this is the way that I worked with SSTT and a couple of projects that I worked on last. And it works great, even in a large team setting. So we had like 25 devs. And everybody could just get up and running from get file, get latest version from source control, do this sort of change to their local database, even if they want a vacation for a week or two. They weren't asking for scripts from us. And then we can actually leverage the script to change other environments like the common dev database or whatever. So this process, I can testify to it works really well. First-hand experience. Yeah, I totally agree on that one. So now, we just recovered the basics, right? Let's jump into a CI CD pipeline, right? Database CI CD. Nowadays, the continuous integration and continuous deployment is common practice for any serious application development project. Everybody just uses it. It became the standard and then something that you must develop. If you develop your database in state-based using project, then it naturally goes to database CI CD pipeline. Because there is no much difference between your application CI CD practice versus database CI CD practice in this matter. That's main reason that I showed you application change first and then showed you the database change. It's basically the same, right? Yeah, it's just CI CD is the automated version of what we just demonstrated. Exactly, exactly. So let's take a look at, then what you do is that in application development, what you do is that you make a change and then you check in. So let's check in. So I did it in a channel nine, VS Toolbox demo, I will just write it. You just broke all the rules around how do you comment your check-ins, but it's okay. We'll let you get away with this one. Yeah, for this one I will just take a little bit. It was kind of a demo error, right? And this is the main change. And what you do is that you can commit. I will just do it, come it all. And now I have one commit so I can push it. That's common practice for any developer does, right? Commit it and push it. And also on the source control, you create a pool recast and we're going to skip that part but that's the same process that you do on database development using projects. Yeah, it's not specific to what you're demoing. So totally get it. So now I checked it in, right? Yeah. Then if I go to Visual Studio Team Services and build, then you see here, the new build is automatically triggered. It's now happening. The good thing is that Visual Studio Team Service has a great CI-CD feature and it has all the database CI-CD feature built in as well and it's greatly integrated with the Visual Studio. So by just applying the same concept of using the application CI-CD using Visual Studio and the Visual Studio Team Service, then it just flows through the database development as well. That's basically what I'm demoing now. So the new build is triggered automatically and it's just running. So while it's running, it would just take in a couple of minutes and let's take a look at what is in there. So for somebody that might actually not be familiar with what we're demoing here, this is Visual Studio Team Services. Visual Studio Team Services. Yeah, so we're in that portal as we can view some of this data for Visual Studio, but then we can get the richest set of data for the portal itself. So let me then explain a little bit for people who are not familiar. The Visual Studio Team Service is like the source control repository and then the command center to run the CI-CD pipeline and all those goodies, right? So that's how I understand it from the database developer perspective. So if you go to code, you saw all the code that is running on the Visual Studio, but the source is basically on here. It was on the pull request. So it was all the source code is here. So if you're running in a team environment, then everybody can just clone this repository to local, develop it and check in. That's what you can do. There is no difference between any other application development and then it has the flow of a build and release and the flow. Those are mainly two things that we are demoing today and that we have those. So that's kind of a very, the nutshell, high level version of what it is. So let me go back to- How I build succeeded here and it shows- Right. So this one was the one and it already passed, right? So I will quickly show you how simple it is to just have CI build going with the VSTS, SSDT and Visual Studio. Great. So the guest source is just the common template. All those tasks are defined in template like this, right? So for database development, what you care about is that this is one, these are all the common steps that you do, like you're defining your location of your source. And if you have an application running well app, in my case, it has a Nougat dependency. Right, has to do store any dependencies on the server side through the build. And this is the key thing. SSDT database project has a built-in support from MS build. So you can just build a project using MS build. So it's nothing special, installing additional tools is just part of the build process. Yeah. So you can just, you know, any other app application in a build, application build, you can just, you know, a space by what is just the solution name. And that's it basically. And this one is something specific for SSDT. If you define this parameter, I will just make it bigger. Then instead of using disk for temporary, the artifacts, what it's kind of building, and then the analyzing your data source, database source, it uses memory. Do you need to add this parameter or is this something you're adding? It's optional, and it makes things much faster. So you optimize the, you made the build faster, but you manually went in here and added this argument. So if folks don't add it, it still works, but it'll be slower in the build pipeline. Yeah, that is right. And that's basically, and this one is also a common thing that after the artifacts are created from the build, then you're basically publishing or copying those artifacts to the server so that later on the release process can get those artifacts and use it, right? So it's a common practice for, common steps for any application projects, right? Okay, that's basically it. And you can see whole history of your build operation for yourself and your team members and everything. If I click one of their build now, it runs, right? And if you take a look at the deployment, the key thing is that whenever there's a new build successfully finished, then continuous deployment occurs. That means it picks up the build artifacts and then deploy it to your target location. It can be your production. It can be your test, anything like this. So in this pipeline, two steps gonna finish successfully.  That is correct. If I go to the release, then probably it's already finished. And I will show you. So I had the setup like a workflow. In this workflow, what is that? First one is deploying that database to your acceptance test. Let's just go straight to production.  Yeah, there is a, it's more like a safety net to have a test in a deployment and then have some integration test or the usual acceptance test. And if everything is good, then we just see your team service has like a sign off process. So if the authorized person can go and sign off, then production deployment occurs automatically as well. So that's basically the good thing about that. If you're not building a demo app, you want multiple steps. That's the reality. Unless you're completely crazy, but I've seen all things. Deployment is even more simpler, actually. So I have a two task, but you can choose one or the other. We just see the team service has a task built in task that is called a deploy address equal backpack. Backpack is the artifact of the project build. So that was the output of the build process. And you knowing that that's part of something you wanted to get released during this pipeline, you went in here and I'm assuming you had to manually add the task, but it was a template that you already had. So VSTS knows about this kind of task, but you still have to configure it. Something people need to be aware of. Right, so configuration is a very simple. I will highlight this part. So if you take a look at, because it's a deployment to a SQL Server, Azure SQL Server or SQL Database on Azure, so the key thing is the connection part, right? So these are the connection strings and your admin. The good thing is that for password, it's protected. So it's protected through variables. So if I go to variable, you can define your variable and then actually hide it. Yeah, they're in demos like this. Nobody sees your password. Right, so that's a good thing about that one. And then the rest of them is pretty good. They're simple. That's the key thing for your specific environment. And the rest of them is the same thing, just in the location of the backpack file. So it's kind of a template. So for database project, probably this is kind of a same for all the projects. Right, so that's as simple as this. That's it. So when I was preparing the demo, wow, it's really simple, right? Yeah. And if you want to do it in command line and bring in your own version of a DAC FX or SSD version for your specific need, or you want to host it in your own private agent, then you can run the same operation using command line. We have a tool, command line tool called the SQL package. Basically these two tasks are doing the same thing. It called the SQL package that you see. But in this case it's more like you have control. Yeah, so if you have really extreme scenarios or things you just don't fit the standard template, you're not blocked, you can still set up this pipeline, but you have to know how to configure this command line based tool. Exactly, cool. All right, so let's go to our application. And it was the state, right? Before the change. And if I refresh it. There you go. Now it is a new state, which is a dynamic data mask on emails. Without changing any application code, it happened. And without going through all the executing all the statements to your live database, you just change your source code file, right? Yeah. And? Change your SQL, then your app reflects it in your Q&A environment in this case. Exactly, use your acceptance. So this is the power of adopting state-based and the database CI-CD pipeline in your DevOps. Right? Yes. So that's basically the key thing that I wanted to demo today. And as you saw, they're using the SSTT and state-based, then you can easily, quickly, and efficiently adopt these DevOps practice to your current database development process. Yeah. And I call it modernize. The definition of easy, quicker, and efficient. And the good thing is that, note that SQL Server is only RDBMS in the market that supports solutions for both migration-based and state-based, right? And migration-based approach, there are great tools that can help going through those alter the coding and the execution business. And Visual Studio 2017 Enterprise Edition, the RediGate ReadyRoll is now included in that Visual Studio Enterprise Edition. And it's a great tool that even it can enable CI-CD pipeline as a part of your development practice. So at the end, it is kind of your choice which fits best, right? We, as Microsoft, we provide you which choices based on whatever your choice is, we provide you full support on that one. Right, so if you're just a customer of Visual Studio, any edition, SSDT is there for you, for the state-based. And then, if you're an enterprise customer 2017 or if you own the license of RediGate for your own purposes or some other potential tool out there in the marketplace at some point, it just, it's going to be integrated for you for those solutions. Right. Cool. So if you haven't tried SSDT and Visual Studio team service-based DevOps pipeline CI-CD, then try it today. SSDT is fully supporting all editions of Visual Studio 2017. Today, you saw that I demoed it on the community version of, community edition of Visual Studio 2017. Free version of our product. Right, exactly. And VSTS is also free for small team with the five users and the great unlimited features like repo and the work item management that I started in my demo. And it has one private agent that's great and one hosted agent with four hour use per month for free. That's awesome. It's your flexibility and it's free. Yeah, exactly. And then you tried it out today. It's all, you can just start without adding any cost on your side and then if you like it, then you can go into a Visual Studio team service paid version for your real team project and kind of stuff. Yeah, awesome. So you've got some resources for folks to take a look at here. Yeah, I have, if you want to find out more about what is DevOps, there is a great keynote by Brian Harris. Shift left the concept as part of the Visual Studio 2017 launch keynote. Yeah, very fresh video, very recent. Yeah, exactly. So I have listed the useful references here. So you can just go and find out more about, all about SSDT, all about the database CICD. And then you're gonna have a database CICD tutorial posted on my blog. So while you can go and then follow the step by step, then you can do exactly the same thing that I did today in your own environment. And if you're a Mac and Linux developers, then the CICD part is not there yet, but we have a great tool like MSQL extension for VS Code. So you can get started in developing your application and database on Mac and Linux as well. That's awesome. And we're trying to bring the goodness to every platform where we have developers and VS Code runs everywhere. So that's awesome and Visual Studio and Windows has all this already up and running. And I'll be sure to put all these notes into the show description so folks don't have to worry about memorizing that we're on URLs here. We'll get them posted and thank you so much for being on the show. Thank you for inviting us. Well, we'll be back with more on the next Visual Studio toolbox. Thank you very much for watching. Thank you.


Good morning, good afternoon, good evening, and welcome to my session on unpacking the complexity of IoT environments. In this session, I'll talk about how IoT is digitally transforming different industries, and I'll give a couple of examples of that as well. Then I'll talk about three main challenges for the network of IoT environments. Security, scalability and simplicity. Lastly, I'll talk about how Cisco is meeting these challenges, and I'll give a couple of demos as well. Let's get started. IoT is digitally transforming different industries. On the right, I have a couple of examples for you. The first one on the top left is you can see a mining truck. The mining industry is a very hostile environment, because down in the mine, there are many hazards. For example, there's always a hazard of any cave-ins, or there's a hazard of a gas leakage, and obviously there's no daylight down there either. Ideally, you don't want to send humans down there if you can avoid it. You can see the truck in the picture. Apparently, the latest one models of this type have autonomous options as well.  Here's a fun fact of a challenge these guys were facing. Apparently, the autonomous driving works too good. What do I mean by that? That means that these trucks drive exactly in the same track, no matter how often they go in and out, and this speeds that the road starts to wear out. So this is why the team had to introduce some variants in there, so the truck has more variants in where it's driving and doesn't wear out the road too fast. Top right is another good example. This is a manufacturing environment. Obviously, manufacturing has been using robots for a long time. However, what is new now is that these robots are more and more connected. There are good reasons to connect these robots. For example, you can now get temperature, vibration and current information from the robot, which you can use to do predictive maintenance. Because for these big manufacturers, if these robots fail, it could be very expensive. So therefore being able to prevent any failures or to do only the maintenance when it's really required is huge cost savings for them. However, networking all these environments also comes with risks because once it's connected, it could potentially be compromised over the network as well. The next area you can see on the bottom left is agriculture. We all know that global warming is coming and therefore the farmers have to adapt to this environment. They feel watering feels for a while, but what they can do now is IoT. For example, they could put humidity sensors into the ground, connect it with a weather management station that forecasts how much rain is coming and therefore water the plants the exact amount they need. Not too much to not waste water and power to pump the water and not too little to still get maximum yield from the fields. So this is definitely revolutionizing the agriculture area as well. On the bottom right, you can see our oil and gas industry. They've been using IoT for a while as well. Many of these guys are using it for safety reasons. A, for the equipment safety so that the drill doesn't break if you get the right IoT data out of it like vibration while it's drilling down into the ground. Or any gas leakage detection sensors that you want to connect to make sure your workers are safe in the environment. Now, all of these environments have a couple of key challenges. And I want to highlight now three key networking challenges for these IoT opportunities. The first one I want to talk about is the most important one, security. They have been countless examples in the past where a compromised IoT system led to a much bigger incident. I have a link down here for you which one of the most interesting cases I found, which is where Target got compromised a couple of years ago. And the intruders compromised the HVAC system and the HVAC system then let them get access to more financial details from customers. For example, there have been also other examples where autonomous vehicles got hacked remotely or manufacturers were hold hostile with ransomware attacks. So this is why for most IoT use cases security is the first question they ask. It's the biggest concern is the solution secure. The second biggest challenge we see is scalability. The internet has been growing for a long time and you can see here on the time scale that since I go back here about five years, the amount of devices have been increasing over time. However, we are now at a breaking point where with the increase of IoT devices, the number of devices will just exponentially grow over time. You can see a couple of predictions here from Nokia, IDC and IHS where these predictions are. However, you can see the amount becomes massive. So therefore it is important to have a scalable way to manage these devices. The last one, tying into the first term, in my opinion, is simplicity. None of this works if you can't do it simply. These days we have to do more with less teams. We have to have the people able to learn new technologies and deploy these within minutes. Therefore, it is very important that the tools we build are secure, scalable, but also at the same time simple to use. Now, how is Cisco meeting these challenges? And here are a couple of examples now around security. The first part is that you have to secure the device. This starts from the hardware layer, where in our case we integrated a couple of sensors in the hardware itself. The first one here would be the accelerometer or gyroscope. In this case, you'll be able to sense if the device is moved. We have input alarm for digital sensors in there, so you can connect it to other things like, for example, a door open relay. There's GPS asset tracking and geofencing involved, mostly for the remote and mobile assets that might be driving around, let's say, pump trucks or any other big vehicles. And just to give you an example use case here is that many times our customers put our devices into, for example, ATM machines, and then the ATM can sense if somebody tries to shake it too hard or rob it by the accelerometer and gyroscope. It will also be able to see if the door is opened by force by the input alarm if there's a door sensor. And if your ATM is all of a sudden moving around as the GPS signal shows that it is being moved around, you know something fishy is going on. Last one here is a quite simple one, but still quite effective as well, the SIM card locking plate. What we've realized is that if people see something that they think might be useful for themselves next to the router, maybe a USB plug or a USB stick or a SIM card, for example, they take it out and these things get stolen a lot. With a simple locking plate or an even better in our case, we often have the SIM card only accessible once you take the entire module out. This is prevented, so therefore this is a very simple first line of security. The software is also important to secure. We start here with a trust anchor model is how we call it. This is a hardware chip that is on our hardware, which comes from factory with a crypto certificate integrated, which means that any forges of the hardware could not forge this piece and therefore they couldn't rebuild our hardware. Because this trust anchor module is required to do the secure boot and this secure boot then authenticates that our software is legitimately coming from Cisco. Inside Cisco we then have our processes to ensure the security of our devices via our Cisco Security Development Life Cycle, the CSDL. We have vulnerability testing and our PSUIT and TALUS group ensure that there's no vulnerabilities coming in later on. Privacy is very important for the network communications themselves. The first concern many people have is that if they would enable encryption, would it slow down performance? For many devices that is the case, however for us we've now integrated fast hardware based encryption like a crypto core processor that helps offload encryption and decryption tasks, which is why you can enable these crypto features without risking any performance degradations. Secure network protocols. This means that we use stuff like SSH over TALENET or HTTPS over HTTP. Basically secure protocols to make sure that even if you manage the devices, a man in the middle attacker would not be able to get any credentials from you. The last one here is secure defaults. This is coming from our software design where we say by default for example we do have password policy in place or there is no default username and password. In many OT environments you have devices that are never get any password updates. So therefore the default password is on the device for the entire lifetime. And this is very easy for hackers to compromise. So therefore we're thus not having any default password and forcing the user to change the password at first login. This is a very basic feature but it is a good start into securing the OT environment. Policy. We have the option to get full visibility into what is going on in the network with NetFlow for analytics and then we can get to this stealth watch. We also have the option to get traffic copies with features like R-Span and ER-Span so you can see exactly monitor what is going on on the network. And with our management tools which I will show you in a moment as well you can set one set of security policies across your entire network the campus network as well as the enterprise network. Securing the applications. So we have also the option to put application level firewalls on our devices. We can host applications on our IOX edge compute platforms. On there we can then do a digital signage validation to make sure that the software has not been tampered with even if it's the third party apps that's running on there. And we can sign this code. Once again I want to highlight here. Security is important on our devices however it is very important in OT environments because these are normally not hosted in the data center where you already have physical security around them. These are often out in the field where people would have physical access to the area. They might break into a filing cabinet on the roadside. They might be able to go over a fence to access a gear. So it is in a more hostile environment which is why these security features are even more important in OT environments than in IT environments. Now let's talk about scalability. How is scalability handled? In the first example here we have the box by box configuration which is in a manual process very error prone. Because in most cases you have to change something in the configuration. They are not all 100% identical. There might be a hosting you have to change. There might be a public IP you have to change. There might be something you have to change in the configuration and that often leads to configuration challenges when you do it manually. However when we use automation to do the same it is a very scalable and simple way. Let me show you in a moment of how we do this exactly. Now how are we meeting the simplicity challenge? I am going to give you an example of two concepts of how things can be instructed. The first example here on the left you see a picture of a Google Maps snapshot with detailed instructions. Imagine you are going to a cab and you want to go to the airport. There are two ways you can tell the cab driver where you want to go. A. You can do as we say here we give detailed instructions along the route. We say hey in four minutes in 900 meters take a turn on Burrard Street to Hull Street and so on. So this is a declarative instructions way. What is more interesting and more important now though is giving imperative instructions. This is where you just give the intent of what you want to do. In this case we would say cab driver please take me to Vancouver International Airport. And we trust the cab driver knows how to do the low level part meaning the exact instructions on where to turn left, right or straight. And therefore he will get us there safely and we only have to give him the intent. This is the basic concept behind intent based networking. Now let's talk a bit more about security. How is security done today? If you have a network and you want to now put a new segment in there put a new VLAN on there. There are different steps you would have to take. Here are a couple of examples. You first define the groups in the Active Directory. Then you define the policies in the AAA server which might be VLAN based or subnet based. Then you have to implement those VLANs and subnets, create a DHCP scope, create layer three interfaces everywhere. You have to make sure that the routing is enabled and map SSIDs to the interfaces and VLANs as well as the WLC. Lastly you have to implement policies, define ACLs, apply ACLs, make sure you don't make any mistakes while doing that. And that requires you to use many different user interfaces and many different tools. In this case here we say our AAA server the WLC and also in some cases the device CLI has to be used. And if you use the device CLI many cases it looks like this. You can see here this is an access list example with many entries. And many of our customers have access lists that are in the tens of thousands of lines long. And here is a big challenge with this kind of management. You don't really know what's going on in each individual line or at least you don't know the reason for it. Normally if something is not working and it's not supposed to work you are happy and you are okay with putting a new ACI line in there. But nobody would ever go back into a system with 10,000 lines and try to clean it up and remove lines to make it more readable. That just very rarely happens which is why these bring a risk of management over time. And if you don't keep these ACLs across all your devices synchronized you then run a risk of having certain security holes open at some of these devices. Now let me show you how we can simply scale security with Cisco DNA center. In this case I'm going to start and create a virtual network. I'm going to click on the left and then I give it a name. In this case I'll say IoT Virtual Network. Now I can choose which device I want to add into this virtual network. For example, batch readers, cameras and let's say the HVAC system. And now I just click Save and that's all I had to do to create this virtual network. So there's no need to map specific IP addresses or MAC addresses to this. I just give our tool the intent of which types of devices I want to have in the network and the tool goes ahead in the background and creates a virtual network and populates it throughout my network. Now let's see what we would do around security. So for group-based access control you can see here we have now our metrics that shows us exactly who is allowed to talk to who with the green fields showing an explicit permit, red field explicit deny, other ones are custom ingray and you can see on the top right here that the default action is permit. Now if I want to check what's going on for example my mouse here shows me that my HVAC system can talk to my development servers. I don't want that. That shouldn't happen. So let me see. If I now click on this box I can see if I want to enable or disable the policy and I can also change the contract. In this case I want to deny the policy and therefore once I click now change my box will turn red and now my HVAC system is not able to talk to my development servers anymore. Next I want to talk about securing operational networks. OT networks have some special considerations. The first one is that in OT people usually just plug in devices as they roll out new machines and new cells. They don't keep a good track record of which IPs they gave out or which mac addresses are on these devices or which ports they plug them into. Which is why for most OT networks there is a large number of unknown devices on the network and they can't just disconnect them because it might be an operation machine which might shut down if it is disconnected from the network. Next point here is that OT never patches. In the IT world we use from our phones and our tablet and our Windows laptops or Mac laptop that these devices automatically push their updates down. We get a notification. We might postpone it a couple of times but we are basically forced to reload very soon after the patch is deployed. In OT that doesn't fly. OT's first priority is people's safety. The priority 2, 3 and 4 are all to keep the production running and the machines running. Therefore unless the patch is required they wouldn't do it. It just brings in an unnecessary risk. Next is about the traffic profile in an OT network. In OT the devices need to talk to each other. Meaning this east-west traffic. This is where PLCs have to coordinate across different machines. For example the production of a pod or a machine or a car. So therefore most traffic does never leave the factory floor. In IT this is obviously different where our stuff normally talks to the cloud or the data center. The last point here is that we need to build compliance reports. This is important for factory floors to get certifications. Now this slide talks about where we should employ the security. Let me talk first a bit about the industrial control systems ICS network on the bottom left here. You might be used to the standard access distribution core network from enterprise networks. In the OT network this is done in the per-do model. And here the per-do model or level 0 and 1. Especially the cell level. This is where the end devices that drive the machines that PLCs connect to. The per-do level 2 is where the supervisor level is. This is the aggregation level. The per-do level 3 is at the northbound to our industrial DMZ level. Now if you would put the deep packet inspection on to the per-do level 2. This is suboptimal because as I said most control traffic is local to the cell so it would never cross the level 2. If you want to go down to the lowest level, the per-do level 0 or 1 and do your deep packet inspection here, it gets very expensive because you would have to roll out a very broad span network to capture all traffic at the very bottom of the network. Which is why it makes a lot of sense to embed the sensors directly into the network and you don't have to build up a separate span network for it. Let me briefly introduce you to cyber vision here and how it is working. Cyber vision has two main components. One is a cyber vision center which is running on a big UCS server for example inside the data center. And then it gets data or it gets the application flow data which is just lightweight metadata from cyber vision sensors. And these sensors are installed on the network devices itself. And therefore there is no additional hardware required, there is no need for an out-of-band network and there is no impact on the performance of the network either. This is very easy to deploy with a low TCO. But let me actually show you how this looks like. Here is our dashboard of Cisco Cyber Vision running in Dcloud. So if you want to, you can run this demo yourself as well. And when I start this now, I would first start at exploring what's going on in my network. On the dashboard that we see right now, we have a big overview of what's happening. So we can see we have 108 components here, fill that into 13 groups with 237 activities. And there are already vulnerabilities discovered and I'll talk about what this means in a moment. But I don't want to see my entire dashboard. I don't want to see it filtered down a little bit. So there's a couple of presets here that I can use to filter down to a certain factory or certain division inside my OT network. In this case I want to look at the Munich OT traffic. And this filters it down to 12 components in my network with 7 activities and so on. And in this filter here, I can now also get some pre-classification. I can see the tax area here, how many devices I have at which level, meaning how many controllers are there, engineering stations or host config servers. It also detects a couple of software pieces like Windows here. But what's really interesting is that it can detect the activities as well and tag them. Meaning cyber vision can detect if a controller just does a read on a variable, write it, or does more critical things like start, stop the CPU or program the PLC again. Which is what I highlighted in red. You can also see the protocols that are used in this network. Now this is nice, but let me go into the map view. Let me just make it a little bit bigger here for you as well. So this is a nice way of representing which devices talk to which and what is seen on my network. And you can see here it's classified, I did this manually, into a drilling machine, a packing machine and the building management. Now I want to see some details on any of these machines. So if I click on the Dell machine for example, I get details on the right side here. There's tags for it, what it is, what it does, activities which gives me modules on that. And then the properties on the bottom give me details about the machine itself. And this is all happening just from sniffing the traffic in the network. There's no active polling going on here, so therefore there's no intrusion on the network and no risk implied. You can see another example here is my S7 station with the red 10 on it. And this red 10 refers to the known vulnerabilities on the system, meaning the cyber vision center goes ahead and scans a vulnerability catalogue for what is applicable to my network here. And it even gives me a score which means how critical this issue is. And now the OT folks can go in here and scan through these and see if any of these vulnerabilities is important enough to justify patching their appliance. And you can see there's a rather long list of this example. Now the last one example here is the red arrow. And this now shows me who is talking to whom and what about in the network. So I can open this flow view and I can now see that my component I just clicked on before, my Dell machine here was talking to an S7 machine on different ports. You can see the TCP protocol and you can even see the tag meaning what it did. So I can see here that the Dell machine did a start and stop of the CPU as a last action as well which might be critical. I can of course also get this information into a baseline and therefore once I have a good running state in my factory, I just record the state and then put this into my baseline. Whenever a new device comes into the network I can get an alert on it. Or even if an existing trusted machine gets compromised I can see that it might behave differently, issue different commands to an already allowed talking to end station. So this is very powerful for our OT folks to see what is happening on the network. Well that let me go to my summary. There are many networking challenges and IoT deployments including security is number one, scalability and of course simplicity. Security and scalability doesn't help you if you can't deploy it simply. Now how is Cisco working here? On the security side we have hardware and software security on our devices, we have network and application security as well. The scalability is handled via automation and none of this is useful unless we have a simple way to do it in our case with intent based networking. I hope this has been informative for you. I'd like to thank you for viewing. We'll open the live Q&A now. If you have questions after the live Q&A or watching this recording, feel free to send me an email or a LinkedIn message. Thank you.


And it's actually fun and if you were refreshing right now to actually talk about happiness because the world is crazy and depressing and upsetting and maddening and it's not just in Israel, but it's in Ukraine and it's in everywhere. There's just bad things happening all over the world. And in that sense, I can't say I have much joy in my life, but I can say that I'm a happy person and that happiness is something that pervades my life in spite of all the ups and downs and the horror and the frustration and the madness that goes on around. And I think it's a really, really important idea that we need to dig into. So I want to start with this. I think the most important thing when considering happiness, and I consider happiness the state of a being, this long-term state of being, Aristotle said in a sense that you couldn't actually know if you're happy until the very moment before you died because it's like looking back and seeing what kind of life have I lived. Now, I don't think that, I think you can tell at every point, but it's about a state, it's not about a momentary experience. So you might be able to have fun at a party, but that doesn't mean that it's going to add to your happiness. You know, the happiness is the state in which you live on a long-term basis. So if you let me, we can do questions afterwards. Okay, thanks. I think the most important thing about happiness is, the most important thing, is to want it. Now, we all say we want it. Everybody says it. I mean, you ask them and nobody raised their hand about not wanting happiness. Everybody says they want it. But are we really committed to it? And I think people all say we want it, but are they willing to do what is necessary for it? And as a culture, as a world, are we oriented towards happiness? Do we orient the way we think about the world and we think about life towards achieving our personal happiness? And I think the world is aligned against us. I think our educational institutions are aligned against us. That's why I like the idea of having something at a university talking about happiness. And I think most importantly our moral code is often aligned against us. Our ethics are often aligned against us. Because most ethics, most moral codes, morality, good, evil, right? What is the good? The good is almost always defined as something outside of us. Something to be done to other people. How you relate to other people. And morality today gives us almost no guidance in terms of how to live our own life. How to live our life as individuals. I agree completely you will find happiness for purpose. But what is purpose? How do we define purpose? How do you discover your purpose? We get very little guidance in the culture. We get very little guidance from our morality about that. We're told by morality, what's the most important thing in morality today in our moral code tells us? What's the most important thing you should do or not do? It's all about how you do what? How you treat other people. But I think, and this is Inran's kind of revolution, and this is going back to Aristotle. I mentioned Aristotle earlier. I think the most important thing about morality is how you treat yourself. It's what you choose to do with your own life.  Imagine if one of the principles of morality was find a purpose. For Inran, there are three cardinal values in morality. Three main values in morality. Reason, which is our tool for knowing. Our tool for knowing the world, knowing reality, understanding it, and evaluating it. Purpose. And the third, which I think is fundamentally crucial to happiness is self-esteem. And I'll talk about self-esteem in a minute. So reason, purpose, self-esteem. Those are her three cardinal values in morality. And they're all focused on how you can make your life the best life that it can be. How you can live the best possible life in this world. And the goal of morality, according to Aristotle, what is the goal, anybody read Aristotle? The goal of morality, according to Aristotle, is achieving what he called eudaumonia in Greek. I'm mispronouncing it because in Greek it sounds completely different. It means flourishing. It means success. It means happiness. Conventional morality, as we have it today in our world, doesn't talk about morality and happiness in the same sentence. Indeed, morality is often the opposite of happiness. Don't do what's good for you. Don't pursue your purpose if, I don't know, somebody else has a claim on your time. Don't be self-interested. Don't do what you think is good for you. Do what other people, what's good for other people. Focus all your efforts on that. Now, maybe other people become part of your purpose, but then it's your purpose. It's your chosen purpose. Morality doesn't tell us you need that choice. Morality tells us your focus, your orientation should be external, should be on the other people rather than on you on what's good for you and what will lead to your happiness. So I think the first thing about happiness is that you need to want it, which means you need to want your own well-being. You need to want your own happiness. That needs to be a priority for you. It needs to be something you really are seeking.  Happiness is an outcome. It's a consequence of certain actions that you take, of the values that you choose, and of achieving those values. So let's talk about the three values that I mentioned, the three cardinal values that I mentioned, as I think is most important. First I said is reason. Why reason? Why reason? Why do you think reason is an important value? It's a tool to explain the world objectively. Exactly. But it's the only tool we have. The only tool we have to know the world out there is to use our senses and to use our mind and understand it, figure it out and understand it. There is no other way to know the world. Everything that we have around us at the end of the day is a product of human reason. Somebody had to invent a light bulb. Somebody had to figure out electricity. Somebody had to figure out how to build a building. None of us have the gene for that. It's not instinctual. And through emotions, you will not discover how to build a building. Even when they went from caves, our ancestors went from caves to building little huts, somebody had to figure out how a hut would stand. Experiment, test, do what we do with reason. This is our tool. It's what makes us human. What makes us human, what makes us different than animals is our capacity to think. It's our capacity to observe the world, integrate its information, come up with new ideas, test them out in reality, figure out what works and what fails. There is no other way to discover the world out there. And you're not going to be happy if you fight the world. If you say, I don't care what reality is, I don't believe in gravity. I don't like gravity. So I'm going to jump up the building and fly. That will end your life very quickly, not a path for happiness. The first thing you have to do to be successful in life is recognize reality, recognize facts, recognize what is true. If you can't recognize reality, you can't deal with the world. You can't function in the world. You're just going to constantly jump off of buildings and expect to fly. And guess what? As much as you expect to fly, you won't, unless you invent a flying machine. But then again, you're going to have to use reason to invent that machine, and you're going to have to take reality into account. So a commitment to reality, a commitment to facts, a commitment to what is, one of the ways to deal with the stuff that's going on in the world, the horrible stuff that's going on in the world is to recognize that you have no control of it. It is what it is. You have control over your life. And one of the important things in life to do is to be able to identify that which you control and that which you do not. It doesn't mean you don't get angry with it. It doesn't mean you don't get mad, particularly when it's human beings doing this stuff. But I can't control it. I've got my life to live. I can't completely obsess about this. I tell people one way to move towards happiness is to stop watching the news. You can't change the world in that sense anyway. Listen to newsmen just a little bit. We become consumed. Our social media feeds are constantly bad news. And news is always going to tell you all the bad stuff that's going on in the world. It's drama. They're not going to tell you about the good stuff that's going on in the world. There's wonderful things going on in the world. But we're not going to get that in our social media feed. Only hear the bad stuff. So reason, reality, facts are so that's the beginning point. That's the start. Purpose. You've got to know where you're going in life. You've got to have an idea of what your goals are, of where you're heading. And happiness comes from achieving those goals, from moving in a particular direction. Whatever that purpose you have chosen, you are going to take steps in order to get there. And the purpose is typically not an automobile or a bank account or something like that. It's typically some kind of achievement that is always going to be further ahead of you. You're always going to be striving. But as you attain the goals, as you attain the values in the direction, you gain that kind of satisfaction. You gain that sense of I can achieve things in the world. I can be successful. And from that I think ultimately comes this sense of happiness. So purpose, purpose is crucial. Most of us, our purpose, and this is an ideal, is our career, is the work that we do. You know, everybody says the most important thing in life is family. And family is important, right? But you know, I always judge what people actually think is important and what's not by how they spend their time. Most people spend most of their time at work, not with family. And we're rich enough that if we wanted to, we could work a little less and spend more time with family, but we don't because it's not about the money. So why are we at work all the time? What is it about a career that provides us with so much satisfaction? It's the... What's that? It's not the outcome in terms of money. It's the fact that at work, we set goals. We move towards achieving those goals. We push ourselves. We try it. We use our minds to continuously further who we are as human beings. And that process, that growth that we get in our career is where we are going to achieve the kind of sense of satisfaction and happiness. So career and taking that career seriously and taking your work seriously when you see people who are really happy, it's people who've chosen careers and work that they really love that they really care about that they're having fun they're achieving joy while they're achieving happiness, right? They're moments of joy. It's hard. The work is hard. But the happiness comes from the satisfaction of knowing you're achieving things and knowing you're moving in a particular direction for a particular goal. And that happens to us primarily again in our careers. Now, I don't want to scare young people because particularly in the modern world it's not like you're going to have one career and it's not like right now you have to choose what that career is going to be and if not, life is a failure. It turns out particularly today that you can have a purpose and you can change purposes and you can change careers and you can change your work and you can adapt and you know one of the things that's successful in life and to be happy in life is to learn how to deal with failure. You're all going to fail. At some point in your life you will fail. You'll fail in relationships. You'll fail at work. Your purpose might be wrong. You might think you want to do this but I've had five careers I think or five different things. I've loved all of them. Not the same. It's like everybody says they love their kids the same not exactly the same but everything was a step forward. Everything was growth and that's what you want. You want to live a life where you're constantly growing where you're constantly doing something that's even better that's even in a sense more fun that's even more interesting that's more challenging. You don't get to be happy unless you challenge yourself unless you push yourself unless you try really really hard you know in exercise they say no pain no gain from not it's not quite with happiness you don't have to suffer in order to be happy but you have to work in order to be happy you have to put in the effort in achieving your purpose to be able to attain happiness and finally I'd say self-esteem now what do I mean by self-esteem self-esteem is not somebody from the outside patting you on the back and saying good guy in America there's all self-esteem movement we give titles to everybody and we treat everybody really really nicely and we think they're going to get self-esteem you cannot get self-esteem from other people you have to give self-esteem to yourself it's self-esteem esteem means valuing yourself it's really really really important to value yourself you're all you have in a sense you are what you are you're one of a kind and you're inside your head you're not outside so valuing yourself is the beginning of any process towards happiness and what valuing yourself means is knowing that or knowing that you deserve to be happy that happiness is something that's okay for you to be that you deserve it and that you'll do the work necessary to achieve it it's knowing the world that we live this crazy, nutty, insane in some places and sometimes even bad world that we live you can't survive you have that confidence I can do it, I can achieve I can pursue values and I can attain values I'm not horrible, I'm not dreadful I'm not committed to a sinful life I'm not committed to unhappiness I can actually attain stuff I can achieve my purpose I can pursue values in this life having that confidence having that sense of yourself is going to be so I think without it you can't have a good purpose it's very difficult to attain it because again to have a purpose to achieve something you need to be acting you need to be confident you need to be willing to challenge yourself and to do that you have to have that confidence that you can actually achieve it again the confidence doesn't come in a day it's something you build up over life it's something you build up by challenging yourself succeeding and in a sense patting yourself on the back don't be afraid to say to yourself even though I know there are a lot of people out there who say this is not good don't be afraid to say to yourself you did a good job good for you, you succeeded but on the back I'm going to eat an ice cream today to celebrate my own achievement so achieve, recognize the achievement I know a lot of people out there who achieve great things and then they go yeah it wasn't me it was luck it was this, it was that they'll never take credit for themselves not only in public but in their own mind they will never take credit for themselves let me tell you those people will never be happy excuses always to be unhappy because they'll always deny themselves and they don't take in that sense their own life and their own progress and their own growth seriously they're rejecting and denying it and putting it to the side I think one of the ways in which we attain happiness is by recognizing our own achievement recognizing our own goals recognizing our own abilities so reason this is our tool purpose we want to have something we're striving towards in every action in life you want to have a something you're going a direction a purpose, a reason why you're doing it a lot of people out there are drifting drifting is the person with no purpose they just, one day they do this, one day they do that they do whatever feels good you know it's a maybe they even take drugs they make you feel good they don't need happiness though but they make you feel good so they're drifting, they're all over the place there's no focus, focus doesn't mean that's the only thing you can do in life but at least at every given moment focus on something something is the goal and then have the confidence, have the self-esteem have value yourself enough to want to be happy to want to be successful, to want to achieve that to me is at the highest level the formula for happiness those are the kind of things you should be thinking about and we can get into some of the details and of course answer your questions so thank you


Hi everyone, I am Tao Xingye. I'm a senior engineer from PINCAP, which is a company behind Type-QV. In the past few months, my team and I has put in a lot of efforts to make Type-QV work better on cloud storage. And today I'm gonna share with you some of those new improvements that we are very excited about. Just before we dive in, I think we should get a basic understanding of the situation first. Let's take a look at Type-QV. Long story short, it is a distributed storage engine. Unlike traditional storage engines that serve from a single machine, it has the capability to scale out, normally to hundreds of nodes. And we need to replicate both WAO and data files to provide high availability, which is actually one of the reasons that we are willing to tolerate the complexity of a distributed system. Now let's move on to the hardware design. Nowadays, most public cloud vendors provide virtualized disks. And those disks can be mounted to a local file system, and they appear like a local disk as well. But internally, they're forwarding the IOs to multiple remote disks that are potentially shared by multiple users. EBS, for instance, well-replicated any right IOs to three different locations. And this internal complexity can be a real problem for our systems because the latency for starter is obviously higher than a local disk. Also, since you are sharing hardware with other users, anything that you use will be charged. That includes disk bandwidth and IOPS. Finally, we should all know that cloud infrastructure are not always as reliable as they claim it to be. Service degradation will be relatively frequent, and it should be considered in our system design. Ideally, we want to make a large Type-V cluster behave similarly to a traditional RDBMS. Unfortunately, it's actually hard to accomplish that on a cloud storage. First, we want to build a scalable service. The scale means more failures. To be more specific, we are worried that as the system, the hardware, the storage hardware performance is more likely to degrade because on a larger scale, a real event will not be so rare anymore. The cost is a problem too because every storage operation is charged by the cloud vendors. The users now have more reasons to care about exactly how and why our system is using those resources. And by that, I mean read and write amplification, which is the amount of vials the system needs to issue before finishing one user request. Here, I drew a simple graph to demonstrate our system's runtime usage of our resources. Over time, the user writes are very stable, as you can see from the yellow bar there. But they are amplified multiple times because of background writes. And that includes compassion and garbage collection. In addition to that, large events incur actual IOs that are usually not so predictable. From this graph, we can see that the most straightforward way to reduce cost and improve scalability is to keep IO usage under the hardware watermark at all time. And for that, we introduce two new features, which I'm gonna talk about in details. First, we have Raft Engine. It is a new lock store for Type-TV that is written in Rust, just like Type-TV. And for those who don't know it, we previously used RocksDB to store all transaction logs. Clearly, it's not a optimal choice, but it is a decent solution at the early stage of development. But right now, we want to replace it and improve it. The primary goal here is to write less than the RocksDB. Consequently, we can reduce IO cost and reduce the possibility of hitting storage performance limits. Of course, we have a secondary goal here is to improve the performance as well. But it is not being actively working at the moment and we are really hoping that more contributors can join us to improve it in the future. Now let's talk about how exactly we accomplished the primary goal, which is actually very simple. Raft Engine maintains an in-marry index of all log entries. The reason we do that is not to improve read performance. It's actually about reducing the background works. In RocksDB, compaction is needed to keep all data sorted and clean up deleted data. But in Raft Engine, we don't need to sort anything. And garbage collection doesn't need to read out obsolete data because we already have a map of all active data in the memory. And then Raft Engine further reduces foreground IOs by compression. All log entries are compressed with LZ4 before they are actually written to the log files. Mainly with those two techniques, we are able to reduce nearly 30% of all server writes. And in practice, that is a very improvement very good improvement that we can use. After that, we have another feature called the priority IO scheduling. It is not a new thing. Many systems already have it. What we managed to do is to add this functionality without introducing major change of architecture. By that, I mean, we did not change the internal tasking system of Taikevi no additional IO queuing is required and no actual overhead at all. The algorithm is again, very simple. We first trace and categorize all system IOs into three different priorities. We can call it AD and C here. During the execution, we periodically assign individual IO limits to those priorities. In the beginning, the IO limits are all very high. All IOs run with no restrictions. Eventually, as you can see here at Apple too, the IO usage exceeds a predetermined global limit which is what we call an overflow. After the overflow epoch, we will adjust the IO limits for lower priorities to make sure that in the next epoch, system will not use so much IO resource. And here in specific, we will make the IO limits for priority B and C much smaller than epoch two. And after that, in epoch three, the global IO usage of the system will be decreased under the predetermined limit. As you can see, the algorithm is not perfect. It tolerates short period of overflow, but in practice, it works exceedingly well. Here internally, we conduct to the test to simulate large events during online workload. In this test, a large table is mounted, is encoded while a TBCC workload is running. After applying the priority IO scheduling, as you can see on the left-hand side, the system performance is much more stable than before. Well, that's pretty much all the features that I want to cover today. Other than that, there are a few more important things that we are experimenting with. The CPU limiting feature, for instance, is a new strategy that we are pushing for low-resource environments such as four core machines. Basically, we want to smoothly apply back pressure to the user before the system is overloaded and the wrapped witness. It is an attempt to reduce replication costs by using a write-only node that only replicates transaction log but no readable data. In the future, we want TechEV to further adapt to cloud hardware and we truly hope that the community users can benefit from our work here. So thanks again for joining me here today and goodbye.