Okay, this seems to work. Hello and welcome to the first day of regular conference talks. And now that we have split in all these different tracks, you should make sure that you check the schedule and choose the one that you want to watch later in the day. Here in the Optiver room, I'm really happy to welcome an experienced speaker who has given other talks at previous EuroPython, and I had the pleasure to introduce him myself during one of the real live ones. Let's welcome Sebastian Wytowski. Thank you very much, Martin. I'm glad to be back online at EuroPython. Yeah, online. It's more fun to meet in person, but I think this will have to do. You're calling in from Poland? Yes, that's right. Okay, and from my home office? Yes, from the home office. For those who don't know Sebastian, he's a Python trainer, and you should check out his own page, which you can find a link to in the EuroPython schedule. What are you going to talk to us about today? So I'm going to talk about pretty basic but fundamental topic, so how to manage Python versions and how to manage dependencies of your projects. Okay, so are you ready to go? Yes. I'll be collecting questions. If anybody has any questions, please type them in the matrix, and if we have time, we'll do a Q&A. But now let's give the stage to Sebastian. Thank you. All right. Hi. My name is Sebastian Wytowski, and I'm a Python consultant, freelancer, and trainer. As part of my job, I join different teams and work on different projects. And as I work on those different projects, I notice that they often suffer from one of two problems. They are either over-engineered or stuck in the 90s. The over-engineered ones involves jumping on every shiny new toy or tool that you find on the first page of Hacker News. And then everyone gets excited because it's exciting to work with something new. What is not fun is when this tool gets deprecated. Maybe its creator got bored and they stopped working on it. So now you have to either fork it and maintain it yourself, or you have to replace it. On the other hand, we have projects that are still stuck in the 90s. Some people think that because it was fine to manage everything using bar scripts back then, it's fine to keep using bar scripts today.  Okay, writing them from scratch is not that bad. Maintaining a bar script that someone else wrote and that person is no longer at the company is much worse. And I don't mean that bar scripts are bad. They are actually pretty good for simple things. It's just you should use tools that are more suitable for the task at hand. So neither of this situation is good. You should update your tools, but at the same time you should choose those tools that are proven and you know that they will be around for the next few years. So that's why I've decided to make this presentation. I want to show you some useful Python tools that will make your life easier, tools that I recommend to my colleagues and to my clients. We all talk about things that a lot of beginner programmers struggle with at some point. So first, I will show you how to install different Python versions on your computer using a tool called PyEnf. Next, I will talk about Python dependencies. I will explain you what are virtual environments, how they work and why we need them if you're working on multiple Python projects. I will also compare the built-in VEnf module with some external tools like virtual and wrapper. And finally, we will talk about tool called PIPX. This is a great tool if you want to install some package globally, but at the same time you want to isolate it from other packages on your computer. And before we move on, I really want to highlight one thing. Those are all just tools. And there are a lot of other tools out there that do similar things. If you're using something else, that's great. My goal here is not to convince you that those are the best tools. No, I just want to show you how to solve some basic problems when you're configuring your development environment. If, for example, you are already using Konda and you're happy with it, then the first two bullet points on this list are already solved for you. And that's perfectly fine. But if you don't know what to use, let me show you some recommendations. So, first, let's talk about installing Python on your computer. Depending on your operating system, your computer might already come with some version of Python. If you're using macOS, then it comes with Python 2.7. If you're using Linux, then the Python version depends on the distribution that you're using. And in Windows 10, you don't have any Python installed. Let's say that your operating system comes with some Python version. This Python version already installed on your computer is often called a system Python. And no matter what system version of Python you have, I strongly suggest that you don't use it. In many cases, as we saw, for example, with macOS, it's terribly outdated. Python 2.7 is no longer supported by the core developers since a long time, so hopefully you're also not using it. You might be tempted to upgrade the system Python to Python 3, but you probably have some programs on your computer that require Python 2.7. You would be surprised how many programs or even parts of the operating system still require Python 2.7, at least on macOS. If you upgrade system Python, those programs will stop working. So, if you change the Python version that comes pre-installed on your computer, you risk that your computer will stop working. And that's not fun. I have done this in the past when I didn't know much about programming or operating systems and I had to reinstall the whole operating system from the scratch. So, my advice here is to leave the system Python alone and pretend that it doesn't exist. No matter what operating system you have, you will need to install Python. And there are many different ways how you can do this. You can go to the python.org website and download the installer for your operating system. You can use the package manager like homebrew on mac or apt-get on linux. And you can even compile Python from the source files. However, my favorite way of installing Python that I have been using for already a few years is to use a tool called pyenv. Pyenv is a tool for managing Python versions. You can use it to easily install new Python version on your computer and to switch between those versions. It might not be a big deal if you're working with only one Python version all the time, but, for example, if you're working with multiple projects, then if they require different Python versions, this tool is extremely useful. For example, when I do some Python tutorials or courses, I try to use the latest version of Python available, but when I work with clients, usually they don't use the latest Python version, so I need to have the old versions available as well. I've been using Pyenv for years and it works very well. If you work with some other programming languages, you might recognize similar tools that work in exactly the same way. So, for example, in Ruby there is rbnv, in Node.js there is Node.nv, there is also go.nv for go and so on. While pyenv will work for macOS and Linux, if you're using Windows, check out the pyenv win. It's a port of pyenv to Windows. It might not have all the features that the standard pyenv has, but it has all the essential ones that I will talk about. But again, if you're a Windows user and you're happy with conda, then there is really no point in switching from conda to pyenv. One of the things that conda can do is to create virtual environments with different Python versions, which covers two out of three tools from the stock. So, you can install pyenv with homebrew, you can clone it with Git and then manually set up a few things, or you can use pyenv installer tool. And while this last option requires you to download a bar script from the internet and run it in your terminal, which is a big security no-no, it's actually very convenient. It will install not only pyenv, but also some additional plugins. For example, pyenv doctor that you can use to verify that your pyenv installation is working fine. Once you have pyenv installed, you can use it to install new Python versions. To see a list of all the versions that you can install, just run pyenv install dash dash list. And as you can see, there's a huge list of different versions. At the beginning, we have the standard C Python versions that start with a number. And then we have anaconda, mini-conda, or pypy, and so on. So, those are all the different types of Python that you can install with pyenv. If you ever wanted to install, for example, pypy, now you can very easily do this. Once you select a version from this list, type pyenv install in the version number and go make yourself a coffee. I mean it. The installation usually takes a few minutes. There are some additional libraries like OpenSSL that you have to pre-install to make the installation process faster. So, if you don't have them, pyenv will try to download them each time you install a new Python version. So, I suggest you take a look at the GitHub repo to see what prerequisites are recommended. So, once this is done, you can run pyenv versions to see if this new version is installed correctly. We can see it on the list, so that means we are all set. Now we have to tell pyenv to use that version. And for that, we have to choose one of three different levels at which we want to change Python. We have global, local, and shell. So, what do they mean? Well, nine out of ten times you will probably want to change the global Python version. And to do that, you just have to run pyenv global 3.9.0. And from now on, you are using Python 3.9. Then we have pyenv local. So, imagine that most of the time you're working with Python 3.9, but you have this one project on your computer that still requires Python 3.7, and for some reason it won't work with any other version. So, instead of changing the global Python version to 3.7 each time you want to work on this project and then changing it back to 3.9 when you stop working on this project, you can set up a local Python version. This is where the pyenv local command comes in. You can run pyenv local 3.7 and it will set the version for the current folder and all its subfolders. So, whenever you go inside this folder or any of the subfolders of this folder, pyenv will automatically detect that you have a local version and it will change the Python version. And when you go out of this folder, it will change the Python version back. That's also very handy when you work with multiple projects and each of them requires a different Python version. So, instead of changing the global Python version back and forth, you just have to run pyenv local in each of those folders. And when you go inside of any of them, pyenv will automatically change the Python version. And finally, we have pyenv shell that changes the Python version for the current shell session. You might use it in a situation where you want to temporarily change which Python version you are using. For example, maybe you want to run some Python 2 code. So, you just run pyenv shell 2.7 and now you can use Python 2. But once you open a new session in a terminal, you are back to using the previous version of Python. So, that's how you can easily manage Python versions on your computer. Now, let's talk about dependencies of your project. Let's start with peep. Peep is a package manager for Python. Whenever you want to install a new package, all you have to do is to run peep install and package name. However, peep has one big problem. Whenever you ask it to install a specific version of some package, it will uninstall the previous versions from your computer and install the one that you asked for. Let me show you an example of what I mean.  You start by installing the latest Django version by running peep install Django and this installs Django 3. Everything works fine. You build an awesome website.  So, maybe you can give me a hand with my Django website. As it often happens with clients, they are not using the latest Django. They are still running, let's say, Django 2.2. So, you install that specific version by running peep install Django equals equals 2.2. And peep does what you ask for and after a few seconds you can start working on your client's website. So far, so good. But later this day, you discover that there is a bug on your personal website, the one written in Django 3. So, you quickly fix this bug, but when you try to test it, you get an error message saying that Django 3 is not installed. I mean, we just installed it yesterday. Where did it go? Well, when we told peep to install Django 2.2, peep first checked if we already have Django installed and we did. It's just it wasn't the 2.2 version. So, peep uninstalled the version that was on our computer and installed the correct one. So, we just run into a problem with dependencies management. We have this problem because peep installs all Python packages inside the side packages folder and puts each package into a separate folder named after that package. So, Django 3 is placed inside side packages slash Django, but when you want to install Django 2, it will also be placed inside the side packages slash Django. So, peep has to first remove what's inside the Django folder and then install a different version of Django. If you only work with one Python project on your computer, then you're probably not affected by this problem. But sooner or later, you will need to install different versions of some packages and you are going to run into issues with peep uninstalling some previous dependencies. The problem with peep is that because we had the problem with peep because it installs packages in the same folder. So, how about we tell peep to temporarily install packages into a different folder and then we tell our Python interpreter to use packages from that other folder? Well, that's exactly what virtual environments does. Virtual environment is a folder that contains a Python installation and any additional packages that you install. When you activate a virtual environment, two things happen. First, you tell peep to install any new package in that new folder and then you tell Python interpreter to use packages from that folder. Now, if we try to install some Python packages, peep won't uninstall the previous versions from your computer because it no longer knows about these global site packages. It's using the site packages folder of this specific virtual environment. So, how does it work in practice? Well, first we need to create a virtual environment. Python has a built-in module called VNV that you can use to manage virtual environments and have to install anything. We create a new virtual environment with Python minus MVNV and then the name of the virtual environment. In this case, I'm creating a folder called .vnv inside the current directory. This VNV or .vnv is a common convention for naming folders with your virtual environment. So, whenever you see a project that has a folder like that, then you know that inside you have the files for the virtual environment and you can have to check what's there. But it also has another benefit. Some code editors, like PyCharm or VS Code, will automatically detect this folder in your project and recognize it as a virtual environment. So, when you open a project like that in PyCharm, it will automatically start using this virtual environment. Okay, so we have created a virtual environment. Now, we have to activate it. Inside our VN folder, we have the virtual environment directory. And there we have the activate script. Since this is a bar script, we have to run it with the source command. Of course, if you're using a different shell, there are other files that you can use. If, for example, you're using Windows, there is also activate.bat. Once you activate it, you should see a difference in your terminals prompt. It should now display the name of the virtual environments in parentheses. If you see something like this, it means that a given virtual environment is active. And now you do everything as you would normally do when building a Python project. We can install a package with PEEP and it will be installed inside this virtual environment. Or we can run a Python script and it will have access to Python packages from this virtual environment.  When you call the activates, you will see all the changes that activate did. So you will be back to using the global Python version and global PEEP packages. A typical workflow with virtual environments involves creating one virtual environment for each of your projects. So if you're working on two Django projects, as in our example, you first create one virtual environment, you activate it, you install Django 3 and you work in it. And then you create a different virtual environment, you install Django 2.2 and you work on that other project. And VNF module is perfectly fine for managing virtual environments, but I want to show you another tool that I have been using for a very long time that is called virtual and wrapper. And it comes with a lot of cool features that makes working with virtual environments even easier. You can install it with PEEP and it works on Linux and macOS. For Windows users, again, you have to use a slightly different tool called virtual and wrapper that works pretty much the same, but as I said before, if you're happy with KONDA, then you can stick with KONDA for managing virtual environments. So one main difference between VNF and virtual and wrapper is that virtual and wrapper stores all your virtual environments inside your home folder in a .virtualNFS folder. And it also provides you with some convenient methods for managing virtual environments. So you can create a new virtual environment using a command mkvirtualNFS. So we can just type mkvirtualNFS.jango2up and this will create a virtual environment inside this .virtualNFS folder in the home directory. And if you want to activate a virtual environment, you just have to type workon.jango2up You don't have to type the whole path to this activation script. VirtualNFS will figure out where is the activation script for specific virtual environments when you just give it the name of the environment. And if you forgot the name of the environment, you can just run lsvirtualNFS and this will print you the list of all the available virtual environments. With VNF, it's impossible to get the list of all the virtual environments because, well, VNF doesn't keep a track. With virtualNVrapper, since all of them live in the same folder, you can easily get that list.  So you're probably wondering which one is better. Well, both tools are great and it really boils down to how you like to use your virtual environment. I like virtualNVrapper mostly because I don't want to type this whole source vn slash bin slash activate and then, of course, in half of the time I mean like some subfolder of my project and I got an error saying like vnfolder doesn't exist so I have to figure out what's the path to the activation script. Now, I just want to type work on name of the virtual environment and be all set. I also like to create virtual environments that are not connected to any specific folder any specific project. For example, I have one virtual environment for a bunch of data science libraries that I use each time to start Jupyter with Pandas or NumPy. Also, virtualNVrapper has some interesting functions. For example, you can create a temporary virtual environment that will be deleted when you deactivate it which is quite handy when you want to, for example, test some Python package. But the vnf module also have some benefits. For example, if you store the virtual environment in the same folder as your project, it will be detected by your code editor. And when you delete this project the virtual environment will be deleted as well, so since all the files are stored together. And vnf is actually built in module so you don't have to install anything. All right, so we covered how to manage Python packages in your project. How about global packages on your computer? Some tools are much more convenient to use when you install them globally instead of installing them for each of your projects. For example, we have the code formatter black, the code linterflake8, or even the virtual and wrapper tool that we just saw. We want to use those Python packages outside well, across of all the projects or even outside of the project. For example, we would use virtual and wrapper to actually first create a virtual environment before we start working on a specific project. But then again, if two different tools require different versions of the same dependency, we have a problem. You install one tool and everything works great. And then you install the second tool, it changes some dependencies of this first tool and then the first tool stops working. We could install each of those tools into a separate virtual environment, but that's a lot of hassle to use it like that. Each time you would have to activate it, run some commands and then remember to deactivate it. I mean, you can do this but it's a lot of typing and generally it's a waste of time. We can easily solve this problem using a tool called PIPX. PIPX installs Python packages into separate virtual environments, but at the same time those packages act like if they are installed globally. So you don't have to manually activate any virtual environment to use them. So how does it work in practice? Let's say I want to install Black to format some Python code. I run PIPX install and after a few seconds I get a success message saying that Black has been installed and now I can use those three commands Black, BlackPrimer and BlackD. Now I can use Black as if it was installed with PIP. It doesn't matter if I'm inside a virtual environment or not, I will always use this global Black package. I don't have to activate anything. I just run Black and it works. If I want to install a different version of Black inside a virtual environment I can always do this. And this Black from inside a virtual environment will take precedence over the global Black that as long as I'm inside a virtual environment. What else we can do with PIP? We can list with PIPX. We can list all the packages to see what commands they offer with PIPX list. We can uninstall the package and this will also clean up the virtual environments for it. We have one command by running PIPX upgrade all and we have one very useful command called Inject. It will install a PIP package inside a virtual environment of another package. You might use it, for example, to install some pipest plugins. So let's say you want to add a plugin called pipest.cof to generate the coverage report for your code. We can't just run PIPX install pipest.cof It will install pipest.cof in a separate virtual environment and pipest that is like in a yet another environment won't know about this plugin. So we have to call pipx.inject and this will install pipest.cof inside the same environment where the pipest is installed. And that brings us to the end of my presentation. So let's quickly summarize what we saw. First, use pyenf to install new Python versions. It's really easy to install new Python versions and switch between them. Then use virtual environments when you work on different projects and you want to isolate their dependencies. Always make sure to create a separate virtual environment for each of your projects. Python comes with a built-in vnf module but if you prefer a tool with some additional functionality, virtual and wrapper is a really good choice. And finally, if you want to install some tools globally, you can use pip outside of a virtual environment but you risk that if there is some version conflict, your packages will break. So a much better idea is to use a tool called pipx that will install each package into a separate environment but for you there won't be any difference in how you use them. And that's it. Thank you. Okay, thanks very much, Sebastian. We've had a lot of activity in the conference one up to the hallway. So I'm just going to ask you, we have two more minutes, two of the questions we got. So the first one we had is how would you compare pip virtual events against Kondamamba, especially considering that Kondamamba have a lot of extra features compared to the first ones. Yeah, so I don't know about Mamba but I'm assuming it's like alternative to Kondamamba. So that's a very good question and half of it is answering the question. Kondamamba has a lot of features. So if you're looking for one tool to do all of it, it's a really good choice. I like PyEmp because for me it's more of this Linux style philosophy of a tool that does one thing and does it good. So PyEmp basically just modifies your path to use some different folder where you store different Python versions. So it's very easy for me to understand how it works. It's very easy to uninstall it if I don't like it and so on. Okay. And another question is that's something I ran into myself as well. How do you run a virtual environment without activating it? So I'm assuming the question is about how pipX does it. I think it's there was a longer discussion about this. Just like if you want to run something with this and you don't want to activate it and there's a longer discussion about this, basically you can just go into the directory and start the Python that is in there to avoid the source command. Yeah, basically you can do what the source command does manually by finding the code. By starting Python, yes. And if you for example have to automate something then this is an option instead of writing the source command. Yeah. I remember I had some issues with that because I'm using fish shell and then Python got updated on my computer and then some hard coded paths to Python environments broke. You can do this, I don't recommend it. Okay. Thank you very much for this and if you have time please go over to the matrix where there might be some other questions that you can answer. But here we have to continue with the next talk. So after a brief interruption we will probably start the next one. Thank you so much. Enjoy the rest of the conference. Bye.


President Mohammad Buhari has stated his readiness to sign the Electoral Act Amendment Bill after the National Assembly makes the necessary adjustments. He, however, said such changes must include the addition of consensus candidates in direct primary options to the mode of selecting a candidate for an election as against the initial direct mode as the only option to conduct primaries by political parties. The President made a disclosure and an exclusive interview with Channel's television. Hello. Hope you enjoyed the news. Please do subscribe to our YouTube channel and don't forget to hit the notification button so you get notified about fresh news updates.


And now for your U.S. Army Europe spotlight. I've started volunteering to spend more time with my son. Staff Sergeant Laquan Smith arranged safety and C.O. with the Joint Multinational Training Command still volunteers at Vilsex Child Development Center. He also gives his time to five other organizations. One of them is the Army Community Service where he teaches a class called 24-7 Dad. It shows men how to communicate not only verbally but non-verbally with their spouses and their children. He's a great instructor. They feel comfortable being able to talk about different things in that class that they probably wouldn't talk about otherwise. He says his volunteer work doesn't detract from his life but enhances it. I plan everything around work and my family. I wanted to help the man's spouses that are at home and I wanted to show my son that responsibility and time management, it goes a long way.


Hi friends, welcome back to my channel and a very special welcome if you're new here. My name is Jen, I'm a certified weight loss and nutrition coach and I'm on WW personal points. It's Monday, so it's meal prep day. I'm really excited about this week's recipes. We have breakfast, lunch and a dessert that is so summery, so summery.  Make sure you're subscribed and your bell notification is turned on because I do a meal prep every single Monday and I do upload five videos a week. Check out the description box down below for nutrition coaching, where I offer personalized to you macros and calories, as well as one-on-one coaching if you would like to chat with me directly. Links, discounts to all my favorite things as well as my Facebook group are down in that description box. So we have some cooking to do, three really good recipes to make, so let's jump in. For my breakfast this week, I am making chocolate protein muffins. It's really important for me to start my day off with a good bit of protein and I've been craving kind of an ooey-gooey chocolate muffin, so I'm really excited to share this recipe with you. So let me show you what is in our chocolate protein muffins. First you're going to need some salt. You guys already know I'm obsessed with these gravity-fed salt and pepper shakers. I'll make sure I link them down below. They're from Amazon. They're just super, super cool and easy to use. You'll also need a cup of milk of your choice. I'm gonna use Carb Master milk. You could also use almond milk, cashew milk, I mean really any milk. You'll also need some chocolate protein powder. So I'm going to be using mine from Integrated Nutrition. I will make sure that I link this down below for you. I find that this one is really, really good for baking. The other one that I really like is Devotion Brownie batter, but I'm out of devotion right now. It's a little bit easier to get your hands on the Devotion, so I'll link that for you as well with 10% off. You'll also need some rolled oats, not that Greek yogurt, unsweetened applesauce, cocoa powder, and then peanut butter or nut butter of your choice, and you already know. You already know it's American Dream Nut Butter all the way for me. This is my favorite nut butter ever. It's lower points, lower calorie than other nut butters, and it's filled with good stuff like mix-ins. So this is the Mason's Caramel Hot Fudge Sunday Cashew Butter. This has nuts and caramel and fudge. It is so incredibly good. So I think this will pair really nicely with these chocolate muffins. I'll also link American Dream Nut Butter down in the description box for you with a 10% discount. Every flavor is a million out of 10. You'll also need baking powder and some eggs. So to get started on our muffins, we're going to add two cups of rolled oats, one teaspoon of baking powder, salt, two tablespoons of unsweetened cocoa powder, and three scoops of protein powder. Again, I do recommend the Devotion Brownie Batter. It's actually more affordable and easier to get your hands on. This one is really, really hard to find. I don't know if the company's no longer around. I'm not sure. I got this at the 99 Cent Store. It was $5.99, and it's a really good protein powder. It's just, again, really hard to find. So I will, of course, link it along with Devotion down below for you, and then we're going to mix that together really well. Now we're going to add in one half of a cup of non-fat Greek yogurt and two eggs, and then gently stir that together just until combined. Then we're adding one cup of milk, two tablespoons of unsweetened applesauce, and this is in place of any oil, and then we're going to add one third cup of the American Dream Nut Butter. And we need to make sure that this gets mixed completely. I sprayed my muffin pan with some non-stick cooking spray. Now I'm scooping in my muffin mix, about three quarters of the way full, or to the top, if you want to just make sure you're getting 12 muffins total. Our muffins are going into a 350 degree oven for 15 to 18 minutes. I just pulled out the chocolate protein muffins. These smell so good. They actually smell like brownies, cooking in my house. So that makes me really excited. So I plan on having one of these for breakfast. I may have some eggs with it, some fruit, but this is going to be a big source of protein for me for breakfast. So I'll go ahead and put points, calories here on the screen for you. The types of muffins you can make with this recipe are endless. You just change up the protein powder and you can make a ton of different flavors. So I'm really, really excited for these. For my lunch this week, I was originally going to make a turkey ranch wrap, and then I realized that I had eaten all of my deli turkey. So I'm going to do a tuna ranch wrap and show you a really fun hack to make tuna salad a lot less points and calories. This is a great way to get in lots of protein, very low carb, really healthy lunch. So let me show you what's in our recipe. First you're going to need some one point low carb tortillas, feta cheese, nonfat Greek yogurt, cucumbers, ranch seasoning, a couple of cans of tuna fish, or you could do any deli meat, turkey ham, whatever you would like, baby spinach, and a bell pepper.  So now I'm going to make up my tuna salad and I'm going to show you a really great way, really flavorful, yummy way to make tuna fish or tuna salad that's way less points and calories and even gives you an extra bit of protein. So instead of using mayo, use nonfat Greek yogurt. You're not even going to notice the difference with the seasoning we're going to add. So what I have here is five ounces of nonfat Greek yogurt. Now we can always add more if we need to, but I am going to mix that in a little bit with my tuna. We're going to add one tablespoon of ranch seasoning. Now let me tell you, that is what is really going to be the game changer in this is it's going to take the place of mayo and then we're adding in that ranch seasoning and it just adds a ton of flavor where you don't even miss the mayo but you're getting in lots of extra protein with the Greek yogurt. I think I am going to add just a little bit more, maybe closer to seven ounces of the nonfat Greek yogurt and there's our tuna salad. It tastes really, really good and again, saving on points and calories. You could also add some diced up pickles or relish in here as well. So to assemble the wraps, it's super easy. We're going to put about three tablespoons of the tuna mixture on our wrap and then I like to spread that down the middle. I want to stay away from the edges just because when we fold it up, I don't want all of the goodness seeping out of the edges of the wrap and then we're going to add some baby spinach. You can do as much as you want. Again, kind of focusing that on the tuna mixture and then I love cucumbers in my wraps for that nice added crunch. Some bell peppers. And then lastly, we're going to do one tablespoon of feta cheese and then we're simply going to roll that up. I like to kind of roll mine up into similar to a taco shaped. That way I can fill it with all the veggies and all the goodness. I just kind of eat it like a soft taco. That's going to be my lunch for the week. I'm just going to make one up every day. I did slice up my bell peppers and my cucumbers and put them in storage containers as well as my tuna fish. And then I'll just measure out my one tablespoon of feta cheese and then top it with my spinach. I don't know what I'll have with this. Most likely some type of crunchy snack like a protein puff or some chips or something with that, maybe some fruit. But this is packed full of protein and that tuna salad way less points and calories using the Greek yogurt and the ranch. For dessert this week, I am making an ice box cake. I'm really excited for this. There is only one, two, three, four ingredients in this recipe. It doesn't require turning on a stove which is great for the summer months. This would be a great cookout, barbecue, family friendly, easy, easy dessert recipe. So let me show you the four ingredients. First you're going to need graham crackers, two boxes of sugar-free pudding. As I mentioned in my grocery haul I wanted to do a lemon ice box cake but I cannot find sugar-free lemon or even regular lemon pudding mix anywhere. So I decided to go with sugar-free banana cream, a tub of light cool whip and then almond milk or milk of your choice. So the first thing we're going to do is add two and a half cups of milk to a large bowl. I do wanna say that you may wanna go with Fairlife, Carb Master or low-fat milk instead of almond milk. Sometimes almond milk can be kind of weird when trying to make pudding. And then we're going to add the two packets of sugar-free banana pudding mix and then mix that together, whisk that together for about two minutes. And then we're going to fold in the eight ounces of whipped topping. So two and nine by 13 baking dish, we're going to take graham crackers and make a single layer on the bottom of the baking dish. So it's just about an entire pack of graham crackers. There's maybe one and a half graham crackers left. Then we're going to add half of the pudding and whipped cream mixture right on top of that first layer of graham crackers. Then we're going to add another layer of graham crackers and then add the other half of the pudding mix. So here is the ice box cake. This looks so good. Now the original recipe wants us to add a third layer but I'm trying to keep the points decent and still have a good serving size of the ice box cake. So I'm going to stop at the two layers. This needs to go in the refrigerator for about four hours to set. So I just pulled out the ice box cake. It is all set. What also happens during the setting process is the graham crackers get nice and soft. So it is the perfect, perfect dessert. It's kind of hard to see the layers even though I did use a clear baking dish but this is going to be such a refreshing, like I said, perfect, perfect summer treat. I'll go ahead and put points, calories and serving size here on the screen for you. Thank you for joining me for this week's WW Meal Prep. I hope you are as excited about these three recipes as I am. I can't wait to eat them all week long. As always, along with all of the other recipes that I've shared here on my channel, you will find them on my website which is linked down in that description box. Along with nutrition coaching, links and discounts to my favorite things and my Facebook group. Don't forget to come on over, join us there. We would love to have you. Thank you so much for watching. Happy Monday. I hope you have an amazing, amazing week and I'll see you next time. Bye.


instead of technology working in the electronics department as a associate professor. In this video lecture, we are going to discuss on Maxwell's equation in a part 2. Learning outcomes at the end of this session students are able to derive the Maxwell's equation in integral form and in a point form using the Gauss law and represent the Maxwell's equation in different field also able to solve a related problems. Let us recall what we have discussed in a part 1. Maxwell's equations are nothing but describing the relationship between the changing electric field and magnetic field. Maxwell's equations are extensions of the work of Gauss law, Faraday's law and Ampere's law. What the Gauss law states in an electric field that is a max electric flux passing through any closed surface is equal to the total charge enclosed by that surface that is psi is equal to q where psi is nothing but an electric flux and q is a charge enclosed by that surface. But what is psi?  When we substitute this psi and q in equation 5, the equation will reduce to this part and this equation number 6 is nothing but a Maxwell's equation in integral form derived from the Gauss law. Now let us see the Gauss apply the divergence theorem to the RHS sorry LHS in the equation 6. When we apply the divergence theorem to the right hand side then DDS will be replaced by dow del dot d bar over the volume and when we substitute that it will be equating the both the sides are equating over the volume and that equating that will be reduced to the del dot d bar is equal to rho V which is nothing but a Maxwell's equation derived from the divergence theorem in a point form. Now Maxwell's equations in a deriving from the Gauss law which is stated in the magnetic field this with the statement of the Gauss law in magnetic field is the magnetic flux passing through any closed surface is always equal to 0 which is mathematically given by psi over the magnetic field is always equal to 0. But what is psi?  The magnetic flux density is equated to 0 over the surface this will give you the Maxwell's equation in integral form derived from the Gauss law. When we apply the divergence theorem to the LHS integral over the surface B DOS will be nothing but integral over the volume B del dot B bar dV and when we equate them to the 0 then del dot B bar will be equal to 0. This is a Maxwell's equation derived from the divergence theorem in a point form. Now we are observed the Maxwell's equation in integral form as well as in a point form. The Maxwell's equations in the integral form governs the independence of certain field and source quantities associated with the region in the space, surface and volume. And Maxwell's equation in a point form relates the characteristics of the vector field at any given point to the another and the source density at that point which is represented by equations in Faraday's law and Gauss law and M.P.S. law. If we summarize all the equations which we have studied in the Maxwell's equation part 1 and part 2 are summarized over here. These are the column 2 represent the Maxwell's equations which are in the integral form and Maxwell's equations in a point form. When we this we are setting as a Maxwell's equation in general form which are derived from Faraday's law, M.P.S. law, Gauss law in electric field, Gauss law in magnetic field. When the Maxwell's equations how this Maxwell's equations are represented in a free space. In a free space sigma and rho v is equal to 0. Now when we replace the sigma and rho v in the previous general equation then these 4 equations will be replaced. This is a representation of the Maxwell's equation in free space by considering sigma and rho v is equal to 0. Another table the Maxwell's equations which are in a static field for this in the general equation we are replacing the dow by dow t is equal to 0. As we are saying it is a static field that is why dow by dow t will be equal to 0. When we replace the dow by dow t which is there in the general equation then these 4 terms will be replaced. This table represents the Maxwell's equation in static field. Now Maxwell's equations in harmonically time varying field that is dow by dow t is equal to j omega. Wherever there is a dow by dow t we will replace it with the j omega where omega is nothing but a 2 pi f. Now the Maxwell's equations after substitution dow by dow t is equal to j omega these 4 equations are been replaced. This table shows the Maxwell's equation in harmonically time varying field. Now pause the video let us solve this problem consider sigma is equal to 0 epsilon is equal to 2.5 epsilon 0 mu is equal to 10 mu 0 where epsilon 0 is 8.85 into 10 raised to minus 12 and the value of mu 0 is 4 pi into 10 raised to minus 7. Now determine whether the following pairs of the field satisfies the Maxwell's equation. Substitute the value of e bar and substitute the value of h bar which are the equations we are seeing in the general form. Yes this pairs of the this pair satisfies the Maxwell's equations. When we substitute these two equations in the then first part will also be satisfied second part will be that is why these equations will satisfy the Maxwell's equation. These are the references which are referred for this chapter. Thank you.


I'm trying not to hold my arms up too far because I don't think I shaved out of my arms. Hi guys, welcome back to my channel. Thanks so much for tuning back in for another video. In today's video I'm going to be sharing with you guys some of my favorite natural hair essentials. These are the items that are important to me. They are my favorite and I'm consistently using them all the time. These are the items that I use the most. These are the items that I'm looking for when it's time to do my hair. They're always close by. When I'm working with my hair, styling my hair would have you down my change on down the road. But currently these are the items that are a must have as of right now. So I'm going to go ahead and jump right into showing you my natural hair essentials. So without further ado, let's get started. Okay, so the first thing that is a must are bonnets. Bonnets, bonnets, bonnets. These are not just any old bonnets. These are satin bonnets. Very important, satin bonnets. So I have the standard bonnet that you usually see people wear. I think I got this at Walmart, but you can also get them at your local beauty supply store. But I got this at Walmart and I ordered this one. I have a couple of these in different colors. I ordered this Slap Cap from Grace Ilié. I think that's how you say it. And all of their Slap Caps are lined with satin lining. These satin line caps are very important. It keeps my hair protected. It keeps it from drawing out. My hair from drawing out. It also prevents tangling and breakage and split ends and all these things that can happen with your hair. So when you think about it at night time when you're sleeping and your hair exposed is rubbing up against the cotton pillow case or whatever easily absorbent material that you're laying on. That friction is causing dryness. It's also causing tangles. Your hair to start intertwining and cause all these tangles and knots, fairy knots. But the biggest thing is pulling the moisture out of your hair. So when you wake up and your hair is dry, it's dull, it's frizzy, get all these knots, then you've got a problem. So when you're sleeping with either a satin pillow case cover or if you have a satin bonnet, again that's going to be protecting your hair from those issues from happening to your hair. And if you don't have a satin cap or a satin pillow case cover, just get you a satin scarf. I got this at Walmart. It's a big satin scarf. And I wrap my hair in this. If I can't find my bonnet, I'll just wrap my hair in my satin scarf. Just tie it around. But this is how it looks, you know, keep it all nice and wrapped up and your hair protected. So especially if you have like twists or if your hair is exposed, either way it's going to keep your hair protected. The next natural hair essential I like to use on my hair is a cotton t-shirt. It's the plain white cotton t-shirt. The reason why is because it's not rough on my hair. It's not rough on my cuticles. It doesn't cause a lot of frizz or any frizz really.  With standard towels when you dry your hair, that's going to create more friction. That's going to create more frizz. It's also going to draw more moisture out of your hair than you probably want. Also if you think about it with all the little intertwined loops and woven, why am I doing this? That can easily snag and pull at your hair causing breakage and you definitely don't want that. So this is why I use a plain white cotton t-shirt to dry my hair after washing my hair. So the next thing in my natural hair essentials are mindy, tangling brushes and combs. These are very important.  Detangling your hair is very important because one, it reduces the amount of hair loss. It also reduces damage and split ends. They're very gentle on the hair and it also reduces the amount of pressure that is applied to both the hair and the scalp. You don't have to really pull until this hard when you have the right detangling brush. As you can see, I have four different types of detanglers because each one has a different job to perform on my hair. So I have my wide tooth comb. I have my ultimate tangle teaser. I have my, I forgot what this was called, the Felicia Leatherwood brush detangler. This one is good as well as this one from Tangled Teaser. This is kind of a small one. This one has one, two, three. It looks like it has four rows on it. Two long rows and two short rows. But this one I mostly use when I'm trying to detangle the ends of my hair. If I'm doing like some twist or something like that and I just need to get the tangles out at the very bottom to have a smooth twist all the way towards the ends of my hair, I'll typically use this one. Having a detangler is a must. There's just no way of getting around having a detangler for my hair because it just makes my hair more manageable. As I'm washing my hair, styling my hair will have you. It's just a much easier process when my hair is nice and detangled. So next I have my shears which are very critical, very crucial in my hair health. So these little babies help me to trim my hair, cut away those dead ends, split ends and fairy knots and all these things going on with the ends of my hair that can stunt my growth.  So I have gotten better with it, I'm more consistent with it and now I'm just checking every little strand of hair and just cutting away. So this is very important. Shears, very sharp shears, not just any old scissors like the right kind of hair shears made specifically for trimming your hair. Not cutting boxes or anything else that's going to dull the blades but just simply for your hair. So when you have that good nice trim then that growth is going to come and just the overall health of your hair is just going to shine through when you have nice healthy hair. So these are in my Amazon store if you want to check them out. These are multi-colored shears. I really love the look of these shears. They're very pretty. So the next thing that's very important to me is deep conditioning. And to deep condition I love to use these heat caps. These are the best things that were made and created. So if you don't have one I suggest going and getting one. Both of these are from the company Hothead or Hotheads. So I have one that's in a comic strip one. You've seen this in plenty of videos. And then I have this one. It's like paint splatter. It's real pretty. This is the inside of them. These heat caps are a great way to boost your deep conditioning. It's also a great way to get the most out of your deep conditioners. Now when I use these heat caps I feel like I get salon quality deep conditioning in my own home. I don't have to go out and pay nobody to get a good deep conditioning. I can do it by myself in my home. So what I do is I'll take the heat cap and I think you have to do this about three times. But you start, I start with the outside first and I put in the microwave. I heat it for like 55 seconds. Anywhere from 40 to 55 seconds depending on the wattage of your microwave. So I do mine for 55 seconds and then I flip it inside out. I do another 55 seconds, flip it back another 55 seconds and then I put it on my head.  So after about 20 or 30 minutes I'll take it off of my head and at least my hair is super soft and super moisturized. And they're also very convenient because you don't have to be tied down to a hair dryer and be stationary. You can be mobile. You can be doing things around the house and deep conditioning at the same time. So you can basically knock out two versions of one stone and in about 20 to 30 minutes your deep conditioning is done and probably whatever task you're working on. And then you're left with soft moisturized hair. So who can beat that? And they are filled with flaxseeds. That's how they heat up. They're filled up with flaxseeds. They got little pouches all in them. So there are no pores. There are no plugs holding and tying you down. This is it. Very convenient. Very mobile. Get you one. And speaking of deep conditioning the next thing that's very important to me are these plastic shower cap plastic caps. These are very important when it comes to my wash day. In particular when I use my heat cap that I just shown. You do have to use one of these on your hair before you put the heat cap on your hair because you don't want to damage or ruin your heat cap with product and wetness because that can get into the pouches and that can make the flaxseeds expand and then you just ruin the whole thing. So you do want to make sure your heat cap is protected. So you do want to put one of these caps on your head and just aids in the deep conditioning. And also if I don't really feel like heating up my cap and doing a deep deep deep condition that I'll just leave one of these on my hair and I'll pretty much get the same deep conditioning type results because the heat from my scalp is basically going to give me that heat that I need to open up my hair cuticles and to still get the product absorbed the deep condition absorbed in my hair. I got these at Walmart for like a dollar or they were like 99 cents but they're very cheap and you can get like a pack of them. I think they're maybe like 20 or 30 something in a pack but very inexpensive and they just really come in handy and also to retain moisture in my hair. So after washing my hair if I don't feel like styling my hair immediately I'll put one of these on my hair and it just keeps the moisture retained in my hair until I'm ready to style it to make the process more manageable. So the next natural hair essential I have here are my bobby pins. The bobby pins are very important to natural hair because you have to tame it hold it down whatever style you're doing you want to make sure that the bobby pins are going to hold that style whether it be an updo or a bond or whatever it may be and you can also use these as decorations or accessories and make and create little styles in your hair with these bobby pins and they come in different colors they come in different shapes they come in different sizes what have you. This is the one that's curved and I find that the one that is curved actually works better in my hair depending on the style that I'm trying to achieve the curved ones actually are more flush to the hair so they're not sticking up or sticking out with whatever style I'm trying to create as opposed to the ones that are straight tend to stick out or you can see those but these kind of lay flat to the hair and you can't really see them so I like the curved ones. But like I once saw a meme say I got 99 bobby pins and I can't find one that is so true. I have so many bobby pins that every time I look around trying to find a good one at least I can't find one. The next items that are important to me are my spray bottles. Now depending on what I'm trying to do I have two different types of sprays. I have the mist I don't know if you can see it but I have the misting spray and then I have the one that shoots like a straight stream but you can also adjust the nozzle if you want it to be more of a mist or if you want it to be more of a straight stream. Now this one I use more as a straight stream on my scalp if I'm doing a scalp detox I'll put some warm water here with some apple cider vinegar with the mother and I will spray it directly onto my scalp if I have a lot of build up so I can get to my scalp better with this one as opposed to this one this is not going to get to my scalp this is just going to get to the surface of my hair but for this one I'll actually use it if I'm just trying to um just get a pop of moisture in my hair or hydrate my hair rehydrate my hair for a style or if it's a product I need to apply I tend to use this one I would not recommend putting any oils in this one because it will clog up and you just ruined it and you gotta throw it away um I learned that the hard way twice and in the purple bottle I may mix a little bit of conditioner and water in this one um and it comes to the nozzle perfectly without any clogging next I have my hair clips these come in handy when I'm styling my hair or printing the section off my hair or just get hair out of the way while I'm working on a specific section but if I don't have these hair clips and I'm trying to do my hair it makes it very difficult because I can't achieve the style or part or whatever I'm trying to do effortlessly because I don't have clips so if I have my clips then I can make sure that my style or whatever I'm trying to do or style I'm trying to achieve comes out the way I want it it just makes it easier to to do my hair when I have clips so it's not special I'm not gonna ramble on about these clips they're just clips get you some clips the next thing is my edge brush so when I need to lay my edges down I have my brush here that's gonna give me nice little soup here for my edges brush them down real nicely and I also like that it has a little comb right here so that way I can actually create I can get creative uh with my uh edges and create designs and shapes and whatnot with a little comb here so I think that comes in handy but I definitely have to have my edge brush and to get those edges the way that I want so this definitely stays on hand at all times next I have my hair bands these bands are very convenient for me when I do not feel like doing my hair there's some days I just don't feel like doing anything but putting it up in a big puff and these bands come in handy so I just tie it around twice around my hair and just slide it up and I just got a big old nice pull perfect quick style and it just makes the styling process quick and easy when I'm trying to get out the door and last but not least are my scalp massagers scalp massager is definitely a must have in my natural hair care it is essential to have a scalp massager on hand because sometimes this this right here just sitting there in the mirror and just doing this it's tiring on my hands my arms get tired my fingers get tired I don't feel like doing that although you get great results I just I just get tired of doing it as tedious so I have my scalp massagers this one I don't really use as much unless I just have an itchy scalp and I'm just I don't I don't really I don't even know why I'm showing this let me show you this one so this one is the the electric one and it has two speeds it's got a slow speed and it has a high speed and I've done a whole video on this scalp massager and I will put that link above because I'm not going to grab on about the scalp massager but just know that what a scalp massager is stimulates your scalp it also stimulates the blood flow of your scalp which promotes hair growth that's the main thing and it just gets the job done like it's like the best feeling ever it's like little fingers little hands just massaging your scalp so that concludes the video I hope you guys enjoy watching me show you my natural hair essentials if you enjoyed the video don't forget to like comment and subscribe and I will see you on the next video bye guys