I'm supposed to be doing this now, aren't we? All right, let's. There's our intro. OK. Excellent. YouTube comments. They are sadly a thing. They are sadly a thing. But we have been listening to them. Some of them, yes. The ones that actually have a point. Well, not all of them do. There's some good points that are being made. You know, recently increasing so, people have been noticing mind-pending boldness. That's something that has been coming up in the comments. Thank you for everyone who's been there.  Has that been noticed? Yes. Oh, well, we could talk about that in a bit. But one of the things that we have noticed and listened to is people saying, when we talk about code, can we show some code? Yeah, that might be helpful. So could be nice. We've got a camera and a tech. We've got an iPad here with some code on it. So tree shaking. Oh. Let me guess. You're just doing this so we can put a nice buzzword in the title. Yes. 12 things you didn't know about tree shaking. Oh, yes. Number four will blow your mind. Class-based tree shaking is the title of this, I think. So here we go. We've got a code example here. I'm importing a load of stuff. Plugging your own library, are we? It's based on a true story. Like all good stories are. I'm importing a load of stuff. This file has a lot of stuff in it. But I'm only using two of them. And modern tools like roll up and web porting. Then why are you importing the other ones? Well, just to show that they're there. Yes. Technically, I wouldn't have to import them. I mean, commonly, I guess, you would import this as import IDB keyval from, like, put it all of them in an object.  No. No, you wouldn't. No, you wouldn't do that. I would do that. Good. So in this, each of these methods is individually exported. And that means that tools like roll up and web pack can go, huh, you're only using two of these or three of these. And it goes, well, I'm just going to take the ones you're not using and delete them. And that's tree shaking. And that's tree shaking. And that's good. Because the tool can figure out what you're using, because if you don't import them, you can't use them. That's how modules work, right? Right. So in the days where we would import jQuery, you've got 101 methods, and you're only using three of them. Tough. You were taking the full weight of jQuery. And with tray shaking, that's not true, because you're only using the stuff you actually import and use. So yeah, this is great. This works fine. But around to this problem. So I just said, this is a library, real library. And someone said, well, it's all fine having set and get and all of these things. But I want to create my own store. That doesn't clash with another store. I was like, well, I know how this works. So I made it happen. And so I thought, well, it could be like this, right? So I got. Now you're importing a store? Oh yeah, that's the comment. You now wouldn't just harker the thing, but you have to instantiate the whole thing first. And it knows all of its stuff about where the database connection is and all of that. And it can go. But the problem is, classes can't be tree shuck and I'm sure that's the right way of saying that. Oh, so OK, so you have a class. It's called store. In the constructor, as we can see here, it gets the backing store name, the IDB. What is it called a store in IDB? Yeah, object store. And then the class obviously has all these methods, like get and set, but also the other ones we saw previously, like keys and whatever that was. Yeah. OK, so but if you don't use one of them, ideally you wouldn't load the code, right? But it's not statically analyzable in the same way a function is. So here I'm using .keys, but I'm not using the delete method. I'm not using the clear method. But it has no way of being sure about that because keys like this, it kind of looks like, yeah, that's statically analyzable, but there are many other ways. Yeah, that's what I meant. You can do very weird things. Right, exactly. So you can do as a string, but that string could be like two strings added together, or it could be some sort of functional something. If I ever see anyone writing code like in the last line, I will hunt that person down. But there are legitimate reasons to do that. You might have a series of method names and you want to append on to the start or remove on to the start. Yeah, I've done it myself. Like if you build your own little metaprogramming thing where you generate event handles on a flight, this can happen in real production code.  This can't happen. It can happen. And so my question really is, how do we solve this problem? And spoiler alert, I don't really have the answer, but I've seen what other libraries have done. And so one example is this is a style of RxJS. So here we're importing the store. So we've got our store. Doesn't have the keys method on it because that's, let's say, a less common method to call. Sure. But you import another JavaScript file, which has the keys implementation in it. And that just mutates the prototype? It mutates the prototype. Exactly. So this would be the implementation. I mean, it works. I totally get it. I'm always wary when suddenly the order of imports matter. I feel like that's a dangerous path to go down. And generally, mutating the prototype is, I mean, it's been done for years.  It's just saying it feels dirty. It feels like there should be a better solution. Absolutely. And part of the problem with this as well is if you import it, but don't use it, tough. Because that's not statically analyzable once again. Roll up or Webpack can't tell. So it shifts the burden on the developer rather than just being a tooling issue. Yeah. And it means you end up doing this import for every method. It's the kind of long strings. It's a bit messy. So yeah. So thinking about other ways of doing this, and there's a JavaScript proposal which I really like. I'm a big fan of, called the bind operator. Yes. I remember the bind operator. So here we're importing store and the methods. So store basically just in this specific number would practically more or less be an empty class, right? There's not much in there. Exactly. And you will call it like this. So store, call, and call, and set. And that's essentially saying call this set method as if it were an instance of store. If you have a function in JavaScript, you can use dot call. You cannot just use parentheses to invoke it, but you can use dot call. And then you give it what should be this inside the function, like this, what is this supposed to be. And yeah, here I have it. And what the parameters are. So in the bind operator just says, take my left side as the this, and the right side, just do a normal invocation. In this case. Exactly. So the store set function kind of thinks it's being called on store even though there is no tight coupling between those two things. Exactly. So you use this just as you would in a class. And this will refer to the store as it would within the class. And this can be tree shaken and all of that stuff. If you don't use it, it. I've used this in Babel a couple of times, but I don't think such has shipped yet anywhere. No. And this makes me sad that it looks like the whole proposal is dead. That is sad. That it does make me sad. Do you know why? Well, because another proposal has started taking kind of caught people's attention for doing a lot of the same stuff. And this is the direction that the RX folks have been looking at. So same again, you import the store and the separate methods. They've been the same as before. But. Ooh. OK. So this is the pipeline operator. What's the difference? Well, so what this is saying is call, take the right-hand side, treat it as a function, and pass the left-hand side to it, and call it. So set right now is a function that you invoke and it returns another function. Yeah. Great, isn't it? So that's, yes. So your implementation of set would look like this. So here we've got a function, which returns a function. The first one takes the key and the value. And the second one takes the store. I see. I mean, the ugliness is hidden, but it is ugly. Yeah. Yeah. And this is the way the sort of RX folks are sort of looking at. I think it's OK. I think you're right. Like writing it is confusing. Explain to someone that, oh yeah, this is a function that returns a function. That's how it works. So I think I've seen this operator before, the exact same operator in F-sharp. Yes. It works differently there, though, because there, basically what is on the left-hand side will become the first argument of the function of the right-hand side. So in this case, it will become the first argument, but it will be like. But of the function it returns. I see. That would be basically injected in front of the other argument. So you don't have the necessity to create a new function first before you can start using this. So there is an alternate proposal, which looks like this. Here, you're using a question mark to say where store would be passed into. I see. And this is sort of the hack style of it. So where is this at? So this is stage two. There are like two main competing proposals for the pipeline. And then that has spawned like another 12T7. Variants of the two or ways of trying to combine the two. So yeah, it's very much kind of experimental, still discussing the feature's land. But I keep going back to bind for things which are instance methods. And I feel like even if this ships, I feel like I would end up going for something more like this. Oh, that's actually not too bad. Like where I have a do method that takes. Legitimate under the hood probably switches it around. Which legitimately under the hood is just going to do. Yeah, it's just going to take the first one, the arguments. This. Exactly that. I like this pattern, honestly, because this you can do today. And it would allow you to do the tree shaking. Exactly. The downside to this pattern is I don't think it's possible with TypeScript, which I know shouldn't hold you back from JavaScript. Why not? Because in the dot do case, the second and third and to infinity arguments, their types are depend on the kind of thing. You can do that, but then the type would have to know about all possible functions. Exactly. It's like they do with event listeners, where they define the type depending on the string value of the first argument. And then that's what the event type will be. So you can do that with a string. I don't know if you can do it with an object. You maybe can. Good question. I actually don't know. But it's definitely more complicated than it should be. So yeah, that's the problem. I have to say that that is probably the best solution I've got or just a function which will take the store object and just be able to bind operator. Or just be able to bind operator. It's still in there. The plug-in still exists. Yeah, but to go for something which is not going to be pursued in JavaScript maybe, it feels like the wrong direction to go. I don't know. There's one more proposal which is kind of just being talked about, which I kind of like. And it would be a way of having an instance in a declarative way of saying, take these extensions and apply it to this class, but only in this scope. OK. And so it's a kind of way of, you know. It's very specific to this problem then, though, because I feel like the bind operator would be more powerful, generic, or a better solution of the bind operator would be a more generic, more powerful tool to have. And that is, yeah, that's my worry about it as well. Is it solving that specific problem whereas bind solves that problem and lots of other problems? Yeah. So yeah, I'm curious to see where it goes. We've got hacks we can use in the meantime. Yeah. But I just, yeah, I want bind all a way to do this in TypeScript, which might already be possible. And if so, someone should tell me in the comments. And this is me farming off my work to other people. Should we introduce zero HTTP codes? Negative, very specific. What if we reach 100? Oh, what do we do when we actually shoot HTTP 203?


GenderWatch is a ProQuest brand database that you can use to find scholarly and popular sources related to women and gender studies. To use GenderWatch, start on the UWM Library's homepage. Go to the Search and Find dropdown menu, and then select Databases and Guides by Subject. Next, go to the link for Women's and Gender Studies. This will bring you to a list of all the Women and Gender Studies databases. You'll find the database GenderWatch listed at the top of the page under Best Bets. Click the title to link out. You may be prompted to sign in with your E-Panther ID and password. Like most databases, you can get started by entering some terms in the main search box. For example, I'm interested in learning more about the ways people with disabilities experience reproductive health care. So I'll start with some simple terms to get started, such as disability and reproductive health. The first thing I'll do is I'll scroll my page of results, and I'll look at how my terms are used. I noticed that the term reproductive health appears pretty frequently, but the term disability or disabilities appears a little less frequently in my search results, although there are still some useful articles here. What I'm doing is looking for additional search terms I can try to improve my search results. I'm seeing the term reproductive justice through here, and I'm also seeing the term reproductive rights listed. So this search I'll try the term reproductive rights instead of reproductive health. Although I see a similar number of results, many of the articles that appear now are different than ones I saw in my first search. And if I want to change up my search results even more, I can use the filters on the left hand side of the page to change what I'm seeing right now. So I could use the source type filter to filter by books or scholarly journals or newspapers or magazine articles. I could use the publication date filter to look at either earlier articles written about this topic or more recent sources about this topic. And I can use this subject term filter here to select different subtopics related to my research that I want to include or exclude for my results. Unlike searching the web, you'll want to look at more than the first page of search results. This is why using the filters to reduce the number of results you see is so important. On my third page of search results, I find an article that interests me. So I'm going to click on the title to see it in more detail. This will bring up the abstract or the summary of the article, and in some cases, the full text of the article. If you want to see the citation details like the author and the journal, click on Abstract and Details. And if you'd like to see a PDF document that you can download, use the PDF icon in the upper right or click on full text PDF on the left. GenderWatch also has what's called a thesaurus. This is a list of subject words that are used to describe the sources that can be found in this database. I can use the thesaurus to look at preferred search terms and to build new searches. First, I'll go to Advanced Search right above the main search bar. Then I'll click on thesaurus at the top of the page. This will open up a window that will let me search across the database's subject terms. When I search for the word disability and hit find, I'm presented with a long list of terms that contain the word disability or are related to it. If I click the boxes to the right of a term, it's going to show me all of the narrower, broader, or related terms associated with that search term that I'm looking at. So this will also allow me to add all of these terms to my search. So looking at this list, I want to search for all articles that are tagged with the subject term, disabled people, or disability studies, or disability discrimination, because that reflects my topic and interests. And then I will see that this or radial is highlighted, and I'm going to add that to my search. And up here we can see that all of these terms are now added to the search bar. In addition to disability studies, I also want to make sure that my search results reflect my interest in reproductive health care. So I'm going to open the thesaurus again and I'm going to search for the term reproductive rights. I see that it's a standalone term. I could look at the other terms nested under it, but I think for the purposes of my research, I just want to add reproductive rights. So I'm going to click to the left of it. And this time I want to add it to the idea of disability studies. So I'm going to click the and radial and add to the search. Now looking at my search bar, all the terms I've added related to disability are connected with an or to indicate that I'll accept any sources tagged with any of these terms. The term reproductive rights is added to my search with an and to indicate I want sources related to disability studies that are also about reproductive rights. To the database, my search looks something like this Venn diagram. Ultimately, researching databases is about trial and error. It's important to use different strategies and keep track of what works and does it for your topic. Some strategies might give you a short list of results like using the advanced search and thesaurus feature. Others might give you a large list of results that you need to filter through. What works best for you is dependent on your topic and your preferred research style. What's important is you keep trying and learning from your search results.


You want the best tips on becoming proactive? You're about to get them and we're getting started, right? Got a great show lined up for you. Hi winning friend, welcome back to another video. If this is your first time here and you want to learn how to reach your potential, crush your goals and be more effective in all the different roles that you have. Start right now by hitting that round subscribe icon and tap the bell notifications. That way you don't miss anything. If you have any tips on becoming proactive, let us know about it in the comments below. We can't always control what happens to us in life, but there's one thing that we can always control, no matter what.  Every single last one of them died, either in the camp or were sent to the gas ovens. In the midst of the most degrading circumstances imaginable, Frankel used the human endowment of self-awareness to discover a fundamental truth about the nature of man. In between stimulus and response is man's freedom to choose his response. Being proactive means more than merely taking initiative. It means as human beings, we are responsible for our own lives. Our behavior is a function of our decisions, not our conditions. We can subordinate feelings to values. We have the initiative and the responsibility to make things happen. Look at the word responsibility. Response. Ability. The ability to choose your response.  Highly proactive people recognize that responsibility. They don't blame circumstances, conditions, or conditioning for their behavior. Their behavior is a product of their own conscious choice based on values rather than a product of their condition based on a feeling. Because we are, by nature, proactive, if our lives are a function of conditioning or conditions, it is because we have consciously decided, or by default, chosen to empower these things to control us. In making such a choice, we become reactive. Reactive people are often affected by their physical environment. If the weather is good, they feel good, and if it isn't, it affects their attitude and performance. You win. I'm done. Proactive people can carry their own weather with them. Whether it rains or shines makes no difference to them. They are value driven, and if their value is to produce good quality work, it isn't a function of whether the weather is conductive to it or not. Reactive people are also affected by their social environment. When people treat them well, they feel well, and when they don't, they become defensive or protective. Reactive people build their emotional lives on the behaviors of others, empowering the weaknesses of other people to control them. The ability to subordinate an impulse to a value is the essence of the proactive person. Reactive people are driven by feelings, circumstances, conditions, and their environment.  Proactive people are driven by values. Carefully thought about, selected, and internalized values. Proactive people are still influenced by external stimuli, physical, social, and psychological, but the response to that stimuli, whether it's conscious or unconscious, is a value-based choice or response. As Eleanor Roosevelt observed, no one can hurt you without your consent, and in the words of Gandhi, they cannot take away our self-respect if we do not give it to him. It is our willing permission, our consent, to what happens to us that hurts us far more than what happened to us in the first place. I admit that this is very hard to accept emotionally, especially if we've had years and years of explaining our misery and the name of circumstances or another person's behavior, but until a person can honestly say, I am what I am today because of the choices I made yesterday, that person cannot sit here and say, I choose otherwise. Most of the time, it's not what happens to us that hurts us, but it's our response to what happens to us that hurts us. Of course, things can hurt us physically and economically, but our character, our basic identity, doesn't have to be hurt at all. In fact, our most difficult experiences become the driving force in forging our character and developing those internal powers, giving us the freedom to handle difficult circumstances in the future and inspiring others to do so in the process. Doesn't anyone notice this? I feel like I'm taking crazy pills. Victor Frankel suggested there are three central values in life, experiential things that happen to us, creative things that we bring into existence, and attitudinal, our response to difficult situations such as a terminal illness. The highest of the three values is attitudinal in the reframing sense. In other words, what matters the most is how we respond to difficult situations in life. Difficult circumstances often create paradigm shifts, a whole new frame of reference by which they see the world, themselves, other people in it, and what life is asking of them. Their larger perspective reflect the attitudinal values that lift and inspire us all. Become proactive by understanding that you have a choice on your response to any given situation. Take the initiative and act rather than be acted upon, and focus your efforts on things that you can do something about. Don't focus on the weaknesses of other people or the problems in the environment or the circumstances over which you have no control. Your win. Share this video on Facebook, and if you're part of any personal development group, you can share it with your friends there. And if you want to learn how to reach your potential, crush your goals, and be more effective in all the different roles that you play in life, start right now by hitting that round subscribe icon. Thanks for watching. I'll see you next time. Thanks for watching. I'll see you next time. Sent you okay guys salute till next time.


This difficult area gives a good example of the sweet and expressive voice that made Beverly Sills, the queen of American opera. Beverly Sills' big break into fame took place in 1966 when she performed Cleopatra in Handel's Julius Caesar. Get the full story and learn English at voaspecialenglish.com.


What's up everybody? JC from Jazminescasebrakes.com. We just filled up a quick one-box break of the all-new 1920 Panini National Treasures basketball. Again, this is a one-box break. Five random players each number three and again numbers one two three and four from the same case and Joe has watermarked them. It's random player breaks. And again, this is also our early bird break special where you buy one of the first 30 spots in the break and get entered to win a free spot. So again, one box break of NT basketball. 353 players on the checklist with hits. We will make it down. We make down the list to 350 players. You will get five random players from that list with each spot you buy. So for example, if you get randomized Zion Williamson, and you get all Zion Williamson cards pulled from the break. So here's the names here, the list. We copied it and pasted it right here. So 350. Right 350. So now what we're going to do here is well before I do this actually let's give away the early bird spot. So this dice will be for the early bird the randomizer the customer names and the players and after five and one six times customer number one gets a free spot one two three four five six then final sign six times Steve Steven There's literally talking about you in the next next room. You just want a free spot in the break So there you go free spot So now I'm going to copy All of the names here that are part of the break Yeah, and we're going to do it add your name four more times. So that's one two three Four for a total that should be of 350 So hopefully this double check that should be 350 six times one No, it's not I didn't do it right. Okay, I have to add you five times It should be 350 now There you go, so there's one All right at six times two three four Five six times Eric now, let's go six times players one two three four five Elvis or Elvin Hayes All the way down here to horse grants Now I'm not gonna go through every single player guys. I'm just gonna alphabetize it by your customer name and We will just kind of show you guys What you guys have and what's more noticeable big rookie names and stuff like that So like Anthony, there's your players there Anthony V There you go. You got us your little one. There's a rookie breast or veterans Brandon Walker you have a little bit here. So there you go and there you got Jackson Hayes as a rookie in there Obviously I'd like Kevin Garnett Anthony Davis in there Carson Edwards is another rookie in there Chad There you go, Nicky Alexander Walker bull bull David Douglas RJ with Julia serving Triple J Drew There's your players Eric you have a little bit as well Nicholas Klaxon there you got Steph Curry in there Wiggins Durant Lonzo Combo team of Sean Ken Baron Davis as well as my new to bowl Gabe There's your players there Brasdaikis Nikolo Melly Gary Gordon Yeah, Kareem magic Romeo Langford as a rookie in there Gavin Cook Westbrook in there Kevin Love Grant Jordan bone in there Clay Thompson James Cook You got Goga it's a Jared Fontano, you have quite a few players as well starting from the top John Moran So there you go. One of the big rookies. You got Iverson Rookie wise Alan Smologic Paul George in there Some veterans John Williams, there you go more bets in there as well Matt There you go Jalen Brunson Matt St. Martin Tatum Zion Williamson. Congratulations. Let's see if we can put a long for you You got Tatum Zion Campbell Walker Ben Simmons build Cartwright Matthew S You have quite a few as well LeBron James in there nice Grant Williams Shaquille Neal Thible D fish Lucas Sam Nick Willie Colestine you got karma alone in there T-Mac Randall Bama DeBio Penny Artaway All the way down to Calvin Johnson Mike Somich, there you go.  There's your five players Steven You got quite a few as well skull food as a rookie Kendrick Nunn and Kimalajewan Vince Carter, Karis Leverts Michael Porter Jr. Jordan pool Luca Donchich PJ Washington Jr. Larry bird D. Lil Steve Nash TJ Price, there you go Kevin Porter Jr. in there. I'll follow for you Wade Pat Shaw as a rookie you got home sexton, Stephon Marbury Zach Paul you got Fyandu, Levine, Patrick Ewing Pierce Blake Griffin and Zachary C from Chuck Pearson to Horace Grant, Iwadala in there And there you go. All right you guys so They kind of updated this damn thing where I don't know if I can just share it with you guys and And so you guys can't like I want to mess with that or not too new with the Google Chrome one But we'll have this here, and I'll print this list out just for our purposes That's a lot of players, but I Can kind of highlight what hit just print this out for our purposes And then I'm just gonna call the trade on it again. I don't think anybody's in the trade Here are the boxes that are left over And again, they were watermarked Random player two three so we made we numbered them one two three and four two and three where the last one's here I'm just gonna roll a die If I roll a one two three, we're gonna go with the top box four five six with the bottom box and it's a three One two three top box Right here. This one over here will be for number four And that one's getting pretty close to as well, so All right, awesome, let's do it guys good luck love them you boxes this year are really all wood Redemption at the bottom which I'm assuming it's gonna be a blockchain. It looks like a real redemption. All right. Good luck guys Well, sorry Base of Eric Gordon. So again, these are gonna go straight to the players They go to So Eric Gordon to 99 That's Eric some saw Got a pretty plate for the thunder and that's Steven Adams. I am plate There you go, Steven Adams That one that's a little one-to-one That's Anthony. There you go, buddy a little one-to-one printing play from a mac of it We got a relic here of Miles Turner to 99 Zachary with that one Got a little patch here of Malik Monk The 25 for the Hornets, but again, this is a random player break So Malik Monk, that's Mike Saumich We got a relic here of Andrew Wiggins to 99 Eric again, some saw our last relic and then we'll start going to the autographs Dream on green to 99 That's Grant. All right. Good luck. That's First of all, it was colossal little Jersey auto Dwight Koal for the Mavericks So Dwight's going to David Tran. Oh, we got George Gurving to 99. That's Anthony V with that one. We got a Lonzo ball To 49 autograph. That's Eric and the redemption was a RPA. It looks like or maybe a Maybe something. Let's see Good luck. We got a rookie patch autograph. Sorry. So there's an RPA card number 115 And it's Ignas Brasdaikis. So for the Knicks But Ignas who has Ignas with Ignas Brasdaikis. So there you go Very nice. And there you go guys. That was the one box break here jaskyscasebrakes.com. So again, the last box is going to be for random players number four and That is getting really close as well. We can definitely do today guys Be sure to guys jaskyscasebrakes.com


Sudan's military has announced plans to create a joint force to crack down on insecurity. The announcement was made through an order from the deputy head of Sudan's ruling sovereign council, General Mohamed Daqalo. The new force will be made up of the police, military, general intelligence service and representatives of rebel forces as well as a public prosecutor. The force would be formed immediately. Hello, hope you enjoyed the news. Please do subscribe to our YouTube channel and don't forget to hit the notification button so you get notified about fresh news updates.