So this talk is about mobiles and how do you make good experiences on mobiles and how you can use JavaScript in that. A little bit about me first. My name is Shwetank. I work as a web evangelist for Opera. We're very, very big on mobiles and other devices and we, you know, we have a bunch of experience on that. I'm also part of the W3C, working on two groups. One is called Mobile Web for Social Development and the other is called Web Education Community Group. You can sit over here if you want. If any of you are on Twitter, this is my Twitter, just my first name, Shwetank, and my email, in case you have any questions later on, yes. How many people have seen the show The Wire, the HBO show Wire, right? Four people, damn it.   It's a little bit more complicated than that. But the thing in that show is, especially in the first season, what happens is they collect a whole lot of data about each and everything that the criminals talk on the phone, like even the most mundane things, and they're somehow connected together to form this huge, very compelling case against them in court. And I think that's the best metaphor for what we're trying to do over here in the sense that all the pieces matter. That's one of the lines of Lester Freeman, one of the detectives over there, all the pieces matter. So we can't look at one thing in isolation. When it comes to JavaScript, you know, so far, the talks have been great, but they've all been pretty much, you know, in isolation, looking at JavaScript, you know, in a particular context. But when it comes to JavaScript in the real world, we have to use it with HTML, right? So we have to use it with that. So all the pieces matter. It's not just JavaScript to make a really, really great application. You have to use JavaScript, but you have to use it with a number of technologies. So we, in this presentation, we'll see how to use JavaScript together with all these new technologies that we have in HTML5, right, especially on mobiles. So we're going to talk mainly about what kind of browsers are we talking about. We're talking about smartphone browsers, right, talking about Opera Mobile, or we're talking about, you know, the WebKit browsers that you have on Android or something, right? But first, pair of thought on, you know, what the majority of the Web on mobile actually surf on. They don't surf on, you know, very full-featured smartphones, you know, they surf on very low-end feature phones and use stuff like Opera Mobile, Opera Mini, right, which is used by about 100 million people, more than 100 million people every month, right, worldwide. So if you're making, you know, a mobile site, then you have to keep in mind those people as well, you know. But this is about the future, so we will focus on that. We will focus on smartphone browsers like Opera Mobile and, you know, all the WebKit browsers. So I want to ask you a question. What's the most important thing to know about the mobile web? Screen size? Bandwidth? Okay. Voice? Okay. You know, to me, what's the most important thing to know about the mobile web is that there is no mobile web. What do I mean by that? What do I mean by the fact that there is no mobile web? Well, you know, people, I don't know how many people are old enough, you know. I look very, very young, but I'm not that young. I remember the days of WAP and WML. How many people remember WML? Ah, so you're old as me. So, you know, they try to make a different version of the web, you know, not in HTML, but in a certain other language called WML, it sucked, basically. That's all you need to know. And people also pretty much said the same thing.  They suck, you know, but WML will not actually be anything useful. So they went back to the drawing board and said, hmm, there's an idea called HTML. Maybe we should try that. And that's what they did, you know, that's what they ended up using. So ultimately, they wanted to create a different version of the web for mobiles. That didn't work. And they used the same thing that they always, you know, should have used, which was HTML. So ultimately, we have one web. It's not just, it's not a separate version of the web, it's just one web. It's very, very important to know this, you know, keep this in mind. The second most important thing to know about the mobile web is that it's not about mobiles. That is, it's not about just cell phones, you know. It's about cell phones like these. You have, I don't know how many people can see this in the back, but it's basically a cell phone. But it's also about tablets, you know. It can also be about, especially in the coming future, it will be about TVs, you know. The web is about devices in general. And just like you have the desktop as a device, you'll have tablets, you'll have TVs, you'll have gaming consoles, you know, you'll have even flight entertainment systems. And in the future, using a browser. So the web is more than just, you know, PCs and mobiles. It's much more than that. And it's just one web. Keep that in mind. I just had to mention this because I'm from Opera. Smartphone browser is not equal to WebKit. You know, people when they think about smartphone browsers, they always think about WebKit. Opera mobile is pretty big and it's as good as pretty much anything. So, and furthermore, which WebKit are you talking about? How many people have heard of PPK? If you're doing mobile web development, you have to follow this guy's blog. He's called PPK, basically Peter Boulkos. And he's from the Netherlands. And he has a very nice article on, titled, There is no WebKit on mobile. And what he actually meant was, you know, he compared the native Android browser on a number of devices and he found, and he ran a bunch of tests and he found out that none of them behave exactly 100% the same. You know, each and every, you know, browser had a certain branch of WebKit and none of them were exactly 100% the same. So don't assume that just because you have, or just because you've tested, you know, your website on one particular WebKit browser, it'll, you know, display and function on all WebKit browsers the same way. It's not necessarily true, right? So keep that in mind as well. And it's okay if the site looks different in different devices. It's okay, right? If you make a separate mobile site, it's okay. However, if you do that, you always have to provide a link to switch back to the desktop version. Because we in Opera have, you know, got this feedback a whole lot. What happens is people make m.something.com and if they think that, okay, this guy, this user is from a mobile browser, they just automatically redirect that person to m.something.com. And they don't provide a link to switch back. The user wants to visit something.com, the desktop version.  So do not ever do that. If you do, always provide a link to switch back to the desktop version. It's also in a bunch of guidelines. How many people are familiar with this meme? So I just made this, you know, I don't always make a mobile site, but when I do, I make sure that users can switch back to the desktop version. That's a better strategy, actually. If you do something like responsive design, and I'll come back to that, right? But if you want to make a separate mobile site, go ahead. So yeah, this thing that I talked about was in this set of best practices. If you haven't looked at it, please look at it. It's called W3C Mobile Web Best Practices Guidelines. RTFG, do that. How am I doing on time? I think I'm OK. So one of the things that the guidelines also talked about was offline web apps. And this is where I'm going to explain how to do it, and then what role does JavaScript play in it. So offline web apps, storing files to run offline. So whenever you're trying to make something a web application run offline, they're basically two aspects to it. One is loading the files in an offline environment. The actual HTML, CSS, image files, all that kind of stuff. And the second part is loading the data that you need to run offline. So right now, we're going to focus on loading the files. How many people are familiar with application cache? So few. So just for everyone else, application cache is a special kind of cache in modern browsers. And you can programmatically set that cache for different web applications. So it's not like a normal browser cache. It's a special cache. And how do you set that cache? There's a file, just a text file, and that you rename it to something not manifest. In that text file, you say that I want these files to be stored in that cache. So in this case, and the first line has to be cache manifest, by the way. So what you say is I want style.css, script.js, and index.htm, for example, stored in that cache. Now, how do you link that page to this cache? In the HTML, you do HTMLManifest is equal to that thing.manifest. One more important thing to note is that manifest file has to be sent with a certain MIME type. So it's cache-manifest. So you have to do that. I'll go back to this.  For example, if the image isn't loaded perfectly, it hasn't loaded completely, then instead of showing just a blank space, have a certain fallback or default image to be shown. You can do that using application cache. So using the fallback section header, you can just say, if original.jpg isn't loaded, in that case, load backup.jpg in its place. So you can do that kind of stuff with application cache. It's pretty nice. Now, generally speaking, people who are familiar with application cache are familiar with all these things. But the problem is, how do you update the cache? So whenever you have a manifest file and you store it on the server, it has a bunch of files that you say that, OK, it needs to be cached. And then you make some other changes. Let's call that manifest file version 2. So what happens? You need to make sure that the cache, as defined by the version 2 of the manifest file, is now used by the browser. How do you do that? That's where JavaScript comes in. That's where certain functions and events come in. So what you do, in this case, what I've done is, I do a set interval and run this every one hour, this function. And what is it? It's called window.applicationcache.update. The primary purpose of update is to just check the server and see if there's a new version of the manifest file available. And if it is, then download that new version. It's still not being used. It's just downloaded it. Once it's downloaded, there's an event which is fired. It's called update ready, which means, basically, oh, I've downloaded a new version of the manifest. I have a new application cache. What do I do with it? So that's the basic fund of update ready. Once that happens, then you can finally swap out the old version and swap in the new version. And you do applicationcache.swapcache. You'll be surprised how many people know about application cache, but when I talk about these things, they generally do not. So I would say, just note these three functions down. And there's also a tutorial that I've written pretty in-depth on dev.opta.com. You can go there and take a look as well in detail. So update is basically just firing and a request to the server saying, if there's a new manifest file, I'll download a new cache based on that. Whenever you hit refresh, it does the same thing as update, actually. So this was about storing the files needed for offline use. You store all the files needed for that. But what about the data? Any questions so far? It will download it, but it will not use it explicitly until you call it. Whenever you go online once again, you'll say that, OK, oh, there's a new version now. Let me download them. But it will not swap in. You will still be using the old version unless you call swapcache, right? So now we come to web storage. So how many people attended PersuRAM's talk on IndexedDB? Quite a lot, right? So you know about storing of data on a browser level and how you can use IndexedDB. But I'm going to focus more on web storage. The problem is you have cookies, they're unreliable. There's no programmatic APIs really to access that. And it's not structured at all. And most of all, the file size, what's the max file size of our cookie that you can store data in? Can I have a price for that? 32K? No. Yeah. So it's 4KB in one or two browsers, but generally it's actually 2KB, right? So it's very, very small. So we needed to come up with a solution which is better than that. So we came up with something called web storage. It has two variants. One is called session storage, and one is called local storage. How many people have heard of local storage? Quite a lot. Good. So you're familiar with this, then? How to do setItem and getItem, right? Pretty standard, pretty nice. But what people generally ask me is, we've done this. But how do we sync it back to the server? How do we use it in a practical use case? So one of the things you can do, one of the things you shouldn't do actually is this. You can actually store images with local storage. How? Does anyone know? Yeah, so you can just convert it into a data URI and just store that string, but don't. Do not ever do that, otherwise I'll spank you. But the reason why you shouldn't is because it's just a hack. You should probably use application cache to store all the files needed. So if you're doing that using local storage, there's something really, really weird, or some kind of edge case, or you're just plain wrong. So one of the things that's pretty cool is automatically save entered form data. So how many people have encountered this situation? You're writing a really, really long blog post about something and the browser crashes, right? Or you're writing a really important email and then the browser crashes. And then you have to start it again. It's like, what the? So you have, this is a solution to that. So what you can do is something like this. If there's a text area like this, call save message every half a second or second or whatever, right? In which what you do is take whatever has been written in that form area till that time and save it to local storage, right? So even if the browser crashes, right? The next time it opens up, you will still get it, you'll still retain that kind of information which was there till the last time it was saved, right? Yeah, so for that you have to use session storage then, right? So that's probably a different use case. That's not probably the best way. I mean, Discuss Uses is, by the way, how many people are familiar with Discuss? Discuss is a commenting system on various blogs.  So you can probably do this. There's certain gotchas, certain things to keep in mind when it comes to local storage. Two tabs updating the same value, you know? If you have a tab, you know, which is storing local storage data, and then you have a clone of that tab or some other tab which is trying to, once again, store the same kind of data, right? Then there's a mismatch, you know? To give you an example, let me open up. If you can actually wrap your mind around the crazy number of tabs that I have, just look over there on the bottom. It says, change from this to this, right? How did I do this by using something called? Storage events, right? How many people are aware of storage events? One, wow. So it's very, very simple. So whenever something like this has been done, you know, whenever something, whenever local storage, you're using local storage and some other page has updated the same value, then storage event is fired. And when that happens, you can simply do event.allStorage to get the old value and event.newStorage to get the new value. So I use basically this to say, this has changed from the old value to the new value, right? So storage events is something that pretty much no one knows about but should, right? And please, please note that down. Yes, I actually did this demo on session storage. So you can do that. Once again, I've written an article on.oper.com, explaining all of this, so go check it out. One more thing is if you're using local storage or session storage, don't do it on a free hosting service in which they provide a different directory for each and every user. For example, if you have freehosting.com slash user one for your account and freehosting.com slash user two for the other account, you know, they're using the same domain, right? So they can theoretically access your data. So try not to use local storage or session storage on free hosting accounts which provide like a different directory, right? If it's a sub directory or sorry, subdomain then it's fine, right? Yeah, shared hosting, so yeah. So if it's like abc.something.com and bqr.something.com, those are both different origins, right, those are treated as different origins. So that's fine. But you know, freehosting.com slash user one and freehosting.com slash user two, that's treated as the same origin, right? So they can access your data, don't do that. There are other storage options, you know, as been mentioned, you have index DB, you have web SQL. You know, people have been bashing web SQL a whole lot, but I think if you're just concerned with making, you know, a site which is specifically targeted just for mobiles, then I think it's okay to use web SQL. The reason is because browser support is there when it comes to most, pretty much any webkit-based browser as well as Opera Mobile. And that covers a whole lot of mobile browsers, smartphones, right? So if you're just concerned with only and only smartphone browsers, then web SQL is an okay option to consider, right? One more thing, this has nothing to do with JavaScript, by the way, I'm just, yeah. Cookies do still have their place.  You know, it is just for storing small amounts of data here and there, right? But cookies have more uses than just that, right? So it's not 100% complete replacement for cookies. You can programmatically do it, but there's no, I think it's clear. I think if I'm right, there's local storage.clear, but I'm not sure about that, I'll have to check. Yeah, you can also manually, if you want, you can clear local storage using your own browser. The user can do it manually. By default, the local storage space is 5MB. So, and if you go beyond 5MB, then the browser is supposed to ask the user, do you want to allow more storage space? So now we come to media queries. How many people have heard of that? Responsive design, yes? Good. So, media queries is all about this. So if, when it comes to mobiles, you have different devices with different resolutions how do you make sure that you have just one CSS file or just one, you know, set of rules and have it adjust to different resolutions? So what you can do is use something called media queries. Like over here, what you do is you say, at PDOL and MinWidth 48TPX, MaxWidth 800PX. So all of these styles are gonna be applied to only those devices whose MinWidth is between 48TPX and 800PX, right? And all those devices whose MaxWidth is less than 48TPX, you know, the second set of rules will be applied, right? So you can search on, you know, media queries and how you can use them pretty, pretty nicely. There's a site called media queries with a dot before the ES, just mediaquery.es, right? So that's a very, very good showcase site of how many sites in the wild are using media queries. If you go to my.oper.com, it's also using media queries. I think the Boston Globe also redesigned their site, which is a very, very nice site, which is using media queries. So go ahead and look on that. I'm not gonna focus too much on this because it's not related to JavaScript. I just wanted to mention it. How many people have known of Viewport? So about 10% people. So Viewport is something also very, very interesting. So if you're familiar with media queries, then you should also probably know about Viewport. There's a meta tag called the Viewport meta tag. So generally what happens is, if you go to a page using your mobile browser, it provides like a zoomed out view of the page like this, and then you tap in or do something and it focuses on that particular part of the page, right? So that's what happens, but if you're making a web application, and you don't want that behavior, you want the user to automatically just have a zoomed in version of that particular page. You don't want him to tap and then have a zoomed in. So what you can do is set the amount of scaling by default, and that's what the Viewport is useful for. So you can do something like this. You can have like meta name is equal to Viewport, content is equal to width is equal to 320. So it will have like a 320px Viewport, and if the device size is more than 320, then it will zoom out to fit 320, right? The best thing to do actually is do something like Viewport, content width is equal to device width, right? So it will automatically judge the device width and set the width of the Viewport to that exact level, right? This is very, very useful, but you can also do something more. You can have scaling constraints. So you can do maximum scale to minimum scale 0.5, so you can make sure that the person can only scroll like maximum of 2x and scroll out maximum of 0.5x. So that's very, very good. Also what you can do is you can disable user scrolling. So in games, this might be useful, right? So you can do, you know, user scalable is equal to no, right? Once again, this has nothing to do with JavaScript. I'm just mentioning it. In Opera, we've also implemented it using CSS because according to me, and Opera in general, you know, this actually belongs more in CSS rather than having a meta tag, right? It's more of a presentation feature. So you can do that using, in Opera, using the AtViewPort feature as well. The exact same thing. A geolocation. How many people know about geolocation? How many people know how it works? Okay, so this was, I'm not gonna spend too much time on geolocation, by the way. So the early web was, you know, how this is my page in HTML, look at it, you know, this is my, these are my thoughts in a well-published format. And then you had like this, but this was, you know, about here we can do stuff together and Wikipedia is the best example of that, you know? And then the next step was, hey, this is what I'm thinking, you know? And this was Facebook and Twitter and all that kind of stuff. I think the next step is, hey, this is where I'm at, you know? And provide me goods and services in relation to where I'm at. And this is where I think geolocation is pretty nice. So you can have like augmented reality, geocaching, location aware, advertising and all that kind of stuff.  Don't do browser sniffing. I see so many people who are doing browser sniffing for geolocation. They say that, okay, these, these browsers support geolocation, so I'll only have code for that. Don't do that. Instead, do something like this. Navigator.geolocation, if it's available, then have, you know, look geolocation.getcurrentPosition. One more thing is, though, that I've seen some people do call getcurrentPosition and have a set interval for that. You know, instead of that, you can probably use watchPosition, right? So watchPosition, how many people know about watchPosition? No? Okay, so it's exactly like getcurrentPosition. The only difference is, it keeps calling it every time it detects a change in location, right? So every time you move, watchPosition will be called, right? So that's the only difference. GetcurrentPosition is just one short thing. It's just called once, but this will be called every time you move, or every time it detects a move. So, and one more thing is, you know, dealing with errors, you know? So if positionError is equal to one, you know? That means that the user explicitly has said, no, I don't want to share my location, right? Whereas if it's two, for example, then it's, for some reason, hasn't been able to load it. And accuracy, you know? Geolocation is scarily accurate in some places, and retardedly, you know, really amusingly accurate in some other places, right? For example, in Bangalore, it's actually pretty accurate, generally speaking. But in, from where I come from, Chandigarh, you know, it's like laughable. It's like, I'm not here, I've never been there, you know, it's like that. So don't rely on that. Don't rely on geolocation as, you know, in production. Always have a fallback. Always have a way to, for the user to enter the location data, right? Either as a pin code or something else. You know, always provide them a way to choose, you know, what their location is. Don't always 100% rely on geolocation because it's not always accurate. When it is, sometimes it's very, very accurate. You know? It depends on how well-mapped the city is. One more thing, the geolocation spec, you know, it's been quite a while since this has been published, but the new version, people are coming together once again to discuss a new version of the geolocation spec. So there may be some changes here and there, just as a heads up I'm saying. See, yeah, time for a sneak peek. So I'll be talking about, where is it? There's not a gun, don't mind. Is this, it's called device orientation. Let me open up a lab's build of Opera Mobile. Even if it's in, you know, the texture is murdered, doesn't matter. So just play along. Position of this, the background color keeps changing. How did I do this? I'm just moving this around. So there's a new spec called the device orientation spec, right? Which gives you access to stuff like the gyroscope and the accelerometer and stuff like that. And we in Opera have implemented this in a lab's build, where it's gonna come soon in production as well. So this is just a lab's build, by the way. But if I shake it, so this is using the accelerometer, so I said that, okay, I detect the acceleration and if it's after a certain threshold and I clear the form, right? So you can, yeah, it will. So you have to use this with gear, right? The thing is, you shouldn't use this while driving anyways. So this is how you use it, you know? Just have an event listener for device orientation. For the browsers which support device orientation, you know, you'll be able to get, you know, using the event alpha, event beta, event gamma, you can get the alpha, beta, gamma, position coordinates of the device, right?  In this case, I set the RGB values going to the alpha, beta, and gamma values, right? So every time I moved it, this event was fired and it set the RGB value of the background color to that. That's why the background color was changing every time I was moving it, right? One more thing is access to the accelerometer, right? So you can do that using the device motion event, right?  So just keep this in mind, you know, the W3C device orientation spec. Just search it, you know, it's interesting to know. Another sneak peek that I wanted to, I hope this works by the way. It's a very, it's a lab's build, so it crashes all the time. But so this is basically inside a webpage, you know, inside a browser you now have access to the camera, right? So this is pretty cool. This is something that I really, really like. And you can actually even take pictures, you know, say hi, and once again, if I shake it, it's gone. So I used, you know, device motion for that.  I didn't have enough time, otherwise I would have talked about mouse yesterday as well, you know, multi-touch and all that kind of stuff. You can do that, by the way. Yeah, so these, I mean, yeah, there's a whole different presentation in itself. If I try to talk about things on browser to browser, we in Opera support WebM, we support OGG, right? We don't support H264, right? There are certain other browsers which support H264, but they don't support WebM, like, you know, Safari or something, right? Chrome, I think, supports all or something, but in general I think WebM will win. Ultimately everyone will have to support WebM. I don't see any other way. Yes? Yeah? Not right now, but soon, soon. This is a labs version. It's not even a beta, it's not even an alpha, it's like a labs experimental version that we have. So it's not gonna come in any mobile browser soon, but it is there, we have worked on it and everything. One of the main reasons why it's still in a labs build and not in a beta or something, is because the spec is very, very new and it's being changed quite a lot. Even when we implemented this, the spec changed and then we had to re-implement this, right? Yes, what we basically, right? So there is a spec, there is a W3D spec called the WebRTC real-time communication. So it specifies, you know, camera access, mic access, and a few other things that I'm forgetting right now. So, and peer-to-peer communication and that kind of stuff. So right now we've implemented just camera. So yeah, how do you do this? You do something called navigator.getUserMedia. If it is supported, then it probably has camera access, right? So the first thing to check is navigator.getUserMedia. If there is, then you check for no video. If it is there, then a success function is called, otherwise an error function is called, right? So let's see the success function. You, by the way, select the video element. Then what you do is, in the success function, there's a stream element, a media stream element, which is basically just access to the camera stream. So what you do in the success function is, just associate that camera stream with the HTML5 video element that you have. That's it, right? And then what you do is, once you have the camera stream as part of the video, then you can use draw image to put it on canvas.  You can, you know, do all kinds of stuff. So this is how you put it on canvas, you know? You just do CTX to draw image video element, now 00 till canvas within canvas height. This time, and it's my presentation's time as well. So keep in mind, WebRTC spec, you know, the stuff which defines all this, is very much in flux, it's still not ready yet, but we are working on it. Browser makers are continually making progress. Read up on dev.opera.com, these are all, all my articles and a bunch of other very, very nice articles are there. And if you have more questions, you can contact me on Twitter or on email on swethangry.opera.com. And with that, I say thank you.


I'm the whistler, and I know many things for I walk by night. I know many strange tales hidden in the hearts of men and women who have stepped into the shadows. Yes, I know the nameless terrors of which they dare not speak. Tonight transcribed, it's the whistler's strange story, the first year. The story of Lydia Winters falls naturally into two parts, separated by exactly one year almost to the minute. Her marriage to Elliot Larkin ended, of course, on New Year's Eve, somewhere around midnight at a place called Silver Lake Lodge. The circumstances surrounding its ending are a matter of record now in the files of the police department's homicide division. The beginning is another story, a personal one. Just a year before, early on New Year's morning, as she entered her uncle's apartment after listening to the whistlers ushering in the New Year and bidding Elliot good night. Well, Uncle Phyllis. Oh, it's you. You old darling waiting up for me. There's a very good reason, Lydia, I want to talk to you. I'm seriously for once. Oh? And I know just what it's about. You don't approve of Elliot Larkin, do you, dear? You think he's irresponsible, unworthy of me, and I'm so hard and thoughtless and gullible. You through? Mm-hmm. Good. And please understand this. If I have any concern about Elliot Larkin, it's on his account and not yours. Is that so? Exactly. But, Papa Ham, he might grow up into a decent human being.  You are not in love with this man. He's not in love with you. You're pretty sure of yourself, aren't you? Of course I'm sure. Well, to get to the point, Lydia, I will not approve your marriage to Elliot Larkin or any other man until you're able to look upon it as a sacred contract instead of an adventure. I see. Well, for your information, I've agreed to marry Elliot tomorrow in Greenville, whether you approve or not. And there's nothing you can do about it. Oh. Well, you can't do a thing like this now. Why not?  You can grow it up, but it's vicious. You can't play with people's lives as if they were puppets. It's my money, Ballinger. I can do with it when I please. I'll get this again. The new will is to provide that if Lydia and Elliot Larkin live together as man and wife under the same roof for a period of 10 years, they are to receive the principal legacy of $500,000 jointly or half each as they may choose. Then failing, it goes to the children's relief fund. You got that? Yes, that's clear enough. Now, if at any time during those 10 years, either one of them die by any means, the entire sum is payable to the survivor immediately. Look, Phillip, this thing is finished. It will set them at each other's clothes. Well, if I'm right, if the marriage means nothing to either of them, it'll destroy them. On the other hand, if I'm wrong, it'll be a real reward. But don't you see it's not a will, Phillip. It's a weapon, maybe. I know I won't live to see it work out, but you see it, Ballinger. You see it. You have to acquaint them with the provisions just the moment that I die. There's a comfortable retainer in there for you to see that it's followed to the letter.  It should prove very interesting. In just a minute, the whistler will continue tonight's story. All of us are proud of our hometowns and rightly so. In this brief moment before we continue with our program, we'd like to offer a salute to one of our hometowns in America, Boston, Massachusetts. No city in the United States is richer in historical associations than Boston, the tenth largest city of our country. The Declaration of Independence was proclaimed from the balcony of the old state house. All reveres saw the lantern shine from the old North Church before his famous ride that opened the Revolutionary War. The great New England poets had their homes here. Ralph Waldo Emerson, Henry Wadsworth Longfellow, Julia Ward Howe, John Greenleaf Whittier, and writers like Nathaniel Hawthorne, Oliver Wendell Holmes, and Edgar Allan Poe. Today, Boston is the largest market of the shoe and leather industries in the world. It's also the largest wool market and the greatest fishing port in the United States. And they have the Boston Red Sox. It's the home of the Mother Church of Christian Science. And people all over the world know about Boston products. They buy three billion dollars worth of them every year. It's no wonder that the people who call Boston their hometown are proud of their two nicknames. They call Boston the hub of the universe and the cradle of liberty. Thus has Boston taken its place in the building of America. And now back to the Whistler. You've escaped Uncle Philip's tyranny now, and it worked out fairly well, hasn't it? It's not a storybook marriage, of course, but you didn't expect that. Still, Elliot is fairly presentable, reasonable, and charming, and wealthy enough to keep you well-dressed and entertained. And until something better comes along, you're content. It was an evening in October that changed all that. The two of you had just arrived home from a football game. Oh, Johnny Gates, I haven't seen him since college. And you know, it was really a lucky break running in even that way. What do you mean a lucky break? You didn't pay any attention to me or the game?  He's going to the Orient. Yeah, represent some liquor outfit, cordials, you know, that sort of thing. I mean, that's the job he's leaving, and it's a pretty good job. What's that got to do with you? Well, he says you'll recommend me to replace him if I want it. You mean you're going to work? Well, why not?  Elliot! Oh, Elliot! What? What in the world got into you? What's so funny about that? Help, Elliot. You weren't here. Oh, don't get up on, will you? Excuse me. Hello? Mrs. Larkin? Yes? This is Mr. Ballinger, your uncle's lawyer. I'm not at home tonight, Uncle Mr. Ballinger. You can tell him. Mrs. Larkin, I'm calling to tell you your uncle passed away this afternoon. I see. It's my duty as his executor to read you the terms of his will. Who is it? Just a minute, please. Uncle Philip's dead. Something about the will. Oh, hey, let me talk to him. Oh, hey, Billet. Uh, Mr. Ballinger, perhaps you don't quite understand my relationship with Uncle Philip. Hey, wait a minute. I'll cover the phone. What are you doing? I might not have some sense into your head, Angel. You may as well know what now we're broke. Hello? That's why I took Johnny up on that job. Hello, Mrs. Larkin. You had money a lot of it. Never mind that now. Now, you better tell that Mr. Ballinger will be glad to talk to him.  Tell him. Hello? Hello, Mr. Ballinger. Yes? You can come over right away. Yeah. Hey, how'd that taste, dear? What? The humble pie. I'm not exactly in the mood for that sort of thing, Elliot. Why didn't you tell me? You never asked. You just went along with what everybody believed about the Larkin fortune. You think that was fair to me? Well, it works two ways, Angel. After all, I was under the impression your Uncle Philip's worldly goods were practically in your pocket. Well, that's all there is to it, Lydia. I haven't left out anything. If there are any questions... No, no, it's all very clear. Yes. Well, good night. Good night, Larkin. Yeah. Amusement, Elliot, at the beginning of hysteria. Nine to go. And in the light of our discussion earlier... You can start forgetting that discussion right now. Huh? He's not going to beat me, Elliot. I don't want that money. I'm going to get it. Under the circumstances. The circumstances are unimportant. Appearances count most now. You mean we put on an act for Ballinger? Exactly.  No questions or answers. Except to the watchdogs. We can handle Ballinger. Huh. I suppose it's worth a try. Right, dear, what's the first move? Your friend, Johnny Gates. Johnny? You'll need that job now. You have a wife and a home to support. At that moment, you're forced to admit something to yourself, aren't you, Lydia? But Uncle Philip was right. Set your marriage to Elliot Larkin as a part. A hollow mocking thing that was never meant to be. Uncle Philip might as well be alive and laughing at you. Telling you that you can't win. But through it all, you determine that somehow, some way... you'll defeat Philip on his own ground. Then, on New Year's Eve, the night marking your first year together, Elliot called you up to your party. Yes? Just thought you might be interested, Lydia. I got the job. Johnny's leaving right away. How nice. Tonight I can drink champagne that's paid for. Oh yeah, and about that. I won't be able to make dinner until later. I'm helping Johnny celebrate. Don't worry about it. I meant to tell you we can skip the dinner plans. I'm meeting Marty Bell at the zebra club. The zebra club? Oh, don't tell me you object. Well, I certainly do, Lydia. I don't mind what you're doing. You know that, but you've got to stay away from public places. I'll see you tomorrow. Oh no, you'll see me tonight if you insist on going there with Bell. I'll come down to the zebra club. And what? Don't play the jealous husband, Elliot. That's really overdoing it. Oh, Marty. You're really very amusing. But I mean it, Lydia. I love you. I want you to leave, Elliot. Oh, stop it, Marty. You don't care a hang for Elliot. He doesn't deserve... I said stop it. There's someone coming over our table. An old friend. Really? Well, I don't see anyone. Oh, Mr. Bell and you. What an unexpected surprise. Yes, I dare say. I'd like you to meet Marty Bell and the old friend of Elliot. Oh, Marty? Mr. Ballinger. How do you do, Mr. Bell? Marty's keeping me company while I wait for Elliot, but he has an appointment. Maybe you sit in for a while, Mr. Ballinger. Oh, he's been a dear Marty. I'll tell Elliot for the long time. Nice to have met you, Bell. Yeah, same here. Goodbye, Lydia. Bye, Marty. Thanks so much. He's such a dear. Well... Lydia, I've been intending to bring this up for some time, I hear. Okay. Well, you know, when there's any sign of trouble between you, you're on dangerous ground. Well, Mr. Ballinger, I don't know what you're talking about. We're getting along beautifully. Where is Elliot, Lydia? It's New Year's Eve. You two should be together. Well, of course we should, but the night is only beginning, Mr. Ballinger. Wait, there's Elliot now. Well... Here's my story, Lyon. Darling, you remember Mr. Ballinger. Hello, Larkin. Oh, of course. Yeah, sure. How are you, Mr. Ballinger? Sit down, my boy. I've already taken the liberty of ordering a round of drinks. Oh, no. If you'll permit me, I'd like to offer a toast on your anniversary. One year, isn't it? That's right. One beautiful year. Yes. Oh, we can drink to that. And, of course, to your future. May you remain as happy as you are tonight. I hope Mr. Ballinger doesn't think it odd or leaving so early. I explained it to him. I've got to drive a friend to the airport. Oh, Johnny Gates? Yeah, yeah. Go out to Seattle on the midnight plane. What I didn't tell Ballinger is that I'm going through. What? I got my ticket suitcase in the back. Elliot, you can't do this. Why not? Well, because of what it might mean, Ballinger. It's suspicious now. What would he think when he hears you've gone flying off somewhere on anniversary? Well, he'll think maybe I've had all I can stand. For half a million dollars.  Look, I'll do anything you say. I'll stay away from Martin. Anything, Elliot. Just give me a chance. Oh, now look. Johnny's expecting me, Elliot. Yeah, and I don't see how I can change anything now. I'm supposed to be there. It must be a way, Elliot. You'll regret this yourself. I know you will. I wonder... What? What are you thinking? Maybe Johnny can help us. You come on up with me. We'll talk to him. Give me another rundown on that, huh? Oh, it's simple, Johnny. I would like an extra day down here, that's all. You're flying north anyway, so couldn't you send that wire to the company for me? Yeah, the hotel does cover you with the company. Yeah, that's right. That's right. That way, Lydia and I can be together on our anniversary. I'll be up there in a day or two. Well, I don't suppose there'd be much doing over the holiday anyway. Oh, no, not a thing. But of course, I don't want to beg off on my first assignment. I know I wouldn't be so good. Okay, pal, I'll handle it for you. Oh, well... Johnny, I appreciate this, too. Don't forget it. You've done plenty for me. Hey, one more thing. I don't like the idea of turning in my plane ticket. I mean, you know, just in case the company should check. Oh, I don't think they will. Yeah, but I'd rather not take the chance. Well, look, Johnny, it won't matter to you.  Well, if you feel safer, I really would, Johnny. Okay. Oh, man. I'll check into your hotel for you. That works. Oh, man. Hey, we better get going. Yeah, right away. Right. Yeah. Satisfied, Lydia? Perfectly. As long as we're trying to make it look good to Ballinger, maybe we ought to go whole hard. How do you mean? I mean, after we drop Johnny off at the airport, how about driving up the sober like Lodge? Wonderful. Yeah. Remember the first time we were there? A brand-new year. Brand-new life. I remember perfectly, Elliot. I'd love to go. I think it's exactly what Mr. Ballinger would like. Well, Lydia, for the moment you've won, but the worry of the future is on your mind driving down to the airport and watching Johnny Gates off on Flight 27. And all the way up to Silver Lake Lodge, you wonder about those nine long years ahead. It isn't going to be easy, Lydia, but somehow you're determined to make Elliot continue to see it your way. A few miles below the Lodge, you ask him to stop at a roadside store. I just want to get some cigarettes, Elliot. I'll be right back. Thank you for having me. There's some. Pack a cigarette, please. Take a booze. Take a booze. Take a booze. Take a booze. Take a booze. Take a booze. Hey, I... Special flight then back to the new year's Longstown Celebration. Flight 27 of Tremont Airlines, northbound for Portland, crashed and burned in an unexplained accident one hour ago. All on board were killed. It comes that suddenly doesn't it, Lydia, the answer to everything. Elliot, the money, everything. Yes, Lydia, Elliot was on that plane plane even if it was named only at this very moment as he waits for you in the car outside he is officially dead certainly unidentifiable and the words of Uncle Phillip will keep running through your mind if there's any time I will be your area to rock and die the entire problem is able to lead you to the survivor on the radio hey I was enjoying that please I'd like it quiet we'll be up at the cabin in a few minutes right now I want to think of the loaded target pistol in the gun case at the cabin of how lonely it is here of how easy it will be to dispose of Elliot's body in this wilderness on the gun case over Elliot's shoulder as the two of you sit in the living room the cabin before the fire that he's built for the occasion first year find more to go you know it sometimes I wonder right you use you stop it for example how many main crowd formations would you say there are two no that's only half right brush up on your aeronautical meteorology tell your eye and e-officer you want to study with the United States Armed Forces Institute you stop a it's easy it's simple if you don't want to be half right you use you stop a and now back to the whistler the marriage of Lydia Winters Larkin ended on a New Year's Eve at a place called Silver Lake Rod where she'd spend her honeymoon just a year before there's a complete record now in the files of the homicide division a record two of the persistence and determination of one of their detectives of his curiosity over the crash of a northbound airplane and the supposed depth of a passenger named Elliot Larkin of a trail which finally ended with a confession of murder under a cold white light at police headquarters gone Mr. Larkin oh well there's well no at all I guess I thought my alibi was perfect I figured Johnny Gates had put me in Seattle at the time of the crime you figure that out when Ballinger read you the will that's why I took the job weighing a little assignment in Seattle the night Johnny was leaving I did need the money I wanted the half million I would have taken the chance if I hadn't thought it was airtight and your alibi I blew up in that plane yeah but you know that's funny that night in the car on the way up to Silver Lake yeah and she asked me about some news flash I think that was about the plane so I wonder why she didn't tell me now a question do you know when PT boats were first used by the Navy around 1810 Robert Fulton of steamboat fame there's what is considered to be the grandfather of our modern PT boat his torpedo boat was 27 feet long and had six oars the boat was provided with four blunderbusses on swivels each one tended by a marine armed with pistols and cutlasses the horsemen were also armed the torpedo was placed at the bow and attached to a harpoon gun when the boat approached the target ship the gun was discharged and the torpedo release are far cry from the PT boats of today this is but one of many interesting facts which can be found in the history of your United States Navy featured in tonight's trans broad story were Bill Foreman as the whistler Doris Singleton, Victor Rodman, Lauren Stodkin, Marvin Miller and Byron Chains the whistler directed by Stirling Tracy with music by Wilbur Hatch is produced by Joel Malone and transmitted overseas by the armed forces radio service tonight's whistler was written by Joel Malone and Harold this is George Walt speaking and reminding you to listen again next week for another strange tale by the whistler


It's D.K. and I'm back for another video. Shoe Shouts to everybody tuning in. If you are scared, smash the subscribe button, give me a thumbs up, and do not skip those ads. It is August 9th, and it's time for us to get to this bag. In this video, guess what? I'm going to show you guys how you can get free money from Walmart. So stay tuned to the full video, and if you are scared, smash the subscribe button, give me a thumbs up, and do not skip those ads. We about to go on high right now, and get to this bag. Let's go. I think it's going to be a hidden chip off the river here right now. Game on with no flip. Let's go. Baby, hopefully you guys are good. So we can get to this cheddar. That sun is beaming so hard. Let's go. We are here to all this honest time bros to get this dough. You already know. How you doing, sir? Good morning. I'm doing great in yourself. You have a great one, sir. Order number two. All the kids about to go back to school. But now we ready to get this bread at 2.8 miles for 9.14. We here right now. We about to go ahead and get busy. Let's go. We're ready to get this bread. You heard what I said. Here we go right here, baby. They already got us ready. Let's go. The near bread to get this bread, you heard what I said. Hey, doggy doggy. Hey, doggy. The doggy I heard looking at me. Hey, that joint big too. Jump like this, huh? Step back in with the photos. Matt. There we go. Let's go. Order number three. After this order, I gotta go pee. Starbucks to get these bugs 4.7 miles for 9.02. Y'all know what we about to do.  Let's go. Thank you. Thank you. Hello. Okay. Thank you. Thank you very much. You have a great one. Just like that. We are here to jump off this Starbucks to get these bugs. You know what I'm talking about? We're here with the 4.02. We're gonna jump like it's hot. Step back in with the photo. Y'all know what I'm talking about? Matt. No bell. Let's go. Order number four. Sometimes the haters really wanna be you on the low. Chick-fil-A, baby. 7.02.2 miles for 6.75. We're here right now. We about to pick up the prize. Let's go. Hello. Good morning. Good morning. Thank you. Big family. How you doing, sir? Good. Thank you. You're welcome. Thank you. Excuse me. All for John and... Thank you. You have a good one. We are here to tell you they beat E.E. So there's a thing about this order. They did not leave a number. So, oh. John. Yes, sir. How you doing? I was just saying they did not leave a number, so I don't know where to go. Here you go. One, two, thanks man. You have a great one, sir. Order five and six. We could be at home, Netflix, and chilling. I heard a lot of people be stealing what I'm spilling. Hey. Comment below and let me know. Hey. I got a comment that said somebody be stealing. I ain't even gonna talk about it, either way or go. Two or three miles, two orders for 12.25. It's a great time to be alive. Order number six, we about to get in the mix. Walmart, one order, four or two miles for 11.75. It's a great time to be alive. Look. This one has 114 items. Comment below and let me know if that's a good idea. I don't know. We're taking the chance to get these beds.  Let's go. We are here at Joe Oscombe. We can count on people who care. We're about to get busy in here. I don't hear anything in them notes. Rick, I got Rick's key. How are you doing? I'm gonna have two orders. You got Jill and William, right? Yes, sir. I mean, you need my ID, right? What's that do? How are you doing this morning? I'm good, how are you? I'm still living. I can't complain. Oh, while I had this? Yeah. I have a YouTube channel. Huh? I have a YouTube channel. Oh, really? Yeah. And I do deliveries for DoorDash and Instacartist stuff. So I record while I do it. How's that working out? It's working out pretty well, actually. Yeah, people love it. Like 3,400. You can go on events. Yeah, thank you very much, sir. How are you doing? Aren't we all? I'm tired, too. I see you switched it up. The wife's in black now. I see you? Yep. So where do you buy your shoes from? Oh, you just had them for a while?  I've had them since forever. Yeah, see, I love them. You get new ones. Then you get new colors. They're my favorite. I just bought an all-white and all-black pair. Like, yeah, as a matter of fact, it was last night. Yeah? Yeah, you had all-white ones, man. All-white ones are the best, my far, the best. You do YouTube? Yeah. Yeah, I see one of your videos the other day. You did? Yes, I did. How you see it? Oh, you just went on there and you saw it? You know Carlos, I think? Yeah, yeah, yeah. He was like, what do you mean? Because that one dude that also takes up the YouTube. And I went on there and I saw the videos. You're good. I like YouTube. Thank you. I appreciate it. We grind every day, man. You got to. Hello. How you doing? I'm doing fine. I'm still living. Yes, ma'am. You know what's so crazy? Every single time y'all coming out with the grocery, somebody coming every time and never fails. OK, so this is William. OK, so William in here right quick. So we got William. OK, so I'm going to take William to the car and I'll be right back to get the other one. Thank you guys very much. So we're going to put this one right here in the trunk and then the other one in the backseat because the other one is a little bit smaller. It seems like, but you never know. Because the best is to be, you know, trick you a little bit. You know that, ma'am? So we got to go get busy right quick. Ma'am, ma'am. Grab these three. Ma'am. Ma'am. Back on in there. Then we're going to put. I'm going to grab this other box. Grab the box key. Put this over here. Slide. Put this in here. William, you've got the eggs and then you've got to get the bread right here. Yeah, and put this right here. And then I'm going to put the milk right there. Bam, bam. Close that. We back again, clap again. We got to get this other order. Get an order that we're going to get it on. You know what I'm talking about?  OK, I'm back to bother you again, Rick. Have you guys been getting a lot more of these, like, orders? Or has it been time to the same? Yeah. Thank you very much, Rick. You have a good one. Just like that, we are here to drop off to us. Go order number one. It's time to get it done. We're about to have some fun. We're about to get on the run. You know what I'm talking about? Let's go. Hopefully we don't have a car coming. I'm blocking the whole thing. I'm out of pocket. I'm trying to get this done and get on the run. So we can get these fun, you know what I'm talking about? Right here. Hot, like on Dotto. We're about to get busy, move, kind of switch. You know what I'm talking about? I'm going to have a few bags. And the next one does contain alcohol, so we got to get the ID ski. You know what I'm talking about? Step back in with the phone. Let's go.  I'm going to drop these off first, and then I'm going to go back and get the little bag, so we can get to that bag. And I'm going to put this right here. Bop, bop, right in the doorbell. They got to get the ID so we can get busy. You know what I'm talking about? Let's go. They about to be cutting the grass, so it might be pretty loud, guys. So I'm going to have to speed it up or something. Hello, how you doing, ma'am? Have you worn me so I can put it right here if that makes it easy for you? Yeah. I also need your ID. Oh, sure. To the medicine. Yes, ma'am. This is a beautiful house, by the way. Oh, thank you. You're welcome. I'm going to take that with me right away. OK. The sun really decided to start poking out now for me. Now I need your signature right there. Thank you very much. You have a great day. Thank you, you too. You're welcome. Jeez, they're trying to get us right, ain't they? Oh, I'm going to put this right here. So this is two, or this is you? This is the other one, this one for the back seat. No, it's only one order. It's only one order. My bad, I ain't got one. I don't got a handheld device. Why you ain't got one? They are the pocket, man. Everybody's supposed to have one of them joints. Yeah, I know. This week, if people be taking them home, bro. Oh, see, when you take it home, that's on you. I don't know what to tell you. I think it's y'all should have lockers and every person get one. Yeah, I don't know why. Because you can put in your locker and just put the joint right there. Walmart be trying to act gross. I don't know why. That's going to make it worse for everybody. We are here to go about this order to get an order.  They got good bars. This is a fully carbide. You can have a look in my room, you know what I'm talking about? This joint is packed. So much dirt, bro. Just in case you want to come over here and get busy. Let's go. Put that under the arm. Put this in the hand. We're about to get these bands.  And I'm a cold.  We're about to get busy already, you understand? Jump like it's hot. Put a couple down. Playin' we a buck you down. Look at that tombstone, baby. My favorite tombstone. That tombstone. Mountain Dew. You got some smuckers. Comment below and let me know if you like some smuckers. Those smuckers be bang. Have you ever put the smuckers in the toaster? Woo, woo, woo. Don't do them all, man. Smuckers in the toaster, baby. Pull up in the tends to roaster. You want to come out? Right here, around. That joint got a little hole in it. They got some of everything in this joint. Potatoes, I got to fill up the whole saw wall. I got to fill up the whole saw wall, baby. We ain't playin' no games. Just throw those drinks. They got those drinks like the sparkling water. My aunties drink those all the time. Sparkling water. She's gin from all these back in the day. With the Mac and the K. Please don't try this. You know I'm a spray. Jump like it's hot. Jumping like it's hot. That's everything. About to get this green orange one. Let's go. Order number seven. Even when it's going terrible, keep on progressing. The Meltdown one item 2.5 miles for 6.25. We here right now. The Meltdown is in just in case y'all didn't know. We about to get this done. Let's go. We are here at Denny's to get these pennies. You know what I'm talking about? We about to get busy. Hello. How you doing? I'm going to have a pickup for Victoria. Appreciate you boss. You have a good one. We are here, baby. To get it done and get on the road and get these funds.  I'm going to go like a trailer. Look at this thing. I need to cut these buses a little bit. Cut them buses a little bit. Hit them photos. Oh snap. I forgot to drink. Let's go. I forgot to drink. I forgot to drink, baby. Luckily she told me. I heard somebody talking to me. I'm like, what's going on? I'm reaching my pocket. Rocking in my pocket. I'm going to pop. Let's go. Order number eight. I'm dealing with the baits. Have you had a new escape? Walmart, four orders, 15 miles for 30 miles. We had to look. It was five orders, 23.9 miles for $36. But we had to switch it up. We had to take one now, baby. So we can get busy. All right. All right, PNMC. Let's go. All right. Do you want these in the back seat or back here? I'm going to put these in the back seat. I'm going to try to put all of them back there. Forget it. I think you should all sit. I'm just drawing. All right. Here. Oh, this is for one person. This is for one person. They all got the stickers on them with the names. All right. Appreciate you both. What is this? I'm going back there. Appreciate you. This is a good one. This right here. And we're going to put this goes with that. This goes with that. This here. Put that right there. Put this right here. And they put this right here. Let's go. Joe, with the first order to get it in the ordering. You know what I'm talking about? We already hit them with the scans. Okay. Now it's time to get these bands. You guess what? We are going to receive $50 for this order. We were at Walmart waiting for over 30 minutes. And they give you an extra $5 per order. Huge shout out to the subscriber who told us about that. That was a while ago. So if you guys ever have this issue, reach out to the door there so you can have a blast. Let's go. And then with the scans. Now it's time to get busy. Now it's time to hope y'all with me. We're about to move kind of swiftly. Look at them round, baby. I've been rhyming all the time. I'm on the grinding. We're going to continue to keep on shining. Shout out to the haters. Shout out to the faker. Shout out to the baby. Step back. With the photo, y'all know that. Smack. Go around. Oh. Let's go. Order number three. It's time for us to get busy. Hit it with the scans. Get it. I'm going to leave it out here a little bit because I don't want them to be it's not going to open the door. You know, we already know you're about to go hit them with the photos. Smack. Y'all know that. Let's go. Oh, my door. Let's go. Let's go.  Nigga go and get some money.  We are here, John, this last one and get it done. They got these bins. They about to get it in. They got big bins. Big bins. They must have had some sales on some bins. I saw some other people when they were taking out some orders, getting these same exact bins to get it in. You know what I'm talking about? I'm trying to take all these at one time while I'm doing the grind. Oh, what is that in there? Oh, it's the wheels in there. The wheels in there. Hold that joint right there. We're going to hold the joint right there. Let's go, baby. This joint is so steep. I'm tongue ball. I can only imagine trying to come up this joint in the winter time. Woo. Woo. Car's sliding down so much. Let's go. I'm trying to squeeze through this, John. I know I'm probably walking crazy. Ooh. Drop that right there. Slide that joint right here. Go on. I'm going to turn this way. Make sure we set it right. Pop one. Make it look nice. Stand right there. Step back in with the photo. Yard noddles. Man. I'm going to do it all. Let's go. And just like that, it is the end of the video. I hope you guys enjoyed the content. Today we made 125, 25. It's a great time to be alive. We came out here and got busy. I hope you guys are with me. We were kind of shifty. We got done like an 1150 or somewhere around that area. But guess what? We did get that extra $20 a week on how we would be pumping our color from Walmart because it took them over 30 minutes for them to bring out the order. So if you are doing some insert pickups and it's taking that long, make sure you give them a call and they're going to give you $5 per order. So we had four orders. So we got extra five dollars each order. So we got an extra dub, Steve. We went out there and got busy. I hope you guys enjoyed the video. Make sure you lock in some more because it's going to make down. We ain't playing around. 2022 is still best. Guess what? Tomorrow we're doing some Amazon Flex. Flex. Flex. So make sure you stay through the full video. I'll see you guys on the next one. We going, we going, we flowing. You already know it. It's DDK and I'm on my way.