My name is Theodore Zechariah. I am an E-4 and I am with Charlie Company 1143 Air Force. At first formation, sometime around 05. Once we had everything set up, we got onto the buses. I just love driving buses. Down to Quonset Airfield, we got wheels up. We did in-flight rigging, so before usually we would sit in a hangar and get all our gear on there, all of our chutes and get JMPI'd in the hangar and have all our gear on us ready to jump. And then we would walk out to the aircraft ready to jump. This time we took everything with us on the plane and we had, I don't know, maybe like 10 or more jump masters on there. So while we were flying in the aircraft, while it was moving, they were able to get all of our gear on us, inspect it and get us ready to jump. The in-flight rig is definitely proof of concept that our airborne company can deploy anywhere very quickly with a short amount of notice. Honestly, like when we were getting rigged up, it was obviously a little bit uncomfortable and very crammed in the aircraft. But as soon as I got to that door, it was just, you're in sunny Florida, you know, we just got back from Rhode Island. It was all, it was snowing and there was like right at sunset. Once you exit the aircraft in an airborne operation, you have about six seconds before your main chute deploys. Once your parachute deploys, you look up, everything's fine, it's just silent and peaceful. Had a great landing, could honestly, couldn't have asked for a better landing. Jump went very smoothly. I think some people had like rougher landings, but I don't know like actual injuries. Once we did that, we hit a decent length rock all the way to our air evaporation. Did about an eight mile rock to the live fire chute house. Once we got to our destination, we bedded down for the night because we had an early morning. I think we got to bed, I want to say around maybe 11 or 12. Yeah, it was a little cold out there, the weather hovered around in the 40s. Because it got very, very wet and very, very windy.  It's just one of the things we do. Second day there, we worked with blank rounds in the chute house. This weekend, going into the chute house was a lot bigger than anything I've experienced before. There was long hallways, plenty of rooms. I think we ended up clearing, I think five rooms in total was the most. Moving through those rooms is something that, as an infantryman, you need to know how to do well and safely. So when you're going through with blank rounds, it's not too bad because they're not real rounds. But once we started using live rounds, obviously there was more of a safety concern. The craziest rush is definitely operating at night and with live because that's where there's the most room for failure. Before the Army I've never used night vision goggles and it's not as easy to use as you'd expect. It's really just like this little tube as if you're looking through a paper towel. It's just everything's green and you don't really have much peripheral vision, so you really just have to be very conscious of what's around you and everything. It's really, really tight inside of the chute houses. You have to be able to move safely and effectively. It needs to be very, very perfect. There's no room for error. But as long as you trust your teammates, you know you're doing everything, everyone comes out safe. For the blank iterations and the night iterations, we ended up staying up until around midnight. Blank iterations ended up about 11.30 and live iterations ended up about midnight. So the sleep was very limited, but that's one thing as an infantryman, you have to understand that you need to function on these low levels of sleep. Next morning woke up early again, probably same time around 05-06. The machine gunners, which is what I am, we headed over to our range, our machine gun range. Then we rolled into some machine gun drills and we would start at the base of a hill, charge up, lay down our tripod, mount the 240 on the tripod. All of this as quickly as we can. We practice suppressive fire, grazing fire, plunging fire over different distances, different targets at different distances. We also practice rolling guns, which is another method of engagement we use to employ machine guns to support our maneuver elements. We also did a little bit of unconventional positions, like hit firing the 240 or shoulder firing it, which is something that we don't usually do, but if we had to, it's good to know how to and what to expect. As the night came on, we threw on our nods and conducted some night fires. After that, we broke down, went back to the shoe house where the rest of the company was and just got ready for the next morning because we were heading out pretty early again. This morning, we woke up really early, probably around 04-45, and got all our gear on the buses, headed back to the airfield, loaded the C-130, all our gear and flew back to Quonset. Overall, it was a great drill weekend. Honestly, from start to finish it was great. We started off with the jump, which is always a really exhilarating experience. I mean, everyone's nervous no matter if it's your first jump or your 100th. Definitely got really good quality training on that. Definitely became more proficient in using the machine gun and more confident in my own skills. Yeah, so I actually, I'm from a town called Philsburg, New Jersey, so once we finish up cleaning our weapons and everything, when we get released, I actually have to make a four-and-a-half, five-hour trip home and I got school tomorrow morning at 9 o'clock. I know a bunch of guys from the unit there from Jersey, a couple guys from Texas, Florida. People come from all over the country to be in this unit. Tomorrow, after I drove home to New Jersey, I'll wake up to start work. So after I leave here, probably going to be later on. Hopefully around 6, going to be able to get home, shower, because none of us have showered in what, three or four days here. Going to have to wake up early tomorrow, probably around 7 to get to work for 9. After that, I actually have class after work, so tomorrow is going to be a full day. And that is essentially your typical four-day drill and you just got to wake up now for work in the morning at 6.


Digital marketing course for beginners, part one. So you get it, right? Get what? Well, digital marketing, that's where the money is. That's where the money is because that's where the economy is going right now. In this video, I'm gonna share with you some digital marketing skills, okay? There are four of these videos. They all go together. I want you to watch all of them. There's part one, part two, part three, and part four. And it's gonna walk you through all you need to know for doing digital marketing courses, okay? So this is a great setup. You're really gonna like it. It's easy to follow. But make sure you go through the entire four video series. This is video one. Don't forget, there's two, three, and four. Now let's get going. So you can make some money online. Hey, I'm J.R. Fisher. I've been selling online since 2009. I've sold millions of dollars of both digital and physical products. And this is your channel. Yes, it is. Because I make these videos to help you out, to help you start, run, and grow online businesses. Don't forget to subscribe there. Hit that subscribe button. Next to it, the bell, hit the bell, ring the bell. Why? Well, because that way I can notify you every single time I do a video. You don't miss out on a single thing.  You know you want that. All right, let's get going here. Let's talk about digital marketing. And this is really gonna make it so simple for you, so easy for you. You're gonna get it. So let's get going. Now, digital marketing, really, it's just a new fancy buzzword, okay? This has been going on for a long time. Now, how long? You know, I guess since the 90s, maybe the 1990s? Nope, I'm gonna go back even further. Like, I'm gonna go back real far, like over 100 years ago, digital marketing. And you're saying, wait, JR, there was no internet. I'm aware, but let me talk to you about something. Now I'm gonna put up on the screen the first digital marketer in history. You know who this guy is? Do you recognize him? His name is Marconi. I was gonna try to pronounce his first name, I'm just not good at that. What, Marconi? Yeah! In 1896, he was the first human to demonstrate a public transmission of a wireless signal. This dude, he invented the radio. Now, as soon as he did this, of course, everybody started doing it. They all started figuring it out. They started doing Morse code signals. Now, it took another 10 years for the radio to really reach the general public, but it didn't take long for the creators to figure out they could use it to sell stuff. The first live broadcast was from an opera performance at the Met. Now, guess what happened right after that? People bought tickets, digital marketing, and digital marketing was born. Now, they didn't call it that back then, but that's certainly what it was.  I didn't mention cell phones. I didn't mention Facebook ads or Google ads or U2 ads or any of that stuff, because digital marketing has nothing to do with the internet. If you're wondering what digital marketing really is, it's just advertising that's delivered through a digital channel. That's it. It's that simple. Now, certainly, social media and mobile applications and YouTube and Facebook and Twitter are all digital platforms, but that isn't what defines digital marketing. Basically, you could narrow it down to digital marketing is any form of marketing products or services that involves electronic devices. Now, gotta ask yourself a question. Why is digital marketing so important? Why is it so important? Do you remember billboards, those things alongside the highway? I do. Does anybody look at those anymore? I don't think they do. I remember being on car trips as a kid with my family, and we would drive down to Florida and we had a camper, and we would try to find some place to eat. And when we were trying to find some place to eat, my dad would say to me, we'll check for billboards and we'll see what's coming up. And that was the way we got our information. You know, once I saw a billboard for a McDonald's or I saw a billboard for a Stuckies or whatever it was or a barbecue joint, I'd say, oh, look, four miles, there's gonna be a barbecue place. And then there'd be another billboard. It would say three miles barbecue place. And then it would say a half a mile barbecue place. And we knew to get off at that exit. Nowadays, what do we do? We grab our phone, we go to Yelp, we go to Google, we type in restaurants, we find the closest places around and we go there. Do those billboards persuade us to do anything anymore? I don't think so. I don't think anybody's looking at them because most of the people driving down the interstate although they're not supposed to be are looking at their phones. They're actually looking at their phones. I mean, if you just stand by an interstate and watch people drive by, you'll find a lot of people looking at their phones. Now, it's dangerous, you shouldn't do it, bad thing to do, but I promise you they're not looking at billboards. And even if they do, think about this guys. If they see a billboard and they go, okay, there's a McDonald's at the next intersection, I'm gonna go there. How does McDonald's know that that billboard worked? They don't, is the answer. So they're not effective either.  Amazing. In some studies, it's been proven that 94% of the people driving down the road are on their cell phone. Dangerous. Now, it's gonna get worse and I'll tell you why it's gonna get worse because we're gonna have self-driving cars. You know, Elon Musk is working on this now and some of these cars are actually on the roads right now and they're gonna get more and more intuitive. I think they're really gonna make the roads safer because I've seen how some people drive in just my neighborhood.  It's not gonna be on billboards, that's for sure. So what does this mean for you? This means that you need to learn digital marketing. There's a huge market there, guys, and a lot of people are gonna say, I just don't understand that, I don't know it, but somebody like you is gonna learn it.  Now, I've been to a lot of meetings and the internet has really changed lives. It really has and I know there's some people I talk to that it hasn't changed their lives and it's a shame because they'll say, well, I'm not into all that technical stuff, I'm not online, I'm not on Facebook, I don't put my credit card online, I don't do any of that.  If you don't use technology, you have a decided disadvantage over the rest of the world because it automates things for them. You may not like certain things about it. I know I've had a lot of customers at our survival food company say, well, I don't wanna put my credit card on online. I'd rather call you. So they call us and I go online and I put their credit card because that's how we have to do it. Your credit card is going online. You've gotta understand that. Your credit card's going online, okay? And what's more dangerous? Putting it online on a secure site like ours or handing it to a waitress in a restaurant and let them see your credit card numbers where they can jot down everything and use it within the next hour. I mean, they literally could, guys. So if you're handing out your credit card number to strangers in a restaurant, why would you not put it online on a secure site where nobody can see it? It just makes no sense to me. So this technology thing, this digital marketing thing, is an opportunity for you to make a tremendous amount of money. If you are the early adopters, okay? And you may say, well, it's too late. There's already people that know how to do that. There's not enough people that know how to do that. Trust me. If I talk to friends and family members, I would bet 99% of them don't know what I know about it. And 10 years ago, I didn't know that. I just learned it. So you can too. So follow through. I want you to go through all four of these videos. The next video, I'm gonna cover the skills that you're gonna need, the things that you're gonna need to learn. You know, honestly, internet marketing, digital marketing is the reason that there are 25 year old people who can sit on their couch in their living room and make $2 million a year. Yeah, there's people doing that, okay? And if you're not looking at that going, why not me, then you're missing the boat. And I don't care how old you are.   Anybody can learn this stuff, guys. It's not that hard. It's just the fear of not knowing. Just dive in, watch all four of these videos. Four to row. This is the first one. There's gonna be three more. And I'm gonna jump into the skills you're gonna need in the next one. And you're gonna love this. You're gonna come out of this. You're gonna be motivated. You're gonna wanna do this stuff. You're gonna wanna make money. I really appreciate you listening to this video. Don't forget to subscribe. There's a big subscribe button down there. Don't miss it. Okay, so I hope I've got you convinced in this video. I hope I've got you convinced to want to learn. If I can get you convinced in this video, the other three videos are gonna be really easy because it's gonna be all the knowledge that you need. Simple, right? I really appreciate you watching this video. Don't forget to subscribe. Hit that big subscribe button down there. And bell, bell notification. Really important.  I don't wanna see you miss it, okay, guys? You'll be part of the VIP group, the Fisher family, okay? Don't forget to put comments. Like I said in the beginning of this video, this channel is not my channel. I don't own it, okay? You do. You put comments there. You tell me what you wanna see videos made on and then I do it. So you actually control the direction of this channel with your comments. If you don't comment, I don't know and you don't get what you want. I want that to happen. That's not good. Thank you so much for listening. Don't forget to give me a thumbs up or thumbs down if you don't like it. Either way, put a comment down there. Let me know what you're working on and I will see you in the next video.


We have discussed the free particle, we have discussed what happens when we put this free particle into confined space in one dimension that is a particle in a box problem. Now let us see what happens if we increase dimensionality of the problem what happens if we put this particle in a 2D box what happens if we put the particle in a 3D box and when we do that we will see that to depict the wave functions we will need to draw a very good looking pictures like the one that we see here. Also we are going to learn a very very important technique which we have already used but this is something that we are going to elaborate a little further upon in this discussion. So, when we say we put particle in a 2D box what we mean is that it is free to move in say on the surface of a table that kind of a situation or you can think of we have talked about this conjugated poly in earlier and we said that very approximately you can treat the and a particular electron in those conjugated molecules using a particle in a 1D box model. Now think of something like graphene graphene is a flat two-dimensional molecule think of a p-electron in graphene a conduction electron in graphene it is free to move over the entire surface that would be the chemical application of particle in a 2D box model. To start with let us talk about the square box which means Lx is equal to Ly. So, from 0 to Lx that is the range in x and from 0 to Ly that is the range in y. This is the space in which the electron can move freely outside it is the wave function is 0 it cannot go there. All right what will the wave function be and what will the equation be? We use here the technique of separation of variables that we had also used when we talked about separating the spatial part of Schrodinger equation from the time dependent part. So, we write the Hamiltonian as Hx plus Hy here we can do this because x and y are independent of each other and we are talking about kinetic energy only. If potential energy was involved then we would not have been able to separate it so easily we would not have been able to write H equal to Hx plus Hy we can we get away doing it because the only kind of energy that a particle has here is kinetic energy. Otherwise it would have been impossible we are going to encounter situations later on where you cannot write things like this. Wave function is a product of psi of x and psi of y this is not difficult to understand. First of all H contains the Hamiltonian contains second order derivative that kind of an operation. So, if you take a product the derivative is a sum we want the energy to be a sum that is why it makes perfect sense. Also something in x and something in y they are independent you cannot add them. You can only multiply them because we are talking about displacements along x and displacement along y. There is no way you can just add them multiplication is fine. So, when we do that this is the kind of wave function that we get in fact we have been we have written something like this root over 2 by L multiplied by sin nx n pi x by L multiplied by root over 2 by L sin n pi y by L 2 particular in a box wave functions here 1 in y x and 1 in y then the constant turns out to be 2 by L sin n pi x by L sin n pi y by L please check whether this is a normalized wave function or not. But remember when you try to do that this is going to be a double integral when you integrate this it will be an integral with respect to x integral with respect to y also. So, it will turn out to be a normalized wave function all right. What about energy kinetic energy as we said it arrives p square by 2 m and p is essentially a vector sum of p x and p y. So, naturally energy is also going to be sum of e x and e y we have written e nx and e ny. So, this is what it is going to be nx square h square by 8 ml square plus ny square h square by 8 ml square since the length is the same along x and y direction equal to L we can take it out right. So, we get h square by 8 ml square multiplied by nx square plus ny square where nx and ny are 1 2 3 4 so on and so forth independent of each other. So, we have learned separation of variables and we have learned how to tackle the problem when the dimensionality increases a little bit. Now, let us learn how to draw the wave function how do we draw the wave function well 2 depictions are shown here. So, along x side let us say I am talking about 0 1 1 wave function. So, what is it it is a sine wave along x I will draw here and it is a sine wave along y sorry for the distortion I meant this to be a square box for whatever reason it has become distorted. Now, what happens when I multiply this by that do not I get a hill that looks like this a very symmetric looking hill yeah 0 at the boundaries maximum at the center of the box and the hill rises like this product of 2 sine functions. So, this diagram I think we understand nicely what is the meaning of color we will come to that, but what is the meaning of these lines. So, here what I have done is these lines are these lines generally these lines are basically joining all points that have the same value of psi. So, these are called contour lines contours join all points here with the same value of psi. Those who know how to read survey maps would be familiar with contours in context of those maps. There it is those contour lines add join not all points with the same value of psi, but all points with the same height from mean c level you might have seen maps like this in atlases and geography books. So, these are the contours what will the contours look like you join everything it is going it is a box right. So, it is going to look like squares that are rounded at the ends and this point at the middle that is the maximum point. So, this is your nx equal to 1 ny equal to 1 this is nx equal to 2 ny equal to 2 if nx not ny equal to 2 I am sorry that was just inertia nx equal to 2 ny equal to 1. So, nx equal to 2 means your wave function will be something like this in x direction wave function will remain what it was in y direction. Now, when you multiply what will happen you consider this line here at x equal to L by 2 you are multiplying whatever it is there in the y part of the wave function y dependent part of the wave function by a 0 this point is called in node a node is where the wave function goes through 0 and changes sign sign of wave function is minus here and plus here. So, well I have drawn it the other way because I have written plus here and minus here but anyway does not matter it changes sign. So, what will you get from between 0 and L by 2 along x direction you will get one hill and the hill now will not be completely symmetric on both sides it will longer on the y side and it will be half as long on the x side because it is going up to L by 2 what happens beyond x by 2 the sign of your x dependent part of the wave function has become negative. So, you are going to get a trough and that is the meaning of the color here red denotes plus sign blue denotes minus sign does it mean the wave function is actually red and blue no these are pseudo colors these are colors that we add to help us understand what the shape is once again if you go back and look up an atlas or a map you will see colors are used in addition to contour lines to denote height or depth of terrain here height and depth is in terms of wave function what about this wave function this is n equal to 2 y equal to 2. So, now I will draw it in the right manner change in sign and here also we have a change in sign this is that my diagram is not good. So, we have 4 quadrants a peak a trough a peak another trough and this is how you draw the contours remember in contours in order to show what is the sign you either use different colors or use explicitly you write the signs or better still you do both. So, this is how you depict three dimensional surfaces. So, here y has it become three dimension because the Lx because x and y these are the two special dimensions third dimension is wave function again this will become very very important when we talk about wave functions of hydrogen atom later on. One more thing we are this is wave function everywhere I am very sorry about that now what happens if we have a rectangular box instead of a square box everything else is same the only difference is now Lx is not equal to Ly. So, energy expression is h square by 8m multiplied by nx square by Lx square plus ny square by Lx where nx and ny again are 1 2 3 4 so on and so forth. So, what is the difference let us say I try to draw the energy levels of a square box and a rectangular box we will draw both for a square box what is the lowest energy level 1 1 what is the next energy level 1 2 but what is the energy of 2 1 well 1 2 means nx equal to 2 Ly ny equal to sorry nx equal to 1 ny equal to 2 what happens if nx is equal to 2 and ny equal to 1 the energy is the same because remember what the expression is h square by 8 ml square multiplied by nx square plus ny square how does it matter whether I write nx first or ny first it is the same. So, here for a square box we have degeneracy degeneracy means we have energy levels whose energies are the same what is the next level both can be 2 what is the level after that well it can be 2 3 or it can be 3 2 this is 2 2 2 3 and 3 2. So, what we see is that we have alternate levels that are doubly degenerate and single what about a rectangular box well 1 1 is the lowest energy level fine the next level is let us say 1 2 what is the level after that is 1 2 and 2 1 are they the have the same energy do they have the same energy no 1 2 and 2 1 will have different energies and whether 1 2 will be lower or 2 1 will be lower will depend on what is the relationship between Lx and Ly is Lx greater than Ly or is Lx less than Ly that is what will determine which one is lower which one is higher. So, degeneracy is not there I think I have something written here so I am just going to erase all this. So, what we learn from here is that symmetry and degeneracy go hand in hand you have more degeneracy when you have more symmetry if you break symmetry then degeneracy is lost and this is something that we encounter in say a metal ion complexes think of a free metal ion is a perfectly symmetric object it is a sphere. So, all the d orbitals have the same energy put it in an octahedral field what happens energy symmetry is a little less and now you have d orbital splitting E g and T 2 g perform yarn teller distortion then what happens energy decreases even more and so the degeneracy even within this T 2 g and E g sets is lifted to certain extent. So, the symmetry and degeneracy going hand in hand is a very important concept in chemistry and we encountered it for the first time in our discussion from this particle in a 2D box model. Now, let us talk about 3D box everything else is same wave function is a product of psi of x and psi of y and psi of z energy is a sum of energy along x along y along z fine. So, these are the expressions problem is how do I draw this because now x y z 3 dimensions are there and psi is a 4th dimension I do not know how to draw a 4 dimensional graph the way you draw it is that you assign color to the 4th dimension the way these are generated is that I have decided that I want particular value of psi actually mod psi let us say I want value of psi to be something like 0.2 units. So, wherever value of psi is 0.2 unit I put a dot and then all these dots generate a shape that is my depiction of wave functions. So, for psi 111 I will get a sphere not very difficult to understand what about psi 211. Now I am going to get a I am going to get a node and that node is going to show up like this I will join all the points that have value of say 0.2 and I will join all the points that have value of minus 0.2. So, you get something that reminds you of p orbital does not it similarly for 2 to 2 and so on and so forth. So, this is how we can draw a 4 dimensional picture in 3 dimensional space by using color or by using point for a particular value of the 4 dimension which is psi here. So, in our discussion of particle in a box what have we learned first of all we have encountered a situation where Schrodinger equation is exactly solvable in free particle as well as particle in a box free particle is less satisfying because you get a wave function that is not all that great in particle in a box you get a wave function that is better. What is more important for the first time in our discussion we arrive at quantization that arises automatically from application from imposition of boundary conditions. So, we learned that boundary conditions lead to quantization. Remember Schrodinger equation is a perfectly classical equation for de Broglie waves that is where it started from and then we forgot about de Broglie waves later on that it is a different issue. But there was no quantum number there. Quantum numbers arise when we use bond interpretation and apply boundary conditions. One thing that we have seen is that if you have more nodes in wave function higher is the associated energy remember particle in a box wave functions n equal to 1 no node n equal to 2 1 node n equal to 3 more nodes and so on and so forth. So, this is an important thumb rule that we use often in chemistry that a wave function that has more nodes is associated with higher energy. We learned about eigen function of linear momentum operators is this wave function of particle in a box an eigen function of linear momentum operator no it is not. But we showed that we can express it at sums of two eigen functions of linear momentum operator. So, when we make a measurement we will see either plus h cross k or minus h cross k. Average value of linear momentum is going to be 0 because the overall wave function is not an eigen function it is a linear function linear sum of two eigen functions. The simple model as we have seen yet it does find application as a starting point for many interesting chemical systems. We have started working on separation of variables which is going to be very important tool in our subsequent discussion and finally we have learned that symmetry and degeneracy go hand in hand I absolutely love this symmetry and degeneracy go hand in hand. So, we get an hint that symmetry is going to be an important parameter in chemistry. We are not going to dwell too much upon this in this course but just be advised that there are entire subject this is an entire subject in itself symmetry in chemistry. And also we learned how to plot functions that are more than three dimensions. This has proved to be a testing ground for most sophisticated treatment which we are not going to get into here. With all this background we are going to talk about hydrogen atom. How do you perform a quantum mechanical treatment for hydrogen atom? And there one important question that we are going to pose and hopefully learn the right answer to is what is an orbital? So, that would be the theme of the next maybe three or four lectures.


Okay, we're going to talk about X today, and Compositing Managers, and some other technical details about the new DRI3000 work I'm working on, and current status, and future plans. Of course. Brief overview of compositing, what is desktop compositing? It's what all modern Windows systems do, of course. The applications paint stuff into an off-screen buffer, and then you have an overarching compositing manager, or a Windows system, or something, that takes all these off-screen application images, your spreadsheet, and your presentation, and your 47 different clocks, and merges them all together into a pretty view on the screen, with translucency between the applications, and little drop shadows, and all kinds of other stuff. Most of the work of a compositing manager is taking the application updates, and the application changes the contents of its window on the screen, getting those updates onto the screen. The compositing manager spends a huge amount of its time just copying data. In the year 2013, when you copy data, you're probing a lot of transistors, and driving a lot of capacitance outside of your CPU, and that is really expensive. We want to avoid that. Why do we do desktop compositing? Well, it's the usual reason, right? We have a problem here. We want to put pretty animations, and we want to do pretty effects on the screen, and we want the screen to look nice, so we just insert this additional level of indirection between the application and the screen, so that we can have our nice effects. Well, of course, the problem with another level of indirection is that it's another level of indirection, and it's going to have some expense. Why is it expensive? We have extra data. Every single window, this window here, has a copy on the screen, and there's a copy off the screen, and the compositing manager is managing the moving of the data from that off-screen copy onto the screen, so I have extra memory involved, and then there's all this additional data motion. The application paints stuff off the screen, the compositing manager copies it onto the screen. A lot of additional transistors moving around. So I'm working on solving this problem, and in conjunction with solving some of the other persistent problems in X with director rendering, implementing a new system that I call kind of colloquially DRI-3000. DRI-3000 actually consists of two separate pieces, the DRI-3 extension, which hooks director rendering applications like your OpenGL or your media applications that render directly with the hardware, hooks those up to X, that's the DRI-3 extension, and then there's a brand new extension called present, which takes application contents and puts them on the screen. And the reason that we need a separate extension for that is that you need to be able to not just copy the data blindly, but you want to copy the data in a way that is mindful of how the screen data are presented. In particular, the screen is scanned from top to bottom, so when you copy data onto the screen, you want to make sure that your copy doesn't happen in the middle of this beam scanning from top to bottom, otherwise you end up with half of one image and half of the old image and half of the new image in a lovely tear. So we like to avoid that. The other thing we like to do is to be very efficient, what you want to do is instead of actually copying the data, you can just say, well, I have this old frame buffer and I have this new frame buffer and I'm just going to tell my video hardware, stop using that memory and go ahead and use this memory now. So you literally change one register in the video hardware and you get an instantaneous transition from one frame buffer to the next. So it doesn't copy the data at all, the zero copy plan, that's always best. And so putting together a new extension that can do the copies when necessary, synchronize the vertical blank and when the copy isn't necessary, when you can actually do a full screen swap to do that. Why do we need a new extension for that? Why can't we just repurpose some of the existing extensions? Well, in the 2D LAN, there isn't an extension for this. If you run 2D applications like any GTK or QT applications that paint stuff on the screen, they're double buffered. They're nicely double buffered. Your updates are atomic, but there's no synchronization between that application update and the vertical blank signal. So if you have an animated 2D application, then you have animated tearing on your screen. You get this asynchronization between the vertical retrace and the application contents, which is ugly. Why can't I just use the existing mechanisms, the DRI2 mechanisms and kind of hack them up a little bit to support X? Well, the main thing is that DRI2 is totally ignorant of our compositing manager. And again, the compositing manager is a piece that mediates between the application and the screen. So you have this lovely direct rendering infrastructure that knows how to do all this fine vertical blank synchronized updates to the screen. And then you have this compositing manager, which may or may not be using that if it's a simple compositing manager like Metacity, then it doesn't use it at all. And so you have all this mechanism for your lovely 3D applications that doesn't do anything because your compositing manager doesn't use it. So we want to be able to take advantage of these mechanisms all at the same time. So the goals of the DRI3000 work are to resolve some longstanding DRI2 related issues that I'm not going to talk about today. I gave a presentation about that at DEBCON for about a month ago. It has a lot of details about the DRI3 extension, the present extension and their technologies. And that presentation is available online in video form from DEBCON. You can go listen to it or read it there. The main thing, of course, was to improve the support for applications that want to do stuff with synchronization about put on the screen. There's a bunch of GL extensions related to this. There's GL extensions that will give you frame-precise timings of when your stuff was put on the screen. And you can ask for your stuff to be put on at a particular frame time. It even handles interlacing and all kinds of craziness. Well, DRI2 didn't support any of this. We have, I think there are three or four tests in the OpenGL test we write now, which all fail on this extension. So we have existing functionality that applications would like to use. We have an existing implementation in DRI2, which doesn't work at all. So we need to fix that. Looked at trying to fix it in DRI2, it's like, yeah, not so much. And so we needed to go and do a bunch of work on DRI2 or do something separate. The other real big goal was to provide vertical blank synchronization for non-GL applications. I know most of you spend all day long playing 3D games, right? Who plays all day long playing games on their Linux computer? Yeah, one person. Yeah, the rest of us spend some time, at least some small portion of our day doing actual work and creating content, creating software, creating documents, using applications which are largely 2D applications. As I said, GTK and QT have all this nice double buffering support. They do all the stuff necessary to get synchronous atomic updates onto the screen. They have no way of getting that synchronized to the vertical blank interval. They have no way of making it look good. So when you run 2D applications on X, they look terrible. Because if they animate at all, they always get tearing, tearing or other nasty artifacts on the screen. The other real big goal of the DRI3000 work is the principal thing I'm talking about here today, is this goal of reducing copies when doing compositing. Right now, we have a copy from the application into the window buffer and then a copy from window buffer to the back. It's a lot of copies. So as I said, DRI3000 has a bunch of different components. It's got the new DRI3000 extension, which is the absolute smallest extension. It's four requests, I think, for different APIs, for applications that want to do direct rendering in the X environment. It's the absolute minimum necessary. The only thing that it does is let you share an image of a PIX map in this case between the application, the direct rendered application, and the X server. That's the extent of the extension. Yeah, okay, the extent of the extension. It's as small as I could possibly make it. That extension is apparently complete and works fine. The second extension is called to present extension. I've been looking for a better name and we had a little, I posted something on the Xorg developers list about asking for a better name.  I still haven't found anything better. So if anybody knows something better than the present extension or the present extension or whatever, that would be great. So we need something that's most of the X extensions that I've done in the past 20 years or so have been verbs. We need something that's not also easily interpreted as a noun. That would be awesome. Or in the present tense case, kind of an adjective. So we want something that's nominally seen as a verb in most contexts. It would be great. In any case, we have the present extension. Then we have a couple of kernel changes. One of the kernel changes is for a kernel level API to, remember I told you you could just switch that one register value when you're scanning out for one frame buffer and now you want to scan out for the next one. Well, right now the kernel API says, yeah, I'll flip it at the next frame. Which is all fine and dandy if you know well ahead of time when you want to switch the frame buffers. But many 3D applications, especially our high performance 3D games, want to barely hit 60 frames a second. They want to do as much drawing as possible to make the scene look as detailed as possible in the 16 milliseconds they have allotted to them. Which means that they pack in as much drawing as possible until they get to just about the frame time and they say, okay, we're done now. Let me flip. Most of the time they make their 16 millisecond budget. And occasionally they miss their 16 millisecond budget. And with this current system, if you flip only at the vertical retrace interval, that means if you miss, you miss an entire frame. So you get frame, frame, frame, frame, pause, frame, frame, frame, frame. That pause is called judder and it's really annoying. It's another kind of visual noise on the screen. And instead of that visual noise, what the game developers really want us to do is say, if I've just barely missed, then tear a little bit up near the top of the screen where the ceiling is dark and nobody cares anyhow. Just get it on, get most of the frame into this frame time. So I don't have to wait for another frame. Get rid of the judder, give me a little bit of tearing instead. So I have a kernel API for changing how the kernel does the flipping so that it does these what I call cut through flips. Where you just get the flip command and you just smash it into the hardware and it starts scanning out immediately. Turns out the Intel hardware which I use most of the time like on this laptop does that just fine.  And the hardware actually has a little promise that there it says, yeah, probably within a couple of scan lines we'll probably switch because it's got caching and buffering and all kinds of stuff. So instead of getting a whole frame delay to your flip, you're going to get a couple of scan line delays. A huge, huge benefit for our fine game developers. The other API that I put together is for another copying optimization that I call page level switching where you can actually take two rectangular PIX maps and take a subset from one and a subset from the other and swap them like this. Makes for a very efficient, very efficient subscreen switching. And there's a huge raft of changes to the X server and XCB to support a bunch of the DRI-3 stuff for FD passing and event queues for present and all kinds of stuff. XCB turns out to be a very primitive library to talk X over the protocol wire and it's so primitive that it's missing some important functionality for new extensions and so I have to go mash that as well. I have a short history of DRI. The direct rendering infrastructure was started back in 1998, I think, with DRI-1. This is back probably before most of you were wearing long pants. At least Daniel still isn't wearing long pants. We had a single shared back buffer on the screen, that was because that's what the video hardware did. It was kind of a disaster. You could only talk to the graphics card and expect it to retain stuff in its memory for as long as you held the display lock. So you'd actually grab a physical lock for the screen, render your entire scene and then release the lock. It made for some kind of bad multi application performance. DRI-2 fixed a bunch of those problems, made it a whole bunch better. All applications drew off screen so it didn't have to have this global lock and we had memory buffers allocated by the kernel so that you could actually have persistent graphics objects. It was awesome. DRI-3, the new extension, changes things just a little bit instead of having the X server allocate all of our direct rendered objects. Now the applications allocate them on their own and they get to manage them on their own, which is a heck of a lot easier. And instead of passing file descriptors by magic numbers, we pass our graphics objects by file descriptors.  So that's why we're rewriting DRI-2 is to solve some of these problems. The DRI-3 architecture consists of two extensions, as I said, DRI-3, which provides access to the direct rendering device and does all the direct rendering stuff, and the present extension, whose sole purpose is to take a bag of pixels from the application and put them in the application's window. That's its entire job. Not just applications want the present extension, though. The present extension is designed to be used by applications to get their bits into their windows and then it's designed to be used by the compositing manager to take this collection of windows and put them onto the screen. So we have this two-faced notion of present. We're on one half, it's an application API for getting stuff into the windows, and on the other half, it's a compositing manager API for getting window contents onto the screen. And now we have this advantage of being able to use this one extension to do both jobs. And that way we can actually talk about improving the performance and improving the interoperability and making it designed for this instead of working by chance, which the current system does. OpenGL applications are effectively always double-buffered today. There's no way an OpenGL application can draw directly to its window. The OpenGL application draws its contents off-screen and paints them onto the screen. Even if the OpenGL application thinks it's drawing its contents to the screen, it's not drawing its contents to the screen. They're drawing to a fake front buffer, which is actually the same as a back buffer. And so even your single-buffered OpenGL application is actually double-buffered, because we don't know how to do single-buffered GL applications. 2D applications using GTK Plus or QT are always double-buffered if they use the usual drawing APIs in those libraries. The compositing manager wants to be double-buffered, but for a completely different reason. Your GL application wants to be double-buffered because 90% of the frame time, the thing that it's drawing isn't done yet. And so if it was drawing it incrementally to the screen, it would look terrible.  With 2D applications, the 2D operations are usually so short, it wouldn't matter if they were single-buffered or double-buffered. You could clear the area and repaint the entire window in less than a frame time. So you don't even typically notice it. Applications like GNOME terminal are often not double-buffered. X-Term isn't double-buffered. And nobody seems to notice very often because the amount of time that it's changing the screen is dwarfed by the amount of time the screen is static. And so you see a little flickering occasionally. You see some annoying visual artifacts on the screen, but for the most part, 2D applications would be fine single-buffered except that people don't like that little bit of visual noise and so we like to get rid of it. The other reason we want to double-buffer these applications, again, is to get rid of the tearing between frames. We want our display to be seamless and smooth all the time. Compositing managers, that's the only reason they double-buffer. The copying is always gonna be plenty fast. I could draw the frame, I could draw the entire scene in a tiny fraction of the time that it takes to re-display it, but we want to get rid of the tearing, we want to make it look pretty. So when I talk about optimizing the system for reducing... I'll give you this one. It must be five o'clock because the batteries are all dead. There's a really simple optimization that Present Extension does. If an application cues multiple present operations for the same frame time, then it throws away the earlier ones and only displays the later one. A really simple optimization gets me a huge benefit in applications which are dominated by the update time, like our favorite benchmark, the one that the GL application that shall not be named. That particular application that happens to draw three different objects in primary colors on the screen that look like gears, went from 5,000 frames a second to 7,000 frames a second just by this simple expediency of throwing away the frames that weren't actually ever gonna be seen by the user. That was a pretty good optimization. More than that, because of the way Present works, you're giving it PIXMAP IDs, the application and the Windows system know about objects that are persistent. So if I update multiple regions from the same PIXMAP in the same frame time, I can merge those copies into the same frame update so I get a single set of copy operations per frame. If you're using different PIXMAPs, you can throw away the old operations, of course. Now, in order to make the applications not see that you're doing this and not really be aware, I just, I leave the operations queued and I tell the application, oh yeah, that operation, yeah, it completed. Yeah, I didn't have to do a lot for it, but it's done now. The NOOP that I executed for it has been completed. So that's been a fairly successful, very minor optimization that gets performance with the DRI3 to be significantly faster, 10 or 20% for common 3D applications than DRI2. Pretty simple optimization. Now, what about present and composite? The composite extension, of course, we've talked about, has all these off-screen window contents. Now, naively, when an application did a present operation, the contents that it's updating in its window would appear in this off-screen window buffer. That makes sense, right? If you want it to appear on the screen, what the application does is put the contents in the off-screen window buffer and then have the compositing manager take the off-screen window buffer and put it on the screen. Fairly straightforward. Except that now you've got this extra copy. You've got the application presenting a new frame, ending up in its window buffer, and then having that window buffer copied onto the screen. So there's two copies there. It'd be much simpler to just take the application's new frame and hand it to the compositing manager and say, oh, this application would like this to appear on the screen at about this time. So that is the plan. It's not currently implemented, but the plan is to just tell the compositing manager, hey, this application has this new bits to put on the screen. You might want to do something about that and completely bypass the off-screen window PIX map. And that way that off-screen PIX map would never see the contents of the application. The only place that those contents would appear would be on the screen. And the compositing manager would take a hold of that image and keep track of it until that frame went away. Fairly straightforward, actually. It's a nice, easy optimization that's made possible because, again, the application uses present to get the stuff into its window and the compositing manager uses present to get the data from the window onto the screen. So I can use this same extension twice to take the application's contents, hand it to the compositing manager, and then take those application content by handle and put it onto the screen. So you only copy the data once, even though there's two logical present operations that occur. Now, the one problem with this is that we have applications like VNC or other shadowing applications that want those application contents to appear in that off-screen PIX map. They want to see those contents. So if you're running a window-sharing application that wants to take the contents to your window and broadcast it out over the network or out over a wireless connection to your television or up onto your projector here, then that application actually has to have those contents in an off-screen buffer. And the easy plan that I'm planning on trying first is to tell the compositing manager, oh, by the way, there's an application that would love to see those contents in this off-screen buffer. You might want to put them there as well and have the compositing manager figure out how to do that. Basically, totally get rid of the X server, server's responsibility for managing the window contents. It's a fairly simple addition to the present extension. Essentially, the application is going to send a present operation to the X server. It's going to get redirected to the compositing manager and the compositing manager's going to turn around and do a present operation directly to the screen. And it's going to hand enough information to the X server in that operation that that data, the original window and sequence ID, can get passed back to the original application and he can get notified that his original composite operation has now been completed. So that lets the application know precisely when their data is not in the window, which the application doesn't care about, it lets the application know when their data is visible to the user, which is the key part that's missing in the current DRI2 solution. So we actually get the compliance for the OpenGL extension specification that says the application is told when the first pixel from the screen is being scanned out. You get like a system time in microseconds. That actually a fairly nice addition in addition to the benefit that we get from reducing copies where actually they get applications that actually need frame times, the right data there. For full screen applications, right now, what a smart compositing manager will do is it will recognize that an application is now covering the whole screen like this one is here and it will say, oh, yeah, when the application is covering the whole screen, then turn off all the compositing stuff and let the application talk directly to the screen, which is, in X, this huge pain because you have to unredirect your full screen window, turning off all the compositing extension stuff for your window, which almost always causes a bunch of flicker on the screen, which is really annoying. With the present extension optimizations, there's not gonna be any need to do that composite extension dance. The compositing manager is just gonna get this PIX map redirected to it and it's just gonna send it right onto the X server and the full screen swap will just happen. It will be fairly straightforward and we get the benefit of the flipping that we like that just changes the pointer and we get the benefit of no copies. I have two different plans for trying the redirection. I have a simple plan that I've been kind of talking about right now. Take the raw present request the application passes and just basically pack up all those parameters from the request from the application and hand them the composite manager and say, oh, Mr. Composite Manager, do this thing that the application asked for. That's a pretty straightforward plan in the X server. The question is, is it gonna be too complicated for the compositing manager to be successful at? And that's what I'm gonna do some prototyping. I've been starting the prototyping already. I can show you the progress on that so far. The other thing that I want to do for the present extension that's a little more complicated is to actually tell the application, oh, don't draw to just your window size buffer. Draw to this bigger buffer so that I can paint all of the window decorations from your window manager around your application and now I can actually make that be the new window back buffer. We have this off-screen buffer that contains the window contents. Well, it contains the window contents and it contains all the window manager decorations around it. So the frame and the resize bars and the close box. All that stuff isn't part of your application. It's owned by the window manager. So the other option here is to tell the applications, please draw your application contents in this slightly larger buffer and then the X server can manage making sure that those window manager decorations have been painted around that buffer and then it can send that updated buffer to the compositing manager. The benefit of that is that this whole dance of having the compositing manager need to manage the windows off-screen buffer mechanically go away. It's all managed internally in the X server and there's some additional optimizations I can take advantage of later. So how would we draw to larger buffers? I'm sorry, it's very late in the evening. So all that I need to do is to make sure that the window manager decorations get painted around the application is to do damage tracking to the original window buffer and if any window manager paints to the frame area around the application, I can just track that damage and when the application gives me new buffer I can copy the damaged regions from that into the applications buffer and then the X server would need to remember which PIX maps it had put window manager contents into and what areas needed to be updated. It's a bunch of bookkeeping but it's fairly straightforward and it would make the compositing manager much simpler to implement and so it may be a better scheme and I'm gonna try both. The other API I talked about in the kernel is this rectangular region swapping API. I talked about this at LCA in January. That presentation's also available online if you wanna look at that one. It's effectively this cute kernel hack that goes and edits the page tables for those two off-screen buffers. You have these two images that are made up of a tiled collection of pages. If you just take the pages between those two buffers and swap them, then all of a sudden those buffers have new contents and you can do a page-level, a page entry swap instead of a pixel content swap. So instead of writing four kilobytes of data for a page, the data in the page, I can simply write a 32-bit page table entry and update that and that's a tremendous performance benefit. I measured 30 or 40% faster performance doing the page level, page table entry updates compared to copying the pixels. On Intel hardware, Page actually covers a rectangular region of pixels on the screen. It's 128 by 8 pixels. Yeah, it seems like a really tiny area to be four kilobytes, but you've figured out and four kilobytes is only 1,000 pixels and 1,000 pixels is only 128 by 8 region. So this screen is covered by hundreds and hundreds of pages. The problem with wanting to do this page-level swapping is that application contents would have to be aligned to a page-level boundary with the target between the source and the target. Otherwise, I can't do this page table trick and that means again that I need to get the application to draw his contents, the applications contents excuse me, into a large enough buffer that I can align stuff and that's kind of a pain. I have a demo for you today of metacity and using present. I've actually hacked up metacity. It took, they actually changed just to metacity. It took about 90 minutes to implement. Fixing the X service though it didn't crash anymore when I ran metacity, took another couple of hours but that was just a bug and that was really not implementation time for metacity, honest. Metacity, I don't know how many of you have ever used metacity as a window manager? If you use GNOME 2, did you ever turn on a compositing manager feature in that? Yeah, was it pretty much what you wanted from a compositing manager? It gave you the cute little drop shadows. It gave you translucent windows. It did pretty much what you wanted for compositing manager, not a lot of fancy UI. So it's a pretty simple and very basic compositor but it shows the basic requirements. If you use that compositor, that compositor was written entirely with the render extension which is an old 2D extension and all of its updates to the screen were just copy area. All it did was copy stuff around. It was not vertical VBlank synchronized. When you ran that and did an animated application you always got tearing on the screen which was annoying as all heck. So I've hacked up metacity, that old compositing manager code in metacity did actually use the present extension. Why did I do this instead of some modern GL based compositor? That's very simple. It only took 90 minutes. My plan for that of course to make that a basis for prototyping all of my compositing redirect stuff again because it's a small simple code base and I can make sure the ideas are sound before I try to go off and do this in OpenGL. OpenGL is not really my friend. I do OpenGL drivers for a living. I don't write OpenGL applications for a living and apparently they're very different. I understand coding in OpenGL involves like talking to the OpenGL API which I've done like twice. So what's the status of this fine work? The DRI extension is complete and working. The present extension is working. It doesn't have any of the redirection stuff. Metacity with the present extension is working. I can give you a demo of that. The kernel page level swapping API. I implemented all of that. I have a prototype. It works. It's very fast. It probably needs some API cleanups but it's basically done. The cut through API changes when I talked about cut through where I changed the pointer to the current scan out buffer in the middle of the frame. The API changes for that were very simple. I did the implementation for the Intel hardware that stuck this cut through change into the command ring. So it didn't happen right away. It happened sometime really soon which isn't really what I wanted. The hardware actually supports cut through right now and so actually using that capability in the hardware and still having it synchronize the appropriate place in the command execution stream that will take more implementation work and I need to actually do that. I know what I want. I know it's possible. Now it's just a matter of typing. Future work, obviously I wanna do the simple redirection and see how well that works with my metacity prototype. I'll have that working probably in a couple of months. I wanna figure out what to do with video. Right now the present extension doesn't have any notion of anything other than a PIX map containing RGB pixels. But there's no reason in the world that it can't also talk about YUV data so that a media application can hand it a buffer full of YUV data and say oh please put this on the screen too and then the compositing manager could do the right thing with that. And then I wanna think about, well on this environment I have two monitors here. I have my monitor up here and the monitor over here. They can display different PIX maps so I could do page level swapping up here and separate page level swapping here and I really wanna do that because these are not synchronized at all. They run at different frame rates so I really wanna be able to treat them as separate objects. There's no reason with a present extension I couldn't have per output per monitor PIX maps. Now I have a couple minutes of demos and then we'll have about 10 minutes or questions. Let me see if this works at all. So this is running old school metacity for the demonstration purposes. I think I have, I can run an application that will show, this is with compositing turned off. And so here's an application using a present extension and with this projector it's actually working. There's no tearing at all. You can see this is just drawing this vertical line, sweeping it back and forth. Without the present extension this tears miserably. Can I do that? I can't see the window manager title bar on this app at all. Ooh I hit it. But if I come over here and get the window to be half on the other monitor. Now synchronize the my internal monitor here and you can see that it's no longer synchronized up there on the screen. So that's just present picking a monitor to synchronize to and not synchronizing to both. And again if we had per screen PIX maps or per monitor PIX maps then we could then we could actually synchronize to both. So you can see the difference between synchronized and not so much. Okay. Yeah okay metacity just crashed. This is metacity from Debian's current release and I turn on compositing and it crashes. Thank you. This is not my fault. I think all I need to do is restart metacity actually. Ready for the desktop. And I can restart this present application and you'll notice that with the, even with, even all on this one monitor because metacity is not using the present extension as just copying stuff. You can see that the copy happens. It kind of a random place in the screen. Why is it happening up close to the top of the monitor? Well it's happening close to the top of the monitor because my application gets its data copied exactly at the vertical blank time. And then metacity comes along sometime later and says oh you put stuff on the screen. I should put that on the monitor and it takes as you can see about 100 scan lines for it to actually do all of that computation and get stuff onto the screen. But now I can switch out my metacity to the new shiny metacity. And this shiny new metacity doesn't tear at all. Isn't that awesome? That's my exciting demo today. Yeah. So as I said, we have about 10 minutes for questions and then it's time to go get dinner. Yeah. Okay the question is how well does this work with rotated screens? Right now the way that rotation is done with the render extension is all handled by shadow frame buffers within the X server and there's no current synchronization of those updates to the vertical retrace. Now one of the easy things to do with the present infrastructure in the X server would be to actually synchronize those updates with the vertical retrace on each monitor because the server now knows what vertical retrace is and can actually have callbacks at vertical retrace time. So it would be easy to take the present infrastructure in the X server and fix those paths to make those synchronized. In terms of getting rid of that additional copy with a rotation, yeah, we should probably do that and that would mean reworking the render extension to not do that implicit copy and expect the compositing manager to do the copy for it instead. Again, fairly straightforward but I haven't spent any time doing that work. Good question though. Other questions? Everybody ready to be done for the day and go get some dinner? Oh, other question? Also the obvious question is when is this coming to the distros near you? Well, we have an X developers conference next week where we're going to discuss when this is going to get integrated into Xorg. The kernel changes are not required for any of this functionality, they just improve it. So really the gating function is Mesa and Xorg and those are both fairly much under my control. So the X server changes will be integrated probably in another month or two and then pushed out for distributions to pick up in the next version of the X server, 1.15 or 1.16 and then I'll probably happen this winter and then I imagine distros will pick it up, like Ubuntu will probably pick it up in 14.04 I would imagine, although Ubuntu in particular who knows with their mirror plans but Debian certainly will get the new X server integrated into unstable fairly quickly and Fedora at some point, yep. The other thing is if you're using a Windows system underneath X like the Windows or Macintosh or Wayland or Mir, all of these reductions and copies help there as well because all of those Windows systems desperately want to be told about whole window updates and the present extension gives them precisely the information they need in order to optimize those updates as well and make that the integration between X and any underlying Windows system more efficient as well. So even if you're not using X as your foundation Windows system, having this particular migration in OpenGL, GTK and QT, all of which are very easy to do, will benefit even those environments. Questions and comments? Hey guys, thanks for coming. Thanks for spending the last hour of your day with us here in this fine room and we'll see you again tomorrow.


تشرف بل اشتغالي بالعلم ولا تبغي به ما عشت يا دا دا دا لا وياله من شراف عظيمي و what did he do? و السكتة he went quiet شريخ became quiet because he is lying for the people that are right so he went quiet ليكتب المستملي so those who were listening were dictating so they can write فلم نظر إلى ثابت him remember شريخ is he narrated the hadith are you all with me? he narrated the hadith everyone is writing the train of narration he is waiting for the people to write as he is narrating as he is waiting for the people to write ثابت ثابت ابن موسى الزاهد who is known for his عباد that entered he entered and he walked in when he walked in شريخ ابن عبدالله القاضي صوهم and he looked at him and he said to him من كثورة صلاة who will be lately anyone whose prayer becomes a lot at night حسنة و توبين نهاري his face becomes gloomy and beautiful at daytime who was he referring to? he was referring to ثابت and he was talking to ثابت and he was addressing the matter to ثابت some of the people thought that was what the prophet ﷺ said so they were writing it on the hadith what were they doing? so what's that called? that is called مدرجو الاسماني the second one is مدرجو المتني إدراج حابنة المتن so what happened right now? when he came in he himself didn't know so what did he do? he used to narrate the hadith with the chain of narration like that so whenever he went somewhere he narrated what happened right? what mixed up now? the hadith mixed up the chain got mixed up this chain is not for this hadith the prophet ﷺ did say that but it's another chain for it not this chain so إدراج حابنة to this chain of narration the other one is and it happens somebody narrated the hadith and something something occurs and he looks at that something and it comes back and this is what happened the other one is what? إدراجو المتن the mudraj happens to that مأود خلفي متن ما ليس منه it is to enter something into the متن بلا فصل without any fossil and it is three types it is three types okay it happens it is to enter the mutton something part of the prophet's speech the person is trying to say something else but something enters it it enters it without him saying stop and he says something carry on he doesn't say that so it enters it it occurs in three ways it occurs إن يكون الإدراجو في أول الحاليتي it is at the beginning of the hadith right at the beginning and that's very little it happens very little the second one is what the second one is أن يكون الإدراجو في وصط الحاليتي then the إدراج occurs when in the middle of the hadith and that is less than the first one it happens in the middle it is less than even the first one the third one is the most is أن يكون الإدراجو في آخر الحاليتي والغالب و this is the majority of times it happens at the end because the scholars of Hadith don't tend to talk whilst they narrate the Hadith but they do it when they finish remember they don't tell the people I stopped the Hadith that they carry on so they just when they finish the Hadith they just they keep talking people still think that he's trying to narrate the Hadith he's a thing we took one Hadith Insha'Allah from all of you to remember that's what Imam Al-Khateeb narrated مرواية أبي قطن و شبابه و الشبابة فالرقه مع أشعبه عن محمد منزياد على بهرائراته عال رسول الله صلى الله عليه وسلم أدى مسين جسل أسبغ الوضوء ويلن العقاب من أمر the Hadith أسبغ الوضوء it's from the speech of Abu Huraira it's a short speech of Abu Huraira as Imam Al-Bukhari رحم الله is other narration it clarifies Abu Qatlin is the one who made the mistake that example is when it happens at the beginning of the Hadith because أسبغ الوضوء is not the prophet's speech the prophet's speech is what ويلن العقاب من النار so it happened at the beginning the evidence happened in the middle is the speech of what حديث عائشة in the narration of how this revelation started she said كان النبي صلى الله عليه وسلم يتحنط في غار حلاء وهو التعبد الليالي دوات العدد she said that the Mas'a As-Salaam he used to sing he used to go out in the night to غار حلاء and then Aisha wanted to explain to the people sorry كان النبي صلى الله عليه وسلم يتحنط في غار حلاء and Imam Zuhri came and he added the word in the middle to explain to the people what it meant كان يتحنط some people may not understand so he said الليالي دوات العسباب was there but in the middle he added that because he was trying to put in the Hadith but he was explaining it to the people but the people didn't distinguish between it the third one is it happened at the ending of the Hadith and that is the Hadith where the Prophet said the slave that is on he has two Adjah والذي نفسي so that's the Hadith it's finished there it's finished there but والذي نفسي بيدي I swear by the one who saw my hand is in my soul his hand is in all of that is Abu Hurra's speech the Hadith is only للعبد المملوكي أجراني what causes Hadith to happen to the Hadith دواعي لدراج what are the causes causes there are many causes the most famous is بيان وحكم الشرعي the most famous is بيان وحكم الشرعي the most famous is بيان وحكم الشرعي the first one is the person wants to clarify a a ruling so the Hadith by accident it will enter into it he's trying to explain a Hadith to the people the second one is the second one is he's trying to extract a ruling the first one he's trying to clarify a ruling that's the first one the second one is trying to extract a حكم الشرعي from the Hadith before he finishes the Hadith the third one is he's trying to explain a strange word in the Hadith which people may not know how is the Hadith which is مدرج recognized how is it recognized there are many ways one of the ways to recognize the Hadith is مدرج is ورود الحديث the Hadith it comes separated from this particular speech it's separated from it in other narrations it's مدرج the second one is some of the scholars who observe and who know this science very well will say they will say that this is this is a مدرج who are known for their knowledge of this they will say it number three اقرار الراوي نفسه the narrator he himself would admit to it he himself would admit to it and now he added that word into the Hadith last but not least استحالة تكونيه صلى الله عليه وسلم قالوا ذلك that it is impossible that the messenger would say this because remember the Hadith of Abu Huraira right now that I just showed you where he said فولد نفسي بيدي I swear by the one who saw my hand is in if it wasn't for جهد في سبيل الله and Hajj and the obedience of my mother I probably want to say the obedience of my mother so the scholars that's of course somebody else and I would love to I would love to die as a Mamluk I would love to die as a Mamluk the professor wouldn't ask for that and what is the ruling of the Hadith which is إدراج إدراج is Haram بإجماع العلم out with the consensus of the scholars from the Hadith from the Fouqaha وَيُسْتَثْلَا مِدَالِكَ and exception is given to that ما كان لتفسير غريب if it's if it's to explain a word which is غريب this is not preventive it's not prohibited and that is why زهري did it and other than them he did it the best book to read in this matter is also there's a book and it's summarized from the book ofهو الله وطعالا ذنبريحج رحمهو الله أو تقديم أو تأخير إذا مخالفah the second type of مخالفah which is what تقديم أو تأخير is to put something forward and delay something really it's to make is to put back to front something to turn over something it's called مقلوب the second type of مقلوب the second type is المقلوب مقلوب اسمه مفعول و من قلبه قلبي إذا كنت تأخذت بجنبه و كنت تخذت بجنبه مقلوب إستلاحن يعني إبدالو لتتحديد من قلبي بأخر another word بسند الحليزي أو مطلحه أو في قلبي بتقديمه ببقاء one before the other أو تأخين أو ديلين لذا من هذه الفتاة can find out that the types of مقلوب there are is two types مقلوب which is a senate and مقلوب المتن مقلوب that occurs in the chain of narration and مقلوب that occurs inside the meton مقلوب with senate is what it has two forms or two ways in which it occurs which is two ways it occurs which is called مقلوب في الإسلامي و هو ما وقع إبدالو في سنده what the exchanging occurs in the chain of narration and it has two ways in which it's known أن يكون الحديث مشهورا براوين it is that the حديث is famous with a narrator it's famous براوين فيجعل مكان آخر في طبقتي so the person exchanges or places in the place of that person in that place of that person who's known is another person who's at the same طبقة of him same level as him for example ساليم who did he narrate from ساليم always we find out inshallah ساليم is always the narrator who is another person that many people mix up and they always exchange him with نافع so نافع and ساليم who did they narrate from عبدالله ابن عمر so exchanging نافع with عمر sorry نافع ساليم with نافع نافع with ساليم it's called مقلوب الإسلام that's one form that's one way the second one is أن يكون القلب بتقديم وتخيل في رجال الإسلام or it can be that in a chain you put a person his name back to front for example his name is كعب ابن مرة you make it مرة تبن كعب and they're two different men so you say كعب ابن مرة مرة تبن كعب that's called قلب it's to change his name back to front and the second one is القلب في المتن that the قلب the قلب it occurs that it happens in the matter of the حليل and that is very famous which is the حليل narrated by it is the حليل narrated by it is narrated by محمد مسلم on the authority of ابو حريرا in the on the people who are the seven people who are going to be shady the day of judgment the prophet said سبعة يضلهم الله فيضله يوم لا ضل إلا ضله seven Allah is going to give them a shade the day of judgment when there is no shade there's a mistake that occurred in one of the innovations which is what راجل تصدق بصدقة a man he gives a charity صدقة فأخفاها he hid the charity he hid the charity حتى لا تعلموا يمينه until his right hand doesn't know ما تنفقوا شماله that which is left hand give it was meant to be what that his left hand is unaware of what his right hand gives what happened to turn around مقلوب قلب of happened to the الشربين حتى لا تعلموا شماله his left is unaware of ما تنفقوا يمينه that which is right gives ابن حجر رحمه الله and I don't want to go into too much details but he also did he said that the حديث where the prophet صلى الله عليه وسلم لا يبروك أحدكم كما يبروك الباعر وليبع يداه قبل الرقبة he said that this حديث المقلوب where the prophet said don't go down that the way that the camel goes down ابن القيم said يزاد المعاد في هذه خير العباد he said that that the حديث of the messenger صلى الله عليه وسلم don't go down the way that the camel goes down go with your hands first and then your knees that's what the prophet said he said that the حديث is مقلوب it should have been go down with your knees before your hands ابن القيم mentions in his كتاب زاد المعاد but it's very weak and scholars have refuted it and they mentioned that that is a misunderstanding of his side what are the causes that make a حديث become مقلوب what are the causes sorry I've left the third type that I mentioned I mentioned two times القلب في الاسنادي the second one is القلب في المتني the third one is القلب في السنادي والمتني معن both of them and all of you guys I don't need to I don't need to explain it to you guys but it's what the people of Baghdad tested the Imam of Bukhari with what they did to him when they gave the حديث to him they changed the chain and the the method for him so they changed the method with the chain and the حديث so what did they do they done they changed the method and the the method for him Imam of Bukhari رحم الله and why did they do that they did that امتحان اللي حديثه to test his memory فرد على مكانة علي قبل القلب what did Bukhari do he brought all of the chains of narration in its correct form ولم يخطئ في واحد منها and he did not do any mistake in that matter anyone who wants to see that story in details he can go to the كتاب تاريخه بغداد لمام الخطيب رحمه الله the second volume page 20 second volume page 20 بغال رحم الله the story is well written there اه when they all sent him down to see his memory and that which they did to him is called what قلب المتن قلب السند والمتن نعم what is the rolling of the حديث so what are the causes that رحمه الله what are the causes that cause قلب what are that the reasoning's brothers differ تختلف الأسباب التي تحمل بعض الرواتي على القلب there's a lot of reasons that make narrators fall into this reason one is قصد الإغرابي and he intends to be strange awkward so people can take narrations from him his intention is to be somebody who's unique who's come with something unknown and unseen before ليرغب الناس so the people can you know want في رواية حديثي to narrate his حديث والأخذ عنه and to take from him the second one is قصد الإمتحان the intention is to test such as that which was done to إمام البخاري they only did that to test him not that the chain of narration was like that it was to check من حفظ المحديثي to check the person's memory وتباب ضبطي and he's complete comprehension of the memory he has the third one is الوقوع في الخطأ والغلطة من غير قصد he fell into a mistake unintentionally and he didn't intend it it wasn't his intention what is the ruling of the حديث of قلب and what is the the ruling if فإن كان القلب بقصد الإغراب if the reasoning of why the قلب occurred is because the person wanted to make the people see him in a strange way in an amazing unique person and that was his reason فلا شك في أنه لا يجل then there's no doubt that it is not permissible that one is it's easy because that can fall under because that's the actions of the وضعين those who place the حديث and that's changing the حديث that's not allowed وإن كان بقصد الإنتحان but if the intention is to test فهو جائز it's permissible للتتبوط من حفظ المحدث to verify the memory of the narrator وإهليتي whether he is an entitled person for this science and his field but with the condition with the condition even that person who is testing he has a condition بالشرط أيوبينا الصحيح قبل الإنثبار من المجلسي he has to give the correct way before they leave the gathering he has to give the right chain of narration and the right method and bring them back together before they leave the gathering and where they're sitting وإن كان عن خطائن وصهوين the third one is if it was done by a mistake and it was by accident فلا شك في أن فعله معدور في خطائي without a doubt and the person of course he's forgiven for that which he didn't intend and he done by accident لأن إذا كان لكن إذا كثور ذلك منه but if that becomes a lot that he's doing this قلب a lot and it's carrying a lot from him فإنه يخلو بالططي this will affect his memory ويجعله بعيفا and it can make his narration weak it can make his narration what about the hadith which is بقلوب it is from the hadith which are weak كما هو معلوم as it's known وذلك لأنه مخالف مخالف مخالف للرواية الثقاد because it's an opposition of the narrators who are reliable the best book for this field is the book written by محمول خطيب البغدادي he called it and he did that just for the narrators who like I mentioned before كعب ابنو مرة and مرة ابنو كعب that people mixed up and they got it wrong he goes and he does like for example يمام ماليك رحم الله what's his name ماليك ابنو ماليك ابنو آنس before ماليك what does it become it became the name of a companion so people who got those type of names wrong and mixed it up he رحم الله he explains it نعم


And I want to thank all of you for coming to this event. This has been, for us on the committee, a remarkable journey that started in September or October as we started defining themes for this conference. And I want to just start with a group I'm going to thank multiple times today, the program committee. If you all have a program and you look on the second page down at the bottom of the planning committee, there is a significant group of people, about 14 altogether, who've been working on putting this program together. And I really like to thank that group for just a spectacular job that they've all done. So thank you. Also, on the front page, we have a group of companies who've agreed to sponsor this program. As you know, in the past, we've been working jointly with the Silicon Valley leadership group. We both had somewhat different goals for our conferences, so we decided to split up. And so we started with no sponsors at the beginning of the time. And I'm very appreciative of this group who stepped up to support what we've done. So thank you all for the sponsors of this. And then finally, we have a group of really great speakers. And I think you're all going to be very pleased with what you hear. We have one change to the program. There's bad news and good news. The bad news is that Harry Reid decided that members of the Senate should be voting today on the floor. And protests, I decided that if I were to call Harry Reid and protest, he probably wouldn't listen. So Jeff Bingham and is not going to be able to be here at the end of the day. That's the bad news. The good news is he's handled this in just a sort of classy way that you'd expect of somebody like Jeff. And when he called me yesterday, he offered to send his chief of staff, who some of you might know, Bob Simon, who just spectacularly good many years of experience, one of the top congressional staff members today. And he will be giving the comments on behalf of the senator and be prepared to answer questions and answers on behalf of the senator at the end. So we'll have the same substance, even though Jeff is not going to be able to be here. Administratively, as you all know, food's going to be outside. There's booths outside from our sponsors. Make sure during the networking, you get a chance to go and look at those very interesting set of materials. It would be useful, though, to know where the parallel sessions are going to be. So if you look in your brochure and you notice that there is a left column and two center columns, and left center and right column of the three parallel sessions, everything in the left column is going to be in the main room here. The center and the right columns are going to be in the Fisher Conference Center, so you walk all the way down to the end of this hall and you'll see signs directing which sessions and which of those rooms. So of course, all the plenary sessions will be held in this room. So what are the themes that we really try to look at? First, there's a lot of attention to energy efficiency. And we wanted to give you images of what people are doing in energy efficiency and in multiple different types of organization. So for those of you who are into that particularly, there should be many, many opportunities to follow. We wanted everybody to see not just what's happened in policy now in energy, but what's coming down the road? What are some of the issues that you may have to be thinking about and dealing with? And we have multiple sessions covering those. Important thing in Silicon Valley is new technologies and new business models, new ways of operating both in government and private sector. Some of them are as new, some of them are just evolving, but we want opportunities for you to see some of the new technological advances as well as some of the business models. And then some of the things emerging in the energy system and where the bright spot and really the very fundamental change we're seeing is in natural gas. And so we're having a session on what's changing there. So I hope you all are ready for a good stimulating day of presentations. And without any more introduction, I'd like to bring up our first speaker, William Perry. And if Bill, you would come up here and I will continue the introduction. Have a seat there. Bill, to me, is a very special person. As many of you know that Bill has had a long history here as an entrepreneur, founding at least one company, ESL, founding other organizations in the energy area. As a public servant, as the Secretary of Defense, and I like to think of him as truly the Secretary of Defense, not the Secretary of Offense. And very, very spectacular job in bringing the military up to the technological prowess that keeps a military at the head of the pack. He was a person whose decisions were instrumental in leading to stealth technologies as well as to, at a later point when he was Secretary of Defense, that was before he was Secretary of Defense, his first independent Pentagon. And as Secretary of Defense, he took the lead in bringing electronic and digital communication to the fighting forces in a much deeper and more profound way than they had in the past. He's also been a scholar. He still is a scholar. He leads activities here in preventive defense at Stanford University. And he, along with George Shultz and several other luminaries, have been waging a campaign in which they've really made progress in moving towards ridding the world of nuclear weapons. More than that, I'd like to think of him as a friend. And I'm very glad that his wife, Lee Perry, is here in the front table coming to join us. So I'd like to now bring him up in his most recent role as chairman of the Secretary of Energy Advisory Committee. So I'd like to bring up Bill Perry. Thank you.


I'm definitely a troublemaker. I'm a troublemaker. I'm a troublemaker. I'm a troublemaker. We are troublemakers. I give to Labor Notes because they were there to help me. They do great work and we got to make sure that goes on. We've had their support every step of the way in transforming our union and I don't think it would have been the same without Labor Notes. You just got to be willing to take action no matter what it takes. Labor Notes needs you. Labor Notes needs you. Labor Notes needs you. Labor Notes needs you.