This marks our furthest south that we are going to be going in Africa on this trip. This is it. Hi, I'm Lavi and this is Oli. We are attempting a new Guinness World Record to become the youngest pair to circumnavigate the globe by motorcycle. After riding 3000 miles across Europe, we are now ready to explore the roads of North Africa. Click the subscribe button to follow our journey around the world and let the adventure begin. Thank you to all around the world trip. And we are here in the village of Palmarin in Senegal and we are in front of the ocean and there's a shipwreck behind us just here. Very cool. So we've been staying at this place right here which is called Nane and we had a little hut for the last two days here and this place is a beautiful paradise full of palm trees and it's got a swimming pool and it's right in front of the ocean so it's been really nice to recoup and recharge after some hot days on the bike. Last night we had the first time rain and a thunderstorm here in Senegal which was really nice and refreshing. I think it was the first rain since Spain which is pretty crazy. Yeah exactly. This week after an eight month dry season the rainy season is just beginning here so let's hope it's not too crazy when we hit the road. So let me show you guys where we're heading today. So we are down here in Palmarin just at the mouth of the Saloon Delta and today we are going to be making our way all the way back up here to Dakar. Yes unfortunately this is as far south as we are going in Senegal. We have our boat for Bumblebee and we must make our way back to Dakar and that was a really expensive shipping so we don't want to miss it. It will be really exciting today for our last ride here in Senegal. Half of the way we will take the motorway actually just to make sure that we get there today. Our navigation says it will take us two and a half hours and for us probably more like six hours so better hit the road let's go. Alright Bumblebee fired up and ready to go. Our final day on the road here in Senegal. Our final day here in Africa on the road because after this we just have to pretty much drive the bike from our accommodation in Dakar to the container port to load Bumblebee into container and on her way to Brazil. Yes of course it's a little bit sad that we have to leave Africa already but it's time for something new. Absolutely and we have a long journey to go. We have the whole world to get around. Exactly I never went to South America so it will be completely new for me and I'm super excited about that. But for today we've got a tiny bit more south to ride actually. We're just heading down to a small village called Differ which is at the very very bottom of this little peninsula and Differ is pretty much the furthest south you can get before you enter the Saloon Delta National Park. So we thought whilst we were down here it was worth driving a couple miles down to Differ to have a little look around check out the park before turning around and making our way back to Dakar. Looks like we have arrived in Differ. Oh this looks like the end of the road for us. So let's go have a look at the Saloon Delta. It's very stinky here. Yeah it smells like fish here really really really strongly like really strongly. I think this is also where the fish is coming in. Anyway let's have a little look around shall we? Okay there's quite a lot of rubbish around here and there's fish scales all over the beach but this is the Saloon Delta in front of us and it is a massive massive area of mangroves and little riverways and this is actually the main river coming through the Saloon River. I think that's what it's called anyway and that's coming out to the ocean this way. So where we are now is right at the end of the land peninsula and the start of this basically start of this national park in front of us. Yeah unfortunately it wasn't possible for us to go across yesterday because the distance is just a little bit too great and where we asked they didn't have a boat so we couldn't really experience the Delta too much They said that we could take kayaks but I think it's a good couple of kilometers just to get over to those mangroves in front and you have to cross this massive river that's flowing out. So I don't think that would have been a good idea. No no no. Instead we just relaxed at the pool. And this marks our furthest south that we are going to be going in Africa on this trip. This is it. So let's turn around and head north then shall we? Exactly. Let's go back to Dakar. There's a lot of people out and about on the street here in Palmarin but there are not very many cars on the road and that's because today is a public holiday and it means that most of the taxis and buses and everything that would usually be crowding the streets most of those are actually not running today so it should be pretty good for us to travel through back to Dakar there shouldn't be that much traffic. Yes! So here's the salt lakes again to our right the little salt pools of Palmarin which weren't so impressive to see from the ground but we had the drone and we flew it up in the air and it was amazing. Yeah and so much nice bird life here on the right and on the left it's so incredible to see. Yeah this whole peninsula is all part of the natural reserve and you can just see how much estuary and mangrove and wetland they have here it's amazing for birds amazing. Yeah but it is a little bit threatened as well by the climate change because the place where we stayed he said that the ocean is claiming more and more from the beach back like every year they can see that they're losing on beach which is pretty crazy to think that maybe in like 10-20 years this place can't exist like this anymore. Same situation where we were in St. Louis and they told us the same that the ocean is coming faster and faster and faster every year. Wow! The horns of all these cows are so impressive hey! So impressive! Wow! So impressive on the Tampelicans! Nice! Look at this area here, it's beautiful. Can you see all the pelicans flying over there in the distance? Yes! Wow! Oh that looks so impressive! Look there's some pelicans. Oh yes! Oh here's one, wow! He looks unreal! Nice! Oh pelicans are amazing birds. Amazing birds! Wow it's so incredibly lush and green in this area look at all these palms! Yeah I don't know if they're farming the palms here for coconuts or if it's natural like that but pretty much the whole area here is full with palms and they're really high. Yeah! It looks super cool! I'm just astounded by how lush and green it is here. Look at it, it's just like bursting with the plant life. Yeah it's incredible. I mean it's really, we haven't driven that far since the desert of Mauritania but I mean look at it! It's just a whole different world. Wow! So cool! And we can see a couple of traditional huts over here as well. There's not that many of them. They're sort of amongst all of the cinder block and concrete buildings but you do see from time to time a little bit of tradition is still alive in the buildings around. Well look guys! There's a couple more vultures over here. Look at this! Wow! Over there too and over there! Oh yeah and over there as well! Oh nice! Hello guys! Oh he's going! Wow they're so big! Nice birds! Wow!  I think they're youngsters though. These ones yeah, they're not as big as the ones we saw on our first day coming in. Look how big they are! They are massive! Please don't attack me guys! But yeah they're such impressive birds! Here he goes! Hop hop hop! Whoa! Super cool!  Incredible! And there's another one going off. Look how they're flying around now.  I tell you what, I am loving how clear these streets are at the moment. Everything just feels so peaceful. I think I love it even more than you do. Yeah all these old cars, old stinky cars is so nice. When they're not on the road. Yeah it's a perfect day for a long ride. So just keep in mind if there's a public holiday take your motorbike and go out. All right it looks like we are coming up to the payage. And I saw the sign that it was 500 francs for a motorbike. So if it really is 500 francs that's not too bad. Let's see. Good train. Bonjour, ça va? Ça va. Merci. Are we paying after? He's giving you a card and then I think we give the card to the person on the other side. And then we pay our fees. Weee payage! Yeah it's time to see what the Senegalese highway looks like. Here we go, look at this.  And okay it's a little bit cheating but to be fair we took the small roads going down so to get back straight down this highway. Yes and you see so many baobabs here on the right and on the left. That's true, that's true. Super nice. That is really nice. Yeah Senegal truly is the land of the Baobab really. It's time to put on my cruise control to 60 miles an hour. We're just stopping at a air, a rest area here on the payage but there is no shade here at all. So we're going to set up our good friend the parasol. Thanks Chris. Because guys it's so hot. It's so incredibly hot. So it looks like we're coming up to another payage barrier here. So I'm not sure if we're going to be charged and then have to start a new one. What's going to happen? So what do I have to do here? Give her the card I reckon. Hello, bonjour. Okay, merci. So in the end that was a 23 km section of payage and it cost us 500 francs which is about 75 cents. It certainly doesn't break the bank to take the payage here in Senegal. I'm really happy about that. Yeah, because I remember when we went through France and when you take the payages through France that can really add up to a lot of money. Yes, it's true. Salut, bonjour. Merci. Merci beaucoup. Au revoir. Alright, second toll booth, second payage. This time we actually paid on entry and we paid 400 CFA which again is like 60-70 cents. So yeah, a beautiful road and not very expensive at all. So we're getting closer to Dakar now and we've got payage station number 3. Not this one, oh that one. I was so close to the right one. And then at the last moment it looked to me like it was not open. I went to the wrong one.  Good luck exercise for you now. Should I pull you or are you going to be alright? No, I think I can just about make it. Oh, I don't think that you can make it because it's still a long way actually. Yeah, that's fine. Perfect. Okay, let's see. Bonjour, ça va? This one is 200 CFA. Perfect. Merci beaucoup, au revoir. Nice. So many broken down cars here on the side of the road. Oh no, 200 CFA is not too bad, hey? That's really cheap. That's like about 30 cents. So we're now 13 miles away from getting back to our room in Dakar. About 20-25 minutes left to go. Yeah, I'm super excited to see how busy the city is because like we said today is a public holiday and in the small villages we haven't seen any cars or anything so let's see how it looks in Dakar. Yeah, because when we left Dakar I can tell you it was sure busy. Stuck in the traffic of Dakar this is an incredibly busy city so it would be nice if that traffic was reduced just a little. So this is the end of the payage and the start of the normal roads. And the start of the traffic. That's right. At the moment it's difficult to see if there's less people on the road or not. I'm not convinced yet. We're nearing our accommodation now and you know what, the streets are actually way less busy at the moment. It is quite refreshing. I mean there's still cars but it's no way near as crazy as it was before but we just tried to stop at the supermarket to pick up some lunch and dinner and the supermarket was packed full of people and we had to give up actually on that. They all had the same idea. Yeah, everybody's feasting today I think so they're all going to the supermarket to grab their feasting supplies. Okay, stop. We have to turn here. Alright, this is us. Cool. Here we go. Back at our accommodation. Back home. Alright. Here we go. Good evening guys. We made it, happy and alive. Back to the car. Back to the capital. Yes, in the end we went through four payage barriers and it ended up totaling 1,700 CFA which is about two euro sixty so not too bad and a pretty easy way back to the city. Yeah, it was really nice to see more of Senegal, to see some wildlife to see some local villages some small towns. I'm really happy that we did this little loop here. Of course we're a little bit sad that we couldn't go further down south but we have a different mission. Yes, we have just one more mission left here in Senegal so in the next episode we will be dropping off Bumblebee at the container port to send her to South America. Yes, so this will be the last episode here in North Africa and the last episode of season 2 so make sure you join us for this one. So that's it from us today. We did at the end 106 miles and 17 kilometers. We hope you enjoyed the episode. If so, please give us a thumbs up subscribe to the channel share the video with your friends and family comments below. We will see you next time.


I'm not going into the house until I get $100. Is that what we're gonna do, me and my crew? You know what to do, get in with the fall? Do anybody ever call you Hannah Montana? House is beautiful, man. This is the first time I've ever picked up some alcohol from this restaurant. He says that the shrimp cocktail does not contain alcohol. So unfortunately, I have to get your ID. Diddycat, I'm back today with another DoorDance video. Huge shout out to everybody tuning in. If you want to subscribe, make sure you smash that subscribe button. Give me a thumbs up and do not skip the ad. Today is February 10th, and we're going to try something different today. So my business partner left early today because I told you guys in previous videos that sometimes when things go wrong or we feel like that we hit our goal, we try to make some adjustments. So today's adjustment is we're going to separate today and she actually went out earlier. So you guys want to make sure you stay tuned throughout the video. So I can tell you guys how I went for her. But we have our first order. Walmart in store pickup, three orders, nine items, 8.6 miles for 17, 25. And as you guys can see, we're here already at Walmigatee, baby. So it's time to get busy. I'll see you guys in the beginning. So let's go. We are here at Walmigatee, baby. We're back like we never left. Hopefully they got it together. Hopefully we got the right person up there because sometimes it takes a little bit longer than usual. But let's see if we got somebody up here. I bet she got us together already. Let's find out. How you doing? Order for Jerome. I knew you got us together. That's what I'm talking about. I was just sending the camera. I know she got us together already. Well, I appreciate you. Have a good day. After doing the mapping, guess what? It's only going to take us 11 minutes to get this done. That's what I'm talking about, baby. Let's get to this money. Number one, let's get it done, baby. Just look at the front door. I'm just up right here. Right on the chair. Hit him with that photo, y'all already know all. Mop. Open the door, y'all. Step. Drop off order number two. What to do? I'm going to leave it right here. Because I don't want to hit that screen. I'm going to hit it. Step back. Hit him with that photo, y'all already know all. Bop. Doorway out. Bop. Let's get it done, baby. Drop it right here. Hit him with that photo, y'all already know all. Bop. Doorway out. Bop. Skip it. Order number two, what to do? Tropical smoothie, two items, 2.8 miles for 675. Let's drive. We are here, baby. Time to get busy. There, bop. This stuff's right here? This stuff's right here? Yes, it is. Let's get you this money. Let's go. We are here to drop off this tropical smoothie, baby. This is the way to do it, select what you want to do. Bop. Hit him with that photo, y'all already know all. Bop. Knock on the door. Bop. Skip it. Order number three, get with me, baby. Halisco's Mexican restaurant, five items, 5.2 miles for 925. Let's drive. This is actually my first time. This one contains alcohol. This is the first time I've ever picked up some alcohol from this restaurant before. So I'm gonna show you guys how it goes. And I hope you guys are out there dashing and making money because it's been going terrible for me. It's been about literally two hours and I'm at, before this order. I am at $24.50. So I've been making like 12, 25 an hour pretty much right now, which is kind of resembling the other day when I was making $13 an hour. But I see you guys, when we get to the restaurant, make sure you smash that subscribe button, give me a thumbs up, don't skip the ads, and hopefully we get this bag. Let's go. You guys will not believe this. So I'm here at Halisco's Mexican restaurant. I was looking at the order to see exactly what kind of alcohol it's gonna be. And they made it alcohol because it says shrimp cocktail. Please, please tell me. Dore Dash, y'all need to get it together. I don't know what's going on, but I don't know. Maybe I could be wrong. It could be something different than I'm used to. So we're gonna see what happens when we get in there. Either way, go, let's go. Baby, we're actually early. So hopefully they get us together so. Hello, how are you doing? I'm gonna have a pickup for Tammy G. Okay, thank you. Tammy. Hey, I have a question for you. What is it? So, does the shrimp cocktail have alcohol in it or no? No, I don't know why. Just because it says cocktail, I think that they put like right here. Got the pizza. Yeah, I don't know. Thank you very much. So you have a great afternoon. So I spoke with the guy in Halisco's Mexican restaurant and he says that the shrimp cocktail does not contain alcohol. I think that DoorDash automatically says it contains alcohol because of the word cocktail in there, which, hey, come on, man. Y'all need to do, look, get it together. Hi there. How you doing, Tammy? I'm good, thank you. So unfortunately, I have to get your ID for some reason. Oh, okay. It's because I used to call the cars, probably. No, I think it's because it says cocktail on there. So. Yeah, but I didn't order a cocktail. I know it is. Did you order a cocktail? Yeah, it says shrimp cocktail, so I don't know. A shrimp cocktail. A shrimp cocktail. And then I asked the guy. I didn't think about it.  Well, at least they're trying to not serve my nurse. That's pretty cool. But I mean, it's kind of bad also because if you didn't have your ID, then what? I took the picture in. Yeah, I don't know. Yeah, that's all right. But I need to do what you gotta do. You got to confiscate the cocktail. Well, then you make sure they give you the whole 952. Yeah, I hope they give you more than that. It's freaking hilarious. So do you have to return the cocktail Yeah, I think that I will have to You have to take my shrimp cocktail then? I will have to return it. Yeah. That's the one thing I'm really looking forward to. Go simple. There you go, ma'am. I'll make no sense. And we'll do this for the first one. Thank you, sir. Thank you guys. Have a great afternoon. You have a safe day. You too. So as you guys just saw, we literally had to put in all her identification information. That was crazy. Just because it said cocktail on it. But on the bright side, instead of getting 9.25, we got 12.25. Order number four. We in the door. Avocado Express, two items, 2.3 miles for 6.75. We are already driving. Let's get it. We are here, baby. Avocado Express. Time to get busy. Thank you very much. You have a good one. Let's go. Just like that, we're here to draw up this Avocado Express, baby. He said, leave it at the door. So that's exactly what we're going to do.  They got this very, very nice. Chocolate like this. You know what that for? Oh, doorbell pop. Get it. Order number five. Stay alive. Let's drive. We on the strive, but not really. Burger King, three miles, $6.29. Let's get bent. Let's go. Baby, hope they got us together. For some reason, Burger King usually doesn't have us together. I don't know why. That's why I called the, you know, let's get to what the Burger King, you know what I'm saying? Do y'all understand me? I have a pickup for Alexis G. I don't know if people look at me so drunk. This is crazy. I tell you. One second to get the coke for you. All right, thank you. All right, thank you. You're a good one. All right, it's your turn, man. It's your turn. We're here to drop this Burger King, baby. You didn't say leave it at the door. This is the second one. We're trying to go bop, bop. Hit them with the photo. Mop, doorbell pop. Scaff. Order number six. We in the mix. Let's get rich. Royal Thai, three items, 4.2 miles to 750. Get with me. We in here, baby. Hope they got us together. They always get us together every time. You know what I'm saying, man? Let's get this together right now. Yes, ma'am. Thank you very much. You have a great afternoon. So guys, I have come to a conclusion that guess what? I am not going in the house until I get $100. I'm just not going. Sometimes you gotta just put that pressure on yourself. I'm not going in until I get $100. I usually stop at two o'clock to edit the video. It is now 12.42 and we are at about $50. I'm taking the Royal Thai order right now, but I'm not stopping until I get at least get a hundred.   I know it's a big jump, but that's what I'm going for. Hey, shoot for the moon. Shoot for the stars and on the moon. We gotta do what we gotta do. But if you guys put the word out and share it on your social medias and all that, just smash the subscribe button. Tell somebody else to smash the subscribe button.  Get everybody's phone to put that subscribe button so we can go up 2022, it's your year, baby. They said, leave it at the door. So that's exactly what we're gonna do. This house is beautiful, man. I really, I love this house, man. This thing is very, very nice. I like the garage, the black doors. I'm a big fan of black doors. It just looks nice and clean and real modern. It's very nice. Maybe I'll drop it on there. I don't want that phone on. I don't want it on. Let's get it. Order number seven thing, God for His Blessings. Chick-fil-A four items, 0.8 miles for $5.75. Let's drive. Together, baby. I see they moved the little stand. It was a little stand right here with deliveries, but right there. I see I saw through the window. Man, I see it. That's right. I see it in there. Man, I see it in there. Together. All right, let's go. Why are you guys moving from out there? Because now the doors are being opened more. And then it gets closed faster. Oh, okay. That's smart. You're crazy, you're crazy. Yeah, you too. Let's get it. The Chick-fil-A bag, bag. I have to take it to Michael. This is gold. Take it to the custom framing counter in the back of the store. I don't come in here very often.  I have no idea what I'm doing. Do you guys shop at Michael's? Are you into crafting and all this stuff? That's a terrible order. Look at that. 6.3 miles for 426. Absolutely. Hello. I have a delivery for Hannah. Do anybody ever call you Hannah Montana? No? Yes. Oh, okay. I have a couple of people, but usually my name is Hannah Banana. Oh, Hannah Banana. Oh, that's a good one too. Thank you. You have a great one. Order number eight. We trying to get this cake. Macalice Deli, three items, 4.7 miles for 725. Let's drive. We are here, baby. Macalice Deli, get in my belly. There you go, sir. Thank you. You're welcome. Oh, thank you, sir. Thank you for picking up. Yes, ma'am. For Aaron D. Oh, right here, ma'am. Perfect, huh? Uh, just a dime for you. Alrighty. Thank you. Thank you very much. So you have a great day. You're too, man. Thank you. We are here to drop this Macalice Deli, get in my belly, baby. It says handed to him, so that's exactly what I'm going to do. I've been in here a few times before, so I'm going to open this door. Hello. I had a delivery for Aaron. Aaron D. There you go. Thank you. Thank you. You have a great one. Order number nine. We on the grind to the end of time. So let's shine. Wendy's three items, 1.6 miles for 575. Let's drive. We actually had to go through the drive through on this one. I don't know why. That's why I don't like coming to these wings that often because a lot of times you have to come through the drive through. Honestly, to be honest, I've never even went in the lobby of this place before, but they handed somebody their food. So we're probably up next. Yes, we are. Let's get this money. I can see this right. Okay. Pick up for Dania. Yes. All right. Thank you. You have a good one. Oh, that's good. Have a good day. All right, you too. Let's get it. Order number 10, we getting it in. Wendy's 4.1 miles for 1079. We on the grind to the end of time. So let's shine. Let's go. We have to go back to the drive through again. As you guys can see. Drive through, baby. Did you want one on the other bag as well? Yes, sir. I just don't want them to think I was in their food, man, that's all. I get you. All right. Thank you, sir. We got to get us together because I don't want that to unclose. They got 40 nuggets. They about to go crazy. Thank you very much. You have a good one. This Wendy's baby is here. Look at the boy. That's exactly what we're going to do. Me and my crew. You know what to do. Get in with the fall. Pop. Do it, pal. My goodness. It is now 2.42 what it do. We haven't received the order since 2 o'clock. Well, we had one order. It was terrible. But either way, God told you guys before, I'm not going into the house until I get $100. We are now at 87.58. So we need 12.42 what it do in order for us to get this hunting. And when it must we get that, we're going to get busy. But until then, I hope you smash that subscribe button, gave me a thumbs up and did not skip the ad. Let's get back to this bag. 2,000 years late. We finally got an order after switching locations, baby. Even after we switched it still took a little time because it is now 2.58. So let's skate. Chipotle four items, 3.4 miles for 675. Let's drive. I hear to jump off this Chipotle, baby. It says leave it at the door. So that's exactly what we're going to do. Drop it like this. All right, hit him with that photo. Fuck. Y'all already know it all? Doorbell smack. Let's get it. So we just dropped off the Chipotle, baby. Instead of 675. Look how much we got. Wamski 875 we own the drive. We need one more order. All we need is $3.67 and we're going to hit our $100 mark. So let's see what our last order is going to be. And then at the end of the video, well, in a little bit, in a second here, well, it's going to be a second for you guys. We're going to meet up with my business partner and we're going to see how much she got. But I don't know how crazy she went, but I know she was going nuts. She told me about a couple orders and it was real. It was looking like a real session. So you guys are going to make sure you stay tuned for that. If you are subscribed, make sure you use my subscribe button. Give me a thumbs up. One more thing. Do not skip the ad so we can get this bag. Let's go. 2,000 years later. So I finally got my last order. It is now 337. Last time I touched you guys, it was 258. We dropped that last order off and we haven't gotten an order since. This is the first order I've got since then. And this is the bad order too. Burger King, one mile, one item for 375. Let's drive. I'm pulling in right now. I can't wait to get this done. Let's go. Big B. If the worst, Burger King. Yeah. Oh, they got us together. So we can get there and be done. Hello. This is critical. I can't even believe I'm doing this. But I need to do it. So I can get this honey dog to get up on the work. How you doing? I'm gonna have a pick up for Drake Q. Thank you. Thank you. You have a great day. You too. Thank you. I'm here at the apartment building as you guys can see, right? It says call me. I called him twice. No answer.  It's already for 375. So I, you know, I ain't gonna need to go play games with it. I'm gonna leave it by that door. I see somebody walking. Maybe it's him right here. Let's see. I'm gonna leave it on for you guys. Delivery for Door Dash? No? All right, dude, point. Let me call him. One more good time. Please leave your message for two. Yes, I'm gonna call it one more time. Just so y'all know if it's real. I called him on, this is my fourth time calling. Please leave your message for two, two, four, three. Do me a favor, guys, and comment below and let me know what you were doing in this situation. He has not answered the phone and said call him. I called him literally four times. You guys saw me call him too. I called him two times before that too. So, and I know this building on over because it's never over. Anytime I've ever came here. So I think his phone may be turned off or something. Please leave your message for two, two, three, four. One, two, three, four, five, six, seven, eight, nine, 10, 10. And just like that, it is the end of the video. I hope you guys enjoyed it. I hope you spent the subscribe and I hope you gave me a thumbs up and I hope that you did not skip those ads. Today we got to that bag. I got, first off, let's rewind a little bit. My last two hours were terrible. I only got one order in two hours. And the one order I did get was Burger King, one item, one mile for 375. You guys saw me do that and it was going to her apartment, which was terrible. And the dude didn't answer the phone. So guess what I had to do? I had to leave this stuff right on out there.  Which, comment below and let me know what you would have did in the situation. But I ended up with $100.08. We got bit, baby. Now, we're going to talk about what my business partner did. She did some whole next level stuff. She had one door dash order, one ship order, five Instacart orders. And I'm going to tell you guys my opinion at the end of the video. Well, after this, we're going to go with the first door dash order. Door dash order number one, six items, 2.8 miles for 675. She was in drive. Order number two was a ship order, 12 items for $8.46. She had enough money to pay the rent. Order number one, two items, 8.8 miles for 14.04. She was in the dough. Then order number two, what to do? 13 items, 10.6 miles for 21, 2106. She got rich. Then she had 22 items, 8.9 miles for 21, 66. Then the fourth one was 12 items, 5.3 miles for 16, 99. She was on the grind to the end of time. They did add on to that one too. 35 items, 5.1 miles for $40.17. That was a legend. That was a good one. That was a real good one. Then last but not least, order number five of the Instacart. 43 items, 15.5 miles for 25, 60 foes. She was already in the dough. You already know, so let's go. Now, this is my opinion. Well, it's not an opinion, it's the proofing facts. The facts are right here, and I just gave them to you. Instacart has been booming. Today, Instacart was booming. Door dash in Uber Eats was going very slow because it took me from, I would say I started off, I got my first order at like a 9.30, and then I had to go all the way to like 3.30. 3.45 ish. Get understand this to make $100. And then the ship, the ship is not, I don't know if you guys' areas are different, but ship doesn't pop up that much here.  So we don't really do them often, but all in all, guess how much we got? $2.67.99, we's gonna grind to the end of time. So tomorrow, we're gonna try something different tomorrow. She did it today. We're gonna do it together tomorrow. Tomorrow, I already get up at 5.55 in the morning. I'm gonna get up, instead of me working out, what I'm gonna do is get dressed and everything, and we're gonna shoot straight out. I'm gonna do my workout later because we gotta get to this money. Money comes before the muscle. That's what my god called the muscle saying. He's saying it's money and muscle, but money comes before the muscle. So we gotta get to this money so we can try to get off early because honestly guys, we're trying to move towards more, trying to get off early, especially in the summertime when it's gonna be nice outside.  You wanna try to get this money and get on with today. But tomorrow, we're gonna get up early. We're gonna go out. We're gonna get these orders in and we're gonna get busy. I'm gonna see if we can get 200 before two o'clock. Do y'all think that is possible? If we start at 7.30, if we get out there around 7.30, starting in these orders, two o'clock, two hundred, we run it. But, that's the end of the video there. Comment below, let me know what you think is gonna happen. And if you aren't subscribed, make sure you smash that subscribe button. Give me a thumbs up and do not skip them ads. And I told you this already. Don't keep on skipping them ads. Tomorrow, we get to the bang. Tomorrow, I'm a matter of fact, I wanna get 200 by one. I'm pushing it an hour up. Is this gonna happen or not? I don't know if you wanna stay tuned, you wanna make sure and lock into that video tomorrow. I'll see you guys on the next one. We going, we growing, we flowing. You already know it, it's DDK and I'm on my way.


Okay, so I'll quickly start with secure computation. Let's say we have two parties with secret inputs who want to compute a joint function of the inputs. Then they can run the secure party computation protocol and at the end of which both parties will get the output. And the security will say that corrupted party learns no more than the output. This notion of not learning anything more than the output is captured by this real world idle world simulation based definition, which says that we have this idle world in which the parties do not talk to each other. But instead, there's a trusted party and both parties will send their input to this trusted party who computes the output and gives it to both the parties. It is clear that in this model, any corrupted party cannot learn anything beyond the output and this is what we want to capture in the real world. So we say that for any real world adversary attacking the protocol, there exists a corresponding adversary in the idle world which can launch the same attack. And this adversary is called the simulator. So what do we know about this setting? We know that every function can be securely computed just under standard assumptions. But this setting is too restrictive. It just talks about standalone setting in which just a single execution of the protocol is running in isolation. In reality, the situation is much more complex. There are many, many parties who are running many, many executions of this protocol talking arbitrarily. To make matters worse, any subset of these parties can be corrupt and we want to ensure security in this setting. So can we actually extend the beautiful results of the single execution to this highly complex concurrent setting? There has been a long list of work to understand and answer this fundamental question who work in various different settings. So before I go any forward, it is important to exactly tell you what model we will be working in. So we will focus on concurrent security in the plain model. That is without any trust assumptions like CRS, random molecule, et cetera. And using standard simulation based security definition. At this point, I would like to point out that they have a long list of work which relax either of these two conditions. That is, they either work with trust assumptions such as CRS, public infrastructure, tamper proof hardware, et cetera. Or they relax the security notion to something weaker such as input indistinguishable security, super polynomial time simulation or multiple ideal query model. I would like to emphasize that we do not work in any of these models and we focus on the plain model using standard simulation based security definition. Okay, so what do we know about this model? To begin with, I would like to point out a long list of impossibility results which rule out a large class of functionalities in this concurrent setting. These results are in fact very strong and they show explicit attacks which an adversary can launch in the real world which are impossible to do in the ideal world. So what do we know about the positive side? We just know of positive results for very special functionalities such as zero knowledge, single input setting and that's it. Or for restrictive classes such as bounded concurrency. I would like to point out that these positive results are very limited and moreover, all of these results can be obtained by just using black box simulation. So the central goal of this work is to develop new techniques to expand these class of special functionalities which can be realized in the concurrent setting. Towards this goal, let me begin by looking at this special functionality of concurrent blind signatures. Whether this functionality can be realized in the concurrent setting or not is open so far.  And this was cited as a major motivation for relaxed notions of security such as game-based security and also using trust assumptions. It is clear from this impossibility result that any approach to concurrently secure blind signatures has to essentially rely on some kind of non-black box simulation technique. So the next question is obvious. Do we know of any such non-black box simulation technique in the fully concurrent setting? Until recently, the answer was no. Then in 2013, Goyal gave a new protocol for concurrent zero knowledge with a non-black box and straight line simulator. So in this work, we ask the following question. Does there exist a non-black box approach to secure concurrent computation? And since I'm giving this talk, it's obvious that the answer to this question is yes. So the next question is, how powerful is this approach? What all can we do from this approach? Can we expand the class of realizable functionalities? Can we actually get concurrent blind signatures? And also, can we get better protocols for the functionality which we already know? So the main technical contribution of our work is, we give the first protocol for concurrent secure computation which has a straight line non-black box simulator. And this technique helps us get a host of new results. So let me go back to the case of concurrent blind signatures and for this, we give the first protocol which realizes this in the plain model. Contrast this with the impossibility result which I just told you using black box simulation techniques. So this together with the previous result gives us the first natural example of a functionality which can be realized using non-black box simulation and is impossible with black box simulation. This blind signatures is a very special case of a general main result which is as follows. So Goyal gave what is known as the bounded pseudoentropic conjecture and we resolve this conjecture in the affirmative. More precisely, we gave a protocol for all functionalities which satisfy bounded pseudoentropic condition. What this condition is, I will tell you in a bit, but let's move on. So the round complexity of a protocol will just be a polynomial in the security parameter and we assume the existence of collision resistant hash functions and constant rounds semi-honest OT. Moreover, we subsume all the existing positive results for the concurrent computation which has zero knowledge and the single input setting. Finally, the last application of our technique is to improve the round complexity of existing protocols. The protocols which were given in Goyal 12 had round complexity polynomial in the security parameter as well as this parameter D which depended on the input length. We improve this to be just a polynomial in the security parameter and independent of the length of the on its party inputs. Moreover, it was known that any such improvement in the round complexity that is making it independent of the input length has to employ some non-black box simulation technique. So let me describe now what is this bounded pseudo entropy condition for which we obtain our positive result. At a very high level, here we try to understand the information which the adversary gets to learn in the ideal world. Very roughly, it says that total computational entropy of the information learned by the adversary across all the concurrent sessions via outputs from the trust and functionality is a priori bounded. Let me begin with a oversimplified version of this condition and I will fix it later. Okay, so in the ideal world for any functionality, let's say you have some input vector for the adversary. Then what this says is, regardless of the on its party inputs, the total number of possible output vectors which the adversary can get from the trusted functionality are bounded in number. Let me explain this further. So let's say we have these two parties and on its party and the adversary and I is the input vector of the adversary. Then what this says is, for this input vector I, there exists a fixed set S of I of bounded size, such that no matter what the on its party input vector is, the corresponding output will lie in this set and this is true for all possible on its party input vectors. Now let me tell you why this is not sufficient and we need to fix this later. So let us consider the example of pseudo random functions. Here the on its party holds a PRF key K and the adversary will in each session query this PRF on different inputs of its choice. That is in the ideal world, it gets to learn the output of the PRF on inputs of its choice. It seems like since this key is a bounded size, that is lambda bits, they can be at most with the by lambda possible output vectors. So this satisfies the boundaries of the entropy condition which I told you before. But this functionality is impossible to realize in the plane model. So we need to make it stronger and the way we make it stronger is that we add the condition that along with this output vectors being bounded in number, we also want them to be efficiently testable. What does this mean? This means that the set S is a bounded size and there exists this efficient algorithm T which will accept everything which is inside the set and reject everything else. These two conditions together at a high level can be thought of as the adversary learning only bounded amount of pseudo entropy in the ideal world. To make things clearer, let me tell you a few examples which satisfy this bounded pseudo entropy condition. Let me begin with the simplest case of concrete zero knowledge. In this, the adversary is a very fire and holds a list of NP statements and the prover holds the NP statements along with its witnesses. And the ideal functionality just takes the witnesses and tells the output to the adversary. So since the prover is honest, in each session, the adversary just learns the bit one. So here intuitively, the adversary is not learning much. So it seems to satisfy the bounded pseudo entropy condition and in fact it does. Adversary can learn a unique output vector which is just the all ones vector and this is also efficiently testable. Now moving on to a bit more complicated example is that of bounded concurrency. In this, there is a prior rebound on the number of sessions which the adversary can run in the ideal world. So let's say the input vectors of the adversary is y one up till y n where n is bounded and it can learn all these outputs in these sessions. So since the adversary learns only a bounded amount of outputs, it is clear that he can only learn a bounded amount of information. So all possible output vectors are all vectors of this bounded length n and this is clearly efficiently testable. So both of these examples of zero knowledge and bounded concurrency could also be achieved before but let's now look at a new example which is of concurrent blind signatures which we did not know before. In this, we have a signer and a user. Signer holds the signing key and the user has a message and in the ideal world, the ideal functionality just computes a signature and gives it to the user and the signer has no output. It is clear that this satisfies blindness since signer does not see the message to be signed and if the underlying scheme is un-forgible, it also has un-forgibility property. That is, the user cannot fake any signatures. Okay, so in the concurrent setting, the user can learn signatures on many messages of its choice. So here clearly, the adversary can learn unbounded amount of information because the number of sessions are unbounded and hence he gets to learn signatures of unbounded number of messages and it is not clear why this bound should want to be conditioned to be satisfied. What we show is if the underlying signature scheme is unique, then bound is going to be conditioned or BPC is satisfied. By uniqueness, I mean that given the public key, for any message, there is just a unique signature which verifies. So though the adversary gets to learn unbounded number of outputs, each output is information theoretically fixed by the input and these output vectors are also testable by just using the verification algorithm of the signature scheme. So this shows why concurrent bind signatures satisfies the boundless pseudoentropy condition and speaking at a high level, any functionality in the ideal world which does not try to add too much pseudoentropy into the outputs should be realizable by our condition. Here's a summary of our results. So we give a new non-blackbox technique for concurrent secure computation which lets us get a positive result for all functionalities with satisfy boundless pseudoentropy condition and this has many applications such as realizing new functionalities which were not known before. Blind signatures is one such functionality which I just told you, another one is this verifiable random functions and some more and the other one is to improve the parameters for existing functionalities such as the round complexity for the functionalities in the single input setting. In the rest of the talk, I will just focus on two-party secure computation in the concurrent setting and here the adversary can run an unbounded number of sessions with the honest party and it also controls the scheduling of the messages. So the first question is, okay, sorry, the roadmap. I'll just begin by describing the challenges in the concurrent simulation followed by how we resolve these challenges using our bounded pseudoentropy condition. So the first question is, how do we design a concurrently secure protocol? A standard approach is to apply the GMW paradigm which is that you start with some semi-onus secure protocol and try to somehow compile it with the appropriate kind of concurrent zero knowledge along with each message and prove it security. To prove security of such a protocol, you in fact need what is known as non-malable concurrent ZK or simulation sound concurrent ZK. So what is this? It says that the proofs given by the adversary should remain sound even when it is given many different copies of a simulated proofs by the simulator. In our work, what we need is a simulation sound concurrent ZK with a straight line simulation technique. And the only candidate known which works in the fully concurrent setting is that of concurrent zero knowledge by Goel. The first challenge is to construct a simulation sound version of Goel's concurrent zero knowledge. In our work, we show that if we combine the non-blackbox technique of Goel along with robust concurrent non-malable commitments, we can get a simulation sound concurrent ZK with non-blackbox simulation which has a straight line simulation which is very critical for the rest of our work. I will not go into the third details of this construction. You can look at the paper for that. Let me move on. So going back to the GMW paradigm, we wanted to compile a semi-honest protocol with the ZK protocol. So earlier, all the known protocols for simulation sound concurrent zero knowledge which we need were blackbox and had a Rewinding-based simulator. This Rewinding was shown to be the major bottleneck to get concurrent MPC. Now what we have is, we have a simulation sound concurrent ZK with a straight line simulation. That is, there is just no Rewinding. So are we already done? That is, can we get concurrent MPC for actually all functionalities? But this is clearly impossible from the long list of impossibility results which we already know. So what are we missing? To understand this, we need to go deeper into how these non-blackbox simulation techniques work. Speaking at a very high level, this is what happens. We have a simulator talking with the adversary who's trying to give, so the adversary is proving some statement to the simulator. And there's also this ideal functionality which the simulator talks to to get outputs and other things. So adversary, so simulator begins by sending a commitment of a machine to the adversary. Followed by some other messages or other sessions. In between, it talks to the ideal functionality to get some outputs and continues the simulation at the end of which, the adversary sends a long random challenge R. The goal of the simulator is to somehow commit to a machine M in the beginning itself which is able to regenerate this whole transcript or can predict R. So how do we do this? Does committing to the code of the simulator as well as the adversary suffice? The answer is no. Because to be able to regenerate this transcript, you also need the information which you learn from the ideal functionality. But the code of the ideal functionality is not available and it cannot commit to that code. Note that this does not prove to be a problem in the case of zero knowledge because there is no ideal functionality and hence the simulator is able to complete the simulation by just committing to the code of itself and the adversary. So this is the problem. How do we commit to a code which can regenerate the transcript? The idea is we need to somehow communicate the information learned from the ideal functionality through inputs to the machine M, okay? But now we have another problem. The number of sessions is unbounded since we are in the fully concurrent setting. So the amount, so the length of the input which needs to be passed on is of unbounded length. So can we allow any inputs of unbounded length? The answer is no. We cannot allow arbitrary inputs of unbounded length as this would break soundness. Why is that? An adversarial prover later on can encode this random challenge R from an honest verifier into the input to the machine M and really break soundness. So what do we do? So here our bounded pseudoentropy condition comes to our rescue which said that outputs learned by the adversary have bounded pseudoentropy. So though this output vector might be of unbounded length since the number of sessions are unbounded, the total amount of information or the entropy in this output vector is bounded. So what we allow is, we allow inputs of unbounded length but only of bounded pseudoentropy which is ensured by the testability condition I told you earlier. And this would preserve soundness. This is because now an adversarial prover cannot encode this long random challenge which has very high entropy into something which has bounded pseudoentropy. So the high level the idea is that during simulation we need to communicate this information learned from the trusted functionality to this machine M via inputs. Bounded pseudoentropy condition tells us that this information can only have bounded pseudoentropy and hence we can pass in output vector of unbounded length still preserving soundness. We need some more ideas to make whole this thing work such as the oracle techniques from Deng, Goel and Sahay and you can look at the paper for more details. Finally, the conclusion. So in this work we show a new non-black box technique for secure concurrent computation and then we achieve a positive result for all functionalities with satisfied bounded pseudoentropy condition. And this has us realize new functionalities and also improve the parameters of existing functionalities. Thank you.


This right here is a tap sensor. It's used to check for vibrations or taps that could be made by a knock or something as simple as a very light shape. Just before we start I want to say that if this video helped you out there's so many more coming onto the channel and there's ones that we've made before so all you have to do is hit that subscription button, like the video and if it does help you out please do watch until the end. If there's any other sensors you want to see me review or break down or teach just let me know in the comments. This tap sensor isn't one that we typically see around the house like the things we've reviewed previously on this channel but a cool project you could do with this is set it up on a door or a cabinet with all your hidden snacks that you want to hide from everyone and make some sort of secret knock pattern that when it activates it will unlock the door using the sensor or you can put it on something that should never move. If it ever moves this sensor will feel that vibration and let you know right away and you could set it up with an alarm or something cool like that. There are a lot of different versions of this specific sensor right here but they're all very similar because of the way they work which we're going to go over in a sec so just make sure that when you're following along that you set up your pins with your little cables the way that it's meant for your board and not for mine if you have a different model but the code and everything like that should still work for your model even if it's not the same as mine. It's going to be a little bit hard for me to show you exactly how this works but inside this plastic piece right here there's a spring. One side is holding the spring and the other side the spring is loosened the air to fling around. Now where it flings around there's a metal contact patch either inside the spring or at the bottom of it or at the top somewhere that when the spring moves it will touch one of those pieces of metal closing the electrical circuit and letting electricity flow through the spring from one metal prong which I can show you actually on the back right here so if you look right here under this piece of plastic you'll see two pieces of metal let me focus it up here so right here there's one piece of metal and there's one right there and then the spring connects them both when it vibrates and touches one of the pads so using that spring we're able to detect vibrations because the spring will always return back to its straight and natural position as long as nothing's broken in there meaning that this switch will turn on and off with vibrations. Now this will not sense sensitivity but you can sense other things like how long the spring has been touching the pad or maybe a pattern which is what I was saying earlier that if you knock and then you wait two seconds and you start knocking again you can detect those patterns of knocks and vibrations and then turn it into something to unlock a door to whatever you would like. All right so to connect it up we're going to need a couple of different things we're going to need the sensor itself we're going to need an Arduino it doesn't matter what type of Arduino you use a replica is what I'm using you can use other types of boards the code should work for all of them you're just going to have to set it up a little bit differently but these are fine Arduino micro mega whatever the other variations are called those work too then you got some cables that you need I got three with three different colors and then the sensor itself as I said I also have a cable here which I'm going to use to plug in everything to my computer so I can upload the code to the board so before we do that let's grab our Arduino let's grab our sensor and let's connect it all up on the sensor itself as you saw earlier there was three pins I'm going to move it up here one more time there's three pins we have an s pin a plus and a minus plus and minus is our power and on the plus and then minus is our ground and s is our signal that's the one that's going to tell the board all the information we need yours if it's not the same exact one as mine might have a different order so just make sure that you connect yours properly for your board otherwise everything's the same so for us we're going to be plugging in the black in the minus the red in the middle on the plus and then the yellow on the s it's also important to look at what kind of power your board can take or you're sorry your sensor can take this one can take both five volts and three volts I want to use three volts just to be safe so there we go we plug it in our black we're going to plug it into our Arduino black should be ground as always red we're going to plug into three volts and yellow I'm going to plug into seven seven on the digital line on digital PWM that's what they're called so once that's plugged in we can plug it into our Arduino just make sure everything's good you don't want to burn your little sensor we're going to plug that into the computer right there and now we can see the lights turn on on our board and we have some power so then we're going to open up our Arduino editor here and the first thing we want to do is declare our variables so we're going to go and declare an integer and call it pin and make that equal to seven because that's where we plugged in our yellow cable on the Arduino board that's our signal cable that's where our information will be coming from then we have to declare another one and that's going to be tap status you can call this whatever you want I just called it tap status so I remember what it is then we have to go into our setup and we have to do two things first we have to tell it that seven which is the number we picked earlier is going to be an input pin so we're going to put the pin and then we're going to put the word input in capitals that lets the program know that seven will be our input pin so everything should be pushed to there then we need to do something called serial we need to tell it to begin and then we're just going to give it a frequency to run on 9600 so when we print out messages we can read them like if we want to every time we tap we can have the sensor tell us that it's being tapped with actual English words instead of random numbers then we can go straight into our loop and this is where we have like the functional stuff so we're going to first take our tap status and we're going to set equal to digital read which is us reading the pen digital read and inside of that we're going to put our pin number seven because as we declare to appear pin mode pin input we're going to read from an input pin on number seven it might look a little confusing but it makes it a lot more organized instead of putting seven here and seven here because then when you want to change it you can just go to the top and change it once instead of all these different places so we did that now we can go and let's do what we said earlier actually let's go and make a little if statement and then inside of here we're going to say tap status and then under that we can do serial dot print line and inside of there we can say a message like now one thing that's important to know is with this specific sensor on is off and off is on it's not that weird you can try it like this but then it's always going to say tap until you tap and then it's never going to say tap so what we're going to do is we're just going to put this little exclamation point which just reverses the input so we can go and save that if you'd like I'm not going to save it let's make sure in the tools at the top here that we have our type of board selected so just make sure you selected whatever board you're using and then you have to go and select the ports that it's connected to if you don't know you can try them all usually it takes two minutes so we're going to do that and we're going to go and open up our serial monitor we're going to upload this I'm not going to save that one more time we're going to open up our serial monitor and now it shouldn't say anything now when we tap our sensor it should say I've been tapped so let's try it out we didn't see anything let's try one more time on the side here there we go I need to be a little bit harder on this because it's not connected to anything but maybe I could just smack it lightly along along the table here see that you'll see that it does catch it like four or five times per tap so if I do it again here see how it catches it like five six times that's normal because the spring does touch the contact patch for a couple of loops before it let's go again that's your loop right here so you could do a couple different things like you can go and make your loop have a little delay in it so we can delay here with like a really tiny number like this let's say 50 milliseconds let's upload that but what I'd rather do is get an average number does it usually show five or six taps and then and then in your code you can write it for that five to six taps to be equal to one because it's normal that it's going to stick to it for a little bit of time so let's actually clean this here let's tap it one more time oh and now I broke it now it's not working at all see that so let's get rid of our delay and instead whenever you're sensing for taps you can you can figure out a smart way to to consider six or five taps at once to be equal to one if you want to do a pattern if you just want to sense it tap in general it really doesn't matter how many there are as long as there's more than one or I'm sorry more than zero so there's a taps one more time let's go open up our serial monitor let's clear that there we go now we're working again and you see now it's two now it's five now it's three now it's four so it seems like the harder I hit it usually the more it is because that spring kind of stays for the tiniest amount of time on that little platform but other than that that's pretty much it that's how you use a tap sensor if you enjoyed the video if it helped you out please do give it a like and check out the next video that's going to be coming out either tomorrow or whatever the next day is on another sensor if you have any sensors you want me to look at please do let me know I'm going to run out of sensors at one point and I need the help from you guys to find more


Good afternoon. Hey everybody, nice to be here in Texas where everything is big including the Expo Hall. Sorry I'm a little late. I think I should have taken an Uber across this place. So welcome, welcome. I'm from Texas. I grew up in California but I was born here so it's really cool to be presenting here today at the OpenStack Summit. If you're wondering who I am, if you don't know me yet, I'm Clint Byram. I work for IBM and IBM Cloud. I'm a cloud architect which 10 years ago I would have been a developer lead but now we get to call me an architect which is cool. I also think it's funny that I architect amorphous blobs of mist, right? I'm also a huge open source aficionado. I used to work for Canonical. I've always been a Debian user since almost since Debian existed and I love Ubuntu as well and I haven't run Windows in at least 12 years. So get ready for some hippie talk, right? So the question now is why am I here? I love OpenStack. I really do. I've been involved for a couple years and I've watched it grow and really has turned into this amazing movement which we're all a part of now. I also hate complexity. I really, really hate complexity. I think some people do love it, whether they'll admit it or not. It's fun, you know, when you get to the top of the Jenga Tower and it sort of resembles some sort of sculpture but I really, I really don't like it. I want things to be as simple as possible and the reason is because I love to scale. Who else loves scaling things? Awesome. Who has absolutely failed at scaling things? The hands actually went higher, which I think is indicative of the fact that we've all tried.  The main thing that I think is hard to scale is people and I personally have experienced sort of the magic and the power of continuous delivery and I want to make sure that I do whatever I can to help you and save your team from the stress of the traditional release cycle. So, hopefully we can talk a little bit about that and learn. But the question also might be why are you here? Who else hates complexity? All right, great. Well, then we can agree. Anybody dealing with their hands up can just go because we're going to talk about keeping things simple today. I imagine all of us have failed with OpenStack. I know I have. The stable release end of life before you could even get it out the door to your users. The stable release didn't end of life before you could get it out to your users, but then the next release came along and now you have to upgrade. And you spent at least three months in panic. And then we've all been scaled to death and it's just a part of running clouds. So, the question is why am I qualified to tell you how to do any of these things? The answer is I'm not. But I'm willing to stand up here and at least put my word on it that I have some ideas that you can take home with you and hopefully you and your team can leave here happier. But what am I trying to do? I'm building a big cloud. We want to build a big public cloud for IBM. And right now we just have a few nodes. We're trying to prove a few things. But we believe that we have the right mix to really build something big without destroying our team and having a good time doing it and hopefully make a lot of money for IBM as well. So, we're aiming at a thousand nodes in a region soon. And we have some hardware. We haven't tried it yet, but we have good ideas for it. And eventually we'd like to do things like run 10,000 computes in one region. And that's something I know very few orgs have done. And we want to join that very short list. And the biggest thing is I'm working with a really amazing distributed team. So, it's not just me. Most of these ideas are a combination of ideas from you out there in the community, from my team, and from books and other things. So, it's important to collaborate. But how are we going to do it? Right? That's a big cloud. And does anybody, is there anybody who's willing to say that they believe I can just install Mitaka right now? It's going to do it. No confidence. It's okay. I don't believe it either. But we're not running Mitaka. We're running Newton. And when Newton is finished, we're going to be running Okana. And the idea is that we're actually going to be running whatever's coming from the community. So, we're going to run from master. The way we're going to do it, we're going to measure things. If you don't measure things, I think in the past I've run stops in various ways. But my favorite times were when I actually had real numbers, something I could actually look at and say, here's an experiment that we ran. And here's something we can do to actually improve it. And most importantly, we work upstream. You know, you don't see any documentaries about the story tale of the salmon going downstream. Why? It's really easy. You just go. But getting upstream from downstream is really hard. And I see it all the time. You're running a giant set of patches. You're running whatever it takes to get live on the stable release. And then it's time to influence the next release. And that is just you're going to kick and fight and scream just to get here to the summit, get your ATC badge maybe, get into that one session, and then they run at a time. We don't want you to feel that way here in OpenStack. We want everybody to be able to operate upstream. And that's a big goal of ours. So not only do we want to run upstream, but we want to improve the infrastructure so that everybody can have a chance to run their cloud right off upstream, have their tests influence the developers, and actually make a difference without the stress of that lag. Before I go on, if you have questions, there are a couple of mics, just please just run up to them, shout at me, throw things if I don't see you, and we can have a conversation.  And I get that because it does sound a little bit crazy. We're so used to upstream makes a release, and then we start to test it, and we see if it's going to work, and we put our changes on top of it. That cycle is built into IT. We don't feel that, but when you're trying to push the limits, especially with an open source product where you can absolutely influence it at every single level, you're missing something. And so I put this quote here, software delivers no revenue until it's in the hands of the users. And this seems obvious, but the stress of a release is something I would like to say goodbye to. It doesn't mean we're not going to have stressful jobs, but could we maybe spread it out so that maybe every day we spend 20 minutes stressed out instead of every three months, we end up burning three people out and have to go recruit more because we all stress out over the release. So the idea is you need to get stronger. You need to start small, move small changes. And the difference in continuous delivery, right, is the change is going to come in from upstream, and you're going to try to move it into your testing. And you need to have a lot of testing. But the reality is most commits will improve things. We hope. And the ones that don't, you should be able to test and filter for. And the amount of effort that you would put into a stable release process is not small, right? And we think it's the same amount, maybe even less, to go ahead and build automated testing. You're not alone in this though. OpenStack wants this to happen. And we have infrastructure that's trying to prevent bad changes from landing. Of course it doesn't. The gate is broken quite often. Poor Mr. Dague, sorry, Ston Dague, is probably right now fixing the gate, honestly. But with more contribution, it's gotten more stable and more stable and there's more tooling around it. And now we're getting to a point where you can consume what comes from upstream and absolutely run it on your servers. But you will have to have your own extensive testing. But this is still a lower risk proposition, especially if you factor in the cost of stress for your team. One of the things about stress is that you can decompress from it to a point. We want you to have a chance to do that. If you release every day, you have the whole rest of the day to decompress versus building it all up in a big bang release. So your question might be, how do we get started? Well, if you read the book that I refer to in the quote, you need to start with transparency. Can all your developers see what your ops teams are doing to all of your servers? Do you agree with me that that's a good idea? If you don't, I understand. It's controversial, okay? But the idea is that your developers should know what's going on. Your ops teams should know what's going on. Some people call this DevOps. I call it sanity. We should just watch what's going on in our product. Watch what we're pushing out to our users. And from that, we can actually collaborate. So you need to cut back on manual changes for that. I see manual changes as they're like Twinkies. If you eat too much of them, you won't be able to get on a plane and come to the summit. So the first step, once you've got transparency, and this is just simple, go set up Jenkins and never again run Puppet or Ansible or Chef. I don't care what tool you use. By yourself. Run it through Jenkins. Let everybody see the log of every run. Obviously, you have to SSH sometimes, but the idea is to minimize it. Get to a point where the robots do the work so that you can collaborate. You can actually say, look at this log. Look what happened in the last Ansible run. Look what exploded. Here's your commit. Let's fix this. Let's work together. Nobody has to work on it alone. And a big thing here I throw in there is be here. And don't just be here to hear talks. Be in the sessions if you can be. There's a big split going on. Be at both events if you have to, but be here to influence this open source product. Because if you're not, this happens quite often. Things get done in a way that may not support your use case. But what are we doing again? This is all nice future thinking forward thinking. But what am I doing? I'm building a big cloud. I said we're going to do some science. We need to do experiments. We need some data. The first problem, I don't have a thousand nodes. I don't. Well, I might soon, but I don't right now. What we had to do, we came up with a cool idea. Let's make a few nodes pretend to be a thousand. There's something really cool in Nova called the fake driver. You're trying to have a no-op driver. Let's just test and see if the control plane could even handle that. What did we expect? Quite frankly, we expected epic failure. Things should explode. Rabbit MQ. That's toast. My SQL honestly isn't very busy, but we expected all these things. And so we set up this environment. I think somebody's clicker. Excuse me. So we set up an emulation test bed, and I don't want to thank some members of the team, Jose Castanos and Xu Sang and their names are on another slide. They set up this environment for me and replicated my own results.  So instead of having a thousand servers tied up for a week, well, we had three. And in fact, eventually we can boil this down into a couple of VMs and put it into our automated test suite. And then if anything breaks this, right, now we have some visibility into why. So we ran Docker. We put emulated nodes. If you see the word Quasar, that's just a code name for an open stack. And we got graphs. Gotta have graphs, right? And they told us things. What you see here is that when we ran with four hosts with a thousand dockers or eight hosts, things were mostly the same. But there's a weird dip in the middle. When we tried to run with 400, 800 or 1600 fake compute hosts, it actually got slower with 800 and faster with 1600. This is really kind of weird. But this, you know, it took us a while to debug that. So we started looking in and we measured more. What we found was that, that RabbitMQ was eating up gigs and gigs and gigs of memory.  Turn it off. Memory usage goes through the floor. Everything smooths out. And we actually proved that we can run a thousand compute nodes on a single RabbitMQ server that isn't all that big. Maybe 25 cores. I know. That sounds huge, doesn't it? Thank you for laughing at that. But it actually is possible. And in fact, the only reason not to do that is for failure, domain isolation. It's not because Rabbit can't handle it. Rabbit is a fantastically scalable, scale-up product. The problem is when it explodes, does OpenStack handle that well? Probably not. But this is just one example of something we were able to address with our configuration. And then we started going deeper. What else is breaking? And we found, okay, we want to have that failure domain isolation. Is anybody running Cells Version 1 in here? I am not surprised to not see many, if any, hands. Do people know what Cells Version 1 is? Okay. Well, let's talk about it. This is Cells Version 1. You group compute nodes and you have a master control plane that ends up cascading down into multiple cells. This was developed by Rackspace, which is one of the larger OpenStack clouds that exists. The problem is it's not tested in the gate. And it doesn't work right with Neutron. And it's generally considered to be your on your own when you go to Cells, right? But I mean, who bought into OpenStack thinking, well, you know, I don't need it to scale, right? We absolutely need it to scale. And we're getting to the point now. It's mature enough. We should expect that scale to be built in. But unfortunately, it's not. So we're sad pandas because of Cells Version 1. But there are developers on the case. And they've come up with something called Cells Version 2. And the way Cells Version 2 works is simple. This master control plane goes ahead and just talks directly to those back-end servers. That's not the interesting part of Cells Version 2. That's cool. It's under development. What's really interesting, what makes me a happy panda, is that I'm in the gate. So now every commit from my CD cloud, as Cells Version 2 gets better, my Cells Version 2 gets better. So I would expect everybody to start running Cells Version 2. It should be built in. The scale is built in. But at this point, it's not clear whether you will even land this in Newton. It might land. Some of it will. But by uncoupling from the release cycle, we're actually able to say it lands when we put the effort in to land it. And we get to take advantage of the fact that other community members are in the same boat. They want built-in scale. But we get it.  Has anybody heard of OVN? That's open virtual networking. So if you're running ML2 and DVR, which is distributed virtual router, you may be finding that your Python agents are very, very, very busy.  Some other very smart people, way smarter than me, discovered this as well. And they went back to an old axiom, which I'm trying to find a shirt printed on this, which is nobody argues with C. They rewrote it all in C.   Interface directly with OVS. No more Python code doing any of the agent work. Instantly better scale. Now, they also went a little crazy and started using the Linux kernel for a lot of things. So until you're running, I think, Linux 4.6, you won't be able to take advantage of silly things like floating IPs or load balancers of service. However, you can run master Linux kernel as well, right? Once you embrace the idea of, like, we're going to automate and test everything. We're going to send our robots out into our testing cluster, and we're going to trust them to tell us when things are broken. Running off of the latest Linux kernel doesn't sound so crazy.  So while we're here at the summit, you know, let's talk more about that. And there's more. You know, why should we even do cells, right? There are a number of technologies out there, not developed in OpenStack, that we could take advantage of. And because we have a cloud that runs off master, we can develop these features and test them in our cloud and use them and prove them at scale immediately. And I'd like to try that. This is all future thinking. So join me if you're interested in trying any of these things.  This is something that YouTube developed and they gave to the world, right? Just like OpenStack. It's an open source project. Why doesn't OpenStack just use it? Kafka is a scalable queue, so it should be much more scalable than Rabbit. There's a whole host of ways for nodes to start talking together. GRPC, Thrift, ZeroMQ. Some of these are being tried. There is actually a ZeroMQ driver that's getting very, very good that might eliminate the need for cells entirely. And there's also work on using things like ZooKeeper, Console and CD to reduce the amount of traffic on the message bus. One of the biggest things, if you're watching those 25 cores of Rabbit disappear before your very eyes, about eight of those cores when you're running 1,000 compute nodes is just all the compute nodes saying, I'm here and I have six gigs of RAM. I'm here and I have four gigs of RAM. Well, when you get 1,000 nodes doing that constantly over an inefficient RPC bus, that gets slow. But if they were able to just push that into a service discovery, there's no polling, there's no message bus, it just happens. So these are some ideas that we think we can push at scale. And what about Neutron? We talked about OVN. There's also some fun stuff happening that we're doing because we have a master cloud such as VTEP. So doing VTEP on the switch so that we can actually have networking between bare metal nodes and VMs, how amazing would that be? Right? Those are things that are coming down the pipe. But if you're not on master, you're going to have to wait. So I just want to thank Mike Dorman, did a great post on cells so I can understand it. Go check that out at this link. And also Josex Sanis-Huikeng Shu Tao, and as they like to be called the X team at IBM for helping me with those experiments and also letting me steal their slides so I could share them all with you. That's all I have today, but I definitely want to answer your questions if you have comments or you're interested in talking about this more. We have a little more time here, but thank you very much for your time. We contribute everything we do in OpenStack or the appropriate upstream repository. So we use Ursula to deploy, which is a set of Ansible script developed by Bluebox. You might have heard IBM purchased Bluebox last year, and we're building on top of that for our deployment. And then our automation is mostly just Tempest, Rally, Cloud Cafe, all the things, and we try to do things as close to how OpenStack's current testing infrastructure works. And if it doesn't work that way, then we try to make people explain to us why it doesn't work that way. And if they think it should, then we change upstream. Can you say a little bit more about what you used to fake all the compute nodes for the scale testing with the control plane? Yeah. So we used, this is again, we were copying something that's actually in the gate of OpenStack, which is the fake driver in Nova. So at a detailed level, what we did was we built a container, and we told Ansible it's a real server, and we made it configure it exactly like a Nova compute node that we would run. And then we told Docker to make 1,000 of them. The only change was we changed the configuration from the livevert driver to the fake driver. And we told it to not talk to IP tables because we didn't want to test the scale of things like that. And we told it not to talk to, not to wait for Neutron because we took Neutron out of the loop just so that we could test just the pounding of Nova compute on that message bus. Those scripts actually are not upstream, so your question reminds me that I actually need to get those pushed into Ursula. Do we have any other questions? Oh, this is all, this was in the future. I didn't tell you guys. No, we've solved some of these things, but this is all stuff that we're working on and it is in flight right now. To be perfectly frank, the talk that I submitted six months ago was planning on talking about what we might do. And now I'm more talking about what we absolutely are doing right now. So you might notice a little skew between the description in it, but I think this is more interesting because it's actually happening. All right. Thank you very much, everyone. Enjoy the rest of your fine Texas day.