See if anybody turns up the audio down on that and the audio up on that and but there's a Why is it always that the microphone volume is too low every time I do any of this the microphone volume is too low? everybody's Ears out probably that looks okay Yeah, I don't get a proper microphone, which I had all set up on the other computer so frustrating There's no microphones. They just crack all of them bad. Well, if you're gonna at least hear me I can just turn the music off on the game Seems pretty substantial But okay, I can look with that. Okay. Good Well, I might as well get started We're just It's just you now We'll do some stuff and This will be my practice although I have done this before so I didn't need to practice Well, you need to practice you don't need to see my OBS setup That's going Okay All right human resource machine. It's a programming game. I don't know. So have you seen this game before? It's programming in Assembler really But the concepts are also similar that I think it's interesting for 1,000 people and a fun way to learn some of the basics of programming so my jobs are Well, the programming is done via this drag and drop interface Drag commands into this area to build a program. Yes, I can do that take it from the inbox move it to the outbox So just like real programs. It's always taking input creating output Yes, not enough stuff in the outbox expected three items Because it's not looping Okay, so you have not played the game before cool. Well, at least you'll be interested to listen Okay, so it puts one thing from the inbox and put it in the outbox, but that's just a command. He wants all three things So I stop And I've got to repeat the commands three times. I assume Pick up the inbox take it to the outbox Pick up the inbox take it to the outbox inbox inbox Outbox outbox So these do relate to commands that we might have in our programming languages read line print line See in see out depending on the programming language um But the main concept here is that it's sequential And that you have to but one of the cool concepts that I like when you learn it this way Is that that if you're doing that, um on a tutorial or something that would have been saved for a loops concept, but here it just makes it clear that You've just got to do it three times and even later on when you get some more facilities All you're doing is finding an easier way to say Do it three times. Okay. What is your next? Oh, I got promoted to the next mail room on the screen still a little bit too Big I see Yeah, I couldn't even get the screen resolution right on the screen All right bright future of course new assignment Ah, so now I've got the jump which will help me To do the exact same thing without having to repeat it over and over Grabbing each thing this time. He's asked me to please do it with only three commands And the jump I get to tell it where I want to jump back to So the sequencing here is super clear. It's got an arrow every time the sequencing just doesn't go it goes out of line So unsprisingly I just use the brand new thing The little green arrow is my Program counter telling me which step is being run We get something similar to that when we do our programming with the break points and we step one bit of time Oh, let's walk faster Easy peasy Okay, the copy floor So the cool thing here is that we've introduced now effectively memory um There's a reason I lay out my memory in In number of examples I do as a grid because I find it's Intuitive for me, but I think one of the reasons it's intuitive for me is I Played this game. Okay. What does he want this time? Oh, no the inbox conveyor system is completely broken Doesn't mean we get to take a break from work So ignoring the inbox just send through the following three letters to the outbox. So here we're we're Getting introduced to memory by not having to do any manipulation of it. We're just using the ones that are in there b u and g So it helps me understand the copy from now copy from is What would copy from be that's the use of a variable in Other programming languages I'd have a programming language. I'd have a variable named for they're just labeling each memory slot by number, but Uh, we would label it with a name So the memory the variable would be called for and we're just using that variable Let's copy from nought to outbox And copy from To out now, but they're already here somehow they already got here I'm sure we're going to see how to do that continue scramble handler What's next All right, good. So the conveyor's back. We've got a smaller piece of memory. There's three slots in this memory if you remember from Last week we were talking about bits and bytes and whatever each of these little boxes down here on the floor Slots on the floor I'd count that as a byte Of memory it holds a single character by the looks of it and a character needs eight bits So we can say we got three bytes worth of memory here Data went collate itself. What do they want me to do this time Grab the first two things from the inbox and drop them in the outbox in the reverse order And then repeat repeat repeat. So I get four and eight and they have to go out as eight and four J and u and they have to go out as u and j So i'm going to have to grab it from the inbox Put it somewhere on the floor, which is the copy too And then I can grab the next thing from the inbox and immediately send it through to the outbox Because After I've got four out of the way eight is the next thing to go to the outbox And luckily for me the next thing I want is already on the floor waiting for me So I can copy from that exact same location But I can use any location I want but that's the one I've gone with and put that in the outbox So that'll make sure that Four goes on the floor eight goes on the outbox floor goes on the outbox And then I just need to make sure that whole thing repeats over and over So that I can do however many things are in the inbox Let's go So that's us assigning a Value to a variable so that copy to zero would be the same as Zero equals read line or something Looks to be working And you'll notice when we put something new on the floor And we take something out of the floor It's still there and when we put something new on the floor it just wipes out the old thing That's also how memory operates in a computer when you read from memory It doesn't take the thing away. It's not gone. It's a copy And so in this case they're analogy with the floor and bits of paper isn't a perfect one because you would normally put them down To pick them up they would go They would disappear when you pick them up but that's the reason they chose a copy to operator instead of a put down operator or a pick up operator because How computers work and they're trying to do an analogy for a computer Oh, no cutscene. I like your cutscene You can't hear what's saying They have funny cutscenes for whatever reason I personally just want to skip past these and get back to more puzzles, but I guess this is what makes it a game Alrighty Let's do this next one rainy summer All right, it's welcome to my personal rain cloud. I was never very good at math Since I have only three fingers on each hand. Whoa. Oh, we just do But I hear you don't actually need to know very much about math to complete these assignments good So we've just got a new instruction, which is add now when you're adding You can't just like add you have to add two things So this add command must add something. What is it adding? It adds the contents of a tile on the floor to whatever you're currently holding So I've got to be holding something when I call the add And then I got to tell it which spot on the floor and it'll add those two things together This also is just like how computers operate inside when you get to the cpu operation for an ad it always says add well it will often say add the The a current register to a value from the memory So that's what we're really doing here. We're adding a special register Which is me the thing i'm holding to one of the values in in memory If you can imagine other ways to do add you might make add need You got to tell it two spots on the floor and it'll add them together Or it might just say you got to hold two things and it'll add them together But in this case it's gone with the one you're holding and the spot on the floor So Did you tell me what to do? Yes, he did add them for each two things add them together and put the result in the outbox All right, that's an easy. So I'll grab one from the inbox that'll and pop it on the floor And always choose position zero Then I can pick up from the inbox And as long as I add to position zero, I'll be adding to the thing I just picked up So this is now like saying read read a variable read a value X equals value read a value X equals X plus the value I'm holding And then I should be holding the new Output I should be holding the addition so I can drop it in the outbox And then I can jump because on the floor Way seven add them together I'm holding nine which is the ad gets added to the outbox Okay, so I put the new one down and that's what I wanted right Had them together and put the result in the outbox. Yes To be doing okay. Let's hurry it up Oh, you don't need the volume anymore. It's probably messing with you. All right. So again, what as a programming person that Appreciate about this is that they're showing me how to program actually The system they're using is one that does exist on real computer processors And obviously it's different to what we do with our higher level language with processing but this The concepts of sequencing and having a memory slot and putting things in memory slots and the way you construct What things you have to keep in a memory slot versus which things that you can just process straight away that's all stuff that They're the kind of implicit skills that you pick up as you do more programming. So this kind of practice is cool Let's do the sidetrack Who am I I'm the male dude. It's optional areas high performing employees only it sounds like me Oh, okay We need to make some changes 100% performance performance we value with extra scrutiny. I can get bonus points from here For each thing in the inbox triple it And outbox the result. Ah, well, that this is easy enough once I pick something up and copy it to the floor I'll be holding a value and that value be on the floor So I can add them And then the original value will still be on the floor so I can add them And that's tripling So it's another little programmers trick when you need to multiply by three You can instead add the same thing three times Why would a programmer ever want to do that? Because multiplication can be slow on a computer whereas addition can be quick So sometimes if we're doing smaller multiplications, we'll choose to add instead These kinds of super fast numerical algorithms are important the most famous one would be the Is it the square root algorithm used in doom or something? The John Carmack wrote to make it fast enough so he could do his 3d graphics on a whatever it was 486 Okay So we grab it we copy it to the floor so that we can add it because you've we've got to add between What's in your hands and what's on the floor? Let me add That one let me add again That one Then we take that to the outbox Then we jump and we keep just doing that over and over and I think that will triple each thing on the inbox Yep So another fun thing that I like about this program is that it pushes you into these little programmer tricks that Assembler program, I mean in this case this is it's just emulating assembly programming right not not the type of programming We do which is a high level programming And you're learning the tricks that assembly programmers have to learn along the way To get it done, but you do them each in a little really constrained way So that you can You know like a puzzle like at any game where you get to a harder level and you just keep trying it over and over until you get it But when you do get it what you've actually got is a programmer's trick And so by the end of the game you've built up a ton of programmer tricks one by one Okay, so what I'm going to do is I'm going to call that experiment done We've got half an hour. Well, not half an hour probably 15 minutes because it took me so long to get sorted Uh, but we got half an hour of that experiment done and we'll see if I said 23 minutes, so we'll see if um YouTube keeps this and all that kind of stuff and then I'll chat again in the lectures to see what people want to do In the future. Are there any questions or things on a chat that I should deal with before I disappear? Because the lag I think I wait I want to see my head going back and forth on the preview And I know it's caught up Okay. All right. Thank you very much and I will catch you around sometime


Good morning everyone, I hope it's very exciting, you all have been hearing about AI, deep processions and today I would like to just take you through some of the daily hurdles that we all, as designers, as product owners, we encounter on a daily basis. So the topic is about design depth and I know most of you know about it, it was coined by Ward Cunningham, he's an agile practitioner and it was initially coined around technical depth and people borrowed it for design as well. So it's good that our last session ended with a case study on depth related issues, you know. So this is again connected with depth and we'll all allow Q-cressels and Q-cressels make you feel accomplished, right? So same way, in projects we are all living in a very constrained world. So there also we allow to get some Q-cressels, there are always pressure from all the sites in terms of time, cost and scope, everything, you know, it's under full pressure. So you skip many things and what happens is you started forgetting about long-term consequences. Just like we take depth and start a business without proper thought, you'll end up in deep trouble, right? So same thing happens in design and technical world as well. So what design depth is? So design depth is all about accumulated imperfections because we skip some of the initial design decisions that we have taken, right? So it happens, you have actually wonderful design in first place and then you, as you progress in the product, you skip many things, you miss many things and then that accumulated over a period of time and it becomes a very costly affair later to fix those. So that's the design depth. So how it will impact your product? So it will start creeping in slowly. You will start a slow decline in your product metrics like, you know, new people onboarding, the conversion rate, you know, you will start seeing people edition your product quickly, uninstalling the app. As it progress, these things get noticeable and it will start, as you just ignore these design issues, this will start compounding and your products trust this actually getting affected. And then people will start that you are unprofessional, you know. So all these things, then other bad thing is, you know, some people will start doing work around bad design things that you have taken and they get used to it. When you fix it with a good design principle, they get so used to it, it's very difficult to change themselves. So it's good to, you know, so just to tell you, in the product maturity cycle from a functional product, reliable, usable, pleasurable, you know, the design depth comes in between a certain stage. It's not about totally bad design product. It's not about, you know, something you haven't really started designing. So once you have some design in place, you started missing it and then, you know, it's accumulated over time. It's about the imperfections generated after a freshly designed project. So having a well-designed product is a prerequisite for design depth issues. Okay, when actually exploring this, I just, you know, try to spot myself for some of the design issues and one of my friend's start-ups, I mean, a lot of our colleagues and friends will have start-ups. I just looked at some of them. I just noticed this is from one screen. I have seen one rounded corner buttons, a button with soft edge, button with sharp edge. It's all about different personalities, right? I mean, so I don't know, when you ask a designer to design or a developer to develop a new screen, they don't know which one to follow.  And you ignore it. It's actually live product. People are using it. And one thing I've noticed is when I tried to warn some of these product owners, they feel like, I'm getting business, things are working fine, then why should I, you know, it's actually, I'll tell you how difficult it is to tackle this later.  It's okay. Sorry. So that's good. You heard again. Okay. So, you know, so, but I feel when you make your design perfect. That's good. You heard again. Oh, no. Okay. So you want me to change the mic, but I feel when you make your design perfect. It's exciting. No, no problem. It happens. Yeah. So, okay. So, you know, what I feel is they might be having some business and traction around it, but they may be missing a big audience who care about design. Right. So it's not just like this thing. And, and there is one more thing I wanted to bring your notice is like you make minimum viable products. Right. Minimum viable product doesn't care about design so much. But if you actually forget about this at a later point of time and you just carry it with the minimum viable product to a lovable product, then there's a big problem. You have to be very careful about it.  It's not very easy to, you know, take care about 27 pixel gap and this little pixels and ensure that you are programmed to, you know, take care of all these things unless you have a proper design system in place or proper component library in place because at bulk you tend to skip all this. Okay. So, okay. These are there in general, but three things which I have noticed is number one, as developers, as techies, we just ignore design, you know, the little aspects of design and we focus on our technical stuff. I think in India, we are all techies more. We don't care about the users or the end customers, but just keep in mind end customers value such things a lot. And the second thing is project constraints. Yeah, I talked about it. And the third thing, which is more important, which happened to us, that's why we said from our trenches, you know, as designers, we miss some of the trends. We miss some of the insights that we are supposed to have it in the first place. And what happens with that is, I mean, I'll talk about one of our projects where it happened to our team. And as designers, I don't know, it should never happen. Okay. So I'll talk about that project a little later, but how to manage this, you know, when you have springs, when you have, you know, things, you make sure you have some time to fix all this design issues as part of new features, along with the new features that you plan, right? So make sure you have allotted some time and prioritized which is easily fixable and have high impact. And you can ignore which is like low, you know, impactful and it's very tough once you can ignore it and do it later. Okay. So how to minimize it? One thing is as a company or as a product owner, there should be a push from the top to focus on the design. You know Airbnb and some of the portal makes the difference, right? The owner itself is a designer. The founder itself is a designer. That makes a big difference when you have a push from the top. And make sure you have a live design system in place. Otherwise, I told you about those small pixels. You don't think anyone can manage without a design system or a component library to take care of such small things. Then make sure they adhere to the process, you know, don't just do the way they like. Don't just make sure the design is part of the process. And do periodic reviews against the system. There is one more thing against the system and against the trends. That's what happened to us. I mean, it's not like, you know, I'll just, okay, so, yeah, this is one of the screen that we have delivered to our customer. The customer was a fintech customer who was into asset management portfolio from US. And it's a long project that we have been doing, right? So people have been working on this project for a while. It's around one and a half years. We build the initial design and just continuing with the design. Till one point, one of our customers' customer sent an email to him. This looks like six-year-old design, four-year-old. It's happened a while ago, okay? And do you guys can spot anything bad about this? Can you? This is a responsive version, and this is a desktop version, sorry. That's okay. Yeah, I agree.  Any more? White space. Good one. So any big issues? Yeah, the button space. Button space. You should want to write? Yeah, I agree. Okay. So I agree to all of your point. That's what even our team will think about it. Definitely when you think deeper, you will get different small steps. But just look at what we have come up after we realized. The same screens when we redesigned. Okay. Can you tell us what we have missed in the first design? Can you even tell us what we have missed in the first design? Please. There's actually a lot, right? A lot of difference. But there is a fundamental thing. There is something called conditional disclosure, progressive disclosure, which has taken up a big trend. Have you noticed our Google Groups task screen? Have you noticed Google Groups task screen? When you create a new task, it's a tiny, cute form that's coming up nowadays, right? So when you want to do more about it, like when you want to assign someone, when you want to schedule a time, there are a lot of things to click here and there that will make the form complex. So the thing is when you present the form with a lot of fields in first place, everyone takes a back seat whether to complete it or not. But when you show them the minimum stuff they have to interact with, they will start filling in. When they look around, how do I assign somebody? How do I assign a target date? Then you have things around it. You can always bring it up. So we have missed a trend because we have started this project before this trend started. And we had all the design systems in place, design principles in place, design decisions were all taken well, but unfortunately we have missed the periodic reviews to look at the trend and refactor things in our design. So that's what happened to us. That's why we said it's a lesson learned from one of our trenches and I think I finished it much earlier. Thank you. It will help you to cover up the other. So any questions? I have five minutes on my... Yeah, that's right. That's right. Yeah. In fact, I like one of our earlier design courses, which I did, how UX people should prioritize. You should put a dollar value to everything that you are putting on SNF work. So you typically do this for new features, right? I think as you rightly said, for each design issue, you should put a dollar value and importance in terms of whether this is fixed, will my product get more value? Just like your credit card, if these bills are over to you. Sorry? I think just like your credit card bills, these design debts are over to you. True, true, true. So just like any other debt, if he feels that, yeah, that's a good idea. I think I'm done, if somebody wants to take...


The Navy is investigating an alleged cheating incident at the Charleston Nuclear Power Training Unit in South Carolina. I have cradled a grave responsibility for the Navy's nuclear propulsion program and as this incident evolves my program I take full responsibility for this incident. This is mine to investigate and to correct. I was made aware of this situation yesterday on 3 February when one of our sailors from the Nuclear Power Training Unit in Charleston, South Carolina was offered to compromise his integrity, recognized that this was wrong and reported it to the command. The Naval Nuclear Propulsion Program aggressively focuses on managing problems, whether those are material, operational or personnel problems with the intent of finding and correcting problems while they are still relatively small. From the Defense Media Activity, I'm Petty Officer Jonathan Sunderland.


Okay, so this problem says the following pictures represent solutions that contain weak acid, which we call HA, and its conjugate base, H, are A- Okay, so potentially they have these things in them, and you can see that in the picture Which of the solutions are buffer solutions is the first question, okay? So remember what we have to have in order to have a buffer solution We have to have a mixture of HA and A- its conjugate base, okay? Or the salt of its conjugate base, which the cations aren't being represented in these pictures But anyway, so when we're looking at these different representations In order to have a buffer solution, we have to have this present and this present, okay? So if I look here, I only see HA present So I would say that this is not a buffer solution, okay? But in this case, right, I see HA and A- present So it's a solution that has some of the concentration of HA and some concentration of A- So that would be considered a buffer solution, okay? So let's write it down, so this is non, this is a buffer, and what about the other one? It's also a buffer Yeah, it's also a buffer for the same reason, right? So we see A- and HA both present Okay, the next question asks, well, which of these buffers has the highest buffer capacity? Okay, and do you recall what we said about buffer capacity in our lecture? That the one Higher concentration Yeah, the higher concentration, okay? So we want the one that has equivalent amounts of the acid and its conjugate base are close to equivalent amounts, that gives us a good buffer and the one with the highest concentration of those two things, right? So which one would have the highest buffer capacity? The one in the middle The one in the middle, right? Why? Because if we count, right? One, two, three, four, five, six A-s, one, two, three, four, five, six HAs, right? So six and six and here we have one, two, three, four, one, two, three, four So this one's more concentrated than this one So this has the highest So what does buffer capacity mean? Remember, it's like resistance to pH change, okay? So if I add acid or base, this one will take longer to change the pH than this one would and of course this one wouldn't have any buffer capacity Okay, questions? Okay, go


One way to describe calculus is that it is the mathematics of how things change. So let's take a deeper look at this notion of change. When a quantity changes, we define the change in the quantity to be the difference between the final amount and the initial amount. For example, at the start of a vacation you might have three hundred dollars and at the end you might only have ten dollars. And so the amount that you had changed by ten minus three hundred or minus two hundred ninety dollars. Or maybe you're climbing a mountain. At the start of a climb your elevation is fifty four hundred feet and at the end it is fifty five hundred feet and so your elevation has changed by fifty five hundred where you end up minus fifty four hundred where you started one hundred feet. Before we continue, it'll be worth talking about the grammar of change. How you speak influences how you think. And in mathematics, not speaking precisely leads to not computing precisely. And one of the problems with change is we have to be very careful because there are two slightly different conventions. So we have to choose one. We could either explicitly indicate the sign of the change plus or minus and simply call it a change. Or we can drop the sign and choose an appropriate verb. Since the change has been completed, the verb should always be in the past tense. So in our vacation example, we might say that the amount of money changed by minus two hundred ninety dollars. Or we could say the amount of money decreased by two hundred ninety dollars. And it is vitally important not to mix the two things. If you're going to use an appropriate verb increase or decrease, never, never, never, never, never, never, never, never, never combine that with a sign. Only use the signs if you use the word changed by. Now in addition to the amount of change, how rapidly a change occurs makes a difference. For example, suppose your vacation lasted 20 days. So the amount of money changed by minus two hundred ninety dollars over 20 days. Or minus fourteen point five dollars per day. If that happened, you probably had a good vacation. On the other hand, suppose you lost your wallet ten minutes into your vacation and ended it earlier. Then the amount of money still changed by the same amount minus two hundred ninety dollars. But that change occurred over a period of ten minutes and you lost twenty nine dollars per minute. If that happened, you probably had a bad vacation. Because these amounts represent a ratio of two changes, the amount of money and the amount of time, we call it a rate of change. Well, let's take a look at an example with an actual function. Suppose the height of an object, t seconds after it is thrown, is given by some function. Let's find the rate of change of the object during the first ten seconds of motion. And so if we want to find a change, it's going to be the difference between the final amount and the initial amount. And here's an important idea, how you speak influences how you think. When we're calculating the rate of change, we are talking about amounts of something, but amounts of what? In this case, we're given a formula for the height of the object. So the only thing it would be reasonable to ask about is how the height has changed during those ten seconds. And so we need to know the final amount of height and the initial amount of height. Well, at t equals zero, the height is going to be given by our formula. And we can calculate that to be five hundred meters. Meanwhile, at t equals ten, the height will be two hundred meters. And so this tells us the change in height is final amount, two hundred meters, minus initial amount, five hundred meters, negative three hundred meters. And finally, we want to find the rate of change that's the ratio of two changes. And in this case, one of those changes is this change in height minus three hundred meters. And the other thing that changed was the amount of time. And since we looked at the interval during the first ten seconds of motion, the amount that time changed by was ten seconds. And so our rate of change, our ratio of the changes is minus three hundred meters over ten seconds, and that works out to be minus thirty meters over seconds. Now, just to recap what we did in this problem, we found the value of our height at the start, t equals zero, and at the end, t equals ten. And this allowed us to find the change of our height. And that was going to be the difference between where we were at the end minus where we were at the beginning. We also found the change in t, and that was also end minus beginning. That was ten minus zero. And what this suggests is the following definition, the average rate of change. So remember, definitions are the whole of mathematics, all else is commentary. This is an important thing to remember. So, let F be a function. The average rate of change of F over the interval between A and B is defined as the ratio of the change. Between F of B minus F of A over B minus A. And importantly, be sure to keep those appropriate units. Now, if the universe was consistent, or I was a kind and gentle math teacher, then whenever we wanted an average rate of change, we'd ask for an average rate of change. But the universe isn't consistent, and I am not kind and gentle. And so sometimes when we're looking for an average rate of change, we might not ask for an average rate of change. We sometimes omit the word average. So, while we might want the average rate of change of F over the interval from A to B, this can also be called the rate of change of our function over the interval. Or the rate of change of our function from T equals A to T equals B. And in the special case, if A is equal to zero, we might actually speak of the rate of change during the first B units of T. In fact, we just did. But wait, it gets worse. We sometimes omit the word rate of change. And so we might ask questions like how rapidly did our function change during the first B units, or maybe how quickly was F changing between T equals A and T equals B. And it's important to understand that sometimes we are looking for an average rate of change, but we might not use the word average or rate of change.


Okay, no one. So this is Nissan Leaf and Nissan Leaf is a smart and electric car and like any other smart car it has an app and through the app you can control various features of the car like a setting of your air-conditioned appardo So far the story is pretty boring, but here come the cool twist and the cool twist related to this guy And I'm sure a lot of you recognize him. How many I recognize this guy? Okay, I expect it to be more people, but this is my hand. So there's a few of us familiar with him Really glad to check him out. Security is such an owner of a lot of cool tools And one of the things he's doing is a workshop called Hacking Selfies And in this workshop we teach people basic hacking skills And one of the time we did this workshop one of the participants in the workshop own Nissan Leaf So after the workshop this participant go home and try the things he learned at the workshop on the app for Nissan Leaf and What he found out was that all the requests from the app were totally anonymous without any authentication Meaning in order to perform a request the app is doing all you have to know is the Publicly available data like the car ID, the VIN and you could execute any request the app is doing You can read the full story on Tri-Hunt blog just Google Tri-Hunt Nissan Leaf But basically it means that if the app is able to change the air-conditioned portal You can also do that to any Nissan Leaf car in the world just by knowing its VIN Which is pretty cool when you think about it By the way, don't worry. It's an old story. So I pretty much hope they already fix it But anyway, I'm pretty sure your reaction to this story is something like that Who know how they did such an epic failure and it's not something you do by mistake and I also think that way. I'm also a developer. I'm writing calls for the last 10 years But I want to offer a bit different view on the story and I want to show some compassion to the Nissan Leaf developers and I want to tell you our story at Zaloto what we did with and to explain what I am thinking So as I said, I'm working at Zaloto and at Zaloto we are trying to help people with their technology Me and I'm sure each one of you had a lot of smart devices at your home like Smart cameras, smart TV, laptop, smart printers, mobiles, whatever you name it And you don't always know what to get the most out of it For example, how I can connect my phone to my printer and print from it So we have to try to help people with that and the main thing we are doing to achieve that is with an app And one of the things you can do from the app is content an expert In fast and convenient way and the expert can guide you on how to do side stuff. For example, how to set up your printer So if we'll get back in time early 2015 we started to work on the app and One of the things we asked ourselves was how we are going to authenticate the request from the app after all I don't need to convince you that Authentication is important, but we won't really show how And you're probably thinking why do you have any questions, right? Authentication is simple. Just add social again and that's it. You have authentication. It's not really complex But we didn't want to do that And the reason we didn't want to do that was Because it's a fake user experience. If you add social again to the onboarding flow what the user had to do When you download the app on the store and before we can use the app You can affect the number of users who actually start to use that and we didn't want to affect it We want to have as many users who actually download the app and start using it And you are not the only one who's saying it This is a quote from optimistic. We talked about 56% off now even if the numbers are a lot high from the Actual numbers if it's even if it's only 20% It's still a lot of users and we don't want to lose all those users just because we need authentication and As I said, maybe this was something that the guys of Nice and Leaf had in mind We don't really know what happened there, but maybe they expressed a similar issue and they did not know how to solve it Anyway, we decided we are going to challenge the assumption that Login is essential for mobile app and we are going to find a way to authenticate without authentication and We decided to go for it and I started to work on this project. It was pretty long project It was again two years ago and it took around half a year to find the solution build the backend Build the mobile client, but it's working. It's live in production. This is just a quick demonstration showing that it's actually work It's a graph show with the number of requests or authentication server But the reason I'm here telling you our story is because I think this story is not special to Stiletto I don't think we are the only one who faced this issue who wanted to have authentication without affecting the user experience And I want to share with you how we did it and hopefully it will be relevant to you And I also think that not only it's relevant to mobile It's even more relevant to Internet of Things, whether it is smart refrigerator or smart camera Those are cases that interactive login is not always trivial either because you don't have a UI or because it's real Why I have to enter my Twitter credentials or my Facebook credentials the actual that my smart refrigerator will be able to walk So this is the why and before I explain how and how I did it at Stiletto. I'm going to explain what I want to achieve So if in regular authentication, we are talking about Authenticating the user and then use the user details the user identifier or something that to perform authorization. I want to achieve something else I want to be able to Authenticating the app on the device the app running on the device by some app unique identifier and And then do authorization based on this identifier say this app installation is allowed to this that are allowed to perform this data We do lose some information here because I might be able to say okay This app belong to this user, but I will not be able to say who the user was actually performing the operation But this fit our needs a little and again, I believe this would be relevant to others too So what I'm going to talk about today So as I said we come up with a solution and this solution is based on three protocols Which is open ID digital signature and one time password So I explained each one of those protocol in a very very high level and because of the time limitation and how I use those protocol to implement our solution I stop for questions after each one So in case you did not understand something feel free to come and ask. It's really important to understand the full solution And then I'll do a quick demo. Hopefully it will work and then I discuss two edge cases that Our solution is able to handle So this is the plan and let's start So as I said I started to work on this project Two years ago and when I started to think about how we can do authentication and what exists out there Open they look like a pretty trivial option for this Open ID is a simple identity layer basically a support the code that described how you can perform authentication and She will use our identity and stuff like that and it's not pretty much fit to what we need And the authentication open D is done using some token some strings that you can press and by this you're doing Authentication we will see it in a minute when I explain open ID But the reason I wanted to use open ID is because open ID is widely support meaning No matter what stack we will use in our back end. It's probably has some support for open ID so we have to write a lot of a lot less code and Also, it's widely support. So it's already butter proven. It's already secure and stuff like that. It's pretty important and Also open ID is highly modular and I explained what I mean by highly modular after I explained how open they work so How open ID work and I do now really quick overview of open ID if you're not familiar with it There is a full 40 minute session after later today about open ID So your mother invited to check it out. Open ID is really cool protocol But anyway open ID to talk about three participants or three players and the most important one is the authorization server The position server is the one defined strictly by the protocol or the question response to the server defined in the protocol And here's the one who actually hand during the authentication Except on the transition server We have our server which is the application server during our logic handling our data and we have the device Which running our app or our web app or something like that Now let's say we want to authenticate the user. So the mobile app Initiate an authentication request to the transition server. This is the step when the user actually does the login Enter his Facebook address something that and if this authentication succeed the user will receive a token This token will return to our app and the app can use this token again this string to authenticate the request with the authorization Hello, so if the app can send it to our server And the server can does some sort of validation with our authorization server to make sure this token is valid and If the token is valid it can perform the request return data or something like that So this is basically in a very very high level how open they work and It's super to fit what we need so I started to look how we can do authentication in open ID and Basically the protocols are defined how you can do authentication in an open ID but each one of the available method did not fit our needs because Either it required interactive login, which we don't want or it required us to store the hard-coded credentials on the application code And we also don't want that because anyone with the app code has the credentials, so it's not secure at all So at that point understood that We need a new authentication flow If you will be able to perform this little component to change this little component We'll be able to enjoy the full benefits of open ID and that's what why I say it's highly modular You need to change small components and you have you can use a regular open ID in all our other place Which is pretty cool So what I combined went we will have for such an authentication solution We started to think about what we want from this solution and the first one which is the most trivial is It has to be strong. We don't want something that is easy to break The second one as we already said I want to have a way to uniquely identify the device So I will I will be able to perform authorization based on this device identify or something like that. I Also wanted to be simple because simple means less bugs less vulnerabilities is to implement stuff like that I wanted to be I wanted the authentication request will be unique per quest Meaning if an attacker were able to capture one authentication request and send it again It will not work what called replay attack and The last one which is also very important. I want to have I wanted to be for tolerant I want that our client will be able to recover from a loss and not really just be Hang there without being able to authenticate after experience a loss because a loss are expected Any questions about open ID something not clear Okay, so we have an ID and Now we need to find out how we are going to perform the authentication and the next thing that the default checking out is digital signature And before I explain how we wanted to use the signature I do expect a quick high-level over ticketed signature and I'm going to expect a signature using Bob the builder because I have to re-order time So this is pretty much what I'm dealing with right now To those of you are not familiar Bob the builder Pretty shame on you go see an episode, but anyway, this is Bob and Bob has a crew of people helping it So this is Leo Leo is one of Bob's girl And let's say that Leo want to send a message to Bob and Bob want to know that this message Come from Leo and not from someone else impersonating Leo Pretty trivial cryptographic security problem. Anyway, what Leo can does is the following. Leo can generate something called Private key and from this private key generate something called public key private is red public is green Now Leo can give to Bob the public key He needed to do that in a secure way So Bob will you know for sure this is Leo's public key and he need to save the private key safely so no one else will have access to it Now when Leo want to send a message to Bob and he can take the message and You think he's private key. He can sign this message The result of this sign process is the original message which sounds in cold signature So this is not encryption that he sent a message to Bob clear text if someone creates it He can read the message, but it has something in addition which is this signature When Bob received the message and the signature he can verify it with Leo's public key and if the verification with this public key succeed He can know that this message come from Leo and not from someone else impersonating Leo Why? Because the verification will succeed only and only if the message was signed with Leo's private key because there is a Relationship between the public and the private key Now if only Leo's has the private key and no one else has it He was the only one who were able to sign it. So only Leo were able to send this message So this is very very high level Over with digital signature, which is also a pretty cool idea and I'm sure a few of you already thinking how that's familiar. There is a pretty popular protocol Based on digital signature, how many of you can think on a popular protocol based on digital signature? Yes, so he has a HTTPS so most correct SSL TLS in a very high level is based on a digital signature and As there is a very popular library called open SSL, which is implementation of TLSSR and the reason this is important is it means that We can assume that any device in the world probably support HTTPS So we already have implementation for digital signature. We don't need to write digital signature our own Which is pretty cool when thinking about simplicity. Let's call we need to write more Good things you want to happen So this is a why digital signature going to be good for us, but how we can use digital signature So let's say we have the device in the authorization server and Before the device will be able to request a token He need to perform a small step of registration like in the first time is on the apple son had it So the device that you're before can generate the private and the public key and Send the public key to the server with the device identify again this number, which is uniquely per device The server can store the public key in his database some key value store something that and Then when the device want to authenticate again like here before It can use the private key to sign something some message and doesn't really matter what now and send this Signed message to the authorization server with its identifier The server can fetch the matching public key to this identifier from the database and verify the signature And if the signature is verified if the signature match to this public key He can now that again like more before this message come from this device again Not from someone else impersonating him because the device keep this public key secret and return a token to the device So we can see that from our initial list of requirements. We're ready for field strong authentication solution because digital signature is a pretty strong protocol We have uniquely unique way to identify the device because of the poverty only the device has this public key and no one else has it And we have something that is simple again began because of TLS SSL So now we need to think about what we are going to sign And we need to make sure that this thing we are going to sign will be a unique per request and for time and for explain what was our next idea any questions about the signature You don't need a C.I. here, but I can talk about later. She won't come to me and explain to you why He can anyone can register but we have a way to uniquely identify a device Oh, so he asked if if that doesn't mean that anyone can register So yes, anyone will be able to register, but he will we have we are doing authorization So he will be able to does a quest only for his device and not for someone else So he asked if the registration is no So, yes I'm not Anyone can register. It's a different problem, but it's not a problem. It is interesting here because Also if you can register, but you will only be able to request a token for your device identified or not be able to request that are belong to other devices So you ask if the signature going to be different if the message is the same, right? so There is a it's like kind of you can say it's like having a very high level So no if the message is the same the signature will be the same So you ask why it is why it's a protecting from for tolerant from replay attack and I explain why when I when I talk about what we are going to sign we need to find what we are going to sign and make sure It's a protect us from replay attack and One last question and then I continue Let's keep this discussion after the question because it's pretty complex one. It's another different Big big problem. So come and let and we talk about it Okay, so to continue your questions how we can make sure That if someone capture this signature will not be able to authenticate so This time what we checked the idea the next step or the words look pretty fit is one time password One time password is a protocol or set of protocols describing how you can generate Unique password on each request, which is pretty much what we want right away to create a new password each time Which our server is able to validate So we might be able to use that as the message we are signing now one time password has two main popular implementation Which is time based and counter based and the time base is the most simple one Basically, you are taking the core and time step on your client Sign it with some signing algorithm and send it to your server The server can validate the signal signature and then he can check that the time in summer is in some allowed by lunch For example, plus minus one minutes, but it really doesn't matter what this range is So it's pretty simple and that's why it's also used Usually in a MFA solution the Google Authenticator The counter based is a bit more complex You start with some random seed let's say seven, but it really doesn't matter which number it is and After each request both the client and the server increasing it. So it will be seven seven eight eight nine nine and Like we tell him I saw here. We have allowed value range so if the client Send us sign the number two and the number on the server is ten You can see that ten minus two is bigger than the allowed value range Then five so the request will not be valid Anyway, those are the regular one-time password solutions But we didn't want to use it either one of them because they both have had similar issue Which is synchronization issue?  So if your time is not synchronized, you cannot create one-time password based on time And counter is even more problematic because if the client experienced a few errors You will get out of things and you will not be able to authenticate So we want one-time password but We need to build a new one-time password protocol and let's see how I did it So as I said before we have the registration step and I said that the client generate the private key and Send the public key to the server Sorry, and so the number is also if the She asked what's the problem with the number based so If the client experienced a few errors, you will keep increasing the number and finally we will get out of sync It will not be able to authenticate So to return to this I said that You we can we can keep this discussion after I don't want to go get too much into it right now, but It's a bit more complex than that. Anyway So I said that the client generate the private and the public key send the public key to the server and He can also generate two random numbers to crypto on the numbers that I called them all the new You send them also to the server so in the end of registration the server has the public key and those two numbers and The client has the private key and those two numbers. I will refer to them as payload through the rest of the session now before the client can request a token he need the order snap those two numbers and The rolling is basically all get the value of new so all become two and You get new crypto on the value in this this case 42 Now the client can say sign this payload using the private key and send it to the server and The server can verify the signature with the public like I described before and if the signature is valid You can verify the payload. How we verify the payload He need to check that all the equal new the client or the equal to the server new in this case two equal two and If the equal the request is valid and the server update the payload in his database So the next request will succeed and he returned a token to the user And you can see that in addition to the three requirements way before We now it's something that is unique by request and I can say that it's also for tolerance We will see why when I discuss the edge cases Any questions about this session I Start so you ask why the server needed Or so you will see why when I discuss about edge cases, but the order new year Required for handling our cases. So we'll see why next So you ask if an attacker were able to intercept the first registration request and send another Public instead of the time quality. Yes, you will be able to block the world solution we You're right We are protecting this with certificate pinning and stuff like that, but it's not a perfect So I prefer to keep this discussion later because it will be a bit longer than just a quick response You're asking about scaling up because we need to stay to keep a lot of data The only thing I kept on the server or those two numbers you asked about keeping the state on the server So you're asking about how we are keeping the state So you're asking about scaling up and keeping the state Database for that and they are using the same database and I can share more about that. I said if you want to come talk with me Yes You asked why I'm letting the client just the next time us and not the server Because The client is not I didn't go to the desk And Yes, but I trust the client to generate all the other stuff And I want to plan to generate a private key because if he's not generated a public key I need to press the private key on the on the wire and I don't want to press the private key On the wire the private key never leave the device. So if I can trust him to generate the private key I think I can trust him to generate those numbers and it's also make things a bit more simpler and again, let's take this question of flying because We need to you know, have a bigger discussion Okay, so now let's go over to the demo Okay, so this is pretty much how the demo is built It's pretty much like open ID before We have the solution server the application server and the client The transition server is built in dotnet core using a library called identity server Identity server is a full open ID implementation Which is pretty cool because again, let's go we need to write only our code and not the full open disk back the application server is also in dotnet core because it was a bit easier for me and In the demo, it's basically API that you can request Sensitive data for me for any device in the world and he does authorizations So you will get sensitive data only if you request it for the authenticated device And we will see in the demo what I mean into it and we have the client which the client is written a lobby against simplicity and is running on Raspberry Pi, which is this thing a Small computer credit card size which is here to simulate another thing device So let's see the demo in action all the code available in Github. I put the link to the Github later Okay, so the demo is running It's running a bit slow because the Raspberry Pi Okay, good. So you can see that we have the device identifier the number that identified and we can now request Sensitive data for any device in the world. So let's ask that for our device. I think one four five eight seven And you will see that it's a ton the data for us Because this is our device if I now just put random number So you can see that I got an authorized This is real. This is a I this is how I show a demo that we can do authorization so the sensitive data the sensitive API is able to Authorize by the token this thing that placed in the position other and said if you are authorized or not to this device data And in question about it because I will not have time to go over the code How do you generate device? Okay, so we ask how I generate a device ID Excelator using great, but it doesn't really matter. You can do whatever work for you No, because of the authorization you saw that I tried to ask sensitive data for device ID 56 and it did not work and Because I explained counter and explain to you later and just don't have a lot of time for that and I want to keep with the rest of the demo and the rest of the slides So again, check out the level on github. It has the code and it's making it easier to understand it But the point was to show that I am able to perform authorization Anyway, let's go to the last part which is dealing with edge cases So the first case I want to hear to discuss is handling errors and we all know that network request can fail and because of timeout network failure or just server-side errors like database down and in those cases the client does not know what is the server state because Either the request did not get to the server and therefore the server did not update its database in state or the request did not get to the server and The request did get to the server and the server already update the state so the client doesn't know how to distinguish between those two states and I now go to show how our protocol ended each one of those and I start with the most simple one Let's say the clients and the authentication request to the server But from some reason did not get to the And this time of return and token the client will save an error so here the client just can retry the request and He will receive a valid token because because you can see that all the equal new Nothing to do here Let's talk about the more interesting solution case So the client now send a request and the request go to the server and request is valid because all the equal new but From some reason the client did not go to token. He got an error. That's very much away Now the client can retry over and over and over again Until at some point he will be able to send a request to the server Now you can see it related to the question of why we need the old that old does not Equal new hill to does not equal 42 But you can see that the world payload is equal or the equal old and new equal new So this is a special case the server expecting this case and he's assuming that what happened here is the client got out of sync So in this case the server just a tone HTTP status code 400 by request and the client is also expecting this Satisfied so on this status code the client just to work like it does on success request and if you're all You will be able to see that now all the equal new and the client will ever to recover from this error And we give it okay So this is how we handle all And you ask if this will be able to abuse for with the attack so If you send the same request again. Yes, it will be the same as this okay Because it will be the same state But you can see that it really does nothing on the server the server does not change his state here So it really does nothing here. We can do that It's only affect our low-timers kill the server any time and doors and stuff like that. It will not You are not a server token So let's go to the last stage s, which is more interesting. Oh, sorry So you're asking if you're not if I'm not using a password what happened if the device is stolen If you were able to store device, of course, you will be able and To access the data and yes, this is a problem with this whole solution. We're trying to do authentication without user interaction So you will be limited with what you can do and and it's pretty much something here And I'm sorry. I'm not taking more questions. I just want to get to a time for the last case because it's also pretty interesting and I want to talk about There is a pretty easy way to break this solution like what we started to ask about and And this is what happened if someone is able to access the device private team or compromising the device And if someone will be able to compromise the device It will be able to impersonate this device and send a question impersonating him so as this is a pretty Bet scenario and so I want our protocol will be able to handle it And to explain it. I want to introduce if If is the best hacker in the world or she need is like this hoodie put the hoodie on use like terminal with green letters I can any good movie and she can hack into any device in the world. It doesn't really need to be connected to the internet and Let's say that if we're able to compromise one of our devices and now we have Client server and if you can see that client and if both has the private key and both has the same state Now if if we request a token You can see that all the equal new and she will receive a token Now you can also see that if no protocol so you already want the payload What would happen if the client will request the token? So if the client will request the token now, you can see that it's the same as the error case before who will say for another bed status code because the payload is equal and You can go now and notice that if the server and the client each one has a bit different state So it means that now the client will be able to request a token because all the equal new But the next time if we request a token something different will be it will happen You can see that it's almost like the okay, so this got before but it's not the same because the new does not equal 78 That's not equal 93 So in this case the server respond with panic and you can assume that something bad happen and Instead of just returning better quest to the client and not exporting information you can also revoke this client totally so no one will be able to authenticate and Send someone out so someone will be able to go and check out what happened I saw four questions at the end because I don't have a lot of time So I'll stop for questions at the end because I don't want her. I don't have a lot of time So I want to complete the presentation dance up for questions So now we do a quick conclusion before the conclusion Reminding about the responsible disclosure. We really want to feel like about the solution This is why we are sharing it and we want to hear about potential issues But if you have some ideas come back with me Twitter whatever I will provide you the way to Responsible disclose such issues and again, we really want to hear them anyway, those are the requirements we started with and I hope you can see that the solution for feel all of them which mean We now have a way to uniquely authenticate the device and use the full open edicts another solution and And Maybe if the guys on this and if no water solution, maybe they use it Maybe it will help them anyway I do hope that you ask you're asking yourself how you can use it And if this is the case we are thinking about releasing the we are working about releasing part of the solution the back end and the client to open so so feel free to tweet me open issues on the demo on the demo get a page and Just to let us know that you want it what you need It will help us to provide The right open source and that's it. Thank you. And if there are questions, I get like four minutes for them questions and So you ask how the device gets the device at it and the device simply generate the device that you hear it's a little We're using a GUI, but you can use whatever you want Again, so yes, if you are going to write a script that will just go over all the ideas in the world and Send them to us. Yes, you will be able to dose us. That's why you are using good, which is Pretty hard not that hard, but pretty how to go over all the good in the world. But yes, and this is again a Issue related to how you authenticate the fierce registration quest because this is the only request. You cannot authenticate But yes, that's correct So you're asking what will happen if if it's the one with us to request Instead of the client and in this case the client will be the one who will trigger that up So I don't really care if evil the client trigger that I just want that one of them will do it Yeah, so I did not get you So you're asking how we are doing basically I see an access control, right? Yeah, so we can use open ID for that come to me later and I can expand you a bit how it and use open ID for that any more questions Okay, thank you. The next talk will begin with ten minutes over. Oh, there you are At 1115 we're gonna begin


The question is, if you mostly do one-to-one services, how does the sales page for the one-to-one service differ from the main page of your website? Great. So the main page of your website is called a homepage and the homepage is just a first impression and helping people go figure out where to go next. It's kind of like when you go to a mall and when you first enter the mall, they have like a directory like, okay, if you're looking for this clothing type of departments, these are our clothing stores in this part of the mall. If you're looking for food, here's the food court, things like that. So your homepage is really more of a, where do I go next? And so if I wanna, I'll show you the example of my homepage and if anybody else here wants to just give us an example of your homepage, show free. So my homepage is basically, this is basically what I do. And then you can get a feeling of my energy by watching a one minute video of me and then it's like, hey, what do you wanna explore? Here, here, it's very simple. I only have two choices for you. And if you don't like those choices, you can of course come up here and here's like the mall directory for where you wanna go. So that's a difference between the homepage and a one-on-one services offer page, your sales page. The one-on-one page is like, all right, now that you're interested in working with me one-to-one, you need to understand that it's for this type of person. And this is, if you're working in one-on-one, this is the journey, et cetera. And you might say, don't I describe that on my homepage too? You could, but I really encourage the homepage to be more. Think of the homepage more as, let me feel your energy for a moment. Before, like, wow, let's keep using the mall example, right? When you enter the mall, they usually have some kind of like, something hanging from the very tall ceiling, like it just, you feel the energy of the mall, before you start going into a specific store. It's kind of like that. So you don't go into the mall and there's no specific store that's like, well, sometimes they do like Macy's or whatever, does Macy's still exist with Amazon these days, I don't know. But so it's more, the homepage is more of an energy. Feel my energy with a one minute video or two minute video. And then these are the two things, or the three things that I work with, three issues I work with, two issues I work with, two types of people I work with. I mean, you could basically a quick direction for where to go. Do I go turn left or do I turn right or do I go straight? Three branches where I go, I turn right. Okay, now we're talking about this particular issue I work with. So website structure is an art and a skill in and of its own. I talk a lot more about website structure in my SEO class. So if you're interested in like that kind of stuff, you can go into it. But if you simply want to keep it real, real simple, there's also the possibility of a one page website. You could have a one page website where at the top they feel your energy with a quick video or one quick statement of what you do and then they keep scrolling down and now you're talking about, okay, you want to work with me one to one because that's the only thing I offer. The only thing I offer is one to one. And so it's like quick energy, one to one offer and then the sales page and your homepage is one. So you could do it that way as well. So let me know if this helps. All right, and Emily is going to give us a quick example here on screen of the homepage energy field. Yeah, totally. And this is in the great example because you come here, you feel the energy from the background, the image, the style. She has a logo, that's really cool. I don't have a logo, but Emily does, congratulations. And then, it's just a bit, a little bit to read. Personally, I like bigger fonts, but it's okay, your ideal client might be fine with that and join you later itself. Yeah, that's great. And then a further question here from Pam is, what is the difference between a website page about the service and a sales page that you might share on social? Same thing. There's no difference. A sales page is essentially a page that sells something specific. So a sales page could be selling a specific service or it could be selling a specific product and that's what you would share on social media. Of course, on social media, you could share anything you want. You could share your homepage, you could share your blog post, you could share your videos page, you could share your sales page as appropriate. I'm gonna tell the same page. I don't need a separate thing that's basically what I'm asking. A sales page is specifically when they're ready to buy. So when someone is ready to buy from you and they just need some confirmation that this is the kind of thing. So in other words, I don't believe that sales pages, I don't, the way I think about websites, I don't think sales pages should be trying to convince somebody who is cold to you. I don't know who you are, Pam, but you have to convince me on this one page that I should, you should convince me right now that I need to buy from you. That's a really hard, and of course this is where pressure sales come in and hype and scarcity and all that stuff that most of us don't like to use. But instead, I like to warm people up with energy, with content. Maybe you're about page or warm people up too. You're about pages and trying to sell anything except your energy, right? Not really selling it, you're just sharing, being open and being truthful and open hearted connection.  By the time they land on your sales page, they're warm. Hopefully the sales page isn't the very first place, a cold person.  So the sales page is really meant for, let me just, I already like you.  I don't like you. And I already ready to buy from you, pretty much.  How much is it? Is it the right product for me? You know, so hope that helps. Yes, thank you. You're welcome.


Similarly, the First Lady, Mrs Aisha Buhari, has commiserated with the families of the chief of our staff, Lieutenant-General Ibrahim Mataheru and 10 others who died in a plane crash on Friday in Kaduna. Mrs Buhari offered her condolences when she led members of the immediate First Family, friends and well-wishers to the residents of the deceased family chief. Mrs Buhari said the deceased and his colleagues died as heroes and would forever remain in her mind and in the minds of Nigerians.


This is stock number 8J154A. We are here at Summit Automotive in Fond du Lac, Wisconsin. Your new and used Jeep headquarters. Today we are checking out this super clean 2018 Jeep Grand Cherokee Overland High Altitude. This vehicle has the award-winning 3.6-liter Pentastar V6 motor. From this HD video you will be able to tell that this vehicle is extremely clean all the way around and very good-looking. Velvet red pearl coat is the color. We shoot all of our videos in 1080p so if you have HD capabilities on your computer tablet or a smartphone device turn them on right now because it is like you're right here looking at the vehicle with me. The high altitude package gives you the dark gray kind of black painted alloy rims. The 20s comes with Bridgestone Acopia 26550R20 tires with I'd say close to 80 to 90% of the tread left on these tires. No scuffs, no scrapes on that front rim. This one has the LED running lights, the HID headlights, the LED fog lights. You can see the front sonar. It also has the adaptive cruise control. This vehicle has just about every option you can get on it. You get the blacked out grille part of that high altitude as well as the blacked out headlight bezels. The hood is absolutely perfect. I didn't see any dents or dings on that. Passengers side rim is absolutely perfect as well. No scuffs or scrapes on that and as you go down this side of the Jeep you can see just how clean that body is, how reflective and mirror like that paint is. We take these HD videos because we sell a lot of these vehicles out of state so we want to make sure that whether you're close by or even far away you can get the same experience as if you're right here looking at the vehicle so that you can have the confidence that you're making a smart buying decision before you even get here. Very clean down this side. I didn't see any dents or dings. Back rim is absolutely perfect. No scuffs or scrapes in the back tires. I've just as much tread as the front tires. You can see it has the carpeted wheel well molding or liner I should say which keeps the moisture and dirt off your frame. As we come around to the back you can see it has the dual exhaust. You get the blacked out exhaust tips. The blacked out 4x4 lettering. It has LED tail lights. There are no dents. There are no dings on this back tailgate. It has the towing package which includes a receiver hitch, four pin and seven pin wiring. It has the power lift gate. Back here you can see it has the factory subwoofer part of the Harman Kardon sound system. It has the rear cover for that receiver hitch. There is a full size spare tire back here and it does have the sunshade which is really nice. If you want to keep your valuables out of sight out of mind you put that up. Nobody can see back here. Also if you got groceries keep some nice and cool. Back storage area is very clean and to get that gate down just press that button. It'll beep at you three times and then it will come on down. This vehicle was locally owned and driven here. Always had its service work done at our shop. Also was purchased brand new from us and traded in on another brand new one. No denser dings down this side. Very very clean for full disclosure. This back rim is just as clean as the rest. No scuffs or scrapes on that. And as we hop inside this vehicle the Overland package gives us the black leather interior.  Both these seats are heated and cooled. It has the factory floor mats throughout the Harman Kardon sound system, memory driver seat, power windows, power locks, power folding mirrors. Those mirrors have blind spot monitoring are heated and also have built-in directional signals. You have auto headlamps, power tilt, power telescoping steering wheel. And as we hop inside here you can see that this vehicle has 12,056 miles. You get these seven inch TFT display, digital speedometer, compass, outside temp. You can see the lane departure warning light right there. Has the heated leather wrap steering wheel. There are no scuffs or scrapes on this wheel. Has the adaptive cruise control. Also has forward collision warning, cruise control, information center controls, and Bluetooth. This one has the 8.4 4C radio so it comes with the factory navigation. This also has your backup camera right there. It also has Android Auto and Apple CarPlay capabilities. Down here you have your perpendicular and parallel park assist button.  Backup sensors, lane departure warning, your start stop, eco mode, sport mode, and then your stability control. You got dual climate control right there. And right here you have your quadra lift slash quadra track 2 system. So you have the snow, sand, auto mud, and rock. You also have your quadra lift so you can adjust the height of the vehicle. And you have four-wheel drive low downhill assist control and then a neutral feature for flat towing. The eight-speed automatic transmission with the updated shifter. Passing your seat is very clean as well. No rips or tears on that. Up here you have your home link buttons as well as your rear gate buttons and your power sunroof and vista roof buttons right here. So I got the sunroof open and then that vista roof that shade goes all the way to the back giving you a nice airy feel inside the vehicle. Up here you have your SOS and assist buttons. Those are always active with the vehicle. You never have to pay a subscription for that. And we'll take a quick look at the back seats. Back seats are just as clean as the front seats. No rips or tears back here. It does have the factory floor mats back here as well. These back seats are heated and you have a 115 volt 150 watt plug-in back here. You can see those back seats are very clean. No rips or tears. This vehicle has never been smoked in and these seats do fall down for extra storage. They go down nice and flat like so. And we'll take a quick look under the hood. Enter and go system. This one has just about every option that you could get. Also you get the blacked out Jeep lettering on the hood. Under the hood we have the 3.6 liter award-winning Pentastar V6 motor. Engine base very clean runs very smooth. This Jeep has been fully safety and inspected by our service shop has a fresh oil and filter change. All the fluids have been checked and topped off. And this Jeep is 100% ready to go. Probably one of the nicest rides on our lot. And to see more pictures of this one or one of our other 400 new and used cars, trucks, SUVs, minivans, Wranglers, you name it we got it.  Videos of every single used vehicle that we have all at summitauto.com. If you want to check out just our used inventory you can go to truckson41.com. That's truckson41.com. Goes right to our used inventory page. Thanks again for checking out the video. If you want to make this Jeep yours you can give us a call right now at<PHONE_NUMBER>. Ask for one of our sales associates to make this Grand Cherokee high altitude ears. Once again that number is<PHONE_NUMBER>. And if you want to check out more videos you can go to youtube.com slash summit auto. Remember to like, subscribe, and share on this video and all the videos that you see there. In fact in a second you'll see a link to subscribe to our YouTube channel on your left. A link to more used inventory vehicles like this one on your right. If you have not been to our website on the bottom link to this vehicle on our website click those check us out and we really look forward to helping you with this super clean 2018 Jeep Grand Cherokee overland high altitude. Thanks again.