Okay, let us continue our discussion of instability theory specifically linear instability analysis. What we are going to do today is we are going to go through formally look at the stability of stratified fluids. So I have an interface between a fluid one and a fluid two, fluid one moving with a uniform velocity u1 fluid two moving with a uniform velocity u2 need to introduce a coordinate system to study this problem. So the velocity vector in one I will call this v uppercase is basically u1 ex and the velocity vector in two is u2 ex the y component of velocity in both these cases is 0. I am going to assume nu1 equal to nu2 equal to 0. So this is saying 0 viscosity. So let me formally write down the set of assumptions and initially the interface is flat. This is the unperturbed as we will see in just a moment at the position at the position y equal to 0. So this is my interface. Now in general each of these fluids one and two can have a velocity in the x and the y direction. So we will just also assume that the flow is two dimensional. So there is no flow in and out of this the plane of the paper neither is there a possibility of any flow. So at the moment there is no flow in the y direction but there is a possibility that things could start to flow in the y direction if they choose but there is no flow in the z direction right now then there is no possibility also of the flow to be initiated in the z direction. That is the meaning of two dimensional flow. So let us write down the governing equations and the boundary conditions for this flow problem. If V i is a velocity field and P i is a pressure field then this is the so i equal to 1 is the top fluid i equal to 2 is the bottom fluid. So I have one this is simply what we very often call the Euler's equations. I am going to write this out in full Cartesian form. So the x and of course I did not mention the continuity equation to go with this that says del dot V i equal to 0 which means let me go back add one more assumption that one fluids are incompressible. So row one and row two do not change with x and y or any other independent variable. So if I write these out in Cartesian form the vector V i is composed of components capital U i and capital V i. So V i being the y direction component in general. So this plus U i let me write this clearly. So this is the equation I will call this one this is two this is three. So let us first you know we have we started with a certain flow configuration that fluid one has a uniform x velocity of U one fluid two has a uniform x velocity of U two fluid one and two both have no y component of velocity. So in this so if I substitute to check if the flow described above is a solution what do we find if I set V i to 0 now I also know U i is constant in time. So from that so if D U i D t is 0 not changing in time this is 0 because it is not changing in x this is 0 because V i is 0. So let me write those down call this this is due to one two three reason one is nothing changing in time reason two. So we are solving each of these equations you have for each fluid you have one set of three equations describing the U i U 1 V 1 for that fluid U 2 V 2 for that fluid for the other fluid. So nothing changing with x and y in each fluid and the third is of course saying V i is 0 likewise V i is 0. So I can say this is due to three V i is 0 this is due to three. So this is 0 due to three this is 0 due to reason number two. So what have we what have these simplified to see I do not know what P i was supposed to do all I know is a flow field. So essentially what this now becomes is that D P i D x equal to 0 D P i D y equal to 0. So all that says is P i is a constant the pressure in each fluid everywhere in the domain is a constant it is not dependent on x and y that is basically what we are learning from saying D P i D x is 0 and D P i D y is also 0. Now I still have not talked of the boundary conditions let us see if what the boundary conditions are I will simply I do not want to go into the detailed boundary condition right now except to say that look I have a flat meniscus for a flat meniscus to remain flat for all times you can clearly see that the pressure in fluid one and the pressure in fluid two have to be equal. So the boundary condition at the interface can be written as this the simplest of boundary condition says that P 1 minus P 2 equal to sigma times kappa where sigma is a surface tension or more specifically we will call it interfacial tension and kappa is the curvature. Since the meniscus is flat everywhere since the unperturbed interface is flat it is easy to see that kappa has to be 0 everywhere therefore P 1 minus P 2 equal to 0 we now know P i is a constant the governing equation said P i in each phase is a constant the boundary condition says P 1 minus P 2 has to be 0 what this says is P i everywhere is equal to P 2 equal to some P. So physically it is just constant pressure everywhere ok so P is just a number this capital P is whatever is the actual magnitude of the pressure and that is the same pressure everywhere both in fluid one and in fluid two. So without loss of generality you will see this a lot so where I know that that particular number has no significance I can give it any convenient value of convenient value in this case I will assign P equal to 0. So if P capital P equal to 0 everywhere and V 1 equal to U 1 E x and V 2 the vector V 1 equal to U 1 E x V 1 equal to U 1 E x and V 2 equal to U 2 E x and P equal to 0. So V 1 equal to U 1 E x V 2 equal to U 2 E x and P 1 equal to P 2 equal to 0 is a solution to the governing equations ok that is just like saying that it is a system where forces are balanced in the ball in a trough example that we saw in the last class ok. So this particular flow configuration is an equilibrium solution is it a stable equilibrium or an unstable equilibrium that is the question that we now have to answer ok. How do we go about that now this interface is infinite in the x direction. So essentially imagine an interface of two super post fluids that has no start and an end that is the kind of interface that we are looking at ok. So if I now take this kind of an interface and super post a perturbation. So I have these two fluids that are co-flowing ok these two fluids are co-flowing and I want to understand if I perturb this interface slightly will the under the action of these co-flowing fluids top fluid moving at U 1 bottom fluid moving at U 2 and mind you we did not make any assumptions on whether U 1 is greater than U 2 or the other way around it does not matter in fact. So under the action of this co-flowing fluids does this meniscus amplitude decay or grow that is the only question that we are interested in asking ok. So if I keep everything else the same but perturb this interface slightly ok what that does is it introduces a perturbation velocity field ok. If I now perturb the interface as soon as I perturb the interface I have introduced a perturbation velocity field to the to both the fluids ok.  So this is a vector I am denoting using ordered pair notation U i plus U i prime is the new velocity in the perturbed interface configuration. So I have introduced a small additional x component of velocity now mind you both the prime quantities U i prime and V i prime both for i equal to 1 and i equal to 2 are both what are called field variables. So these are velocity fields they are functions of x and y and time ok. So U i prime and V i prime are both velocity fields which were not there until I perturb the interface. Now because I have perturbed the interface I want to see what this velocity field would look like. Now whatever be U i prime and V i prime and let us even say the pressure P i is P plus some P i prime ok and P itself is 0 we know that ok. So the pressure in each fluid i equal to 1 is the top fluid i equal to 2 is the bottom fluid the pressure in each fluid is now given by some small quantity P i prime. The key point to note here is that U i prime V i prime and P i prime the magnitudes are much less than the mean flow quantities. So they are infinitesimally small ok this is our new velocity field and this is our new pressure field. These new velocity and pressure fields also have to be function have to be solutions to our unsteady Euler's equations. The reason the previous I showed that we showed that the we showed that the this is an equilibrium solution U 1 prime U i prime and U 2 being constant everywhere and P being 0 everywhere is an equilibrium solution because nothing is changing with time that is the idea of equilibrium it is steady in time. So if I now come to the perturbed case U i prime and V i prime could be functions of time all I want to know is does U i prime and V i prime do U i prime and V i prime decrease with time or do they increase with time that is what I am interested to find out. If the prime quantities increase with time from some small initial starting value that is not good for the stability of the interface ok. So first of all substituting I will call this equation 4 I will call this 4 A and B just to what do we have to do. So what do we find the first is the x momentum equation second is the y momentum and the third is the continuity equation we are quite familiar with that.    So d dx of capital U i is 0 but d dx of U i prime is not 0. So that is left in the calculation still but I have U i that term being multiplied by U i plus U i prime I just want to write it out as two separate terms.   The last term is simply do U i prime d x plus d V i prime d y equal to 0. Now remember U i prime is a small number. In comparison with capital U i so I want some way to compare the magnitudes of these four terms on the right hand side of the top equation on the left hand side of the top equation. So if I there are four terms on the left hand side of the top equation if U i capital U i is order 1.  So that is order epsilon it is like a small number in comparison to 1.  So the second term as a whole is order epsilon the third and fourth terms are order epsilon squared. So if U i if these quantities are all order epsilon, epsilon is some small number. Then what it automatically means is that these two terms have a two prime quantities multiplying each other which means that the magnitudes of these two terms that I have scratched out in this particular equation are very very small in comparison to the terms that I have left. So the error that I will end up making by completely scratching them out of my equation is very small and that smallness becomes smaller and smaller as epsilon goes further and further towards 0. This is the idea of an infinitesimal perturbation. It is so small that epsilon squared is you can ignore epsilon squared in favor of order epsilon and it is a small it is as small a number as possible essentially. Now if I give that much of a perturbation is that perturbation further going to grow or decay that is all I am interested in. I just want to know a direction to the growth that is all. So I can ignore these two terms which are now order epsilon squared in favor of the other three terms that I have remaining. I can do the same thing with this the third equation the both the terms in there are order epsilon. So I really cannot throw away anything. So what I can now do I can rewrite the equations without the terms that I scratched out. So completely throwing away the terms I scratched out in that fashion. I can number these equations now 8, 9, 10 have are important. Now how do I know that they are linearized versions of the governing equation. I want to make sure that you completely understand this idea of linearized version. If you look at these equations they are three equations the three unknowns are u i prime, v i prime and p i prime. I have one pair of three one set of three equations for the fluid one one pair one set of three equations for fluid two.  What we have done is we have linearized the complete Euler's equations about a state that I already know is a solution to the Euler's equation capital u i being constant both in x y and time. E is a solution to the Euler's equation we found that and we have written a linearized version of the Euler's equation around that ground state if you will of u i being some number like u 1 is a number u 2 is a number. So, the u i the capital u i in the equations 8 and 9 is just a number that you already know the only unknowns are the prime quantities u i prime, v i prime and p i prime and these are field variables their functions of x y and time. Therefore, these equations since they do not involve any terms that are non-linear in the prime quantities this set of governing equations are linear. So, I have a system of linear partial differential equations describing the prime quantities. So, now how do I go forward from here I am going to we started to say that the we are going to introduce a perturbation to the interface in the simplest form of perturbation is a sinusoidal perturbation. We will see may be later on why a sinusoidal perturbation is introduced, but essentially what we want is a set of harmonic functions a set of orthonormal basis functions of this of the governing equations of the linearized version of the governing equations that I can use to take any arbitrary interface shape and express as a series of those orthonormal basis functions. This is simply going back to solutions of linear ODE is in fact not even linear PDE's right. So, our idea of coming up with a basis function for this particular geometry that gives me a set of orthonormal basis functions that gives me a set of basis functions in which I can expand any arbitrary interface shape. For this particular case it happens to be a sinusoidal function. So, I will express this as a functional form y equal to eta 0 times e power omega t plus i k x. So, here is I will express this I will write this out a little later on. Now, where did I get this functional form? I want to make sure we understand that. If I expand this out I have eta 0 e power omega t times e power i k x which I can write as cos k x plus i sin k x. If y is a real number then essentially the real part of this is nothing but e power eta 0 e power omega t cos k x. So, I have allowed k k is like is a wave number. So, we will see in just a moment what that is. If I take essentially if lambda is the wavelength then this can be written as eta 0 e power omega t cosine of 2 pi x over lambda. So, when x equal to lambda the phase angle of this wave is equal to 2 pi when x equal to 0 the phase angle is 0. The phase angle goes smoothly as a linear function of the distance from this point here. So, this is a and if I define k to be equal to 2 pi by lambda k is a wave number and has units of per meter. So, we will work in this wave number space much it is easier to work in the wave number space then it is to work in the wavelength space. So, we will define this wave number k equal to 2 pi by lambda and 2 pi by lambda times x in the cosine is a way to describe a sinusoidal or a cosine sinusoidal interface sin and cosine are only off by a phase angle of pi by 2. And on an infinitely long sheet in the x direction it does not matter at the end of the day correct. So, here is a description of this interface now what is eta 0 eta 0 is that amplitude. Now, like I said the only feature of this feature I am interested in is if I impose a disturbance of wavelength lambda or now wave number k is that disturbance going to grow in time or decay in time that is the only part that I am interested in. And we use this function to capture that behavior if omega is a let us just say omega is a real positive number. If omega is real and positive then e power omega t is a number that grows as t increases. If omega is a real negative number then e power omega t is a number that decreases as t increases. So, for a very in the short period of time around t equal to 0 all I want to know is if I give a certain lambda does the omega for this system come out to be a positive real number or a negative real number. In fact, I will go back to now. So, this is the physics of what we are going to look for. So, or rather the mathematics of what we are going to look for, but I find it easy instead of sines and cosines to work in this exponential notation with imaginary with complex numbers. So, we know that I is this number square root of minus 1 and e power i k x is simply cos k x plus i sin k x. So, we are not going to really make the distinction between real and imaginary numbers. We will just say that omega is a complex number, omega could be a complex number, but all I care is whether the real part of omega is positive or negative.  So, really speaking I can let omega be any kind of a it can be a full complex number. The real part of omega is going to basically determine if the disturbance is going to grow in time or decay in time. The imaginary part of that omega is only going to cause a sort of a ripple effect. Omega i is like a imaginary part it is going to cause a wave to be transported in time, but the amplitude of the wave is not affected by that. Amplitude is only affected by this e power omega r t. So, think of it this way k is a real number. I am going to force k to be a real number which means I am giving a real perturbation to the interface. I perturb this interface with some waves of total wavelength lambda or wave number k and I let go of this template that I used to create this wavy interface. As soon as I have let go of this interface is the interface amplitude this eta 0 going to decay or grow further. That is the only way that I care about and that is mathematically conveyed to me by whether omega r is greater than 0 or less than 0. So, essentially this idea of imposing spatial waves and watching is called a temporal linear instability analysis. So, just to quickly recap we started with the full Euler's equations showed that the mean state is a solution. Then we perturbed the interface using the prime quantities and wrote a set of linearized governing equations in the prime quantities which are these equations 8, 9 and 10. And then we said that in order for me to solve them I am going to make this assumption. This specific interface shape assumption and from there we are going to look for solutions of whether the real part of omega is positive or negative. We will continue this in the next class.


Now joined by the head coach of the Mustangs coach Kathy Rayleigh coach there appeared to be a really big moment late in the first half where you made a change at the draw control and you went to Jamie Bittner and it seemed like it really kind of changed everything about this game. Well I got to give credit to Kirsten McClellan who is our draw control or draw person draw coach she was saying that Carly was even though Carly might be winning at her direction or winning it to sort of her side she was not having an eye on it and being able to pick it up so she made the change for Jamie to go there and it actually really helped because Jamie reacts and boxes out a whole lot better than Carly does from that taking the draw position. Jamie may not always win the draw but she is so good at anticipating where it is and boxing out when necessary and moving to wherever it goes whether we win or lose it in our direction so that was a huge change. Yeah and I tried to take Kirsten she did a great job with that. And you were going up against a team that had someone who won a hundred draw controls already this year. You may have also won a hundred today because there were about a hundred and a hundred and fifty draw controls today. It seemed that way. It was it was draw control and shooting practice at Mustang Stadium today. There were 38 goals scored tonight. This time last week there were 15 goals scored tonight. Right. During that broadcast Glenn and I talked a little bit about that your team was a little bit stagnant that night on the offense and not moving so well off ball. Totally different story tonight. That's so good to hear from up top that you can see them moving. We just need to get that we're to the point that we have kind of created some rules of how you what you do off the ball. I thought we made the effort tonight to move in the way we're supposed to. We just didn't go to the right places. We had great practices this weekend where we really were going to the right places. We knew when to fade. We knew when to go set a pick and pick and roll. Today as you could see I think we lost two or three possessions on miss shots because we had no one moving to X. So we just have a lot of people are very excited very game excited. I think you know I think in another week or so I think are just overall creative attack is going to be really really good. I we made it. I think we made it over the hump. I really do. We have that happen the next three days. That's going to say. It needs to happen on Saturday. It needs to happen on Saturday. And you know it could like I really we had a practice I think Saturday or Sunday that I was so impressed. We were I mean our defense is pretty good. And we were scoring at will against our own defense in practice. I mean time after time after time just from off ball movement and creating things creating opportunities for our teammates to get open by using us and picks and picking and rolling. So I think we're over the hump with understanding attack. We just need to execute for 60 minutes attack. Yeah. Since you brought it up let's just get into it. Pretty big one on Saturday. Yes. This is a team that has been a thorn in your guys side for the last couple of years when you face Messiah. How confident do you feel about the way the girls are playing right now going into what we know is the biggest game of the regular season. Well I think we need I think we need two things to beat Messiah. Number one we have to control the clock. Number two I think we need our goalie to be on fire. They're going to take good shots. Mac is a great goalie. We need her to really be moving to the ball and anticipating when shots are going to be taken. You know just we've been we've been reviewing film on Messiah a lot and I think that Messiah strength comes between the 30s. They're very good at doubling and putting pressure on. I think that we're really good with the ball between the 30s. We've got a lot of defenders who have great stick work. You have great vision of the field. So I think it's going to be a battle between the 30s. If you ask if you ask me now that's assuming that we have you know like a hot we need a goalie that's going to make some saves and and I thought Mac really got it together at the end of the game. And you know it's good that we got to play everybody tonight. That was that's a great great scenario that you can get every single kid on your roster in you know with five or six minutes left.  How nice was it to see her get going here tonight. You know she's got such great vision on the field and she's so because of her height she's so easy to see. I thought tonight she made hard cuts that really allowed our attackers to have vision of her stick vision of her moving through. She also was one of the ones that really executed the pick and roll very very well today.  My favorite part is that she finished with great shots to the open net. So I'm super proud of her. I'm very happy. I hope she gets the scoring bug. That would be nice. That would be nice. And you just add another threat. So we're hoping that Messiah is now saying you know what we can't just watch Keely Buns and Carly Bows. Now we've got to watch this person and this person and this person and this person and then we have a shot. Congratulations on a big win tonight. Thank go get them on Saturday. She's coach Kathy Ray.


The buddy-toe water rescue is an evolution in both the seal and swick pipelines. This is a rigorous exercise that each student must pass during training. The exercise begins with the students executing a stride jump and entering the water. The student will then rescue crawl stroke to the simulated drowning victim. Once there, the student will assess the victim and do what's called the head-escape method to avoid the struggling victim. The student will need to get control of the victim and put them in a straight-arm collar toe. The student uses the straight-arm collar toe to control the victim. Once the student has the victim on a lateral plane, he will transition to a cross-chest carry and swim 25 meters with the victim under control. If at any time the student doesn't execute the stride jump, the head-escape method, or the cross-chest carry, or the victim is not able to continue a normal breathing cycle, the student will fail. One way to practice at home is to learn the total immersion swim technique or to consult with a lifeguard or swimming coach. Remember, always swim with supervision from a qualified lifeguard.


The floor may not be a robot. If you have a heart condition, do not watch this, or read the pasta. You will drop to the floor, flopping like a fish, while clenching your heart, seeing as you are having a heart attack. Also, if you have a sensitive anus, like I said, do not watch this, or read the aforementioned pasta. A brick you shed will be painful. A few years ago, a man was walking down a road, because his car broke down, and he saw a car coming up behind him, so he stuck out his fun to hitchhike, and the car stopped ahead of him. He ran up to the passenger side, and opened the door. When he opened the door, a skeleton popped out.


Hello friends, I am Sanjay Gupta. I welcome you on Sanjay Gupta Text tool. So in my previous video, I demonstrated you how you can create processes through process builder. Now in this video, you will learn how we can clone existing process so that we can update some things or some criteria or actions in a particular process to the help of process builder. So here you can see clone button is available. So we are going to clone this process with the help of this button. So before that, if you want to watch Salesforce related or process builder related videos, you can search my name Sanjay Gupta on YouTube and you can follow my YouTube channel. So now coming on to the topic. So here you can see if I click on this account. So we selected start the process only when a record is created. So now my requirement is I want to execute this process when a record is created as well as it is edited for both operations. But now I'm unable to select the second option. Why? Because this is activated already. And if you want to update any process, you need to clone it. So I'm clicking on clone button. So as you click on the clone button, you will see two options, version of the current process or a new process. So if you click on version of current process, so this existing process will be a clone and a new version will be created automatically under this name, which is already available for this process. If you click on a new process, so this process will be cloned as a new process and you have to provide a new name for this process. It means you will be having two separate processes, one is existing and one is the new one. But if you don't want to create a new process or another process, you can just select version. So right now I'm selecting a version of this current process, clicking on save. So as you create new versions, so existing will be deactivated and this will be available for activate. And after implementation of the second version, if you want to activate your first version, so you can deactivate your second version and you can also activate your previous version. So that we will see after activating this one. So now I'm clicking on this account. So if I choose this option or when a record is created or edited, so I'm now able to choose this one and I'm clicking on save. So you can see this option is selected. Now it is updated. Now we need to click on activate so that this version will be available for execution. Now if I click on view all processes. So here you can see two versions are available for this process. Version one is inactive and version two is active. So if I deactivate version two, then I can open this version one and I can activate it again. So this way you can create several versions as per your requirement and you can activate which one you want to execute. And if you selected a new process, then a new process name would have created and there will be no versioning between them because they are two separate processes. So you need to clone your process smartly as per the requirement. So now our process is updated and it is available for use. Now I'm going to create a new account record. Its name is new process to and I'm leaving type as blank and you will see active pick list values all will will also be blank. So I'm saving this record record is created. If we see the details, you will see type is blank and active is also blank. Now I'm going to edit this and I'm selecting type as prospect and clicking on save. So here you can see active is equals to yes. So it is updated automatically with the help of this process that is created through process builder. So I hope you understood how we can clone existing processes that are available in process builder. Right now if I clone this and if I select a new process. So I'm naming it as update account record new process description. And I'm clicking on save. Right. So new processes created you can see name is updated. Now if I click on view all processes so you can see two different processes are available here. So it is having two versions and it is having only one that we created right. So this way you can clone your existing processes. Those are available in process builder and accordingly you can update the things that you want to do. I hope you understood whatever I demonstrated if you want to watch more Salesforce training videos. You can search my name Sanjay Gupta on YouTube and you can follow my YouTube channel. Thank you for watching this video.


Everybody for us tier rip in 2021 contenders football first off the line and hobby four box mixer number 23 It's a random team style break. I'll let you check out the results right here. Thank you everyone for joining a good luck geez man, I'd show up at like I'd show up at like Honestly You figure as you go, you know The good news is you'll be chilling tomorrow night And guys we got to hobby and to First off the line, we'll start with the hobby JG filly rookie ticket auto Jags So panda Josh Allen wedding ticket remember that song What a song what a song yeah, Greg Russo rookie playoff ticket auto bills 85 and 99 God Baker Usually the butcher now in the candlestick maker. It's all we need Was this a redemption Round numbers. This is Jags. I'm gonna roll now for this though. Let's have the redemption on top of the packet One two three top four five six bottom. This is gonna go for the whole break on the round numbers But this is Jags obviously I'm just doing it now as we get out of the way And again, so top here Top for the whole break now that is unless there's an auto or a one-of-one in which case we're gonna random instead just FYI redemption JC horn a rookie ticket reverse Those are pretty rare nice hit for the Panthers JC horn Spectres up next everybody.  It's very close to filling Very close that was it seven six now, maybe I don't know contenders Matt Stafford See orders coming in. Oh, I just see I think we're down to four for We're at four supernatural Tom Brady rat for to go on the spectra Anthony Schwartz Browns cracked ice nice hit Brown 16 of 21 Cleveland's teams like that not the most fun to get in a random, but hey, there's a cracked ice rookie ticket for you a waddle rookie of the year Eat that Herbert spectra Or in sap who's got the chain on who's got the Padres chain on is it a Clevenger Paul, how'd you do in the hurricane man? I Know you're over that way That's gonna get a hurricane of hits here in a little bit. I don't do the chain anymore. It's a curse Josh hater and to close it out He's got a six run Lee seems pretty safe Jeff link for the spectra in the next way. Yes Gain well We'll do recap on this one One Ernest Brown the fifth Ram's rookie ticket auto Destruction Amen glad you're okay. Sorry you've got some damage though Yeah, we didn't get a ton of wind up here, but my brother's neighborhood is underwater I haven't heard you picture. Have I know it's pretty wild chain movers Michael Thomas.  Yeah, the storm surge was insane man that Came quick through came the year Trace sermon The slow flood along the same John's River those crazy right now They're saying it's not gonna be back to like where it normally is for like another another three weeks from like now Really? Yeah from like now and it's been dry since that storm no rain whatsoever since that storm It's it's kind of wild slow moving river. I'm going back Tuesday. I think yeah Do some more whatever Daffy away Ravens cracked he's back-to-back boxes with the cracked ice is actually insane 1921 Ravens nice. Oh, he's a good defensive player, too There we go man. Oh She's a big names now Talon Wallace.  Yeah, Santa Bell was it's gonna it's gonna look different forever, right? Yeah Kyle and Hill rookie ticket auto for the Packers Nico Collins and Mario Rogers there So yeah, Paul my family every year we still camping at K. O'Costa And I remember when that when Charlie hit K. O'Costa all those like Australian pine trees They have their words gone just go there every year man Victor demokage a rookie ticket auto for the Cardinals three months sounds pretty normally have to rebuild so much Chain movers Marshall Falk Ellerson Smith rookie ticket auto Giants or some dust on the Ellerson Smith radio winning ticket 11 to go in the mixer guys. Let's get these breaks filled up. I've got Khalil Mack We are Getting there. I appreciate you all Devontae Smith Jalen waddle Yeah, we've been trying to fill it all night It's coming up soon Two to go on spectrum now though, whoo a sermon Ricky the year to 99 Niners So I think Sam saw one for me tomorrow. It's gonna be wild This one says on the schedule You can try to be trading me in fancy ball all night. I bet I need cash though Got a 2-2 outlaw rookie playoff ticket RPS redemption for the Rams 2-2 out. Well, all right decent boxes There are two crack dice in each box. I mean Not much more you can ask for one more out Oh That's it again, man. The Mets did it again. See you Matt. They did the Mets thing they always do No, good news for the Mets. At least you got an owner that cares about winning now. He signed all the good players photo time Brandon, what's up, man? Dude hater is He had that really rough stretch when he first got traded there But good Lord is nasty the arm angle and the end of velocity and the movement. It's kind of it's kind of insane That's like Chris saleable more velocity Trask a redemption pat fry mooth rookie ticket rps red zone variation. There you go. Steelers on the red zone first off the line Moose Steelers Harrison Lions has good teams to get man.   Oh, that's nice for shod Bateman draft class rookie auto 36 to 49 Ravens The ins I I said it a lot when we're ripping a lot more contenders, but the inserts in 2021 were freaking awesome Looks so clean Got Tyree kill nice hit Ravens there Larry roundtree the third rookie ticket auto chargers Chase rookie to your insert Come on buck Get your guys to do something The marge axon winning ticket. I mean not much you can do when your guys want to score runs Oh, damn. Yeah Shorts and sermons spectra sold out Let's go Spectra is sold out. That's right y'all We just got the mixer left save Sarat rookie ticket auto lions Rookie to your Zach Wilson Dude, Evan scored again. Dude Tom Brady loves Mike Evans He hasn't had a big body receiver like that since basically Randy Moss As far as like a capable big-bodied receiver Oh My old Sanders Eagles red zone season ticket supernatural Brady. Here it is I don't know. Hi My homes Right one more photo Let's see a big photo hit for one of the uh Spots that has a red like the on-card the red zones That'll do it Padres Dodgers y'all who you got Oh, that's gonna be a fun one The rivalry the divisional rivalry Damn Tatees. Why'd you have to go and be a fool? Oh, man with Tatees there. He's so good There he is gonna be very good dillon stoner raiders rookie ticket auto a supernatural Trevor Lawrence He flipped it over to the wall game. Yeah, so I know what's going on here Kyler mvp consenders No, we did not steal her. I think we were shipping it sealed. I don't know how much we got Jason pinnick jets rookie playoff ticket auto 3 of 99 smith gladiators james harrison That's true. That's true van. You got a rustle. What's the season ticket? That's how you beat the Dodgers. You just beat the pirates season ticket red zone sequam barkley for the giants As a patriots fan, I used to say that during their Superbowl years the last Superbowl They won every team that beat them in the regular season missed the playoffs and I was like, hey, that's how you do it, right? All the teams that can beat you just don't make the playoffs. You're good against the good teams. You're bad against the bad teams Justin Herbert MVP contenders Dude must grow his filth. Did he was so filthy buck show up or thought he was cheating? He was so good. He's like, all right, this guy's gotta be cheat. Look at that slider. He's gotta be cheating How do you get that spin rate on that thing? Uh beatman and Tony's looking for a red zone here Come on Is it is it it's Ian book red zone rookie ticket auto Saints Saints on the book Pirates best team in the league. I mean, hey, they beat the best team in the league That's just a case of the Dodgers like seriously taking days off against that team You like Mitchell rookie ticket auto for the 49ers How many games would they have won if they would have just Had a winning record against the pirates Born moon Yeah, must grow was like Sai young frontrunner in the national league to start the year him and I him and I'll contra or like neck and neck My home is glad or no. Matthew gladiators redemption is Talanoa hofunga rookie ticket Niners Pretty good starting safety now for the Niners we're from uh Riva's got a field goal Tom Brady like a drone Bengals Ravens couple two and two teams can't they do better on Sunday football come on now Can we get some winning teams like the like the Giants and the Cowboys? All right, let's do a really quick auto recap Then we're on the spectrum Niners redemption Talanoa hofunga Niners Eli Mitchell red zone Ian book for the Saints pinoc playoff ticket jets Dylan's donor Raiders lion sage Sarat Chargers on a round tree draft class Bateman to 49 Ravens Steelers red zone redemption fire booth Rams rookie ticket tutu Atwell Giants Ellerson Smith cardinals diva kj Packers kylan hill cracked ice or dot by oa ravens to 21 Anthony Schwartz a 21 cracked ice for the Browns Panthers rookie ticket jc rookie ticket reverse jc horn. That's a pretty cool one Panthers um Rams Ernest Brown Pills great or so playoff ticket and a j2 fele for the Jags that'll do it. Thanks everybody spectrums up next


Live from Stanford University, it's theCUBE. Covering Stanford Women in Data Science 2020. Brought to you by SiliconANGLE Media. Hi, and welcome to theCUBE. I'm your host, Sonia Tagare, and we're live at Stanford University, covering the fifth annual WIDS, Women in Data Science Conference. Joining us today is Nisha Jami, who's the Director of Urban Water Policy for Stanford. Nisha, welcome to theCUBE. Thank you for having me. Absolutely. So tell us a little bit about your role. So I direct this Urban Water Policy Program at Stanford. We focus on building solutions for resilient cities. We try to use data science and also the mathematical models to better understand how water use is changing and how we can build future cities and infrastructure to address the needs of the people in the US, in California, and across the world. That's great.  So give us a preview of your talk. Sure. So the 20th century water infrastructure model was very much of a top-down model. So we built solutions or infrastructure to bring water to people. But people were not part of the loop. They were not, the way that they behaved, their decision-making process, what they used, how they use it, wasn't necessarily part of the process. And we assume there's enough water out there to bring water to people, and they can do whatever they want with it. So what we are trying to do is we want to change this paradigm and try to make it more bottom-up to engage people's decision-making process and the uncertainty associated with that as part of the infrastructure planning process. So I'll talk a little bit about that today. And where is the most water usage coming from? So interestingly enough, in the developed world, especially in the western United States, 50% of our water is used outdoors for grass and outdoor spacing, which we don't necessarily, our lives don't depend on it. I'll talk about the statistics in my talk, but grass is the biggest crop you're growing in the US while you're not really needing it for food consumption and also uses four times more water than corn, which is a lot of water. And in California alone, if you just think about some of the spaces that we have, the grass or green spaces we have outdoors in these malls or institutional buildings or different outdoor spaces we have, some of that water, if we can save it, they can provide water for about a million or two million people a year. So that's a lot of water that we can be able to, we can save and use or actually repurpose for needs that we really have. So does that also boil down to like people watering their own lawns or is it the problem for much bigger grass usage? Actually, interestingly enough, that's only 10% of our water outdoor water use. The rest of it is actually the residential water use, which is what you and I, the grass you and I have in our backyard and watering it. So that water is even more than that amount that I mentioned. So we use a lot of water outdoors and again, some of these green spaces are important for community building, for making sure everybody has access to green spaces and kids can play soccer or play outdoors. But really our individual lawns and outdoor spaces, if they are not really a native landscaping, it's not something that we use enough to justify the amount of water you use for that purpose. So taking longer showers and all this stuff is very minimal compared to... No, not at all actually. Those are also very, very important. That's another 50% of our water that we use in our urban areas. It is important to be mindful the way we wash dishes, the way we take shower, the way we brush our teeth and not wasting water while you're doing that. And a lot of other individual decisions that we make that can impact our water use on a daily basis. Right, so tell us a little bit more about, right now in California we just had a dry February, which is the first in 150 years and this is a huge issue for cities, agriculture and for potential wildfires. So tell us about your opinion about that. So the 20th century's infrastructure model I mentioned at the beginning, one of the flaws in that system is that it assumes that we will have enough snow in the mountains that would melt during the spring and summertime and would provide us water. The problem is climate change has really, really impacted that assumption and now you're not getting as much snow which comes back to the fact that this February we have not received any snow. We are still in the winter and we have spring weather and we don't really have much snow on the mountain which means that's going to impact the amount of water we have for summer and springtime. This year we had a great last year, we got enough water in our reservoirs which means that we can potentially make it through. But when you have consecutive years that are dry and we don't receive a lot of water precipitation in a form of snow or rain, that would become a very problematic issue to meet future water demands in California. And do you think this issue is along with not having enough rainfall but also about how we store water or do you think there should be a change in that policy? Sure, I think that it definitely has something also in the way we store water. We definitely, we are in the 21st century, we have different problems and challenges. It's good to think about alternative ways of storing water including using groundwater sources, groundwater as a way of storing excess water or moving water around faster and making sure we use every drop of water that falls on the ground and also protecting our water supplies from contamination or pollution. And do you see us ever going to desalination or to get clean water? So interestingly enough, I think desalination definitely has worked in other parts of the world when you have smaller population or you have already tapped out of all the other options that are available to you. Desalination is an expensive solution, costs a lot of money to build this infrastructure and also again, depends on this centralized approach that we will build something and provide resources to people from that location. So it's very costly to build this kind of solutions. I think for California, we still have plenty of water that we can save and repurpose. I would say and also we still can do recycling and reuse. We can capture our storm water and reuse it. So there's so many other cheaper, more accessible options available before we go ahead and build a desalination plant. And you're going to be talking about sustainable water resource management. So tell us a little bit more about that too. So sustainable water resource management and occasionally I use also the word like building resilient water future. It's all about diversifying our water supply and being mindful of how we use our water. Every drop of water that we use is degraded and needs to be cleaned up and put back in the environment. So it always starts from the bottom. The more you save, the less impact you have on the environment. The second thing is you want to make sure every drop of water that we use, we can use it as many times possible and not make it, not take it, use it, lose it right away, but actually be able to use it multiple times for different purposes. Another point that's very important is actually a majority of the water that we use on a daily basis doesn't need to be extremely clean drinking water quality. For example, if you tell someone that we are flushing down our toilets, drinkable water, it would surprise you that we would spend this much time and resources and money and energy to clean that water to flush it down the toilet without necessarily using it. So basically rethinking the way we built this infrastructure model is very important being able to tailor water to the needs that we have and also being mindful of how we use the resource. So is your research focused mainly on California or the local community? We actually, the solutions that we built are now California focused. Actually, we try to build solutions that can be easily applied to different places. Having said that, because we are working sort of a bottom up way, we approach water from a bottom up, you need to have a local collaboration and local perspective to bring to this picture. And a lot of our collaborators have been so far in California, we have had data from them, we were able to sort of demonstrate some of the assumptions we had in California. But we work actually all over the world, we have collaborators in Europe, in Asia, and they're all trying to do the same thing and we are trying to sort of collaborate with them on some of the projects in other parts of the world. That's awesome. So going forward, what do you hope to see with sustainable water management? So to be honest with you, I would often be thinking about technology as a way that would solve all our problems and move us out of the challenges we have. I would say technology is great, but we need to really rethink the way we manage our resources and the institutions that we have and the way we manage our data and information that we have. And I really hope that we can revolutionize that part of the water sector and disrupt that part because as we disrupt this institutional part and provide more system level thinking to the water sector, I'm hoping that that would change the way we manage our water and then actually opens up space for some of these technologies to come into play as we move forward. That's awesome. So before we leave here, you're originally from Tehran and now you're in this data science industry. What would you say to a kid who's abroad who wants to maybe move here and have a career in data science? Sure. I would say study hard. Don't let anything to discourage you. We are all equal. Our brains are all made the same way. Doesn't matter what's on the surface. So I encourage all the girls to study hard and not get discouraged and fail as many times as you can because failing is an opportunity to become more resilient and learn how to grow. And I really hope to see more girls and women in these engineering and STEM fields to be more active and become more prominent. Have you seen a large growth within the past few years? Definitely. The conversation is definitely there and there are a lot more women and I love how Margo and her team are sort of trying to highlight the number of people who are out there and working on these issues because that demonstrates that the field wasn't necessarily empty, was just not highlighted as much. Right. So for sure, it's very encouraging to see how much growth we have seen over the years for sure. Nisha, thank you so much. It's really inspiring all the work you do. Thank you for having me, Sonia. Absolutely. Nice to meet you. I'm Sonia Tagare. Thanks for watching theCUBE and stay tuned for more.


Hey everyone, my name is Sophia, a master's student from Dance Studies. Today I'm here to talk about my research, the absentee, a chorographic exploration of absence through presence. And I have two musicians and seven dancers participate, and I've listed their names on the screen, but unfortunately I've only got three dancers today. Before getting into my research question, I want to talk about the background of the research. I am conducting this research under the Master of Dance Studies at the University of Auckland for examination purpose, and this research will outcome in both academic writings and chorographic performance. The aims of my research are to find out meanings absence has to presence and to develop a chorography of absence. My research also aims to find out the relationships absence and presence may have so that I may build new conversations between the two. For achieving my research aims, I thought to use the theories of qualitative, practice late and post-positivism as the methodological paradigms. The reason for me to choose qualitative is because it values the ways of knowing. By using a qualitative paradigm, I can have chance to explore understandings and knowledge of human hands, and more importantly, by using a qualitative paradigm, I can promote more possibilities variations and new thoughts for my research. And a post-positivism paradigm emphasised on making meanings through the way of researching, and it can be linked to practice late research as they both look for making meanings along the process of the research. And a practice late research can be understood as subjective, emergent and interdisciplinary. It emphasises and indicates on knowing from the process of doing or making. As a dancer and choreographer, it seems natural or logical for me to make a dance pace as the way to explore my research query. The methods I use for this research is student practice, to which I will take my dancers with me to a dance studio, and I will also give them some choreographic tasks decided by me. And the choreographic task is basically like something related to my research questions, and I ask to my dancers, and instead of answering that, they will answer it in a dance way. For example, if you ask me, like, what's your name? I will not say my name is Xiaofeng Fu.  And I will observe my dancers doing the way of research, and I will also journal my thoughts along the whole research process. A dance performance is also part of my research method, to which this performance will show in a dance theater with audiences and my examiner, so that I can show them really a performance of absence. From my literature, I've been looking at ontology, drawing references on absence and presence. I also look at the choreographic process. Hontology can be divided into two parts to which the ontology of being in present is haunted. Hontology indicates something that happened before, slides into presence to which this before, or past, or absence is not over and waiting for a chance to return or to come back. So why is ontology meaningful for this research? For me, it is an announcement of the return of absence coming into presence. And I also look at the meanings absence and presence have, and by looking at the word, absence means a list of something, a nothing, or something which no longer exists. Presence on the other hand means to be here or being here. They're totally adverse concepts but they cannot be separated because without absence, presence will lose its meanings and vice versa. I've been looking at different artistic disciplines and I've been looking at what artists do by using the concept of absence and presence in their art practices. Visual artists, for example, have been using the concept of absence and presence to create an image of destroyed land or buildings or environment. As Woodhead stated, the disappearance or absence of material can possibly evoke or mark defecational presence. I also look at the choreography process so that I can make my choreography and it can give me clear idea of how to make a choreography of absence and how to structure it into the research. Here comes to my emerging ideas. To explore or to perform absence, we need to figure out what this absence is or what can be this absence. As said by Deirdre, we need to find out it by standing before it, standing before absence. So from my understanding, I think it's to find out weird absences by looking back to our past. I have given my dancers a choreography task. I ask them to write down the significant moment in their history in relation to absence right down to a piece of paper. And when I get a piece of paper, I ask them to create static positions out of the sentence they wrote. And when I got all the movement materials and I put them into a piece and I call them the history of absence. It's necessary to create a disorder time. It's necessary to let the past time to come to presence, possibly audiences, so that they can have a new thought on the concept. It also contributes to practice research as the new research approaches will be found along with the process of the research. Concept, absence, and presence. And I'm sure that there's still a lot of things waiting for me to discover. And thank you all for today and this is the end of my presentation. If you have any questions, please feel free to ask. Thank you for the performance and the presentation. That was fantastic. I'd like to know how you chose to use the space to convey your concept of absence. Yes, actually the first time when I tried to develop a piece of absence and presence is come to my personal experience. Because like I'm a dancer and I learned it in a really young time. And one time when my teachers stretched and made and I was passed out and at the time I felt like I am absent, but at the same time I'm still alive and I'm also present. So that came to my interest to make a piece of to perform absence through presence. If you answer your question. Thank you very much for that. So I'm also interested in absences and presences and hauntings in my own work. But in a very different way and explained through a kind of written medium rather than dance. I was kind of thinking about the differences. I guess almost the pros and cons of the different mediums in the sense that with dancing must be an enormous challenge to make present things that are not physically here that are absent to actually put them on stage. I'm curious about how you go about that. But also some of the benefits to dance. So that when I think about absences in my own life, they're very much felt I think of people that are no longer with me or far away. They're things that haunt me in a very emotional effective way. So I'm curious about what you think about dance as being able to kind of in life and point to that. I think because this is just part of my choreography. So and originally this piece has seven dancers. So maybe when all of them are here, the sense of absence and presence could be a bit more and could be a bit stronger. And I also have a saying of funeral. Yes, and to mark the actually absence. But actually even the one is that is show absence in our life. But we can still like remember her or him. And we can still remember the time when we were getting together with her or him. So which means it's like not all the memories are sad. It's sometimes like we have happy memories. So I think the absence is what makes us who we are today. Yes, so it's not about like the down or fall all the time. So I really much enjoyed how you integrated your narration there with your dancers. I thought that was quite different. I was wondering if you just told me the significance of that piece there and conveying your message of absenteeism. The dancers came over and interacted with you which is quite different from what I normally see narration being quite separate. Yes, because I think absence can mean potentially a lot of things. For example, if I'm talking and suddenly like I'm thinking other things. That's kind of absence. And if I'm presenting my presentation and suddenly I've been controlled or manipulated by others. It's also kind of absence because I'm not focused on the presentation anymore. Yes, so I think that just being one of the ways to play with the concept of absence and presence.


Yes, thank you for the presentation, Marco. This is going to be a quick demonstration of the API in the new version of the PSL Python library that was released earlier this year. So as you can see in the shared screen on the right-hand side, there is a live seed of my PSL board. Hello. So you can see what I'm doing. I will be connecting some wires and some resistors and stuff to it later. And on the left-hand side, there is a iPython shell, which I will be using to control the PSL. And I will try to go a bit slow so that you can hopefully follow along. But first things first, this is not an introduction to Python itself. So in order to follow along, it's good to have some familiarity with Python, the programming language already. Otherwise, it might be a bit difficult to follow. First thing we're going to look at how to do today is how to install PSL Python. A few months back, it is available through the Python package index, which means that we can install it using the install PSL. In my case, I already have it installed, of course, so that was very quick. But it should be basically the same for someone who does not already have it installed. The second step that is required for Linux users only is to allow your current user to access the serial interface to the PSLab device. Some Linux regular users typically do not have sufficient permissions to access serial devices unless they are members of the dial-out group. And in that case, you need to install something called a UW rule. And that can be installed by running PSLab install after you have installed it from a pip. So in my case, I have already done that, so it just tells me that that's already done and not necessary. You may need to run that as a route. Okay, once that is done, we can import PSLab. And then let's first take a look at the oscilloscope instrument. So first we need to connect to the PSLab board, which is done by instantiating the science lab class. You can see that the LED on the board turned green, which means that the connection was successful. So let's start by capturing an oscilloscope trace. So the science lab class is an aggregate which holds all of the other instruments. They can also be instantiated individually, but we're not going to cover that today. So the PSL object, which is a science lab instance, has an oscilloscope attribute, which we can use to capture an oscilloscope trace. The capture method takes the number of channels on which to capture samples as the first argument. So we will capture samples on one channel for now. The second argument is the number of samples to capture, which can be at most 10,000, which is what we're going to do right now. And the third argument is the time gap between each sample in microseconds. For now we are going to use one microsecond. You can see that the system LED on the PSLab blink, which means that it's performed some kind of action. So we're going to want to plot this, so let's import matplotlib to do that. We can plot the timestamps, which we got in the X variable against the voltage levels at those timestamps. And there we go. So as you can see, that was not very interesting because there's nothing connected to the board right now. So all of the samples are, of course, very close to zero. So what we're going to do is you're going to connect one of the analog outputs, specifically the one labeled SI1 to one of the analog inputs, specifically the one labeled CH1, channel 1. There we go. We can use the waveform generator instrument to generate an arbitrary waveform on the analog output pin that we just connected by calling the waveform generator attribute of the science lab instance, the generate method of that attribute. The generate method takes the number of channels on which to generate waveforms as the first argument or alternatively you can name a specific channel on which to generate the waveform. The second argument is the frequency of the waveform. So by default, the waveform that will be produced is a sine wave, which we will see in a moment. So now we are generating a sine wave on the analog output. Let's see if we can capture it on the analog input. So we will rerun the capture method. There we go. Let's plot that again. And there we go. That's much more interesting. We can see that we managed to capture a sinusoid. If we do the math on this, which I'm not going to do, we will find that the frequency is indeed one kilohertz. So that's capturing a single channel. You can also see that in this case the trace starts at an arbitrary voltage, which we might not always want. So if we rerun the capture command and plot it again, it will start at a different voltage. A common feature of oscilloscopes is the ability to trigger the capture at a specific voltage. And of course the PSLab can also do that. So we will add a trigger condition to the capture call. It will trigger at zero volts. When the signal passes zero volts from low to high, the capture will begin. I'm going to run that command twice because there's sometimes an intermittent bug that makes it not work the first time. There we go. Now we can see that the capture trace starts at zero volts. We can also trigger at a different voltage. We could trigger at 1.5 volts, for example. And then we see that the trace starts at 1.5 volts. We can also capture on multiple channels simultaneously. So I'm now going to connect another analog output to another analog input, specifically FI2 to CH2. Let's see that. So we will again call the waveform generator attribute and the generate method of that attribute. This time we will generate waveforms on two channels simultaneously. We will still use 1,000 hertz at the frequency. And we will offset these waveforms by 90 degrees. Now let's capture some traces again. So now we have to capture two traces. So we have to add another variable, start here, capture on two channels. And now we have to reduce the number of samples to capture because the total number of samples, which is the channels multiplied by the samples, must not be higher than 10,000. Okay. Let's take a look at that. We will plot X versus Y1 and X versus Y2 because the timestamps are of course shared between the samples. There we go. You can see that we are now capturing two sinusoids and they are indeed offset by 90 degrees. The analog or rather the arbitrary waveform generator can output waveforms other than sine waves as well, of course. So we will reconfigure one of the channels to instead output a triangle waveform. So then we call the waveform generator attribute and use the load function method, which takes the channel name on which to load a new function as the first argument and it takes the type of waveform as the second argument. So here I will be, here I'm loading a triangular waveform. So triangular waveform is predefined in the library. So we only have to specify that as a string. We will see later that we can also specify arbitrary functions. Let's start with this. Now the waveform on the second channel should be triangular, no longer sine and soil. Let's see if that is the case. Indeed, that worked. Fantastic. So you can see that the settings are otherwise preserved. The frequency and the phase are the same as before. It's only the shape that has changed. Let's see how we can load an arbitrary waveform into the other channel. So to do that I'm going to import numpy. If we can't load two superimposed sine waves into the first channel, to do that I'm going to import a lambda function to the load function method. So let's say that we want to pass the following function, sine of x plus a higher frequency sine of so that's on top of that. Then we also have to pass the span across which this function is defined. So we didn't have to do that when we loaded the triangular waveform because that is predefined in the library. But if you're loading an arbitrary waveform that is not predefined then you have to specify the period across which this function is defined. So we will define it over zero to two pi. Let's take a look at what that looks like. There we go. As you can see on the first channel we are now outputting two superimposed sinusoids. First there's the one kilohertz sinusoid as we saw before but there's also a five kilohertz sinusoid with a lower frequency superimposed on top of that sinusoid. So that's how you can load arbitrary waveforms into the PS lab. Let's take a look at if we can't load a square waveform and see what that looks like. To do that we will take the absolute value, rather we take x, and then we will divide x by the absolute value of x. So that will be minus one for negative values of x and one for positive values of x. We also have to consider zero. We don't want to divide by zero so we will add x equals zero here. So if x is equal to exactly zero this part here will be equal to one and otherwise it will be equal to zero. This is to avoid division by zero and we will define this on the span minus one to one. Then we will capture that and see what that looks like. So as you can see we are now outputting approximately square waveform. Since I did not multiply the function by three the amplitude of the waveform is now one to minus one. We can also increase the amplitude by multiplying this function by three, up to three. The voltage cannot exceed three volts, or 3.3 volts I think, like that, and there we go. Now we have a square waveform with a higher amplitude. There is also a different way to generate square waveforms using the PS lab and that is to use the PWM generator which is what we are going to look at next. So I am going to disconnect the first channel from the analog output and connect it to a digital output, specifically the digital output labeled SQ1. There we go. So now we will call the generate method of the PWM attribute of the science lab instance. We will generate on one channel, we will generate a waveform, the frequency of 1,000 hertz and a duty cycle of 50%. Let's take a look at that. All right. So now the triangular waveform disappeared which is because some of the digital outputs and analog outputs share hardware resources so we will actually disconnect that as well. We can see what's a bit more clearly and then we can just capture a single channel. We don't have to use the trigger anymore. So actually when you have set the trigger once, if you wanted to disable the trigger you call it with the false argument and there we go. As you can see the PWM generator of course outputs more clean square waveform than the analog output can do. It can also generate much higher frequencies than the analog output. The analog output, the analog waveform generator is limited to about 5,000 kilohertz, as we saw previously during the open tap presentation. But the PWM generator is limited to about 8 megahertz so quite a lot more. So we can set this to 1 megahertz. That was the wrong method, sorry. I won't do that with a telescope. Here we go. So we will see that if we try to do this, if we try to observe a 1 megahertz signal using the oscilloscope we won't get very good results because the oscilloscope is not fast enough to that. So that's where the logic analyzer instrument comes in. The logic analyzer instrument has an equivalent capture method. We will call PSL logic analyzer capture. We will capture on a single channel. That's enough for now. Wait, okay. So right now we didn't capture anything because we have to move the wire to the digital input. Then we can see that now we captured a bunch of stuff here. So these values that we have captured are time stamps. Time stamps where logic level events were detected. And the logic level events in this context means a transition from low to high or high to low. So in each of these time stamps the PSL detected that the logic level at the digital input transition from low to high or high to low. So in order to plot that, we can actually see what we're doing. First of all, I'm going to capture fewer samples because otherwise we're not going to see anything that captures 10 events. In order to actually plot that, we can call the helper function getXY like that. And then we can plot that just as we did the oscilloscope trace. There we go. The X axis here is microseconds. Actually, when did I start? How much time have I used? I lost track of time. I think I started at 12.15 roughly. So we're 15 minutes done. Is that correct? If you'd have like five minutes, is it? Five minutes? I think you started at 10, right? I started at 10 post, so 20 minutes. This is a 14 minute talk. Is that correct? So I have 20 minutes left. That's what the steps in the sketch. It's a 40 minutes talk. Good. I think I need to move a little bit faster here. Okay. We can also, of course, generate multiple PWM waveforms simultaneously. So now I'm going to connect a second digital output to a second digital input. There we go. Now we're going to generate PWM signals on two different pins. We can use different duty cycles for the two waveforms, but they must share the same frequency. So we will have the second waveform have a duty cycle of 25%. We can also offset them by a phase between 0 and 1. So we can offset them by, for example, 33%. And then we capture time stamps again. This time we will capture on two channels. Let's capture a few more time stamps. Now you will see that we have two arrays in the timestamp variable. As before, we can use the getXY function to get something that we can plot. Unlike the oscilloscope, the logic analyzer, the return values from the logic analyzer are not guaranteed to have the same time stamps. So here we have to use two different X variables. And then we can plot this as before. So in order to be able to see something, I mean it's going to offset the second trace by one volt. There we go. That seems a little strange. It seems like the duty cycle of the second waveform, which should be 25%, is instead 75%. Live debugging. Let's just skip that for now. So as I said, while the PWM wave signals can have individual duty cycles and phases, they must share the same frequency. But sometimes you might want to use two different PWM signals with different frequencies. And in that case, you can use the reference clock mapping method to generate the second signal. So we will do that on the second channel here. It happens. So we'll use the map reference clock method here. So we will do that on the second output. And this method takes a prescalar as the second argument. And the prescalar here, this method is a little bit tricky to use. So unlike the generate method, you don't set the frequency directly because you cannot set arbitrary frequencies using this method. You can only set frequencies that are even ratios between 128 megahertz and powers of 2 up to 15. So that means 128 megahertz, 64 megahertz, 32 megahertz, 16 megahertz, 8, 4, 2, 1, half a megahertz, and so on and so forth. And the prescalar is basically the denominator in that calculation. So if we set the prescalar of, for example, 8, we will get a frequency equal to 128 megahertz divided by 2 to the power of 8, which I believe is how much is that? That's half a kilohertz. No, half a megahertz, 500 kilohertz, sorry. And now we will see that we can capture two signals with different frequencies. So as you can see, the frequency on the second channel is now half of the frequency on the first channel, which as you may recall is 1 megahertz. So that's how you can generate PWM signals with different frequencies. Some other limitations of the reference block map is that the waveform or the signal is locked to 50% of the cycle. Okay, let's move on to the next instrument, which is the multimeter and the programmable power supply. I'm just going to connect one of the analog inputs to one of the programmable voltage sources. So now we're going to use programmable voltage source 1 is right there. The multimeter can be accessed as the other instruments as an attribute to the science lab instance. It has a measure voltage method, which by default measures the voltage on the pin labeled VOL, I think. So right now I have connected it to a different pin, CH1, so I'm just going to tell it to measure the voltage on that pin instead. Okay, minus 5 volts. That's probably correct. Let's see if we can change that. We can change that by calling the power supply attribute, and then we are now connected to the pin labeled PV1. We can set the voltage like this, and now hopefully we will measure zero volts. So PV1 can be set to any voltage between minus 5 and 5 volts. So if we set it to 5 volts and measure the voltage with the multimeter again, yes, we now get 5 volts. There are two other, the piece that has three programmable voltage sources. PV1, which we are using right now, can generate voltages between minus 5 and 5 volts. PV2 can generate voltages between minus 3.3 to 3.3 volts, and PV3 can generate voltages between zero and, I believe, 3.3 volts. Next, let's take a look at the programmable current source. So in order to see anything there, I'm going to connect an LED between the PCS pin and the ground pin. Hopefully you can see this. Now we are going to call the power supply attribute, and we are going to set a value on the PCS pin. The programmable current source can output currents between zero and 3.3 milliamps under ideal conditions, which do not always apply as we will see in a moment. Let's start by setting it to 1, let's start by setting it to half or a milliamp. Yes, I think you can see that the LED turned on. If we increase the current to 1 milliamp, we should see that the LED gets brighter. Which it did. It's fantastic. It can go a little higher, 1.1 milliamps or 1.5 milliamps, I mean. Now it's a dimmer instead. I'm not sure if you saw that. Let's do that again. That's 1 milliamp, and here we are trying to set 1.5 milliamps. But instead it gets dimmer, so the current clearly is lower. And the reason for that is, as I mentioned before, the programmable current source can output between zero and 3.3 milliamps under ideal conditions. But ideal conditions means a load resistance equal to zero. This is a red LED, which has a voltage drop of approximately 1.7 volts. Which means that the load resistance is equal to 1.7 volts divided by whatever current we are passing over the LED. And if the current is too high, the load resistance becomes too high and then the current source cannot output the requested current. So let's set it back to zero. I'm going to try to finish this up so we have time for some questions. Let's just show one more instrument, one more feature of the multimeter, which is the ability to measure resistances. So by connecting a resistor to move this wire, by connecting a resistor between the RES pin and a ground pin, we can measure the resistance of the resistor. So I'm not sure what type of the resistor this is actually. We will see in a minute. Again, we call the multimeter. This time we call the measure resistance method. And we see that, okay, this resistor has a resistance of approximately 1.16 ohms. No, what is that? 116 ohms, sorry. Yeah, okay. That's quickly about the multimeter. I think I'm going to skip the peripheral buses for now so that we have time for more questions and it can make up some time here. I will just briefly mention that the PS lab can also be extended with external sensors on any one of its peripheral buses, which are there's an I2C bus, there's an SPI bus, and there's a UART bus. I'm going to wrap up the live demo there. And yeah, I would be happy to answer any questions that might have cropped up during the demo. Great. Thank you very much, Alexander. Excellent job. Pretty impressive. There's a question. I don't know if you can go to the shared notes, but there's a question from Alvin that he's running to some problems when importing PS labs. And he's asking if he really needs the hardware to do that import. Yes. You do need to have hardware. You're not to import. You should be able to import the library without the hardware, but it won't do anything unless you have hardware. Let's take a look at this error. Okay. Module not found. Module named PS lab. It means to install PS lab, which seems absolutely correct. And then we go to no module named PS lab. Yeah, that's very strange. I don't have a good explanation for that. Right off the top of my head, my guess would be that you might be inside of a Python virtual environment, perhaps. Where you did not install PS lab. That would be my first guess. Yeah, maybe we need more details about the installation. I think we need more details on the installation to answer that. Second question. Do I need third? Oh, yeah. No, no. I just I was I wanted to point out like maybe the failure when you don't have the hardware is comes when the connection is done, right? Yes, exactly. You should be able to import the library without the hardware. Second question. Do I need the piece of hardware to run this? Yes. The library does not offer any hardware independent functionality. So you can't really do anything interesting with it unless you have an actual PS lab device. And I have I also have a question very quickly. Do you have you started working on this on 2026? Yes, if I started working, I joined the project in summer 2020. So there's this, there was a Python library before, right? Did you do you work on top of that? Or did you rewrite or? Yes, this is this is basically a complete rewrite of that library. So the so the version 1.0 of the Python, which was the version that existed when I joined the project. It was it had basically all of the same functionality that we saw today. But the API was a bit more, let's say, clunky, because the library at that point was designed to be used as a middleware between the desktop application, the graphical user interface and the board. It was not really meant to be used directly as a standalone library. Although, of course, it could be used like that. I remember I used that library and we even had problems for some Windows machines and macOS. Have you tried this one with Windows and macOS? With Windows, yes. With Mac, no. Okay. All right. And that's the last question. What do you think about OpenTap? I think that's very cool. I wasn't aware that they were using the new API. So I was very happy to see that they have found that and that they are finding it useful. Very cool. Yeah, that's great. Yeah. That's amazing. All right. Thank you very much, Alexander. Great job. Amazing. Very impressive. I can't wait to test it out on my BS lab.


Acetylcholine is a very common neurotransmitter, and I'm going to tell you a couple of places where we can see it. First of all, I'm going to tell you that this right here is acetylcholine, and we often abbreviate acetylcholine ACH. So if this molecule is acetylcholine, this molecule right here is actually nicotine, what?  But there are some really interesting connections between acetylcholine and nicotine. Integration project topic would be really cool right here. So anything related to acetylcholine can be described with the adjective cholinergic. Cholinergic. So you can have cholinergic receptors, which are receptors for acetylcholine. If we wanted to call, let's just say we have cholinergic receptors, we do. There are actually two flavors of cholinergic receptors. You have nicotinic, oh, and muscarinic. Cool, nicotinic. What do you think would be true about a nicotinic acetylcholine receptor? Maybe perhaps nicotine might also act in their true story. So nicotinic, when acetylcholine connects to a nicotinic receptor, then it actually opens sodium channels and stimulates some sort of action potential in the whoever is receptoring. When a muscarinic, when acetylcholine binds to a muscarinic receptor, it's going to stimulate a second messenger cascade. We're going to open some G proteins and we're going to have a slower, more, we're going to have a different response. Where we have nicotinic and muscarinic receptors, and it's actually a form of fine-tuning the effects of acetylcholine. Are you ready for this one? All somatic motor neurons barf acetylcholine onto nicotinic receptors on skeletal muscles. Did you follow that? We're going to talk about that in more detail, I'll say it again. Nicotinic receptors are found on skeletal muscles and all somatic motor neurons barf acetylcholine onto those skeletal muscles at the synapse and the acetylcholine binds to nicotinic receptors on the skeletal muscle. Which is kind of cool. You wouldn't really think that.  Chomp, chomp, chomp. This is an enzyme called acetylcholine esterase. Acetylcholine esterase. Ace means enzyme. So acetylcholine esterase breaks down acetylcholine and removes it from the synapse. This is important. And this is an interesting fast fact. You find acetylcholine all over the heck in place and it's involved in focused learning and the formation of new long-term memories. That's really interesting. All right. Acetylcholine, very important. We're coming back to it. Norepinephrine. This is another really important neurotransmitter. So let's talk about some facts of norepinephrine.


I'm sure that many of you have obviously tested your internet speeds, either going to Google and searching speed test, and either using the Google or some other website, used to always be flash applications, luckily we've moved beyond that, but you're doing that through the web browser. Let's say you wanted to test it from your shell on your command line here, maybe have a script that tests it. Well, the good thing is you can test your speeds from your shell or command line. And on Debian-based system, you do sudo apt install speedtest-clis, what it is at least on Debian, it might be something else, just search your package manager for speed test and see if it comes up. I already have it installed, but you would hit enter on that and obviously taping your password and install that package. Once it's installed, you should be able to run the command speedtest or speedtest-clis for command line interface, but it's the same command as far as I can tell. It's the same package, it's just one is named different. I don't know if it's one's probably linked to another.  Right now, mine is hitting Miami, which is on the other coast. Sometimes I run it and it grabs one in Benito, which is about 30 minutes, 45 minutes away, so I look through the man pages. There might be a way to select your server, because Benito, like I said, is a half an hour drive from me, probably not even that, where Miami is like a two hour drive. Anyway, you can see my internet speeds to the download and upload. You know, that's pretty much about what I see when I test in my web browser. Now, you're getting a lot of output here, you know, what it's connecting to. It gives you little dots as it's going. If you didn't want to see all that and you just want the output, there's another option you can run. So you can do speed test or speed test dash command line dash dash simple. And when you run that, it just kind of runs without any input until it's done doing the test and then it will give you your outputs, your upload and download speeds. So I'll just let that run for a minute or 30 seconds how long it takes.  Or that's, I don't know, let's see, okay. Let it go, let it go, let it go, there we go. Oh, so yeah, we got our ping time, which was that up there. It doesn't say ping time there, but that's what that was. And then you got your download and upload. You know, my download wasn't as good a time. But I don't know what server I was hitting, because like I said, sometimes it's Benita, sometimes it's Miami. It might have hit something else. I think what I do online, sometimes it goes for a Tampa one, which is about two hours north of me. So, you know, your speeds may vary, but you should get fairly consistent numbers somewhere around the ballpark. You know, you might say 10 megabits is a big difference, because I know a lot of people who don't even get 10 megabits download that live near me. But anyway, that's the speed test command for your shell. And, I mean, it's good to know this in case you're logged into a server somewhere and you want to test your speeds, or you just like using the shell like I do, you don't have to open up a web browser and go to a web page and all that. This actually just does it from the shell. You can also be a good way to collect data. You could have this run every day at certain times of your day and log them all to a database or even a flat file. And later on, you can compare it's like, oh, do I get the same speeds consistently all the time or certain days, you know, time of day? Do I get better speeds? So you could start collecting data on your own system this way. It's a lot easier than, you know, manually going into a web browser. So, yeah, check that out. Should be in your repositories. Again, on my Debian system here, so most Debian-based systems, I would assume it's already in your package manager. And, again, if you use apt-get or aptitude install, and it's probably going to be speedtest-cli if it's not just search your repositories for speedtest, and it will probably be in there. Anyway, I thank you for watching. I hope your speeds are fast enough to visit my website. Filmsbychrist.com, that's Chris the K. There's a link in the description. You can go there, check out all the videos from both my channels. You can also go to the support section or check out the links in the description of this video for support through patreon.com for it, slash metal x1000 or through PayPal. I do appreciate any support if you enjoy my videos. Be sure to search through all my videos. I've got a lot of them, some better than others. And as always, I thank you for watching and I hope that you have a great day.