What's going on everyone? Sam here with late in sports cards with 23 Panini Prism Collegiate draft picks football hobby 16 box full case break number one random team style. Looking at your random results as always you can find those on the website under the results tab as well as link in chat. It's getting anybody still in college we ran to all at the end. We'll do a random at the end just in case there are any like inserts of guys still in college. If we hit like a Ewers or Caleb Williams or Arch Manning color blasts or stained glass that'll be a separate random to everybody because that's a big enough card obviously. So good luck. Here we go. Box one. Buckle in everybody. Get ready. Bad day to be Google right now. I have to say bad day to be Google me. Bad day to be Sean for sure. Just NT after this yeah. What's on that? That's all. I don't know. Cosmic break for Naxalive or something. Dude I haven't panicked in this whole time. Wow we're behind. Oh Ryan Vance. Holy cow that didn't make my night. No yeah you're good. Sports that much closer right now. Oh Ryan Vance. He is NFC East. NFC East. Oh now we just go okay. Traylon Burks, Joe Mixon. They need some bass. Is this? One two. Let me just see if this is all card ship really quick. Oh it better be. No this is regular bass split. NFC East. Yep. Got no recap on this one. This is a deep deep break right here. Jashon Corbin. Jashon Corbin. Who knows? Yes. Panthers so NFC South. Duike Uzoma and Breton Strange, AFC South. AFC South is a Jaguar. Drake London, nice one there NFC South. Tanner McKee to 249. Tanner McKee again and CJ Stroud. Nice ones there. Silver Sauce Gardener. Davis Allen. Carl you have no idea. Davis Allen.  Davis Allen is Los Angeles Rams NFC West. NFC West. Nice one here Rishi Rice to 149. Andre Ayasovas, Tim Tebow and Deion Sanders. Jared Stearns. Western Kentucky Hill Topper. Jared Stearns is A. Saskatchewan Ruffrider currently. He was. Saskatchewan A. NFC West on that one. That'll go Rams. He was on the Rams longer. NFC West. Coligia Kansy. Erin Hansford. I think he's a cowboy currently. Let me double check here. Yes. News. No news available. Stats. No information available. Overview. No available information. Yeah he was most recently on the cowboy so NFC East on that one. Manjrews. Tim DeMoret. Zach Evans and Quinton Johnson. Silver Olave. Nick Hampton. Nick Hampton from App State. NFC West. He's a Ram. NFC West. David Montgomery. Emmett Smith. Bijan and Quinton Johnson. There's Nick Starkle from San Jose State. Nick Starkle, Blue Auto to 149. Starkle. Currently a free agent. Jets and AFC East. AFC East. Hannah McKee. Silver. There's Aubrey Miller Jr. to 199. Red Auto. Aubrey Miller Jr. Yeah. Dolphin. So AFC East as well. Not signed anywhere else. Dr. Staubach and Lawrence Taylor. Josh Allen on the back. Thank you all again for selling everything out tonight. Really do appreciate it. That was awesome. Silvermark Andrews. Doug Baldwin. Nice. Going to the NFC West. That's sick. Grats NFC West. Saturday Star. Cut a little bit. His career cut a bit short by injury. Max Duggan. Nice one there for the Chargers. Reed Blankenship. Let's read Blankenship. Eagle. NFC East. NFC East. I'm Reed Blankenship. Silver. Bryce Young. Kyle Sol E. I believe that is pronounced. Kyle Sol E. NFC West by way of the Cardinals. By way of the Cardinals. Zach Charbonnet. Amon Ross St. Brown. McKee and Edry. Do have a case of NT coming up after this, which is sold out. Thank you to everybody. Thank you to everybody selling out that case of NT PYC. That was awesome. Appreciate y'all. Oh, Manga Jalen Hyatt. Going to the NFC East. Nice one there. First Manga we've seen today. NFC East. Paul L. Let's go Paul. Paul from across the pond. Congrats, buddy. He visited the shop recently, actually. Let's go Paul. Grats, buddy. Get that one into a mag for you, my friend. Silver. Jay Jettus. There's Isaiah Foskey to $199. I still don't remember, dude. I still don't remember. NFC South. He is a saint. NFC South. Michael Wilson to $249. Andre Ayasovas. Bates and Bates. Silver. Jalen Hyatt. There's a Mecca, a Mezzie. Mezzie Draft. Andre Drafted. NFC South. NFC South. Tua and TJ Wong. Johnny Manziel. There's a Devanna Shane, AFC East to $49. Who do you have again, Shane? NFC North. They've got a couple of decent guys. See, like a Gibbs Auto. That'd be nice. Gibbs or a Muzzgrave or Jaden Reed. Cooper Cup. There's Stephen Jones Jr. Stephen Jones Jr. Appalachian State. Titans, AFC South. Clyde Everett-Hallaire. Nola Sewell. Tony Dorsett and Brian Brinch. Montez looked pretty good actually. They got to put that regular on a, or no, they have it in Prism Hobby. They got to put it in basketball. Mike Rose. Mike Rose. Three agents. He was most recently, now we'll go with AFC West on that one. AFC West. He spent longer time with the Chiefs. He was just released six days ago by the Dolphins. Jordan Addison. Andre Jones. Nice one there. Red to $199. Andre Jones. NFC East. Marcus Allen. Javanse Williams. Jalen Hyatt and Jalen Carter. Nick Starkle again. Who's a Ram, I believe. We'll double check. Nick Starkle is NFC West. No, no, no, no, no. He was not. He is AFC East. Yes, AFC East. Siake Iba. Jack Campbell. Nice one there. That's NFC North. He is a lion on the signing diota. NFC North. Jonathan Taylor to 49. Drew Brees to 249. Silver Grunk. Tariq Stevenson. Tariq Stevenson. NFC North. He is a Chicago Bear. Justin Herbert and Jordan Addison. Red and red weight. That's Josh Job. He's NFC East. NFC East. He is Eagle. Yvonne Witherspoon. There's Keaton Mitchell. He's a Raven, I believe. He made the roster, I think, if that's who I think it is. That's cool, dude. I like that. Yeah, Ravens. Nice. AFC North. Dantevion Wicks and Andres Ayasovas. Zach Evans. Bryce Young to 49. NFC South. We might, Alan. I think we still have a couple more cases in the back. I don't know if it'll be soon. Garrett Wilson. There's O'Shawn Mathis to 99. Pink Ice. O'Shawn Mathis. NFC West. He's a Ram. Isaiah Foskey to Saint. I'll remember that. T.J. Wamp. Bates and Bates. Next one. Yeah, actually we have to do all those cases back there. We do tonight. Calvin Turner. He's random to all. He is drafted straight into the XFL from Hawaii. Go Rainbow Warriors. Derek Henry. Blue Ice. AFC South to 99. Joe Montana. There's Greg Eisworth. Greg Eisworth. He had a mini-camp try out somewhere. Dolphins. AFC East. AFC East on that. Rishi Rice Silver. Colby Wooden. Colby Wooden for Auburn. NFC North. He's a Packer. Jackson Smith and Jigba. And Trevor Lawrence. Jalen Carter. Anthony Richardson. Silver Tray Lance. There's a Jaren Hall to 75. I think he's a Viking unless he got caught and picked up. Jaren Hall. Minnesota Vikings. Yep. Makes the roster. So that's NFC North. There you go, Shane. Charles White to 149. Tim D'Amorek. Tim McKee and Ed Reid. Silver. Kayshawn Butte. Ameca. Amezi. He, I believe, was Falcons. Ameca. Amezi. Yep. Going to the NFC South. NFC South. Micah Parsons. Blue Wave. Peyton Manning to 299. Earl Campbell. And Jackson Smith and Jigba to 99. That's JSN. Silver Fields. Ventral Miller. Ventral Miller. Draftpix Autograph. AFC South. He's a Jaguar. Andres Ayasovas. And Malik Willis. Clayton Tune. CJ Stroud. 16 pots of movie. There's Jashon Corbin to 99. Purple Ice. Jashon Corbin. NFC South. He's a Panther now. Tyree Wilson. Bryce Ford. Wheaton. NFC East. He is a Giant. He is a Giant. Bunch of spots coming in. Thank you all. NFC East. Yes. Sausgardner. Tariq Stevenson. Nothing huge outside of that one, Shane. You hit a couple of autos though. You hit a couple of autos, which is good. Silver CMC. There's Zay Flowers. AFC North. April Showers brings Zay Flowers for the Ravens. Nice one there. AFC North. Nice Zay. What's up, Zay? There's Garrett Wilson. Zach Evans. Zay Toulvin. What's he saying that? Silver Tucker Prapped. Davis Cheek. Davis Cheek. That's a good one right there. Davis Cheek. He's a New Orleans breaker currently. Panthers. NFC South. No, the XFL or the USFL. What was this one? He is NFC South. Liquid birds. We need a Davis Cheek in the Uranus parallel. Holy cow. That is, that'd be huge. God man. Jeez. Nobody would be able to hold it together on that one. Travel Harris. I believe he's a brown. Let me double check. Travel Harris. Yes. AFC North to 99. Tariq Stevenson. And RJ Snead. RJ Snead. Okay, let's see. RJ Snead. RJ Snead. No way, this guy's still a buffalo. He's been there for six years. RJ Snead. I don't think he's anywhere, dude. I don't think he's anywhere right now. There is no information of this guy anywhere, dude. Yeah, I'm going to say Snead's going to be a random two all at the end. I don't think he's anywhere. I scoured Google for that one. Hutchinson base. Peyton Manning. Brilliant. Tay Martin to 149. Tay Martin. NFC West. And Evan Hall, I believe is a Colt. AFC South. Deontay Banks. And AJ Brown. Devon Ashain. And Cam Newton. Almost. Silver Saquon. Kendrae Miller for the Saints. AFC South. Let's double check. Or NFC South. NFC South. My bad. My bad. My bad. Make sure he's still a Saint. Yes, he is. NFC South. Tamara Chase and CJ Stroud. Ty J Spears. Ronnie Lott. It's Car Salesman and Tulsa. Silver Derek Henry. Robert Beale Jr. Robert Beale Jr. NFC West. NFC West. Nice one here for the NFC West. Gold Jackson Smith and Jigba, 9 of 10. Very nice. Travis Kelsey. And base. There's a lot of unknowns, Blizzard. A lot of unknowns right now of what that situation is going to be. Silver Miles Garrett. BJ Baylor again. NFC South. NFC South on that one. Zeke Elliott. Charles White. Basie Base. Travel Harris. Where's this guy? Travel Harris. That guy is NFC, I don't remember. Hold on. NFC South. And Travel Harris is AFC North. You ready for this tomorrow, buddy? Stop distracting you. The Marco Hellams. It's a Marco Hellams. NFC South. The Verne Vestival. Yeah, they could be, I would say so. CD Lamb to 299. Keon White. R.J. Snead is a Brian Vikings wide receiver coach. There you go. Drew Brees. Jaren Hall. NFC North. NFC North. There you go, Shane. Tucker Kraft to 75. Chris Rodriguez. Silver Clark Phillips. Charles Williams to 149 for UNLV, The Running Rebels. Charles Williams. UNLV. UNLV not seeing anything. Not seeing anything. Not seeing anything on Charles Williams. UNLV. Wait, or C? Position is C. Okay, so yeah, that's Charles Williams, who's a senior in 21. There's multiple Charles Williams on UNLV. That's nuts. Yeah, I'm not seeing anything for Charles Williams. That'll be a random to all at the end. 2149. Keon C. Carter and A, Justin Tucker. Silver DJ Moore. Lonnie Phelps for Kansas. Lonnie Phelps. NFC North. NFC North. Jaden Reed. There you go, Shane. He's a Packer. Tyler Murray. Jamal Pettigrew. Jamal Pettigrew. NFC West. NFC West from McNeese State. Jordan Addison. DJ Johnson. He is a NFC South. He's a Panther to 199. Dak Prescott. Saquon Barclay. Days and Days. Silver Steve Young. There's Josh Downs, AFC South. Signing Day for the Colts. It's a 99. Marcus Allen. Kelly Ringo. Will Anderson and Brian Grease. Silver Dwayne McBride. Amari Demercado. Amari Demercado is NFC West. NFC West. Noah Sewell Blue Ice to 99. Tyler Scott. Snake Skin short print. Days and Days. Almost there, Sean. Damian Pierce. Seven Banks. He's a Rental at the end as well. He's still at LSU. Nice color match. Purple to 99. So, he'll be a Rental. Derek Henry. Terry Bradshaw. Ty J. Spears and Peyton Manning. Four randoms right now to all everybody. That is Josh Job. NFC East. NFC East. Josh Job. Brian Branch. Zach Harrison. He is NFC South. NFC South on that one. Sam LaPorta. Nice one there for the Lions. He's gonna name his kids Six Banks. Nashi Harris. Tink Bigsby. That'll be going to the AFC South. Signing day. Nice one there. He's a Jaguar. AFC South. Herschel Walker. Mojo to 25. Noah Sewell. Vince Young and Bo Jackson. Silver Luke Shoenmaker. There's a Jack Campbell to 99. NFC North. Purple Ice Auto. There you go, Shane. Jack Campbell, NFC North. Marcus Allen. Christian McCaffery. A. T. Perry. And Orange. Max Duggan. AFC West to 49. On the inside. Branch. Prison Break. Silver Josh Downs. Charles Williams again. Ran to all at the end. He was the UNLV guy. UNLV ran to all at the end. Traylon Burks. Blue. CJ Stroud. Snake Skin. Miles Murphy and Bryce Young. Silver Daven Cook. Lonnie Phelps again to 149. I believe he was a Brown. I will double check that though. AFC North. Max Former Charger, Duggan. There's Jerome Bettis to 149. Zach Evans, Red Wave. Bryce Young. There's Percy Butler. Silver Auto. Percy Butler. NFC East. He's a commander. NFC East. Percy Butler. E.J. Brown. Charlie Jones, four of 25. I think he's AFC North as well. Double check though. Charlie Jones. AFC North. He is a bangle. Nick Chubb. Rishi Rice, Trayvon Walker. Player from Kansas. I know. I know. Kansas J Hawks. Not really a football school. Miles Garrett. Bijan Robinson. Red Auto. NFC South. Nice one there. Congrats, NFC South. On the signing day. Jerry Rice and Kenny McIntosh, Anthony Richardson and Bass. On to the next one. Silver Eli. Keon White. AFC East. He is a patriot. Keon White. Sauce Gardner and Trevor Lawrence. That's true. Who I know is Kenneth Walker. Who is the other one? I can't remember who it was. Reggie Robertson Jr. I believe he's a Titan. I know that's where he was last year. I don't know if he got caught or whatever. Reggie Robertson is still a Titan. I mean he got caught, but he's still a Titan. So AFC South. He hasn't gotten picked up anywhere. AFC South. Oh, Jaden Reid. That's right. Max Duggan Silver. Isaiah Moore. Isaiah Moore. Injury settlement with the Chiefs. So that's AFC West. Max Duggan Blue. Clark Phillips. Henry and Eric Dickerson. Silver Ricky Williams. Will McDonald. AFC East. There is a little like dunk on that one. We'll send an empty box and wrapper with the AFC East. Mazzie Smith. Malik Cunningham. McKee and Bass. Silver CJ Stroud. Anfrony Orgy. Whoa. There he is. NFC South. NFC South. He's a saint or was a saint. Tank Bigsby. Travis Kelsey. Tim Tebow. And Derek Henry to 25. Definitely a basketball guy for the Spartans. Yeah, that's basketball school. Fair to be fair. Barry Sanders. Mitchell Tinsley. Mojo Otto to 25. Mitchell Tinsley is a NFC East. NFC East. CJ Watts. Peyton Manning. Zay and Matt Jones. LeBrian Ray. LeBrian Ray is NFC South. He's a panther currently. NFC South. Obneconda in Xavier and Valaday. AFC North. He is a stealer. AFC North. Dawkins. Justin Tucker. Silver Kyle Pitts. Darius Davis to 199. Darius Davis. He is a AFC West. Tank Bigsby. Tyra Wilson. Josh Allen. Everybody needs to grow up in chat. That's all I know. Everybody needs to grow up. Silver Tank Bigsby. Dorian Williams to 199. Dorian Williams. AFC East. He's a Buffalo Bill. AFC East. Eric Ray to 99. To 49. Chase Brown. Jalen Carter and Vince Young to 99. I never sit right in the box either. Noice. Cause yeah, yeah, it made me. Silver Noah Sewell. There's Charlie Jones. AFC North to 199. AFC North. Charlie Jones. AFC North. Mac Jones. Snakeskin. Jay Jedis. Anthony Richardson. And T-Wall. Benjamin Button. Ty Freifogel. Ty Freifogel. AFC West. That's the one I most recently was. To 49. Ayasovas. AFC West. Amari Demarcato. Show them they mean nothing, Carl. I don't have the time to yellow card your nonsense, everybody. It means nothing, guys. AFC West. AFC West. Oh, it's still a sign of disrespect, but I don't have, you are all just lucky I am distracted right now.  Lucky. It means nothing. Lucky. You're so lucky you're getting away with it. Michael Pittman. Michael Wilson to 99. AFC West. Nice one there. What? Yosivosh. Wow, I did not know that. Thank you, Fluffy. AFC West. Yosivosh. I was saying Ayasovas this entire time. God, what a bot. You blew it. Max Duggan. Miles Murphy. Yeah, he probably does. It was a bangle if I don't really like him either, to be fair. I'm sure it's not going to take up much of his time, but Silverborough. Michael Jefferson from the UNL, or University of Louisiana Lafayette, Rage and Cajuns. Nice one there. Red card on Carl. Red card on Carl. Oh, Carl. He's not the Carl. Jefferson. Did I mean something to him he'll tattoo a red card on his chest? I might. You will. Okay. Nope. That's Montana State. Looking for ULL. This guy. There's no career. Oh, geez. Poor guy. I say his name pretty quickly. I think he's still in college, to be honest, because he got into a car crash. He got into a car crash. I'll be random to all at the end right there. Russell Wilson and Joe Montana. Dion and Zach Evans. First ever red card on Carl. Oh, it's a sign of disrespect. I disrespected Carl. No. I did. I'll disrespect you as well. I'll give you a red card. It's actually hilarious. Red card on Sean. Disrespect. Disrespect. Biggest sign of disrespect I can give you. Biggest sign of disrespect right there. Silvermoly Cunningham. You can do it with that yellow card. Xavian Valaday, AFC North. AFC North. Pittsburgh Steeler. Carl, I've had 100 of them. Sauce Gardner and Tyree Wilson. Yes. And you'll get more. Don't you worry. You'll get more. You'll get more. Leon O'Neill, Jr. to 75. Leon O'Neill, Jr. He is going to be NFC West. NFC West. Devon Shane. I forgot him already. Again, Amari Demarcato. All right. Let's do this. Leroy Jenkins. NFC West. Russell Wilson and Chris Rodriguez. Ed Reid and Earl Campbell. No, no penny test severity. God no. Not yet, Ferg. Nick Chubb. Parker Washington to 49. I believe he's a jag. I'm going to double check that. Yeah, AFC South. Here at Wilson. Devon Shane, Hutch and another Devon Shane. There's a Dan Marino Silver. Trenton Simpson. He's going to the Ravens. AFC North. My guy. Trenton Simpson. Noah Sewell, Purple Ice. Eric Dickerson. Anthony Richardson and Tanner McKee. There was a couple that I was like, all right, I know him. He's a Raven. Keaton Mitchell is another one. Zay Flowers. And I'll have to look up. Last box in the book. Good luck, everybody. Thank you, Jesus. Zarek Cooper. What? Zarek Cooper. Blue Auto to 149. Is that Jacksonville State? He didn't sign. All right. So that's, yeah, that's going to be random to all. He didn't sign. He was an untrafted free agent, did not sign last year. Keon White Silver. Anthony Orgy. There he is again. Our guy. Anthony Orgy. NFC South. Donald B.J. Ojalari. There's a lot more randoms on this one than there has been. Yeah, no, Kyle Hamilton is the real deal for sure. He's a stud, dude. Javante Williams. Tyler Scott 299. I think he's a bear. He didn't get cut. Chicago Bears. Yes. So NFC North 299. Mazzie Smith. CJ Stroud. CJ Stroud again. Jackson Smith and Jigba. Silver. Lucas Van Ness. Deontay Banks. NFC East. Purple Ice. Auto. NFC East. Deontay Banks. Ty J. Spears. Mojo to 25. Joe Namath. Miles Murphy and Jackson Smith and Jigba to 99. Last pack, everybody. That's what I'm saying, Rich. It's just because he's a safety, safety's not the most important position in the world, T.J. Wong. Siake Ika. Siake Ika. I know Siake Ika. Siake Ika is AFC North. AFC North. J. Caner, Brian Robinson, Jr., Hendon Hooker, and Jameer Gibbs. All right. I'm going to do a quick random. Again, we've got one, two, three, four, five, six, seven. Seven cards to random, meaning the eight, the eighth team will get all the non-college cards, if there are any, or the college, like non-autographed college cards. That's what I'm saying. Let's do this random. Here we go, everybody. I think you got more than that, Shane. You got a couple when you left. You definitely got a few. 11 times. One, two, three, four, five, six, seven, eight, nine, 10, 11. All right. So we've got AFC West with the Calvin Turner. The AFC South is getting the RJ Snead. Charles Williams Blue is going to the AFC East. It's NFC South is going to get the seven banks, NFC South on that one. The Charles Williams base will go to the NFC West. The Michael Jefferson will go to the AFC North. Zarek Cooper will go to the NFC North, meaning all non-autographed college cards go to the NFC East. Go to the NFC East. Well, thank you guys again. We'll show off the Jalen Hyatt Manga. That was pretty sweet. Thank you guys again for the fill coming up next is NC.


Thank you so much for being with us. Could you please start representing yourself? I'm Dr. Amina Someti, an associate professor at Khalifa University working under the Advanced Power and Energy Center. And one of your main fields is AI and artificial intelligence. We just discussed it on the on-scene a couple of minutes before. What is your main message? We talk a lot about the threats, but there are a lot of opportunities also to seize with AI. Artificial intelligence will revolutionize the transport sector, leveraging data and algorithms to make the transportation efficient, safe and sustainable. Autonomous Avigiles is the biggest technology that everybody would like to see perhaps, at least from my personal point of opinion, because it's going to make us reach wherever we need without needing a driver. And at the same time, we're anticipating that with the advancement in artificial intelligence, these autonomous cars can be also safe. So we can minimize the accidents on the roads. Are they already on the roads here? Well, there are some test cases of autonomous driving. For example, at Khalifa University, we have autonomous cars, which takes the students around the campus. So this is one of the examples. And you also have them in Master City, for instance. A lot of different types of vehicles already getting around. Are there other opportunities you can mention? Yes, for example now, there is a belief that, according to the forecast, that autonomous vehicles are going to show global market. There is a forecast of 1.8 trillion US dollars for that specific market by 2030. And also, there was a recent announcement by the Abu Dhabi Investment Office. It's going to have started something called SAVI, which stands for Smart Autonomous Vehicles Industry. And SAVI actually is going to include three components, the regulators, the infrastructure, and the innovation. When it comes to the infrastructure, they're going to be offering test zones to test the autonomous transportation. And this includes the Makta Aperge, the mural, the Tawazan Industrial Park, and the Master City. Okay. Would you say AI is a priority for Abu Dhabi? Yes. As you know, we have the Minister of Artificial Intelligence. And AI is one of the priorities. AI is believed that it's going to be driving the economic growth. And if we think about the economic growth, what other factors will contribute to is also the research. So the AI application research and then moving towards development is going to really significantly contribute to the economic development in the country. Could you give some figures to let us know what the strategy is here of Abu Dhabi in terms of AI, in terms of investments, number of people, students, for instance? Maybe a tendency then, if it's getting more important than it was a decade before, five years before. But I could say at this answering your question, I would say there is a huge interest from students when applying to university in the field of computer science, and especially for people who are doing electrical engineering, they try also to go for a minor in artificial intelligence, which shows that there is a huge potential towards AI. And also it's believed that AI, as I said, is going to also revolutionize the economic sector. So we're anticipating even the future jobs to be led by AI. It's more concrete than it was before, maybe. IT was in a laboratory or in a room, and now it's on the field. Can we say that? Yes, now AI is actually on the field. We can say, for example, the predictions, the forecasting, not only for autonomous driving, but also for example for renewables, we do forecasting and these forecasting are based on AI. Thank you so much.


Thank you very much. Thank you. Thank you very much. Thank you. Thank you very much, and thank you, your good former governor and my good friend Jim Rhodes, the members of the Congress that you have met already here, and please send them back in this election. We need them in Washington. And all of you, ladies and gentlemen, it's great to be in Ohio again, and especially good to be in Dayton.  Jim told you, and I'm sure you all know, we're about to embark on a train trip through your estate. And of all the things we've done in this campaign, there's nothing I've looked forward to more. We're taking the Whistlestop Tour of 84 to demonstrate that our government is once again on the right track. And our national renewal is not going to be derailed. I'll be traveling on the same train that Harry Truman used in the 1948 campaign. And all of us who remember what he said know that he spoke some very blunt truths. And that's what I hope to do today. Sometime back, I made a rather big statement. I said that this election is the most significant in half a century. And I said it because the issues of this campaign are so clear cut. And the differences in philosophy and approach to government are so great that this year America will either ratify the great turn that we made in 1980 or decide to go back to the old days and the old ways. Well, in some ways, I think we're like the pioneers who won the West. We can stick together, stand together, and move on together. Or we can retreat in small groups from the challenges of a great new world. I think we'll decide as the pioneers did. Like the pioneers, we might remember for a few minutes the desert we had to go through to get here. We've come a long way in less than four years. And together, we've put all of that old, tired talk about malaise and the age of limits behind us. We have together disproved two major myths, fairy tales about America, that our best days were behind her and that the people were powerless to solve problems. Do you remember when they were telling us that? And that we were going to have to get along with less? Well, we have restored hope and confidence, faith and courage, and returned them as the birthright of every American. In the economy, as you've been told, we reduced inflation by 2 thirds, down to 4.2% for the last year. We got the prime interest rate, which by 1980 was the highest since the Civil War. We got that down by 40%. It's now down by nine points. We cut on needed federal regulations. And this alone will save consumers and businesses about $150 billion over the next 10 years. Do you know that with a task force cutting back on regulations, we have eliminated your paperwork, government-required paperwork, by 300 million man hours a year. In education, we shifted the emphasis from how much government spends to how much students learn. And the result is a renewed commitment to excellence and scholastic aptitude test scores that are going up again for the first time in 20 years. In fact, this year, they jumped four points. And that doesn't sound like much, but it is the biggest increase in 20 years. Now, not everything is going up. We got tough on street crime and violent crime and the crime rate has dropped for two years in a row. And it's the first time it's done that in a long time. We've made America less dependent on foreign oil. We deregulated the oil prices. And oh, my, they said that gasoline would go to $2 a gallon. Well, gasoline prices are nearly a dime less than they were since we took office. We saved the social security system from collapse while benefits continue to rise. And this is one let me just pause and say here. This attack, so falsely based, that is frightening so many senior citizens unnecessarily, I'm going to repeat what I said on a certain Sunday night recently. No one in our administration has any idea of pulling the reg out from under the people who are dependent on social security. And there's one more item I'll mention. We cut tax rates by 25% for every taxpayer in the country. I want to talk about that, about taxes, because taxation is an issue with profound economic consequences. We cut personal tax rates for every taxpayer in the country to stimulate economic growth and boost economic expansion. And to the surprise of some people, but not to us, it worked. With lower taxes, the economy created over 6 million jobs in the last 21 months alone. With lower taxes, nearly 900,000 businesses were incorporated in the 17 month period that ended in May of this year. Now that's good for all of us, but it's especially good for those who, through no fault of their own, have been unemployed. You know, when you create just one job, when you release just one man or woman from the prison of unemployment, then you've changed their lives forever. And that's the moral element of taxation, letting the economy bloom so that the poor and the disadvantaged can have a chance. Now my opponent promises to raise your taxes. That's what he says. And believe me, of all the promises he's made this year, that's the one he'd keep. I believe that the American people will resoundingly reject his call for heavy new taxes, because unlike him, they've learned from experience. They've learned that high tax rates discourage effort, investment, production, and enterprise. But low tax rates stimulate those things, and that creates jobs. And jobs are exactly what Ohio and every other state needs more of. Now let's talk about what the tax increases he'll need to pay for all his promises will do to you personally. If my opponent is to keep all the promises that he has made in this campaign, and we've priced them out, he would have to increase taxes by the equivalent of $1,890 per household. That's more than $150 a month for every household. He started to expose more of his tax plans the other night. He said he would repeal indexing, which we passed to keep government from using inflation to force you into higher tax brackets. Now that would mean an additional enormous tax increase. But now he's pulled back from that. He says he goofed the other night. Well, he didn't mean to say that, according to him. But even so, his increases wouldn't be just a hardship. They'd be like a second mortgage. But the Mondale mortgage is a mortgage on your future to pay for his campaign promises. And let me tell you about that mortgage. The payments will get bigger and bigger and bigger. As he puts more heavy taxes on the people and on their businesses, the economy will slow down and slow down and slow down. And after that kills the recovery, he'll run to raise your taxes again and again to make up for it. Do you want to pay for his mistakes? My opponent says the deficit is the central issue. We say growth is the central issue. Now he says higher taxes are the answer.  We want to simplify the entire tax system so we can bring yours and everybody's income tax rates further down, not up. And that's why this election is about the future because it's about growth and opportunity for all Americans. We're talking about the kind of America we'll create for our children. And I think this is why this being able to imagine a better future for our young people and work toward it. That's why so many of the young people of the country support our philosophy. And I'm pleased to see so many of them here today. Right, if anyone doubts the great renewal in this country, let them look at the bright and shining optimism of our young people, our high school students, college students, and our young working people. They are a new nation unto themselves. And it seems to me that they understand and support our philosophy because they are idealists. They believe in people. They believe that people deserve a change and that they can create miracles when given a chance. I'll tell you, there have been moving moments and heartening moments in this campaign. But nothing, nothing that I've seen has surpassed seeing the young people of our country give us their support. Thank you. And Bush, I know that you don't want to go back to the tired old past, that time of timidity and taxes, that moment of misfortune and malaise, that reign of error. Let's talk a little more about that reign because our opponent's mistakes aren't limited to tax policy. You remember the grain embargo in which the American farmers paid for our opponent's foreign policy failures? Now, there's an example of both of an unfair policy and of an artful attempt to get around it. My opponent says he always opposed it. Now, that's funny because, in fact, he supported it publicly, explicitly, and enthusiastically. He even questioned the patriotism of a senator in his own party for calling it what it was, a dumb idea.  But you know, the symbol of our party is an elephant, and elephants have long memories. Your state, Ohio, would be helped by federal enterprise zones in which the rundown parts of a city get special help from tax incentives aimed at getting businessmen and women in there to open shops and run companies. Dayton itself has two state enterprise zones. They were created just more than a year ago, and they've already attracted more than a dozen new businesses into the area. Now, that, too, would create jobs and growth and economic revitalization for troubled areas. But the federal enterprise zone bill has been held hostage by the liberal democratic leadership in the House of Representatives, the same people who want to work with my opponent to raise your taxes. So tell me, are you the good people of the Buckeye State going to vote for them? Well, I think you've already answered my next question, which was, are you going to lend your support to the American Opportunity Team so that all of us together can build a better future for our children and for America? Well, it is the choice, your choice, and it's the clearest, most important choice in 50 years. I think now I hear the train whistle. You know, that train is the old US-1. And as I said, Harry Truman spoke from the back of that train. And Franklin Roosevelt and Dwight Eisenhower also spoke from it. Well, I speak from it because we can mean to continue their tradition of a strong and vital America. And I speak from it because I think all of us this year will stay together and move forward with the force of a locomotive. We're on the right track. America's best days are ahead, and nothing can stop us because this train is bound for glory.  And I can't help but say, seeing that baby, that's really, there's another one. That's what it's really all about, that those little babies, when they begin to grow up, will find the same golden dream America that we found when we were babies and growing up in this town. Thank you all. God bless you all. Thank you. And if I can repeat an earlier enough.


Welcome back, in the previous segment we talked about constructors, in this segment we are going to talk about operator overloading. In mathematics arithmetic operators are used with numbers, but they are also used with other objects such as vectors and the same operators in some sense mean different things in different places, but they are somehow related and therefore we somehow prefer to use the same symbol. Now something like this can also be done in C++ and it is desirable to the extent that it helps your thinking. So if the program that you write is consistent with the way you think about the objects in your program then that is a good thing and C++ allows you to do that. How does C++ do it? Well, consider an operator at, so at could be plus, at could be multiply anything. So the operation associated is x at y, so at appears in the middle and so at is an infix operator. So how does C++ look at such an operation? Well, C++ treats this as x dot operator at with argument y. So operator at must be a member function in the structure type x, structure type of x. If it is a member function then that member function is executed. So if the member function operator at is defined then that is called to execute x at y, it is as simple as that. So you can define for example operator plus and that code will be execute if you write x plus y. So we will see an example of this right away. So say we want to do arithmetic on v3 objects. So this is our main. So we have v3 objects p and q and they have been called with these constructors. So we will see those constructors as well in a minute. But let us say we have initialized those objects p and q somehow or the other. Then we have a couple of uninitialized v3 objects. And now we can write r equals p plus q and the natural interpretation of this might be that look we add the vectors component wise. And we can make that natural interpretation hold in our implementation and that is exactly what we are going to see. So notice that as we said earlier this just means r equals p dot operator plus of q. So we are going to define the operator plus member function. Then we can write something like s equals r times 10. So far v3 for v3 star does not have any particular meaning r is of type v3 and there is nothing so far we have said as to what it means to multiply a vector by a scalar. But we can simply define r dot operator star. This expression would be effectively implemented automatically by c plus plus it would be interpreted as this operation and c plus plus would just perform this operation. So how does this whole thing work? So struct v3 if you remember has these three parts x, y, z, the three members x, y, z and let me just get this constructor out of the way. So this is the constructor taking three arguments and setting x, y, z to those three arguments. So this is kind of the most natural constructor you might want. I want to set my vector, I want to initialize my vector to some arbitrary three quantities. Now comes another constructor because we want to write this as well. So for this, this constructor will not work. So this constructor is going to do nothing. So the members x, y, z will not be initialized in any particular manner. Next we are going to write the member function operator plus. So the definition of this member function is like the definition of any other member function. So this v3 is the type of the value being returned and this is the argument. And this is effectively going to be adding two vectors. So how are those two vectors going to come? Well one is going to be the receiver. So we write, we wrote p plus q that was translated implicitly by c plus plus to this. So p is going to be the receiver and that is going to be added to q. So in this the receiver is always there and the second, the right hand side operand of the plus is going to be this b. So for this expression which got translated to this p is going to be the receiver, q is going to be the right hand side operand or the b value over here. So what happens? So in this what am I supposed to do? I am supposed to return as v3 object having x coordinate equal to the sum of the x coordinates of the receiver and the right hand object. So x plus b dot x is exactly that, y plus b dot y is the desired y coordinate and z plus b dot z is the desired z coordinate. So we are calling a constructor over here and that constructor is constructing a v3 object with these members. So these are exactly the members that we wanted for component wise addition or member wise addition and that is exactly what this member function has accomplished. What about this? So we should write a member function r dot operator star and this would be the factor argument. So it is going to look something like this. So v3 will take a, it appears to take a single argument is operator star but that is not true there is always the receiver and the receiver is, since this is inside a struct v3 the receiver is of type v3. So this is an implementation of v3 times number. So f is that number and what is going to happen over here you should be able to write this now. We are going to return an object whose numbers are x dot f, y dot f and z dot f and we want to return a v3 object so we just call the v3 constructor with these arguments. So that is it. So this allows us to do arithmetic on v3 objects. Now using this v3 arithmetic we can do something which looks quite nice. So suppose we have v3 objects u, a and s remember our ut plus half 80 squared example and let us say t is a double value. Now our formula was ut plus half 80 squared. So we have essentially written that formula but you can see that that formula is going to do what we want. Why is that?  So we have defined how this is going to happen. This is going to multiply every member, every component of u by t. So it is going to do exactly the right thing. What about this a times t that is again scaling. So this if it is calculated first will give me a vector which has been acceleration which has been scaled by t or acceleration which is multiplied by t. But again when I do this it will be again a v3 now the product multiplied by t, again a v3 multiplied by 0.5. So this is going to produce exactly the 80 squared half 80 squared term that we want. So now this is going to be a v3 object, this is going to be a v3 object and there is a plus over here. But we define the plus operator as well and therefore this is going to produce the final sum that we wanted. And if we put s equals this then we can get s dot x, s dot y, s dot z which is going to be half 80 squared for t equals, t equals 10 and these values of u, u and a. So let us do a demo of this. So this is our file kinematics dot cpp. So inside this we have put in whatever we wanted. So this constructor and I guess I have ignored putting the simple constructor over here but I guess it is not needed over here but we could have put that in as well. So this is the definition of operator plus, so the plus operator, this is the definition of times operator and you can see that I have exactly the code that we want. So let us look at this and let us calculate what answers are we expecting. So t is 10, so ut we should expect in the x coordinate 10 over here and then half 80 squared. So half of a in the x coordinate is going to be 2 and t squared is 100. So this is going to contribute 200 plus 10, so 210. So similarly you can do the other things but let us just check whether this will indeed produce s dot x to be 200, so 210. So let us execute this and run it, yes 210 it is the x coordinate. So here are some exercises. So overload the multiplication to define the dot product of two vectors. As you might remember this is also something that is needed in physics a lot. Now we already have overloaded the multiplication but that was a multiplication between a V3 object and a number. This is going to be a V3 object and another V3 object and that is perfectly fine that can sit next to our old definition because the signatures are different. And so when you write it in your code C++ will know exactly which of those functions to use because it will look at the signatures and it will look at how many arguments, what kinds of arguments you have specified. So what have we discussed? So we have said that expressions involving vectors can be made to look very much like what you studied in physics, the exact formulae you can almost see in your code. Other operators can also be overloaded including unary operators and this is discussed at length in the book. Although for this course we will not really worry so much about all such detailed overloading. So if you understand plus and times that is quite enough for this course and maybe a few other operators which we will specifically point out a little bit later. Now overloading operators seems very cute but it is also a little bit strange. So in principle you could take the plus operator and make it do multiplication. So that could be amusing but in practice it is a terrible idea because you are fooling people and that is the last thing that you want to do when you are trying to cooperatively solve a problem. So you have to be careful with this kind of overloading. You should use overloading when the operators are really consistent with the intuition that you have or intuition that in general people have otherwise you will just end up confusing the reader of your program and believe me you will also confuse yourself. But if the intuition is consistent then you should overload because one of the ideas in modern programming is that your programs should look like the language should be like the language you use in dealing with that domain. So if while doing the physics you think of multiplying vectors by scalars then if you can make that happen in programming it will also be a good thing. It will sort of it will increase the readability of your code and generally make things more appealing. So I just want to point out that we saw three ways of writing s equal to ut plus half it square using ordinary functions for some end product using member functions and operator overloading and I guess you probably agree with me that operator overloaded looked very very natural. The next topic is going to be access control and classes but before that let us take a short break.


Hello guys, please welcome our next speaker Steve Watt from Red Hat. Hi folks, I'm going to be presenting today on the future of persistence and stateful applications in Kubernetes. This is quite a talk that's primarily focused on where things are hitting and the problems that are going to be solved further on. I'm going to be just for context setting, providing some overview on how things work today. But if you want to sort of really get in-depth sessions, Jan Sophranik. Jan, can you put your hand up quickly? Jan Sophranik from Brno is going to be presenting tomorrow on Kubernetes and OpenShift persistence and Brad Childs. He will put your hand up. He's also going to be presenting tomorrow on the same topic. They've split it up to cover different aspects, but they're going to be presenting on, you know, deep dive on how all of this works today. So just before I start, could I just ask who here has used Kubernetes before? Okay, quite a lot. All right, and who here has actually used, like, submitted a Kubernetes claim for storage, a persistent volume claim? Okay, great. All right, that's helpful. So what I'm going to do is start by framing the presentation on how I view Kubernetes and a lot of folks view Kubernetes, and then the goals of the Kubernetes project, and then follow that with how does Kubernetes work today, and then focus on the problems that we're going to be tackling to sort of fulfill that vision and all the storage needs to succeed with where Kubernetes needs to go. So the first thing is Kubernetes is an application platform.  And that's sort of the way I see Kubernetes, right?  It's a platform, right? And so it's also a platform that's designed goals largely from being able to run things in private and public clouds. It's intended to run all containers, both stateless and stateful. So that's a key takeaway. I think, you know, there's been so much talk about the persistence problem with containers, and, you know, for the longest time we heard, you know, containers are only for stateless things, but that was somewhat of a self-fulfilling prophecy because, of course, containers are only stateless things if they don't have any storage features in the platform, right? And so, you know, most container engines, you know, for executing and running the container and orchestrators, up until, like, sort of two years ago, really just didn't have any features for connecting containers to different backends for storage. So about January of 2015, Red Hat and Google got really involved in the Kubernetes project and started building out a lot of the volume plugins and the persistent volume framework to make that happen. So in addition for stateful and stateless, the other thing that is important for Kubernetes is that when you run your applications in Kubernetes, you're scheduling your applications to run in a cluster, and that cluster has resources, and so applications are scheduled on nodes that are well suited for running that particular application. And then lastly, there's sort of two main points as well about the goals of the project, which is to make application development easier. So there's a set of basic functional services within Kubernetes that applications can leverage, that they don't have to build these things in themselves. So your application should be becoming smaller because you can use the system services that come within Kubernetes, that come with the platform, and then also makes life a little bit easier for ops, because part of this cloud-native ethos for building applications is that the cluster offers services for helping guarantee that your application has uptime. So you don't need to sort of build redundancy into your application. For example, Kubernetes has primitives like replica sets and things like that that can always ensure that your application is running somewhere in the cluster. So that is one part of the Kubernetes goals, but there's another thing that's often not that well called out, which is that the cluster is now the computer. And so if you look at like scale-out architectures for the last, you know, five, ten years, right? You had Spark and Hadoop and Cassandra and all the NoSQL stuff. You also had your traditional scale-up application data management platforms like MySQL or Postgres. The thing with these things is that you had a single cluster for each one of these things. You have your 300 node Spark cluster and your 400 node Cassandra cluster. And if you sort of look at the average percentage of server utilization in average data center, like if you're good, you're getting 15%. You know, if you're badass like Twitter or someone like that, you might be getting 20, 25%. So if you look at that stat with the fact that like the average OPEX for a data center is one-third of the CAPEX, let me put that into dollar numbers. If I spend $300,000 on a rack to buy it, all the servers in a rack, I pay $100,000 a year to power and cool that thing. Okay? So the OPEX over time really ramps up pretty quickly. And so the ability for you to be able to get better server utilization, more applications per server, greatly allows you to shrink your infrastructure costs. And so this is super appealing from a cost perspective. But it's also appealing from an ops perspective. So what we've seen now with Kubernetes is that you can take all these applications and be able to run them in the same cluster. And that same cluster, you know, your applications are running on a cluster and not on a specific computer. So now I'm going to focus on specifically how, now that I've framed Kubernetes, you know, how do the storage features work within Kubernetes today to actually enable the goals of that, right? So the first thing that we tackled in the Kubernetes project is if you have preexisting volume storage, how do you connect that into your containers, right? And so the first thing that was created within Kubernetes was the volume plugin framework. And so a volume plugin, the easiest way to think of this thing is as a storage adapter. And so this is just some of the volume plugins that we have. I think this was like created somewhere in the middle of last year. And we've had a few more that have been added since then. But you can see that in the dark red, those are sort of the cloud provider, you know, storage adapters. And in the orange are more of the on-premise, you know, storage adapters. And we've got support for NFS, iSCSI, Fiber Channel, some of the industry standards. And then also specific open source projects like CIF or Gluster, et cetera. So the way volume plugins work is that in Kubernetes, when you choose to enable your application to run in your cluster, you define it in something called a pod, right? And a pod basically specifies, hey, here's my container image that I want to run. And here's the stuff that it needs to run. And some of those things are persistent storage. And so you can specify a volume plugin for that pod that says, hey, when this pod lands on a node, like mount this particular backend storage device into the container. So regardless of, like, which node the container the pod is scheduled on, when the pod lands, Kubernetes goes and looks at the volume plugin information or the claim information, figures out what persistent volume is associated with it, mounts that to the host, and then into the container. And just incidentally, if you're interested, like, I've got, like, demos. If you want to actually see this, by just clicking that link, I'll share my slides afterwards. They're little MP4s. So that was great, but inefficient, because it was a method for connecting Kubernetes pods or applications with pre-existing storage. And for folks that wanted to, you know, define new storage that they can use within new applications, they had to, like, go, you know, call their storage administrator and say, hey, would you create me a volume that I can use? I need it to be this big. You know, it might take a couple of days or at least a couple of hours, et cetera. In some worst case scenarios, it's like submitting a ticket in a workflow system for the storage center of competency to go off and build that stuff for you. And so we said, okay, we've got to provide a better way of doing this. And so we created something called dynamic provisioning. And so with dynamic provisioning, we added a set of provisioners for back-end storage platforms, and they could be contributed as well from vendors. And a provisioner is basically like an executable that is parameterized. And so, you know, we have one for EBS, which I'll be talking through today. And EBS supports, you know, I think three basic storage types. So there's IOPS SSD, which is the fastest one. It gives you an SSD disk, GPS SSD, which is not quite as fast. And then there's magnetic, which is rotational media. And so we have a single, like, EBS provisioner. And then depending on what type you provide in the parameter, it'll go make you that thing, right? And so we have an NFS provisioner, and there's a Gluster provisioner, and a SEF provisioner, and a Google persistent disk provisioner. And there's lots of different provisioners that we've contributed to the project. And so now you can use these to go make storage. But the problem is, like, we wanted a simple and intuitive way for developers to go off and ask for storage. So we meshed the concept of dynamic provisioning with this concept called storage classes, which you see here. And storage classes is an administrative feature where an administrator can sort of define their storage catalog that's available to the cluster. So they can say, look, I have, you know, I'm running in Amazon, and I have EBS. I have an EBS provisioner that ships with Kubernetes. I'm going to configure one, and I'm going to just call it arbitrarily gold. And I'm going to, in the params, say, hey, you know, provision an IOPS SSD disk. And then I'm going to configure another storage class. I'm going to call this one silver. You know, also use the same EBS one, and I'm going to provision this one for GPS SD. And bronze, the same thing, but like I'm going to call a different feature on this thing, which will go make me an encrypted GPS SD. And, you know, and then like, you know, Pavel has created an NFS share or has an NFS server and we've got an NFS provisioner for that. And, you know, so I've arbitrarily called that Pavel's provision or something to that effect, right? So you can see in this way, you've got like a way of creating a storage catalog and describing it and hooking it up to the provisioning framework. And so the actual workflow for the way all of this stuff works is that, you know, number one, the administrator defines a storage class, which is exactly the stuff that happened on the previous slide.  And then the developer comes along and the developer says, oh, they don't need to know anything about the EBS provision. They just say, I want 100 gigabytes of gold. Obviously, the administrator and Kubernetes is a way to describe the storage classes. It has to know what the heck gold is, right? But it's as simple as when you submit your claim, give me 100 gigabytes of gold and it'll just go make that. So it'll go make the storage and bind it to the developer's claim. And then when the developer wants to use that claim, they just go in and reference it as the claim in the storage subsection of the pod. And that's it. It's literally that simple. So just to demonstrate this, I'm going to sort of show you how this works in Amazon today.  So you can see there's nothing and I'm going to like hit the refresh button. There's nothing. And then what I'm going to show you is a definition of my gold storage class, right? So how do I define the storage class for gold? It's super simplistic. You know, Kubernetes has different objects. It's the storage class object type. I give it the arbitrary name of gold. I identify I'm using the AWS EBS Provisioner and I specify IO1 which is the IOPS type and the IO throughput which is 10 IOPS and the zone. Then I submit that thing to Kubernetes and it'll go make the storage class. And then basically I can query the catalog that I'm starting to build now by saying kubectl gets storage class. So you see it right there. There's just one. There's just gold. Now I'm going to go do the same thing and I'm going to define a silver. So there you go. Very similar. Same API type storage class. Give an arbitrary name of silver. Same EBS Provisioner. This time I'm going to specify a GPS SSD which is GP2. Specify the same zone that my cluster is running in. And when I basically go and query the catalog, you can see now it will show both gold and silver. There you go. Both gold and silver. So great. Now this is the administrative function done, right? So that was step one on the previous slide. So I'm done now. And now I'm going to put my developer hat on and say, ah, the administrator has gone and created me all these storage classes and I want to go use one. So now you can see get pv, get pvc return nothing. I have zero storage defined in my cluster. You saw I had no EBS disks. So now I'm going to show you how you define a claim to actually go off and kick off that one of the provisioners in that storage class and go make me some storage. So this that you can see the API type is the persistent volume claim. Give it an arbitrary claim name, myGoldClaim. And then specify the class that I'm using. So I'm going to provision this out of the gold class and I'm going to ask for five gigabytes. So this is my way of the developer saying, give me five gigabytes of gold. So that's the definition.  So now when I query the persistent volume claim, you'll see there that the claim is bound to a particular persistent volume there and you can see the five gig capacity. And just to show you that this isn't all smoke and mirrors, I'm going to go back and refresh Amazon and you're going to see there's the actual block device and in the volume type you can see, you know, I01, which is what we specified gold as. So the demo's a bit longer if you want to see I go into silver and some others if you want to watch it later. But that's basically how provisioning works today and Jan will give you a deeper dive later. So that's how everything works today. Let's stop and like just start talking about, you know, where things are going in the future. We're obviously, just before I embark on the future stuff, we've built the basics that you need to sort of, I joke around sort of call it the bottom of Maslow's hierarchy for storage needs and, you know, we're going to be hardening and improving that for the next, you know, six months at least before we start adding any of these major features that I'm talking about. So everything that I've spoken about so far has been what we call entry volume plugins and provisioners. This means that somebody's come along and contributed the volume plugin or the provisioner to the Kubernetes framework and had to work with the Kubernetes community to do that. And that's great, but, you know, not every company is very adept at working with open source communities. There's a bit of like a mental barrier that we've discovered because we are quite a friendly community. I don't know if there's confirmation bias in that, but, you know, I do think we're a bunch of friendly folks and easy to work with. But the other issue with that is that, say there's a bug in one of these volume plugins or provisioners, you actually have to wait for a new version of Kubernetes to ship, right, to actually get the fix for that. And that's not really optimal and it also somewhat takes the power out of the contributors' hands for when they can deliver a fix for that release. And so one of the things we've added is flex volumes, which is an out-of-tree interface that's pluggable for writing volume plugins. And so if you want to write a volume plugin, we've got an interface. You can basically write it. It really does just four things. It does attach, detach of a block device if it's a block device. And it also does mount and unmount, right? So attach and mount if you're, you know, invoking a volume plugin. And when your pod is dead and you can stop your application, it'll do it, you know, unmount and detach. So that's one way that we've made the volume plugins external and started building a community around that. And then the other half of the problem is the provisioners, which is making storage. And Yan just finished the interface on that at KubeCon last November. And we already have a couple of reference implementations for it. And so we've got the same sort of interface for external, for provisioners. And so you can write your own provisioners and provisioners are pretty simplistic. They're even more simplistic. They just do create volume or delete volume. And so there's a number of companies already taking advantage of this stuff. So NetApp is a fairly large established player that's using these. And then there's Portworx, Yamanti, and Datara, which are some Bay Area based startups that have storage platforms for Kubernetes that are using these. So this is great, but as we sort of start iterating on the external flex interface, we sort of noticed, oh, this is kind of similar in concept to where Docker Inc is taking their Docker volume plugins. And so sometimes communities don't always work that well together. That's as much as I'll say on that topic. But this is kind of interesting because I think there's a synergy and there's a potential for a collaboration here to sort of drive towards a single spec on this. And so for provisioning and volume plugins. And so basically I would posit that if Docker Inc on their volume plugins and their swarm integration for volume plugins can arrive at a similar spec to where Kubernetes is going with flex volumes, then we'll have a 10,000 pound gorilla in the container storage space where I'd say 90% of the container users are using one of those two platforms for their containers. And so I think you'd basically have a dominant spec that would emerge out of that. And so this is something that I'm working on this year. I'm hopeful that it will emerge. There's a couple of benefits on this and that you vendors or open source projects could contribute a single volume plugin or provisioner. And it could be used by Mesos, Cloud Foundry, Swarm and Kubernetes which would have feedback from multiple folks. Now that's often a bad idea if it's formative but a lot of these things have been in play for two years now, et cetera. So we have quite a good understanding of the interfaces and the features and they're pretty settled now. So that's one place that we're going in the future. Okay, different topic. Did anybody here go to the running Gluster of Fests in Kubernetes OpenShift Talk earlier today? Okay, so the presenter. Nice. And about five other folks. Okay, so let me explain what this project is. So both Gluster and CIF have been containerized and you can actually run those in Kubernetes so they have the Gluster community as a project called Gluster-Cubernetes. And CIF has a subsection on there called CIF-Docker which has information on how to run CIF and Kubernetes. And so you can run both of those in Kubernetes. Now, this is sort of back to the point I made earlier. If Kubernetes is a general platform for all applications, you should be able to run data management, persistence platforms on Kubernetes as well. And so that's, I think, the ultimate test of the persistence and stateful capabilities. And so this stuff has been in flight for over two years now. And it's far enough along that we actually have a commercial version of Gluster that runs inside OpenShift called container-native storage. So it's productized, et cetera. But in building that and looking at my background before container storage is in big data. And so if you look at scale-out data management platforms, no SQL architectures, there's some basic patterns that you see for those scale-out platforms which is firstly a masterwork or architecture. And then if you're trying to do a read from an application client to that platform, you organize your data in those platforms into these tiers. So there's a primary tier, secondary tier, tertiary tier, and a quaternary tier. And those are based on read performance that you'd get from where you put them. So obviously if you have data in memory, you're going to get the best read performance because it's the fastest. Or latency is maybe a better word. And then the next thing is if your data can't all fit in memory, well then you want to put it on local SSDs because they have the fastest direct attach storage performance. And if you can't afford all the SSDs to do it, then you put the remaining data on local rotational media. Or the very last option is a network disk because network disks basically have the same performance as the secondary or tertiary tier with the network hop in between on top of that as well. So you have these tiers, and what you see well served in Kubernetes today is the primary tier and the quaternary tier. So the primary tier is often managed by the application itself. So Kubernetes doesn't get involved in that. The max that Kubernetes does is when you define your pod, you say how much memory is available to the pod. So if you're a memory intensive application, you want to make sure you have servers that have lots of memory. And then you can assign a lot of memory to your pod and then you can sort of do what you would on a standard, you know, non-Kubernetes-based server for that. But local SSDs and local drives, you have volume plugins for directories, but you have zero support for like managing block devices, which is something that's used in the Gloucester Kubernetes project today. And zero support for submitting claims to get access to local file systems or block devices. And so that is something that needs to be solved. There's a proposal presumably landing in Kubernetes 1.6 or 1.7 to, you know, address these issues. And I will say that, you know, if you look at, you know, I think a lot of the focus in Kubernetes on the primary and the quaternary tiers is largely because of the heavy focus on the public cloud, right? Because on-premise, it's fairly common in, you know, buy a 2U server with 12 disks and have a lot of disks available to you, but not in the public cloud.  Well, a lot of these scale-out architectures handle redundancy for you. So if you lose a node or even a rack, you don't care, right? We don't care too much. The issue is that it's the capacity. So the local disks are small, you know, in EC2, right? There's not enough capacity for you to do anything interesting with them. So the next set of challenges is if you look at going forward how the Kubernetes platform is going to be used, among other reasons, I believe that people will be using Kubernetes to avoid lock-in. And so what I mean by that is if you look in application development trains, you see two main predominant trains. Definitely more of the first one, which is that people are building in public clouds.  They use a Linux OS on there, you know, and so in our case, you know, we've seen growth with RHEL in the public cloud too, which is good news, but there's also Amazon Linux there, et cetera. And then what people tend to do is write quite thin applications and make heavy use of the service catalog. So that's actually like a real picture of the Amazon service catalog. And each, sorry, here, each line item there is an actual additional service. So you don't have to write to manage, set up your own message queuing, your own database server. They have services for everything, which is awesome, you know, because you can write a small application and have Amazon worry about whether your database goes up and down or your message queue goes up or down. The problem is you get massively locked in if you do that, right? It's super hard to move your application from, say, like if Amazon hikes the prices up to go over to Google or to some other provider. And so the alternative approach is to build applications on Kubernetes. As I said, Kubernetes is a general platform. You can run anything on it. And that approaches Kubernetes runs just great on Google, Amazon, OpenStack, bare metal, Azure. So you can move your Kubernetes application anywhere. And Kubernetes has its own Service Broker Service Catalog project, right? And so the ideal goal is to make the Kubernetes service catalog and back that with the open source ecosystem. So as open source projects package and build, you know, daemon sets or, you know, stateful sets, Kubernetes primitives to deploy their application into Kubernetes just gets added to the catalog, kind of like a, you know, general large repo. And, you know, people can build on that. And that's application. That's portable across cloud providers. So, you know, you don't get locked in. But here is the problem. It's data locking. It's not application portability. So Kubernetes has created Kube Federation, right? And with the Federation, you have a federated control plane. And with this control plane, you can plug in multiple clusters. And so, you know, you can have a Kube cluster running in Amazon, a different one in Google, and a different one in Azure. And you can register them all with the control plane. And using the control plane, you can move your applications between them. Another thing that Kube Federation does is if you have, you know, you're just all in on one cloud provider and you have a Kube cluster in one region and another cluster in another region, et cetera. If there's some sort of problem with the region, you can use your control plane to shift your application to a different cluster, a different region. So this is great. And if you actually like to look at a real application profile, right? So I created a very simple three-tier web application, microservice, you know. MySQL is the back end. Nginx is the web server front end. It has a claim. Just one claim for the database.  And when the database, when it comes back up, it just remounts varlib.mySQL to the same disk and voila, everything's great again. And so all your data's in there and you can use the Federation to move your application from Amazon to Google. And, you know, provided you have exactly the same claim name, it works just fine because Kubernetes has a layer of abstraction from the storage provider, which is the concept of the claim, right? And so this is great, but there's no data, right? So it'll be like re-initializing your database. It'll be brand new. And arguably you haven't really moved your application because most people's data in their database is intrinsic to the application working. So this is something that we have to tackle right on time. And so here are a couple of ways we're thinking about this. And actually we love your help and input in helping us solve these problems, right? So the one approach is asynchronous replication. So basically you could do a couple of things like, you know, local rights go to the EBS disk and then basically there's an asynchronous right that flows over to some other disk somewhere else. You could do periodic snapshotting. So if you're writing all your data to your EBS disk and you inject a snapshot functionality into the Kubernetes control plane, you could snapshot the disk and do a bunch of different things with it. Snapshot's generally useful and we actually have a proposal that's well underway. Certain things that you can do with this snapshot is that you could replicate it to your other cluster. So if you're wanting to plan to do an application migration, you could stop your application, snapshot it, mirror the snapshot, or replicate the snapshot over to, you know, Google's persistent disk from EBS. The other thing is if you're not trying to solve application portability, application migration issues is the ability to do backups. So you can basically take certain snapshots at different points in time and then you can back them up somewhere, maybe to another cloud provider, maybe on-premise, maybe to a different region in Google.  And so I think these are sort of like existential challenges because Kubernetes really has to solve these problems well to be appealing as an architecture. When I flip back to this, this is sort of the battle ahead for open source, I think, versus proprietary, right? Is, you know, thin applications on a proprietary service catalog versus thin applications on an open service catalog. So that is my talk. Thanks for listening, and I wanted to actually have a lot of folks from the Kube storage community in this room. So I just wanted to open it up and see if there were any questions. Subendu, go ahead. Two questions. Yeah, that's absolute. So the question was, you know, metering, basically, you know, being able to track and do metering and accounting, right? So there's no capability to do that today. But it's capable, you can instrument it, right? So you can basically see, you know, within Kubernetes and OpenShift, the way that you separate and organize your applications is you create a project in OpenShift which is like a namespace in Kubernetes. And so projects tend to be single application things, right? And so basically claims are separated by projects or namespaces. So like Steve in project one can't see Subendu's claims in project two. And so claims will always be part of the namespace. So one way that you could do that is look at the claims that are being submitted in a namespace. The other thing that is kind of related to that is we've added quota support on namespaces for storage, right? So we can, like obviously, it's quite funny, like a couple of times when we were talking about dynamic provisioning and adding that to some of our customers, you know, and the ops team were in the room, they were, the initial reaction before we sort of were able to talk about quotas was one of pure horror, right? You're like, oh, I'm running, you know, Kubernetes or OpenShift in Amazon and I'm just going to let my developers just provision services, like block devices and all kinds of things, you know, regardless of tier and things like that, like how are you going to control that? So we actually said, no, no, no, we've got quotas for that. So quotas allow you to constrain the amount of claims per project or namespace and also the storage capacity per claim. So you can say, I can't have more than five claims and no claim can be bigger than 10 gig. And then the other thing that's coming is... That's where I'm getting... Yeah, so the other thing is the storage class is the catalog. This is something that's coming, is be able to say, look, provide developers with a way to sort of see what storage classes are available to their project because, you know, if Subendu has bought a really expensive on-premise storage cluster that's backed with SSDs, et cetera, for his group, then I shouldn't be able to come along and provision out of it just because we're both on a multi-tenant Kubernetes or OpenShift cluster. And so to be able to sort of block is to use which storage classes. Yeah, the closest we do is Cloud Provider. So OpenShift runs for the folks that don't know. We have OpenShift Online, and OpenShift Online wants to be able to correlate the EBS disks that are provisioned from their Kubernetes users with EBS disks that are used for other things in their cluster. And so there is some metadata injected into each one of the block devices around which persistent volume they're associated with. So if somebody, the idea would be to, for soft deletes, like, oh, I deleted this disk. Oh, crap, it was the disk for my database. Help, right? So we'd be able to implement a soft delete process, and then, so it disappears out of Kubernetes, but lives on in Amazon for like a week or two just to avoid that scenario. But so there is a way to inject metadata into the persistent volume, sorry, into the actual block device if that thing supports it, and you can build that into your provisioner. But beyond that, there's what you'd have to go to Kubernetes. You'd have to query, the administrator would have to query the persistent volumes and look at which, you know, because the persistent volume has the volume plug-in information to which real device it's connected to in there. That's the only way to get at it right now. I just want to give some other folks some questions. Are there any other questions? Yes, go ahead. Yes, very much so. I think, so, Waman Chen, which is a member of the, he's a Red Hatter, but he's a member of the Kube Storage SIG, has a proposal around using QEMU with TCMU to basically hook into the KVM-based storage adapters that are written for that. I know that's one idea. The other is that there is a group of folks called OpenSDS, which are trying to create a generic sort of storage spec for hypervisors, and they want to basically build it in such a way that it's accessible from the container orchestrators too. I would say we're very interested if we can find some way to snap into that well-established ecosystem and bring that all into Kubernetes. Yes, absolutely. Any other questions? I'll go back to Subendu. He has lots of questions. Encrypted? Yeah, I will say it like so. Encryption, so the question was how do we handle sophisticated encryption scenarios in Kubernetes? Right now, the only support that's available is if your back-end storage platform supports encryption, you can write a provisioner that will support creating encrypted volumes. So like our Amazon provisioner is one example. So if you create a storage class, say any volume that's provisioned from the storage class said encrypted to true, it will always encrypt that volume. Now, I know that's only small part of the larger encryption flow, but the other thing is we have a sort of dearth of well-articulated encryption scenarios to go and work on. So if you do have an end-to-end flow that describes what's missing in Kubernetes, the storage secret would be quite interested in seeing that. Yes, go ahead. It has been, to be honest, for a long time. It's sort of a little escape hatch for folks that's its provenance. It's a little escape hatch for folks that absolutely didn't want to contribute an entry for a while. As with any open-source community, this is a finite, and so you work on the most important things first kind of thing. But it's popped right up to the top of our stack, and so in Cube 1.6, the flex volume interface is being overhauled and attached, detached, etc., being improved as part of that. So the question is, hey, I have a Kubernetes or OpenShift on OpenStack cluster, and I'm using Cinder for everything that I need. This is my huge flex volume. Is that correct? OpenStack on top of Cube. You like to live on the edge. OpenStack on top of Cube. So one, that's a great data point about why Kubernetes is a great broad-use application. But in that sense, flex volumes are basically like a way, if there is no Kubernetes volume plugin for the thing that you want to do, and you want an interface to be able to go write the thing yourself or talk somebody into writing something, that's what it's for. So if there's an existing volume plugin or provisioner in the scenario you're using, go and use that, right? You can use the Cinder provisioner because I haven't thought too much about that scenario, but yes, that's the cloud provider I was like, but basically, so if there's no storage, if there's a back-end storage platform you want to use, there's no volume plugin or provisioner for it. I'm finished my slides anyway. Provisioner for it, that's when you use flex volume to go write something or talk somebody into writing something for it. Flex volume is the strategic direction we're trying to take all volume plugins. We're trying to move everything out of tree. Does it make sense? Okay. Yes, Scott, go ahead. I don't like hard ones. Yeah. Yeah, you can. Yeah, so that's like another approach, right? Like the but it's sort of, you know, one of the things we're trying to do is solve the problem for everyone. And so like that is a very like technology-centric approach. So like, you know, another way to do this is to have your data management platform span multiple cloud providers. And whenever you need persistence, you use your data management platform. You don't use raw block devices or shared file systems and things. And those data management platforms all include built-in replication. So that is a way to solve it. I'm just not sure that we'll be appealing to everybody. I'm not saying it won't be appealing. I just don't know. That's kind of why I'm like just trying to foster conversation around this right now. Yeah. Yeah, right now we're at a proposal phase, like for this, where we're trying to come up with something workable. Usually what we do is have a design proposal for a couple months where we start with something small that doesn't paint us into a corner and then, you know, go with that and improve on it. So I think that's where we're going to go for that. All right. I think I'm out of time. Yeah. All right. Thanks everybody for coming. I appreciate it.


DN Aquanet is a project aiming to develop genomic tools and indices for use in monitoring and assessing aquatic biodiversity in Europe. These tools will be used to supplement existing methods such as morphological analysis which have limitations in terms of accuracy, cost, and time. The project will also create a network of experts from various fields to train the next generation of researchers in the use of these tools. Finally, the project will work closely with policy makers, regulators, and other stakeholders to ensure that the tools are implemented into legal frameworks. This article was authored by Florian Lies, Florian Altermat, Agnes Boucher, and others.