Earlier, during the swine flu and dengue fever spreading time, the Ayush ministry formed under the BJP-led central government and the AI-ADM-KILLED Tamil Nadu government promoted Nellavampu Kashayam and other traditional recipes to the people as a preventive measures and immunity booster. In this COVID-19 period, the same governments promoted KABASURA concoction to boost immunity power. This is happening at an official level throughout the state. TN minister supported Siddha medicines for mild and asymptomatic COVID patients. To understand more about the effectiveness of traditional medicines, especially the Siddha, which is a Tamil Nadu origin, Newsclick spoke to Dr. S. Krishnaswamy. He is a retired professor of bioinformatics from Madurai Kamaraj University. He is also the treasurer of all India People's Science Network and former president of Tamil Nadu Science Forum. What has happened was Siddha being a traditional form of medicine using natural herbs and so on. There is a separate ministry that has been created. Earlier, it was a department of traditional medicine, Indian traditional medicine and in 2003, they renamed this into Ayush, Ayurveda, Yoga, Yunani, Siddha, Omnipreti, but it was still a department. Then in 2014, after this current BJP government came into the center, they formed a separate ministry called Ayush to promote Ayurveda, Yoga, Yunani, Siddha and Omnipreti. That was in 2014 and there was a huge amount of money that has been put. But till now, in 2026 years, that ministry has not made any clinical trials to validate any of the formulations and any publication that has come has always been in very not-pure-reviewed journals, journals of not-good-reviewed, only there such publications have been coming saying this treatment is working, that treatment is working. So what the central government and Tamil Nadu government also should have done is to make sure whatever medication they are going to tell. That has been tested with people clinically. Even for Dengu fever, some few years back, Tamil Nadu government did the same thing. They said, Nilevembu kashayam and they promoted this, they started giving it everywhere. But once the Dengu, you know, that passed away, then all activity was stopped. So now there is no evidence whether Nilevembu kashayam is clinically proven or not. The problem is that the ministers or the government does not have any scientific temper. They don't go by the constitutional requirement of having scientific temper. They go by making claims which suit their particular way of thinking or ideological way of thinking. The whole problem is that it is not only the political leader promoting, it is also the public not questioning. See, if there is a scientific temper in the people, this is what Javelal Nehru wrote and also brought it in the constitution. The constitution says that scientific temper is part of the, it has to be there for everybody. But all these years, our education system, our way of society has not inculcated it into the general public. So that is the reason why we have so much of acceptance.  But they don't say that because the minister gets away with whatever he wants to tell. And the minister has a particular vested interest to promote such things. And he doesn't have the people in mind of what is good for the people. That is the problem. Kapasura Kudineer is being promoted by the Tamil Nadu government from the beginning of the pandemic. How do you see this? Kapasura Kudineer is one preparation which is belonging to traditional medicine. The Kapasura Kudineer, if it is promoted, provided there is enough evidence for it. That is what is important. As such, Kapasura Kudineer, as of date, officially people do not know what is the role of Kapasura Kudineer in clearing the COVID-19 infection. People have suggested that it is based on traditional knowledge that it can also cure viral fever and viral infection. What the government should do is to check, do clinical trials and check that it is happening, that Kapasura Kudineer is able to clear such COVID-19 disease. And they had enough time to do that. So they could have set up a clinical trial, done that and then if there is enough evidence, there is no harm in promoting. Right now, it is another way of superstition. Just as saying, if I come and go to the witchcraft, some medicine person and then he puts a neem leaf on you, it will become alright. So there is no difference between that and Kapasura Kudineer now. So there are reports, unofficial reports that Kapasura Kudineer in an institute in Delhi, they are trying to check and there is some limited information from the laboratory level that it may be helpful. But there is no confirmed clinical trials. Even for medicines like allopathic medicines, hydroxychloroquine or remits with, it is accepted that promoting such medication without clinical trials is not correct. That is why WHO has also said, first they said hydroxychloroquine may be useful, then they said it may not be useful because there are clinical trials, which show that it is not very successful. So like that, it is not whether Kapasura Kudineer or any other medicine has to be given. Any medicine which is evidence based showing that clinical trials show that people with COVID infection can be cured or at least prevented some further infection or becoming worse, then it is good. So the importance is evidence based medication. Why are political leaders promoting such medicines which are scientifically not proven? The problem is that Tamil Nadu has a tradition, has a history of being a rationalist from the time of Periyar, all the movement that went in, the Ravidean movement and the parties that have come. So now this party in ADM Gaye though has a named Ravidean, it has no rationalist thinking and it has completely cut away from its roots of rationalist thinking. That's why you find no minister, no person in the cabinet has a rationalist attitude. They are all completely superstitious and giving such wrong ideas. You can have a personal faith in any system but you cannot when you are in a state which is supposed to be secular, where the constitution is saying that it is secular, the chief minister of a state which follows this constitution has no business telling God will know or you pray and it will become alright. So actually this is enough grounds, people were very using enough grounds to say this chief minister should quit. Before this, the whole turnaround happened, let us say if Jaylata was in power, it's very unlikely, she would have told the line of BJP and it is also, I mean whatever the reason behind. And now this current government, this Elabadi, Pani Swami and Pani Selma government has become like a puppet of the BJP. There are widespread messages circulating in social media suggesting that some items, mixtures or dishes to increase the immunity against Covid. Will they really work? This is a completely wrong idea of all propagation of information. Our immunity level is important, our immune response to the virus is there. But just eating something just now, one day, it's not going to improve your immune response. Overall nutrition status, that is what is important. If you are a very healthy individual and well nourished individual, then your immune response is good. But these additional factors for enhancing immunity and all is not proven at all. There is no evidence to say that if you eat this or that, then the amount of antibodies, the production capacity will increase or the T cell response capacity, there is two types of immunity. One is the humeral immunity and the cell mediated immunity. There is no evidence that eating any of these things increases either the T cell immunity capability or the humeral immunity capability. Apart from this, there is something called innate immunity, that is the immunity that is coming because of broad spectrum. There are so many germs, so many viruses that affect us, but we still don't, there is no need for separate vaccines on them, but we still are able to avoid them. That is because of something called innate immunity. This innate immunity also, the factors involved in the innate immunity are known. There is no evidence that any of these things which are eaten, taken as supplement, increase the innate immune response. And in addition, in this COVID situation, there is a possibility that when people are very sick, 80-85% of the people who are affected by this COVID-19, they become normal on their own because of the normal immune system without enhancing, without doing anything to that. The remaining go into a slightly more, they go into serious complications and when they go into serious complications, one of the things that happens where lot of organs are affected is something called the cytokine storm, where cytokines is the immune response molecule, which is the molecule which are released in large numbers and that goes and affects, it sort of starts fighting against the whole system. So, this cytokine storm is actually a result of the innate immunity turning upon itself for some reason we don't know really why. So, even if some molecules which is some food which is given increases the innate immunity, there is still a problem that whether it will affect whether people taking such supplements, when they go into COVID-19 and go to a more serious stage, whether because of these supplements, their cytokine storm that responds becomes more or has a problem that we do not know. We will know only with that I will know, people just stress and so on. So, I thought I will say something today, not eat all these other things, but just a healthy eat good food, drink some water eat good food and the regular precautions of keeping distance and wearing mask and so on. So, the problem also is that such wrong messages and wrong give all sense of security to the people. Because I am taking this particular supplement, I am going to be better and so I don't have to wear a mask or I don't have to worry about washing my hands. Because I am taking Kabasura Kudineer, I can go and be in a group together with large number of people. So, like that giving these wrong, these medications which are not proven, giving such supplements which are not proven, they can give a false sense of security to the people and prevent them from taking the right course of action that is needed.


Okay, here at the local Aldi's Market, here I am, I have a bag of brown basmati rice, James Pimadana here, Megalike 21, I have one item, okay, and look at this, look at this, look at this, you gotta love this part, you gotta love Bergen County, New Jersey, you gotta love this part of the country, I got one item right, unbelievable, this is why I can't wait to relocate to San Diego, well not the main reason, but register three, register three, hopefully somebody will show up, maybe, oh forget it, forget it, time they come out, alright, this is what happens, you know, that's why they wrote, they always have applications out on the front end, because people probably quit, they find out they got to do everything, there's no customer service desk, there's no maintenance, there's no stock people, the cashiers and the management have to do everything, and there's no express lanes, really, when you think about it, we got one, two, three, four, five, we got five, we got five, five registers, no express lanes,


Okay, this is for a viewer. I haven't done very many Blender videos recently, and I get questions regarding importing models a lot, so I thought I'd just touch on this real quick since it's been a while and I think my last video was probably an older version of Blender. So just for the record, I'm running Blender 2.75 right here. So here's the default scene. I'm going to delete the default cube. And now you can either go up to File and go to Import and select the type of file model you want to import. We want to import one of these DAE files, so I can actually just hovering over the 3D view, hit space bar and type in C-O-L-L and choose to import one of those. And then I'm going to go to where my model is, which is in my 10th folder for now. So we're going to look at two models. Here's a model of Yoshi that a viewer asked me to have a look at. So I'm going to say import. First off, this model is rather large. Before clicking anything, the entire model, which has different parts to it, is all selected. So I'm going to hit S and I'm just going to scale it down. And I'm also going to, while hovering over the 3D view, hit zero on my number pad, which should bring you to the camera view. Make sure he's in view there and I'll actually even grab my camera and move it a little bit. Now if I hit F12, you can see he has his skins, his textures on, but the lighting isn't quite right. Now, most people nowadays use Cycles Renderer. I haven't even really messed with that very much at all. I still use the old Blender Renderer, so people are going to give me hard time about that. It works for me. But what I'm going to do is I'm going to go over to the World tab here and I'm going to choose Ambient Occlusion and change this to Multiply and Environmental Lighting. And now if I hit F12, you can see the lighting looks much better.  The reason for this is this type of models, these DAE files, are usually used for gaming. And I'll give you a better example here in a moment. But it actually has different animations and frames in there in this particular case, not always, that are actually separate files. So actually if I click on the eyes here and hit Delete, oops, the wrong part of the eyes, Delete and Delete. Now if I hit F12, you can see it's better. That's because the default Blender Renderer does not like when two objects or planes are directly over top of each other. You get that mess up because it doesn't know which one to render. And that's what was happening here. So there we go. We have Yoshi here with his tongue sticking out. I can also hit Space Farm, type in Plane and add a plane. While it's selected, I'm going to hit S and type in 10 to make it a little bit larger. And hit Enter. And if I hit F12 now, we have a plane that shows a little bit more of the shadowing of Yoshi here. Now I'm going to hit Control-N. I hit Enter to start a new file. Again, delete the default cube. I'm going to do the same thing as before. I'm going to say to import one of those files. I am going to go to a folder I have here called Mario. And again, the same type of file. And I'll click on here, zero to go to my camera view. And again, move my camera a little bit so I can get a better view at him. And this shows you a little bit better of an example of what I was talking about. Look at his hands here. There's actually multiple positions of his hands. Now, it seems like whoever made these models instead of using rigs to move the fingers, they actually made different key frames and different models for the hands. And if I actually go to my file browser here, this is the DAE file that we have, but it's actually using all these other files to create it. And you can see there's multiple ones named Face and multiple ones named Eyelid and Hands left and right. And so if we hit F12, again, we're having the same issue. So first thing I do, I'm going to hit Escape here. I'm going to go to my World tab here. Choose Ampute Occlusion, Multiply, Environmental Lighting, and I'll hit F12. Looking better, but you can see his face and his hands because there's multiple models in the same space. We're getting that funky texture there. So what I'm going to do here is, you know, whether you want his hands open or closed, delete all the other models or at least hide them. So I'm just going to do here. I'm just going to hit Select and hit Delete, Delete, Delete, Delete, Delete and Tilt. They're all gone and I'll hit Control Z to undo the last one. And I'll do the same thing over here. And you won't have to always do this. It's just the way this particular model was set up that they're using multiple models for the hands rather than keyframes and bones to move them around. Although Yoshi looked like he had some bones. So if I hit F12 here, his face is still kind of a little messed up. I'm going to delete his eyelids here. Well, I guess I'll delete some of the faces first. So he's got multiple phases. I'm assuming there's different facial expressions if I actually look at them. But I'm just going to keep on deleting until they're all gone and hit Control Z to undo the last one. Hit F12. He's kind of sleepy looking there. I'm going to delete the upper eyelid and hit F12. And there we go. We have Mario. Again, I'll hit Spacebar and type in Plane. I'll add a Plane and scale it 10 times and hit F12. And if you want to make it look real nice, we can change our background here to white, which sits our background background is white. And the plane is white, but the plane has shading on it. So you can still see where the plane is. Now, if you want that view of just infinite white, there's different ways to do it, depending on what you're doing. The way I normally do it is with the plane selected, I'll go over here to its Textures tab. I'll add a, I'm sorry, the Material tab. Add a material and I'll scroll down to where it says Shadow. And here I'll say Shadows Only. So render the plane other than where Shadows are hitting it. And if I hit F12 now, you have that infinite white. And you still have some shadowing around his feet there. Rather than if we didn't have that plane there, there would be no shadowing there. In fact, I'll show you. I'll hit Delete and hit F12. And you can see his feet are completely surrounded by white now, which you can do. But if I bring that plane back in by hitting Ctrl Z to undo and hit F12, you can see there's some shadowing around his feet. And depending on how you set your lighting, you can get more shadowing or less shadowing. And if you look, kind of, pixeled right here, but you can see the shadow isn't very smooth. You can adjust that by, again, going to the World tab. And here where we have samples, you turn that up. It will slow down your rendering, but I'll turn it up to like 20 and hit F12. And you can see it's rendering a little bit slower. But your shadows will start becoming smoother as you do that. So just mess with it till you get how you like. But there we go. That's importing models and some of the issues you may reach. Again, when you download a model, make sure that if it comes in a zip file, you put everything from the zip file in one folder when you import it to make sure that it imports the textures and models properly.  And there's different plugins for other models as well. But really, OBJ, 3DS and DAE are probably your most common. You're going to be importing. Some people will try to import 3D Max. Now, if we do 3DS here, that's a 3D Studio Max model. People get confused. The 3D Max files that I believe it's been a long time, but they end in .max.max is not a model file. It's a full scene. And Blender cannot import those. What you need to do is open up that in 3D Studio Max and then export the models. It's just like here, we're working. We save Blender. We save them as blend files. Those aren't model files. They're scene files. There's a lot more to them. So I hope I address some issues you may have if you're trying to import models. Scaling is a big thing. Lots of times when you import a model, it might be really small so you don't see it or it might be so big that you need to back up to see it. So just scale things until they look appropriate for your scene. And again, make sure your textures are in the proper folders so that they find them and you don't have to go and manually link them all. So again, thank you for watching. I hope you enjoyed this tutorial and I hope you visit FilmsByChris.com. That's Chris of the K. There's a link in the description and I hope that you have a great day. Okay, this is an introduction to FilmsByChris.com. I'm Chris. That's Chris the K. That's me right there. My daughter Ember and my wife Jennifer. We pretty much live in the swamps of Florida. I'm a firefighter by day as well as by night. We work long hours but that's not why you're here. You're here about the videos I put up on YouTube. These videos are mainly about computers and programming, which means most of my videos look something like this. And if that's what you're interested in, great. If not, that's alright. I do videos on other topics too such as video editing, special effects, photo editing, 3D design, and music creation.  So I ask that you take the time to go to my Patreon page and look at different levels of rewards you can receive for different levels of backing. There should be a link in the description of this video if you were watching it on YouTube. Otherwise, you can visit patreon.com forward slash metal x 1000 and I thank you for your time and your support. Have a great day.


So with the 5 Black Ducks now being found, you can now use these guys to open up the Doom Room Challenge easter egg and today I showcase how you do this. How's it going guys, my name's DPJ, if you do enjoy the video leave me a like, really helps out and if you like what you see and want to see more, be sure to subscribe. Ok so with all 5 Ducks found, you need to come to the VNC Broadcast Tower as you can see on the map right here. Now if you haven't found all 5 Ducks yet, I have posted a guide on my channel which you'll find literally if you click my name. Or I'll try and if I remember to pin it and put it in the comments section. Now when you're in the VNC Tower guys you need to come to this lift right here. I'll call the elevator, this can take a while so I'll skip to when it actually comes. Ok so when the lift arrives you need to go in people and go down to the basement. Once you're at the basement guys you need to swim straight under and then go to this door here that's semi-open on your right. Go through it guys, then run to the elevator at the very end and select level 0. Once you are in here guys you have to put 5 Ducks under 5 tables, so 1 duck on each table, so for the confusion there. Once you have put the 5 Ducks under 5 tables guys you then have to literally just pin these wires as you do. Plug them in one end to the other and create a star shape as you'll see me doing on the screen. Now that's a couple of what I do people and you are good. So once you have done this guys you then unlock the Doom Challenge which you can take part in multiple times. I will say is if anything bugs out for you while you are doing this, if anything messes up do not quit out of the game. Do not fast travel anywhere else because if you fast travel anywhere else when you come back here the lift will be down and I don't think you have anywhere of calling it back up so keep that in mind. So what you want to do is use the lift and go back up and then probably quit out your game, load back in then come back down. Do not fast travel out or quit out when you are down here because it may stop you from coming back and progressing. It is as simple as that. And there you have it guys, carry on with the challenge. Do what you got to do now. There are a few secrets in here I am working on finding right now. So as soon as I do people I will have you covered right here on my channel. But yes guys this is how you activate the Doom Easter Egg and I hope you enjoyed the video. If you do leave a like who helps out if you are new around here and want to see more be sure to subscribe. And if you never want to miss a video I upload a can of notifications on by hitting that bell button. But guys thanks as always for stopping by and hopefully I will see you on that next one.


Hello, and welcome to this Supercharged Live Code. I'm Paul. And I'm Surma. So let's build an advanced router. More advanced than last time? Yep, it's router part two.  Are we not? I've recently put out a mini-chilling tip on this if you want to know what the features of this tool are. Go there and watch that video. And you can also find it on GitHub in the Google Chrome org. It's called Simple HTTP2 Server. You generated a certificate, written the two files we need, and it's now listening on the HTTPS localhost 5,000. So let's do that localhost 5,000. We need to make sure that's HTTPS. And first of all, it's going to give me an error. Is it not? Yes, it is. And that is actually expected. So the thing that Simple HTTP2 Server does for you is it generates a TLS certificate because for HTTP2, you always have to have TLS encryption. And I generate a TLS certificate because it's here to do. And you can't use something like Lens Encrypt for localhost. So the first time you use Simple HTTP2 Server, you will get this error. And you will have to click on Advanced and then proceed to tell the browser to actually find with this unsaved certificate. Let me do that, then proceed to localhost. Ta-da. There we are. I've seen this thing from last time. Mom, I don't want to go fullscreen. Don't do that. Let's try. Oh, let's just move it there. How is it? These things always work when I'm not doing a live stream server. Right. Let's bring up this, the DevTools. And you can see from where we were last time, we had home, about, MISC, and all this kind of stuff. Crucially, though, we have all the content in one page. And we had the Python setup that no matter which URL you hit, you always got the same HTML back, which is kind of cheap and not something you'd actually do in production. Much more likely to do in production is what to have individual pages, and then load them in on the fly and do some hotspots. So that's exactly what we're going to take today. And in fact, because of the new server, it's not set up to actually do any kind of redirect or stuff. So if I refresh this page, I'm going to 404 not found, because, well, it doesn't exist. So there we go. And in fact, what we're going to do is we're going to go back to the root, and we'll go to the settings as well. Let me just show you this, because this is another problem that we had related to our approach from last time. Where is it? Where is it? We need the content settings.  Which, by the way, you can also do that in DevTools. Yeah, but this is more fun for me right now, because I was like, where is that thing hidden? Where is it? I'm going to go and find it. But in fact, speaking of DevTools, let's make that bigger as well, because we're going to do that. I forgot my only job. Keep pull making things bigger. So now, if we refresh the page, because the router doesn't actually kick in no JavaScript, we've got this problem, OK? So the content is actually there. It's in the page. But it's just not being shown, because we are completely relying on JavaScript. Yeah, all our users said, take me by default. OK, so we've got a bunch of things that I think we can try and fix in the time that we have. Hopefully, we'll introduce our customary one bug per episode. It's even on the bottom. It's even a, it's becoming a thing. It's not even supposed to be a thing. It's just becoming a thing. I think it's in the script for this week as well. Yeah, OK, OK. Right, right, good. So for now, I'm going to switch JavaScript back on. Because we do kind of need it. It is hard doing web apps without JavaScript. It is, but we can make this work. So what we'll actually do, I think, so let's just check we're back as where we were with the deep links not working, all right? I'm going to close the things that I don't need. I was having fun with ESLint earlier. It wasn't working for me, goodness knows why. Anyway, this is where we are. So let's go back, refresh, and we are in a good spot. Now, again, in the kind of server-side world, you'd probably do this with templating and stuff. For ease, I'm actually going to go ahead and I'm going to create an about section, which is going to be there, a contact section, which is decided to put up there for no apparent reason. Let's move that back out. So basically, all the routes that we were emulating in the last version, we are now actually going to create with the same content, or almost the same sort of content in all the indexed HTML files. Right, and what we need to do, let's in fact, let's go into the indexed HTML file and a bunch of things. So what we're going to try and do is we're going to try and copy the stuff across that we have, and we're just going to try and move that around a little bit. So let's move this, I think, to a defer source equals static app.js, because each of the pages is going to need to do the same kind of thing. So they may as well share this file. So let's just do that, app.js. And we can just do just do app. And we'll do that. Come on, there you go. I'm going to be called app class. Wow, why is that not in? OK, stop it. Bad, bad editor. There we go. OK. Even editing is hard. I know. So that's going to hopefully solve that particular problem. Now, what we'll do, let's see. Yeah, we kind of need a copy of this page everywhere. So let's do that, in fact. Let's do, is that going to work? That should be fine. Yeah, why not? All right, let's copy that across index to about, into the contact, and into misc. Right, let's see what happens with that. So now we should, in theory, still work. And if we refresh, we've actually got pages to power that section now. So that's good. But it will still work as it was before. So we're kind of, we just basically, instead of doing the server-side stuff, we've just done it for real. We've actually got file generation. So this is something that you could actually do on any kind of static host where you don't have any logic on the byte and get up pages or Google Cloud Storage or Amazon S3, all these kind of things work with this approach. Because you don't need any server-side logic. Make out those files. Right, other thing that we can do, actually, is inside of, say, our main index. We know that because of where it is, we can actually say that this one is visible by default, which is the class that we added when a section becomes visible. Which was totally dependent on the URL that you were opening up. So in the about, well, that's the one that's visible. So we're kind of short-putting the Java stuff. Java stuff will still kick in. But if it didn't, I should check if this works. I'm going to miss. There we go. OK, so each one of these sections we've defaulted. And let's say in the app, let's say we don't actually hijack the links anymore. And the router does kick in by itself when it gets attached. You can see it does all this stuff. So if we just do a return here. So now we've kind of switched off the JavaScript just by adding in four things. The router is now just an M, like a knob. Doesn't do anything. So the links are back to being actual links. This is actually the progressive enhancement way here.  So this is actually behind of where we should have been starting. We've been able to retrofit this back in pretty quickly. So that's a good sort of starting point. Now we can actually enhance on top. And the way we're going to enhance on top is, of course, just bring back our router. We can bring back our, let me see, in app.js. We can bring back the link, like so. And our animations are back. That's good. Now the problem is, we've kind of still got per page, whether you say you missed or whatever, we've got the same content inside each page, right? I don't think we want to do that. So basically when you're loading the miscellaneous page, you still load the content for all the other pages, even though they're not on screen. I mean, in this point, it's just a word, right? Home and about and content. I mean, in the real app, that's going to be images. It's going to be a lot of, potentially a lot of content that you need. Even more JavaScript, potentially. Yeah, and styles and all that kind of stuff. So we've got to be a little more tactical about that here. So we don't really want the exact copy of the pages. Now this is the point where we can actually make some tactical decisions, because we can either take our view from last time and extend it and make a new class called something like MoteView, which is what you were talking about. Yeah, this is what you were saying. So after last time and before this time, so when I've been talking about this. We could do that, which feels like a thing. And it feels like you can just basically overwrite the inMethod and show you the inMethod in the view. This here, it feels like you could override this in your inherited class and just say, for the remote view, must do something magical and special. You could do that, right? It's cool. But let's say, for example, further down the line, you want to have something specifically for the about section. You don't know whether it's going to be the SCView or the SC remote view ahead of time. In fact, it's probably going to be both. Because on the about page, it'll be the SCView. But on every other page, it'll be a remote view, because it needs to be loaded in remotely. This means you've got an inheritance problem, which composition would actually help you with, because you could borrow bits and pieces. In this case, I think the alternative is probably better, which would be to add a matrix. I think on second thought, you really want to be able to add special behavior at one point. And dual inheritance is not a thing. Or multiple inheritance is not a thing in JavaScript. And generally, it is something that is really hard to track off in your head. So it's best to avoid it, usually. And I think that actually makes it very obvious anyway. So it's probably better approach in terms of lane design. So what I'm going to do is basically what I'm doing is I'm sort of stripping back these other views that don't apply to this page, make them into kind of place hold, I suppose, views. So we know where they would live on the page. And I will tell you what I'll do. So it's inside each one of these. I'll add a remote. Oh, we don't want that on the home. For the home, the home is actually kind of included in this page, because this is the root page. By the way, this is what people mean kind of when they talk about server-side rendering, that the document that you receive on a first request contains all the data you need to show what the user has been requesting. And everything that they don't need is stripped out and can be loaded on demand. So we're kind of emulating that by maintaining multiple versions of the same index HTML document and putting the data in there or stripping it out. So that's going to work here.  And in case you've just joined, welcome. This is Supercharged Live. And people have requested, and now we're doing it, it's Router Part 2. We are going to enhance the router from the last episode with new capabilities, like loading in the data from remote endpoints and not having everything in one document, which was our approach for the last week. If you want to participate, if you want to confuse us or influence the way things are going, go into the chat on YouTube and send us your questions or your remarks. I'll be monitoring it and incorporate it into our actual conversation if it makes sense. Because sometimes it doesn't, and I will not do it. Speaking of which, are there any questions or any comments on the chat while I'm doing the fairly boring work of just hard coding and some stuff? Well, we got asked why you switched from Adam to use code, and I said, we're mixing it up. Yeah. In fact, historically, I've used Sublime. And to be honest, I have a fairly lightweight set of plugins that I kind of keep per editor. Mainly, Linting is one of them, and normally just a little bit of syntax highlighting and editor config stuff. Are you sure that the plugin most editors have that just built in at this point? So, and to be honest, it's just. And the rest of the users, you want to type keys and you want those letters to appear on the screen. And all these editors are really good at that. One of the things I like about the VS Code is the code completion stuff that it starts to suggest. It's really good at that, yeah. So I just feel like, I forget sometimes when I'm doing XHR and things like that, what order the parameters go in. That also one of the biggest problems with XHR. It's just pain points. Am I doing an open right now? Am I doing a send? I don't know. So anyway, let me finish this last one up. So each one of these now, so if you look at the basically the about view is going to be. Inline. And everything else is remote and the same for contact. And the same for misc. And then the same for the route is going to be home. Let me just remove that. Yeah, make the formatting consistent. Why not? OK, so now you can see that we've basically got the same kind of stuff everywhere. And hopefully that's still going to work. There's no reason to think it wouldn't, except that what we're going to probably see that is that when we go to a section, it's just going to be blank. Because there's no content in there. But it still sort of fundamentally works. So the visible attribute is still being switched to the correct view. But since there is no content, because we just stripped it and haven't implemented loading it in, there is no content. But we're making progress so far. We're doing well. And one of the things I think we can assume then is if you've got one of these remote views, we probably need to add some kind of loady spinner behavioral thing. And I have sort of guessed ahead of time that that's what we're going to need. So I've created myself a little spinner. Graphic there. It is so pretty. Do you know what the thing is? I kind of am looking forward to conical gradients. Because finally we could do these things with CSS, where you just be like, start at transparent white, go all the way around to full white, or whatever the color is that you need, and then ta-da, we're done. Because right now this is an image. It might look bad on retina screens. I've made it twice as big as I need, so that I can at least 2x. So that means you'll need a little unnecessary pixel on non-retina devices. All right, all right. I'm just saying. I'm just saying. Fine. I'm just saying that the CSS approach would be awesome if it was you already. That's all I'm saying. That's all I'm saying. Right, let's carry on. Right, so what do we need to do this? We need to do this in a remote attribute. Yeah, we do. We've got the remote attribute. You're right. But let's do this here. Yeah, so if we've got a remote view. So we've got SCView. And if it's an SCView that's remote, so we can do that with the attribute. And we'll move. A very underused feature of CSS, in my opinion. I enjoy it. All there is. So I'm going to put on the spinner, and I'll use it after for that, which is going to be fine. Let me just see. So I need to say it's width is. So the image is 80 by 80. So it's going to be height 40 by 40. And we say background URL. Background URL. URL, there we go. Images, spinner, dot ping, ping, center. Because transparency, no transparency. Repeat. And then we say background, cover, contain. So it fits inside that. I mean, you could do 40, let's do that, 40 pixels. 40 pixels. All right, so we do that. Background cover. Who doesn't know that? Is it background cover? Background size. Oh, pull, pull. Come on, because it's covered contain. Right, so width, blah, blah, blah, blah, blah. And it's an after, so we need to do content that. And we can do position fixed. One of my nearest wishes for CSS is that we don't need to specify an empty content for pseudo elements. It just feels so unnecessary. Transform. So it's going to be 50-50, which we'll put it down to the middle, but off to the side. So we'll just do transform with a translator, minus 50%, minus 50%. Which is one of my favorite things, because of the fact that it accounts for the actual width of the item being translated. Rather than. And not on a paradigm. Yeah, it's one of these items. When you read this, it looks very confusing. If you don't know this very detail, it's. And we also, I'll tell you what we need. We need some key frames. Key frames. And we'll say it's from to. I'm going to do it transform rotate zero degrees to transform rotate 360 degrees, like so. So will that invalidate the translator? Yeah, I was just thinking that. Probably will do. So we're planning to just put it in there as well, right? Yeah. Let's see what happens, so we can do that. And since it's going to have this on the whole time. Anyway, let's do animation name, spin animation duration one second, animation timing function linear. And then what's the repeat count? Can you remember? Animation. Iteration count. Thanks, mate. One of my favorite attributes because it's so long and unwieldy. Animation iteration count. At least, as I say, at least modern editors are really good at kind of going, you mean that thing, right? Yeah.  I used to be a big component of not having code completion because I was very proud of knowing everything on the top of my head. I have since learned that there's more important skills to have. Yeah, so we've got this in the remote. So hopefully, we can go to about, and then we go here. Why are we? Wait, this is saying home. OK, we've got a bug. Already? Yeah, because the visible attribute needs to go against the active one. Oh yeah, that is actually correct. So again, this would be something. See, I'm error prone because I'm doing this by hand. You would use like a templating engine. Or a static-side generator or something like that. It should be like the current section should be the one that's visible. So now, all being well, there we go. So immediately, we get this kind of spinner in the middle, which is a kind of a good default assumption for the remote views that we're going to load them. So we may as well check the spinner. But we're going to have to be probably, I think, a little bit more tactical in the future because what's going to happen is some network requests might come back instantly. And that's going to make this look really horrible. If we have a server server or good caching, we might get it instantly and have like a one or two frame flash of the spinner, which looks weird. So let's work our way through the problems as we get them. Right, our SC view, the end. Well, we definitely know we want to fade in. What we want to do is we want to say, let's see. OK, so let's do the, we want to know if this is a attribute. Remote is not equal to null. Because the empty one will just come back as an empty string when we get that attribute. So it's not equal to null. OK, so if it's a remote, we would want to load the view. Right? So that's fine. So because we know we're going to throw the spinner on. So we need to load the view and when that load is done, we'll then put the content in and we should be good. So let's see what load view would have to look like. Load view. OK, so that's going to be, I'm going to do an XML HTTP request. And people might be wondering, why is he not doing a fetch? And the reason is fetch doesn't let you get a document. And that is effectively what we're doing. We're going to get a document and reparse of it out so we want to be able to do queries. Yes, we want to be able to do it. The alternative would be to fetch and get it back as text and then pass it to the DOM parser, which is like DOM parser, blah, blah, blah. But the weird thing about the DOM parser is it doesn't throw an error if it fails to parse the DOM. It doesn't? No, it creates you a new document anyway with a parser error or parser error node inside it. That sounds fun. Sounds ridiculous. Let's not do that. So XHR, let's say, we'll say, oh my. We were just talking about it. Now we get to write XHR. I haven't done that in ages. Yay. I already want to cry. So XHR response type, we know we want that to be document. We want it to be document. There you go. So we want that to be that. XHR.open, what was it? It needs a method so that we get the URL. The fact that you know all this is already. It's weird, isn't it? Yeah. OK, so I know what we're going to do. We need to know which URL we're going to load. And the data that gets passed in from the router, if we look back here, the data is the route itself executed against the regular expression. So the 0th part. You mean the regular expression executed against the path? Yes. The 0th entry in that data array will be the full path, which is actually the thing that the user tried to click on. So that's good. And we can use it as the actual path because that is what we have all these index HTML document. We're looking for query selector, the lec, tor. And we want an sc view, which is set to visible, right? Which is what we mainly set. It all comes together. Oh. Yeah, it does. So the new doc is that. New doc query selector, the visible one. That is going to be a view. So const newView is that. And then with newView child nodes for each child node, what do we want to do? Oh, I take all day. We'll say this.view equals null. And then we'll say this.view equals new document fragment. We're going to create a new document fragment for it. And then we'll say append child node. So we've created a new document fragment. And we're going to take a copy of the sc views children, put them into the document fragment. And then we can say this.append child this.view, OK? So that will throw that onto there. It'll append that into the view. Means we don't carry the copy of the sc view we've taken its children, copy them in, and append it to the document. Am I missing anything? I'm wondering if this function should return a promise. Why? No, no, no. It shouldn't, because we don't want to block the transition on this. I was wondering if there should be a way to subscribe to I'mDunloading.  You could. But if you don't need it, then don't. I'm just wondering if we're going to need a later on. We might do. For now, I'm just going to assume that what we want to do is we just want to load it. And when we load it, we're just going to pop the content straight into the view. Now, I think we do have a bit of a sleight of hand here, because what's going to happen was let's see if it works, first of all. Console. I'm so scared. This is actually better than expected. Yeah, but we've still got the spinner, right?  Your simple HTTP server actually has a feature that is extremely useful at this particular point, because. Coincidentally, I just shipped it yesterday. Weirdly. I wonder why. You can add a delay onto a request. So let's say it's not going to come in instantly, because this is loading off local host, right? So it's like snappy snap, which is not how the real world works. Say you're on the about section and you go to the contact section. Basically, what we've got at the moment is we swap to that view, but there's no content loaded in. So we just show you this spinner, essentially, which we coded in inside the CSS, which you can see, roughly speaking, over here. We basically said if there's a remote attribute on the view, throw on the spinner, and so on. Now, in our code, inside the view code, what we've got is basically this is the in on the view that existed before. The old code. Code. And we're saying, if this is a remote view, we want to load its contents in, which you can see. What we're doing is we're making an XHR in for that. And we can just quickly recap the discussion we had. The reason we're not using fetch is because fetch doesn't let you fetch as a document. You can do JSON. You can do text. You can do blob. Blob, yes. But you can't say dot document. The reason is that the fetch spec would then have to involve DOM parsing, which would be just massive. Which is also not available in workers, but fetch is. There you go. So we want to have a document because we want to be able to call query selector, for example. So what we do is, you can see here, we've got the XML HTTP request. We tell it that we want to document back. We get the link that the router got. So basically, we're going to load that over XHR. And then when it comes in, we just basically grab it as the doc. We look inside it for whichever one of the visible views is in that doc. Then we created ourselves a document fragment. And then we take a copy, or we actually reassign, essentially, the children of the view, the loaded in view, and put that into the fragment. And then we put the fragment into the page, which is all going to work out just dandy. It was working just fine. And in fact, the other thing we've just done is we've added this delay property onto the request, which is something that symbol HTTP 2 server supports basically to slow to delay the response, such that we will now get, for example, going from contact to about. We see that 1, 2, 3, 4, 5. Anyone now? Anyone? Anyone? Oh, it's broken. Dear Paul, I need to save that. That's why. I'll do that again then. Go from about to contact. Here we go. 1, 2, 3, 4, 5. That was a long seconds, though, for some reason. It felt long. It felt long. Everything feels longer when you're on live stream. But as you can see, this is very similar to how the real world would work, where you are on the tube, very brittle, very flaky connection. Request, take a while to get out and back in. Yeah, so it helps us to actually have this delay on just to kind of see that our spin is going to show up and do the right thing. In fact, the contents arrived and it just popped in, which, for a real view, would not be that nice. And in fact, our spin is still going. So we need to kind of account for that. So what we'll do is we will say, yeah, let's do a, so we've got the view, we'll append it. And we'll say this.hideSpinner. And in the hideSpinner, let's do this.classList.add. Load it? Yeah. Why not? Kind of while I'm here, actually, this makes a point that we, if every time we call in, we're going to load the view, which is unnecessary, right? Because we don't need to know it once. And we can use the fact that this.view has been turned into this document fragment as the kind of marker for that. So we say, if it's remote, and we don't have a view, load it. Otherwise, once we've been through this process once, the view will be set, and we can. So it means when we go to all the subsections, in the end, we're going to have the same DOM as we had in the last week's episode. Exactly, so we just, exactly. So we just kind of, it's a little more progressive enhancement friendly, I suppose. OK, so we've added this loaded class, and what the loaded class needs to do is, let's do sc.view remote1 with a loaded class, and we need to tell it after this opacity is zero, in which case what we'll do is we'll put an opacity of one, and we'll tell you what we'll do is we'll also make pointer events, pointer events, none here, and we will. So tell me, Paul, why not just display none? Well, we could. We absolutely could, but I think we want this kind of, we want a kind of crossfade effect. That's all I'm going for. You could just snap it off, and that would also be totally OK. But in general, these hard transitions, or these non-existent transitions, is what you want to avoid. I personally want to avoid it. You want to leave the user. Yeah, it feels nicer to just kind of crossfade, so we'll actually do a transition on opacity for 0.3 seconds, and then why not? Oh, look at this. They've got some built-in ones, whatever. You know the one. I know you know it. And no one want to type it out just to show off. No, no. I can't remember it. I triggered the. You did? Is it 0.3? What do I normally do? Panic, panic, panic, whatever. Shouldn't we have the transitions on one of the other things, the lead-in, lead-out transition? Should we have the same? Oh, dude, no. Just don't we have the same ease function on our lead-in, lead-out transition? Probably. Yeah, let's copy paste. OK, let's do that. Well done. Well done, Paul. Well done, Sir Matt. Don't panic, Paul. Don't panic. It's fine. You were almost right. I was almost right. No, no, 0.3, 1. That seems odd, Paul. That seems like an odd one. All right. OK, let's see. So we do an opacity of 1. Let me check that to earn opacity of 0 when it's loaded. So let's see how we're doing there. So we go from contact to about, oh, this is going to be a five-second wait. Tune it down a little. Yeah, because otherwise it disappeared. It faded out. But the content still snaps in, right? And so I think what we probably want to do is we want to have, so I could make this after full-size kind of screen and then kind of rotate that, but that's just a massive layer to do that with. So what I'll do is I'm going to do this. I'm going to have a before like this. And then I'm going to set. Oh, you're going to basically put something over the content. Yeah, basically. Because we can't fade in the content. We could. We could fade in the content, but you'd have to put the content inside another element and then fade that in. Because you have the background color. Exactly. It's often easier to put something over the top of that and fade that out than it is to try and get all the content which visually is indistinguishable. Yeah, exactly. Often it is. And certainly it can be a faster way to get the same effect. So position fixed. Which one am I going to do today? Top zero. Left zero. What's next? Right zero. Bottom zero. OK, we'll do background. Let's just make that 1, 2, 3, 1, 2, 3 for now. And let's see what we get. So position fixed. That seems good. So we need to make sure that when it's loaded, the before fades out as well. So we go from there to contact. Oh, we should really drop that delay. I wanted to remind you already if I forgot, but I was changing the chair. But I don't see it before, which is not clever. Oh, it's probably because I've not done things like content. See, I told you. You can do this 20 times a day and you still forget about it. Yeah. And also, it will need to be like capacity one. And you'll need to have a thing with the thing there with the opacity transition. There we go. So let's see. Is that good? Right, I'm going to drop that delay while I remember, because every time I'm like, I should drop that delay. And then I keep forgetting. Let's drop it to two seconds. OK. So that's cool. Obviously, this is always the same color. In this case, we can totally cheat because we can make it inherit the background color, right? Also, feature of cheat is not underused. I never, ever remember. So background is one of the most legit use cases I've ever seen for this. Background inherit means that it's going to take the green color here. Off a parent, which the studio element is a child. Yeah. Or is it? It is, right? It is a child. Oh, look at that. Look at that. Look at that. Ta-da. So you see now, actually, once we go between sections, once we've loaded them once. It's fast. It's snappy. Yeah, because it doesn't need to load them in again. It's kind of cached it for the next time. And in case you're wondering, one of the things that we added last time inside this was contain strict, which I'm on the stable version of Chrome here. But in Canary, as of Chrome 53, Chrome 52, actually, Chrome 52 CSS containment landed in Chrome, which would mean that we can toggle things like visibility and hopefully limit the effects of things like layouts and so on. It depends generally on where you actually place the containment. I mean, for this prototype, it wouldn't have any real gain because we only have a single word in each view. If you have more complex, maybe even scrolling content and where layout gets more and more expensive, the more elements you have, this might be a lighter because if we add something in one view without containment, all the other views that aren't even you might get relay out it. And you don't want that. This is exactly we don't want that. So anyway, right. Now, if we remove the situation where we have a really short, let's have a look, a C view, a Dism view, yeah. If we get rid of the delay, we'll put it down to something really small, like that. I want to do it too short. No, you can see it. Well, you can actually see it because of the fadeout. So if you look really carefully, when I'm switching between sections, you can see that there's this kind of, you can see the spinner, and then it kind of disappears immediately. And that's kind of weird and not very nice. So what we'll do. It's one of the things that you probably can't unsee once you have seen it. You might not notice it first. Yeah, let's do it again. Let's just really sell that effect. So we go about contact every time. Let's not make our users feel that way. Yeah, let's not do that. So what we'll do, instead of just assuming that we need to show the spinner, what we'll do is we'll make that require a class. And we'll say that class is pending. So the section is pending, like so. And then what we can do is in here, what we'll do is, yeah, if we've gone into the load view, that will be the time to say if this load, if this XHR is going to take a long time, let's pop up this pending class. So what we'll do is we'll say set timeout. And we'll do this.showSpinner. And we'll wait, say, half a second. I mean, I guess you'd get a feel for this, depending on your app, as to how long you want to wait. And the showSpinner is going to add a class of pending. I'll add a pending class. And then what we'll need to do, I'll tell you what we'll do, this.spinnerTimeout equals that. And let's do that equals undefined. And the reason you don't want to set to something like zero is the fact that the first timeout that you get will actually be set to zero anyway. So the specs of it should be undefined. Because we want to cancel the Spinner, obviously, when the page will start to be before that timeout. So when the onload fires, we'll clear a timeout for that. And we will this.hideSpinner actually for that. He'll leave it on as a class variable, do you? Yeah, potentially, potentially. Well, we factor is more easily this way, probably, because you can move things to different functions without worrying about losing the reference. Two, or we're also going to move that out here. Because on the XR loading is when we actually create the view. But for safety, we only want this to fire once, to load viewloud fire. So we want to create that maybe someone does a double click or something weird happens exactly so we'll move that out there While we're looking at this particular bit of code. Okay, so we clear the spin a timeout and we'll call hide spin But you're right. We could actually probably just do a const There we are spend a time out is that and we're just gonna When I clear it we no longer need it So that if if we're pending this and it comes in and say 250 milliseconds Then we clear that timeout and we're gonna hide the spinner anyway Which will involve adding this loaded class, but we can tell you what we'll do as well in here the dot loaded actually we should just kind of compound that arguably like so Yeah, should do it see what happens So we so when it's a short delay like this, that's great. Let's have a we don't have the uncanny spinner flash Exactly anymore, which is one of the things you wanted to achieve. I have a I have an even Better idea though because I think what's gonna happen is let's do let's just make an artificial delay const delay equals math dot random times by five thousand Round that down by doing that Just you bit hacker. I know Math floor is just too mainstream. I know I'll do I'll do math floor Cuz that was just a bit showbo too. There was no need to do that pull my thought floor We go there we go delay Yeah, yeah, right so in this case when we go to a section Didn't see anything don't see it. Okay, so we have a problem. We have a bug Did the pending class? They actually shows me no this dot class list that I've penned this is this It's a time. Oh, okay. I Didn't actually call that function any questions on the live stream any So we got two questions right now. The first question was what was this big heck right now? What was the single pipe and why did it work? the single pipe is gonna be it's a bitwise operation and your bitwise oring with zero which basically Converts it to the nearest integer value is the because bitwise operations only work At least on integers so it implicitly turns a float into an integer which basically means cutting off to decimal places So it works which in this case for a delay feels like something I'm on want to do I want to see a milliseconds. I want a rounded value. I don't want to do 342.7 milliseconds Also interesting question He said if you wouldn't use set timeout, but rather put a delay on the CSS trims animation for the spinner Which in this case I agree that would work But sometimes you are more complicated than just an animation that you're actually doing work in the background Or you maybe want to do some other logic Yeah, which actually involves job here and then you have to do something like it's a timeout to invoke the actual code Yeah, exactly. There's a there is always a bouncing out here. You definitely can do that and I In this particular situation, I think My preference is for the readability of going. Ah, okay We we kind of we've got a timeout for the spinner like any it follows in the flow of this particular code If you have to jump across to the CSS to see that you have to know that that's in the code too In order to go and go why is that spinner not showing up immediately like for example the class is there What why and so for me personally just seeing it here is you're having basically Usually with classes your associates the state and if that state is delayed because of CS animation just feels weird Yeah, but I get your point. It would be leaner if you can if you can achieve your goal with this This probably is just a way that scales better because we at some point we might want to add some logic to When things are being delayed. Yeah So this is now working so we've go to the contact section, but it pops in you see how the and so and I and that's because Depending class creates the after that particular point. So we kind of want to do Yet another rule. Yeah, yet another rule is if we didn't have enough of those already With an opacity of one Like so and the same will be true for the but the original you want to pass it is zero, right? Yeah, you're right. We want the opacity to be zero here and then when the pending class shows up like Before We want to set the opacity to one and when it's pending loaded. I mean I imagine because this appears after Let's find out just removing. Yeah, because at the same time we don't we could remove the pending class actually Yeah, I was just removing penny. It should be enough. It should be enough, right? Okay. Let's do that then Back in the view. We'll do that remove pending It's no longer pending Kind of here. We broke everything just now. Yeah, we did. Why? What do I think was just fast enough to look because our delays random now now Or it's in noise. It's got it's got an error. I've got an error class remote Not gonna do that remove. There we go remote classes Yeah I'll tell you what I want to do just with that delay. I actually want to say at least one second. Oh, yeah, that's good and then contact See how it faded in a little bit nicer, and then eventually Contents actually are so beautiful. Yeah, and then Well up to six seconds now, right six seconds, which in hindsight was a bit of a mistake But there you go, right This is now working as intended if there are no the know the questions No, I think we could in which case let me say thank you to everybody who's joined us on the live stream asking the questions Thank you for watching this. Don't forget that you can subscribe to the the YouTube channel.  See you


The Commonwealth of Learning. Most people call it COAL. What is it? COAL serves the Commonwealth, which is a free association of 53 sovereign countries, all democracies, whose past involved links with Britain. English is widely understood in Commonwealth countries, which have many similarities in their parliamentary, legislative and administrative systems. And this makes for easy and productive collaboration. But with these similarities comes great diversity, nicely expressed by this tie of the Royal Commonwealth Society. The Commonwealth includes some of the world's largest countries, like India, with over a billion people, and some of the world's smallest, like Nauru in the South Pacific, with less than 10,000. Indeed, two thirds of the Commonwealth countries are small states, and COAL works with all of them. All races and religions are well represented. Some Commonwealth members, like Australia, Canada and Singapore, are rich, but most are developing countries. And COAL's job is to help the 45 developing countries to develop further. And that's the second part of our name. We are the Commonwealth of Learning. We believe that our future, both as individuals and as humanity in general, depends on learning. Our motto is learning for development, because we believe that learning is the key to development in all areas. I'm not just talking about schools vital though they are. Keeping families healthy is above all a matter of learning good habits and avoiding disease. Growing enough food depends on learning how to farm better, and improving incomes means learning new skills. The same is true for the two big global challenges, population growth and climate change. The best way of slowing population growth is to give all girls a secondary education, because they will then have fewer children. But at the moment, tens of millions of girls do not get a secondary education. There is a huge challenge of learning for development right there. Sowing population growth will also contribute to slowing climate change. But we must also learn new habits and new lifestyles that make fewer demands on this planet we call home. The Commonwealth of Learning helps the countries of the Commonwealth to learn their way to faster and more sustainable development. We also use the words common wealth and learning in another way. Learning is our common wealth. Learning and knowledge is the common heritage of humankind, and so we must share them. Everything that coal produces in the way of guides and learning materials is made freely available to everyone, not just Commonwealth people. Take a look at our website. We are leaders in the movement to create and share open educational resources. An example is the Virtual University for Small States of the Commonwealth, which is a collaborative network through which 32 small states develop and share e-learning materials. And that expresses another of coal's principles, South-South Cooperation. Africa and Asia have much useful knowledge to share, and coal facilitates exchanges between their countries.  Our headquarters is by the Pacific in Vancouver, Canada, and we have a unit halfway across the world in New Delhi, India, called the Commonwealth Educational Media Centre for Asia. But thanks to my highly expert and dedicated colleagues, and to a huge network of partners in all member countries, we punch far above our weight. In other videos on this site, our Vice President, Professor Asha Kanwar, tells you more about our programme, and my colleagues, our education specialists, describe their own initiatives in learning for development. It's exciting, interesting, and sometimes groundbreaking work, and I'm sure you will find it both engaging and fascinating.


Thank you. Thank you. Thank you. Thank you. Thank you. President, is it all for three this tonight? Well, two more days. And Saturday too. Yes, it's 8 o'clock tonight. We really have the first time. We'll see a Rostow who are representatives of Geneva on the talks going on in the intermediate range missiles. So, we're looking forward to hearing about the negotiations that's been going on. And, sir, do you think you'll eventually reach a satisfactory agreement with Russia somewhere down the line? No.  I'll talk to that tonight. Are you going to go back to Geneva now? Well, I appreciate this opportunity for a first-hand report. This was Mr. President, how are you, sir? How are you? Oh, I got an ulcerated foot in there. I had a fight with a palm frond. That was just about Exxon Livingston. How are you? Good to see you. Good to see you. I was like president. He has a certain advantage. I just put me next to that. He had a curtain, it was still occurring. That was actually. In one area we could land a candle at a setting and he didn't live in the area where there was a most active. Sorry, he couldn't be here today. He's had to lose on the trip, I believe, and on her hand to go back and do some delegation. I'd just like to express my name, express a couple of observations that I think we all share, and then I know you all can hear individual comments. But it was something that was a very moving event for all. And I felt that it was a heartfelt expression of great intensity on the part of people for peace that ended the conflict in itself. And I think, secondly, that it was... I'm here to the White House and I'd like to begin by expressing my gratitude to the veterans of foreign wars for their active support of not only this program, but some of the things we've been trying to do here, like our economic recovery program.  Commander Felwalk, please extend my personal welcome to your 2,000 state and local VFW officials who are in town for your annual Washington conference. Our country is deeply indebted to the 1,700,000 members of the Veterans of Foreign Wars. And I'm especially pleased to be able to greet 52 high school student winners of your Voice of Democracy scholarship program. I understand that more than a quarter of a million students participated in this year's program from over 8,000 United States and US overseas schools. So that makes you a pretty select group. And I hear that this is a tripling of the student involvement and a doubling of the school participation over last year. I can't think of a place I'd rather be than here to share in honoring each one of you for your achievement and to pass along my congratulations to Scott Baker, this year's national winner. I compliment the VFW and the ladies auxiliary for the outstanding participation and support, I should say, sponsorship of this program. During its 20 years, over 4 and 1 half million students have participated and awards totally more than $2 and 1 half million have been given to winners at all levels. So I hope that we can count on each one of you to continue your fine example as you move to leadership positions within your generation. Let me just say something that happened just before I came over here this morning. I have just been getting a report from Nancy Cassabon, the senator from Kansas, and the fellow congressman who were with her on the bipartisan Democrat and Republican team that went down to supervise the elections in El Salvador. And it was just the most exciting and thrilling thing to hear about democracy. And people where they're trying to deny them democracy and what they'll do for it. Now you know in our country, and this is something for you to, now in the leadership positions that you have by way of your own achievement, to make sure that your generation helps and begins in correcting this. Our problem in this country, where we fought so many years to get the right to vote, is to get enough people that will go out and vote.  And they won't do it. But they were telling me it was a hot day down there in the tropics in El Salvador.  One woman that they talked to, they said, well, what about it? They'd found out that the gorillas had told her personally that they would cut off her finger. That was the finger that they had to dip in an invisible ink that then under a fluoroscope light would reveal if they tried to vote again, whether they were voting twice or not.  But she was standing in line waiting for a chance to vote. And they said, but what did you say to that? She said, I told them they can kill me.   And they went out early in the morning. Lines for blocks and blocks stood there without breakfast or lunch, as long as 12 hours waiting in line for the privilege of voting. And the other thing that felt very good, you know, there had been some complaints about whether we should be helping them, whether we should be sending them aid or not. The other thing was to hear that they said when they were recognized, people would come out of the lines and say thank you. Thank the United States for its help to us and for what you're doing. We just want peace. We want to be free. We want to have the right to run our own lives. And we're grateful to you in the United States for doing this. And it was a pretty thrilling thing to hear. And as a matter of fact, when they would recognize, you know, there were about 500 correspondents down there, press and television and everything covering this. They said that when they would go by the lines, the people in the lines would start chanting, tell the truth, tell the truth about them. But I just thought you'd like to hear that there are people in the world like yourselves that believe in democracy. And it's worth supporting. And there is much to be left. Thank you all very much. You could tempt me into going on telling stories for them. Mr. President, on behalf of Scott Baker this year's winter and the veterans of foreign wars, we'd like to present this flag set to you, which is, of course, the American flag and the VFW flag and then our voice democracy flag. And since you have been president of the United States, the stars seem brighter and the colors seem purer as a result of what you're doing. Keep up the good work. Just by way of thank you, and I know I have to go back and go to work again. It's like that one of the letters I got in the first few weeks that I was here. A little girl that wrote me a letter and very nice letter and all the way and then added a PS and says, OK, now get back to the Oval Office and get to work. But I just, I was going to save this, and I probably will tell it again several times. About one of your generation, a young fellow that's far away from home now, he probably didn't study his English as well as he should. But I got a letter from the ambassador, our ambassador to Luxembourg. And he had gone up on the East German border and visited the second cavalry regiment, armored cavalry regiment of our forces there. And he said a 19-year-old land followed him over to the helicopter when it was time to leave and asked him if he by any chance could get a message to the president, one of the ambassadors, the representative of the president. He said he thought he could. Well, he said, well, you just please tell him, we're proud to be here and we ain't afraid of nothing. I say that for one reason also I tell that story. They and what they're doing and what we're trying to do is not to glorify or make possible a war. These gentlemen here have served in a war. They know what it is like. It is because of people willing to be like that young man that we hope we can prevent their ever being another war. And when they feel that way, we've got a lot better chance that you'll never be called upon or asked to do anything of that kind. And that's the goal of all of us, that known other generation of young Americans will have to bleed their lives into foreign battlefields to preserve what we all love here. God bless you all. President, can we have a right-wing sign? In the picture. This is the entrepreneur's official sign. And this is Mr. Mayfield. Very nice to meet you. We knew ourselves pretty long ago. Western is outside the city here. Yes, we appreciate it. That's right. We have two girls set for the couch here. Would you like a moment to sit down with us? We've got the first picture of you and everybody in that room. We have everybody else. Mm-hmm. My twin? I can have him. Well, thank you very much. I know him anywhere. Well, hi. Thank you very much. Well, your twin's already, so I can't do anything like that. But in here is a jar with this seal, the United States Congress seal engraved on it. And inside the jar are jelly beans. They were asking if they could get a jelly bean. You get a jelly bean jar. Lots of jelly beans. And more than welcome. Bless you all for what you're doing. Thank you. You look so pretty. I'll go with you. Yeah. I got my store-bought clothes out in here. Including these. It's great to see you. You're going to California. Thank you. Thank you. I thank big girls, Mr. President, five years old, and they're in kindergarten. And the big sister is in third grade. Well, she has an assignment due tomorrow. This is her homework. That's really important. A little show in town. A report to the nation. Thank you. You're giving me a twin. You see, now that can keep me company when my husband has to go away and I have a twin here. Thank you. Thank you. Thank you.


Welcome to our first what, why, and what for video. That serves as a very brief introduction and overview of the material we're gonna be learning in this first chapter. Now, this first chapter is an introduction. It kind of just lays the stage for the whole rest of the course, although it does include a little bit of technical material. And so I wanna give you a brief idea of what we're gonna be talking about, why it matters or why it's a sign and what you can use it for when you get out into the real world. So first off, what? We're gonna be learning a little bit about what statistics is. It's an attempt to use data to reach conclusions. It's an attempt to find patterns in things or exceptions. It's an attempt to use data to tell stories about people. And in that sense, it's a lot like translation. You're taking information in one language and in this case, it's numbers. And then you're going through a process to try to get the most important and essential elements of that and then put it into another language that means something useful to your audience. So maybe conclusions about human nature or trying to decide what to do next in your business. Also, we're going to talk about some basic terminology like samples versus populations and inferential and descriptive statistics just so you have a layout of terms that work for the rest of the course. And then finally, we're going to talk about something called levels of measurement. The idea there is that sometimes a number brings different amounts of information along with it. In some context, a one just simply means yes, like a person graduated or they're employed or it might mean how many children they have or it might mean how many hours they spent studying this week. In each case, that one tells you different things that they're in a particular bucket or that they're first in order or lots of different things. Now the reason that matters and the reason this information is required for this course because it changes how you look at the data.  So it lays a basis for every single other thing we're going to do in this course. That's why we're learning it. Now the third thing, however, is what for? What does this do in the real life? I know that most of you aren't planning on being researchers. On the other hand, all of you are going to be thinking about people, thinking about yourself and trying to decide what to do. And I sincerely believe that even just a little bit of data can go a very long way in helping you do the things that matter to you better. I'm not saying you have to turn into some big, quantitative, nerdy type of person. Rather, it just means thinking carefully. So for instance, I know people who simply weigh themselves each day. They don't change their diet, they don't change their exercise, but simply having that information and graphing it in a spreadsheet can be helpful. I know some great examples of people who decided that they wanted to get into a relationship. And so they actually created a spreadsheet, put down people's names, when they met with them, and just a little bit of evaluation about each one of them. I know it's kind of a silly thing. It seems to go against the spirit of dating, but it can be very helpful. More often, simply knowing what activities make you happiest, knowing what's the most time consuming, what things have the most headaches, and what leads to what. These are things that you can get from statistics, including the basic concepts of levels of measurement, samples versus populations, and really trying to tell a story with the data that you come up in your own life. So that is our what, our why, and our what for for chapter one. Thanks for joining me.