Bariology yeah, and now we go for to a practical tutorial how one can Compute all very curvature very connections and all the derived quantities Using the Vania Berry code so Okay, so maybe we start again a bit of why you put I or I somewhere So again if you Google Bariology with I Okay, I found this page which is on Instagram and sells quite nice cookies I we couldn't order it. It's somewhere in US, but maybe you can try it but okay with With why again you you can find this book by David wonder based ever This word appears as a title of one of the chapters Okay, but then you may ask why we put I in in the Vania Berry code Well, when yeah, it's clear where it comes from. So Berry comes from a bus language and means new So it's a new one year code. So who doesn't know both countries somewhere here Yeah, it's very nice place. There are some guests from here from there here and also I will join This research community soon So my advice if you want to get a position in a bus country make some good Scientific code and give it a name with some busquert. They will like it Yeah, yeah, they like it Okay, so you already know why we need money interpolation so we were showing this figure That when we evaluate something like anomalous whole conductivity We often get very non-uniform distribution of the integrated fun integrand Yeah, so it is huge at some points and the others. It's almost zero So when to evaluate it, we need a very dense dense k-grade and when your interpolation is something that allows you to Interpolate bands with very high precision. So for for example Even if you have such a tiny avoided crossing somewhere here and it is far between the points Which you had on the ab initial grid still you can reproduce it with quite a good accuracy If your linear functions are good and well localized. So that's the magic that we use and that made calculation of anomalous whole conductivity possible So how does one proceed? Basically part of the scheme you have seen yesterday So you start with some ab initial code evaluate your block away functions on some ab initial grid, which is would usually quite coarse and evaluate some metrics elements like spin or positional like overlap between neighbor and cue points and then you go give it all to the vanier 90 code to construct the vanier functions and The after that you you can use these when your functions to interpolate So you did it to interpolate just the band energies But also the vanier 90 already has this post W 90 part Which also also implements in my calculation of Berry cartridges integration of Berry cartridges anomalous whole and activity gerotropic effects spin-hole and Actually many others So and when you better actually does Basically is the same. So why at all do we need it? well, the point is also also When you interpolation already gives a big advantage over the ab initial calculations for some Materials, it's not enough because we need higher precision. We have more complex material with more More linear functions or more or whatever so So with the vanier Berry code, I managed to make it faster more efficient and Also, because of its structure It and design I make it I tried at least to make it easy to the implementation of the new things and in fact it already provides a toolbox for you to Interpol II to implement your things without actually Modifying the code. So you just write a few functions in your script and you pass it to when you bury and it should process it and This can be actually seen to in one of the advanced tutorials today, which called it which is called to do it yourself DIY so About the speed so that's there's a comparison that I did when I Issued the first version of the code and Published the paper so you can you can see that When you bury Performs a lot faster than post W90 for evaluating a more normal whole conductivity and The main reason the main trick that I did is the use of the mixture of fast and slow for a transform Which I will explain a bit later and Also, also some other tricks some optimizations For example this scanning of Fermi levels Well, maybe now it has improved in post double 90, but I'm not totally aware But at that point it was a very bad scaling with it with a number of Fermi level for example, you want an almost whole or where they were a dense grid and It gets very slow with money buried. It's almost the same Other thing is the use of symmetry so we can evaluate only the reducible part of the brilliant zone So what is the Thing they mixed for yet transform. Well, it's a mixture of slow and fast. So what is the problem if you just evaluate the Hamiltonian so What we do in money interpolation we have a Real space Hamiltonian so it depends on these are vector the Latest vector in the real space and at edge K point we Define define the Hamiltonian. Okay, it should be H not X Okay, actually not only Hamiltonian, but any other matrix element That's why it's a general X So in each K point we so we have some number of our points and some number of K points We multiply it and get the scale of the number of the time That we need to validate it Yeah, and it takes quite a lot of time and a post of United was just a major time So what one could do is to do a for it for fast Fourier transform So this figure is taken from the paper about power flow code well, which is not one year based but Has something similar in spirit, but okay. I'm not the user of it, but Principles they say so what what do you take your Hamiltonian in real space then you create a big array of Veroff and put your Hamiltonian into the corners and do the fast Fourier transform of these big thing Well, it's a way to go and if your K grid is not too big it's It's quite fast, but still for large K grid It's problematic first because you need this huge array it can Maybe just not fit into your memory that you have and also it's harder to make in parallel and Harder to exclude symmetry equivalent points because you calculate all of them So it has some problems. So what my idea was? To split the grids basically for example here We have a eight by eight K grid, but we use it a four by four grid Which is shifted four times get two by two So what we do with Each grid each color corresponds to some grid so We use the shift small K which is and to divide this X tilde on this shifted grid Multiply by the shift big K Yeah, and then with the resulting thing We evaluate to the it as a fast Fourier transform and Combine together it it is first very fast and You can consider each of these sub grids independently so you can do it in parallel So each sub grid don't have to know anything about each other. They can work on different nodes of your cluster Yes And you do you don't need to store them in memory at the same time if you do do it in theory We just go one by one and forget it So if you run it on a laptop, you don't need too much memory for example Second UK not the second but next that you also can exclude some symmetric really well and K grid and do Some adaptive refinement so what it is so we start with some grid eight by eight divided into four by four FFT times two by two slow grid Then we see that the green and the red one are symmetry equivalent We assume that the symmetry the system has a four-fold symmetry for example Yeah, well, not every point is equivalent to every point But let's say every point of the red goes into some Point of the green. So if we evaluate some quantity on the red one We can know what is this content quantity will be on the green one So it's just the same if it's a scour or it's rotated if it's a vector quantity But we don't need to evaluate the other one Now we calculate only the symmetry Irreducible K grid What we do next because maybe if we do one a one-shot calculation And if the grid is not very dense we can get this blue curve which has a lot of spikes Which comes out when we have some K points, which are very close to some Wild point line node or a body crossing where the barrier courage is huge. So what we do we look at the results of each K grid Yeah, and see which one gives like the biggest contribution all them biggest spike And we refine it. So we substitute the point by for okay in three dimension, it's eight other Points around it and we distribute the weights around those Then again, we apply the symmetry then see that maybe here they all they are all symmetry equivalent So we again collect them into one But and collect the weights of them. So this dot is a bit bigger Yeah, then we Evaluate here and then we look again which which K point Give the maximal result and refine that so we can refine one of the new points or one the old points we shall I give the biggest spikes And in the end after some iterations we can get some this green quite smooth curve Of course, it doesn't mean that you start from any course grid and they get a good result after 100 refinement iterations in general still you need to start from a reasonably good grid but with this Algorithm you can improve your results Without going to very dense grids. Oh and another feature of the one year very cold that with the evil soul so we derived the ways to compute the derivatives of Berry courage orbital moment and other quantities in quite a general way so we can Implement it and in a general way Evaluate also the derivative. Why is it important? Well, first of all, when you evaluate some quantities, they naturally Appear on the just the derivative of Berry courage, but also for the so-called Berry courage a dipole It can be calculated as a Fermi surface property. So the Berry courage awaited by the Derivative of the Fermi distribution with respect to K So if you look at the as a subject Basically it gives you a data function of the Fermi surface. If you if you consider low temperature, okay It's finite temperature. It's some peak which still is quite narrow and to get a converged integration You're again need very dense K grades So another way is to convert it by using integration by parts to a Fermi see integral So basically you some all occupied states Which are somehow spread in three dimensions Not to concentrate it as a surface But you for that you need to Evaluate the derivative at every K point without and we found a way and with without to do in any finite different schemes here So we analytically just derived and evaluated from the new functions and this gives a much better convergence And there is one of the tutorials which show this So Okay, others other thing that so to make the implementation of new things easier and we use object-oriented programming paradigm so that We have some modular structures so that you can call some functions which call quite abstract classes So and if you for example, you can write your own classes based on the classes that we have So if you are familiar with this type of programming, you can really use it as a powerful tool If not, then you can use it as a usual tool just passing parameters to functions and using the standard from functionality, which is already quite extensive, I hope we can Demonstrate it on the tutorial. Well, if you pass the basic tutorial And you can go to that one. So for further information Please refer to our web page which has quite Quite extensive documentation. Maybe not Yet complete but we work on this So if you have some questions in the future on using the code or problems You can open issues or discussions on the github Which is the main platform for Developers and also for communication with users. Oh, there is also a mailing list where you can subscribe and also ask your questions Yeah, and so the code is free to use free to everyone the only Payment is the citation. So the more you cite The more we are motivated so please cite of so far. It's only only my single also paper, but we are preparing Be a bigger paper with all these nice people some some of them are in the audience Some online Yeah, so when it's ready also Please look at it. I hope we will describe many new things there Before we go to the tutorial, maybe you have some general questions questions No, let's check if there are questions in there yet No questions from an Adriatic No questions. Okay from the chat also know right Okay, then Okay, there is in the metrics chat. There is a special subchattable about it specifically for today Okay, so no not so far no questions there, but if you have questions both post them here, so I will look Follow them. Oh for today tutorial We don't run when you 90 so we we prepared all the files for you That's why you can either look into the Virtual machine or you can use it on your own It's not for you Okay Okay, just to show everything I open the virtual machine, but in principle you if you installed what I said to install It should work also on your computer, so we open Jupiter notebook Sorry on this we should Yeah, we should switch on to to the Virtual environment of Python called base Yeah now You open the Jupiter notebook and it will open a Browser, okay, so we have a folder one year tutorials 2022 3F and okay, he's here one day to WBerry Yes, so let's start with a well that the day for the tutorial for today There is a basic tutorial which I will now explain Slowly with all explanations to everyone who is new to this who is new to Python Yeah, if you What is the deal? Okay, there was a question is a chat with which I missed what is the difference between Fermi surface and Fermi C property? Exactly what I was Talking that they We call something Fermi C if it it is evaluated as an integral overall occupied states Fermi surface property is something that is evaluated Yeah, it's not the difference about properties about the way of evaluation exactly so But when we will it is a Fermi surface Then we basically on this the states that are close to the Fermi surface do contribute the others are not relevant So the tutorial consists of basic and advanced So yeah, I will explain in detail the advanced the basic but if you go you you feel very confident in this you can go through it quite quickly and then Switch to the advanced and try to do it yourself and call the to out open it Oh, sorry. Okay. We are on the virtual machine you go to the terminal and Type jupiter notebook. Yeah, I can write. Okay. I will I will write it here Yeah, but first you need to First all on these virtual machine you need to switch to the virtual environment base We should do by the common work on base Okay So now we open this and now you go to the proper folder. Okay, we go to the basic Okay, there are some file some folders which Well, basically, so what do we have when you're 90 files? That's the we we did some veneerization of iron We did it on Okay, I forgot the wind file, but anyway, you will not need it So basically, that's all we need to run when you bury after we calculated the When your functions, we don't need the AMN file Which is a projections because we already projections are used only as an initial guess So we already passed this step So we don't even need the wind file because all the information is already here in the CHK file Which is a binary and these text files with Eigen functions and overlaps All we prepared it for you. So there is a folder with input. Well, basically, that's the file Right, there is the wind file if you if you are curious how we did this we used 18 when your functions with SPD projections This frozen window just if you want to modify and change it you can go ahead Okay, and actually being also included all this quantum espresso files And just If you want, okay, this python file, maybe you you don't need it It's not it's not relevant. It's an old one. Okay, and okay, the bands folder Well, we pre-computed the bands from Along some policy we use in value 90 and using quantum espresso. It's just for comparison of the present results So we go to this IP y and B file, which is a Jupiter notebook It's a convenient way especially for tutorials and maybe for production runs or It's not very good But because for production runs you need to write a whole script and submit it to your cluster and it your crunch The numbers but for this interactive thing. It's it's actually a convenient thing so Some preliminary notes so that I want to make that first Maybe some of you are not familiar with Python or maybe not familiar with programming at all. It may happen, but Please don't be afraid first Python is easy. It is much easier to learn. I think then Fortran or C Second day if you are used to this way of communicating with Calculational codes like what you did yesterday like with one in 90 quantum espresso that you have an executable that is compiled somewhere And you have your files with you give the files with a list of input parameters Give it and you get the result and process it somehow by other things means in principle Here you can do the same if you take the example and use it just as a template they become for you just a way of inputting They just give in the parameters But if you learn it more than it becomes more advanced tool, so you can do more things So, okay, I told about Jupiter notebook that we are using today Yeah, so the documentation is given on the web page Which is here you can go here to do Okay, there are also some like examples which may which are not yet updated But we will update it with the examples that you will see today on the on the tutorial So the documentation is have basically every function every class For example, you click somewhere and you see okay the function all the parameters that you have they described Okay as detailed as we could We will improve this at some point so with anything and To be to go further There is a link called force so you can even click and see How it is all implemented if you understand this Curious you can go there so Well, yeah, maybe some of you have already used the money a very and remember that were there were functions called integrate and tabulate functions recently we Changed the interface and now there is only one function run and basically you can integrate and tabulate Simultaneously in just in one run. So you do if you run it on a K grid and if it's not a path, of course, you cannot integrate over a path So and So so even if you are familiar with I advise you to briefly go through this basic tutorial On this I already said So, so no problem so far you have the files You have you have it working. So how do we start a calculation with a money bury? So first in Python, you need to import all the proper Modules well, it depends what you do but okay, we have well you enter money bury and give it a short name We can give any other name like WB, but in the further We call it this way we call it noom pi and also the other it's a standard way of Calling it well beneath sci-pi for some physical constants. Okay, we will plot the figures using mudplot leave Okay term cover allow us to Print something in cover, but it's not obligatory Okay, these few lines I added just in case if you run this thing twice because You need to define your parallel environment. You can do it. You well with one of these three lines Either you do it in serial Which you called when you bury dot serial Create you create an object basically when you bury dot parallel creates an object which automatically detects How many CPUs you have or you can give it manually how many you have? Okay, yeah, I think you are not allowed to use more than four Okay, you can put four here, but I think it will be the same as but the thing that it for parallelization it uses the model ray and it For that you need to initialize the parallel environment and you cannot do it twice on the same computer So if you once did it you need to shut down it before you run it Because with this line if you run this cell twice It will give an error So to in the jupiter a to run you can either press run or you press shift enter And okay, this cell doesn't give us anything No Okay, it says that we are using when a very version 0.13.2, which is the latest for now by the way Soon we will issue the version which is 1.0.0, which will not be much different from the present one We just need to clean up and test make sure that there are no bugs Which I hope we will do during the developer's meeting which happens next week so you can expect some improvements if you find some bugs or Incomplete documentation. I hope we will fix it So now what we need is to read The information about the system the electronic system that we are studying in the and generally if we work with linear functions which Generated by vinyan 90 we do it by running By creating the object type system system W90 So what we give it a seed name well Basically a seed name includes also the path so we put it in the folder W90 files dot F E Yeah, and then we have the file FE dot I E dot mmn and CHK and okay buried equals true means that we need to evaluate the External terms of very connection of very courage that was Was what Eva was talking today that? In principle you can neglect these terms and the error often will not be that big But to include them you need this tag it says to include them and also we include the spin properties and This use WCC phase actually that was you were talking also about including The vinyan centers in the phase factors of the way functions Or you can include it or not in principle if you include the internal and external terms Nothing changes. You may test it. Well, it's not Done explicitly in the tutorial, but you may check it later if you want so we run this thing This cell put a shift enter you see So it read the SPN file which we will need to interpret all the spin properties So basically that's it. We just read some files. It says as the recommended FFT grid is four by four by four Which is just equal to the ab initio grid that we used it Yeah, it's quite a small grid, but always I give quite reasonable results And of course we want to keep this tutorial as light as possible. That's why we don't go Dancer so yesterday you were interpolating some bands along some path You can also can do it with when you bury For that you first create an object called path you give basically the nodes of the path and You give you give the labels to them then it will be just needed to for plotting and then you And The parameter length is basically the space in between k points the bigger the dancer you have the k point So it's like to pee over Delta K So if you run it Well, it's just it's quick. It just creates an object So if you want to check what the object is you can like print it Which will give you actually the k points and say, okay, this this is the age point for example Like this. Oh, you there are also something that you can Okay, for example, this can give you Just the k points. Well, which basically you need for the plot When you put all the cup points along one line So different things that you can just look and now we go to the running the calculations so the the concept of the new version is that We use the the calculators We shall also such callable object objects which call result Which return some results. So there's that's quite abstract objects that we define In order to make the code more flexible So whatever the result it is if we define some properties like if we know how to add one result Another or subtract one from another we can or how we transform it under symmetry. We don't care what is inside That's as a big advantage of this object oriented programming rather than just working with fixed arrays or similar so to tabulate we create a Calculator which is called tabulator Yes, so first to for example, we want to tabulate energy and the Berry curvature. So we have this Money a berry dot calculators double a dot Berry curvature. For example, we can Be looking to the documentation So what calculators we have now, okay, we have some calculators to Okay for tabulating Okay, tabulator all we will see what needs so we have a basic class tabulator and many Other which I derived from tabulator so far. Well, we didn't have time to document them but for example, Berry Berry Curriculate or Energy orbital moment or derivative of orbital moment. Okay, they will be documented later Yeah, you just pick them up and you can pass some key key w args means key w k-word parameters K-word arguments. So there is nothing documented because they are just the same as for the tabulator Yeah, and tabulator the same time it has Well, okay, we will document it properly. What what is what but say this is some arguments Which we pass to the formula to evaluate Berry curvature There will be some examples in the tutorial and some other which we pass like to the more basic class calculator You look what we have in calculator So far we didn't document anything but we have such parameters like degenerates ratio Grammars well some parameters Anyway Yeah, I'm sorry that the documentation is not full yet, but it will be more complete So that's the way how you can work in with the documentation when it is more complete But so far you can just use it basically without parameters everything by default and it somehow works Yeah, so and then we run calculation just to tabulate this quantity we select Well, we can amid this parameter because it selects all bands from 0 to 17 That's the convention of python that you start from 0 and end 1 by n minus 1 so Range from 0 18 means 0 1 2 and so up to 17 We have only 18 minutes, but we can also restrict it to more than a number of bands So we create this Okay, not described because we didn't document it yet properly Yeah, and Now we are We got everything to run a calculation. Of course, we could just write it in one line Write grid equals But just to be more clear we do it step by step. So basically that's the main function to run a calculation so you give this this Object parallel which describes how it's parallelized you give the calculators you give on what grid of points you You evaluate and pass is just a Particular Particular case of a grid So you just run this thing And it shows okay, it estimates how much time left Okay Question, okay. Thank you. You mean on all the metrics all on the zoom No, but we answer that but Our pharmacy and thermos of the properties Is Because it's from the no it is red just because it's on the other computer because on this computer I didn't open it. Okay, I will keep it here so that I see it better It's new new things arrive Any questions here? Oh, you did you run it? So we Okay Well, so far. Yeah, so far. It's easy. You just run and try to understand what is happening But you don't have questions so far okay, so now we can plot the result to so this Tabulate for the function run in return some thing something called the result dictionary. Yeah, and which has Addiction which inside has another dictionary called result and because we named it tabulate So this this is not a predefined keyword. It's just that something that we That we put Yeah, so we named it. Yes, so we can it call it Yes You run it this way Also call it three So all these names are not are not predefined. They are just you can give it any names That you want so you Yeah Of course The same that we that we did yesterday we forgot we need to copy this Because we are all in the same folder, which is locked from modifying. We cannot create files So, okay, let's close our GPter of terminal Yeah, so what Okay Okay, so those who work on their own laptop don't have this problem Okay, let's copy it here. Okay, we again work on base And we run Jupiter Jupiter Notebook, okay now again go to the basic open it Now it should run So because before we didn't write anything to the files, which we were just creating some objects somewhere in memory but when we started creating Files on the on the disk we got this permission error So you can just go one to this cell one by one and execute them After where we were now we do this run so What it does it it returns some result. Yeah, so we can access it by this result or results or tabulated we did Okay, then we Okay, with no pi we can load The pre-computed bands Then we were Okay, so there is some factor is just because Yeah, we have okay We define some dimensional factor just because quantum espresso and when you buried give the key in different units The same was yesterday. I think you notice that it's to be over a That's why we multiply it we shifted by the Fermi level and we plot So only this result that we return already has its function to plot it Of course, you can just get the data and plot it with your own tools Whatever you like, but it also has something to plot I'm getting the message not described well It's yeah calculator not described. It's just a message meaning that we did not Document this calculator just we had no time Well, it's not an error. It's just incomplete documentation of the code How it's done with the code that we write the documentation inside the code and then automatically it appears on the web page And also it appears in the code When the code writes it by itself what it does so We have the bands of the black ones The when you rise bands and the blue dots the bands from from quantum espresso As you see so for the lowest band somewhere here up to the frozen window. We have a good match between them. I Think if we room a different scale of energies, we give get almost perfect match Yeah, but for high bands, it's it's not it doesn't match at all and this is the feature of the disentanglement procedure So we see that everything is fine here so we can plot these bands So net scene We okay the same we can do to compare with w90 vary 90 Yeah, the the calculations the type of calculations that you did yesterday we just Using this plot routine, so it's called pot pot path fat So we in principle it can plot also some quantity with a fat band Which we see a bit below and have some primers it it can save it to a PDF file also shift You define the range of energies and Some other fat factor okay, I will explain cut K So it will cut out the part of the K K path where you have no bands in this energy range Okay, close figure show figure Well, it's just a common school To mark what leap Yeah, if you know much what leap you understand what it is about Okay, and okay We see that there is no difference between w90 and w90 in the results and there should not be basically they do the same In in performance for this path calculation. Also, there is no much difference. I think well Well yesterday you're the interpolated the bands, right You did such plot of plots of bands, right? It's well, it's part of the it is already post-processing after you can construct one your functions you can evaluate just technically Interpolation of Benz is in the one year 90 dot X executable There is also this post W 90 dot X, which I think yesterday you didn't even touch Yeah, which has much more of interpolation, but in principle. Yeah, that is post-processing of one year functions The first step is you construct on your functions and they do whatever you want with them just some of these just in the same executable Yeah, so there is no difference in this part. Well, because we start from the same one year functions and we get the same energies Yeah, so now what is the fat fat band when you put also some dots which symbolize some quantity So in this case it is a very courage We choose the quantity which is the Z component.  So if we Choose it smaller so we just get smaller dots. It's just a visual thing put it five So we see well, it's one of the ways to visualize so red means positive blue means negative and the size means I think there is some cutoff and also some logarithmic scale all these both. Otherwise, they would be just For the whole screen at some points Yeah, so you see that at some points you have very little very courage and some points you have it huge. So Well, I think it's almost time Well, we have some 10 minutes So now when after just to check that you understood what was in this tutorial you can solve a problem Choose a different path any anything that you like compute so bands and stuff along that path and Compute not not very very curious about the spin the spin expectation value. So there is a link which Suggests which calculator you should choose Yeah, but of course, you don't need to put quantum of personal w90 because you choose a different path It will be different. It will not match any way. So, yeah, so now you can go and Try to do it by yourself Basically, you need to just to copy paste some parts of the code above to this cell and run it You took you can just run everything in one cell Okay Well in the chat of them What file are w very reading I need only the CHK file. Well, you need the not only CHK Basically, it reads everything here. So you need the ag CHK because CHK doesn't have a eigen energies CHK file contain. It's a binary file. It contains the this you and V matrices which I used during Yeah, not only the CHK file, but also the eye. I don't see it. All right, because you see I so you Was it on the screen all the time and you didn't tell me great Okay, let's put it somewhere here. Okay. Oh, you know, so you also need the Well, as a minimum you need CHK and the ID if you only interpolate the energies if you calculate Only internal terms of very currency. Oh, oh, that's all you need if you Calculate external terms of the very courage or very connection. You also need the overlap file mmn Yeah, if you need compute the spin properties, you need also the SPN file Also, there is an extra file called UHU which you need for special external terms of the orbital magnetization So it kind of depends Which properties you need from that depends which files you need to read So that's why we have all these tags here berry. Oh, yes, you can actually I'll initialize in a system Yeah, here are some parameters basically berry. Okay more blue Yes, I'll do enable calculation of External terms in orbital moment and its derivation requires UHU file for example for spin-hole conductivity depending if it's Okay, which implementation of spin-hole You need either some extra files Or just the SPN file So, yeah, it depends. Also, there is a way you can just so when you night you also can write this when This 90 underscore TB dot file which is a text file which you also can read and basically it also will work Yeah, it's another so well Also, you can in principle work with tight binding model. We can directly Import a model from a Python tight binding or TB models about Python tombani there will be a tutorial by Cinezha Koch and Yeah, TB model is not to represent it here, but it's quite similar actually in usage Also, you can import the Vania functions from different codes, which are not for example a Atomic simulation environment has its own way of constructing Vania functions, which is not maximally localized But they're partly occupied one and there will be talk by Christy and Tigerson Well later this week Yeah, also the F PLO ab initio code has its own way of constructing Vania functions And he also can use it if you like F PLO code So if you know another good way of constructing Vania function, we can implement it. Yeah This is done with spin orbit coupling. Yeah Only that it is only the I didn't put it Actually actually no Well, I well I had then erased it, but Okay, if you let's if you plot Just the very curvature does it have a Z component of a an X component But okay question about all on which pass did you plot? So it's not a symmetric pass. Okay, GH. Okay Yeah Okay, first I will plot there Okay for the egg for the barrier which we have some Let me try thank you for curiosity actually Well, I think it's time to go for lunch because yeah, because we have a Group photo at 130 so we need time to have lunch and at 130 me at Adriatico We will have a group photo and then we will figure out what's happened with the spin X Yes, yes, so you go we now go for lunch here or wherever you want and then take our stuff and go So we will continue in the same Computer room that we were yesterday Okay, see you soon good appetite


Hello, welcome to Combined Wing Chun. I'm Sui Fu David. Welcome to Wing Chun Dummy Training Techniques, also called Mok Yan Zhong in Chinese. In this video series, you're gonna see 116 Wing Chun Wing Dummy Training Techniques, 116 moves from Yip Man's Wing Dummy Form. I'm gonna show you each move step by step with the action cam, so you have the best way to learn the Wing Chun Form at home. Make sure you subscribe and click the bell for notifications so you don't miss a single lesson in this series. Here we go. Wing Chun Wing Dummy Form. And we're doing section two, move number five and six. So now we are in this position from move number four. Now we're going to move into the move number five, which is five. So let me show you how the footwork works first. So we're number four, number five. We're just gonna swing this around the step up here, number five. Now we're in these two parts, feet are still diagonal. I'm still in my semi-thirty stance. And then move number six, it's just a little tiny nudge. That's it. Okay? So we're here. Now I can't go straight to that. Since my foot is here on this side of the dummy leg, I can't just move straight to the next point. So I have to swing it out and then so that I can get to the next point. Because we are inside of the dummy leg. This is a trapping the foot on this side. So I can't just go straight in. I have to actually swing it back out, move it up to this point. Back leg shovels up. Then I move a little tiny shovel. That's five, six. Okay? So right here, five. Okay? So five, that's what I'm doing. That's five, six. Okay? So we are, we're here at four. We're just going to do it. So we're going to flip it. So we just place it down. So if you look at this hand, start like this. This hand. So from the front, you can see from the front, low bone cell tints up at the same time. One, two. Okay? So I'm here, the tiny step. Move number four. So one, number four. We're here. We're going to put it around. One, tiny step. So back in the dummy. Number four. Okay? So once you practice the times one, two, two. I mean move number five, number six. All I need to do is move a tiny bit within my feet. Move number five, move number six. Back, move number five.  That's all I do just to practice the part of the core. Okay? So now you combine it with footwork and all. Step number four. Five, six. Okay? Back here to step number four. Okay? Feet go around. Step here. Back to the slides. Tanks out, low bone cell. Tiny shuffle with your feet. Tanned low bone cell. Okay? Tanks out, and bite your end is number four. Move it around. Move to what's the next part. This is a low bone cell. Tanks out. Step with the back feet forward. Slip over. Tanks out, low bone cell. Tiny shuffle. Okay? So that is move number five and six in the wooden dummy bok chong form. 160 moves by Yip Man. So let's continue with the next lesson. If you like this lesson, make sure you click the like button and share it with your friends. And also subscribe and click the notification bell for all the latest lessons that are coming up. If you want to continue your training, just click the next video to keep watching.


Audible at the back. Thank you. So hi everyone. It's great to be back. Python is always an amazing experience to share insights and discuss about code. So I'd like to talk about design patterns in Django. Django programmers in general do not talk much about object-oriented programming or design patterns. Not that much as maybe Reigns or Java community. I think I see it as a deficiency and I think we could talk more about it and this talk is just trying to trigger that kind of conversation. Hi, my name is Arun Revindran. I blog and I have screencasts posted at ArunRocks.com. I recently opened source to a project called Edge which is a project template for Django. What you see down there is a shameless self-promotion. I'm actually writing a book about Django design patterns and best practices. It will cover almost 40 to 50 design patterns and best practices covering Django 1.7. It will be published by Packet Pub by the end of this year. So here's an outline of what we're going to talk about or cover in the next 30 minutes. I'm going to talk about why we need to talk about design patterns. What kind of design pattern we use in Django, especially the broad design pattern that the NVC design pattern which is a common question which people have. We're going to cover about nine common design patterns in Django. There's going to be a lot of code. These slides are going to be uploaded online, especially on the top page, so don't worry about that. We're going to discuss about the code as well, so we'll have fun. So this definition of design patterns might be familiar to some of us. Design patterns is basically a reusable solution that can be applied based on the context for a software problem. Interestingly, it's not starting with software that design patterns actually started with. So around in 1977, Christopher Wolfgang, Alexander collaborated with other architects to write a book called A Pattern Language, Towns, Buildings and Construction. So he's an architect in the traditional sense, not the software sense. And he wrote a book which covers about 253 different patterns. And when I say patterns, he's actually talking about a certain problem which commonly occurs in the field of architecture and a solution in terms of what is a practical solution to that. So this book was a little bit controversial because in his opinion, users should be the best judge about what a good solution is, not an architect. So this practice of this idea has slowly creeped onto the software world as well. And most of us are familiar with the Gang of Ford book, which is where design patterns really became popular in the world of software architecture. So that is not the only book about design patterns. There have been several other books about design patterns such as Martin Fowler's book on architecture, Enterprise Architecture Patterns, Refactoring into Patterns, and several other books which are considered as pattern repositories. They contain a lot of patterns in the form of easily reusable collections. So some of us might be wondering, when we are talking about web application development, there are hundreds of things to worry about, especially when we are talking about a production application. There's database design, there's web design, there's shabbing, there's caching, thousands of concerns. And now here's a driver's telling that you should also think about design. And you really don't have time for the most elegant design, right? I mean, we are just trying to ship code at the end of the day. And users don't look under the hood, they don't care about how it's implemented. But who cares? We care, right? We as programmers really worry about what the best solution is. So some of us have this deep inner desire to create elegant and beautiful code. We actually want to see solutions which are most effective or most elegant in terms of how it's implemented, how it's reusable, and how it can be maintained. Again, if you learn one design pattern, you can apply it to various different projects. They are repeatable solutions. It gives us a common language to talk about. If somebody says, hey, I did this implementation using public subscribe pattern, he actually saved 15 minutes of explanation. He doesn't have to tell, OK, there is this sender and there are multiple receivers listening to that. And he has to send messages to all that. All that conversation is eliminated and the person at the other end immediately understands, oh, public subscribe pattern, I understand what you're talking about. Reduces trial and error. This is very important. So some of us actually obsess over what is the best solution or whether solution A is better than solution B. We go through stack overflow. We ask our friends. We ask IRC. Hey, you know what? It actually works. But I'm not really sure whether this is the right way to do it or am I doing this right kind of questions. And most importantly, it formalizes best practices. So if you know the Django design philosophy, a lot of practices which are imbibed into it have been articulated in the documentation. There actually is a right code, right? Do not repeat yourself. Always follow separation of concerns. Use solid object oriented principles. So this is not the last one is actually not mentioned, but some of the responsibility principle list cost substitution principle. All these concepts are very well known to people who practice object oriented programming, but it's actually not well articulated in the Django community, but it's actually used as we'll soon see inside Django. So now here's a common refrain that we'll hear among Python programmers. They say, you know, design patterns. Hey, Python is an object oriented language and a scripting language. We don't really need to use design patterns, right? But that's not really true. As you can see in this slide, there are a lot of design patterns that's used in the implementation of Django itself. And before we talk about this, how many of you in the audience actually know what an abstract factory pattern is? Just raise your hands. Have you used it? Okay. How many of you know a singleton pattern? Great. So sorry to disappoint you. Singleton pattern is now considered an anti-pattern. So again, abstract factory pattern is not really required in Python because it was actually designed in a different language. It was designed for C++, which actually uses static typing, strict type checking. But if you use a function instead of a class in Python, you can actually do the same thing for creation of objects and thereby create an abstract factory. So what I'm going to say is that when you just blindly follow the gang of patterns, book and try to implement all those extra classes and interfaces and everything, ditto or verbatim in Python, you'll hear a lot of ducks quacking in the background. That's actually reminding you that Python is a duck typing language. You don't have to jump all those hoops. You just don't have to worry about types at all. So what I'm trying to say here is a gang of four patterns are not very widely used in Django implementation. You can see that there is the observer pattern, which actually is used for implementing signals. So there is one sender and there are multiple receivers. There is something called template method pattern. So that's actually used in class-based generic views. You can override various parts of the implementation of a generic view using the template pattern. But I found that Martin Fowler, whose patterns are more towards the architecture side of things rather than the design side of things, his patterns are much more really used. The active record pattern, which is actually documented as the Django implementation for models, encapsulates database access as well as business logic inside the models. We also see the identity field pattern, which is quite straightforward, which is basically storing the ID. We also see the template view, which is nothing but Django templates. So as you can see, the Django implementation or reading the source code of Django helps you understand various patterns which are used. Of course, if you have that background of what context we're talking about, you'll immediately recognize this is the pattern we are using here. This is a very common question I come across. Many people ask me, does Django follow the MVC pattern or the developers of Django say that we are not using MVC, we are using something called MTV. The reason behind this is MVC is easily misunderstood. MVC actually, if you look at the history of MVC, it actually comes from Smalltalk, which used MVC for its GUI graphical user interface. That's where all these concepts of controllers and models and views come from, which is completely different in the world of web application development. We don't have a mouse and keyboard and all those kind of things, but we have something called the request response cycle, which is happening inside the web application. So the creators with Django felt that the entire Django application or the framework can be divided into models, templates and views. So what we are trying to say here is MVC is nothing but separation of concerns implemented. Now, MTV is also a case of separation of concerns implemented. We have, if you are talking about one-to-one correspondence between models, we use controllers. You will see that models are nothing but Django models, views are nothing but Django templates and control is probably the rest of the entire framework itself, which actually works as a controller, which controls what the user is trying to send in the form of a request all the way back to the response. So according to me, the answer is both yes and no. It's kind of an MVC variant and people should not obsess too much over it because we are actually talking about separation of concerns here. So now let's get to the real meat of this presentation, which is design patterns. We are going to talk about three model design patterns here. Some of these are very familiar to you folks, so I'd be interested in hearing various other implementations, but I've gone through several implementations to find out which is the most optimal or which is the most appealing in terms of elegant code. The first one we talk about is user profiles. So almost all of us here have tried to create some user model at the other. Unfortunately, all of us think that since Django's custom user model was released when I believe Django 1.6, all we have to do is just extend the custom user model, add the user preferences, the favorite color to the pet's name, to the relationship status, everything. I've seen this quite a lot, which is exactly what the documentation tells us not to do. The user model is just for authentication and nothing else. So when you're actually extending it or creating a custom user model, it should be for a very good reason. It should be because you don't have the defaults which are mentioned in the authentication. For example, you would like to use email as a user instead of the username as the login for that particular user. So in such cases, we actually should use a custom user model. And some people, I mean, this problem or this pattern has been seen ever since the first version of Django was released. So there have been a lot of solutions online and this is another problem with design patterns. So if you ask what is the right way to do X in Django, the solution depends on what version you're using. So immediately you'll get the question, okay, which version of Django are you using? Are you using 1.6 or 1.7 or about to be released 1.8? So the answer actually varies based on which version of Django you're using. And there have been various solutions like concrete inheritance. So I don't know why people still use concrete inheritance or why it's still there in the documentation. For me, it's like an Indian KFC with Veg Burger. Nobody knows why it's there in the menu but it's there in the menu. So concrete inheritance is not really a good solution because it involves a lot of extra database lookups. And at the end of the day, you'll probably replace it anyway. So what is the recommended solution? The recommended solution is very simple. The documentation tells you what to do. Just create a user profile model with a one-to-one mapping with your user model. But that's all the documentation tells you. I mean, it doesn't tell you how to implement it or whatever problems you'll face in or whatever steps you'll face and actually implementing it. That's what we're going to talk about right now. So if you're talking in terms of steps, the most obvious step is to create a user profile model which has a one-to-one correspondence with your user model. Now, again, notice that we are using the auth user model setting from the settings. This is because the custom user model was introduced. And we're also going to say primary key equals true. This is strictly not required, but this prevents a lot of concurrency issues when using the PostgreSQL database. So it's a harmless thing. I recommend to put it in there. The next thing is how do you ensure that our user profile model Of course, the user profile model should be having all this extra stuff that you want to put in your users like what is your favorite color or what is their profile information, address, etc. Next thing is to ensure that there is always a user profile created whenever a user is added or created. So the easiest way to do this is using signals. So just handle the post-save signal here. As you can see, that should be the creator. As you can see, there is a created flag as to that particular signal handler. So if it is not created, then obviously there should be something already there. But if it is already, if it is being created, make sure that there is a profile model being created corresponding to that user. So if you notice this code, you'll notice that I'm not actually passing any extra arguments while creating that. So this is a very typical use case. So what I would say is that if you are actually creating this profile model, make sure that the profile model has nullable fields or default values. So this is very important. So most probably your profile will be one user as a parameter, as a keyword argument. And all the remaining values will have to be some kind of default values or nullable values. Next, we are going to use a new feature in Django 1.7, which is called App Initialization Refactor. So every time a signal was used in Django, most people were not sure where to put that signal handling code. Some people used to say put in the init file. Some people used to say put in their models. Put it anywhere. We don't care. But now we have a real place to put it. That's called config. Now, all you have to do when you create an app is make sure that there is an init.py which specifies where the app config is. Once you have this app config, you generally call it app.py. You define this app config. And inside this app config, you will be given an opportunity to initialize whatever initialization code you need for that particular app. You can use the ready function and override that as a method. So I would say I would recommend putting your signal handling code over here. Now, there are a couple of optional stuff that you can make the life easier for your admin. For example, many people prefer to change their default admin editing code for the context mixing to populate the context and simply find out what template it is and renders that template. It becomes so easy because it is leveraging. Now, what is mixed actually? Mixing is actually multiple inheritance. Which is not found in many other languages, right? Python is unique in that sense that we have multiple inheritance. But many people ask this question, isn't there an adage saying that composition should be favored in terms of inheritance? I would say it is true, but actually you get the best of both worlds because even though mix-ins are technically inheritance, you actually are able to use the features of composition because if you look at template view, it's a derived class. It's actually a type of view, but it's also getting all the compositional advantages of aggregating all the methods and attributes into one single class. So it's actually the crisp example of how you can compose as well as inherit without having the disadvantages of both. The reason I explain more about this is because it's not just in views. Django uses mix-ins also in models, forms, what have you not. So it's kind of like a must-go kind of an implementation right now. Coming back to context enhancer pattern, so several views, like I said, need to use the same query set over and over again, or some variable which has to be defined in various templates just because you are going to reuse that same thing again and again. The recommended view of you doing this is overriding the get-context data because context mix-in is used for most of the generic views, but you can't do this everywhere. You can't copy paste it everywhere. It's not just dry enough. What I would recommend is to use a view mix-in. Now, view mix-in actually does the same thing, but it can be inherited. So if you can use the get-context data, if you have a public feed variable which needs to be there in every view, just define it, just call the superclass first and just define that particular variable and return that context.  So the way you MRO or method resolution order is the most confusing bit of using a mix-in, but it's actually quite easy. Just include your mix-in at the beginning and just put your base class at the end and you're all set. So people who are fans of Monty Python might recognize this. There are people who actually create websites which, I mean, this is a very common requirement in which there are views which should be public. There are views which should be accessible for particular users and unlike the night you need to access, you need to let people give access. So things have changed in the world of Django when it comes to class-based views. The previous implementation was to use a decorator. Most of us are familiar with this decorator log-in required. You just use that for a function-based view. You just wrap the entire function in a decorator, but this is not very nuanced. What happens in a decorator is it takes a function, it just wraps that function inside and it's able to do something before a function is called and after a function is called. It's not able to do anything in between. But it's a little more nuanced when it comes to mix-ins. You can actually use something called a method decorator, which actually is invoked for a particular method. And in the case of log-in required, this is the equivalent code for class-based views. You can actually use, you can wrap this patch for method-based decorator. And all you have to do is derive from this particular thing. So all these kind of design patterns are incorporated in a package called Django braces. Many of us are familiar with this. Django braces actually has a built-in log-in required mix-in. So you don't have to reinvent the wheel every time. Now we come to very simple patterns which are common in templates, surprisingly less used. So some of us who are coming from the PHP world or any other templating language are familiar with how we actually use certain commonly, reuse commonly required pieces of a website when it comes to HTML, right? For example, the navigation menu, the sidebar, the footer, all these things are commonly, I mean, they are repeated across pages. In other templating language, what we typically do is called the include syntax in which we actually include pieces of code which are reused across. But Django uses a slightly different model which is similar to the way you inherit from classes. You actually form a base class or a base template from which other templates are derived and you can actually do this to the end-level, right? You can actually think of certain pages in a particular section having a certain design or a certain structure. And you can override the base template to create a new base template and that base template could be the base for all the other pages in that particular section. So the way I would like to look at it is it forms a simple tree so strictly it does not have to become a tree and that's why I named this pattern as the template inheritance pattern. So this is quite simple to understand. You create a base template or a base HTML which has a lot of placeholders in it. And these placeholders are nothing but block statements and these block statements could have some default values inside them. Now when you derive or extend from this base template all you have to do is mention which blocks you are going to override and what content needs to go into each of these things. And very simply you are getting the entire base structure for free and all you have to do is customize what actual content goes into that. Another common template design pattern you see is the active link. So as you notice in any menu or navigation bar the user should not get lost. They need to know where they are at any point in time. So that particular location is actually highlighted. So here you can see that the user is in the home page because the home is highlighted. This is very easily done using an active class added to that particular link. But how do we implement this in Django? There are surprisingly lot of ways to do this including custom tags and all that. But a very simple way to do this just using templates is to use the include syntax. So you have something called the include and the snippet. So here nab underscore is the naming convention that some people use for snippets. underscore nabbar.htm is there. And you just mention what active link is being used here. So here we are in the second link. So we call active link and set it to a value of link 2. Now the snippet is becoming very simple. All you have to do is you have a series of statements which check whether that particular active link is set to a particular value. If it is set to that particular value just use that link. Now custom tags are also a good way of implementing this but I find it much more easier to use this particular template only solution. So this is just we are just barely scratched the surface. I mean there are lots and lots of templates out design patterns out there and it's quite interesting to think about design patterns as something that you yourself can develop rather than something like a sacred set or a classic set of patterns that you should always follow. So my advice about patterns is it's very easy to overuse them. So I'd like to include how not to use patterns. So one thing is you should not think that you know using a pattern makes me cooler as some architects think. So I should just blindly apply template pattern, that singleton pattern etc etc. Just don't blindly apply the pattern. Every pattern comes with a problem statement, the context. The context is very important. Next we don't apply a pattern if your language supports a direct solution right. So like I said Python has a lot of features that are not there in certain other languages or it's a dynamic typing language so you don't really need to create classes just because a particular function accepts only a particular type of class. There is no typing when it comes to what a function accepts. So just be loose about it. Just follow idiomatic Python or the Zen of Python. Third thing is don't try to retrofit everything in terms of patterns as I just said and finally don't be afraid to create new patterns. Patterns are something that you should share, something that you should create. Finally I would like to say that design patterns are not visible to end users like I said in the beginning of the talk but it is something that you'll be always worried about or something that you'll actually try to seek actively. And don't try to learn patterns the hard way right. So most people try to break their head until they figure out what is the best solution and this is actually the worst thing that can happen to you. Try to study what existing design patterns are and your implementation automatically becomes better. In fact when I read someone's code I find that some pattern has been elegantly implemented. I can actually say that that guy is an experienced developer. I mean he has actually gone through a lot of struggle to actually reach this point where he actually implements or understands that particular design pattern. So try to learn more about it, try to understand what patterns are and soon you'll be finding yourself looking at patterns everywhere discovering patterns and understanding them and creating more beautiful and elegant code. And ultimately it leads to a successful open source project as well like Django uses all these design patterns to create a much more readable and elegant code. So that's all I had questions. Thank you. I think one of the volunteers would come to you. Just raise your hands if you have a question. Questions? So if you rise at the back you can come to the mic there or is there someone from this who I could possibly. There is a mic over there as well. My name is Sanjay. Just a quick question around the user profile thing. I just want to understand now that we can do the extend custom user profiles. Just the reasoning behind not putting relationship status in like why would you still create a separate user profile model? Can you just explain the reasoning behind it? I know you said it's not recommended but can you explain why? Yeah, it's basically to do with separation of concerns. So I think everyone actually when they start their Django project has the user profile built in. I mean the user built in it comes free with Django. But what is the purpose of a user model? The purpose is purely authentication. It's just to ensure that that particular user has the bare necessary details just to ensure that that person can log in to that site or use an authentication mechanism to get into that site. Now this is of course a stylistic advice. If you find that there is more than one line necessary to describe what a model does, then probably we're doing a lot inside that model. So when you say that a user model is being used for authentication and user profile and something else, it means that probably you should think about refactoring that particular model into more separation of concerns. So user profile pattern is basically to separate that neatly. In case you have anything that is related to a user's profile you just have to climb from request to request.user to profile or something that is in the user context. Basically a design advice. Okay, fair enough. Thanks. Hi, my name is Raj Kumar. I'm from mechanical engineering. So I'm completely out of all these field but I started Django last year when I got interested on the web publication design. So when I get into this template design that is implemented in Django is it something that I should consider libraries like Jinja2 as a design pattern for the Django template? Or how should I see these two things? Because people online whatever I see they talk bad about Django template and they recommend Jinja2. So how should I see this? Yeah, Jinja2 is not a pattern so to speak. It's a different implementation of a templating language and the reason why people talk bad about it is the Django template language which comes built in with Django has some performance issues. Performance issues in the sense it becomes almost a one to two comparison when you talk about Jinja. And another reason is because it's a very strict templating language. It does not allow you to include Python code in it. So any kind of logic or any kind of Python programming you cannot do inside templates by design. It's very intentionally kept out of the templating language. So a very common thing which people find comfortable to do is you know put all that business logic into templates. So only when you come to that point which still I do not agree with personally I feel that templates should not have any kind of programming logic inside it. It's only when you come to these two reasons like performance and programming allowed inside templates that you can replace it. And again replacing it with Jinja is very easy. You can probably use Django Jinja package or any third party implementation. It's very easy to replace it also. So it's only for these two reasons not necessarily for any functionality or business logic related. Does this performance come with the concurrent users? No. It's nothing to do with that. It's mainly it's something like the way it is compiled it's almost like running pure Python. So Jinja converts it into nearly pure Python while the implementation of Django templates is something similar to regular expressions. So it's a slight speed up because it's running pure Python code in Jinja. That's all. Thank you. So we have a bit short in time so you can catch him later. So Thank you. Thank you. Thank you.


Hi, my name is Patrick and I know nothing about car care back to a another video. Welcome back to detailing 101 My name is Patrick. I'll put my down. Okay, great This is Tom He is also a member of the McGuire UK marketing team and today is gonna help me out with some top tips in previous videos We've covered wheels tires cleaning the car this obviously had the deep scrub because it was minging so it's just about Saving time. So obviously a lot of people are worried that Going about detailing a car or cleaning it properly Takes a lot of time and it does to do it properly. Yeah, if you can save 10 minutes on the wash and not cutting corners But just be more efficient with your time Absolutely, then you get better results and you could probably save an hour or a bit by the end of the day And all of a sudden it's not a massive job today the products that we're gonna really introduce you to that I think you'll be quite I left over there. Okay, go get it So hide it do like the big There we go, so the new hybrid ceramic wax quick detail is have become a drying aid But they were never really invented and created for that They're created to in the show field in the garage on the drive If there's a light dust or mist of bugs or water Detailers designed to have the lubricant in them and then that lubricant has then evolved into helping dry the car Yeah, this the ceramic wax the ceramic the hybrid ceramic spray wax is obviously brand new for us But it's also it's designed to spray on the car whilst it's wet right without further ado I think we should go give this a test Yep, do you want to show me? Yeah? Yeah We're really covering on here is the basics and again if you are well into your detailing and You know the basics of car care Maybe it's not the video for you But if you are new to this you're new to my guise new to our process and products This can be a great introduction to our different shampoos different processes a little things like two bucket method and grit guard So obviously You won't have had a dry car at the moment Sorry fingers lit so we're gonna wet the car just for the purpose of the video As if we've just washed the car and then we'll carry on from the stages throughout Probably worth knowing because it was clean yesterday. So it's not that we're not gonna wash it It does it you really don't know what you're doing. No, this is why we're teaching you because I know nothing Patrick We're teaching Patrick at the same time. This is literally a whole new brand new thing Pretty good to see there's no very little protection Most people would say none. Yeah, and the reason if you're not so familiar with what you're looking at It's about the water beading in the water sheeting away from the panel as you can see it's very very slowly being pushed away I mean when you do this You literally see how much trouble and in a moment you'll then see how it isn't Sitting and it is sheeting. Yeah sheeting so with this product. It is designed to you don't need a lot as with a lot of McGuire's products quite a rich Formula So just enough just enough to cover the air. Yep, and then I'm gonna get one of our supreme drying towels I'm trying to switch to the microfiber towel And there's a couple of ways that you can dry cars. Obviously you've got a natural Shammy our water magnet But this is the precious way over a Shammy We'd always have a synthetic towel of sort because you can machine wash them and tumble dry them and they're clean to go Every time so they they're a good way. I should probably say dowels trick shouldn't I fold it? 20 times and make 50 towels Fold it 50 times make 20 towels. Yeah If you fold up the towel it gives you a couple of other surfaces So when you wipe away, so we now we're not drying it. We're not rinsing it the first time you apply this you just simply Spray on and wipe off spray on and wipe off Like so I'm gonna come around the car because we've folded it you just turn it to another dry side So rather than chasing a wet towel and dragging it around all the car you literally Just do that now You don't do that every time with this particular product if you've never used it you do this as a base layer Which gives you an opportunity to spread the product and then I'm going to rinse it and wet it now and see The effect that it's had and the coating that has already given us and then we'll spray the product on again Which is what you'll normally do and then you just rinse it away. So I'm teaching you how to We're teaching you how to clean the car you're teaching me how to use a camera. Okay, well you just hold that hi there, right? So I'm gonna go on the other side Like we just said we've just an initial wipe a spray on wipe off for initial application You might get blasted with water. Yeah, I'll come out the way now with this have a immediate effect. Yeah, it should do That's a massive difference. Yeah straight away. It's a massive difference. What it's doing is giving you an initial base layer Yeah, there's still some bits Absolutely, so it's not an even spread. So if you've never used the product before If you have no protection no waxes no protection at all on there We suggest to do that initial spray on and wipe away Absolutely, if you have other protection or you've used the product before I'd suggest to do it how you're about to do it now And that's just small amounts of spray the bottle running. No, sorry, so Yeah, so just small amounts of spray giving yourself an even coverage And then you just simply jet wash it off Now you can see the water clearly running away. I think I can do this for myself. Cool. Well, that's really simple That's literally taking us what? Yeah, and now obviously part of what the help of the drying is because there's less water sat on the panel you go You know I literally Look how easy I come that is literally just a wipe off. Yeah, so it's about serving yourself some time You can use that straight public wax every time if you want and you just spray on so once you've rinsed the car down Spray on rinse it off dry it and it's that easy That's going to give you the same sort of coverage as well protection wise as a wax so that simple spray on rinse off he's giving you Really good protection. Wow. Okay. Well, there you go. Yes quick simple is to use Hybrid ceramic wax detail detailing 101 detailing one oh my hands are so actually some people have said what is 101? What does 101 mean because we're an American brand it's an American term so a bit like over here in the UK We say it's as easy as ABC. Yeah in America. They say 101. So it's the basic principles of learning exactly Do you know what I wouldn't have known that did you know that no So you just you were doing a detailing 101 course and didn't know it did tell him one of one man We came up with the idea. Oh, yeah, let's do detailing 101. I know what that is. It turns out. Yes, again I know absolutely nothing good job. Great job everyone. It's cold. Yeah I Know that is the video. It's so simple so easy make sure you give it a big thumbs up if you enjoyed this video I hope you've learned something like I have because that was really simple and what you're going to do on the new videos I have a little subscribe button in the corner So if you want to hit that one so make sure you like share and subscribe to the McGuys UK YouTube channel Stay tuned for the next episode of detailing 101 You've hybrid ceramic wax yourself if you've got any questions on stuff that you don't know how to do Obviously Patrick's got a lot Stick in the comments box. Yeah, also you can contact us via our website speak to one of the guys Please don't do that speak to either Tom or Dale in any social media channels Instagram Facebook We're heading starting to get to show Susan nearly But right now it's really cold. So let's go inside. Thanks. Bye. Thanks. Bye. Bye


In 10 years, is it sky's the limit for women? I'd like to believe it is, but I think part of it is, is the pipeline, is also the people who are in the seats, because a lot of what you'll find is sponsorship, seats at the table, people who can pound the table for you matter, and although there's more women than ever before, it's still not 50% women or, you know, 75% women if I had my way of the world. Right. And so we're not there yet. And so I think it will change, but it's going to take time. It's going to take time for more women to sit in those roles, for more men to realize women want to sit in those roles. For more daughters to arrive at the table. The conversations I have with my male clients and my male colleagues around their daughters is really, it's cool. It's different. They want to make change for their daughters, even if they have a hard time in that translation, maybe with their wives or their sisters. It's an interesting psychological difference. If you don't talk about inclusion, if you don't change how it is, you're not going to get the best and brightest. So in a way where I think inclusion used to be something you talked about for brand purposes, inclusion is now so core to being a talent played as a completely different conversation. I also stepped into an area in our firm called Social Impact. And so I've spent the last year in our Social Impact practice where I help traditional companies grow and do good at the same time. Combination of those two roles has been amazing because it's about helping our women, but also helping people find purpose in their jobs. That's amazing. So I've had a great year. And I got to believe that is a huge seller when they interview people. Absolutely. It's a huge, I mean, we're seeing on campus that a lot of MBAs are actually focusing in something called Social Impact. It never existed five years ago.


Hey guys, Dylan Schumacher, Citadel Defense, and today we are back painting stuff, and so we're gonna paint this Safari Land holster This is a Safari Land 6360-832. It's for a Glock 17 slash 22 with a TLR1 light or a ITM3 light. I honestly don't know what that light is, so if you do educate me. Anyways, this started life as a Level 3 holster, so it had the the button here, and then it had a hood over top and it had this like plastic guard that protected the Hood and the button. I took the hood off and I took the guard thing off because the guard thing gets in the way I don't need that. I took the hood off because I don't need level 3 and I added a the nub here an extended nub from OT Defense. This was a $30 upgrade that in my opinion is a must on any Safari Land holster. They do make one that fits under the hood as well. This one is too big to fit under the hood, but they do make one that fits under the hood. However, I just wanted ALS. I didn't need a hood. I don't need a level 3, a level 2 is gonna be just fine for my purposes. This is gonna be the new holster that goes on my battle belt, so I am adding some retention to that just because this is Minneapolis and they're gonna defund the police now and all kinds of fun things. So I want retention on my battle belt setup now. So that's what I'm doing, I'm adding that. So this is kind of a blackish color. We're gonna paint it right because black doesn't blend in at night and I just it's gonna match my battle belt which is already multi-cam, so I want some more color matching. It's got to look pretty. If you don't look cool, I don't know what you're doing. So here's what we're gonna do. Here's I'm gonna paint this one. I got a variety of colors. I'm gonna start out with a brown. Okay, I'm gonna try to give these about 24 hours to dry in between. Maybe not that long, 12, 24, something like that. The point is that I want the coat to kind of fully, fully cure. So I'm going to start with a brown. I'm gonna hit it with a brown and then I have three other colors here. I have a dark green, kind of a dark army green. I have a khaki and then I kind of have this army green which is kind of like a puke green. I don't think this is gonna look very good at all. I'm really curious to see what that looks like. But I'm gonna do them in layers. I think I'm probably gonna go dark brown, puke green, tan, and then and then the dark green. And basically the idea there is that as I wear on this and as I beat it up and I wear it and it gets necked and cut and scratched and all that stuff, the paint, the top layers of paint will wear off and show the under layers of paint. And so it'll kind of, one, give it that cool vintage look, but two, it'll add to the camouflage pattern, right? So that as it gets beat up, it'll get more camouflaged and not less. So that's my theory. We're gonna see if it works. I honestly have no idea. I haven't painted anything like that before. Usually I just kind of try to do it in all one coat. So I'll be really curious to see how this how this turns out on this holster. That's my plan. We're gonna paint it now. Okay, just wanted to show you how I decided to tape this. So basically I put sticky side out right here, around here so that it will, I can match up to the edge of the holster like that. And then I just put a piece over the top. I did tape off of the nub right here completely because I wanted to keep that clear. I want to make sure that's gonna still function. I don't want to interfere with the mechanism of that at all. It's super smooth right now. I love it. So this is how I decided to tape it. Okay, we're gonna start with the brown. We'll let that dry. Okay, so it's late at night here. I can kind of see it. The brown has dried a little bit there. So I'm gonna hit it with kind of this ugly puke green color. Not sure if it's gonna show up too well, but that's what I'm gonna hit it with. Okay, we're on day 3. We're gonna go with this kind of tan-ish color. This is a really good base coat I found in a lot of camouflage patterns, so I really like it as a as a good base coat. Okay, so here we are on day 4, and I'm gonna do a coat of the dark green, which is this one here. And So what we're gonna do here is we're gonna put some netting over it to try to get a little bit of a pattern. I don't know. I've had mixed results with this netting in the past, so we'll see how it turns out. But I'm gonna hit it once like this. It actually turned out better than I thought, so we'll let it dry and we'll take it from there. Okay, so here it is. It ended up blending in pretty well. I'm actually pretty happy with how that pattern turned out.  One thing to note about this safari land holster here is that it does have a natural camp built into it, so I put these stoppers here that I had on my T-Rex arms holster on here originally. I don't think they quite fit, but I made them fit and kind of forced the camp in the holster there as you can see that so that it straightens it out. So it's a straight draw. I'm a big fan of straight draw. That's a big deal. Sorry if I muffled the mic earlier. But that's what I did there in order to get it to be a straight draw. But the color scheme itself, I think turned out. I'll be curious to see how it holds up and once I start to get scratches and nicks and wares on it.  We'll see. We'll do a check-in on that. But that's it. It's my new holster from my new BattleBelt. That's how I decided to paint it. Let me know what you think. If you've painted holsters before, I would love you to show me all the stuff you know that I don't know. That's always helpful. Do brave deeds and endure.