okay thank you bumblebee is looking amazing yeah time to head to the garage and see what needs to be done oh yeah here moto adv garage it's like a little adv course here just to get to the adv garage oh there's a bike from Austria hello hello how's it going one shift later oh yes there she is oil seal and oil change brake pad rear and front engine oil and oil filter change yeah brake fluid control and rear brake brake field change okay ah this is the old one thank you so much thank you that's great this is the old brake wow yeah it's nearly at the end hey just one millimeter so you think now it can make it to england this motorbike would make it to america now yeah oh good great stuff thank you so much thank you so much yes yeah bye bye see you guys so there we go bumblebee good is new ready to start the last leg back to england the next day i think somebody is hiding in bumblebee's cover oh hello well i guess i just leave her alone i just checked the freezer and we forgot some juice in the freezer so this is completely frozen now while we were drinking during the day i guess yeah yeah the sun all melt that no worries bumblebee's looking pretty good this morning no oil leak anymore which is good that's amazing and look how clean bumblebee is as well oh no i know i've said this a few times during the trip but honestly i think bumblebee is in the best condition she's been in for a long time everything is fixed oil has just been changed we've got our new shock from kazakhstan we've got our new chain and sprocket from kazakhstan we've got our new fork seals in the front i mean bumblebee's ready for the last leg one two three all right good morning world welcome back to our guiness world record attempt to become the youngest pair to circumnavigate the globe by motorcycle we're here in the city of antalya in turkey and we've just had a really really good break good rest a very productive break yeah i think in total we edited eight videos but yeah we are so ready to continue on yeah i mean when we arrived in antalya i was like pretty sick i couldn't breathe through my nose we'd been on the road for a few days whilst i was sick and it was just like oh i just completely crashed yeah for a few days this city here of antalya is so charming they have a really really beautiful old town and of course we had some time as well to walk around a little bit and just enjoy this holiday destination yeah it kind of felt like we were on holiday yes except that we had to do loads and loads of editing work yeah which way is the ocean then yeah i can you go to the right here there it is the Mediterranean sea nice so here is the harbour of antalya and this is the old town here and you can see all of the old walls of the city this whole section down here in the valley was a walled city and we had to walk all through here yesterday down to this harbour it's just so beautiful here beautiful place antalya but i was kind of surprised because there's actually no beaches here in the city it's just a harbour so there we go the beautiful city of antalya well we've got an awesome ride coming up and an awesome place to visit so let me show you guys where we're heading today so we are here and today we're going to be making our way through the countryside of turkey taking some smaller roads to reach one of its most beautiful sites pamocale so this place pamocale which means cotton castles is a natural thermal hot springs and it just looks like an absolutely spectacular place and i think you can swim in the hot springs so i can't wait to see it yes google maps estimate it will take us three hours and 45 minutes and it's already 10 o'clock so better hit the road let's go our bubble bee is flying along at the moment and it just feels so good to ride this bike knowing that the condition is just really good right now we've got fresh oil we've got fresh grape fluid we've had the fork seals done yeah we also have decided actually to stick with our tires we were asking osman for his honest opinion and he said he should be actually fine with these tires so we were like yeah let's just you know let's just try it and it will be really cool to find out if we can actually make it on these tires which we have replaced in america san diego actually yeah but these are the dudlock trail max mission tires and our first set did 16 000 miles before we changed them so i think at the moment it's been around 14 000 miles since we left san diego so it's like just on the limit just where we were last time by the time we get back to england we'll probably have done even more than 16 000 miles on these tires yeah it's really cool best tires in the world totally yeah it's just so good to have the peace of mind knowing that bumble bee is like top at the moment top condition i think we will make it to england like that you know i'm ready and bumble bee is ready guys we found our dream house look at this look at this abandoned villa in the mountains cool i think it looks really cool let's check it out oh wow oh my god you said that just as i was thinking like are those rocks gonna fall so we just stopped here to have a lunch break but now we've stopped to buy a property oh nice some sort of factory or something going on really does not look structurally sound though hello hello welcome home i do think though that it's a little bit too much of a renovation job i think that requires a bit too much work it's just been such a nice road today finding through the mountains really kind of peaceful a peaceful ride so what have we got going on for lunch is that some bread ah but but just bread on its own or if you got something to go with the bread ah yes cheese the good old bread and cheese there you go yeah i'm kind of over kebabs now when we entered turkey we were just like kebabs kebabs but uh now i'm actually looking forward to a nice bit of bread and cheese we've also got some corn like some fried or cooked corn we've got some peanuts it's not bad hey i love fried corn yeah this is really tasty like barbecue flavor and if you ever ask yourself what the best travel knife is it's this one opinel carbon steel yeah it's so sharp yeah i show you normally can't cut can't cut yeah tomatoes are notoriously difficult to cut wow and that's like after years of using this knife yeah seriously we've had this knife for years and we've never sharpened it it's so good yeah it was actually a present for me for my birthday i think it was years ago from a friend called annus thanks annus and it used to be engraved with challenge accepted she got it for me when we were walking the tearoa trail in new zealand the 3000 kilometer trail from the top to the bottom of new zealand so this knife has been through a lot it's actually so funny because yesterday we realized that we actually have the maps for turkey on our garment which is perfect because anyway we run out of internet so we can't really root with anything else so we're using the garment and the garment is really crazy because it has adventure rooting settings so i will put today like a little bit of adventure rooting on there but the garment is just taking us like right and left this little dirt track up the hill i mean it said it was only like 45 minutes longer than the than the highway to get to pamacale so we were like oh that doesn't sound too bad but now look where it's taking us i don't even know where we are i have no idea there's like four settings on garment adventure rooting it's like not adventurous to like the most adventurous and we are on like the third most adventurous setting yeah we're always looking for an adventure and then 10 minutes in where's the highway okay we've got some water on the road here so it's definitely been raining here so i think we're getting closer and closer closer and closer to the rain clouds yeah it does not look good look at that there's already some white i don't know rock formations going on up here according to my map we've got six minutes to go cool cool i think we might have arrived yeah hello hello thank you thank you that's nice hey can you believe it bikes go free yeah i think we're definitely in the right place there's like a million tour buses here oh my god i think this has to be the the most touristic attraction we've been to so far in turkey yeah it looks like a popular place hey let me see if i can get through get to the front yeah whoa there's a whole crowd of people here as well oh no oh can i squeeze through here just about be careful yeah yeah okay yeah go around here my plan was to park somewhere here okay yeah we could just go like boop yeah i guess we can just go yeah that's a long ride my bubble bee so we've had a look and the price is 30 pounds per person if you want to go swimming and we do want to go swimming so we've decided actually that we're going to go and camp nearby here tonight now and then visit tomorrow morning because it's super busy right now there's tons of people everywhere and the park actually opens at 6 30 tomorrow so we reckon if we can get up early and get here at like 6 30 then we're pretty much going to have the place all to ourselves it will definitely give us a chance to have a better experience because it is already quite late it's like four o'clock and at six o'clock it's dark pretty much so we will go now find a camp and then tomorrow morning return so we're just going to ride around the other side of this thermal pools area and just see if we can get a view which is basically the famous view of all of this terraces of thermal pools but you said there might not be water in there at the moment hey yeah apparently i read on some reviews that they are drained like there's no water inside at the moment in the pools they sort of create one pool for tourists that they can like swim in there but all the other pools there aren't there so anyway before we find a camp we're just going to check out the viewpoint see what this place is all about there you go we found some pools hey so we're now down the hill from the actual site but there's still some cool pools here we found the viewpoint here from the bottom and pretty much up there are the pools and you can see like a bunch of people actually walking down along here so it's a very impressive but as well very busy site beautiful there we go we can see a little bit of terraces yeah i mean it's a pretty impressive site and people doing like park lighting up there as well that's pretty cool so we found a place on our overlander which is not far away there's apparently a wild camping spot we will just head there now and see if it's possible if we can camp there yeah apparently from there you can actually see the terraces okay let's check out up here apparently there's supposed to be some camping spots up on the hill ah this this spirit man ah it's quite a rough road that's why people call wild camp up here because no one else is coming here i don't know man it's pretty tough maybe it's worth to jump off and have a little look up there and see whether it looks right before i try and get up this hill yeah let me try and see if i can just put the stand down no i can't i can't put the stand down okay let's try here no i can't i can't put the stand down the hill it's too much of an angle okay can you walk the bike i will try to jump off yeah i can't it's got like a lock on it it's this auto lock it makes it really tough to go backwards down a hill it's like very close but it's just about all right okay should we have a look up there oh it looks actually quite good up here got some flat grass here and there's a couple of vans already camping here so yeah yeah i reckon if i can make it up that hill then it's absolutely fine to camp there looks looks fine okay and the rest of it looks pretty good as well it's just this one bit so if i can get up that one bit and just keep going i'll just go up until the grass just up here okay so where it goes flat i'm just going to go for it hey yeah okay so i think i'm going to take this line here a bit of a rock step there but it looks like i can just stay in this little groove and just basically just power my way all the way to the top it should be all right all right okay let's see if we can get ourselves up this hill okay no matter what don't stop don't stop nice oh it's not that hard really not when you've got bumblebee okay awesome good okay good we're up unfortunately levy has to walk so there's a couple of campers there on that flat bit okay if you want you can stop here and then we can walk up the hill and see if we walk up the hill have a look yeah okay this one's way too steep for me to get up no way would i get up here so you can see the terraces from up here just about crazy everything else is just like normal hills and then suddenly there's just this huge white terrace yeah remarkable landscape okay we checked out the whole area here but this not the very best flat spots around here i think those camper vans got the best flat bit there but we've decided that we're going to go sort of at the beginning here oh yeah maybe just over here yeah this is a pretty flat area okay this should be fine okay yeah okay and look we still got a beautiful view of the hills all right let's set up camp wow there's nothing worse than pitching up the tent whilst raining yeah i can't believe the rain clouds just came in as we were pitching up the tent i think we did that in record time let's just hope that it's dry on the inside good evening guys we made it wet and alive i still set up the camping chairs i don't care it's so ridiculous i mean this day started so nicely we had such a beautiful ride yeah and then it all kind of changed when we got here it was busy we were like oh let's not visit this place today and now we're sitting here in a field in the rain we just had to break so many days but i don't know what it is like i'm tired you know i'm just tired it's about five o'clock now but i think at six o'clock we will sleep so we're just going to jump into the tent and probably cook up some noodles and that's it from us today we hope you enjoyed the video if so please give us a thumbs up subscribe to the channel share the video with your friends and family comment below and we will see you next time


and mobile technology for last four years, I have been, I have delivered quite a large enterprise, and as part of it, you know, somewhere in last one month and a half years I came across the fact and I really realized that it's a fairly complicated beast to aim, so I went a bit deep and that is the experience that I'm going to share with you guys here. So, you know, if you are impatient and you don't want to go with me, you can always refer the slides here and the app that I'm going to show you as part of the presentation is, can be found here, I will again share the link at the last slide as well, so don't have to worry about the app. Slides, if you want to hurry up, you can take the slides right away on your mobile and strategy. My Twitter username, if you want to follow me, I regularly post on Twitter. So, let's start. So, I hope all of you know what Webpack is. Who knows what Webpack is? Or use Webpack? Okay, quite a few, awesome. And those who did not raise your hands, but use CRH, create, react, type. Awesome. So, all these guys, you did not raise the hand earlier, but you use create, react, type. That means you are using Webpack, just don't know it. Okay? So, that's the beauty of create, react, type, type. It abstracts away all the complexities of Webpack, but at the same time, when it abstracts away all the complexities, then whenever you want to do something specific, you're going to have a little bit hard time. So, thankfully, create, react, type has an eject functionality by which you can eject the entire configuration, including Webpack configuration, and then you can go deep dive as to how I'm going to show you in this particular session. So, for those who do not know what Webpack is, this is a quick primer for you.  Angular developers, React developers, new developers, all of them really love Webpack, and all of their CLIs are using Webpack as their base build system. Why? Because there are a lot of features that are present in Webpack. So, one of the key features that is, you know, there, and which is loved by developers is a versatile loading system. Now, what is versatile loading system means, even, right? So, basically, it can read and understand a lot of different types of files. So, if you look at, you know, predecessor to Webpack, Gulp, Payble, etc., Gulp and Grant, etc., right? They were spaghetti of plugins. Here also there are a lot of plugins, but the core Webpack itself also can understand the JavaScript files, CSS files, image files, like PNG, JPEG, JIF, SVG, you name it, font files, PDF files, you know, all these type of files are something that Webpack can load from file system and can understand them, and so it can process them. What do you mean by process? So, the processing would be essentially bundling some of these files together and also splitting some of these files out. So, I'm talking two different things, which are, you know, opposite of each other at the same time, really. So, let's say I have written an application having 100 JavaScript files. I can bundle them all into one, or I can bundle them into one and then split that one into five, right? So, bundling and splitting. This is the most biggest power of Webpack, probably, is that it allows you to bundle, not just our system files, it allows you to bundle CSS files, it allows you to transform SCSS, less, stylus, different styling files, again, bundle them together, or you can then split them again if you want to. You can take JPEG, JIF images, or SVG images, create sprites out of it. So, all these bundling and splitting in is the true power of Webpack, and that's why Webpack is so powerful and is loved all over the world.  So, those who have debt with releases, you will know that, you know, the moment you release the application, you know, new files are not reflecting to the end users, and then everybody's having pancake calls now. So, don't have to worry about it anymore once you have Webpack. Your files will always have uniquely different names every time you release them. So, your old file names that old release users are born in. So, you don't have to worry about it. So, we are going to, we are going to talk about this bundling and bundling tuning in the forthcoming part of the talk. And the second part, which is, again, very, very cordial, is the pre-shaking and verification. So, if I have hundreds of files written, obviously, you know, with lots of ports commented because this does not work right now. This used to work earlier, I don't want it now, but I don't know to delete it, etc., etc., right? Or I have a job, jquery.js, I forgot to write jquery.min.js, etc., right? So, it will automatically minify for you. You don't have to find out the minified version of minify. So, it will do minification for you and it will also do pre-shaking for you. Now, somebody, I forgot to show what pre-shaking means in Manjula in the morning, in Nepal. So, basically, if you have five functions in your JavaScript and if you are only referring to two of them in your other parts of the application, you can intelligently understand that only those two functions are really required for you in the runtime. So, it will drop the rest, so that the dry news will fall down. You don't need them, let them go. Same thing. Lastly, it is highly customizable and plug-able. It is easy to write a plug-in to enhance the function that is not available, but you want it. So, that will be the key reason why the ecosystem is very thriving here. About 250 logins exist for Webpack and a lot of new things are getting written added to Webpack ecosystem. That's why Webpack is so popular and being used. But if we use all that goodness, does that mean we can rest in peace? No. Of course not. Just because it has a lot of configurability, it does not make it a smart system. So, it has some algorithm, obviously. It tries to apply that algorithm and there are thousands of projects, hundreds of thousands of projects getting written. So, not every project turns out to be right. Then, all these projects are using different different libraries. Those all are written, maybe sometimes in past, sometimes new. So, every library has its own source. So, the system is not a smart system. So, sometimes there is a little bit of nudging here and there. You need to tell Webpack because you tried, but you know, you will do it this way, you will do it that way. So, then it will do it correctly for you. Why is it important? Because if you don't do this, then you are going to get big bloated bundles created by Webpack. I said Webpack is two copies of a bundly. But that bundles can sometimes be created in an incorrect fashion and you get the biggest big bundles. So, you know, you are loading your homepage and I think Manjula again mentioned that her time to interact was 8 seconds or something and 440 kb was her bundle size. So, that is a very good recent bundle size, I would say 440 kb. But what if we have 2.5 mb of bundles size? You know, 1 mb takes about 10 seconds on a slow 3G network. So, if you have 2.5 minutes, 25 seconds the user is not able to do anything.  Nobody is going to stay on your application then, right? So, loaded bundles is absolute noodle for everybody, right? And all of you, whoever are developing with Webpack now that you know Webpack is there incorrect reactance, right? Check what is your bundle size, yeah? And if it is really big, then you really, really need this session's content for it. Okay, so that's what we are going to do. We are going to try and fix this big bloated bundle. Obviously, there is no one formula that fits all here. I'm going to show you some specific examples and hopefully that will inspire you to look at other cases whatever you are going to deal in your situation. So, I start with my product's experience first to just give you how this is important, the bundling 100 to be. So, this is how my Angular application, yeah, I'm not a reactor actually. So, this was my Angular application before I started tuning, yeah?  And it's okay because my main applications were only these two. These are the ones which are getting downloaded on the home page. So, it was not terribly bad, but still 5 MP was too much for me. So, I started looking into what is happening. I went and did a lot of research and pilot tuned it and this is the after I have done my theory, this was the effect that I got about 2.6 MP without GZIP. So, it's about 700 MP GZIP, which is okay. Which is not terribly bad. And again, I still had the AOT compiler, something Angular forcefully injects in my sometimes it injects. So, I need to remove it so it will save me about 5 MP. So, I'm just close to getting there. So, but that was the thing that I could save almost 50% of my JavaScript that was so what I realized was 50% of JavaScript that was getting shipped to the browser was useless. It was not even getting used, right? And that is something I hope not for me. So, I'm going to show you how you can also you know look at your applications bundle and do similar access test. So, in order, how do you go about it? In order to do this the most important tool is already built into your webpack system. So, if you are using webpack, you have that tool and that tool is called JSON, okay? Webpack hyphen JSON. Now, those who are using createreactor at this juncture createreactor does not have a way to pass this particular parameter to webpack directly. So, only way out for you is to do a separate clone, eject it and then run with the JSON pack. In Angular CLI word and new word, thankfully you can pass the JSON pack already and you can create the bundle report. Basically, it creates a bundle report for you in a JSON format and that formatted report is really not really usable or comprehensible for the user, I mean any user. So, then there are couple of tools that people have written which can pass that JSON and create a meaningful visualization for you. So, why three three tools? Because they offer different type of output for you and we are going to see all the three briefly. So, instead of reading through here I am going to show you. So, here is the webpack's own tool, webpack analyzer, webpack.github.io analyzer. So, as you can see I have loaded a JSON file here. The JSON file is something that gets created by the webpack and it tells me that there are three chunks and fourteen has had 164 modules in it etc. and I can see here all the chunks. There are three chunks, it gives me details for each some chunk size and it also tells me all these 165 modules that we spoke about here are all the 165 modules that are there. And the most important page probably I like out of this is the hint which seems to be good in this particular demo app that I have but in my actual production app I had pages full of hints here because I know a lot of duplication. So, basically I was using let's say Moomin.js in this chunk and that chunk and that chunk. So, I was pushing the same JavaScript into three chunks or to the end user. So, he said why are you doing that? Can you take it out and move it into a common chunk so that it does not get repeated. Those are the type of hints that this particular analyzer is very useful page for you to use. But what I don't like about it is it doesn't give me very good bird's eye view about the sizes. So, that is where I really like this visualizer from Chris Bateman. So, it gives you what is known as sunburst chart. So, you can select the chunks, you can see all the chunks and you can see individual chunks. For example, this is my vendor chunk here and it tells me now that 100% of vendor chunk is from the old modules only. So, everything in vendor chunk is from the old module. Out of that 23% is my load-dash analyzer.  Open layers is about 20% etc. So, it is a very beautiful representation of, you know, where am I spending large chunks in large parts of my chunk are going. Right? And this is another library called Thors bundle analyzer. I like this one also because it clearly tells me which library, where is it, which is the largest straight away. There is OLJS, there is D3JS. And, you know, my application code is here, the blue code. Yeah? This is my application's code. Okay. So, those are the, by the way, while we are here this will be the demo that I am going to use because the next slide will show that we just come from here. So, yeah, that's the next slide. So, I made a very simple app for demonstration because obviously it's a, you know, it's not a real-world app. But I just, you know, took five pages or five components, yeah, and one header. So, the first page or the home page only uses bootstrap to create one table button that's all. And to lay things out and also the top nav and all that. Then there is this movement.js page using movement.js to just do something. Because it's a demo, obviously. I use openlayers to create the map and I purposefully am, I have throttled the connection right now. So, then I use another page to use loadash pick function. Yeah. Just to demonstrate that I am using loadash and one D3 page. Yeah, that's, that's my application. Essentially, my application uses ViewJS, it uses D3, it uses movement.js to openlayer and loadash.  And then we were seeing, this is, this is how the thoughts bundle analyzer look like. Yeah. So, obviously, you know, I started thinking, boss, why is there, I have such a big openlayer sjs sitting in my tour, right? Then I get this D3.js looks terribly big. This movement.js, okay, there is movement.js library, but what is this big item from movement.js? That is the local builder. Yeah. If you zoom in and see there, it has Russian and Armenian and Italian and all that. I am not supporting those languages but it's still there in my application. I did not ask for it, but it's still there. Right? So, that's where Webpack has gone wrong. Yeah. Then there is also load.js, which is fairly big for me, right? So, those were my leads that I could get from, you know, analyzer. So, that's what you guys need to do. You need to somehow create this and load it up and try out, right? And last time, last and most important thing that I realize here is that I have only one render.js file. We need everything that I need for this application to work is there in one js file. But really do I need openlayers D3 in my home page? I don't need it. But it is still there. It is going to get downloaded. Right? So, first and foremost thing that I need to really do is for lazy loading. Strip out everything and anything that I don't need on my home page. So, my home page performance will go better. Okay. So, from this point onwards now you will actually go a little bit deeper into the code now and I'm going to show you how small small changes in your code or configuration files can lead to, you know, removing these issues. Yeah.  Yeah. So, this is how my, sorry, I don't know whether I'm thinking. Okay. So, this is how my Vue.js file looks. Yeah, I know that you guys don't, I don't expect you guys to know Vue.js, but it is very similar to how React would have done. So, I have components, my components, movement page, load-page, all those components and I have a router which loads all these things. Right? But what is important to note here is that I have statically imported them here in JavaScript, statically. That means when the code parsing happens via Webpack it is going to load all of them and hardwire them into the application. What I'm going to do is I'm going to change out dynamic import rather than static import. Now, dynamic import is not a JavaScript thing. It's something that is Webpack has given value. So, normal, non-Webpack applications are not available. So, instead of, so I remove, so anything that is in the red is removed, by the way. Anything in green is added, yeah. So, I removed all these static imports and I go for this import with the curly brisk. That is the dynamic import facility. This is exactly same facility that is available in React Router as well. So, if you are using React and if you are not doing lazy loading, this is how you need to do in your React applications. Use dynamic imports. Immediately whatever is here will be created as a separate chunk for you. So, and actually it's a movement page or component referred movement, yes. That means now movement is not going to come in your application. So, that is the kind of benefit you are going to get. In this dummy app, this is the benefit that you are going to see. So, before I, the earlier application, home page chase was 358 kb and after it is 39 kb. So, like 90 percent input. That's a huge, so that's why you have to attack if you are not using lazy loading. That should be the first thing that you should always attack. Move on to open layers now. So, this is my open layers. Open layers is a chart, sorry, mapping library, you know, Google maps, right. So, this is how I was using it. Open layers, import OL from open layer and then OL had variety of functions. OL.map, OL.tile, OL.protection, OL.view, etc., etc. So, this is the typical code of creating a simple map for you. But obviously, since it is import OL from open layers, it is bringing the whole layers library, right, which is not a ES2015 library. Open layers, the original version is a common JS based library. Now, this statement probably is going to stump some of you guys. So, just ignore what I am saying. Just whenever you are Googling, you find out libraries within ES2015 compliance. And open layers fortunately has a library called OL. Same codebase, but exported as ES2015. So, we have to start using the OL library now. That is the key thing that we have to change. Once we start using the OL library, yeah, I removed the import OL from open layers and instead I used, I started referring from OL, slash, layer, tile, OL, slash, map, etc. Now, why this is better? Because here I am specifically saying I want this module out of your OL library, that module out of your OL library and that's why it is only going to take those many things, so you have to pre-shake everything else. And that's why if you want to use pre-shaking, you must need, you have to have ES2015 based libraries. And this is one example where I could fortunately find an ES2015 library, so I used it and the result is that otherwise it was 46kb library for me, now it is 86kb only. That is the benefit that I want. Same thing you will be able to see in case of D3. I am sure for maybe 50% of you would have been exposed to D3. And typically this is how you would have used it. The older version is D3V3 if you have used D3V3 was always important like this, start as D3V3. Now D3V3 again was a common JS based library and D3V4 is a ES2015 based library. And now in V4 they have also split everything out into individual modules, separated out and that is why I am saying because I do not want your D3, rather just give me D3 selection because that is all I really need right now for my requirement. And I change my code like this. I remove the original start as D3 and I just import one function. There was a lot of talk about pure function. So this is just a pure function so everything else just goes away. You don't need anything else. I then just use that new function that I imported everything. That is also a highlight that I wanted to underscore in all these stages that the changes are minimal.  So that's why it's a very important activity that you should be doing in my opinion. And this is the improvement in this dummy app. Don't go by the numbers because of course you are not just using D3 select. You are using many more functions so you will not get such kind of benefits such as 85% benefit from 71 pp to just 9 pp. Now, these two cases that I showed earlier to you is where using the ES2015 and reshaking could help me to optimize my bundles. But there are other cases where you don't have ES2015 library. They say low-dash. Now that segment is half pro. I come to that. But low-dash is common just like ES2015 library.  So if you have something like this import and underscore from low-dash then obviously the entire library is coming. But since it's a common just library even if you do something like this import from low-dash pick it will still import the entire library because that's how ES2015 works. In fact, it's not able to do cliche if the library is not ES2000. So this statement can mislead you. Sorry, I'm switching times. Even if I have done this why am I still getting the whole low-dash? Because low-dash is not a ES2015 library. And now I said half true because low-dash-ES there is a library called low-dash-ES which is ES2015 library. You can use it. But that will only serve you if you are the only one who is using low-dash. Let's say you had a library import third party library which was using low-dash your low-dash-ES is not going to be useful because that low-dash is still getting used. No option. So that's why you have to nudge webpack in a different way now. And that's why the plug-in ecosystem really comes handy. And if you look at the plug-in ecosystem and loading this low-dash model replacement plug-in rather than writing this low-dash webpack plug-in which is a plug-in written by low-dash guys themselves. And all you need to do is with the webpack configuration file you need to give the reference to that module. Now this webpack configuration file those who use create-reactor you will not find it. Those who use Angular CLI you won't find it. You must eject. And then only you will find this particular part. So, but yeah sometimes you know benefits outweigh the AS that has been given because see here from 23kbm down to 3kb. So that means there is a benefit of doing eject and then going to some configuration. Second such example is movement jays. Now if you remember I had shown you a screenshot I have just blown it up for you. So you can see Russian and I don't know EL, NL, I don't even know Italian. Yeah, lot of languages which I am not supporting really. Then why do I need to have movement jays course translation in all those languages. Even my own course translation in those languages is not there really. So, but again that's how movement and webpack are not really ready to talk to each other. There is a long thread on movement jays because issue where people are saying why don't you fix it then they say no that's how it works. Webpack should fix it. Yeah. So, yeah it happens that to open source languages don't talk to each other nicely. So thankfully there is a written plugin from webpack itself which can help us. It says context replacement plugin and it says whenever I come across a part that which says movement search of else I only want to include these languages. So then you will drop everything else and only takes English, Hindi, and my only problem is obviously you have to add as and how you grow. So that is one more example where you know ES2015 thing did not came into your way or did not help you with your plugin and I am sure that you will find in your application some such problematic libraries and then you will have to find out the right plugin for LPE or you can roll up your own plugin that's also not a very difficult thing to do in webpack. So again, the benefit was I came down from 92 kb to 18 kb. Now 18 kb is pretty much the movement jays library because hardly any maybe one kb is just the one. Now those were some examples of javascript being optimized. Here is another example of CSS being optimized. So I was using bootstrap as I showed on the first page I was just using bootstrap button right. So I started up with bootstrapmin.css in my style directly in bootstrapmin.css Now bootstrapmin.css is bringing a lot of things, actually these many things. I don't expect you to read. I just want to explain you that for me the blue things were sufficient but since I had brought the bootstrapmin.css there was no way to pick and choose and that's why we should rather go into a scss mode. Scss or stylized CSS sorry stylized stylized scssing ok so if we use that then we can write a custom file to pick and choose individual bootstrap components. Now bootstrap on npm there are two bootstrap there is one bootstrap version 3 there is bootstrap 3 and then there is bootstrap-sass now once bootstrap 4 comes out which is pretty close I believe they are in beta 3 now then everything will be sass only so then you don't have to maintain two different components but so you can use this bootstrap-sass library import it and then you can individually import only what things you need so that's how the original the entire file looks like and that gives me benefit of about 10kb more because the bootstrapmin file was 20kb minify and this is it now I have only 9kb with my instruction ok so with those different quick demonstrations here is how you know my application overall looks like this is before the old application oh I did show you the application sorry I didn't comment it to show you the old and new application so if you look at the application this is the before application you can see that and I am purposefully on slow 3g right now so see now it is still downloading downloading 11.45 seconds it took for you know the whole page to download the original untuned version of the application and as you can see as I move to the other pages there is no nothing getting downloaded anymore that means the entire application is already there now I can just plug out and still work with the application but if you look at this application this is the after tuning application so it finished in 5 seconds and it also got only 41kb instead of 349kb and as I move to movement yes it will download a new it will download a new right so that is the lazy loading parts that we saw so with that we can quickly see the report now so this is before so you can see that the vendor was to envy the total 3 chunks and all of them had initial flag meaning they are going to get download at this time right but if you see the new one I got 4 more new bundles which do not have initial flag these are the 4 bundles for the other 4 tabs on my application and my overall home page is only now 241kb and is it so that is what you know is the difference that you can achieve relatively without a ping and just for the fun this is how the new application you know the stats yes one looks like in the bundle analyzer now so this is my this is my old dot yes the old old dot yes now it is all small small modules instead of one monolithic yes so you may get different because you may have different requirement but yeah so that so it definitely is using now yes 2015 and you know things like that alright so quickly summarizing what did we learn today so if you know you should be looking at your webpack just one final to optimize it and one way to optimize is do lazy loading using import function as we saw in the first lazy loading page we should do pre-shaking and you know we should utilize pre-shaking for that you have to first choose a library which is yes 2015 enabled right and which is every three and open less also you should really look at anything anywhere you are using this kind of construct whenever you say import start from that means you are bringing everything there is no pre-shaking even if you are using pre-shakeable library since you wrote import start done you are not using pre-shaking yeah whenever this is not possible try to do specialized calling using some plugins the way we saw it in case of movement.js and load.js and also definitely go for scss files in order to only include whatever you need in the style world alright so that was this summary thank you so much best of luck for your tuning journey you can follow me on github twitter video everywhere follow me and he orders thanks