Hey, everybody, that was a great introduction that I wrote. So, you know, I am David Dashifin-Kees. My pronouns are they and them. Georgetown University, all that was said. I'm also the president of the board for the WP campus organization, a professional organization for people in higher education that are also working with WordPress. So if I know a few folks here that I've seen from WP campus. So if you are in higher ed and you haven't bumped into us before, feel free to track me down afterwards. I didn't plan it, but I'm actually repping with our official backpack. So we're here to talk about Composer. Composer is a dependency management tool for PHP. How many people have used dependency managers, whether they're like NPM, Bundler for Ruby, Composer just by show of hands? Cool, if you're listening to the talk, that was about the entirety of the room. How many people have used Composer specifically? All right, that's about the same, maybe about 10% less, but still most of the room. How about Composer with WordPress? Okay, so that's a little bit of an, even more of a drop off, maybe 50 to 60% of the room. And now the last question is, how many people here are doing that, but also using an additional boiler plate solution, something like Bedrock? All right, so that's the last question there was maybe 10 people. So it sounds like we might have a lot of expertise in the room and that's cool. I will try to move through the rest slides as rapidly as I can while also trying to be conscious of the fact that something like 40 to 50% of the room doesn't really know it, maybe as much as some of the rest of us. I mentioned the keyword Bedrock. I don't wanna call you up, but is Gary McPherson in the room? Yeah, I thought I recognized you from the photograph, but I didn't wanna be like that guy. Tomorrow, Saturday afternoon, modern WordPress development as a workshop. Bedrock was a keyword in your description, right? Yeah, so if you see this talk and you're like, oh, that sounds really interesting, but like this was a half an hour, how do I do this? Go to the workshop tomorrow and you'll learn. Yeah. So some basic statistics. Why did we at Georgetown University decide to try to do something with Composer? As you can see from the screen, and I got a look because my tiny little notes are very small and that's much bigger. We have two code bases, one we call DP, the other one we call NG. The DP code base is much bigger. It clocks in at orders of magnitude larger than NextGen. Almost 19,000 files, but like almost 90% of those files are third party code. Their WordPress core, their plugins, their themes, well, not really themes. They're custom, the whole thing's a custom theme, but like their plugins like advanced custom fields, Yoast plugins, things like that, they just get all bundled up into that one repo and then they have to just be there. On the upside, it does mean that updating plugins and things of that sort is very straightforward because you just log in to the site on a local environment, update them through the dashboard and then get, add, commit and push back to, to the repository and you've updated your plugins. It's very straightforward, but it means you've got to maintain a whole bunch of other people's code. Just this week, we were testing and practicing the upgrade to 6.3 for WordPress and it was a couple of thousand files that got tweaked in the repo and GitHub was like, no, you don't get to look at this PR. It's, you don't have enough RAM in the world to load this on your machine. And so I just was like, yeah, it's not my code approved. It's like, it's, I mean, it's fine, but it's not great. So when a couple of years ago, we decided to work on getting a different sort of process going and we wanted to use Composer because Composer, which is Next Gen, can see NG as for Next Gen, which you can, you could read on the screen or on the slides later, if you're just listening, the much smaller, there's like 30 something files and only one of them is not ours. And that one is a pro plugin that just doesn't really quite work with Composer. And we can talk a little bit about that in a minute. Much easier to maintain. If we have to make a change to our build, suddenly you can read and code review the PR as opposed to the other one where GitHub's just like, you get to see the first couple thousand files and then that's it. Thanks though. And yeah, it's worked out really well for us. So let's talk about how I did it. This is an example of what you might have in such a repo. This is for dashiff.com, my own website. I didn't want to try to figure out if or how I could get the approval from Georgetown to make sure I could show our own repos. But my own stuff, I can just make them public. So eventually there will be links to all of this in the slides and on the screen via QR code. But that's it. That is the whole repo. And realistically, the get ignore is just a get ignore. It's important, but it's not maybe really necessary when you've only got two other files in your repo. And the .lock file, if you've used PacketManager and most people in the room did indicate they've used them, you almost always get a lock file of some kind. It may not always be called that, but the goal of that file is to say, these are the versions that are currently set up for this installation. And so until you update that lock file, you will lock in specific versions. So I committed mine. Sometimes you don't, if you just wanna be constantly at the most recent bleeding edge, you don't really need it. And so get ignore in composer lock, maybe not as important. The one file to rule them all is that composer JSON. And that's more or less where we're gonna be focusing on for the next 15 or 20 minutes. The QR code on this screen, or if you are listening later or have the slides there, you can actually click. I think you can click the QR code, I set it up. So that will take you to the full schema for composer JSON. Just like NPM, there is a structure to how you put together your composer JSON file. There is a lot of options to composer, many of which I have no idea what they do, because I haven't had to figure it out yet. But the ones that I summarized on the screen here are the ones that are more important for us at Georgetown. And they're the ones that I have more frequently encountered while doing this sort of work under other circumstances. So basic information, name, description type, license authors, and rarely version. Because most of the time we're gonna be putting this back into some kind of version control system in the currently frequently get. Composer will look at the tags on that repo or the released version numbers on the repo and figure out what version it should be from the repository itself. That's usually better only because if you put the version in your composer JSON, my understanding is that's the version it's going to use even if your tags and other parts of your repository are different. So just don't put a version in the file. Then it will rely on the tags for the repo and when you release 6.3.1 for a plugin and yet you forget to go back to your composer JSON and update the version number there. Oh no you didn't, it's not there at all. You can just worry about the tags. And since I hope, I suspect that many of us are using some kind of tagging, probably semantic versioning of some kind to do that work, well then it's already in our workflow. There's not another step to remember. The dependencies that we'll install are separated into require and require dev. If you're more familiar with this world from JavaScript and tools like NPM, most, in my experience at least, most of the things that we require there are actually in the require dev category because we're bundling them up with Webpack or Gulp or Parcel or whatever tool you wanna use to build your installable browser ready JavaScript assets. PHP works differently. PHP is gonna need probably all of that code to go to the server if your site's relying on it, which means you're gonna see a lot more things are in require in a composer JSON than are in require dev. What ends up in require dev for meme is most likely debugging. This or that thing that I wanna use to lexically analyze my PHP to make sure I'm not making a very simple syntactical error or a very simple logic error that my IDE might not have found, maybe this other tool does. Those are the sorts of things that as a project, you don't need that code for production. You need that code in your local environment. That's what you'll see in require dev. And then the last four there, three, four, five, and six, non-standard repositories. Composer has its own standard repository. It's at packageist.org, P-A-C-K-I-G-S-T, something like that, I can't spell. Packagist.org is there automatically. And that's a public resource that anybody can submit things to, even things like WordPress plugins if you wanted to. And then people can just install them without needing a non-standard repository. But if you wanna plug in or a theme from the WordPress.org repository, that's not gonna be there. Luckily, I'll show you in a second how you can get those in as well. Config information, there's gonna be a variety of things that you might need to set up to configure the site in the way that you want to. And so that all goes there. Custom scripts, I almost always have a reset script that deletes everything except for the one file to rule them all, just like something's weird, delete it all, start from a fresh install and keep going from there. And then I put extra in quotes down to number six, because for our purposes today, it's not extra. Composer calls it extra, it's not. And you'll see why in a second. There's also the possibility that you might wanna use the auto-loader. This is a PHP object-oriented piece of technology in Composer. It's not frequently needed in WordPress, except suddenly you might find it useful. So I recommend checking it out. If you haven't used the PSR4 is the acronym. I don't remember what PSR stands for off the top of my head. They are, there's a PHP interoperability group that is out there working on standards for PHP and the auto-loader is one of them. And that's baked into Composer. So if you're in a world where you're like, I really am tired of writing a whole bunch of require statements into a single file to grab all of my objects and all of my other stuff and put them into the memory for my application, for my WordPress site, the auto-loader might help you out, but it's beyond the scope of the rest of the talk. All right, where's my mouse? Where it is, there we go. It's code time, well, JSON time. The three QR codes on the screen will lead you to the Composer JSON for the site that was just on the screen in a screenshot, the Composer JSON for a theme and one for a plugin. They will also be on the screen in the slides so that we can talk about them here today. But if you want to find them again later, feel free to scan the QR codes. I just checked and they're all public repos in GitHub. So you can look at them and take a look at what's going on there. The theme is a playground theme. It does nothing. I don't even think I'm using it on an actual site. It's just my sort of like, let's mess around with the theme theme. And the plugin is one I wrote a while ago, so it's not probably really in use anymore, but it was a good example. I mentioned basic information. This is what it might look like. Just like the package JSON for NPM, you're gonna see a big opening bracket and then followed by properties in a JSON object. So name, field, value pairs. They can be kind of anything. There's a bunch of, the one to talk about here though is type. In this case, type is WordPress project. Composer has four built-in types. They are library project, meta project, and Composer plugin. And I have no idea what a meta project is, but the other three are a little bit easier to understand. Anything other than that, Composer at its baseline level has no idea what you're talking about. So I just put WordPress project on my sort of like root project level Composer install file because that helps me remember what this is. If I get here and I'm like, what is this random JSON file on my computer, I can look at the type and see it. Oh, it's a WordPress project. That helps. Because Composer doesn't know that as a keyword, it won't do anything special. So we will eventually have to get it to understand things like a theme and a plugin. And that's where we get to that quote unquote extra property. And that's where we're gonna tell it, how to know what a theme and a plugin are. Requirements, since almost everybody in the room raised their hands, this probably looks somewhat familiar. It's just a list of things that you can install into a website. Many of them are mine because this is my website. But other things aren't. This is not the exact list. If anybody brought up the Composer JSON file, you will notice that this is a little different. And that's because Advanced Custom Fields was too long to fit into one of the columns on the screen. So I just removed that one, so they fit. But in under normal circumstances, so this is actually a non-installable list of packages, but that's okay. If you're familiar with semantic versioning, the values for these object properties look probably pretty similar to you. The one I want you to keep your eye on real quick, although actually since most of you in the room, the most of you in the room probably will get this, but just in case you're listening later on, keep your eye on that timber library version number. We'll talk about that again in a second. Here's where things get a little bit more interesting. Repositories. You'll remember that I mentioned packages.org. There's also wpackages.org. And you can see on this screen or you can read it on the slide that the first one there is wpackages.org as a composer repository. That repository regularly, I think hourly, scans the .org themes and plugins, grabs them, sticks them elsewhere, and adds a composer JSON file for them. If you're gonna need or want to install standard themes and plugins this way, that's how you do it. You add wpackages.org and then on the requirements page, the list at the bottom of the second column all begin with wpackages plugin or wpackages theme as the vendor of the dependency followed by the name of the theme or the plugin. And so if without specifying that these are gonna be found at wpackages, composer won't find them. So do that. Add wpackages to your composer file. The other three examples on the repository screens are just an example of how you could specify a repository on GitHub. Some of the things that I've added to the requirements page are actually on packages.org because I use them in a bunch of different places. So it's easier to just be able to install them without having to list them all by hand. But if you're installing something that's not frequently used or it's a package just for this site, you can just specify the git address for your information and it will happily install it. Composer will just hit that link and say, oh, okay, this must be important. And when it finds a name it doesn't recognize, it will look for the composer JSON file at all of these links and use that to discover packages that it otherwise couldn't. Custom scripts I mentioned, these are up to you. My example on the screen, there are, or the QR code on the screen links to the composer list of hooks that you can use by default, like run this right after you install or run this right after you clear cache. There's a couple of maybe eight or nine, I think different hooks that you can use right out of the bat. You can also specify something custom. So reset is what I mentioned earlier. It's literally just RM-RF, public HTML and the lock file. That way everything that this installs gets blown away and I get to start fresh and grab everything else. But the first one, the post update command will automatically run that copy. That's just a command line copy to move something out of a folder and into the MU plugins area to load the rest of my MU plugins. So you can put a lot of stuff down here that can just sort of help do repetitive tasks. Initial configuration, this is a slide that I'm gonna move on from relatively rapidly. It's here so that you all can review it later.  If you're using the auto loader, why not get an optimized one? Maybe it only saves a couple of nanoseconds, but like sure, it feels better to have an optimized one. It's nice, it's pleasant. The other one that I really like is sort packages. If you're installing things from the command line, they do not show up in alphabetical order unless you have that in your file. I don't know why. Why should I have to write that everywhere just to get my packages in alphabetical order? I don't know, but you do. So sort packages, true. Then if you install something from the command line, it shows up in the right place and you can find it again later without having to up and down look through your whole list. The other one to call out right here is vendor. Vendor is composer's version of node modules. The node modules folder, I suspect, although I never have, I suspect you can configure where it goes if you wanted to in npm. For composer, you can absolutely move your vendor folder. In this case, I like, although I realized while I was working on these slides that it's probably unnecessary, I kind of like just sticking it in WP content. It's polite. It seems like this is stuff, it's not gonna be the plugins and themes. We'll see how those go into the right place in a second. But the other stuff that they might rely on, it feels right to put it there. But you could specify that it should go into WP includes. You could specify that it goes right at the root of the site or even one level above the site because PHP will happily include the files from wherever you have access to if you're in like a shared hosting environment. You don't have to put it even inside the discoverable public website area. And here's the important one. The quote unquote extra information. Here is where you specify how WordPress gets set up. The top WordPress installer, public HTML for me. Like I said, I wanna sort of, I guess Cpanel has a new name that I learned today at lunch, but I don't know what it is yet because I just learned it at lunch. But I'm on a Cpanel sort of shared hosting environment for my own personal website. And so public HTML is just the folder into which the web files go. So I tell it to put WordPress in the folder to which the web files go. But then after that, you can specify the paths for plugins, themes, drop-ins and MU plugins. And you can specify the locations just like you usually would. So plugins go in the plugins folder, themes go into themes folder. It feels fantastic. This is a big difference between what we did at Georgetown and something like Bedrock. Bedrock wanted to create a structure for the WordPress ecosystem in that build, in that boilerplate that appeared a little bit closer to other PHP frameworks. So when you use Bedrock, you don't get the exact same folder structure that you get if you just download the .org zip and unzip it. Or at least that was the case in 2019, which was sadly the last time I really looked at Bedrock. So I could be wrong there. I don't know, we'll learn from Gary. But the goal we had was to let somebody hit the site and see it as if it were the .org zip file. And so you can, if you've used the .org zip file, and I suspect many of us have, you'll recognize those paths. Prior to Composer 2, this didn't work. So if you install Composer, make sure you're using Composer 2. I don't even know if they let you install version one anymore, because it's been about 2019 or 2020 was when version two came out. Prior to version two, it might delete folders if it hit matches. And so things like boilerplate moved things around so that you wouldn't delete the WP content folder when you then came by and installed WordPress, which already had a WP content folder in its zip file. Composer 2, the current version of Composer, doesn't do that. So this structure here, whether Composer grabs a plugin first or WordPress core flirts first, you will not delete the folders when you encounter a copy. It just merges the data in the same way that copy process by the operating file systems usually do. Very quickly, this is the way a theme looks, very familiar, except look at the type. It's a WordPress theme. If you don't tell Composer this type or WordPress plugin or WordPress drop-in, you can see what those types are on the extra slide, in the green on the screen or in the array of data underneath the properties. The type of WordPress plugin is listed. The Composer installer plugin that will happen when you specify that you want to install WordPress, and I'll specify that link in two slides. The will tell Composer what to do here. If you're trying to install a theme that you've written yourself and you don't put the type of WordPress theme in your file, it won't be a theme. It'll just show up in your vendor folder so it'll happily download, but it won't be in the right place. And so when you go to the Appearances tab in the dashboard, it won't be listed there. Similarly, oh, actually, I told you to look at the Timber library. Just like Node, if you have a semantic version here in the file, it specifies it once Timber of something equivalent to 1.19. The other file wanted 1.22 something. Those are compatible. There's still no one branch, 1.19 versus 1.22, that's okay. Composer will do the same thing that NPM does in that case to figure out the best version to install based on the requirements that it receives, not just from the root level Composer JSON, but from all of the JSON files for each of the dependencies that it installs. Finally, a plugin, same idea. The only difference here being that the type is now WordPress plugin. Again, same rule. If you have a plugin that you want to install, if you don't tell it that it's a plugin, it'll go into the wrong place. So the summary of all of that. Specify the location for core plugins and themes in the extra property. The extra property is not extra for us. You want to include wpackages.org in the repository from which to pull plugins and themes. And this is the key one. I forgot to mention this back in the repository slides, but if you look back to that slide later on, if you read it out to yourself later on, you will see, in this case, I use a repository maintained by John P. Block, which is conveniently called WordPress. I don't remember the frequency with which that repo is updated. I think it's 15 minutes or an hour or something. But essentially, on a fairly regular basis, that repo uses a script to go out and look at the .org repository and see if there is an update. And if there is an update, it just gets pulled into GitHub. And then you can just list WordPress itself as a dependency for your project. That way, you don't have to download the zip file anymore and unzip it into a folder. You don't have to worry about it. All you have to do is go to your composer JSON file and update from, say, 6.2.2 to 6.3 and run an install. And it'll kind of just make the installation. So by specifying WordPress as a dependency, it allows you to not even have to worry about maintaining any copy of WordPress Core in your own repos. There are other ways to get this done. You can write a script that hits the web and W gets the zip file and unzips it into the right location. You can do all of that. But let composer do it for you. And then finally, the big takeaway is remember to specify your types. If you don't specify types, you don't, in the end of it all, get a website. Upsides and downsides. The real upside is if you're in a world where you're not really using something like Docker or other sort of virtualized containers, this is a good way to maintain the same site across multiple machines. At Georgetown, we half intentionally and half just based on preference don't all use the same stack for our local development environments. On the one hand, it's annoying. On the other hand, it also means that like I'm on Apache, someone else is on Nginx. And we get a really, we get an opportunity to test our sites in a couple of different, slightly different local environments before it ends up online. And we can maybe catch a few things that otherwise we wouldn't. You can't tell because my laptop is sort of hidden. And if of course you're just listening to this, you wouldn't know it as well. But I'm on a PC, some of the other devs, both of the other devs are on Macs. So we get a little bit of cross-platform testing that way as well. So we need to have the same website across all of those environments, even if the environments themselves might be slightly different. Composer lets us do that. As long as we're all using the same JSON file and we're all running Composer install to get the code when we build the site, the site's the same. Semantic versioning is really nice. We've run into a limited number of cases where we've wanted to continue development on a theme or a plugin at Georgetown. But we weren't ready to send it to prod for one reason or another. So we can leave the version number in the roots Composer file at, just making one up like, I don't know, 5.0. There might already be a 5.1 or a 5.2 located on GitHub. But as long as we specify 5.0 in the JSON file, it won't bother to install the newer versions until we're ready to deliver those newer versions to the web, especially if there's some sort of a requirement that we've got a date on which it's gonna be released or something along those lines. This is a really good way to be able to not halt development on a dependency just because you're not ready to send it to prod. Smaller repos, like I said, we chunked out. We went from 18,440 files in our repo to 36. It's a slight reduction. And at Georgetown, at least, we separated our repos. The different plugins that we write, there's about 30 different repos. Three themes in the rest, I think, are plugins, or MU or otherwise. That allows us to have really small, self-contained, focused chunks of code in those repositories. We don't have to have one giant repository with 19,000 files in it and search in the right folders to find the plugin we need to update. We can just go to the repository for that plugin and update it in its own repository. And that's really, really nice. There are some downsides. It's another tool to maintain. You gotta update Composer. You are grabbing packages from the internet, which means you're open to supply chain attacks. We've bumped into them a couple of times through NPM where somebody does like a typo squatting attack where they name their malicious package so similar to the name of a non-malicious package that somebody goofs and installs the wrong one. And that quick, there's some kind of malicious code that starts to sort of circulate until the node folks realize the problem and solve it. You could run into the same thing here. Off the top of my head, don't remember that happening for Composer, but you do have to be careful to not spell things wrong. You'd have to be careful to vet the things you wanna install, et cetera, et cetera. You can run into some tight binding relationships between repos.  If you control WordPress without the themes and plugins, it kinda works, but there's some really tight connections between these different repositories that you're installing. And so on some level, cognitively, it might be better to have them all in one shared repo because then you at least know that if you pass around that repo, you've got everything. Whereas in this case, if you, for some reason, forget to install something or if you have the wrong version of something in your local Composer file, maybe you haven't merged from the main branch in a little while, something could go wrong when you install, when you get a little mixed up. Luckily, you're in Git, so just merge the main branch and you're probably gonna solve the problem. The last problem, though, is just like sometimes Git gets confused, Composer does as well, but luckily clearing the Composer cache usually, usually solves it. So we're gonna try really quickly. Let me make this a little bit larger. And I need to move it over here. If you're just listening, oh, no, no. Oh, you know what I can do? I can try to duplicate. So I'm not gonna be able to look over my shoulder at the screen over there and type at the same time. But if I make the two screens the same, look at that. So if you're just listening to this, this will not be very impressive, I apologize. On the screen now, though, is my IDE. I'm a JetBrains user personally, so that is what we're looking at. And you can see that I've already run ComposerReset and that was just for convenience. All I'm gonna do real quick is type Composer, install. And when I click Enter, it's gonna start doing things and hopefully this works. It's always fun when you run a demo in the middle of a room. I'm also, this is basically it. Once this is, this can do its own thing. Oh, look at that, it's already doing it. That was pretty fast, actually.  Composer goes by fast enough that it is probably not useful for me to read it to you all, I apologize. We have one person who uses a screen reader in the office. He has tried this once and said that Composer's output is accessible in that it is all read to you from a screen reader. However, it is all read to you from the screen reader. So it's usually too much information very rapidly, especially the little progress bar, just keeps saying percentages over and over again, which is not super useful. But yeah, it's already done. And the proof that it's already done is that in the project window here in the IDE, if I open up the public HTML folder, which did not previously exist, you see WordPress core. It's that simple. Once you get it all set up and hopefully the example in the slide and the workshop tomorrow will help you get it set up if this looked intriguing to you, you just get a website at the end of it and all you need is one file. Let me get IDE out of the way, switch to questions, slide and find. There we go. Now that I'm duplicating, it's harder to switch from slide to slide. So questions, any thoughts, concerns, ideas? There is a microphone here in the middle of the room. I've got one as well and did you still have one? Oh, hold on. Okay, I think we're gonna try to move around the room a little bit. I got this guy over here. I saw this hand first. I'm just gonna run around and I'm off the camera. It's fun. Just quickly, just wondering if it's possible to restrict plugins to require a certain version of WordPress. So I was trying to figure out, trying to imagine how that would work. That's a good question. I don't know the answer to it. I do know that composer will respect a PHP specification. So in some of those composer JSONs, I think I said PHP greater than seven four or a PHP greater than or equal to eight. So there is a way in the world of composer to do that. What I don't know is if the composer plugin that will automatically be installed when you specify that John P. Block WordPress repo, the first time you want to install it will ask you, are you sure you wanna install WordPress? And then you say yes, because it's what we're here for. I don't know if that plugin though has the way to say like WordPress greater than or equal to 6.2. I'll try to find out and it'll be an experience. Yeah. Saw the gentleman back here next. Might have missed something. Where's the data? The data? Yeah. All of that stuff because you're not hitting the database. Correct. This is just PHP code. If you have a database that you need to install as well, you'll need to have like a dot SQL file or some sort of database dump that you can then import. So like at Georgetown, we have our development team. We just sort of go to one of the websites that we're currently working with and just export its database and then pull it into our local database. You're correct. That part, the data for the site won't be there. However, if it's just like a hobby project or if you're installing a fresh version of WordPress, once you've got everything installed, you can just go to the normal five minute install for WordPress and it will create the databases and all that jazz like it normally would. There's also not a WP config file in any of the repos because you don't want your database passwords and things like that to end up in GitHub. That would be bad. So we've probably all done it but usually GitHub's good. Like a couple of times when I've really messed up and put an API key in GitHub, it's like, oh, you put an API key, we've deleted your repo or whatever it does. So yeah, so there are a few things left over as an exercise for others to set up the config file, to set up your database, those sorts of things are outside the scope of what composer can handle. Theoretically, you could put a database dump of like testing data in the repo and then you'd have two files and then the title wouldn't work. So yeah.  First of all, great talk though, I appreciate it. Quick question. So when you manage WordPress plugins in the composer file as opposed to directly adding them in the admin, how do you make sure the team members don't accidentally log into WP admin and update the plugins there as opposed to in the composer file? That's a roles and capabilities question. The easiest way to do it is to say, just to take away the managed plugins capability from all of your users and then they can't. Is that something that you recommend? I definitely recommend that. I recommend that nobody gets, I recommend you take away all capabilities from all users. That's the only way to be sure. No, it's the nuke the site from orbit solution. No, seriously though, at a prior job, we used to install all WordPress as multi sites. They only ran one site, but multi site moves the managed plugins and themes capability up to super user. And so all you can make people admins then and then they can't do plugins anyway. So that is another solution. So you don't actually have to write code to take away the capability, just make it a multi site of one site. And again, they don't get to do it. For Georgetown, our hosting service doesn't allow the hosting provider blocks the ability to write files on prod, so they also can't. Now theoretically, they could still do it at non-prod staging sites, but we just, we don't advertise that capability. And then even if somebody did it for us in a professional environment, the next time we built and pushed the next version of the sites, whatever they changed would be overwritten anyway. Coming to you again. Over here, okay, go ahead. Yes, so I noticed that your composer JSON file, you're dropping a one root above the WordPress core root. And I've also seen ones where composer JSON was at the same level as say the WP content. I've also seen them with composer JSON in the WP content folder. I was just wondering how you decided that was where you wanted to go? I like putting files that might reveal possible security breaches in a place that the web won't find them. And the easiest way to do that is to make sure they're not on the web. So the same way that WordPress can put WP config one level up from the index.php and it'll just find it. I usually put like my composer JSON there as well. While I was doing these slides, I realized I should put the whole vendor folder there too. Cause theoretically there's probably a readme file in almost all of those packages. And if somebody's really, really savvy and somehow guesses where I've put the vendor folder and then just checks for all of these readme files, they would then suddenly know what I've installed. And if there's a known vulnerability, it's like, all right, okay, so it's a lot of ifs. But if I wanted to be really sure, and I think I'm gonna start doing this, I'm just gonna put the vendor folder up there too. PHP will happily include it. PHP doesn't care as long as the interpreter has access to it, which in this case would be, it's in the home directory for my account on my shared hosting service. It'll be a little bit different depending on the host for a professional environment. On, for our host, the folder is named web instead of public HTML. But we could probably put that stuff next to the web folder and PHP will include it. But the, a person browsing the website will no longer be able to guess a URL to a readme file or a changelog file and somehow get data that I don't want them to. Hey, so actually let's ask a question around how you're handling your deployment. So obviously with Composer, there are a change in how we push. If you wanna know how to do it tomorrow, there's a session tomorrow where you might learn about it. But I'm curious about how you manage it at Georgetown handling deployments to your production environment. Yeah, we have scripted that ourselves, more or less. So we utilize a hosting provider that provides a command line environment that we can install and utilize for most of our deployment needs. So for Georgetown, it's very scripted, very routinized. And that's because we're pushing to 25 or 30 actual web accounts, one of which is then a multi-site that has 400 plus sites on it. So like we need to get this to a science so that we don't have to do it by hand. For my own site, I have to pee. For a while I was doing get push hooks, so I would push to a remote repo on my shared hosting environment, which would have a post-receive hook that would check the repo out and put it in the right place. But then I kept deleting things that weren't in the repo and that's annoying for the folks that I was building demos for and stuff like that. It's been a long time since I did any sort of freelancing or site hustling, so it's not as important to me anymore for my own personal website. So I usually just build locally and then FTP because it's dashfin.com. It's got like four pages and like three of them are about my shadow run games on Sundays, so it's really not that important. I think we have time for one more, time check. Are we good for one more? Three minutes, cool. Thank you. You said that you're updating the plugins from Composer, right? But what I experienced in the past when I updated the plugin in the dashboard, especially WooCommerce, is ask me the question if I would like to update the database because a new version has some new tables for new structure. How does it happen when you update the plugins through the Composer? How to recognize that it's need to update the database as well? Yeah, that actually happens the exact same way. When you update the PHP code, when the next time you log into the WordPress dashboard, you'll see the same notice at the top of the screen that says you want to update the database. That'll happen. I think the 6.3 release for WordPress required a database upgrade. I don't know for sure because we haven't done it yet at work. It's on the clock. We're testing everything and going through the process of making sure that the new version doesn't cause any problems. And part of that process will eventually be clicking the button at the top to update the database, that sort of thing. Sounds good. Thank you so much. Short one from the last group over here maybe? We got every other part of the room except way over here. Anybody? No, come on. Somebody asked a general question, not about the topic at hand. Anything? Yes! You know me. What is your favorite game? It's giving you something fun. Tabletop game, video games. Any game? Pick one of each category. Tabletop game is Shadowrun. I mentioned it earlier. I've been running the same game of Shadowrun within the same sort of shard of the Shadowrun meta plot since 2001. I've had the same players at my table since 2008. And somehow we've made this work. We don't know how. I did cancel Sunday though because I'm gonna be really tired. But so yeah, Shadowrun for me is a tabletop experience. Video games harder. As I mentioned in my bio, I'm for the Alliance. I've been a World of Warcraft player and I have the honor of it one time being a computer programmer who was in their 30s living in their mother's placement playing World of Warcraft. And so I am the stereotype they warned you about. So that's probably still my favorite. I've gotten sort of sucked into Diablo 4 though. So I'm basically a Blizzard fan person at this point, I think. So yeah, cool. I think that's all the time we have. I saw one hand go up here from over here in the peripheral vision. So I'll be wandering about in the hallways. You can find me. I think I'm the only person in a vest and a tie. So I'm pretty easy to find. Thank you all for coming. I hope this was useful.


For the boys, a big crowd of students and fans on hand. Tied at one in the second half. Aiden Hellwig passes into the box. It's deflected, but not quite out. Aspen-Galdamez takes advantage with the strike. They go up two to one. But the Crusaders would tie it up at two. Eight minutes to go in the half. Ben Hescrosses one in, goes to the foot of Ethan Mocky, blasts one in. They take a three to two lead. You can almost taste the section finals. And now Bemidji looking for the finisher. Ethan Mock up to Logan Mitchell. The perfect angle he goes and celebrates as this one goes in. Bemidji, they take this one four to two. They will get Sartel tomorrow night as well. If you enjoyed this segment of Lakeland News, please consider making a tax-deductible contribution to Lakeland PBS.


I am Dr. Rishal Gajbar and in this video lecture we are going to implement 2S to 1 multiplexer circuit by using VaryLock-HDL language. So, at the end of this session you will be able to implement 2S to 1 multiplexer by using VaryLock-HDL. You will also be able to write the test bench in VaryLock to verify the model correctness also. So, the software that we are going to use for the simulation purpose is model sim student edition. You can download the software by using the link which is provided here. It is a free of cost software, so anyone can download and write the VaryLock modules. So, the workflow for this session will be as follows. We will first discuss the VaryLock module for a circuit which is a 2S to 1 multiplexer in this case. Then we will write down the or discuss the test bench and then finally we will verify the simulation results in model sim software. So, before writing the 2S to 1 multiplexer module definition in VaryLock, let us discuss the circuit in detail. So, multiplexer is a combinational circuit which has many inputs, but only one output and there are some select inputs and the value which is provided to the select input particular input will be available at the output, so basically it is like a data selector circuit. So, depending on the select input which is provided here, this output y is connected to one of the inputs and that input will be available at the output y. So, this shows the function table for the 2S to 1 multiplexer and here you can see for a 0 equal to 0, y is equal to i 0. So, whenever you provide a 0 equal to 0, this y is connected to i 0 and y is equal to i 0 in this case and for a 0 equal to 1, you get y equal to i 1 and this y output can be expressed using this logical expression which is equal to a 0 bar and operation with i 0 or operation with a 0 and operation with i 1. So, this is the VaryLock module definition for the 2S to 1 multiplexer, it will start with the module keyword, MUX 2 1 is the name of the module, in the bracket we provide the list of input and outputs. So, there are 3 inputs i 0 i 1 and i 0 and there is one output which is y. In the next 2 line we define explicitly the inputs and outputs by using the input and output keywords. So, the inputs are i 0 i 1 and i 0 and these are defined using the input keyword and the outputs are defined here. So, all the keywords are represented here by using the bold symbol. So, output is represented as output space y semicolon, also do not forget to give the semicolon here. Then here you can one can see that the output y is represented as a rake data type, why? Because since the output y should store the previous value unless the next value is assigned to it. So, that is why it is defined as a rake data type. Then we write down the always block, so always block is the block which is always going to get executed continuously. So, it is like a while one in the C programming, so always and there we provide this symbol at the rate and inside the bracket we provide a statement. So, generally inside this bracket is the or operation of the inputs, so that is why it is equal to i 0 or i 1 or i 0 which are our three inputs. The meaning here is that for any valid input this i 0 or i 1 or i 0 takes this always block is going to get executed and inside there you can see the case statement. So, this case statement is similar to the C programming. So, case inside bracket you can see s 0 which is our select input. So, whenever s 0 is equal to 0 and there will be two cases since s 0 is a single bit binary number it can take either of the two values 0 or 1 and these are shown here. So, whenever s 0 is equal to 0 for that case y should be equal to i 0, so that is why y is equal to i 0 is written here and for s 0 equal to 1 y should be equal to i 1. So, that is the same thing which is written here and the case block can be should be ended with the end case statement and finally, the module is ended with the end module keyword. So, this is the module definition for 2S to 1 multiplexer. Now, let us check the test bench for 2S to 1 multiplexer. So, test bench for 2S to 1 multiplexer will also be a module it will start with the module keyword the name of the test bench is test MUX 21. The inputs are defined as a rig data type in this case because you want to provide the various input combinations of the inputs, so a rig space i 0, i 1, s 0 and the output is defined as a wire data type. The next thing is to instantiate the module which we have written for the 2S to 1 multiplexer. So, we have written MUX 21 which is the name of our module followed by the name of the object which is MO in this case you can take any name whatever name you want and inside the bracket you provide the list of input and output so i 0, i 1, s 0 and y. Then next we have to write the initial block, so initial block is written here using the initial keyword and since there are multiple statement that we want to provide here we write it in the begin and end block. So, it is a general rule in a very log that whenever there are multiple statement that you want to provide inside the initial block you write it inside the begin and end, so that is why the line here is written as initial space begin and here you provide all possible input combinations and finally this begin is end here with the end keyword whereas this initial is completed by using the end module keyword. Now, let us take a look at the input combination that are provided here, so 3 inputs are there, so i 0 is equal to 0, i 1 is equal to 0, s 0 is equal to 0 then you provide the delay that you want to provide between any 2 input combinations. So, here I have provided hash 100, the meaning here is that the delay will be 100 units and actual delay will depend on the time scale, so these 8 combinations are provided here, so before moving on to the actual simulation pause the video for 1 minute and write down the answer of the given question. I hope you have written the answer, since the output must store the previous value until next value is assigned, we declare it as the rig data type. Now, let us see the simulation results in model sim software, so I have already written the program, this is the model definition that we have discussed and this is the test bench that we have discussed in the slides. The next part is to compile the program, so go to compile, select appropriate name, so testmux21.v compile, check whether your output is correct or not and one can see here that there are no errors and warnings, so our compilation is successful, so we can go for the simulation. For simulation, go to the library and select testmux21 where you have provided the test bench, so go to simulate and then go to the add, two wave, all items in region and the next job is to run the program, so run it, so here one can analyze the waveforms as follows, three inputs are there i0, i1 and i0 and one output is there, why, so for in the first case you can see the i0 is equal to 0, i1 is equal to 0 and i0 is 0 and we know that from the function triple that whenever h0 is equal to 0 whatever is available at the i0 that will be available at the y, so that is why y is equal to 0 in this case. Take another input combination, here you can see i0 is equal to 0, i1 is equal to 1 and h0 is equal to 0, so what is going to happen in this case, the y will be equal to i0, so that is why it is still 0 in this case. In the next combination, here you can see that the i0 is equal to 0 and i1 is equal to 1 whereas, h0 is equal to 1, so since h0 is equal to 1 what should happen, y should be equal to i1, so what is the value i1 is taking, i1 is taking the value of 1, so y should be equal to 1, so the same thing you can see here that y is equal to 1 in this case, so you can also analyze the remaining input combination and if you observe this you can see that our circuit performs correctly, so the verilog model that we have written performs correctly. These are the references, thank you very much.


And we're back with the breakfast and plus TV Africa. Monday, Thomas joins us this morning as we talk sports. Monday, it's good to have you join us. Thank you once again. Mercy, it's a beautiful Friday and we've seen lots of beautiful events in the world of sports. I can't wait to get on with it. OK, let's start off with the fact that fans are already slamming the flying eagles after their defeat at the semi-final. We're talking about the under 20 Afqon now. I mean, it's quite very painful because it looks like we learned from our mistakes the first game where we lost to Senegal. I mean, I saw some improvement in that particular squad. The second game we went ahead to get all three points. The third game and also in the quarterfinals where we beat Uganda. But certainly, some people didn't know that beating Gambia was certainly going to be a peak box because when you take a look at Gambia, last competition, they made it to the third place. They made it to the third place and this competition, they're through to the finals where they will take on Senegal tomorrow. So I think Nigeria were a little bit complacent, especially when we, before we considered the first goal, where we had a little bit of lackluster performance, but we woke up. I mean, just like any team will do when they go down by a man. And also, Nigerians will not be happy for that penalty miss. But for that player who missed the penalty, he got a red card in the first game against Senegal. It just came on in the semifinals just to make amends for that red card he got. He played well so well that day, I tell you mercy, but that penalty miss could have gone anywhere. I mean, he did everything right, beat the goalkeeper, but could not beat the post. Today by 3 PM, I think it's that time for us to just rally around the under 21s again and get to support them. They already threw through the World Cup, which is a big win for Nigeria. But we know that Nigerians were a little bit insatiable when we see that we can win something extra. Why not go for it? But it's OK. We've won the tickets to the World Cup. And today, it will just be something that would get to a peace Nigerians if we get the bronze medal. All right. We've seen it a number of times that the national team, the age grade teams, will not perform win the African tournament, but will go ahead to do better in the World Cup. What changes do you think need to be made? I mean, Laden, Bosa, I'm sure agree, it's done well. But what changes do you think need to be made ahead of the World Cup, which is now the focus, not even this third place, as far as I'm concerned, to get the team to perform better? Do we need to get in more foreign-based youngsters? Do we need to get in players who play in the top elite leagues in the world? Are they even part of this team? Are they ongoing African tournament? First of all, crashing out in the semifinals is a big negative, but I've seen lots of positive in that particular score. And what Laden, Bosa needs to do, I'm pretty sure the NFA will give him a chance to be the coach of the upcoming World Cup. And I'm pretty sure what he needs to do, what he needs to improve on is to let the players understand the reason why they are wearing the green jersey, the reason why they are doing that Nigerian jersey, but it's a thing of pride. They should know that it's not just for their personal owners, but it's also for the country as well. They need to have that understanding. And if they do have that basic understanding, certainly gonna work on their mentality, work on how they motivate themselves and how they get to perform on the pitch or play. I mean, it's good to work with a team that will sit at the under 20, so I don't think an inclusion will help. I think he needs to refine those boys and it's to train them more, it needs to make them have a little bit of understanding because it could be that they were not well prepared going into this tournament. They did not get to play together to understand how each individual will play and how they are now the seller of play. So I think at the World Cup later on this year, they'll get to understand themselves more. They'll stay together in the camp. I don't think inclusion will help. They should just work on the team more and see how we can go to the World Cup and of course do great things. And here are seven times winners of the AFKON where the number one nation when it comes to the under 20 AFKON. Yeah, just a quick one now. Set to play a third place with Tunisia. Do you see us rewriting the wrongs or trying to make it right? Maybe with a more position or a win. Mercy is not going to be so easy to predict because in Africa, I would permit me to use this word, there's a resurgence in Africa. I mean, you don't get to see small teams play like small teams anymore, all right? Like Gambia, no one expected that Gambia would beat Nigeria, but Gambia did beat Nigeria. And we've not really known Tunisia for under 20 football. We've known Nigeria, of course, seven times champions. It's not going to be an easy game by 3 p.m. today. But I think Nigeria can go all the way and now we're in for the under 20 of Nigeria. The age of some of these footballers at the under 20 tournament has been called to question. What do you say about that? Have you seen any faces you'd wonder? I just can't really hear under 20. I think my smells have answered the question, that's it. I've seen some of the pictures, I mean. Also, I think it's an African thing, all right? It's not just Nigeria. We saw a South Sudanese goalkeeper in this tournament where, of course, South Sudan had a fantastic tournament. It was a debut tournament and they made it to the quarterfinals. Unfortunately, they couldn't make it to the semifinals. It's an African thing. We've also seen some players from the Congo and also Senegal. You know, it's a third-world country. We are a developing continent and we don't get to see football started at the right time for this young lad. And just like the pictures we're seeing on the screens, these players don't look around under 20 for me. I think we should just call them some slack. Some of them are under 20 for certain, but some are not. Well, I'm Monday Thamas. We have to leave you that. Thank you so much. We'll be joining the newsroom at 9 o'clock for the news brief. We look forward to sharing your thoughts as we proceed. All right, hopefully next time there will be more time to talk sports. Thank you so much for having me, Mercent, Kofi. Appreciate it, guys. Thank you. Well, that's the size of our package. It's been a very thrilling week right here on The Breakfast and Plus CB Africa. We actually celebrated women. I was going to have one or two questions about women in sport. Mercent, but women are doing fantastically well in sport for Nigeria. If you look at the the plaudits and the laurels that the country has won in sport, I think we can say that most of them have been won by women. We'll talk about the likes of athletics. You can see the athletics, powerlifting, weightlifting, football. It's mostly women. Track and field, you know, table tennis is mostly women. Paralympics, it's mostly women. And I just want to take this time to celebrate Nigerian women. You know, they deserve all the plaudits. All the laurels, most of the medals Nigeria has won is brought in by women. So women in athletics in sports, we celebrate you. Mercent, I celebrate you. Thank you. I didn't have a chance to wish you have international women. It's a very wonderful woman and I celebrate you. I celebrate you. That's the size of our package for this week. You can follow us on social media, Plus CB Africa on Facebook, Twitter, Instagram and of course at YouTube, Plus TV Africa and Plus TV Africa lifestyle. On behalf of all our team, we have a large number of people working on this program every single day from the control rooms, but the production and master to transmission to the cameraman, to the producers, to our news team, head of news. Everybody's been putting their hands together to ensure we have a good program. I want to thank you for joining us this week. My name is Gofee Bartels. And I am Mesti Ibupo. We joined the newsroom at nine o'clock for the news brief. Please stay with us. Good morning.


Hello and welcome to the craft box my name is Brent I'm joined with Finn and today we are hyped We're playing was a 101 road to 100 episode 23 22. I mean We are 21 and nearly 22 And we are going to Marley bone. Yeah, we're getting out of this desert No more L has read for us. We're leaving Well, we're leaving the touch should be easy to manage now as much as you help me I must seem pretty ungrateful. Here's what I can do It's something inside the sarcophagus of the souls you're looking for a a book, right? We ship the sarcophagus off to the Royal Museum on Marley bone with some other art of take this Marley bone spiral key And go through the spiral door to Marley bone Private kinsley will help you find that book you're after you've got to recover it before it's used for evil Okay, let's go. This is getting this is getting quite serious What's your thoughts on Marley bone? You've never seen it. Have you? What do you think what do you think it's gonna be like? I think it's gonna be modern-day America Okay, sure.  Yeah, okay. Yeah, I'm already there Salute welcome to Marley bone wizard. I'm under orders to direct you wherever you need to go Yep, you'll need to speak with the curator in the museum. He'll know how to help Okay, let's go to the museum you're gonna see Hyde Park for the first time Wait, yes next level not Hyde Park Regents square Wow, I'm still about a thousand away just under a thousand away This is this is Regents square No, that's a dungeon at the end Right, yeah, I saw flying cows correct.  Ah, yes, we receive the sarcophagus and it is currently being processed for display I'm sorry, you cannot see the sarcophagus even if the croconomicon is within it. It's extremely fragile We can't have the general public rummaging through the museum Go talk to Mayor Pimsbury at Digmore station only he can make exceptions Okay, we need to go to Digmore station next level. No Oh My god, okay, I'll go to Digmore station and you can port to me Bye, it's fun getting a new spell. Tell me what it is.  Sure, not honestly. What's a sephora mr. Life wizard? Lady Oriole She's the queen of the sephora's Lady Oriole was the queen of the serifs Lady Oriole was the queen of the serifs You should probably port to me Before you disappoint yourself. Ah, you seek the croconomicon. Why I assure you the safest place for it in all of Marlborough Is in the museum? But I cannot say the same for the streets. We're struggling with a gang uprising. You see I dare not let anything Out of the museum until the streets have returned to normal, but perhaps if you were to help with that problem Tower shield Yeah Sherlock bones is investigating the O'Leary gang. He's working with the yard coordinating efforts from the air station Speak with him.  It's elementary You've come from Wizard City and the mayor sent you to help investigate the O'Leary gang Let's begin at once Some things afoot in our fair city and I've deduced the O'Leary's are behind it Perhaps working for a far more sinister and hidden enemy We must leave no step. I've had occasion to work with one called Ms. Conrail Seek her out in Hyde Park and learn what you may Okay Okay, let's go.  I'm in the next year. I'm going on the flying coffin Something that you can't do until you you're up to my level You know, it's funny as soon as we get into Michelle start downloading Dragon Spire World data And that's like we don't go to Dragon Spire forever because Misha's such a long world Misha text forever We've got this driver who is like really scary. He just steers it into nowhere doesn't even play I'm coming to you Yeah, that's where I am. Okay, have fun Yeah, I said that I said a flying car Because that's what you called it before Yeah, Ben sent you has he even a great detective needs a hand to know in there there I'm nothing special. I just keep an eye on the neighborhood. That's how I learned an O'Leary is willing I've arranged a meeting with Baxter, but he's afraid the other O'Leary's will catch on Wizard like you should put him at ease meet Baxter at the greenhouse near the fountains He should give the goods on whatever those O'Leary's are after You coming I've got you now Talk to me when you're ready Okay X Hey guys. Hey guys Hey guys, Vinny's are you here? Yeah Of course not. Oh, he's a little 100 But we did he's dead just might as well pass Might as well pass Consider that he's meat here Didn't even correct what? Oh Well, I stood it to why Yes, I'm that sequestered. I'm on fun Ambush the O'Leary's must be getting wise to us Imagine if I had gone to meet Baxter. Good thing you were there.  Be careful love. It's not like I'm struggling I was struggling that I would have where's the safe house. Let's see which ports can we go? Which one do we need to go south east? So let's go to the poor one first fraternity house And then walk the rest of the way to the east. Oh, we're going to the west actually Okay, fine, then I'll go to East as well I'm nearly there How far away you? You have to be really careful here. This is where you get pulled majorly So you might want to be careful. Mr. I get pulled every time. Why are you doing this? I don't know You need to line it up so the pipes go to the hole Port to me Port to me It's working Oh, here we go Oh, he's got a hydra. Can we go on? No, get on the schedule now No, you cannot you cannot take any rides. You don't know where that hydra's been Yeah The real Because you can't even name I've got a bloke who might know where Baxter is Won't part with information nice and easy that I don't can don't it But a spot of the old rough and tumble might be in order to have a boss find Willie marks beyond the guard Defeat him and he'll tell us what we need to know Yeah, you do that's what you usually do from Drink a potion and calm at the boss battle. I'll make the next place when you're ready for it. What to me Put me put me Three two one We have to fight this.  You are with it. Good. Well, that's because I'm balance Right balance gets all the power up. Yeah early in Krokotopia. We need somebody else doesn't as we're amazing What do you mean later? We're not Actually, no, it's actually pretty good, especially if you crit and have a lot of damage because nobody was a spellence Nobody was a spellence Yes, it is late game. It's pretty decent like it's a cheap spell that is actually quite powerful This If you crit have lots of blades You can group I can like 4,000 Yes, it's a low attack 4,000. I know but like it's a cheap spell. What do you expect? It's a good. It's a good It's a good aoe. It's a good aoe later game And I was gonna use my bad aoe early game Well, we at least we get an attacking aoe from Shut up Well, you're the one who's picking these fights fun I'm the one you're the one picking these fights The boss and kill on the not the boss the Nepper The other one who who's fighting these battles fun You're the one who comes in here calling these calls Saying that my aoe is a bad when you don't even have a good Even though they're not that bad late game Yes, they're bad compared to like high pip spells, but just because it's a low pip spell Yes balance is not a hit on school The best spell that you can get is from the judgment or raw Raw that's an amazing spell at tech stages. It's now aoe as well rise a good spell Can't wait until I get raw who needs heels nobody You just need to hit Can't wait until raw that's an amazing speed. That's a good aoe Heal me, of course, you don't hear me No, but raw is a good aoe for balance That takes forever, but it's a good aoe Yeah That's because I'm the tank firm You won't get a boost on the ice Yes, did you not know that thank you for healing me And they're not you useless your sprite Okay, I didn't see that When I say that I only saw your sprite healing me to why My next spell that I learn is judgment My next at 28 I learn judgment. Yay I'm Hello, hello talk to you Now why they're keeping him at the old hide fraternity house, but you'll never have him. It's locked up tight Okay, let's go talk to Miss Conrail. I find out Well, he said we'd never get back star out of the old fraternity house I know something if he's there the big marks haven't had a chance to get their clues into him Great job wizard. We'll find him yet Can't say back stuff. We can't get through the door as it so happens I know a few scoundrels who help we can't give up on Baxter now Okay, we'll be right back once we've debated these hooligans. Um, so yeah Okay, we're back. We've done the hooligans and Jeff You managed it did you? Regular lot of convicts with all these lockpicks on there I'm to muck around take these lockpicks to the hide fraternity house in the upper left hand corner of your map find Baxter before The O'Leary's know we found him go quickly. Okay. Okay. We will go to the fraternity house What would you feedback sir or find Baxter and you come in thumb? Yeah, don't walk away over there Because there's a port right outside.   Yeah, that yeah, I completely believe you Maybe What cool But if we beat up quickly then they won't get a big hit on us So you need to think of the ups and the downs and don't hit the boss. I'm just sitting up for a big sense Oh There's only a few spells that There's lots of cool animations It's not Like the crack on the slow level is pretty cool Yeah, it's cool. It's quick It's quick and cheap and makes it easy. I love it Like it's just like a tornado and it just comes and eats you. It's like nom nom nom nom Yes, it may not be the best-looking spell But it's what you're like people have different opinions from It's a pleasure to you. Yeah, it's a pleasure to see you See, this is a cool spell. Well, yeah, I agree Yeah, so Sam's don't Pleasure to hear Simple it's good. I hate spells like this because they take longer Like oh my god, just hurry up and chuck the rock. I Hate that spell because it takes so long to chuck the rock.  You're evil. You're not polite Very unpolite I do even know I've been friends with you for a long time Oh Yeah, maybe it will Maybe he can sort the whole thing out best of luck wizard. Yeah, we've done it We've done it We've done it. We need got up to show up one in the more in the episode And we will see you next time This is your next time x x x I've heard rumors about those metal man. If we are to look at Must call upon miss Marfley over in Chelsea court She keeps an eye on that neighborhood and knows what goes on I have heard her speak of those clockworks by the Chelsea tower Seek her out at once. Okay, so that is the first episode of Molly bone We've done the first straight. We've got like a few more to go So thank you for watching. I hope you enjoyed where we'll see you next time and remember Crockets on the box. Bye


Let's, let's, we started with a quick tip from Skyler. Let's, let's keep going with quick tips from Jeff is the next one. He says, have you ever wanted to copy the path to a file to the clipboard? Here's a quick way to do it. And by path, he means the text based representation of what folders that file is in. He says, open a finder window and navigate to the location of the file. Right click or control click on the file to display the context menu. With the context menu displayed, hold down the option key, and you will find that there is now an option to copy the file as path name. Click it. And now on your clipboard is the path to the file. If you don't want to right click or control click, I believe you can find this in the edit menu when you're in the finder. Uh, yeah, if you just open up highlight anything in the finder, open up the edit menu and then as you press down the option key, you will see it will be copy it without the option key down. It's copy with the file name and with the option key down, it's copy file name as path name. So that's pretty good one. I like that. Very cool. Thank you, Jeff. This is, I love, I had no idea about any of this. This is what I, this is what I love. And here's another one that I didn't expect to happen, but it happened.  If you right click on where you get a copy as path name, kind of like this. Oh, look at that. Got a level higher. So amazing. Oh, right. Can you getting the, you're getting the path name to the folder when you do that, not to the file itself. Interesting.


Hey there ladies and ladies, it is Petrifying Pumpkins here and welcome to another Firewall Ultra news video. This one teasing a potential release date possibly or a new trailer coming to the future game show. Now this comes from this promoted tweet. This source of this is from a user called Noahpro on Discord, he was in the Without Parole Discord where he posted this image and I tried to find that image myself everywhere I could not, I could not see it on the future games official Twitter, I couldn't see it on their YouTube, on their Twitch, anything. Eventually thanks to PPO for letting me know that this came from a promoted tweet so it's not something I'm able to actually search for so it's possible that it's a fake however I would say if it is a fake it's a pretty convincing fake. Now what's important about this is that you can clearly see Firewall key art in the bottom right of this promotion. I'm just going to zoom in and I'll see you can get a better look. So there you can clearly see your Firewall Ultra key art. This show as you can see as well on the screen is coming on the 10th of June this Saturday and you can see the times there on the bottom as well, 10 am Pacific time, 1 pm Eastern time and 6 pm GMT my time. So the obvious conclusion that you might be jumping to is that this is where we're going to see a release days for Firewall Ultra but before we do that let me show you another thing from Discord which is posted by First Contact Entertainment themselves. So this was posted on the first of this month so we do have a new little video nothing special that will be coming out soon within 15 days there will be one new thing about the video my test for y'all is who can find the video first and if you find us what's the new thing it seems like they're gonna be putting out a video that they've already put out before but we'll have one kind of a change one new thing that we haven't seen before now will this be what they show off at future game show if that thing is real if that is legit I'm not too sure regardless however many trailers they show whenever they show them I will be doing frame by frame analysis to see what's new what's different we get a release days we definitely be talking about that make a video about that too so stay tuned to this channel if you want to learn all things Firewall Ultra that's it for this video thank you very much for watching and thank you Decepticon for letting me use your music in all of my videos I'll see you in the next one bye for now


Hi friends, welcome back to the course on integrated pest management. After having understood the various the pest management components, which are been integrated into the IPM system. In today's class, let us look at the latest and a novel approach, which is been used in the pest management ecosystem, that is biotechnology. You see with the advent of the biotechnology, the agriculture has such what a tremendous boost in terms of the improvising its crop production, improving the produce quality and the pest management area and also managing the resistance in the various insect pests, etcetera and etcetera. So, let us look at how this biotechnology is going to be used in pest management and also the insect resistance programs. What do you mean by a biotechnology? So, biotechnology can be defined as any technology that uses any living organism or a substance of this living organism in order to make or to modify a product for the benefit of a plant or the animal for a specific users. And how this biotechnological approaches have been used in agriculture. See in agriculture, the biotechnological approaches have been made in a various ways, such as like if you look at the genetic engineering program. So, genetic engineering is nothing but where a particular gene of our interest, we are going to use it will be take it out from one living organism and incorporating into the another living organism, where we want the gene to be expressed. And in that way, we have developed several crops. So, which we normally called as genetically engineered crops or genetically modified crops and which not only for the pest management, they have also been used in the various other agricultural field. Then we also employ the another approach called as a molecular markers. So, wherein so we can actually track the genes of our desire and whether they have been rightly incorporated into the living organisms of our desire and whether they have expressed it correctly or not. And in fact, this technique we are using it for developing various varieties and as well as hybrids. And the third approach will be the molecular diagnostics. We use the biotechnology approach like in identifying the various species and the plants and finding a relationship among the species or the living organisms such as finding a phylogenetic relationship etcetera, you know barcoding is also one of the approaches that we can actually make use of it. Then through biotechnology, various vaccines have been developed especially for the farm animals and so with that, the lot of production in the improvement is also been made. And finally, even in the tissue culture also, the biotechnology is a major component which has been actually used. Now, so let us look into the milestones in the history of the biotechnology. Taking the pest management aspect into consideration, I will just pass through some of the important milestones in the biotechnological field. So, in fact, in 1938, so after the discovery of the BT, so the commercialization of the BT has started happening which is first happened in 1938 by producing a commercial product of the BT from France. And after this BT got the clearance from the Environmental Protection Act, then in 1962, BT variety Krzysztocki has become highly popular and this has been actually mainly used for the commercialization. Then in 1990, so the first commercial transgenic crop and virus resistance in Tobacco has been developed by China. And in 1994, so there is genetically modified tomato crop was first came into existence in USA and as well as in France. And after that, in fact in 1995, so they got a first clearance to grow such genetically modified crops in the field, so that is how the field experimentation came into existence. And in fact, 1996 is a major the year where the USA started producing or using this BT cotton in a commercial scale and you know that in 2002, India also adopted the BT for commercial production. And the application of biotechnology, if you look at in agriculture, so I told you apart from the pest management, it has also been used lesser charge in the crop improvement where say for example, the improving the oil quality in the soybean and the canola has been achieved. Then some also been developed as a herbicide resistance such as in cotton, corn, soybean and rice. And I am going to concentrate mainly on this aspect where the biotechnological approach is been employed in managing the various pest in cotton, corn, rice, tomato and potato. There is also the crops which have developed against the virus resistance and to improve the quality of the product itself such as the slow ripening and the softening is been achieved in tomato and the melon crop. And of course, in a breeding program like male sterility is been achieved in canola and corn. So, in the beginning I told you one of the biotechnological approach is for the genetically engineering crops. So, there are several ways in which a gene from one organism can be transferred to the other organism. But here I am going to concentrate and highlight on two important aspect which is most commonly used or the methods which are most commonly used. So, in developing NGMO crops or gentically modified crops. So, with this slide, so I am going to explain those two how the gene transfer in the plant is going to happen a brief introduction of it. In fact, the gene transferring can happen in two ways through a biological approach and through the physical approach. In a biological approach, we are going to use an microorganism which is agrobacterium. So, which acts as a vector and carry the gene of our desire for incorporating into the plant. Whereas, in the gene gun method which is a physical approach where the gene of our desire is going to be bombarded into the plant system. So, to get it embedded into the genomic sequence of the plant. So, in order to achieve both these methods in fact, our first aim is to identify and isolate a desired gene. So, once you actually achieve this, so through the biological method what happens this gene is going to be inserted into the Ti plasmids and this Ti plasmid and along with this bacterium as a vector are going to be incorporated into the plant cell. And this Ti plasmid will moves into the plant cell and inserts this gene or the DNA into the plant chromosome. And once the gene of our desire will gets into the chromosome of the plant genomic sequence, then so the gene will start expressing it. Similarly, through the physical method if you look at it, once you identify the gene, next important thing is that you have to replicate the gene for several hundred thousands of times and these genes are embedded on the gold particles and these particles with a very high frequency will be bombarded into the plant cells where these genes will get embedded into the genomic sequence of the plant and the plant cell will start having this foreign gene into the genomic sequence. And once this is achieved as a third approach, so the method is that will start screening out the cells which are going to express with this foreign gene. So, other cells we are going to eliminate and this gene or the plant cell we are going to select it and this cell will be used in developing a complete transgenic plant, so through the tissue culture or through the various plant breeding sequences. Now in this way, so in fact several GMO crops have been developed, among this in fact if you look at the transgenic crops which are expressing the insecticidal genes, in fact the chrytoxins which is been produced by the bacillus thuringiensis will stand first where all these genes or the genes which are responsible for production of these toxins have been incorporated into the plant system. Apart from this, so there are also the genes which produce the various plant beta motiles such as flavonoids, alkaloids or terpenoids have also been used. Then the enzyme inhibitors, the enzymes plant lectins, then toxins from the predators also like the genes which are producing the toxins in scorpions and spiders are also been used and also the insect hormones. So, all these the genes which produces and which are of use to the pest management system have been used for developing a GMO crop. And we also do it the staking of genes in the sense, so one or more than one gene is going to be incorporated into the plant system, we call it as a gene pyramiding and so through that also we are going to try to achieve a multiple resistance mechanism. Just I would like to highlight the one a very popular and widely adopted the GMO crop that is a BT cotton, so we know that so BT cotton in India was started commercialized in during 2002 and since then, so there is a tremendous increase in the area production and productivity of the cotton in India. And because of the introduction of the BT cotton in India, so there was a tremendous export potential in the cotton has also been achieved. Now this table will indicates the various crops through which the various foreign genes have been incorporated especially the genes from the bachelors thuringiensis and we know the cotton. So, these are the genes which have been incorporated against the various pest mainly against the bullworms and so also the maize, tomato, the rice, potato, tobacco and the brinjal. And in fact this map will explains about the adoption of the biotech crops, so across the globe. And if you look at this, in fact the whole of the North American continent has adopted the biotech crop and majority of the South American countries and parts of the Africa and the entire Australia and majority of the Asian countries like India, China, Pakistan have adopted the biotech crop and in fact, so this has actually boosted the agriculture production to a considerable extent. Now what are the important requirements, so which need to be identified while producing the transonic plant. So, in fact the resistance should be controlled by a single gene, if that is the case then it will be very easy to handle because a simple single gene transfer into the plant we can achieve the what is called as the goal our goal. And the expression of the transfer gene should occur in a desired tissue at an appropriate time which is very important. So, for example the BT cotton we know that we have developed to get the resistance against bullworms and the expression of those toxins at the bull stage in the bulls and also in the flowers at a right stage is quite important. And this also a safer consumption that also need to be done that there should not be any ill effects on the non-target organisms. And another important thing is inheritance of the gene in the successive generation should be very stable especially in terms of varieties if you look at it these genes should get transferred to the next generation and also maintain the same level of expression. Then we also have the genes which are actually derived from the plants such as the protease inhibitors. The genes such as which are going to express the anti-metabolic proteins which will actually interfere with the metabolic activity of the insects have also been transferred. So, also the dietary protease inhibitors which affects the growth and development of the insects especially on the chewing insects been used. Then alpha amylase inhibitors have been used such as transonic tobacco plants expressing this amylase inhibitors. So, which has been derived from the wheat has actually resulted in a very significant mortality of the Lepidopteran larvae which has been experimentally proved. So, also the lectin compounds and some of the important biotechnological methods employed in the crop improvement I told about the genetic engineering method apart from that. So, various methods by which so the genetic engineering can be made. So, two important methods I told one is that is the bacterium based or the vector based as agrobacterium and the gene gun method. There are several other approaches are also there such as the electroporation, micro injection and RNA interface. In fact, RNA interface is nothing but so interfering with the gene of our interest to be get silenced because it is a silencing gene. So, that is also under process though no product has been developed so far, but a lot of research is going into that. Then the genetic engineering for the predators and parasites this is also very important. So, in fact, it is not only to sustain the crop against the past in also to make the natural enemies of these insects to be quite sustainable in the ecosystem and take care of the past we need to look at the genetic engineering or the biotechnological approach in the natural enemies also. In that way the genetic improvement of the predator and parasitoids especially against resistance to the pathogens. So, that the population of these natural enemies should not crash down resistance to pesticides lot of pesticides we use and in fact, the natural enemies are the first which are get affected. So, if we develop the genetically modified the natural enemies to resist against these insecticides then that would be quite useful. Then adaptation to the different environmental condition then the natural enemies to have a higher fecundity and also a good ability for the horse seeking and these are the areas where the biotechnology can be employed. Then how this biotechnology is can be potentially integrated into the integrated pest management. So, you can see that the biotechnological approach is quite effective as there is a low toxicity of protease inhibitors and Bt endotoxins are used against the conventional insecticides. So, you know that how much amount of the insecticides and these Bt were going to dump in if you look take it as a spray or the application, but a simple gene transfer is going to take care of it and all these toxins have gotten very good expression in the different parts of the plant and they also provide protection to those plant parts which are difficult to be treated with the insecticide and we do not have any kind of a drift problem or a ground water contamination like we get in a conventional insecticides. They are safer to the non target species including human beings and they also eliminate the problem of shelf life because they are going to build the plants and they will continuously express and the inbuilt resistance to the various insects is quite minimum. But still we do have certain limitations or the risks which we can say associated with the biotechnological approaches such as the human and animal health is of a concern because a long term study need to be conducted with respect to the toxicity and the food quality and the allergenicity of these GMO crops in the environment. And the risk for agriculture like loss of biodiversity this is one which need to take care and alternation in the nutritional level and the development of resistance is another two important areas to be taken care. And risk for the environment there is a persistence of gene unpredictable gene expression then impact on non target organisms or all needs to be studied and also the risk for the horizontal transfer in the sense like if it is an insect starts developing resistance to a particular gene then you should not immediately start developing the resistance to the other related genes. So these are the some of the important aspects which we need to actually take care. So while we are actually getting into the biotechnological approach. So in this class so we studied about the important biotechnological approaches which can be employed in pest management system. Thank you.


Hello, and welcome to this presentation of the STM32 voltage reference buffer. It covers the main features of this block, which creates an on-chip reference voltage. The VREF buffer embedded into STM32H7 microcontrollers provides a stable voltage based on an internal band gap reference for use by both the analog to digital and digital to analog converters. Its output voltage is programmable from 1.5 volts to 2.5 volts. This output voltage can also support external loads up to 4 milliamps. External bulk and bypass capacitors are required when the internal VREF buffer is used. A calibration mode enables better accuracy on the output voltage for the application. Applications can benefit from this on-chip voltage reference as it eliminates the need for an expensive external standalone reference voltage IC. For space constrained systems, it is common to use the analog supply as the reference voltage. By using this VREF buffer instead, it can create a stable voltage even if the analog supply is changing. For example, when the VDDA supply comes from a battery output. The VREF buffer is active in the following power modes. Run, Sleep and Stop modes. In standby mode, the VREF buffer is powered down and it must be reinitialized afterwards. This table shows some performance parameters for the VREF buffer. In Run mode, the VREF buffer can work from 2.4 to 3.6 volts for a 2.048 volt output and 2.8 to 3.6 volts for a 2.5 volt output. The quiescent current is very small even with a 4 milliamp output current. It is possible to disable the VREF buffer when it is not being used. It can be available again 500 microseconds after it is re-enabled. The analog to digital and digital to analog converters use this VREF buffer output. Please refer to training modules for these peripherals for additional information.


The House of Representatives on Tuesday inaugurated its Artwork Committee on Daily Fuel Conception after the Speaker, Honourable Femi Bajabiamila, announced a 16-member committee on Wednesday, 26 January 2022. The mandate of the committee, as stated by the Speaker then, which was highlighted by the newly inaugurated Committee Chairman, is to determine the actual costs and volume of daily consumption of petrol, and to also know the state of the nation's four refineries. The committee is expected to engage experts in the sector, transport operators and stakeholders to enable it to come up with detailed findings, trust as the government in coming with a solution to the subsidy or no subsidy question. The committee has eight weeks to turn up its report. I'm personally delighted and grateful to the House for finding us worthy to be appointed as members of this committee and for selecting very experienced, active and hardworking members of your calibre and finding me worthy to chair the committee. Today's meeting is very important and key as our first and agenda-setting meeting for the committee. The Secretariat has prepared a draft work plan indicating possible programs and activities for our consideration, input and adoption. I therefore urge you all to consider the draft and make your input while I look forward to a very fruitful deliberation.


What's up everyone? It's your girl Kenzie here from Layton Sports Cards and I'm ripping a personal for Jayman L We've got two 2022 top Star Wars chrome black hobby boxes. All right. Thanks again Jayman for hopping back in best of luck It's more Star Wars Get everyone we are ripping here till 3 p.m Eastern we got about what two more hours and then Sam will be live starting at five for some group breaks tonight So mark how's it going? Got Bush Bush Bush One thing above nice. You got Chewbacca and green ray nice one there That is 72 of 99 on the ray. Good. Good to hear Glad to hear any fun weekend plans. Just hanging out Do we have here a Randzar Malk? Mark Boone Jr as Randzar Malk That's cool. Nice hit there for you Jayman solid first box box number two Empty Go to the Hornets game. Nice. That's cool. Who do they play? Got Django Fett. Hey, so Bulba Ugly looking thing and refractor of commander Cody Commander Cody refractor that is 43 of 199. Oh versus magic Nice is that 1539 is that here in Orlando? Are you in Charlotte? And you're in case card. We've got a ASU ASU Christopher Shawn as ASU Cool. It looks like the anime Star Wars Nice one there. Alrighty Jayman that'll do it for your two Star Wars boxes Thanks again for hopping back in and we'll get these right out to you