Hey, guys. Welcome to another episode of Percussion in the News. Today, we're looking at some really cool ones that are very short. There's a handful of them, but they're really interesting because they're kind of from the classifieds or the personal ads of the day around America in the early 1910s. And there's one from 1935. The first one is from the Topeka Daily Capital in Topeka, Kansas in 1912. And this one says, situations, male, wanted, position as trap drummer in picture show, evenings, has owned traps, address drummer, care, capital. So kind of neat to look at this because I guess situations refers to like, it's a job posting, which is just different wording from today. And then on the bottom with the address drummer care capital, I think that's referring to you would like right in and kind of say this is regarding the drummer care of capital, which is the Topeka Daily Capital. So we'll see that again on some other ones. The next one is from the Topeka Daily Capital as well, lots of trap drummers in Topeka from 1914. This one has a little more info. So it says, situation wanted, trap drummer, union, experienced, picture house preferred, play bells and xylophone, good line of effects, sober and reliable, address Paul R. Grant, trap drummer, Chickasaw, Oklahoma, box 993. So I guess it was a big enough problem for people to be drinking on the job and not showing up to work or kind of a combination of both for it to have to say sober and reliable in the ad, which is kind of kind of neat to see that it gives you a glimpse at what it was like in 1914 for a musician. The next one we have is from the Evansville Press in Evansville, Indiana in 1914. This one is a lost and found ad that says lost and found lost rod and felt ball from bass drum pedal, please return 303 Lyne Street. It's just neat to see this ad because bass drum pedals were pretty new at that time. 1909 is kind of the accepted first year of bass drum pedals and mass production from Ludwig and Ludwig. But it's neat to see in 1914 someone has lost their bass drum beater, their rod and felt ball from bass drum pedal. So if you find it, please return it. The next one we have is from the Democrat and Chronicle from Rochester, New York in 1917. This is just kind of a fun odd one. It says to swap a ladies gold wristwatch for bass drum pedal, Six Manhattan Street. So I don't know if this is maybe a woman who's trying to trade one of her wristwatches for a bass drum pedal or maybe someone just, you can kind of go crazy with the imagination of like maybe he lost his wife or his girlfriend and now he's getting rid of it and wants a bass drum pedal. We'll never know, but it's kind of cool to see this in the newspaper, this kind of odd trade. And this last ad is cool. This is from Sioux City Journal in Sioux City, Iowa, 1935. So this one says, we'll swap Lady Vibraphone for light car, right? C337 Care Journal. So that's a pretty cool one to see just someone trying to trade a Lady Vibraphone for a light car. It's pretty far-fetched, I would think that that would work out. But again, I've made some pretty crazy trades that I didn't think would be possible and you get a drum set or a drum for something that's completely different. I traded a Coleman mini bike once for a Mapex drum set, which then I traded for something else and then something else and then got another drum set. So you never know. So it's worth trying and it's cool that people have been trying to trade stuff for a long time. Thank you as always to my friend Jerry Reiman, who sent me over this great binder of percussion in the news articles, lots of stuff we're working through here. If you enjoy this, subscribe, like the video, leave a comment and tell me what you want me to talk about next. There's tons of brands and all kinds of stuff in there that I'll go through. So thank you for watching this and we'll see you on the next one.


Hey survivors and frivers, in this video I am going to discuss whether or not you are missing out on something good with a narcissist. Please like, comment, share and subscribe. If you would like to donate, my paypal link is in the video description. If you are interested in one-on-one coaching, you can email me at narks5ercoaching at gmail.com. Check out the narks5er merchandise store where you can get your own narks5er t-shirt or mug. The link is in the video description. Are you missing out with a narcissist? Following the discard phase, you could be fooled into believing that the narcissist is having a good time without you. They might upload pictures on social media for you to see. Or they will stalk you in person in their new car or with their new relationship partner. They will orchestrate some form of illusion and really put it on a show. They are very skilled at planning or coordinating the elements of a situation to produce the desired effect or desired reaction from you. But the fact that they are going out of their way to do this or to prove as though they are having a good time without you should remind you that they are not really having a good time. If they were completely satisfied with a situational person, they wouldn't need to use it to make you jealous. The fact that they need to do this proves that they are not satisfied with the situation or person. So an alternative way of getting the satisfaction they wanted from that situational person is to use it to make someone else jealous. By seeing someone else desire what they have, it makes it seem more desirable or valuable to the narcissist. They cannot get the same level of happiness, satisfaction or fulfilment as you can.  That's their idea of happiness or pleasure. The majority of what they have going on in their lives, they are not happy with. They usually go for things that are far below the average person's standards. Things that they are not satisfied with. But even though they are not satisfied with it, they will use it to try to make you jealous. And this is the quickest way to identify if they are not satisfied with whatever they have. If a person is trying to use a situation or person to make you jealous, they are not satisfied with it. The narcissist relies on their social media pictures or stalking you with a new source or a new car to keep you looking at yourself. They expect you to reflect on yourself and then feel as though you are worthless or insignificant without them. They don't expect you to identify that they are only doing this because they are not satisfied with whatever it is they are displaying to you. You are not missing out on anything. They are just trying to make you believe that you are. Narciss are not fulfilled with anything in their lives. They might set goals, but they will always be moving from one goal to the next. So while they haven't even completed the previous goal, they will already be on to the next. Never experiencing any form of fulfillment or gratitude for what they currently have. This was programmed into them in their childhood from their narcissistic parent. The narcissistic parent never took an interest in what they have achieved. They were only interested in what they were working to achieve. The goal posts were constantly moving. They never learned how to feel gratitude or appreciation for their achievements. So they never feel fulfilled. They are constantly seeking something which they cannot find. They get bored very easily. This is why you will see many of them are in jobs or relationships and they just seem so fed up of life. They don't know how to keep the newness of a job or relationship. The reason for this is due to their lack of curiosity in life. Curiosity is a strong desire to know or learn something. Narciss are not interested in learning anything new. They think they know it all already. And that's why they get bored so easily.  And have no motivation to learn anything new or to explore something different. They won't even consider it. Because they think they've seen it all before. Or nothing can make them happy. So what's the point in trying? And this is why their relationships always fail. Because of what they have learned as a child from their narcissistic parent. They experience an endless disappointment from people and things. Nothing is ever good enough because the goalposts are constantly moving. Once you satisfy one thing, there is something else that needs to be attended to. There is no fulfillment or gratitude with them. Which means that they can ever experience any happiness or joy. You have probably already experienced this with them. And how nothing you do could please them or make them happy. Many victims of narcissistic abuse neglect themselves in an attempt to make the narcissist happy. And end up burning themselves out. It is an impossible task. And you will only end up wearing yourself out. You cannot please an unpleasable person. Remember this. Whenever the narcissist is using a situation or person to make you jealous. They can never be satisfied or fulfilled. They are just using it to hurt you. That's their idea of fun. That's their idea of pleasure.  It's pleasurable to them. Their idea of fun is making fun of someone else. You probably remember this when you were with them. They only appeared to be happy when they were hurting you. If they were making a joke at someone else's expense. That's their idea of fun or pleasure. And even then it doesn't make them happy. Happiness is meant to come from within, not from external sources. So however it makes them feel. It never sustains them. When they are showcasing this to you. They are basically trying to prove that they are capable of something greater than you may have thought. They are trying to prove it to you and make you believe it. So that it becomes more believable to them. So that it becomes more believable to them. They will go from one relationship to the next. And then showcase it on social media. In an attempt to prove to you. That they are lovable or they can be a good relationship partner. As though you got it wrong or something is wrong with you. Of course this is all an act. You can't just achieve or obtain something externally. And then suddenly you are happy. It doesn't work that way. You have to do the work on the inside first to really appreciate or enjoy those things. Of course nurses don't want to do the work. The way they think is that you are not going to see the work they do on the inside. You are not going to see them meditating or resolving traumas. So none of that stuff has any value to them. What holds value to them is what you see on the outside. A new job, relationship partner or material items. And they will start a new job or have a new relationship partner. Even buy a new car with the sole purpose of making you jealous. That will mirror your likes and interests appeal to your own ideals. Not because they want it or because they're really about that. It's just designed to make you feel as though you are missing out on something. When in reality, they are not even remotely satisfied with what they have. You are not missing out on anything good with a narcissist. Making fun of someone else is their idea of fun. Feeding off of someone else's pain is their idea of pleasure. So unless that's the kind of fun or pleasure you are interested in. You're not missing out on anything. And this is why they were always trying to limit or restrict anything that could be fun or pleasurable for you. Because they cannot get the same fulfillment. Their idea of fun is to devalue and degrade you, humiliate and exploit you. Their idea of pleasure is to feed off the pain you experience from this. They are jealous of you. They are jealous that they cannot get the same fulfillment as you can. This is why they would always be angry anytime that you are happy. They always had to sabotage your happiness, especially on special occasions like Christmas or birthdays. They cannot get the same fulfillment. So anytime that you are experiencing happiness or joy, it triggers them to reflect on how they feel and how they cannot get the same fulfillment. So they have to sabotage your happiness. They have to limit or restrict anything that could be fun or pleasurable to you. They are also jealous of anything outside of them that might be a source of happiness to you. Anything outside of them that you give your attention to. They want to be the source of your attention and validation. They want to be able to control when you experience happiness. It has to be on their terms. And there will usually be some hidden agenda where your happiness benefits them in some way. So don't think that you are missing out on anything with a narcissist. Believe me, you're not missing out on anything good. Pay attention to how they treat other people. How they try to get other people to feel. That usually reveals how they feel about themselves. Thank you for watching. I hope this video resonated with you. Please like, comment, share and subscribe. If you would like to donate, my PayPal link is in the video description. If you are interested in coaching, email me at narx5emotionshow to get your own t-shirt or mug. The link to our Teespring page is in the video description. Thanks for watching. Don't forget to share the video so that other survivors can benefit from this information. And I'll talk to you soon.


Well, hello everyone, welcome and thank you for coming to the last session of the last day of the conference. This is Run Fast, Catch Performance Suggressions in EBPF with Rust. I am Everett Pompey. I am the founder and maintainer of a tool called Bencher, which is an open source tool for catching performance regressions in CI, and we'll talk more about that later. And I do ask that if you all have any questions that you wait to the end. Alrighty, so what is EBPF? At kind of a high level, EBPF is a virtual machine within the kernel that runs a special kind of bytecode. So you've got user space, then you got the Linux kernel, and so you've got your source code here. And then you compile it into EBPF bytecode, and then it goes into the verifier, and the verifier evaluates your EBPF code and basically has to solve the halting problem with it. And yeah, and figure out whether or not it's going to break your kernel. And if it isn't sure, it's not going to pass it. So once it's in there, it's got to get a good check mark where we can go on and go into the EBPF VM and be able to run as an EBPF program. So some of the things you can do with EBPF, you can set trace points, think tracing syscalls. You can set U probes, which are user space probes, K probes, which are kernel probes. And you can do packet filtering, which is XDP, which is actually where the name EBPF comes from. It stands for, or used to stand for, extended Berkeley packet filtering, and it no longer stands for anything. It is just a jumble of letters. And so there's also LSM, which is Linux security modules, and you can use that as well. And then what is Rust? So glad you asked. Rust is a programming language, one that I have fallen in love with. It is designed for performance, reliability, and productivity. And it makes it a great language to do systems programming in. Now, a lot of you may have heard that as of 6.1, it was added to the kernel, but we are not going to be talking about that today. That is not what we're doing. We're going to be talking about creating EBPF bytecode with Rust and not working on the Linux kernel in Rust. So different things, but buzzwords about. And what is a performance regression? What is that, right? And at a high level, performance bugs are bugs. They are instead of a feature kind of messing up, it is your performance getting messed up. Something that should not take that long, taken way too long at a real high level. And in EBPF, you can actually add up to 100 milliseconds of latency if you really try for a single call. And so you really want to make sure you keep that in check. And production is the most costly place to find bugs. So we're going to try and not find them in production and find them earlier. And usually performance regressions, if you're looking for them, they can get detected in development. Most folks don't actually have anything to try and catch them in CI like they do for feature regressions. And then that means that they tend to get caught in production when things are on fire. So an overview of the kind of where we're going with this talk is that we're going to go over an basic EBPF program written in Rust and then we're going to evolve that EBPF program. And then we're going to look at benchmarking that EBPF program. And then finally adding continuous benchmarking. So high level of EBPF tooling that exists out there. There's libbpf, which is written in C and you use C to interact with it. There's BCC, which is C, Python, and Lua.  And there's also Rust, which as you all might imagine, we're going to go with Rust. And just an idea of the Rust tooling, there's some choice even within the ecosystem there. There's libbpfrs, which is basically a Rust wrapper around libbpf. You would still have to write your EBPF code in C though. Then there's redbpf, which allows you to write the code that gets compiled into EBPF in Rust. But it is no longer that actively maintained because the creator of it has created AIA, which is a tool that allows you to both write the code and the user space in EBPF but also gets rid of libbpf all together and uses Rust for calling this calls there. So then that now onto our overview of getting into that basic EBPF program. We're just going to do an XDP program, which is we're tracing and able to intercept packets and make decisions on them. Basically just give a good thumbs up or thumbs down on that packet. So this is our version zero of our EBPF app. And all we're going to do is log the IPv source address of the packets that we get in. That's it. Pretty simple. So on the user space side, we're going to have a user space agent that is going to spin things up and not do all that much actually at this point. And then we have the kernel side of things. We're going to have the EBPF code, which is going to get that XDP packet, get the source address and log it. And as we go through the code on the upper right hand corner, you'll see these icons indicating where we are. So now we're going to go into the EBPF side of things, the code to do that. This is just a function in Rust that takes in the context that tells us kind of all the information that the kernel provides to us. We're going to use a macro for AIA to tell it that this is an XDP program, and we name it FunXDP. So we're having lots of fun here. We have a helper function called TryFunXDP that we'll get into in a second. And based off of what that returns, if we get an OK, we just return that return value. If we get an error, then we're going to abort, which is just a way of telling the kernel something bad happened. So that TryFunXDP function, we from the context go in and we are going to get the Ethernet header. We're going to have to bounce check using that pointer at helper, which we'll look at in a minute. We then only really care about IPv4 right now, so anything else, we just go ahead and pass it along. We extract the header again using that helper function, and then we get the source address and we log it. And then we pass. Real simple. And that pointer at function basically just gets the start and length and does a bounce check and make sure within memory. Otherwise, that verifier that we talked about might get upset if we're outside of our bounce. And so that's all that we're doing there is making sure we're good. And this is a panic handler because Rust can panic. And again, that verifier is finicky. We make sure to handle any possibility of panic in order to make that verifier happy. So that's the EBPF side of things of our super simple app. And now we're going to move over to user space. And in here we have our main. We parse the arguments that are passed to it. We init logging. We get our bytecode for our BPF program. We're going to init logging on it and then load that into the kernel and attach it to the interface that's passed in with just the default flags. We'll wait for control C and then that'll exit our program. So that is the user space side of things. And we are done with version zero, Brave New World of our first application in EBPF. Pretty basic, not doing all too much here. So we're going to evolve this a bit and create another version using EBPF maps, which is where you're allowed to communicate between user space and EBPF and really allows things to start getting interesting. So we're going to implement our fizz feature here, which is push fizz into a queue. If IPv4 source address is divisible by three, otherwise just return XTP pass. So this introduces kind of this middle common area here of these maps. And from the kernel side we're going to push over and then we'll pop from that queue on the user space side. So we'll start off looking at the maps here. For to implement this fizz feature, we have an enum in Rust and basically the only message we're sending over possibly is fizz at this point. We need to tell it that it can be represented as C. We also need to say that it can be copied and cloned, which allows us to use the a trait, which basically says that we can send this over on a map. And then we also derive debug so that way we can log it on the user space side. So that is the shared kind of map data part of it. And now we're going to go and look at the EBPF side. The changes on the EBPF side is we have to create a map. And that's what this does here. It just creates a queue that we can push the source address messages onto. Then we update our try fund XTP function here. It's very similar to what it was before, but instead of just logging, we're now going to go and do a modulus three. And if that is the case, if it is equal to zero, we're going to have fizz. And if that's there, then we push it onto the queue. And no matter what, we go ahead and pass the packet. And then on the user space side, we've got our main function. It's going to stay pretty similar, except for we're going to now add a spawn agent helper, which will be evolving throughout the rest of this talk. Again, wait for control C and then exit. So looking at that spawn agent helper, we create the user space side of that map and essentially attach onto what we expect to be from the EBPF side, that source address queue. And then we loop over that and pop off of it. And whenever we get something, we just log it. So we're now basically just moving the logging from the EBPF side of things over to the user space side. So that is the user space side. And now we have our fizz feature here. So actually really moving stuff across the boundary. So let's add a simple update. Now I think you guys might be able to see where this is going here. Maybe fizz buzz. Yeah, yeah. Okay. So if push fizz onto the queue, if the source address is divisible by three, buzz of divisible fives and fizz buzz if both. Otherwise just send XTP pass. So now we're going to, again, go and look at this shared data that we're sending across. We had fizz from before. We're going to add buzz and fizz buzz. So that's that part. Now off over to EBPF. Again, it's going to stay very similar, but we're just going to implement fizz buzz. So modulus three, modulus five and return XTP pass. So that gets pushed onto the queue and then on the user space side, we actually don't have any changes. We are done because it's just going to go and log the change that we did. And so kind of one more time through here, we're going to add another seemingly simple change, which is fizz buzz Fibonacci. Do the same as before. Fizz of divisible by three, buzz of divisible five, fizz buzz of both. Except if the IPv4 source address divided by 256 is part of the Fibonacci sequence then return FizzBonacci. So doing a little more work here is the idea. Otherwise just return XTP pass. And so again, we have to update the message that we send over and add Fibonacci as an option. And then on the EBPF side, we have to update our try fun XTP function. And instead of just fizz buzz, we have to do our fizz buzz Fibonacci here. And then otherwise return pass. And this is Fibonacci helper function, just does the Fibonacci sequence. Nothing to go wrong. And that's kind of it. We're good. Again, we're just logging on the user space side. And everything's great. And our app works fine until about three weeks later. When production's on fire. And we're like, what's going on? And so we chase our tail all day. We're trying to figure out what's going on until we trace everything and we end up here. And we start and we look in and we investigate. And we're like, oh gosh, I'm calculating the Fibonacci sequence.  This is so good. So now we have to create a version four of our app. And we're going to cross that out. And we're just going to go and hard code this because there's really not that many numbers, below 256 in the Fibonacci sequence that we have to worry about. Now, does anyone notice anything about this slide? Anybody? I asked chat GPT to give me a list of all the Fibonacci numbers below 256. I am missing one. Yes, there is 233 missing. So our robot overlords have not quite taken care of us yet, but they're coming. So, all right. Now it's good. And so we're able to go in, put the fire out, right? Save the day. But like why do we have to do this, right? Like why do we have to wait all the way to production to catch this? We should try and shift this as far left as we possibly can. And so we're going to take a look at doing this in development. So we've looked at a basic EBBF program. We've looked at evolving it. And now we're going to look at benchmarking it. You can't improve what you can't measure. So with benchmarks, there's both micro and macro benchmarks. Micro benchmarks, I think of like unit tests. And so that would be this is Fibonacci function, right? That we had to go and fix. There's also macro benchmarks, which I think of more of like integration tests. And that would be at the level of the spawn agent helper function that we created earlier. So we're going to start out by looking at micro benchmarks. The options kind of there for doing micro benchmarks in Rust are lib test bench. It is on nightly only though. You have to use a not related to Bencher, crate named Bencher in order to use it on stable. And it's not being actively developed. The reason for that is criterion. It is available on both stable and nightly. It's become a bit of a de facto standard within the Rust community. And it has many more features. It's much more feature rich. And then there's also IAI, which is also available on both nightly and stable. However, it's much more experimental and not as widely used. It is still from the same creator as criterion. And it allows for single shot benchmarking, which is pretty cool. It uses cash grind. And so it gives you the cycles and things like that. So it is definitely something to like keep an eye on and I'm super interested in it. So of these though, we're going to go with criterion because it just tends to be the most popular option in the ecosystem. So in order to do micro benchmarking here kind of in our setup, we're going to look at be working within the kind of shared part of our code. And we're going to be refactoring some things. We're going to add a dev dependency for criterion. And then we're going to set up our benchmarking. This is in our cargo.toml to say we're going to use a source address benchmark. And we are going to be using criterion harnesses. So harnesses false. We're adding onto source address a method called new, which is going to do all that work that we were doing before of the isFibonacci then some fizzbuzz calculation there. This moves that out of the EBPF side of things, where criterion doesn't really play nice with it and into the shared code base. So then within our benchmarking tool here, this is kind of what a criterion benchmark looks like. We create a function that basically iterates and runs a few times. So that way I kind of can warm up and check, you know, after a few iterations what you get. And all we're going to do is go from 0 to 256 or 255 and create a new source address for each of those and see how long that takes. And this is just kind of some setup here with some macros to add this benchmark source address to the benchmarks we've run. And so if we were on cargo bench, basically get output there, which is nice. That's timing and seeing how long it took. And so cool, that is our micro benchmarking. All done with that. And so now onto macro benchmarking. This is going to be a little more complicated because we're going to have to try and get the benchmark times from the kernel. So the options there are to use kernel BPF stats enabled, which collects the runtime nanoseconds and the run count of all BPF programs. It was added in kernel version 5.1 and it is off by default. The other options are the BPF tool program profile. It collects hardware per count. So it's kind of like IAI that we looked at before in that it's counting the cycles and not the system wall clock time. It was added in 5.7 and requires a BPF tool that was built with clang greater than version 10. And then BPF tool program run. It runs a specific EBPF program. It allows you to provide the input and it gives you the return output and context. This is super cool. Unfortunately though, it is only for specific EBPF program types listed here. And even though we're doing XCP in kind of our tutorial here, we're going to be using BPF stats because it's just more applicable to a lot of other EBPF types. So in order to make this happen for the macro benchmarking, we're going to be working on the user space side of things. That main function that we had before, we're going to still be parsing the command line arguments, but now we're going to have a shutdown bull flag that we create and we pass that into a new helper function that we're going to take a look at in a second. And then we wait until you hit Ctrl C and then at that point we're going to send false, like trigger the shutdown flag and exit our program. So looking at that run function, it takes the interface we're expecting, it takes that shutdown flag and it returns a process which is the PID, the program file descriptor and a handle to a running task. So we get our PID, we go and from our BPF program we get its file descriptor. Then we spawn our task, get the handle and we're going to take a look at the updated version of spawn agent here in a second and that returns the process. And really what this is going to allow us to do is do our integration level testing here. So that way we don't have to rely on the main function to get things spun up. And the spawn agent again creates the map that we created before and then it still has that logging and popping off the queue but now it's looking for the shutdown flag to be triggered and then it just exits. So very similar to what we had before. And so now we're going to go and look at the custom benchmarking harness that we have to create in order to actually benchmark the BPF program. So we create the struct which represents a benchmark of an BPF program. It just has a name and a function that we're going to run for our benchmark. We're going to use this nifty crate called inventory that lets us statically collect those at compile time. And we now have to have also a main. And in that main we have a VAC of results and then for each of those items in our inventory for each of those benchmarks we parse the name and we go ahead and run the function that we're given, collect those metrics and push them into our results vector. With those results we then take them, we serialize them to JSON, save them to a file and that's kind of it. So now we're ready to create our first benchmark, our fun XDP benchmark here. So we're going to initiate a Tokyo runtime which basically just lets us run async things in Rust. We create that shutdown bool and then we pass it in to that EBPF run helper function that we just created and then we go and do some network things which is here it's just running a network request which is not the best thing to do because this is going to be a lot of variance in what you're actually benchmarking here but just a simple example. And then we're going to go ahead and get those BPF stats and then we are going to shut down and return the BPF stats. So looking at what that get BPF stats function is we go in to procfdinfo and then given the process we're just going to go and read line by line in that file until we get runtime nanoseconds and the run count and if those both exist we're going to return the average and if they don't we'll just return zero here. So now we're able to go and enable the stats. We're going to compile our BPF code in release mode and then we're going to go into our user space part of our app and run we have to run a sudo here because we have to be able to load the EBPF program and then we're going to basically just run cargo bench though and the output of that is the JSON that we see realized there and so cool we've now benchmarked our user space side of our code at an integration level. So more to does. So that's the end of the macro benchmarking and so now that we have benchmarked our EBPF code we can take a look at continuous benchmarking. Like we were talking about right like why are we going to wait all the way to production over here that's way too late. We were able to benchmark our code so the problem with that of going all the way over here is it's local only. It relies on us to run it ourselves and for the same reason that we don't rely on developers to run their unit tests locally we run those in CI the same thing should be done with benchmarks we should run our benchmarks in CI so that's the idea behind continuous benchmarking. Another is an open source tool that I built to accomplish this. It's open source, it's both self-hostable and there's a SaaS offering. It has multi-tenancy, multi-language support out of the box and it has statistical thresholds and alerts and there's also a nice GitHub action to make it real easy to integrate with your project. You can use it to track your benchmarks and so as we're kind of going through our Fizz, Buzz, Fibonacci example right the first version of the app probably would have not seen all too much difference between the first and second version but by the time we got to the third that's where we're going to see that performance regression and what we want is an alert to let us know that that happened. Detecting performance regressions is a key part of continuous benchmarking. Using statistical thresholds here you can kind of set the bounds of what you think is acceptable so again that first and second result are going to be pretty tightly clustered but the third result is going to be way out right there and that's what generates that alert. If you want to get into the statistics you can use both a Z-score and a t-test and set windows and sample sizes and things like that. So if we're going to do the continuous micro batch marking with criterion that we looked at that's in the kind of shared part of the code we do bencher run we tell it that the adapter is rust criterion and then we just give it our cargo bench command and it just works. Now if we're in CI and we want it to fail our builds in case there's an alert we just add a dash dash error flag and it will fail to build if an alert is generated. Now onto the macro benching macro benchmarking side of things with that custom harness that we built you again use bencher run but this time we'd use the adapter JSON and we go and read from the file that we saved to for the results and then we run our sudo base command for running cargo bench and again we just pass the error flag if we want it to fail on alerts. So that is the macro benchmarking side of things and that allows you to catch performance regressions in CI and again as I mentioned there's a GitHub action so it's really easy to just pull into your project if you want to use it. So continuous benchmarking you have to do detects in order to prevent production is too late development is local only and continuous benchmarking can save us a lot of pain. So I highly suggest that you add continuous benchmarking to your process especially if you consider performance to be part of what you expect from your application. So again in review we've gone over the basics of EBPF programs in Rust enabling a like an evolving a basic EBPF program benchmarking those programs and then adding continuous benchmarking so that has been run fast catch performance regressions in Rust that is a link to the repository all of the source code is under examples slash EBPF there and if you're too lazy to type that all out there's also Bencher.dev slash repo which will send you straight there and if you like it I do ask if you like the project to please give us a start so thank you Alrighty Any questions? Yes, okay Thank you, good talk I have a simple question for example some degradation could happen on different architecture for example on ARM maybe RISC-5 for example I can test on X86 so is it ready for different architecture? Yes There's a concept of three main dimensions so there's branch, testbed and then the benchmark itself and so the concept of testbed would be for that architecture so if you're running let's say on like a windows box and then maybe a better to say a Linux like a Ubuntu box versus a Fedora box maybe the better to say here at this conference then if you're trying to even you can even use different versions of different testbeds within that and so that dimensionality allows you to kind of keep that straight Thank you Anything else? Alrighty, thank you guys so much Appreciate it


A lot of people, men, women, I think men may be more guilty of it than women, think it's just a twinge.  Or some guys will go, you know, two or three days because it's the macho type thing to do. Oh, yeah, I hurt my back, but yeah, it's okay. It's not a big deal. Well, it is a big deal if it turns out to be a big deal and you didn't tell anybody when it happened and where it happened and how it happened because the longer you wait, the more difficult it is to prove that whatever's wrong with you now was a result of something that happened five days ago, 10 days ago, maybe two weeks ago that you didn't think was going to be a big deal at the time, but now it is. People are reluctant to do that. They are just reluctant to do it and I understand for any number of reasons they're afraid, you know, to lose favor of their employer, afraid to look like a wimp or something like that. So I see all the time where people say, well, you know, I got hurt last Thursday, but I didn't tell anybody about it until the following Monday because I just thought it would get better. I just thought, you know, I would rest over the weekend and it would get better. And unfortunately then the question becomes, well, did you get hurt back last Thursday at work or did you get hurt out of water skiing on Saturday when you weren't at work and then you came in to work on Monday and said, oh, by the way, I hurt my back last Thursday. That's when the issues start to arise. You can avoid those if you would just man up and tell them, hey, I hurt myself. I hurt myself, didn't mean to, but I did and it hurts.


Keiri eirach AU fertilizer i formats ngidama ea siar…. Bekei dangoni ma που ni hau gwahan ali, kajit料ialm raia o wamblana�isi ia. tu negigadu a discipline mahiriaa pa batori. Apnodwai mi nāyiti that Lets responsibility for career education wa shared by many people and different agencies. Tw's reason we sought the advice and assistance of a range of organisations to help us with this project these included the Career and Transition Educators Association, USENT Council Educational Research, post primary teachers association, the Ministry of Education, school support services, the school trustees association and the industry training federation. The advice we received from those agencies and organisations has greatly improved the benchmarks that you see today. We've carried out field testing in 30 schools across the country. We've had discussions with career professionals in 18 cluster meetings and we've shared this work broadly across the education sector. The feedback and consultation we've had has greatly assisted us in the development of these benchmarks. I've really valued the opportunity to represent the careers in transition education association and schools in the development of the benchmarks. All student transitions are something all schools strive for so these are at the heart of the benchmarks. Ultimately schools have the responsibility to make the decisions about career education and highly effective career education requires a whole school approach which is led by school trustees, senior managers and career development leaders. The benchmarks have been designed as a flexible self-review tool that enables schools to review their current practice and identify key areas that they wish to focus on, improve and develop. Findings and research from the creating pathways and building lives capable project and New Zealand and international career development research and frameworks have shaped the benchmarks. They have also been aligned to New Zealand education documents and strategies such as the career education guidelines in Kaikatea. Careers New Zealand will support schools to implement these benchmarks. We'll have resources available online and we'll be developing professional development and cluster meetings to support you in this work. Each year we're going to review the benchmarks based on practice in schools and the latest research. We'd really appreciate your feedback and how you're finding the benchmarks. And to this end we've created a feedback mechanism on our website. Please contact us if we can be of assistance in implementing the benchmarks.


This is Sprout School Science produced by MinuteVideos, teaching technique number one. How do I retain my students' attention? Research suggests that students' attention reduces dramatically about 15 minutes into class. Within 30 minutes, it is often as low as 20% of the original level, and after 45 minutes, it's almost entirely gone. Given that we spend up to 12 years in school, it becomes clear how important it is to increase the time where your students actually pay attention. One method to fight boredom and keep attention high is to reduce the session length. You can break them up into segments with small breaks in between. Even if that does not mean students get back to the initial high, studies show that whenever a new section begins, attention is lifted dramatically before it drops again. A history teacher, for example, could break up Columbus's voyage over the ocean into four chunks, with short one-minute breaks in between. In the first 20 minutes, the teacher could tell the story about the voyage. The next 15 minutes, students could discuss in groups what could have been dangerous about sailing during these days. Then each group could present their discoveries for another 15 minutes. In the last segment, the teacher could complete the students' findings and bring them in context with the actual risks of Columbus's expedition. Please use the comment section below to let us know what you think. If you are a student, tell us if the method improves your learning. If you are a teacher, share with us how you apply it in class. We're releasing updates regularly, so don't forget to subscribe and like us on Facebook. Thank you for watching.


Oh, it's pretty yummy I'm here for pilates today with Joan, Suvines and Pyeoller. It seems I'm the first one here So I totally forgot to film us exercising at pilates But now I'm back home and I want to have another meal from Sprout of course This is the burger bowl and it has soy meat The dressing looks really good though. So it's already day 15 two weeks since I started this challenge And we've come a long way two weeks I'm proud of myself for not giving up at radio eating my dinner a chocolate almond milk sweet potato and Cold cannon, which is like an Irish style mashed potato I'm excited for this On my way to another deep flow yoga class. It's 9 50 I'm gonna make me some summer rolls for lunch I was really craving summer rolls because I was talking to my friend Diana and she just said she had summer rolls So I was like, okay, I need to make myself some a carrot cucumber pepper And some hard tofu to fry and put into the summer roll. So I'm gonna make my sauce for the tofu I'm gonna use the rice oligo syrup or corn starch kind of thing and sesame oil Wow, this looks pretty bad Um, but yeah, let's give it a try I tried making peanut butter sauce But it turned out funky after I added water. I don't know. I thought it was gonna make it like runnier But it just ended up getting harder. I'm so hungry. I did not care about the visuals I wish I could have put some more veggies in it. It's so healthy. Oh my god. I totally forgot to put avocados in I bought avocados before Tastes very healthy I like it because the flavors aren't too strong Oh, I could have put vermicelli noodles in it, but I thought that would just be too much carbs. So I didn't put it in I'm eating my first meal kind of late today. It's almost two. But anyways, it is day 16 and if you ask me What I'm craving the most I want to say eggs because I've been craving eggs so much I can't live without eggs. I just love eggs so much All clear That was delish and really healthy But again, I'm going to be hungry after like an hour But it was still good. I can't get crushed You've been laid down so many times you wonder if you need to get up You didn't mean to too much But I ain't trying to mess this up Let's get away eating cherries as soon as they're gone from her radio Didn't even change. I'm starving So there are three hottest days in the lunar calendar and today was the first one of them Which is called trouble and that's the day everyone eats chicken to nourish the body and to get the body ready for the summer heat And everyone around me was eating chicken today And I was just so sad because I couldn't have any I have garlic hummus from sprout that I got and it's so good But I have nothing to dip it in right now. So I can't eat it. I'm literally looking up things to dip in hummus pretzels crackers pita crisps fruits apple slices go well with hummus Raw veggies. Oh, I think they're raw veggies. Oh, I should do carrots with hummus right now That's a good idea because I'm still kind of hungry. So this garlic hummus from sprout is so Good, I'm obsessed. All right, done with my snack. I gotta stop now or else it's gonna be uncontrollable Time to get ready and sleep. See you tomorrow morning Good morning guys for breakfast today. I'm gonna make myself a blueberry and banana smoothie Just realize that I don't have plain coconut or milk So I'm gonna put Chocolate almond milk. Well, that tastes weird blueberry and chocolate. I know banana and chocolate will be fine, but blueberry and chocolate Whatever, let's just try it It tastes like protein shake I think because of the chocolate milk I put it Yummy So for lunch today, I'm finally gonna have some rice And I'm just going to be putting avocado tofu and some vegetables on top with soy sauce and sesame oil kimchi here If I had an over-easy egg on top of this Oh, this is a lot. I need more soy sauce. It's very very healthy for dessert. I am finally having ice cream I found some vegan ice cream from that to do and it's the cashew vanilla flavored. I'm gonna have it with some black coffee I love having cold ice cream with hot coffee. So That's what I'm gonna be eating for dessert having the drunken noodles again from sprout For breakfast, I am having the blueberry banana smoothie again. It was just so delicious yesterday and It's quick and easy I have to get ready really quick. So This will be my breakfast for today And also I'm going to be going on like a mini road trip with my friend and her husband today So I got to find some vegan places in pachu My friend is taking a bit longer than expected To come pick me up. So I'm going to have some snack So last week when I went to the bar With the girls we ordered a dish that had uni and avocado and seaweed I just ate the avocado with the seaweed and dipped it in soy sauce, of course But then the avocado tasted like tuna sashimi. So I was like This is so good. I gotta make it for myself at home So I bought some avocados yesterday and I bought some regular seaweed and I'm about to have it as snack Yeah, I didn't cut the avocados Too nicely, but all you have to do is wrap the avocado and seaweed and dip it in the soy sauce If I close my eyes Need it tastes like tuna So good. Wow. I think I could have this every day I'm not even kidding They also sell a lot of vegan and healthy organic food here as well It's got vegetarian ramen You can see our pizza being made in there They have reusable tissues as well Yes, our roasted vegetable salad Blueberry Completely vegan So sticky Sparkling lemon juice from San Pellegrino So the vegan place we were originally gonna go to was closed. So I came to another italian spot And I'm just gonna get a salad But they only have a feta cheese salad. So I just asked them to give me the cheese separately Vegetables from the fridge into a pan Because I want to use them up before they go bad We'll have carrots, bell pepper, broccoli, onion, mushroom, and bok choy This is very very colorful Just smells so good Here is my sauteed vegetable. Oh, yeah, I sprinkled some sesame seed on top too Good morning guys. I was supposed to go to my 10 a.m. yoga class, but Couldn't wake up and I'm gonna blame the weather because it's rainy and gloomy as hell outside. So Maybe that was the reason why Yesterday night before I fell asleep. I was super excited to go to class, but Anyways, I'm really hungry. So I'm going to try making banana pancakes Because as you can tell my bananas have browned a lot and I want to eat them before it gets too bad And I also bought some flour I really wanted to buy like whole wheat flour or old flour, but they didn't have Regular flour was the only kind they had I don't have baking powder or vanilla extract. So Hopefully This will be okay Whatever I'm just gonna do it my way It looks a little runny, but whatever Whatever, I don't know what they look like hash browns though Maybe I put in too many bananas. It's actually really good chocolate banana Pancake kind of just tastes like I am eating mashed banana For lunch, I'm having spring rolls again Because I just really wanted to have it with avocado this time I just skipped out on tofu because It was too lazy to cook it on the frying pan. And then for four of them. I covered it in seaweed kind of sounds like a weird combo, but I don't know. I just thought I should experiment and see how it tastes Anyways, I'm gonna have the normal one first. I'm trying to Seaweed summer roll. This is better than I expected Why don't people actually make this? I think it would be good with um without the rice paper and just vegetables wrapped in seaweed But the rice paper gives it like more of a chewy Texture. Okay. I wasn't feeling full. So I'm gonna eat some avocados with seaweed like I did Two days ago because it was so delicious with some soy sauce I can't get over it's so simple like so so simple, but It's so damn delicious Okay, so I only had sweet potato and almond milk for dinner today. So I'm starving So I'm gonna have a snack a late night snack This is bad because I've just been making it a habit to eat late night snacks after I got home from radio Which is something that I don't usually do but Just have been eating a lot more now that No, I'm vegan I'm not really vegan. I'm trying it out. I'm testing the waters. But um Yeah, so I originally bought the flour this morning to make kimchi pancakes But I just went with banana pancakes instead. So I'm gonna try making it right now All right, so I have my kimchi here Okay one cup equals 236 And I have this you don't know what I'm doing half a cup of water I'm gonna mix it all together I was craving kimchi pancake today because it was raining I feel like it's like a little runnier than it's supposed to be Again, why do my pancake batters always end up so runny? Like a deja vu of what happened this morning But I might decided to have fried food so late at night Okay Oh my gosh, I'm so proud of myself For making kimchi pancake. Well, I'm gonna have to try it out to see how it tastes, but I made myself some sauce as well with some soy sauce Vinegar and olive oil over there.  It's so good I'm definitely gonna be bloated tomorrow from all the sodium from kimchi, but I'm so happy Of course, it's not as crunchy as the ones they sell in restaurants, but so satisfied Wish I had makgeolli right now And some friends to eat this with That was really really spicy, but delish I feel like my stomach is going a little crazy right now Anyways, I have some batch left over, but I am way too full. I cannot finish it right now So I'm just gonna wrap it up and maybe eat it tomorrow Going to another color hits class I'm scared And I also bought back my containers from sprout Yeah, we returned them so they can reuse it and it was a lot of plastic so I have this full bag of all the containers I don't have a lot of times to eat today because I have to get ready quickly and leave the house So I got delivery from sality And I order from here often because they're super quick Even before the vegan challenge happened when I wanted to eat salad or wraps I would order from here because they would deliver in like 20 minutes I got my green juice And I got a warm wrap this has plant-based meat in it. And it's my first time actually trying it from here Yum, this looks good This is what it looks like The meat tastes like bulgogi Sality is a chain restaurant and they have stores like all over Seoul. So Just download the delivery app hit that a mean joke and You'll be able to find some around your area With the oats I bought yesterday. It's my first time making oatmeal. So I was never a huge fan of oatmeal because I tried it once and I did not like it But today I'm going to add some toppings Like sweeter toppings to help me Like it. So hopefully it'll be better I looked up instructions and how to make it and I'm just going to use the microwave because that's the easiest and the simplest I'm adding half a cup of oatmeal One cup of water It's out of the microwave. This is supposed to be this thick Kind of like porridge I'm gonna be adding some chia seeds and some flax seeds And maple syrup And it looks like this Why am I nervous about trying this? It's bad and I never want to have it again Very nutty and it's pretty sweet because I put a lot of maple syrup in there I may really go with banana, but I only have frozen ones right now But it's a lot though. I don't know if I could finish it I have this much left But I don't think I can finish it because it's getting a little too greasy Like it's of course, it's not greasy or oily at all, but it's just feeling greasy in my tummy and I don't like it so I'm just gonna have to throw this out On my way to Pilates I'm running a little late and it's raining, but I made it I made myself Kimchi pancakes again because it's raining outside and I had the batch left over I didn't eat a whole lot today because my day was kind of busy so making up for That with some kimchi pancakes


In the last lecture, we introduced the concept of gauge invariance. What we did was to realize that in an electromagnetic theory, we would like to determine the electric and the magnetic field components, which are six quantities. Now, if we put it in the language of the potential, that is if we formulate the electromagnetic theory, in terms of the scalar potential, which is a one component and three components of the vector potential. So, there are four components. We got two coupled equations. What we did is to then realize that in defining potential, we have certain amount of choices, liberty, which we call as the gauge choice. Using that, we were able to decouple these equations. After that, what we introduced was what was known as the pointing theorem, which talked about a conservation of energy in the electromagnetic phenomena, which brought in the concept of an energy associated with the field itself. So, we will continue to make observation based on these. So, last time we had completed deriving all the four Maxwell's equations. So, del dot of E was rho by epsilon 0. Alternatively, del dot of D is equal to rho free. Del dot B equal to 0 is always true, because there are no magnetic monopoles. The Faraday's law, which told us that del cross of E is minus d B by d t and del cross of H, the Ampere-Maxwell's law, gives me free current plus d D by d t. And there were set of two constitutive relation and those were the displacement field D is given as epsilon 0 E plus P and the magnetic field H is given in terms of magnetic flux density B by mu 0 minus L. So, these are the complete set of Maxwell's equation we deal with. So, when we did the potential formulation, what we did is to realize that we have this equation that there are two equations. One was for the scalar potential V, which is del square V plus d by d t of del dot of A equal to minus rho by epsilon 0. And another equation for the vector potential, which in addition to having del square A minus 1 over c square d square A by d t square, there was another term like this equal to minus mu 0 j. So, we talked about what is called as a Lorentz gauge. And in the Lorentz gauge, we said that the relationship between A and V is that del dot of A plus 1 over c square d V by d t is equal to 0. We also found out that supposing this condition is not initially satisfied, we could always make a choice that is A going to A plus a gradient, V going to V plus a constant in such a way that this relationship becomes valid. Now, you can check that when this relationship satisfied because this quantity in the bracket is 0. So, we get del square A minus 1 over c square d square A by d t square equal to minus mu 0 j. And similarly, since del dot of A satisfies this relationship, this will also give me an equation del square V minus 1 over c square d square by d t square V equal to minus rho by epsilon 0. So, the two potential equations were decoupled in Lorentz gauge. It is a very useful gauge to work with. But if you recall, we have been when we talked about magneto statics, we have been always talking about what we called as a Coulomb gauge. In Coulomb gauge, the divergence of the vector potential was taken to be equal to 0. Now, naturally you would be asking yourself the question that is that gauge any goal? The answer is yes and let us see what it does. If del dot of A equal to 0, then you refer to this equation. Notice del square V plus d by d t of del dot of A which is now 0 is minus rho by epsilon 0. So, that tells me that del square V is equal to minus rho by epsilon 0. In other words, del V satisfies the Poisson's equation. So, that equation is stands by itself which has a solution V of x t equal to 1 over 4 pi epsilon 0 integral d cube x prime rho x prime t x minus x prime. This of course, we know is the formal solution of this equation because if you apply del square on both sides, del square of 1 over x minus x prime is minus 4 pi delta function and that will take care of this. The problem is with the second equation. The second equation is a little complicated equation and see in Lorentz gauge, this term was dropped and so that there was an equation for A itself without involving the potential V. Now, if you simply say del dot of A equal to 0, this equation still has a gradient of d V by d t. So, del square A minus 1 over c square equal to 1 over c square the gradient of d V by d t minus mu 0 j. Now, the question is that we have to do something to get rid of this V because what we are interested in is an equation which involves A and let us see how it gets done. So, in this case we have just now seen the expression for V can be written as a solution of the Poisson's equation which is 1 over 4 pi epsilon 0 d cube x prime rho x prime by this. So, what I do here is this since time differentiation is independent. Let me write it down here. So, we will do the following. So, we have del square A minus 1 over c square d square A by d t square. This is equal to 1 over c square. I have a grad of d V by d t and I already know the expression for the potential. So, 1 over 4 pi epsilon 0 this constant comes out. Grad of the potential term which is the solution of the Poisson's equation and that is we have just now seen is d cube x prime. We had a rho x prime, but there is a d by d t. So, it is d rho x prime d t by d t divided by x minus x prime and d cube x prime minus mu 0 j of course, is there. We are not really going to be doing much about this term till the end because it is anyway an inhomogeneous term which will sort of stay right till the end. So, the question is how does one handle this equation? I have at least formally removed V and brought in a charge, but you notice that the way it comes is d rho by d t. At d rho by d t is nothing but a current accepting that this current is j of x prime t. So, let us write it down. So, it is 1 over c square 1 over 4 pi epsilon 0 gradient of d cube x prime and I have got now this gradient is with respect to the primed variable. So, del prime of del prime dot j this I am writing down from the continuity equation d rho by d t plus with actually I need a minus sign there. So, d rho by d t is minus del dot j divided by x minus x prime. This is simply using the continuity relationship between the current and the d rho by d t. So, therefore, what I need to do is this. So, this is what I have let me further simplify it. So, this is the term which we are interested in looking at, but before I proceed let me make a few comment about a vector. Now, if I have an arbitrary vector j current density vector I can resolve it into two components. One I will call as the longitudinal component j l and another I will call as the transverse component j t and the relationship is that del dot of j t is equal to 0 and del cross of j l is equal to 0. Now, this is something which we have been doing all the time saying that a vector is completely specified by specifying its curl and the divergence. So, this also implies that if I have an arbitrary vector I can resolve it into a curl free vector and a divergence free vector. So, this is the way we would resolve a general vector. Now, notice if I now try to find out what is del cross del cross j. We have used this equation several times we have seen that this is nothing but del of del dot of j minus del square j. So, if I now want to write down what is del square of transverse component of j. So, if I take a transverse component I notice that the curl does not vanish, but divergence of the transverse component is 0. So, del dot of j transverse is 0 and I will be left with them there is a minus sign there. So, minus of del cross del cross j I can write down del cross del cross j t, but that is the same thing because del cross of j l is equal to 0. Likewise, if I have to calculate del square of j longitudinal then the curl part is equal to 0 and I am given by the left with gradient of del dot of j l can write this also as t. So, these are the few vector relationship which I am going to be using to simplify this expression. Remember what I have done I have written an arbitrary vector j in terms of a longitudinal component and a transverse component one which has the curl equal to 0, the other which has divergence equal to 0. So, that the Laplacian of the transverse component is related to del cross del cross of that quantity and Laplacian of the longitudinal component is related to the gradient of the divergence. So, let us proceed as to what does it mean and how does one use it. So, we return back to what we had. So, I had minus 1 over c square well primarily what I had was this type of a thing. So, let me let me try to see what is this integral to start with and then I will plug all these things there. So, this integral that I have got is integral d cube x prime del prime dot j by x minus x prime and you remember I have to ultimately take the gradient of this quantity. So, what I do is this that this quantity I will write as by simple chain rule what I will do is to say that this quantity is equal to let me write it down and then I will see why this is d cube x prime del prime dot j of x prime then del prime of 1 over x minus x prime let me just see what I am doing. See what I do is this that I say that supposing I take supposing I take a gradient of the whole thing that is gradient of gradient means del prime of del prime dot j by x minus x prime then by chain rule differentiation that is this factor multiplied with gradient of that and the other factor is what I had there that is this quantity that I have written down. And when I get gradient of this whole quantity is gradient of del prime dot j by x minus x prime minus this quantity and this when there is a del prime of the whole thing I can use the analog of divergence theorem to convert that volume integral to a surface integral and since all fields currents etcetera go to 0 at infinity that type of a term drops out. So, this integral that I had is this quantity. So, this is what we have written down there now what I will do is this that this is equal to minus integral of d cube x prime del prime of del prime dot j of x prime divided by x minus x prime. See what I am actually doing is this there is a gradient to be taken outside this and I am trying to sort of see to it that when that gradient is taken I have a quantity whose gradient is this. So, let us see what it means actually. So, this tells me that del square a minus 1 over c square d square a by d t square is this and by what you just now showed this quantity is can be written as minus mu 0 by 4 pi d cube x prime gradient prime del prime dot j l of x prime divided by x minus x prime minus mu 0 j. Now, look at what we are doing now I have got a gradient of a divergence here. So, I will write this as gradient of del prime dot j longitudinal x prime that is equal to del prime square j longitudinal x prime plus del prime cross del prime cross j l this is the same formula which I have been using several time del cross del cross equal to del of del dot minus del square. And since the longitudinal field is called free. So, this is equal to del prime square j l of x prime. Now, if you plug in all these things I get del square a minus 1 over c square d square a over d t square is equal to minus mu 0 by 4 pi integral d cube x prime del prime square j longitudinal of x prime divided by x minus x prime minus mu 0 j. Now, at this stage what I do is to use what is known as a greens identity. Greens identity if you recall is if I have two scalar fields t and u t del square u minus u del square t volume integral is converted into a surface integral of this type. And this surface integral because my choice of these scalar functions will be the current and in this case the distance 1 over x minus x prime all these surface integrals will be 0. So, in other words what I get is integral of t del square u is equal to u del square t which means that del square j l by x minus x prime is same as j l times del square of x minus x prime. Now, so once I do that so it is minus mu 0 by 4 pi integral d cube x prime j l of x prime del square of 1 over x minus x prime minus mu 0 j. And we have repeatedly said that del square of 1 over x minus x prime is minus 4 pi times a delta function. So, therefore, minus 4 pi cancels here and I will be left with simply mu 0 times j longitudinal at the point x. I had to subtract from is minus mu 0 full j which is nothing but mu minus mu 0 times j transverse because I had written the vector j as the difference between the full vector and vector j as the sum of a transverse part and a longitudinal part. So, notice what has happened my equation for the scalar potential was already decoupled and that simply give me del square phi is equal to minus rho by epsilon 0 there is a Poisson's equation. In this case I have an inhomogeneous wave equation we will be talking a lot about wave equations in the next few lectures. So, we have del square a minus 1 over c square d square by dt square is minus mu 0 times that transverse current in the problem. So, in other words we have succeeded in Coulomb gauge also to decouple these equations. So, that is a comment on the gauge invariance and discussion of two important gauges there. Now, let us look at the other thing that we did last time is to say that if I have an electromagnetic field the field is a storehouse of energy and I define or I obtain a an expression for the energy densities there is one part which is the electric part and one part which is the magnetic part and we had shown last time that the energy density u is given by half e dot d plus h dot b. Now, I will be confining myself to linear medium and. So, I will be using only e and b vector. So, that the energy density expression becomes half of epsilon e square because d is epsilon e and half of b square by mu. So, this is the form in which I will be using it. The total energy in a given volume then is given by the volume integral of this quantity. So, that is the total energy in a given value. So, what we said is that if I have an a field or a collection of charges and currents in a closed volume then there is this is of course, a place where there is energy stored. Now, this volume can lose energy first of course, is by dissipation which we called as the mechanical loss and secondly physically radiation leaving the surface which defines this volume and we had seen that the mechanical work done is essentially the joule loss which is integral over the volume of e dot j d cube x and we defined we also found there is a flux of energy from the field to outside the closed volume and we defined a quantity which is called the pointing vector which is basically an energy flux term. So, that the rate of change of the energy density is given by the a change due to the physical movement of energy flowing out from the surface binding surface and of course, there is a joule heat term and this quantity e cross h is what we had defined as the pointing vector and this is in some sense a statement of conservation of energy for the case of electromagnetic fields. The next question that naturally comes to us is that if the electromagnetic field has energy is it possible it also has moment. The answer is yes, actually a more rigorous way of looking at it can come only after one has done relativistic formulation of electrodynamics, but I will give you some simple way of looking at it. So, let us suppose I have a charged particle which is supposing the charge particles are moving in the plane of the paper and there is a charge particle which is moving along let us say the x direction let us call it q 1 and there is a charge q 2 which is moving along the y direction. I am looking at and this charge I am looking at the force on this charge at the instant when it is passing through the origin this is of course, moving like this. Now, notice so far as the electric fields are concerned there are no issues because the this distance at the instant when this is going towards right this distance is known which is let us say d the force on q 2 due to q 1 is 1 over 4 pi epsilon 0 q 1 q 2 by d square and equivalent opposite would be the electric force due to q 2 on q 1, but let us look at what happens to the magnetic case. Now, these are electric charges which are moving. So, moving charges their effect is the same as that of a current. So, here I have a current which is flowing along the x direction this is the y direction. So, therefore, the if you look at this current this gives rise tries to magnetic field in the z direction. So, this field because there is a charge which is moving in the y direction the field is in the z direction. So, v cross b which is y cross z which is along the x direction. So, therefore, this charge will be subject to a force because of the magnetic field generated by this charge which is flying past this point over and since there is a magnetic field this charge will experience a force which we have just not talked about. But let us look at what happens d 2 force due to q 2 on q 1. Now, field due to q 2 on q 1 at the origin is 0 it is moving along this line you can sort of intuitively see it, but on the other hand a more rigorous justification can be given. If you knew that if there is a charged particle moving at the velocity v then what is the direction in which the magnetic field acts then this here it is 0. So, in other words this exerts a force on this, but that one does not exert a force on. In other words there is a an apparent violation of Newton's third law of action being equal and opposite to reaction. The way to circumvent this is that see if there is a force on this there is certain amount of momentum. There is certain amount of change in the momentum and if these are not the only bodies that are being talked about there is a third thing here and that third thing is the electromagnetic field. Now, if it is possible for us to transfer certain amount of momentum to the electromagnetic field then there is no violation of Newton's third law. The main reason is that Newton's third law action reaction becoming equal and opposite led to a conservation of momentum and these two forces not being equal and opposite was an apparent violation of the conservation of momentum. So, therefore, we intuitively at least can understand that electromagnetic field carries momentum and what we are going to do now is to look at what how does one conserve momentum in case of an electromagnetic field. So, let us go back to an expression for the force. So, the expression for the force is rate of change of mechanical momentum d p by d t and let us write it in terms of the force. So, in the continuum limit my charge distribution is subjected to an electric field which is rho electric field E plus rho V cross B which is due to the Lorentz force of magnetism and this times d cube x. Now, I am going to make some modification to this equation. Firstly, I will use rho times V is nothing but the current J. So, this equation will be rho times E plus J cross B d cube x. Now, what I will do is this I know del dot of E is the rho by epsilon 0 and what I have is this. So, let us write this instead of rho times E I will write it as epsilon 0 E times del dot E p. The second equation that I will be using will be del cross B as we know that this is the Maxwell's Ampere's law mu 0 J and modified according to Maxwell's is mu 0 epsilon 0 d E by d t. So, what I am going to do is this for this term I have got a J there this J I am going to replace by difference between these two things and that gives me. So, let me write it here. So, J is 1 over mu 0 del cross B minus mu 0 epsilon 0 d E by d t which is 1 over mu 0 del cross B minus epsilon 0 d E by d t. So, what I am going to do is to for this J I am going to write this. So, let me write it as two different integrals. So, this is d cube x plus 1 over mu 0 integral del cross B cross B d cube x. I have a minus epsilon 0 there. So, minus epsilon 0 integral d E by d t and cross B is already there d cube x. So, the expression is becoming a little more complicated, but on the other hand we will be able to substantially simplify it. So, at this moment it looks bad. So, let us look at what I have got so far. Let me rewrite this equation. So, that we can look at every term separately. So, d P by d t is equal to integral epsilon 0 E del dot E d cube x plus 1 over mu 0 del cross B cross B d cube x minus epsilon 0 integral. I have got d E by d t cross B. So, d E by d t cross B d cube x. Now, I am going to change this equation to a little more symmetric form. So, first let us observe d E by d t cross B can be written as d by d t of E cross B by chain rule minus E cross d B by d t. And the second term of that this is d by d t of E cross B I do not touch it minus d B by d t is nothing but del cross of E. So, therefore, this is plus E cross del cross of B. Now, you see the reason why I am doing this. In this term I had a del cross B cross B or B cross del cross B. I wanted to treat the electric electric and the magnetic field very symmetrically. So, I have this term there and so I have got this term there. So, with these what I get is d P by d t is equal to epsilon 0 E dot E times del dot E minus 1 over mu 0 integral B cross del cross E del cross B d cube x minus epsilon 0 integral d by d t of E cross B minus epsilon 0 integral E cross del cross B. This term that we have got epsilon 0 d by d t of E cross B you recognize what is this term I had defined E cross H as S. So, that was my pointing vector. So, this is nothing but the rate of change of the pointing vector there is a term I have a E cross B here what I need is E cross H. So, there is a mu 0 that will come out. So, mu 0 into epsilon 0 will give me 1 over C square. So, this term we will go to the other side which I will write down, but what we are looking for are terms of the remaining. So, let us look at these remaining terms and what are they. So, what I have got is the following I have got d P by d t d P mech by d t plus epsilon 0 d by d t of integral E cross B d cube x equal to a set of expressions which I am coming back to, but first I want you to realize that this term is nothing but epsilon 0 mu 0 E cross H. And epsilon 0 mu 0 becoming equal to 1 over C square I get d P mech by d t plus 1 over C square d by d t of S d cube x and that is equal to these terms which we have written down which had B cross del cross B E cross del cross E E del dot E etcetera. I will come back to those terms, but let us first look at what this is telling us. See notice that S by C square has to be electromagnetic momentum density, because after all this is momentum P mech. And so therefore, the integral of S d cube x must also have the dimension of momentum. So, therefore, this is momentum density S by C square is momentum density and you can check that S by C is nothing but the energy that is energy density that is carried by the field. So, this is the momentum density associated electromagnetic momentum density associated with the field, but let us now look at the remaining term. The remaining term where let me just show it for the electric field. So, you notice there is a E del del dot of E minus E cross del cross E. So, let us look at E del dot of E minus E cross del cross of E. Magnetic field term looks a little asymmetric. It is as B cross del cross B there does not seem to be a term similar to this, but on the other hand I can simply physically add it. That is I will do that, because I have this term. So, there is a proper minus sign. I will write down plus 1 mu by mu 0 1 over mu 0 integral B del dot of B. I could do that, because del dot of B is identically equal to 0. So, therefore, this is like adding a 0 to that equation. So, that has an effect of making these expressions symmetric with respect to electric and magnetic field. So, I will carry out the algebra for one of those fields and I will simply substitute that at a later stage for the magnetic field as well. So, let us look at what is it that I have. So, I have this expression E del dot of B minus E cross del cross of B. This is of course a vector, but then I expect that. Now, to find out what is its form. What I am going to do is to find out what are the components of this. Take for example, the x component of this. I will calculate x, y, z component and then we will be able to write it in a particular fashion. So, this quantity is E x del dot of B is already a scalar. So, that is D E x by D x plus D E y by D y plus D E z by D z minus x component of that and that is minus E y del cross is z component minus minus plus. So, E z del cross is y component. So, this is E x D E x by D x plus D E y by D y the divergence term fully minus E y del cross 1 del cross is z component. So, D by D x of E y minus D by D y of E x plus E z y component. So, D by D z of E x minus D by D x of E z. There is a lot of term, but I will be able to write it in a. Remember this is just an x component. I will have to add to it the y component and the z component also, but let us look at how to simplify this x component. So, what I have got here is this. I have got E x D E x by D x which is nothing but half of D by D x of E x square. So, this term is half of D by D x of E x square. Let us look at other derivatives with respect to x. Here is one term and here is another term. Look at what is this? This is minus E y D by D x of E y. So, which is minus D by D x of E y square, not 1 by 2. Let me write it 2 here. Likewise, the other term is also D by D x of E z square by 2. There are other terms there which are like this. D by D y of E x E y. You can see this that this is E x times D E y by D y and D y E x times D y. So, both the terms are there. So, we write this as plus D by D y of E x E y and exactly the same way. I have another term here which is D by D z of E z E x. Looks a little asymmetric, but notice I can add a term D by D x of minus E x square by 2 here. To take care of this half, I will be left with D by D x of E x square minus D by D x of E x square plus E y square plus E z square by 2 and then this terms which are D by D y of E x E y plus E x E z D by D z of E x E z. Notice the symmetry now that has come in. This is nothing but D by D x of E square. Then I add up the there is of course, a factor of 2 there. So, let me write it as minus 1 by 2. Then I add up the terms which come from the y and the z component. I will get D by D y of E square and D by D z of E square and what is that? That is simply the gradient of E square by 2. There was an epsilon 0 in front of it and since the magnetic field is identical, you are going to get a minus a gradient of the total energy density there which is because you have an energy density and you are looking for a gradient of that. Therefore, this is the momentum density. So, this term will give you the momentum density term. I am going to be just doing the algebra today and point out and next time we will do a complete discussion because it takes a bit of a time. This term is D by D y of E x E y D by D z of E x E z and D by D x of E x E x because this is E x square. So, this term along with the components that will come up with y and z, it is somewhat of a different type. So, what I am going to get here is a set of terms which I have not quite come across because this term which is D by D x of E square and D by D y D y D z which is nothing but the gradient of the energy density. So, that is the momentum density term. So, I have a term which is associated with the pointing factor term. I now have a term which is with the amount of energy that is stored in the field. The term that is remaining which is still in a big mess that is the term which will be associated with the momentum of the electromagnetic field and we will continue from here in the next lecture. So, to summarize, we have been able to write the momentum density of the electromagnetic field in terms of three separate components. Thus so far it has been algebra. Next time we will combine these to find out how what are the interpretation of each one of these terms.


Well thanks a lot guys well Paul sometimes we fib sometimes we promote something say pitchers dual pitchers dual pitchers dual and it just doesn't turn out to be that way it did today it lived up to the billing. Well there's no doubt about it I mean we said that these are the two premier pitchers in the American League and they both pitch like it today I mean it was no overshoot saying it was a heavyweight bout my Michael I mean it was and you just couldn't figure out how this game was going to come about and in that fifth inning. The big swings in the bat gave Garrett Cole enough and the wise closing it out good things are happening for the Yankees you know three four days ago we were wondering how they were going to turn this around while so far in this series they played really good baseball. You know it's interesting you watch you watch Garrett Cole Paul and he's such a perfectionist and you can see he was not thrilled through the first couple of innings with the way he was throwing some of his pitches he didn't like the execution shows you how good he is because throughout all that he strikes out 11 doesn't walk anybody. But you could tell still not totally satisfied. Well early in the game I mean you said it I tried to talk about a little bit he had great stuff good curveball good change up power fastball but he was missing with location by the middle of the game. He started to find that location and it's still he carries his fastball from you know from first pitch to the 110th pitch he has that type of power. He got better control as the game went on and he was just in total control of the Cleveland Indians tonight. Now the Yankees obviously had to get six outs out of a bullpen that didn't have the back end of the bullpen because they've been pitching in the last couple of games. There was no Chapman there was no green they've been so effective the whole bullpen has been effective but Justin Wilson came on to get two outs and you mentioned this toward the end of the broadcast. Jonathan Weiziger comes on to get four outs. Those are four high leverage outs. You're saving the game for the ace of your team. You're trying to win three games in a row for the first time and we're Weiziger picks up his first big league save. He did. First of all Wilson he had a 3 0 count with a man on base and they ended up getting an out that was a huge out when it came out you know when he got that and then weiziger I thought he did a great job in the ninth inning. Once he got there he went to two pitches. There were no sliders. There was a power fastball and a change up and that was it. Nothing else to confuse or to miss with and that's the way you do it as a closer. You don't need to show everything when you throw 97 98. The Weiziger should be proud of himself tonight because he shows he can get big outs in big situations. All right so let's talk some offense and the Yankees yesterday with four home runs today with two home runs and we'll start with Aaron Hicks. Paul bottom line is Hicks has not hit from the left side. You know he's a better player than what he's shown so far this year especially from the left side. He needed that home run it was a big home run because immediately Yankees tied the game up. Well it seems like everybody is starting to just walk in line.  A lot of people are saying O'Dore's kind of injecting some energy into this team. Maybe that's what they need. I don't know. But when they left Yankee Stadium we were scratching our head. How could this team be this bad with this much talent. Now all of a sudden you know you're seeing three games in a row for the first time of the year and you're thinking this is what we expected. And you know we got a lot of baseball left. They have a lot of time to do great things. And finally Paul they're going for a sweep tomorrow. You've always told me a lot of players have told me nothing tougher than a four game set to win it. And the Yankees have already done that with the victory tonight. But boy if you can get out of Cleveland and take all four games and head to Baltimore we've always played well. That would be a huge win for the Yankees tomorrow and Jamison Tyone will be on the mound.  I mean that's the one thing that when you come into this series you're thinking that's the question mark. But when Garrett Cole's on the mound it's never a question mark. So you know you do have an opportunity. And coming into this series I said you know you need to beat the teams that you're supposed to beat. The Yankees on paper should beat the Cleveland Indians. So you're at a point where you got off to such a rocky start that you're going to have to put some kind of streak together. Why not sweep this team and then go on to Baltimore. Well the Yankees had a home stand that you know that's not the way they planned it out. They won just one game. They didn't look good. The offense didn't look good. Looks sloppy in the field. And now tomorrow they could go for sweep of the Indians and obviously that could turn things around in a hurry Bob.


I feel like it might be nice to talk about the zeal chakra, even though it's not one of the seven major chakras, it's a really exciting chakra that's coming online for a lot of people. And so if you're not aware of it, yet I wanted to kind of share about it with you guys. So the zeal chakra, another name for it would be the well of dreams, or I've also heard it referred to as the mouth of God. The zeal chakra is located at the back of the neck in the base of the skull. If you feel around back here, it's where there's a little indention in most people. That's where the zeal chakra is. And the color ray associated with it is magenta. And I wasn't aware of this chakra until maybe four years ago or something. But what happened was this I had a lot of people coming for crystal healing sessions and I kept getting directed to work back there. And I'd feel all this energy going in and I was telling that I could tell we were activating something. So after having several of those in a row, I thought I'd better look that up and figure out what was going on. So I read about this zeal chakra, found out it's in most people, this is a dormant chakra, but it's beginning to come online for many people. And when it's fully activated, this is a really groovy chakra man because it is supposed to regulate your multi dimensional telepathic communication. So that sounds amazing to me just to be able to open that line of telepathic communication with the higher dimensional beings. This chakra can trigger the awakening of your Kundalini energy, and it it also helps to increase all of your Claire senses your clairvoyance your Claire audience your Claire cognizance Claire sentience. It helps with astral travel.  So this is a chakra I was really interested in let's get this one going right. So, obviously, I wanted to find out if there were any people recommending crystals for the zeal chakra. I found a couple of recommendations but not very many. The only two I really found were clear courts and clear courts makes perfect sense because clear courts can activate any chakra that you put it on. So you can't go wrong with clear courts. The second recommendation also made sense to me because it was pink tourmaline. So pink is great because pink tourmaline is great because it has that magenta color a, and it's also a striated gemstone so you stick that back there like a magic wand, and it's going to start to activate that chakra. But I couldn't help but feel like there was probably You're breaking up a little There and Oh, okay. Yeah, so just to recap what I was saying I just kept experimenting with my own stones until I found you dial light and I put that back there and it was like light bulb went off. You deal light or you dial light. So this is what it looks like. This is a polished piece. They're physically and energetically pretty complex stones they've got that magenta color a also pink and red and rose a little bit of green and violet and white they've got a lot of different colors. This is what it looks like if it hasn't been polished. So you spell that. Okay, so that's spelled E U D I a L Y T E. Yeah. Okay, cool. You dial it. So, okay, so this is a really interesting stone it's got all of those color rays in it it's got that magenta that we like to see. And here's what melody had to say about this melody is the author of love is in the earth, and I'm really sorry because I just heard recently that she transitioned and she sure did give us such a huge contribution of our knowledge of the mineral kingdom so melody. We love you and we thank you for what you've taught us but this is what melody had to say about the stone. And that is it was demonstrated that if you were to hold the dialogue for at least one hour that it will measurably increase your alpha and your beta brainwave states simultaneously. It's really exciting for me to hear so your beta state of consciousness that's your everyday alert awake state of consciousness that we're operating in right now, but your alpha state is more of your day dream imagination state of consciousness and that's where you're accessing your intuition, your psychic ability, your creativity, and even your higher dimensional connection so this stone can help you to be in both of those brainwave states at one time. So tonight is known to help to develop telepathy clairvoyance clear audience and your channeling abilities, and it's known as a fine tuner of transmissions. So actually if you meditate with this it's going to help you to hone in on the important vibrational information that's coming in while tuning out the extraneous noise so it helps you to get much more clear psychic impressions. So this stone is also known to help clear the channel from your root chakra all the way to the top of your head, and it activates a Kundalini experience which is exactly what this chakra is all about. And it's known to bring an increase of synchronicities in your life and it moves you into that higher flow. It's also a really good balancing stone so it can help to harmonize your mental and your emotional bodies. It connects your spiritual body to your physical body. And it just brings in the joy vibration and a feeling of oneness with the universe so I think this is a really dynamic exciting stone and a lot of people I don't think know about it. So if you guys are interested in working with this zeal chakra just like get a flatter piece like this and just stick it back there and chill out for like 15 minutes at a time. When this one begins to activate sometimes it can cause some tension back there so just be aware of that but really exciting stuff.


okay guys we're at spook bridge look what we found some bones animal bones but what kind of jaw bone is that? is that a dog? dog? jaw bone? I don't know I'm not sure what it is there's that up this way we've got people looking at us funny we're gonna be walking clear up here whoa Georgia we're going down this big little road was a road and we just passed the first bridge if you can see it I'll take pictures of it on the way back and it's raining a little bit hopefully a holdout until we do this we drove what 178 miles to go see this and we brought Bruno with us so I'll be right back as soon as we get down further it is so pretty in here and this is spook bridge oh cool look down there oh cool yeah wow hey guys say bear 1000 here we are at the spook bridge and as you can tell it is absolutely pouring out here I'm gonna walk down this way and I'm gonna keep you guys rolling as long as the camera will let me because it is getting soaking wet very very pretty monkey are you wet monkey she says let's go let's go on an adventure we sure did it is pretty yes it is it's a long bridge it's just so overgrown that you can't tell how long it is yeah okay we're heading back to the truck we're not at quite at the end of the bridge yet but we're almost there and I'll show you what we got to climb down over man it's really coming down I don't know if you guys caught the live feed today that we did but we did try to do live feed probably didn't turn out very good but hey we did it for you guys you know one camera is ruined and I think the receiver for the wireless mic is ruined for some reason it was dropped twice on to the concrete and battery came out so I don't know how well it this is what we got to go down we have to climb down this and I have to help her and then she will go around this way and I am going straight up over the bank that way I gotta get down here I'm just gonna pop down then I'll have to get Bruno only about four and a half feet so I'm trying to keep you guys rolling for this this should be interesting enough I can't you must be doing an intro shot no we need to do an end supposed to be the intro but we're gonna make it the outro too why are you wet yeah there's a bridge for you guys do the intro I mean the outro I did the intro it's got screwed up because my intro on this camera you guys now I've been having trouble with three memory cards three memory cards all of them doing the same thing it's not saving save my video clip so but I do have some on this camera I think she's got more than me I do have a little bit on the other camera so I'm gonna have a couple clips for you but yeah I'll throw some still images in if I can if they turn out okay she's got some stuff maybe I can throw some person together yeah and we did we did a live feed so you guys that tuned in thanks a lot Tammy's adventures she said snowing up there sorry guys it's raining here so you know I think what you're going you're sending it this way and it's melting before it gets you yeah cuz we're in Georgia right now yeah we're not too far from Florida no we're not forward but we're almost three hours from that but big shout out Tammy's adventures thanks for watching I don't know who else was watching or if anybody commented we couldn't see it was raining so hard they keep up my glasses on they were fogged up we was using her phone so hopefully that come out all right I mean hopefully we wasn't upside down or anything like that I think my one is no I mean on the live feed live we were upside down that would be awful you be on our heads maybe that's why ever neighbor 1000 I'm signing off that monkey shape monkeys out shape bearer I'm gone for now bye bye guys keep it real remember the myth the man the legend she better talk to you guys soon bye bye