Hi, my name is Sunil Pai. I've been writing JavaScript for the last five years or so. This is just before Firework came out and we were still using alerts, which we still do. And we want to satisfy clients. Before I start, I want to really thank the Hasgeek guys. I haven't seen enough people thanking them for the amount of effort they've been putting in. Pretty shortly last night when I was drinking whiskey, these guys were running around trying to make sure that today happens. So thanks a lot to Hasgeek guys. I call this Amplify just because I like guitars. And the secret of every great guitarist lies in two things. One is the skill. You know, you get 10,000 hours of practice and you know exactly how to do what you want with a guitar. But then there's that idea of wanting to get the perfect tone out of your guitar. And it involves an amplifier. You might have a banal octave. So if you're electric, you want to do that, maybe a little post-processing. But in any case, that becomes a stack. That's his thing. And great guitarists are identified by that particular tone. You know, if you hear Joe Satriani somewhere, you know that is Joe Satriani.  And if you hear Britney Spears, you should change your entire music collection. My point is that you need to get your tools in a row. The idea isn't to get every damn tool that you can find and put it in your frontend stack. But you find tools that really help you and they satisfy a couple of conditions. They are effortless. You know, since you can drop it in and a little configuration and you get, say, a 10%, 20% increase in productivity. And it works well with teams. It's not that you're working away in isolation. You're working with a group of teams. I work in Yahoo. Yahoo does some very serious jobs. Douglas Cockford works there. I mean, he doesn't really write a record so much as a guy, a slight messiah. But there's a lot of serious jobs to work that happens there. And we try to make sure that everything is as optimized as possible by the time it reaches the browser. Or at the very least, we try to make sure that your page is showing you something before you even loading scripts. We want it to be responsive. And we have a whole bunch of things that we use in the process, but they all follow the basic same principles. So you're not going to see a lot of code during this talk. You're going to see suggestions. If it's something that interests you and you haven't really seen before or haven't considered putting it in your stack, please write it down. Feel free to investigate. Feel free to ask questions. But they're basically the same things. You, so as I was saying, I love setups. My setup, I have something like six tools and I like making a build in one line. Just run it and I love having builds automatically done when I do a comment. I do all those things. I try to make sure that I'm as efficient as possible by the time I press it. Let's talk about you guys. Bad programmers raise their hands again. What programs? Bad programmers. Bad JavaScript, front-end programs. You are too. It looks like you're late. I'm very tears. It's fair enough. Let me tell you how your career started in JavaScript and stop me if I'm wrong. It started off by writing inline CSS and scripts. You thought that was the cat's pajamas, man. You can make your header change color if somebody clicks something. And that was pretty cool for a while.  Like I said, this is all my code which you can't really see. In any case, if you can notice, you can put this light on. Yeah, it's not a moment. Not a moment, not a moment. Oh, whole function. Nice data. I registered it in this way. Yeah, I keep talking. So it starts off with inline scripts and CSS. And you imagine, oh, cool. I can do stuff directly on the browser now. And it looks cool. I can make a little hover state thing. I will get a menu drop-down. Of course, you have to understand everybody hates those menus, so please stop doing it. But you can do that.  You know what? I'm going to take all my scripting and I'm going to put it in a main.js file. Fair enough. I'm index.js. But my point is that this file has no structure or organization. You say dollar a.hover.click. You write your handle right there. And it's endless function of the function of this going on and on. And if you need to use the same function, but a little differently in another place, you have to repeat the damn thing. And the moment you change the CSS selector somewhere, entire code breaks, and then you need to find out where it's coming from. This was phase two of your JavaScript career. And you figured, OK, this is not working.  Correct? OK. So then you... And this is what your file system ended up looking like. Where you have main.js, then you have a main three.js. And... I should be. I should be. I should be. And then there's a v4.js for the fourth.js. And then you have a widgets.js that you got from the boilerplate, but you never know what to really put into it. You don't know what a widget is. This is my code, by the way. Just so it's clear. This is what I have written. I have to go through my... So you did that. And then you decided, you know what, I'm going to try splitting it up into a few things. But in the end, then you finally have it on your HTML. You have a string of script types with absolutely no relation to each other, no matter what. And again, you have v4.js here, you're loading underscore here, possibly a typekit thing here. And there's nothing telling you what happens if the script fails to load or even if it's loading performately, if it's coming from the same place, if the protocol is right. It's all gone through this.  And you're like, okay, you know what, I can write models, views, controllers. And that'd be cool. But then again, since you're just bouncing into MVC by saying backbone.js, it's very lightweight and all that, you're not really separating your code. Your model code has a this.view.update link. Your view code has a this.router.go to this action. That doesn't really work. You're not really having the separation. It's a lot better than that. But we can make it a little better.   This sucks when something breaks at 3 in the morning and you don't know where to find it. This sucks because you have to, how many people write unit tests for the JavaScript here? Oh, please one. Oh, thank God. Thank you. One person. There is absolutely no reason, one is there's absolutely no reason for you not to be writing unit tests. I'll get to the topic in a while. But second, if you're not writing unit tests, there's absolutely no way to prove that your code works properly across anything without actually going and clicking and your CEO finding out and he's like, hey, this isn't working.    The point, what we want to do though, is own the browser. We are going to stop waiting for back-end guys to finish their APIs. We are going to mock our own data. In fact, we're going to use it as a reference point for other people. We are going to tell them, you know, what, here is one HTML page. It's the, everyone in Django, they call it paste.html. I think that's the layout file, it's the standard one. My point is that you'll have one layout.js or something and you say, okay, this is all we're going to use. We're not going to use any other templates. We are writing a JavaScript application here. We are using so much. This is what the back-end guys get and I will take care of the browser. I will take care of URLs. I will take care of API calls. I will write unit tests and I will show you how it works. I will essentially make it work without you having even interface with my code. I will fake Twitter client. I'll write it and I'll mock all the data. So this is what we're going to do. We're going to own the browser. We're going to make sure that finally when we're done with the work, it's all packaged, ready to be put onto a CDM and we will put it on the CDM and it'll be, it'll be, it'll of course be referenced in the HTML sphere. Until then, the back-end guys don't have to interfere. The design guys don't have to interfere. You can separate your code out into separate modules but you can just start working the moment they say code. Move on. I love code. This is my example of how I try to organize my code. It might suck, but it's something I'm not sure. A lot of people don't do this until they actually see the benefit of it. People have a problem with putting stuff into different folders because they figure, oh, I got to write script tags again. That's what build systems are for. So once you get over that fear, I like to separate it off into modules, a small initialization and I split it into a model and a view. It could be different. I have a generic util.js. Keep only utilities into it. Stop putting jQuery, change this A color thing. I keep my templates down here. These are usually JavaScript templates. That's nice because if I'm using a new project, I can use them on both sides. That's a big one. I keep my libraries here. I keep my jQuery stuff here. Some plugins and so on and so forth. My point is that you have to get to a place where if you want to work on a particular component of your code, you should know exactly where to look without having to search through it or without having to do a higher search. Fixtures. How many people? Okay. Not a lot of people use unit tests, but fixtures are ways to mock your data that your application is going to expect. When you're testing code, an old boss of mine used to tell me, he's like, when you're writing tests for a networking program, if you're writing a web app or so on, if you pull out your LAN cable and you put your Wi-Fi off, at least 90% of your tests should still pass. In other words, you shouldn't be depending on outer sources of data to run your tests. So fixtures are great. Fixtures are essentially an idea that you mock a particular response that you're going to get for a login call. And when you're running your tests or when you're running the app itself, when you're developing it, instead of having to ping a login API which the backend guy still hasn't finished, it's been days. Instead of that, you're going to get a response back in the format that you choose. If it's going to be failed, it's going to be failed, if it's going to be true, it's going to be true. It's up to you to decide how it happens. It's a great way to mock all your backend data, and it's an incredible way to draw your reference to the backend test. There's something called, has anyone seen this framework called JavaScript MVC? It's called JavaScript MVC. It's by Jupiter Concert. They have a great jQuery plugin, and I'm good with it. It's awesome. All you do is $.fixyourmagic. I'll explain what the syntax is, but all you say is you dump what kind of data you're expecting and what URL point you're expecting. It overrides your $.ajax, $.get, $.put automatically and starts serving the data that you do. Please notice, zero effort. So you can still write your apps, but you don't have to put a little thing that if test mode, then push this data, and if this, no, no. You write your app, it's exactly where you want it to be. And all you do is $.ajax, you can do it in this format as well. You say whatever URL it is, and if a fixture of magic is available, it just loads that instead. You can simulate delays. You can throw 5,000 items if you want to performance test your JavaScript app, and you can think yourself, well, that's a great idea. Wish I'd come back to it. Here is a sample. This is actually from their site itself.  I hope you guys can see this. But it's pretty cool. You say $.picture, I think get request for to-dos ID, and that's still a generic. It's not even an exact URL. For that, you return to-dos that you generated right there. And for every put, for example, if someone wants to update a particular thing, then you just take that and you overwrite it with whatever was sent into the thing. Now, with this file in your STML page, it will load your fixture data, and it's not really going to be pinging an Ajax endpoint to it. You remove the fixture, and it starts working directly on the actual URL. It actually tries to do an XHR request, which is really neat. And you know what, another example actually. This nice to-dos.picture also has something called make function. You guys are familiar with it. All it does is it takes a particular format that you want, and it generates a CRUD template. Do you know what CRUD is? It's a template. So you can just use that directly. So if it's going to be a GET request, it'll handle it in a GET way, but I will set a PUT request in the PUT way. You guys really have to check this out. My absolute favorite application for this is Backbone. It's fine. All, if you've gone through the Backbone.js, people who have worked with Backbone.js or CNI, Backbone.js is this great super lightweight MVC framework for JavaScript on the front end. People are trying to get it to work on the node side. That's excellent, but I'm talking specifically on the front end. It's also fine. There are a bunch of them, but my point is, every time you write code for Backbone, if you've written Backbone code, you'll know what I'm talking about. And the problem is, it's very difficult to write testable code, especially for asynchronous code and where you're getting data from another source. But this just makes it seamless.  Say, $.fixure.get, and so on and so on. You can save it in .json files as well, and $fixure actually loads it from those files as it just etc. requests. And the Pack-in team has a reference point. So the moment somebody breaks something, you're not going to blame. You say, I had my spec here, man. It's right here, and you're not sending data in the format I expected, or that we had actually agreed upon.  You write all your unit tests for your models using this data. If you guys have used something like Jasmine for testing asynchronous code, the entire idea is what it tries to do is it spies on the function, which is the handler for when an Ajax request returns. And it tries to pump data into that and it assumes that it's going to work that way. That's a very dirty way to write the code test. But the thing is that since you've been using this to mock your data anyway, you don't really have to do spying on handlers and all that anymore. Assume that the data that's coming in is spying. You don't have to send anything extra, because of course the picture is included in the page. Speaking of which, you guys have to write unit tests, man. This is a problem that I face whenever I'm talking to developers.  It is a big thing. You have to get to a place where the browser is yours and you have to be a professional about it. And I think the greatest analogy that I've heard from an old Khalid of mine, you know how people say unit tests are for testing your code and it will create little graphs for it? No, not really. It's you get fixtures and you get unit tests together and it creates a spec. It's like how the guy, I mean your friend and developers, you know how they give you a JVG and they say make an HTML of this and you know you're right or wrong by looking at the JVG. The JVG in itself isn't functional, but just by looking at it as a reference, you know that your output HTML and CSS is coming out right. It is exactly like that. You essentially try to make a reference point for what your code is going to be and you keep that in the source code. The moment somebody breaks something in another module, immediately your unit test will fail. If it doesn't fail and you find the bug, write another unit test for that bug. Every single bug gets a unit test. Am I going too fast or am I...  Okay, fine. Essentially the form of a test is quite simple.  If it's an asynchronous test, you might want to pass in a parameter done. Moka framework uses this. I'll pass you all the links after this by the way, don't worry about it. But anyway, you do something and you get a value and you make sure that value is as expected. You're writing a little function to add two numbers and you say add two and two and make sure that the response is full. It's really that simple. You make sure that your function does something the right way and if you pass it in the wrong data, then it responds in the right way again. It responds how you wanted to. It throws an error or so on and so forth. So every new bug, every new feature, every new issue, every new 3 o'clock late night call from your CEO varies. Like, I was thinking I want to change this to do a drop-down instead of a fail. Every single of those requests gets a new test. Otherwise, absolutely nobody has any reason to believe that your code works. You might say, well, look, I'm clicking on it here, here, here. And they're like, well, that doesn't work in IE.  No, you write your unit test and you run it out of shot. Depending on the size of your code base, it might last a minute, it might last 10. It doesn't matter.  My dad keeps saying that measure twice, cut once. I'll measure it twice, I'll cut you once. So here are the buzzwords for unit testing frameworks. You might want to write this down. And QUNit is actually used by jQuery. They have 199% code coverage with QUNit. Or they hit 100. I don't know how to say it. Keep going around. Anyway, jQuery uses QUNit for testing its own code. It's pretty good. Mocha actually works now on the browser as well. Otherwise, it's an offshoot of Express. So it came from, you know, JS JavaScript testing. JS test driver, I think I spread it. JS test driver is a module from Google, which automates all your tests.  It's really great here. Just spend a little time making yourself a better developer by understanding what the stack could be. So, of course, uses YUI test as a module for testing, and uses Yeti or Jute, depends on which team you're on, for actually running all those tests, transfer it in the browser, and so forth. Jasmine is the new hotness. It's from Pivotal Labs, I think. It's really neat. It's a little verbose, but it's fine. A lot of people are moving towards Jasmine right now. It's quite strong as a library. Point is, start writing in a testful code.  You will not write tests after you write your code. You do not make the HTML and then make a Photoshop look something like it. That doesn't really work. Excuse me? Which of the tools is best suited to do cross-browser testing as well, not just the unit? So, cross-browser testing. This is a little mixture. Something like QL and Mocha Expresso is used to write your unit tests, and then you would use something like JS Test Driver or Jute or Yeti to actually run them. It will run your tests in... You can specify your browsers. You can actually choose which browsers. You want to open up an Opera instance, a Firefox instance, an IG instance. It just runs your tests, collects the data, puts it together and gives it to you. The number one complaint I'll give you here against unit tests is it takes time. You have better things to do. Your better things to do is two weeks later rewriting the entire code base because you didn't account for something. Your better thing to do is surfing on Reddit. Trust me, man. I'm not in F7. The rage comic section is incredibly productive. I'm sure if you write unit tests and you can prove that your code was fine, you're not going to be rewriting it later. You might be refactoring it, which the unit test will save you. It will give you a reference point and it will bring about unicorns. Templating. How many people use templating in the day-to-day work? Whether you're building a website or an application? That's not too bad actually. How many of you define your templates directly in JavaScript files? Do you compile them? Where do you define your templates? Separate templates like this. Yeah, but when? Do you make a .gst file and compile it? I do server-size. These are the templates that I compile. So templating is... Maybe I need to take a step back here. If I've gone to smallish firms, 10 people, 15 people, there are usually some guys who are the back-end guys. Then there are the front-end guys. And the new client shows up and he says, well, this site is going to be like Facebook and LinkedIn together but only for midgets. That's his request. Hello, Midgets. They need a little space as well. So... I don't think I have enough time I need to make sure. That's one thing. I've never used .gst or white... Yeah, I'm going to talk about templating. I'm just taking a step back. That's what it might be. Anyway, my point is that he comes to you, right?  Back-end guys are thinking to myself, okay, we are going to make it web-scale and we're going to use MongoDB and so on and so forth. The designer comes up to you with five jbgs. It's a user page, user page of update speed. Whatever it is. And he's like, make pages for this so that the back-end guys can integrate it into their app. And you tell yourself, okay, fine, I can do that. You download HTML5 boilerplate. How many people HTML5 boilerplate? It's quite good. But it leads to stuff like what I'm saying. You download it and you make the login page once and you put in dummy data. It's fine. You have dummy updates. And that's another page. And you make another page for the user profile. And then it seems you have absolutely no idea how this is modularized. How this can be broken down into chunks. Instead of starting top-down, what you have to do is you start bottom-up. You start out by asking yourself what an update is, for example. It's a Sunil Pai 8 ice-cream. Sunil mentioned that. Short word. He ate ice-cream and rated it four stars. Okay, so let's say that person did action and gave a rating. And you think to yourself, okay, that's actually a repeatable element. Pretty sure I... But you understand the concept and completing. The idea is that you take repeatable stuff that's repeatable or you want conditional constructs. Based on particular conditions and based on data, the output will be so and so. If there are 10 updates, then it'll make 10 little... You'll run the for loop 10 times and make little developments and so on. Okay. I'm not doing a very good job of explaining this, but my point is this. You have a problem. I have a problem. Thank you. Start using templating actively before it gets to the application stage where the back-end guys are trying to put it into their application. If you're using Node, you can use one of N JavaScript templating languages. You can use JST or EJS or so on. Or if you're using something like Django or ROR, try to see if you can convince the back-end guys to use a platform agnostic templating language like Mustache. Mustache is good. The reason that I say this is because then later on when you're doing cool tricks in your browser and you want to render HTML directly, you can take the template by yourself and manipulate it by yourself. This actually, when you start doing this, the point is that at some point of time your boss is going to come up to you and say, I don't like the format of the update. What I want is an image and just the stars. Instead of changing it 10 times in that one page and not exactly sure what CSS it broke, you change it in one place in your template that you wrote to repeat 10 times. Do you see what I'm doing with this? Please use templating a lot. Your HTML has a living breathing thing as an output for a particular request. Don't think of it as a, I made the HTML and the back-end guys are going to take it and put their special tags into it and it's all going to work. That is incredibly difficult. This is your responsibility. Sorry, that isn't part of my slide. This is what I do, for example. I make them, as JST excited, literally put a slide in the contents of it and I have a simple JavaScript template loader. Very simply, very simply, I have a small template object and if it doesn't exist, I do an HX request to pull it and once it's put, I just compile it using underscore templates. Figure out what your solution for this is.  Ask me. I'm going to talk to you about it.  This is a module that I love. I've been using it so heavily. Everybody here knows what push state pop status? Wow, really? You use it on JS2.in? That's right. The idea is that you can change the URL in the browser without doing a reflection. Ajax was all about making a request without changing the URL. You change the URL and you can do it. In JS2.in, it's pretty cool. You push, for example, a schedule and it slides and you can do a pretty cool transition and you see the URL and it says that schedule and you're like, oh, I didn't see the reload app. You can do a lot of cool things this way. In essence, you have to understand that what is a URL and I'm going to mangle this definition. But try to understand it as pointing you to a resource. You say facebook.com. It's pointing you to the JS2 resource on Facebook. Now, the usual traditional way of getting yourself to that destination is a refresh or you load the page, but now you get to define what transition happens on the way to that destination and what the experience is for a user who's moving through your site. Not just on one page, not just where it does a roll over but actually you think of the entire application as a machine that you're showing in a particular way that you want. You can do a bunch of buzz word stuff. It's HTML5 and you can do CSS3 transitions and a whole bunch of things. It's pretty cool though. You should definitely check it out. Backmode.router is the module that I recommend because it's ridiculously simple and I don't want to talk about details but please, please, please check it out. Check out Backmode in general and related families of MVC players. Examples for this example, applications that I've used this, my two favorite right now are 37 Signals Mobile and LinkedIn Mobile. LinkedIn Mobile has done some stunning work with the mobile website.  I mean, they've got great engineers. Don't get me wrong. But it's really great to see that this is now the main stream. This isn't an experiment anymore. This is now everywhere else and there are fallbacks for IE and they'll use hashbacks and Google won't have a problem with it. Google will actually render your page now even if it's being generated by JavaScript. Quick story. They even render SVG. Google renders the SVG on your page even if you are having animations. So don't worry about Google just losing just because you're using JavaScript and all that. I want to quickly talk about deployment. How many of you people package your scripts before they send it out to production? Awesome. So that's one. Actually two, three, four. All of this. It's kind of hard. I get it, right? Because it actually takes a bit of planning in the beginning. So I'm going to walk you through it. According to me, there are three different types of deployment. Personally to me, it could mean something else. There's development. When you're working on your laptop or on your machine. At this point of time, I don't want my scripts minified. I don't even want them concatenated. I want them loaded one by one. So when I find a bug, I can read the code that's doing that. I want my CSS also nice and big with comments. That's my development stage. Performance isn't really a priority right then. Performance. I can't have any reliable performance measures when I'm doing it on my laptop. Staging. Staging is everything that production is except in a very secluded sector. So when you might have minified your scripts and CSS and made your image sprites and all that, they're still on the same machine. They're not really loading it from a CDN.  My point is that staging is to see a slice of real life usage and to make sure that when you do deploy it, at least your basics are right. Production is where you go way hardcore. You might want to inline some configuration data into your HTML and your scripts get concatenated and sent as one package. You cheese up and send it. I'll talk about that later. You might want to include your CSS into your JavaScript files. Kind of a cool trick. Point is that you have to get to a place where this is automatic for you. There are many, many projects or modules that help you do this. If you work with Django, then you know about Django static files or Django compress. If you use ROR, there's something called Jamet. That's actually written by the same guy who wrote coffee script. Jamet is pretty good. On the node side, there are something like 40. If you go to the node modules page, you will see a whole lot of them for building, packaging, deploying and all that. See if you can spend an hour or two to download one of these based on the system of your choice and see if it will help you actually do this. Because then that means that the packet guys don't have to worry about packaging your scripts anymore. They're already uploaded. They don't have to worry about your referencing it from. They still are doing what they want to do. They are writing business logic that acts as a foundation for your app. Your thing is just a client on top of it. That's why you need to really use it. That's why development staging and production is very important. I'm going to quickly start going through this. These are tips. Automate as much as you can. You are engineers. The entire deal about engineering is that you don't want to repeat yourself. You want to reproduce as close to what the production system is going to be on your laptop. You want to write fixtures that bombard the client with 5,000 requests a second. That's a bit much. 100 requests a second. You want to see what will happen when your little JS animation that makes tech crunch. Again, do a performance test on it. Anything. Automate your stop generators. When you're writing models and views. Write a little script that actually generates one file that says x.view is equal to backbone.view.extending. My point is your after code that you write is boilerplate and you shouldn't really be writing it again and again. That's why you download HTML5 boilerplate. It doesn't contain anything new but it contains a bunch of good ideas set into one place and you're like oh it's pointing me put your code here put your CSS here and that's a great idea. My point is automate everything that you do. Automate your fixtures, your performances, your grids. Great idea and it's actually common knowledge but run all your unit tests once you do a commit so that the moment somebody breaks it you know immediately somebody gets an email and woken up. Develop boldly. Once you have unit tests in your system you will realize how freeing it is to not worry about how you're breaking anything at all. Because if you do the moment you refresh you'll know it.  You have to test your code and run JS into it, you want to use copy script doesn't matter develop boldly and try to push what the browser can do. Refactor slowly. When somebody says well I want this a new feature or I want a feature to do this or I want to use a different URL structure You have your unit test. Do it very smartly. Don't just wipe out code and then start developing for those unit tests again. That's a really a couple of good books to read on this but just the Wikipedia page on refactoring software code is phenomenal. What are the books? What books? What books on refactoring? These are books that I was reading when I was in the US but let me see if I can remember. There's this fellow who wrote Principles of Software Engineering South Indian News published by Sean O'Reilly. I'll give back to you on that. I'll put it in the list for that. And you will notice that as soon as you start doing all this and you start getting your system all together, you are done with the days of having 10 templates one for users, one for I don't know new customers and want to see how your database is doing. Only thing the back end guys are doing are supplying your data which is what they do and you consume that data and that's it. At the end of the day you have a very well tested API performing to spec and you want to write an iPhone app for it, it's ready. You have your API ready, you want to write an Android app for it, go for it. You don't have to sit and, well we need to make an iPhone app now so we better restify our API and you're like but that's going to break the old API that I've built for this thing.  This is the shameless plug of my project Sangam. This is where I actually try personally to solve all these problems. It concatenates scripts, it compresses them it's a little buggy but it works just fine for a few things. A couple of cool tricks it does is you can even supply it with .jst files for example and compiles it and makes it a JavaScript object for you to use. You can supply it a CSS file and it wraps it in a little JavaScript. So I have gotten to the point where in my projects, my scripts, CSS and templates are in one file. Sometimes I want to break it up for a bunch of reasons, performance reasons and so on and so forth but ideally at the end of the day my HTML starts with one script tag and then I continue on with the rest of whatever I want to do. Which is essentially nothing because the view, my view objects will be manipulated. Have a look at it. It's kind of cool. It has no test cases right now so I do not guarantee you will get it. But the reason I actually said this is, when I said that there are 40 of them on Node right now, it could be 41st. It would be great if you guys go back and write your own. It's a great way to actually learn about how systems should be built and how performance, how these things are made to your performance. Even on a local machine. I'm done. Two questions. Why CSS and JS is together? Why CSS and JS together? I just want to remove one HTTP request and it just makes it simple for everyone else. For example, a couple of projects where I've done widget code, where you know like here's our widget, put two lines of JavaScript, put one line of JavaScript into your page and it will start working. When you have 100 lines of JavaScript and 100 lines of CSS. I see where you're going. So one thing is compression removes a lot of that flow. And I'm not saying that concatenating your scripts is the absolute way to do it. In fact we don't concatenate scripts. You use modules and you use script loaders that are based on definition of what the page wants. You load one module and another module and another module. So that way it actually gets a few parallel requests. But I have noticed for about four out of every five projects that I use.  I don't have to worry about whether I've forgotten to load any assets. And if I have, I have to go searching in HTML for it. I have a nice little configuration file where these are already defined. My main.js, v4.js and there will all be there. And that's why I can actually remember the little folder structure I did. I define all that down in my config file. In my development state it actually loads all the files one after the other. But in production for me, for Sangam I've made it so that it compresses everything. You guys might want to check out AMD. That's asynchronous module definition. It's a way of defining JavaScript files as modules that can be loaded asynchronously. It's pretty cool. It's called AMD. I think people like require.js and all require.js and yepnope.js uses but yahoo also uses a version of this. Slightly different. It doesn't conform to the spec but in yahoo that's what you do. You say yahoo.use event and then you write a function callback that once that event module has been loaded or if it's already loaded this pass a reference to so and so. What do you think about web is shifting to making websites with CMS rather than coding it? I'm sorry. Now people use CMS instead of just making a website for pure coding. So the JavaScript part of it is very poor.  So what is the solution for that?  Oh okay so are you talking like third party JavaScript? Yeah. Like having one Facebook JavaScript other thing on Google plus thing and Teams and the different things that they come with. I guess if you use WordPress with a bunch of the team that somebody has made the team loads resources. What he's saying is that it's not your project anymore it's bunch of other things that you need to keep untouched because they need to be updated. So are you asking me what the solution for this? How do I improve my site performance? For one thing you should realize that stuffing a bunch of social buttons on your page isn't going to be to anyone trust me. I haven't seen one user study where actually I have seen a couple which do make it happen but I'm not talking about social buttons but rest of the thing like you have stuffing of modules and modules have their own JS. Do you see a problem in the entire process where it started happening? If you're saying that CMS the way your CMS loads resources is individually and in a very wild west kind of way I think you want to actually have a closer look at that instead of wondering about whether they should be allowed to load resources. A cleaner way would possibly be where your CMS I wouldn't say build script but the way you actually develop the CMS is your module defines requirements upwards. So by the time the page actually gets converted you get a hopefully cached version of all those resources together. I'm not exactly sure what you're asking but I hope it's somewhere in the general area. Do you all try to make CMS or something just start making a standard coding?  I mean that's essentially how news.yaho.com and yaho.com page works. You have frameworks which actually load I've just joined Yahoo by the way so I'm not exactly sure of the exact details but you don't specify these definitions of the modules in the HTML. You have these really ugly, I wouldn't say ugly but they serve a purpose. Where you specify the modules there you specify that I'm going to have a module saying this is going to be five hottest stories last week and these are a few resources that I need to load. When that page actually gets compiled into the HTML version, either for caching purpose or directly being sent to the client that page actually has those resources loaded properly and the modules all these rules that they need to follow for it to happen but that's how they do it it doesn't happen at the point of the client attack all the performance optimizations happen before it's even generated. What are single page apps? Yahoo made in the days of old when it was really popular and all the cool kids weren't using Ajax at that point of time they had one template on the left side that's going to be possibly a sidebar if the thing said slash inbox and it was going to load another template which had the other thing defined and all that when they call it a single page app they actually mean that it's loading multiple HTML resources if that helps like set more pages but single page apps have the new hotness I really like the word hotness single page apps have the new hotness where you can something like backbone.js you can define your views separately in JavaScript possibly in separate files possibly in the same file that doesn't matter and you load the resources required for that particular view on the client there's no different HTML as far as your HTML is concerned it's a bunch of script and CSS tags and a body placed where your JavaScript where your JavaScript can play it just gives you that's what I was saying at the end of the day your backend guys shouldn't need 10 templates for 10 different parts of your application it should be defined by you and as far as you're concerned you're just being given one canvas and you need to express yourself with that those are single page apps please feel free to google exactly that phrase single page app backbone or single page app spine it's crazy the kind of stuff people are doing with it nowadays like essentially jsfood.in is a single page app it's one template and you have little pieces developed separately it's still rendering HTML it's still rendering HTML not necessarily I barely do that now actually I use my HTML the server doesn't really need to generate HTML for you at that point yeah exactly that's what I'm saying it could be rendering it in a JSON format it could be sending you just data it could be saying it's written by ice cream 4 stars Athef Haider Biryani 2 stars he's kind of pricey that bit but it'll send you that and you have a template already loaded where you dump the data and it says single by 8 ice cream and give it 4 stars how awesome is that Athef Haider hated the Biryani 8 he gave it 2 stars the point is that it's still one HTML page even the output that you generate for it can be on the front end sometimes it's on the back end but I'm not such a big fan something like push tapes a lot of people use it in a very good way exactly they actually get HTML back something like on the GitHub page or PJAX PJAX does that very heavily again I'm not a huge fan of that but it actually makes sense for them because otherwise the amount of JavaScript and all that load is insane thankfully they just get the HTML and slap it into the middle of the page it works for them it works very well for them it could be a scenario where there are too many views and what would happen here would all the resources be loaded one go that is your fifth out of four out of five cases you don't really that doesn't really happen where it loads an md of JavaScript that doesn't really happen but once you do get that then you want to sink into loading modules on demand where you might have a definition which says x.100thview .load and once you say load it loads the entire definition of all that file and the resources that it needs perhaps even css and a few images that we want to keep cash so that's where you started adopting those strategies you just check out amd, JavaScript, require.js, fnop.js that's all am I out of time? am I out of time? thanks a lot guys don't forget to thank the Hasgeek guys they have been freaking awesome and cheers


The study evaluated the impact of sucrose concentration and osmotic dehydration duration on chrysanthemum cryopreservation using encapsulation dehydration technique. The best regrowth of cryopreserved shot tips was achieved with 0.25 m sucrose concentration in 10 mABA during a two-week pre-culture followed by a four or seven-day osmotic dehydration. Higher sucrose concentration during the pre-culture slowed growth, increased formation of multiple shoots or deformed adventitious shoots, and decreased rhizogenesis efficiency. The frequency of tissue hyperhydricity also increased. Osmotic dehydration duration had a cultivar-dependent influence on explants morphogenetic response. This article was authored by Daryush Koulous, Magdalena Soraka, and Anna Makula.


We're back with some more Monopoly Hut, baby. Yo, what's going on, Leafr Nation? It's Leafr back again, and welcome back to the channel. Today, we are back with episode number 6 of Monopoly Hut, and before we head to the board, we got some things to collect, some things to do, um, let's just get right into it. So as you can see here, there's a new event out, Halloween Rivals Master items available in packs and sets, so we're hoping to pull some of those today. We got these, um, Halloween Rival, other cards available as well, and that's pretty much it. But today, we do have a Rival Awards to collect, and we have a choice, and I think we're going to go untradable this week, because why not? So we're going to go with two Mega Packs, two Player Packs, and hope for the best here. So we're looking for some upgrades again. It shouldn't be hard to upgrade this team. We're just hoping for some decent pack luck here. So Mega Packs for 80 plus players, 180 plus players. So we'll start with the Player's Pack first. This is 10 items, all players, at least five old players, and 180 plus overall. So we're hoping for the best here, man. Give me something good, EA. We went untradable this week, because I figured, you know what, anyone we pull, we're probably going to want to use. We pull a Primetime Eric Johnson. This may be an upgrade on the back end. It's a decent looking card. If you get buzzing activated with him, he's up to 84 speed. He's not the fastest, but it's a decent card. We'll take, uh, Primetime, uh, Johnson. Okay, we get an icon gold tender that we're not going to use. And that is it in that pack. So when Eric Johnson isn't too bad, will he make the team possibly? I don't think he will. I don't know. We got to see. All right. Second pack out of these Player Packs here, we get a purple. It's a Brad Marchand. Our first purple pull on Monopoly Hut took us six episodes, and we get an 86 overall Brad Marchand. Just play the game, get free packs, and you pull purples apparently. So Brad Marchand, if he gets buzzing activated, he'll get up to 86 speed, 88 agility. He's got a pretty good shot. 89 passing, 89 puck control, not too bad. So we will definitely take a Brad Marchand. I was not expecting to pull a purple. We pull a Crystal Tang as well, which is good. If we end up getting this X factor, we can upgrade them there. But hey, we get a purple man, Patrick Hornquist. This is a good pack, Elias Patterson. What is this pack, dude? Okay. All right, man. We cannot complain at all today, dude. That is a huge pack. We pull Elias Patterson, Hornquist, LaTang, and a Brad Marchand. Don't mind if I do. And now we're onto these Mega Packs. These are big boy packs, man. 30 items, at least 15 gold players with 480 plus overalls. So can we top that last pack? I don't think we'll be able to. You never know though. So let's go. We're going to go one by one. It's a big boy pack. We pull a Team of the Week Friday. So we upgrade our gold tender. What is this pack opening for this video? An 85 overall, Freddie Anderson. He's got Spark, which is a pretty good synergy. It's a good looking card. So we found our new gold tender. Sherstaken was doing a great job for us. But we will take a Freddie Anderson. We pull a Tom Wilson. Don't know if he'll make the team. It's possible he does, though. Anything else here? 1500 coins. Not too bad. So we're up in our coin total. We're at 18K right now. So that's nice. Some more coins. We'll take 500. We made 2K off of this pack here. Anything else? We got the last couple of cards. Amika's a Benajad. These packs have been unbelievable, man. It's a W video already. We haven't even played a game or rolled a dice. Amika's a Benajad. Welcome to the team. Again, if we pull his X Factor, we can upgrade him to what he's at, which is great. And that's probably going to be 8. We cannot complain, man. Amika's a Benajad. 2000 coins. And a Freddie Anderson. Don't mind if I do, EA. Thank you. And last mega pack is we are above 20K, which is pretty good. You can get some decent players for that coinage. So if we land on Buy Any Player, we are set. Nick Suzuki, not too bad. I don't know if he'll make the team. Jordan Everly, Christopher Tanev. Anything else in here? Yeah, man. If we don't pull anything in this pack, I can't complain. It's literally been an amazing pack opening. Jonathan Drewen. Another 1500 coins.  Jordan Stahl at an 82 overall. Anything else, man? We've pulled a lot of good cards here. Our team is going to look very good after this last pack, man. It's unreal. Yeah, not the greatest pack, but we literally can't complain. So let's go through all those new players onto our team. I'm excited to see what the team's going to look like now, man. Brad Marchand is going to be coming in for Oscar Limblom. Limblom did play very well for us, but it's an 86 Brad Marchand.  That first line is looking nasty of Monahan, Card Raquel, and Brad Marchand. We are getting rid of the pack line, unfortunately. Patrick Hornquist is coming in for Jonas Donskoy, so this line is looking like Hornquist, Yegor, and Brady Kachuk. And yeah, so Yegor is gone, and Elias Pedersen is coming in for him. That's a nice little upgrade there. So we just got Brady Kachuk left on that pack line. We're going to put Pedersen on the second line there. So that second line is looking dirty with Panarin Pedersen and Kyle Conner. Adrian Kempe is coming out for none other than Mika Zabinijad, dude. Our center core is looking amazing. So we got Zabinijad, Hornquist, and Brady Kachuk there. That's some good looking lines. We're actually going to put Pedersen on the first line, throw Monahan down to the third, and now the second line is looking like Zabinijad, Panarin, Conner. That looks amazing. As much as I love my Justin Hall and Jake Muzzin pairing, Chris LaTang is coming in for Justin Hall. So it's looking like LaTang and Muzzin. And then John Marino will be coming out for Mr. Eric Johnson. Why not? It's a plus one overall upgrade. So it's Eric Johnson and Sammy Vadden on that last pairing. We're actually going to throw LaTang up here with Headman. So it's LaTang, Headman, Anderson Muzzin. And then Annette, Yegor Shashdakin did a great job, but 85 overall prime time Freddie. I have a feeling this guy is going to do some magic for us. So welcome to the team, Freddie. Like I said, we can't complain with these packs. We have to roll a dice and open up more packs here. So last we left off, we were on Chance. So we're looking for something decent here. Rolling the dice for the first time this episode, and we get a six. So a six is start. And that means we don't have to open up any packs. We don't get to open up any packs, but like we can't really complain after what we just pulled. I'm okay with not opening up any packs. I know more packs is better, but I'm not complaining. We didn't go bankrupt. We landed on start and we'll go again next roll. But with that being said, let's head into our first game of the episode here. First game of the episode, and this guy's got a good team. 84 Moshon, 90, McDavid, and 87. Alexander Oveshkin. This should be interesting. Let's see what we can do here.  I'm excited to try them all out. Hopefully we can get Panera and some upgrades on that top line. Let's see what we can do here, boys. Good poke. Where's this puck? He still has it. And that's a goal. Horrible first shift. I don't know how he came out with that puck. We're down 1-0 already, and I'm having a lot of fun already. Good pass from Anderson there, Sean Monaghan. Dodges some hits, and Patrick Hornquist in his debut gets a pass across. It's a 1-1 hockey game. Good shift for this third line after breaking up the pack line. Good stuff from Patrick Hornquist. Good pass from Monaghan. We love to see all everything that just happened. We love to see it. That's a good deak. He just missed my poke truck there. Good save by Freddie. Freddie is having himself a little bit of a game here. We love to see that. Good pass to Patterson. Just straight line it, buddy. Elias Patterson. Oh my god.  This goes to Zabinejad. Zabinejad's gone. 2 seconds across. That's a poke if I've ever seen one. End of 1, and it is 1-1. I gotta stop taking penalties because these stats look absolutely horrible. Oh, Brady Kachuk, go. Take the shot. My god, I can't do anything offensively right now. Oh, Hornquist. Patrick Hornquist. My god, Hornquist is having himself a game. There you go, Bucinevich. Out in front. Oh my god. That was a good poke. He just saved himself a goal. There you go, Bucinevich. Mika Zabinejad having himself a game, dude. There it is. Cal Conner. What a save, Lainer. Good save. Freddie is really keeping us in this right now. There you go, Patterson. To Panarin. Oh my god. How is he poking these? End of 2. Way better period. We are getting clamped on defense, but Freddie is keeping us in it. I don't know. I don't know what to say. We just gotta keep playing our hearts out pretty much here. Good poke. He still has it. I feel like every poke I've made just goes right back to him. Sausage. What a pass. Artemis. What a save, Robin Lainer. Pick up the poke. Artemis Panarin. That's an upgrade to one hockey game. Let's go. Oh my goodness. I am hyped. Brad Marchand and Patterson getting a point in their debut.  Let's go, baby. Oh my god. Everyone's just getting crunched. Doesn't matter, though. Oh, that's a goal. Connecting.  That would have been so dirty. Brad Marchand. Connecting. Back to Marchand. Oh my god. That could have been huge to get out of boy Patterson. Over to Panarin. Oh my god. How is this poking out in the back of the net right now? Let's go, Connor. To Richard Raquel. Oh my god. Robin Lainer is actually a tank. He's taking a timeout. Fair enough. It's looking like a good game. We definitely came back that period. We got to keep Buzzing here. Robin Lainer is actually just a beast. Good passing there. Brady Kachuk. End it. Oh my god. He just, he just, oh, Brady Kachuk. Let's go, Muzzen. End it here. Four seconds. Come on. That's game, baby. What a win against such a sweaty player. We will take that. It's a 2-1 victory. Panarin gets an upgrade. What a game from this team, man. I cannot be more happy with the way we played that game. We were in bronze ranking after that game, too, which is absolutely huge. Good stuff, man. Just great stuff from this team. I really enjoyed playing that game, even though it was sweaty. We come out with the win. Artemy Panarin with a goal. Let's go upgrade them. We completed some objectives here. So that's 200 extra coins into the bank account and then 750 coins into the bank account. So we were above 23,000 coins, which is very nice to see. And Artemy Panarin getting the game winning goal last game gets an upgrade up to an, oh, do we have, we have to have a power-up collectible. We do. So Artemy Panarin is now up to an 85. One more and we're going to need to go buy his base or pay 90k coins to get him up to an 87. But he's now up to an 85, which is just great to see. The team is looking good, man. All right. So after that hard fought battle and getting that win, we get to go back to the board and roll the dice again. So here we go. We are rolling for the second and final time this episode and we get a six. So six is open up one premium pack. Let's go do it. So heading into the store here. One premium pack. I don't know if we're going to get out of one premium pack, but like I said, the packs have been great this episode. We cannot complain. So here we go. Premium pack and we get something here. We get a Calvin Pickard, anything else here. I doubt we get a purple and something like this, but you just never know. Two cards left and nothing upgraded team. You know, we can't complain. Second and final game of the episode. Tavares, Kutrov, Kuznetsov. All right. We've played better teams. Doesn't mean anything necessarily. So let's see if we can go to know this episode after having a great first win there, man. I can't get over that first win. All right, boys. Let's go. Let's get another win here and let's keep up the positive vibes with this team. Let's put Monahan. Monahan's got some wheels. Sean Monahan. Oh my God. That just trickled light. Dude, these small guys are getting crushed on my team right now. Oh my God. There it is. Pedersen. All that Manny Sauce would have been beautiful. And one, it's 0-0. It's been a pretty even game. My small players are getting crushed this game. So I got to find a way to stop getting like crushed. Good poke from Pedersen. Pedersen. Oh my God. Good save by Price. Bomb, Pedman, please. There you go, Zabinajan. Go. There you go. Beautiful. Over across. Brad Marshawn gets a goal. Do the McGregor, Selly. I swore it's going to be bleeped out. It's okay. It's a 1-0 hockey game. Good stuff from Zabinajan and Brad Marshawn. Arrest Miss Anderson. Hornquist. Oh, Patrick Hornquist, man. I'm really enjoying his card. I'm not going to lie to you. End of 2. We're up 1-0. He came back on time in attack, but we're playing well, man. I need one more goal because I do not feel safe in this game at all. Let's go, Headman. There you go. Take it to the net. He gets a poke on that somehow.  It's a 2-0 hockey game. That's two goals for him this game. Good stuff. We needed that insurance marker and we got it. Let's go, Anderson. Beautiful Butchnavich. That was a nice try. Just not a good shot from Butchnavich. Good stuff from Raquel. Out of front, Brad Marshawn looking for the hat, Rick, dude. Oh, that would have been sweet. Good pass. Good stuff. That's a good toe drag. Get it across. Sean Monaghan. That's a save. That is a save. Let's go, Brady Kachuk. Out of front, Monaghan. What a save. We're dunking. I wasn't going to dunk. I was just joking. Sean Monaghan and Sean Monaghan doesn't even care. It's a 3-0 hockey game. We are playing so good today. Let's keep it up. Badanin to connect me. Good little pass there. Butchnavich. Take it to the net. Nice try. Across. Brad Marshawn gets his hat, Rick. It's a 4-0 hockey game. Are we going to get a rage quit? No, no rage quit. Just a hat trick for Brad Marshawn. We will take that. What a game from Brad Marshawn. We love to see it. Oh my god. We won't talk about that. It's a 4-0 win, though. What an episode, boys. We played unreal today. Like, actually, we're now in silver ranking, which is very nice to see. We completed some more objectives, which is great. Brad Marshawn, man. What a game. Three goals. Three points. Monaghan with a goal. Zabinaj out with two assists. Raquel with one assist.  Only led in one goal last game. He has been unreal for us. We absolutely love to see it. Looking at the stats, man. Yeah, I think I deserve to win. Looking at the objectives here, we get 400 coins there, so that's nice. Added to our total. And we get 3,000 coins from completing 50 objectives, which is huge. So we have a pretty good coin total right now. We are up above 27k, close to 28k. That's pretty good. It's been a good episode, man. Anyways guys, that's going to be it for today's Monopoly Hut episode. If you guys did enjoy it, be sure to drop a like on it. If you're new around here, make sure to hit the subscribe button down below. We hit 4,000 subscribers finally. Thank you guys so much for all the support. Next stop, 5k boys. Anyways guys, like I said, that is it for today's video. Thank you guys very much for watching, and I'll talk to you guys later. Peace!


In this video, I'm going to give you three tips to become a better defender. So whether you're a full back or a center half, even a midfielder or four, it's good to know these things because you may find yourself in certain situations where these principles will come in handy. So the first thing I want to think about is the distance between your teammates, especially your other defenders. So when we're attacking, yes, you want width, you want to get nice and wide. So when we're on the ball, we can use the ball to our advantage. We can move it quickly to touch passing around the back, moving the ball nice and sharp. But when we're defending, we really want to think about our distance in relation to one another. So let's get this red team forward. So we get some good examples. Something like this. So when we're defending, we want to think about the distance between one another. So we want to be inside of the man that we're marking, and we want to be nice and close to one another. Now I'm not saying to be on top of each other like this. You still want to be in space in relation to the guy that you're marking. So if it was like this, we could probably spread a little more. But if these guys are inside, well, we have to be inside of the guy that we're marking. So we're going to be nice and narrow, something like that. So really think about the distance between you and your teammates, especially your partner defenders. You lost out here ball watching and leaving this guy out on his own. Okay, if this happens, then there's easy opportunities for them to attack. So really think about getting nice and close, focusing on your distance between the other defenders. You also want to think about holding a nice straight line.   So really think about holding your line, keeping your distances nice and close to each other, but also keeping this straight line as you move up and down the field. Okay, if you keep a really straight line like that, it's going to be difficult for teams to beat your offside trap. They're going to have to be really precise with their pass, really precise with the timing of the run in order to get past them. So when you're defending, always just look around, say, where are my other defenders? Am I close enough to them, especially when defending and am I staying in line with them or is someone trailing behind? Okay, if you see someone trailing behind, just get on his case, tell him, hey, get up, keep up with us and it's going to help everyone defend better. The second tip I want you to think about is the distance between the man that you're marking. So if you want to become a better defender right away, you want to make a defending a lot easier on yourself. Anytime the guy that you are responsible for receives the ball, you want to be on top of him and forcing him to have a bad touch so you can gain possession and then play with your team, forcing him to go backwards, giving him no time, allowing time for our teammates to come back and help out on defense. So whether you're in the midfield or in the defense, really think about, can I anticipate that the ball is coming to this guy? And as it comes to him, boom, I'm on top of him, I'm forcing him to really focus on his touch. Hopefully he makes a mistake and gives it up or goes backwards or my teammate can come in, we can double up and we can win the ball. So do not give your opponents time and space to hurt you. If you give them time and space, well, maybe he can get a shot off. Maybe he can play a dangerous pass into someone. So the more space, the more time you give them, the more likely they are to hurt you. There's different situations where you can give people a little more space. So let's say that the ball is out on this side. Okay, I'm not just going to stay super tight on this guy because he's my man. Because why? Now our distances are wrong. Now he can get in, someone else can get in like that. So yes, this is the guy you are responsible for. But because the ball is on this side of the field, well, I can give him a little more space. It's going to take a little more time. As that ball shifts, we can start to shift something like this. And then when that ball gets there, I'm on top of him. Okay, so if the ball is on the other side of the field, well, I can give my guy a little more space. I can think about staying nice and compact. I know that if that ball does get played there, I can get there quickly and we can all move across. Okay, so really think about where is the man that I'm marking? Number one, where are my teammates? But number two, where is the man that I'm responsible for? And anticipate when that ball is coming into him. And I get there right on top of him. The third thing I want you to think about when you're defending is protecting the space in behind. So, yes, I want you to get really tight, but you have to be aware of your weaknesses. Maybe you're not the quickest player or maybe you're quick, but the striker is extremely pacing. And all it takes is one chance for him to get past you and he's gone. So you have to really think about protecting this space in behind. Let's move a little further up the field. So a lot of times the most dangerous way for a team to hurt you is to get him behind. If they're in front of you, well, it's easier to defend. We have more control over this.  So yes, you want to keep your line, you want to think about your distances, you want to think about the man that you're marking. You want to be aware.  So when he receives it, then I can come into him and hopefully my teammates can come and cover me. But if I know he's super pacey and I'm up here like this, well, now I'm in a foot race with him. So I really have to be aware of his abilities and my own abilities. If you think you can keep with him, then hey, get pretty tight.  So if that ball does get clipped in, well, you have a head start on it and you can get to that ball first and we can play possession. Your teammates can help him cover if they have to. So think about, is this guy faster than me? Where is the danger? If he receives in there, is that okay? Can I close him down and now I can jockey and my teammates can help me out? Or do I need to lay off him a little bit? So if that pass does get played in, I can stay with him quickly like that. So think about those three ideas. Number one, the distance between your other defenders, your teammates, the distance between the man that you're marking, if that ball gets there, you want to be on top of him, force him to make mistakes, force him to panic, force him to play backwards and allow your teammates to come and help you out. And finally, think about protecting the space in behind. You don't always want to be like this, especially when we're man marking, because if he gets played in behind, I'm not fast enough to keep up with him. But if I give him a little bit of space in this situation, if that ball gets played in, I can go. And if that ball gets played over the top, I'm already there and I can protect the space. So think about those ideas. If you found this helpful, please comment below. If you have any questions, comment below. Make sure you like, subscribe for more videos, and I'll talk to you real soon.


Yo, let's get everyone Nick Smith is back. You know that I'm not a huge my team guy But when the packs drop, I'm there man when the good packs drop because you know 2k they're always lacking this content But the defensive player of the year winner box came out and the packs came out and you know I was like, you know, I've got a whole bunch of empty. I don't play my team like that So let's open these packs and let's get someone good The thing is I will stop playing my team, but I haven't had the need to yet. All right So get this my PSN, you know, you know on PSN how when you're when you're like online thing runs out You have to buy new things. I haven't even bought that yet and it's been out for like Almost three weeks maybe a month now So I've got to get a new PSN thing to play online and also my internet at home It's it's like weird because it sometimes it works really well Sometimes it doesn't and as you can see we got a new Ray Allen card right there, which is pretty cool You know for reaching I think it's 400 cards And I don't know if you guys have seen yet, but I pull pop off a ball fan Wallace is one of my favorite players for those that don't know and you see how he's wearing those accessories like the shoulder thing And then the and then you know the arm thing Yeah, and the headband TK they're tripping they don't have that in the game So he doesn't look he doesn't wear those accessories He just that card because I played one game with it already that card has Just braids and that's it. He has like He doesn't really have the accessories that he wore and he doesn't have the Afro either So that's kind of annoying I want to play with the card that I get if you know what I mean like I want to play with that picture card because I mean the card the the card in the picture that's pretty cool Like the Afro and the and the and the accessories that that just one that wants to make me play with Ben Walls I want to play with Ben Walls when I see that but um Obviously, he's still obese gets those blocks gets those rebounds gets a little bit of points gets a lot of dunks But I yeah, let's get back on track So I'm gonna start and look we get a Paul George right there man But I'm gonna show you my lineup at the end of this video It's a really good lineup like you're gonna be surprised because you don't see me as a my team guy But I play my team a lot like my team. I probably played that more than my GM I just never show you guys because you know, you don't really want to see the domination games of the historic domination games Or you don't want to see the challenges games But you I know what you guys want to see you want to see road to a playoffs a little bit of that And also, you know my fan base It's not really a my team fan base like my fan base is more of a my GM type of fan base So a lot of the time when I post to my my team video, I never really get the the views or You know the support that I would have if I got if I posted on my GM video Which I kind of want to change like I want to improve the channel So it is a my GM channel and a my team channel So I yeah, I guess I'm gonna start posting more my team throughout the next couple of hopefully the next couple of months and Yeah, I definitely want to play some more my team. I do go I yeah, I have to go to a to get a new PSN thing so I can play online again But yeah, the team I have is stacked and what I want to do is I want to get to the fifth seat I think is it fifth or fourth whatever seat it is where you have no restrictions with your team because my team is Nice and look at those shoes right there. Why are we looking at the toasters the old Kobe Bryant shoe?  So the packs have gone a little bit dry after um After Ben Wallace, but you will see that, you know, it's a big baby man That's a great photo right there But I you're gonna see that you know at the end like the last I open I think three boxes in this in this video the last box is the gold box man that last box is is a nice box So this is I think it's the last pack of the second box And we pull a Karl Anderson not who I'm looking that's not really actually no We got this this is the last pack of the second box And do we get someone good you bet we don't we get Garrett temple Garrett temple in a defensive play with the winners box I've seen so many people pull all these crazy amethyst, right and the the guy that I got was Ben Wallace That's who I've got so far pretty much, which is kind of annoying But the thing is like I was happy when I pulled Ben Wallace But if you're not a Ben Wallace fan, you'd be pretty disappointed because he doesn't really go too much and there goes run our test I will take run our test great defensive play Obviously, it's the defensive play of the year box, but you know run our test. That's the pace around our test It was crazy. It was good player back in the paces and so yeah Let me get clay Thompson right there and like I said this last box is the good box Like we get some pretty good pulls in this box. We have one gold right here and Is it a gold player? It is who's it gonna be? Mark eating, you know, he's gonna be eating on these on these packs He's eating the packs. He's doing work for me. It's Mark Aiden. He's eating get Pablo Prigionni He's sucking Tony Martha Williams not who I'm looking for right there.  It's over. It's Elias over. It's over It's Elias over failure. It's over failure solver and who is it gonna be? It's Tyson Chandler, New York Knicks version This guy is a great player in 2k because what he can do he can rebound right? He's a great rebounder He's really athletic which makes that's what to get a duplicate mark even but we in our in 2k Athleticism is the key if you're a big man We get a 89 overall Sydney Monkreef right there, which is awesome Because that's almost an avasus player, right? He's an 89 overall But I doubt he goes for a lot because you know how many pack openings I watched I've watched a lot We got a future defensive play with the year I reckon a sound white side and we got another Future defensive player of the year. Maybe I mean Maybe Andre drummin last pack of the day. Who's it gonna be? Nobody good cuz it's 2k we get a Jody mix, but yeah, this is pretty much the lineup. I'm gonna show you the lineup I mean I can show you the full lineup, but this is the starting lineup pretty much We got Paul George dynamic and all these other players on the bench I hope you guys enjoy the video if you did leave that like subscribe if you're new I'm out. I'll see you guys in the next one. Bye. Bye. Peace


What can Chris Holder do here? Can he pull off a precious win in Malilla? Thomas Gullip goes off the insiders written magnificently tonight as has Antonio Limbaugh gate number two rider number 12 Chris Holder in the white helmet color goes off gate number three and Nikki Pederson is off the outside The other rider in this final who is in the contention for the world title If Nikki wins the race and Chris Holder finishes last Nikki will be a point behind Chris in the race for the world title It's all to race for in the grand final here in Malilla Green light on and away from the start and it's Thomas Gullip off the inside and now Holder has got the drop on Limbaugh But Limbaugh comes back from off. Look how close it is. Oh, it's so very tight The lead is with Thomas Gullip. Limbaugh trying second place. Here comes Chris Holder. Down the home straight. Holder working overtime here Limbaugh gets second. Now Holder comes back from off. What a ride by Chris Holder. This is so intense I can't believe how hard these guys are riding. Look at that. Gullip's gotta go. He's gotta defend as well Chris Holder is right next to him. Look at Antonio on the inside. If he gets some ground up on the inside He can get right in the mix as well. Yeah, super stuff. But Thomas Gullip here He's looking good for his first win of the season. Chris Holder second. Antonio Limbaugh is third And a super ride for Chris Holder with four points as he stands here. That would put him one eight points ahead of Greg Hancock Significantly Nikki Pedersen trailing at the back. That's a disappointment for Thomas Gullip wins the Scandinavian Grand Prix He's the eighth winner in ten rounds. Eight different winners in a Grand Prix series That's unprecedented and it just underlines how wide open this series is. Thomas It's possibly too long since you and I have spoken at this point of a Grand Prix And thank you very much in the long long very very long truck Working my body and my team in the new engine today to test. I'm very happy. Thank you my mechanic my old team my sponsors