All right. Hey, the numbers are going up. We're recording. All right. Hello, everybody. We're here to talk about testing leading edge kernels. So this is a good talk. You know, if you're the type of person that looks at Fedora or Rahide and things, you know, that's too stable. I need something, something more exciting in my life while you're at the right spot. So first off, some quick introductions. I recognize a lot of you in the audience, but there's some of you I don't recognize. So I'm guessing you may not recognize me. My name is Paul Moore. Hello. The video, people. Hello. Those are my email addresses. Either one of those, you can get ahold of me. In fact, a lot of times you'll see me, I'll reply from one or the other. It depends what happened, you know, what email I'm checking at that particular moment. That's my Twitter handle up there as well. And I'm not as good as a lot of people are about Twitter. So it might take a day or two for me to realize that we've sent something by Twitter, but I will get it by this way. So what do I do? Well, I'm sort of the past, I don't know. Three years or so I've been an SELINX maintainer for the past couple of years. I've been maintaining audit. I've been a label networking maintainer for probably longer than I care to remember. I also created and maintained the LipsetCon project. So what we're talking about today isn't going to be specific to any one of these projects, but if you'd like to talk about one of these, feel free to grab me in the hallway. I'm here until Friday morning. I'm happy to talk about anything. If you realize you have a question but the conference is over, that's why we have an email. Send me an email. I'm more than happy to talk to you about it. What are we talking about today? Well, we're talking about kernel testing. Talking about some of the problems I see that we currently have, some of the things that I think that we can do to improve our kernel testing, and also finding a way to get our development patches in the hands of people that may not be comfortable dealing with patches. We have a great community of people that really want to help and contribute however they can, but some of these people that want to contribute, they aren't always comfortable dealing with patches. You can't say, hey, here's a patch and they say, well, what do I do with this? I can't do this. So how do we make our cutting edge development? How do we make those bleeding edge changes more accessible to people? So the first place we need to start, and kind of a quick show of hands, how many people are familiar with kernel developer? Are you kernel developers? Okay, so a couple. So most of the room isn't part. So I'm going to quickly try to go over what the kernel development cycle looks like, and most of you may not be familiar with it. First thing goes with any part of development, right?  So they come up with patches. Maybe it's one patch, maybe it's a patch set that's got a dozen patches in it. You never know. So everybody sits down and works on their patches. It's into their happy with it. When they post it upstream, usually to the mailing list, sometimes it's a pull request, I think, but for kernel development, it's close to the mailing list. And there, the patches are reviewed by the maintainers usually, but other people sometimes chime in and say, you know, okay, thanks, this looks great, but maybe the patch that you thought was awesome, maybe it turned out it's not quite as possible as you thought it was. But that's okay if you go through a review process, you know, you make some changes, and after a few times you get to the point everybody likes it, it's great, the maintainer says, hey, this is perfect, I'm going to merge it, awesome. Unfortunately, you're not when you're done.  But this is kind of where the maintainer's job kind of starts. What usually happens is they'll take that patch, and they'll merge it into their next branch. This is going to vary a little bit, each subsystem does things a bit differently. You know, the branch might not be called next, but the idea is the same. What basically happens is that when Linus releases this kernel, so you know, we just had Linux 4.7 release, what, a week ago, once he does that, he pushes that out into the world, and everybody says, oh, you created a new kernel. That's when all of the maintainer's work really kind of starts, because then they take everything that's in their next branch, so all the work that's happened since the last kernel release, they'll take that, and I'll send an email out to Linus and say, hey, okay, here's all our changes for Linux 4.8 on the next kernel. Linus takes a look at them, and hopefully, you know, he just takes all those patches, he puts it in his tree, and great. Now your patch finally has made it into Linus' tree, so it's on its way to actually being out in a kernel. And this goes on for about two weeks. We call this the merge window. So we're actually in a merge window right now for 4.8, because like I said, 4.7 came out about a week ago, with a few more bits left, I think, unless I screwed up at least, possibly. Anyway, so that goes on. And once the merge window closes, Linus puts out the first release candidate for the kernel. So the next one we'll see is 4.8.1. So it puts that out into the world, and sometimes that's in pretty good shape, but more often than not, there's some bugs in it, because this is the first time all these new patches have been tested together in one kernel. So if you use raw hide kernels, you probably know the RC0, the RC1 kernels, you know that those might be ones where your machine might panic on something. It doesn't happen often, but it can happen. And then we go through 8 weeks of testing, where we try to get all these bugs out, so we can get the actual proper kernel release. And Linus releases a new kernel every week, usually on Sunday. Most of that comes out on Sunday. And like I said, we do that for 8 weeks, usually. Sometimes it changes if Linus is traveling and he decides to shorten it or extend it a week, or things are looking particularly bad, he might go an extra week or whatnot. But in general, for most cases, it holds. So what does this mean for testing? So we talked about, we've got these 8 weeks. And we're lucky enough, I apologize. I know names, I don't know faces. Is there anyone in here from Fedora that actors up kernels? Okay, I was going to tell them, they do a great job. They do do a great job, I was going to say, we hold around the plot, but they're not here to hear it. So they're lost. Anyway, Fedora kernel team does a great job. They package up all their RSE releases for Rawhide, and they issue multiple Rawhide kernels per week. So they're really trying to stay pretty close to Linus' upstream tree. So it works out really well. The one, at least for me, is a kernel developer and a maintainer. And this is where we talk about these next branches. These are the ones that have really all the leading edge development. We've heard it a few times today, leading edge and leading edge. Fedora wants to be leading edge. I want to be leading edge. Like I said, Rawhide's too stable for me. I want to be more excited. So these next branches aren't packaged up for Fedora. And that's okay. For most people, it's probably a little too unstable, a little too adventurous. But the Linux Next repository, so this is another, you know, Linus maintains this kernel repository. The Linux Next project, they maintain their own kernel repository. And what they basically do is, you know, every day, I think it's usually, if you're on the eastern coast of the U.S., it usually happens in the afternoon. So that would probably be the evening for most of you. But they go through and they pull from all the different maintainers' next branches, and merge this all together and try to do a kernel build. There's actually a lot of work, and it's really impressive that they actually are able to do it on a daily basis. It's very cool. The only problem is, it's primarily focused on finding merge pathways. So if you've done any software development and you've been applying patches for multiple people, you know, then sometimes maybe the patches can click.  Two people are changing the same file in the same area.  And Linux Next is great for that. They kind of give you a heads up, you know, okay, you know, there's some other subsystem that's playing in those files here. So it might be kind of a red flag that you may need to do some extra testing there. There is some automated testing that does happen.  They'll report back to us and we'll build failures and whatnot. But the coverage of those tests aren't always clear to me. So I'm not sure how much automated testing actually happens. At least I don't know of any test robots that actually run our tests against the Linux Next products. Also, general user testing is rare. I don't know of a single user that actually takes the Linux Next kernel build and runs it on their machine on a regular basis. You know, on occasion it's just problems reported. Somebody might try it out, but it's not happening weekly or day-to-day or whatnot. It's not regular current. And because of that, we usually don't catch interaction problems. You know, so for example, if a network stack does one thing and, you know, SC Linux does something else, independently, we might work just fine. But when we all end up in the same kernel, you might not be able to see your network less. You know, things happen. And, you know, that's not great. And so at this point, I think most of these points on this slide should hopefully make sense or be obvious. And you just talked about, widespread user testing really doesn't happen until these patches did line this as true in RC1. And that gives us eight weeks, less than eight weeks to find the problems and fix the problems. And that's eight weeks if we find it in RC1. You know, if we find it in RC7, in week seven, we've got a week. You know, and if the problem is really tricky, you know, and, you know, maybe it requires like seven or eight machines and a very specific configuration and you have to let them run for three or four hours and, you know, move the mouse just right on the 77th minute. Good about trying to solve that in a week. And this kind of gets to the second point. If it's a serious problem, like, if you know the patch and it breaks Linus' laptop, that's going to be a rough day for you. A rough couple of days, probably. Currently, developers don't like when you break down a machine. Linus really doesn't like when you break a machine. So, they really want to try hard not to break anything in the kernel. Really, really try hard. Otherwise, you will get lots of mail and generally not a nice ride. The other problem, this sounds a little funny and I was sort of typing up the slides and I was trying to figure out how to convey this. But the next branches, they're based on the last of this kernel. Linux 4.7 was just released. We're in the merge window for 4A right now. Once we get past the merge window, that's going to be when we start, after we push everything up to Linus, people that submit patches, all the subsystem maintainers, we'll start accepting them back into our kernel trees. We base our kernel next branch. The most recent you can do it. Linus only wants you to base it on released kernel trees. No R or C releases. Just things like 4.7 and 4.6. For example, for S, Linux, and Audit, I'll go ahead and I'll base mine on 4.7. By the time you get to that merge window, that's eight weeks from now. That means all those patches are based on kernel code, which is eight weeks old. Now, you're thinking yourself, that's two months. That's not very old, right? In the kernel, a lot can change in eight weeks. A lot can change in eight weeks. Especially in other subsystems. Those interactions can try to avoid it. We're not always testing test turner on next branches. We're not always testing the most current code. That can be a problem sometimes. This is just a simple thing. This isn't necessarily a kernel problem. This is just a software development problem. Most developers, I include myself in this, we love the right code. We don't always like to run tests. We don't always like to run tests. When we're developing a certain new piece of functionality, we'll do some testing to make sure it works. That's just how things go. But what about six months down the line? Are you still always running those same regression tests on that piece of new functionality? What about three years from now? Functionality is still there. Are you testing? Some do, but a lot of the subsystems don't. We run that really heavily in code review and, like I said, just add hot testing. So many are using new patch. Here's how we test it. A lot of subsystems don't have regular regression tests. Whenever somebody submits a new patch or for every kernel release or every week, or day, or whatever. There's no real way to easily test to see when did we bring something. Or, like I said, when did another subsystem change something that would cause some side effects in your subsystem that would take problems. So that's kind of where we're at. Those are some of the problems. So it's kind of my if I can sit down and pick up how could we fix this? Where are some of the things? These are kind of my aspirations. Some of my goals. What I want to do is I want to make sure we have regular testing of the latest upstream developments. I want to test as close to development as we can. So we can catch the bugs early. I think everybody knows the sooner you can catch the bug, the easier your life is going to be. Definitely want to get it before it gets out and normal users start banging out at the end of the day about some of those problem reports. And that's not good. I also want to test criminals more accessible to people. And it's like I said, I interact with a lot of people. A lot of people send in problem reports and that's great. One of the things I like most about open source isn't so much the open source aspect. I really like that. But I love the community of that. Everybody really is excited about it. They'll go out and try new software. And they'll just know when it breaks. That's wonderful. And some people even, really detailed reports. Here's how it broke it. Here's how you can recreate it. That's wonderful. You don't know that sometimes these users, they're enthusiastic. They love open source. But maybe they're not comfortable building their own kernel. And putting it installing it and whatnot. But if you can provide them an RTO, they're happy to test out the RTO. So, how do we take all these patches we have for fixes and put them in easy ways so that people can put them on their systems and try them out? Oh, last one. Needs to be cheap. Needs to be important. Larger selfish reasons. But, I also want to make whatever we come up with easy for other people to use as well. You know, if it's very complicated, requires difficult setup, or if it's good in some weird spiritual language that nobody knows, nobody else is going to use it.  And we'll see when we get a little bit farther down. There's very few things here that are specific to the kernel. So, if you have a project that you're maintaining, you might be able to take some of this and use it for your other devices if you're looking for a relatively easy way to do some regular testing. Yeah. So, you can see, you know, Michael's got to be automated, right? If you have to do a lot of stuff by hand, you just not going to do it. You know, if you're automated though, you can run it very often. And more often you can run these tests with a better opportunity. Zero cost. I'm cheap. I don't want to spend a lot of my time to put in the cloud path too. I also don't want to spend a lot of my time maintaining complex infrastructure, making sure patches are applied. And so when it comes out with a new version of that test infrastructure, you know, how do I have to go and update all my systems in a particular case? I don't want to do that.  So you can pretty much run it on your laptop. That was kind of my goal. And when I started looking around, it was, you know, you hear people talk about continuous integration. This is great. This is exactly what I was hoping for. You know, it connects up the development, puts it close to the test environment, and if you would provide some mechanisms to deploy that out, so that, you know, once you get everything past the test, you can go ahead and hand these shiny new kernels off to users, and say, hey, we'll play with this, try it, break it, you know, give me the pieces back. And I don't spend too much, so I appreciate you. Everybody sort of continues their integration, right? Yeah, okay. So, yeah, we, you know, everything's on a continuous integration. It watches your repository, you know, put new commit in, takes that commit, builds a new package, runs it through some regression testing, so everything looks good, it pushes it out, deploys it. Life is wonderful. Constant stream of new packages. I've talked to some people where they, it's something like every five minutes in and release. It's just, it's absolutely fun. I'm happy to know that once a week, you know, maybe we can get it once a day, that'd be great. But we ought to get it more than that. And there's lots of services and products that pop up. They're very popular with web and app developers. I'm sure you guys know that, so we'll move on. However, as I was looking into some of the continuous integration things, Jenkins in particular, which I've heard of, you know, people are trying to do things like, this is great. I started looking into some of these frameworks. They were heavy. They were complicated. They weren't exactly well suited for what I was trying to do. They were quite clever connected, you know. I mean, these were all things that had elaborate back ends. You have a builder, you have a test system, you have management systems and orchestras that oversaw everything. And I'm looking at this, and I'm like, that, in my basement, blow along how am I going to carry that around on my laptop. So, yeah, the management cost, the hardware cost, it just wasn't working. The other thing is, it wasn't clear to me that I was well suited for kernel testing. Just to make you know, if I could be developed with kernels, they would tend to be panicked every once in a while. No, your code. Everybody submits code. It's great. It's my code. I always manage the system when I write code. So, I needed a test framework that could handle that. We gracefully deal with the system and it's, you know, the system wouldn't be wedged for a couple of days until I came back and I was able to do anything. So, yeah, and it also needed to, as part of that process, need to be able to handle rebooting with different kernels and whatnot. So, I couldn't find any continuous integration systems that met all those requirements. If anybody knows of one, please let me know. I'd love to hear it. Not all at once, guys. All right. So, I said, okay, well, there's not a continuous integration solution that I could find anyway. If I was going to try and come up with one, what were the things I needed? I tried to simplify it because I didn't really want to start another project to do this. Is there some easy way I can do this? So, I figured, okay, well, the first thing, the most important thing is I need to either create or find a set of regression tests that I can run that are relatively simple, self-contained, single system, you know, so I could have a VM or a real, you know, hardware system, and I would only need one, you know. I didn't need to have this elaborate network, or anything. I also wanted something where I could take the individual tests out of the test suite. If one of those tests was failing, and I could use that to, you know, post a link to Buxilla or something and use it as a reproducer, I could hand it off to other people. You know, I didn't want to have to pass around this whole huge heavy test suite. I could isolate individual tests to demonstrate the problem. I also wanted to come up with a way to automate the patching of Fedora raw hide kernel RPMs. Because as we know, in a raw hide, we talked about this earlier, they already do a good job doing the RCE releases. So I figured, okay, that's pretty close. I mean, it's basically what we see in Linus's tree. So I don't want to have to try and duplicate all their work. They've already got a team of people working on that. I just want to take the patches that are in my development tree, find a way to pass them on top of the existing raw hide kernels and do that in a way that was automated.  It's one of them. And once I had this new kernel source RPM, I wanted to automate the building of it and then find a way to host that, you know, the resulting binary RPMs somewhere where other people could try it. Preferably, so I don't need to just type whatever and go ahead and pull down the freshly built kernel and go from there. And then the last part answers all of them. The last part is I want to obviously automate the testing, right? I have my fresh new kernel. I have my regression test suites. You know what it means to actually run the regression test suites against the kernel, right? This is kind of, it's funny, I mean this is probably the least involved of everything actually and all the other stuff that needs to be done. But without this part the other stuff, you know, it's not quite as interesting. That's the most important bit. Now I wanted to do it by VMs, not necessarily by VR hardware just simply because there is no deal, right?  And if I did it in a VM I could either, you know, I could post the VM on my laptop from traveling or if I'm back home, I've got your network connectivity, you know, I could post it on my system. Give me some options. So, progress. What have I been able to do so far? Well, good news is I was able to find a test suite for acylinx that worked pretty well. That's great. Whenever I can reuse code I think it's going to be very happy because it's my whole goal, to release another word to test here. Of course, I couldn't find a good one for audit that was simple. Audit does actually have a really good test suite. You have to see the audit if you've ever heard of the common criteria. There's a really good test suite that goes along with it for audit. Extremely comprehensive, very evolved. Commons is kind of heavy weight for what I wanted to do. It was hard to isolate individual tests. Some of the tests were part of the network setup. Very involved. It wasn't quite what I was looking for. So I did have to create the audit test suite project. Very similar to the acylinx test suite project. I saw it. I've created some scripting that handles all the Fedora kernel patching. I'll go install these so that it's all about the object and the player that you like. The same patches that will handle the kernel patching, they will also go ahead and optionally submit them off to a copper processor that you have. Copper is great. I don't see anyone here from copper, right? Copper is awesome. If you haven't looked at copper yet, if you're maintaining packages for Fedora or if you're trying to maintain the package for Fedora, check out copper. It'll handle building your package for all the different platforms. It'll deploy it in your repository so that you can point the number to end up at it. It could be easier. Honestly, if it wasn't for copper, I'm not sure I would be able to put the progress on this as I did. That was kind of really an inspiration. Once I saw that, I was like, hey, some of these ideas I had would be much easier to do with copper. For the past year or so, I've been doing weekly builds and test runs with these new kernels and with the test suite. Unfortunately, while the build is all automated and I'm actually running the tests, it has to be that high-end. I may actually quite finish the scripting for that, but it's in progress. I just had a little bit of time so I made a little more progress in the past week or so. Hopefully another month I'll have something that works well enough that I can post about my GitHub. Some of the lessons that I've learned is I've gone through this process, which some of them are pretty straightforward and I think you're all going to go like, yeah, regular regression testing does work. You just have to do it regularly. Over the course of the year, I used the regression test to basically verify all the new patches that people spend me. Caught a few things with it that maybe I wouldn't have caught otherwise. Problems and other subsystems just a week and a half, two weeks ago, something changed in the network stack that broke SCLNX labeled networking for you to keep. But because we caught it so quickly, there's a relative lease. You look back through the GitHub log, I looked at the commit and I was like, it doesn't look quite right. We fixed it a couple of days whereas if that had gone on, we might not have caught that for a couple of months, perhaps longer and we couldn't get a lot of it again. Point of this. So we would have had to bisect and divide it would have been a pain. So I would encourage you even if you don't automate the process at least set some regular schedule at least monthly go through if you have the tests run even if by then you'll be happy to do it. I've also noticed that I maintain my stress levels during the merge window and during the RCE release, this has gone that long because I have much higher confidence in the amount of code that I'm asking by this point. The merge window opens up I don't worry like, I run all the tests, is everything okay? Am I going to Islamist stop? I'm running these weekly at least weekly, sometimes I run more than once a week. So I'm much more confident when I set things up and I don't think we've had any serious issues during the RCE cycle. There's been a couple small things but easily fixed for things there too for my other stuff. So it's been pretty good. The automated patching works a lot better than I thought it would. I was afraid that trying to automate patch on the door kernels would be difficult. I haven't had to do much manual merge conflict resolution. So based on the experience of a passenger I'm actually thinking about automating this further just because it generally works so well. Alex said copper, great tool. I'm probably the biggest fan. Unfortunately I've noticed recently I've had some reliability issues and there was a talk I can't remember if it was earlier this morning I've been noticing some reliability issues with copper so I asked them about it and they were explaining it and there was some reasons they were trying some different things. Copper still developed of course like everything and they're aware of the reliability and it should be getting much better soon. So I'm very happy to hear that. But anyway, yes those are kind of the things I've learned. Here's some of the things I'm still working on. I've talked about more automation right? I just already mentioned that that last step of working there actually run the test in your VM, that's the thing that I'm still doing back here for the most part. I hope maybe within the next month or two assuming nothing else catches fire I'll get that test script done. I also want to do once that's done I want to automate the triggers so basically I want to have things that watch the gift repository for SELINICS Naudet and when they see that I can make a new patch, an original patch for you guys I want this to go to kickoff the new kernel though. Take those patches down, put them on top of the ride build up a new kernel and then another thing that watches this is when a new kernel outside of my copper repository says hey, throw that on the VM you know, reboot that VM hopefully it doesn't panic and then go out and run the tests on it and then probably send you a mail with test results afterwards. Yeah, close to that that won't actually be too difficult I think it's the test execution that we have about the trigger part. Getting the trigger send should be pretty simple a car job that fires every hour or something and then obviously whenever anybody talks about testing there's always better test coverage that's kind of a common theme although I hope in principle it's within reason we talked about test results and they said there's a great test we brought and very comprehensive but it was too heavy it involved multiple systems it wasn't something that could be easily and quickly run I want these tests to be something that anybody who's developing kernel patches can go ahead and take these tests put it on the test system and run it quickly so I try to keep the dependencies small, like I said, keep it all self-contained. These are not going to be comprehensive tests and that's okay.  Once we get all that done I'd like to expand this out Escalonics and Aura that aren't the only security subsystems in Fedora we've got things like AIMA we've got TVs, all that stuff I'd like to go ahead and once you get things in a good shape for Escalonics and Aura, I'd like to start taking those subsystems and putting those into test kernels as well and working test against those hopefully to try and make sure that when we have new releases of Fedora and new kernels we make sure those are in good shape as we can rate them. So project links here's all the links I promised you earlier first link is the Escalonics test suite the Escalonics audit test suite the third link on there that's the copper kernels those are publicly available and you can go grab them if you go to that link there's even instructions on how to set it up on your system it's pretty simple a couple of DNF commands and you're good to go so if you have any models in there you can send them an email pmore at redhat.com paul at paul-more.com you can always be in touch with me there if you're looking for the scripts except you're thinking about doing this building your own kernels if you want to try and do something similar for your own package like I said there's very few things in there that are actually specific to the kernel that last repository is where you can can grab those scripts don't bash I'm not fancy I don't really know how to find all that well I don't really know hurl all that well I don't know many scripting languages but bash is easy the nice part about bash is I can guarantee a system that's bash even if you've got the smallest systems you can run a shell start that's pretty much it I can go into a bit more detail about how you actually go in install and set this up but I think we have about 14 minutes left so I just wanted to ask if anybody had any questions before I go into that that's it I guess would you take a question or turn it on I would be nice if this eventually expanded into some I think the big thing is I'm definitely open to adding more subsystems in there you just have to have a test suite that I can run against it like I said it doesn't require a lot of test infrastructure and can easily be automated so I'm definitely open to other subsystems and even if it's just other if it's not patches but just enabling kernel options you can do that as long as we can automate it somehow as long as there's a test suite for it you do it but I get on with it I had hoped to have the VM test part working before it came but there was an audit so it came out just a couple weeks ago and that sucked up all my time and it really shouldn't have taken as long as it did but for whatever reason you know when you're writing code sometimes and you're like the shit word it's not working you end up chasing silly little bugs I burned days on something I should have been able to fix in a couple hours but anyway so as I mentioned there's those scripts which automate the process there's if you go to the GitHub repository there's a review file in there which has all this information in more detail here I put in the slides I didn't want to risk trying to bring up the page on the Wi-Fi here it's kind of a little shaky but if you're one of the lucky ones the Wi-Fi is working for you I had the URL in the previous one but you can go there and see a song or read me in much better detail so the first thing you can do is hopefully you've got a thorough account if you don't have a thorough account you'll get a thorough account once you have that you've got a proper command line tool if you're not going to use copper you don't have to use copper you don't need this the scripts will work without it it's just you'll have to do the the builds either locally or you can use Koji but if you use copper it'll host the repository which is really nice so once you've got all that said you've got copper installed go home it doesn't really matter there's two scripts a reading and a license so we were talking four files they're all bash scripts so there's nothing to build and you'll see the dependencies in the file obviously these things get the normal said awk but it's nothing to elaborate no big dependencies so once you've got that eventually you're going to want to start using it so the easiest way to do that and this will probably as we get farther down maybe I'll pack this up in an hour but for right now this is the way to do this create a new project directory it doesn't really matter where create a new project directory I call it the copper project here soft link in pcopper underscore page pcopper underscore srk in kernel we'll talk about those in just a minute soft link those in that way you can do a get poll and audit all project directories to get updated but don't soft link in the configuration pcopper.com copy that over because that's going to be specific to the individual project that we're working on and we still don't have time to go over all the configuration that are in there but it's just a file that gets sourced by the bash script so it's variable people and then whatever and there's documentation in the configuration file that should be pretty straightforward and there's examples in there as well so once you have any questions about it send me an email catch me in the hallway obviously if you wanted to help out with any of these things over cost surgery more documentation all very well so once you got that soft link and copied over and you've edited the configuration file and everything's good it's time to go ahead and actually get the upstream repository so you know I assume it's get since everything is pretty much get these days but go ahead and clone your project it doesn't support anything the script still supports anything but get at this particular moment and that's not an inherent limitation it'd be very easy to add some additional capabilities to the script I just all my projects are good so I haven't had a good flow but if you have something that's in subversion or curio or something else and you're interested in using these and you've got patches once you have them so once you do that adding any remote repositories that you might want to pull in from other people and create patches from and set that up clone the thrower package for the source RPM get that set up and then you run this course it's pretty simple pcop or underscore patch this tapes the upstream repository and based on the configuration file where you tell which branches the patches live in it'll go ahead and take everything in that branch and create one patch for that branch so you can have multiple remote repositories multiple branches you can create patches for each one and it will dump these on the directory for you and then pcop or underscore srpm-curnal that'll go ahead and take those patches apply them on top of a fedora rockhead kernel it doesn't have to be run, they should say put them on a fedora kernel and if you use the dash speed it'll automatically go ahead and submit them or possibly and if it's kernel come back in three hours I understand you need kernel to test there's plenty more command line options for all of these my luck with live demos is pretty poor so I'm not going to try this or leave that on the live files and stuff anyway, you can check it out there's more command line options we're doing different things pcop or underscore patch pretty much work with anything that I can't know whatsoever so you can use it for use space projects system library any library wouldn't really matter the srpm it's 90% generic the only problem is as you know if you try to apply patches to sourced rpms there's especially if you've ever looked at a kernel sourced rpms it's huge, it's a mess so knowing where to put the patches in there can be a little tricky sometimes the spec file is very large so there is some logic in there that is specific to the kernel sourced rpms that's why it's actually pcop or srpm-kernel it would be relatively easy to make a generic version of this it might not work for the kernel because there's a lot of these in there but you can always custom tailor those to whatever package happens to be and just bring in a srpm- my package perhaps as I play with this more in a bit more time I can make a generic one that works in the kernel I can just play with it right now that's that if you know bash, if you're familiar with spec files it should be relatively trivial to cover that and that's pretty much it any questions? one point pcop to the phishing script I am not sure but I think that the kernel team sounds pretty too many things which is for the federa for the federa there to be one happening so like the people who are using it do you have some other solution? are you requesting for the testing back for I suppose we are doing the testing right now just for Intel so if it's possible to send it to a directory oh yeah yeah so so we generated srpm so that we can build for anything I was originally my primary architecture is x86 before I came like all of us in the room here right? so that's what I care about the most that's what I do there were some things where for a while I wanted x86 specifically a 32 bit kernel so it's building for that the raw hide wasn't super stable on x86 and there were some problems with copper which after having talked to the copper people it doesn't like to be resolved now but basically if copper had support for those architectures we can do that even if copper doesn't support it like I said you can still build it with koji but you can still build it up with a source art you know rpm build rebuild like I said I just like copper because that's the nice thing where it builds it for me and it then posts it it's already in there yes it's my great thinking I don't know if I'm correct so we will be getting close to we can get more I just yeah I just heard that at the presentation I didn't need pulling it from my copper imposters but if it's not reliable like I had to turn x86 off just because all my pills were fair and you know they was driving crazy but yeah let's copper it so it's easy for us to do like I said any time it's easy we got koji you can build it alright well thank you very much guys I hope this was useful just hope it didn't put you to sleep or if it did I hope I spoke quietly but it didn't wake you up so there we go thanks a lot


What's good Josh, we're all back again with another video. So we're gonna check out a video from WrestleMania crazy WWE fan arrested in charge for attacking Seth Rollins Randy Orton daughter and other wrestling news If you guys seen on the main in the clutch page, we did check out the clip of just some crazed fan Going road and a spear in the head out of Seth Rollins before security and officials could take him away That was insane. It was wild Like I don't know what possessed this fan to do that. Like I don't I have no idea But hey, man, that was not a smart move at all. If there's one thing I'm not a big fan of and I think a lot of people are not a big fans of his fans getting beside themselves Jumping a barricade and trying to hop in the ring with these wrestlers, man. Like that's dangerous That's dangerous for the fan. That's dangerous for the wrestlers. Like that's That's not what something you go to the show you pay your money to to watch people, you know wrestling and entertain you not to You know saying get that get involved in a situation where you can get hurt the wrestlers get hurt Like it's it's it's not what's up, man. I'm all for going rogue, but not that road That's a little bit too much. So yeah, we did check it out Last night right kind of right after it happened people was DM me DMing me and letting me know what was going on on Monday that raw and apparently there's another video clip of I think this was like Maybe a dark segment last night Where a fan was getting a little bit rowdy like in the front area and they were it was like some type of Lumberjack match, so I think it was a dark segment was a lumberjack match And you know a fan was getting a little disrespectful with Sammy Zane or whatnot So, you know, it looked like he wanted to hop the barricade and VP was like, please hop the barricade, bro Hop the barricade. He like they will you know saying they were wanting wanting to hop their bear cake is used I guess getting kind of disrespectful. I'm not sure but y'all was wild last night on Monday night raw I don't know what was going on. I need watching but y'all going crazy man, but enough enough of the talking Let's get right into this video. Appreciate all love and support and let's do this thing Is it is WrestleMania here back with another video a survivor series is over But what will the fallout be on raw? Well join us now as we look at this week's edition of the red brand as well as the wildest new stories and rumors You need to know including a crazy WWE fan arrested in charge for attacking Seth Rollins Abysmal attendance at Raw WWE wrestler returned to the ring Randy Orton celebrates with his daughter in the ring and much more Oh, be sure to subscribe and hit that notification bell for daily wrestling videos and follow us on Facebook for exclusive lists As always, we won't recap the matches, but just provide you with the good the bad and the downright ugly I'm willing to bet the downright ugly has something to do with the egg from which I was telling me They were trying to find the egg at the beginning of the show That gotta be in a downright ugly As always we start off with the good is number one Austin theories title match our last night's title match between theory and WWE Champion Biggie was a great way to continue theory's push and develop the ongoing rivalry between Biggie Seth Rollins and Kevin Owens Although Austin may seem like an unworthy contender having mr. McMahon grant him one on a whim certainly fits him with McMahon's mercurial character Furthermore Austin had a good performance Biggie got a win back after losing to Roman Reigns at Survivor Series And they developed the drama regarding Seth's quest for the belt and the question of whether Kao is working with Rollins number two Randy Riddle Riddle took his hero worship of tag team partner Randy on a new level last night when he donned a fake mustache and beard along with a black vest and mirror Randy Orton Riddle's backstage segment with Orton was another reminder of the absolute awesomeness of RK bro He talked like Orton entered his match to Orton's music and finished his opponent with an RKO WWE top things off with Orton hitting Riddle's moves the bro Derek on Robert Roode the fans They're they're pairing is actually quite entertaining. It's always these odd pairings like this sometimes not always But sometimes these odd pairings work like you guys remember team hell no Daniel Bryan and Kane Originally you didn't you wouldn't think it would work, but it works. It was a funny Tag team and these guys are hilarious, but they can go in the ring. So I like this I like funny quirky tag teams like that. I can't believe I said the word quirky with the hill Cheering the viper on while this team is destined to break up the WWE should milk it for all its worth Yeah, number three that old McMahon magic And Vinny Mack did it again on Raw showing that he's lost the ability to entertain the fans with his mr McMahon character as ridiculous as the storyline of McMahon searching for the thief of his 100 million dollar egg was The segment where Sami Zayn sold the mystery and revealed Austin theory as a thief was kind of fun Theory's hapless admission that things spun out of control when he tried to take a selfie with the egg fit him with his self-obsessed character while Sami Zayn's weasel-like efforts to throw theory under the bus were a reminder of how entertaining Zayn can actually be Mr. McMahon's outrageous decision to give theory the title shot and forgiven for stealing the egg because theory reminded Vince of him fit McMahon's character to a tee Likewise, McMahon refusing to give Sami a WWE championship match despite him finding the egg makes sense when Vince Admonished him that no one likes a snitch number four Apollo vs. Damian could be good Apollo vs. Damian could be one of the most promising programs in Raw in a long time US champion Damian Priest has already shown he has what it takes to eventually make the main event Having worked a major match up WrestleMania alongside bad bunny and throwing back the challenge of veteran performer Shameless now it's time to see how the archer of infamy fares in facing Cruz an opponent who has shown potential But who hasn't received a steady enough push? Apollo has shown that he can work well as a baby face or a heel and a successful showing where priests could help solidify both And Priest on Raw number five a structured show last night Raw accomplished something it really does Booking a structured show in matches interviews in angles that seem to drive storylines rather than just fill three hours of TV time Although overall wasn't fantastic It gave fans reason for staying tuned whether it was the show's matches the angles Such as Seth Rollins laying out Finn Balor and Liv Morgan slugging Becky Lynch or the promos And number six a good build up for Seth versus Biggie The WWE is doing wonderful work building things up for Biggie versus Seth Rollins Yeah, that's obviously gonna be the next patent next big for you for Biggie The WWE has no pay-per-view scheduled until 1st January 2022 So it needs to bite its time with a big money match between Seth and Biggie The WWE continues amping the anticipation for the eventual showdown between the two while it carefully avoids booking them in any matches While fans will likely see a non decisive match on Raw sometime soon They're smart in using skirmishes between Seth and Biggie to wet the fans' appetite But that was a good what about the baddest number one terrible tag team scene Last night's women's tag team title win by Carmella and Queen Zelina over Rhea Ripley and Nicky Ash Was another painful reminder of how terrible the women's tag team division is Although Ripley and Ash were a good team They haven't spent much time in developing their act or booking them against anyone While the tag team titles may be a good way to utilize Carmella and Zelina none of whom are standout singles wrestlers Could be tough to pull off unless the WWE creates new teams. Number two Becky. They need to definitely Get rid of that They need to get rid of those damn belts bro Because it's just not enough women in a division for them to even have it to be honest Unless they combine the women's division, but yeah, they just need to go ahead and do away with the belts Joey's Liv Morgan on the mic The WWE is taking a major risk with Becky Lynch's promos against Liv Morgan While it's only natural for a heel to run down a baby face Lynch is going overboard in pointing out Liv Morgan's very real record of failure Something which has resulted WWE booking her inconsistently The biggest problem here is that Liv will look even worse if she loses to Lynch. Number three Here's the thing about that too, if they're going to book her in that situation You gotta at some point you gotta give Liv Morgan the rub and Put the strap on her if you're booking her like this There's no point of booking her in a situation where you know, Becky Lynch is pretty much Downplaying her like she's not even worth her time Blase Blase Only for her to ultimately be right and Liv Morgan doesn't get the shot because a lot of people are fans of Liv Morgan So, I don't know. It'll be something different if they do it correctly, but again, we're talking about WWE here Full Egg Mystery Now the mystery of Mr. McMahon's missing egg could be one of the stupidest angles of 2021 The very idea of McMahon carrying a hundred million dollar jeweled egg with him was bad enough But the search for the egg's thief and the revelation the Austin theory stole it after his plan to take a selfie When a ride likely had fans his heads exploding Her two things are clear Number one the WWE's latest cash grab for promoting a movie shows They don't care about how such a marketing ploy affects the product. Yeah, number two It's clearly a storyline Vince either wrote or he couldn't wait to get involved with as it suits his craving for corny storylines Number four Finn finished What's going on with Finn Balor? The former universal champion has gone from hero to zero within a matter of weeks following his move to raw Balor who just challenged Roman Reigns for the universal championship at extreme rules Now looks as competitive as a cardiac patient trying to run a marathon. Yeah Okay, that might be a bit of a stretch But it's clear that Balor is entrenched in the role of chronic contender Someone who makes a good showing in the title and shots tournament or fails to get the brass ring Another example is Balor serving as Seth Rollins' personal punching bag on Raw An incident fans can be sure won't lead to Finn getting any kind of payback Balor is too talented to have him serving in a midcard role But apparently the WWE feels that's the best use for him. Luckily there was nothing Sucks like Finn definitely deserves so much better, man.  They did a good job following up on the Survivor Series Including Seth Rollins' big win the men's elimination match and Becky Lynch's triumph over Charlotte The show didn't seem like it was booked on the fly Which is a major accomplishment in its own for the red brand What did you guys think of Raw last night? Now, let's move on to watch out there What did y'all think of Raw last night the news Our first news it looks at a crazy WWE fan arrested in charge for attacking Seth Rollins Atop in the news today is the attack on Seth Rollins at last night's Raw Now in case you missed it Rollins was on the way to the ring when a male fan now identified as 24 year old Eliza Spencer attacked Rollins from behind ESPN's Mark Ramondi tweeted Eliza Spencer 24 has been charged with attempted assault and attempted violation of arts and cultural affairs Disrupting live sporting event for his attack on WWE wrestler Seth Rollins during the Raw television show Monday night at Barclay Center in Brooklyn Per the NYPD Ramondi elaborated per police Rollins suffered swelling to his lip but refused medical attention a photo from twitter account a kenny for your thought shows Becky Lynch watching Seth from gorilla position as big-time bex was undoubtedly concerned about her husband being attacked The WWE released a statement following the alleged assault saying WWE takes the safety of its performers very seriously The individual who attacked Seth Rollins has been turned over to the NYPD and will be prosecuted to the fullest extent of the law TMZ Sports reports the man has been hit with three criminal charges Attempted assault attempted violation of arts and cultural affairs and disrupting a live sporting event According to TMZ the defendant is due in court sometime in december for a hearing regarding the matter While there was that crazy fan who attacked Seth Rollins another person was actually See and this is what I was talking about as well. They got into it with Sami Zayn The ejected from raw as well Alex McCarthy tweeted more wind is from the crowd as the guy in the blue gets ejected No idea what was said but Montez Ford waved him off with both MVP and Sami Zayn getting animated Now coincidentally the Barclay Center was the same location where Bret Hart was attacked during the 2019 Hall of Fame ceremony by an audience member next up was the rock actually scheduled for Survivor Series Fans who watched the 2021 Survivor Series are still wondering why they don't Hey man Like I said at the beginning of this video y'all Go to the shows enjoy the shows don't be trying to be some Some crazed individual get your 15 seconds of fame by attacking someone hopping the barricade It's the quickest way to jail quickest way to get fine And this is the quickest way for you to get hurt. So just chill enjoy the show, man WWE spent so much time celebrating the rocks 25th anniversary of his debut at the 96 Survivor Series Only without the great one appearing according to a report from Andrews Arian Sunday's WWE Survivor Series was originally supposed to feature Dwayne The Rock Johnson And for anyone watching last night, it was blatantly obvious that was the plan In july I was told that the Brooklyn New York pay-per-view would be centered around Johnson As fans know, there was no way for Johnson to appear since he was due to film his latest project Zarian added yet another source informed me that there were hopes for Johnson to be on Monday's Raw depended on his schedule. I personally didn't see this as happening. In late September the same source told me that Johnson would not be on Survivor Series due to his filming schedule and needed to quarantine for travel. However, there was still a financial obligation to continue with the plan for the movie production without Johnson, which is what we saw last night. The basic concept stayed the same minus Johnson himself. The WWE even had Mr. McMahon drop the rocks name during a backstage segment with Roman Reigns, a move which certainly set things up for a future showdown between the two. But all it did was want us to see The Rock at Survivor Series. Yeah, next up very one. That whole segment hyped us up to want us to see The Rock. Whether they were going to advertise it, whether they actually advertise it or not, you teasing it, it does kind of give the fans this expectation of, or maybe he is going to tell me, it just, it automatically gives you that type of excitement when you keep talking about it, when you keep teasing it, when you keep having these backstage segments. So, you know, I get some people can say, oh, WWE didn't say he was going to come, but teasing it all the time doesn't help either. Because now you're setting up your fans for unrealistic expectations that you know it's not going to happen. You might as well just not tease it like that. Like, that's just my personal opinion on it. While it's first post-WWE appearance, a fans of Wyndham Retunder aka former Superstar Bray Wyatt will finally get a chance to see him at WrestleCon, who tweeted a picture of Bray Wyatt with the caption, we let him in Dallas. It should prove interesting but the Retunder discusses his time in the WWE when he appears at the wrestling convention. Next up, poor Raw attendance. A recent photo uploaded to Twitter suggests the Raw After Survivor series had more than a few empty seats. While it's difficult to gauge a show's attendance, both due to promotion sometimes giving away free tickets and because photos of an event can be deceptive, it looked like last night's Raw at the Barclay Center was anything but a Next up, a former WWE star returning to wrestling. Is former WWE Superstar Summer Rey aka Daniel Monet returning to wrestling? Or Rey who last worked in the WWE in 2017 had fans talking after a report from PWInsider. Daniel Monet, the former Summer Rey in WWE was spotted at the Impact Wrestling Tapings this week. No word yet on whether she was starting with the company or just visiting. Would you guys like to see Rey return to wrestling? Let us know in the comments. It's down below. And finally Randy Orton's daughter celebrates birthday with the fans. Alas, but not least, Randy Orton let the fans share a special moment with his daughter Brooklyn when he invited them to sing happy birthday to her after he brought her into the ring. BT Sports tweeted video of the heartwarming moment that saw fans in the Barclay Center singing to Orton's 5 year old daughter while a group of babyfaces joined Randy and Brooklyn in the ring. But they haven't folks, our review of Raw as well as the wildest news stories and rumors you need to know. Be sure to leave a comment down below. That's probably the most exciting thing that probably happened on Raw, just the fans legitimately going raw. But comment down below. Let me know. Are you guys looking forward to the potential feud with Big E and Seth Rollins? I know that's the thing they're kind of setting up right now. So I want to know if you guys are looking forward to that or you guys interested in that. I think they could possibly have a fantastic match, just depends on how they book you to have plenty of time into the actual next paper review, which won't be until next year. So they can really take the time with this build and make it seem really important. I hope they do because I want Big E to have a a decent title run where he's going against some formidable former champions. And I hope he's able to, you know, saying really build up his his title run from this, you know, I think this is something that he needs. He needs a competitive title run. He needs competitive heels that's going to push him that to the edge of, you know, being even better. So comment down below. Let me know if you guys looking forward to that next WWE Championship feud. Appreciate all love and support. Roll to 70 K. Appreciate y'all kicking me. See y'all next time. Peace.


So we will continue where we left off the previous time, but just to recap, we were discussing about similarity and we say that a matrix A is similar to matrix B if there exists a non-singular matrix S such that B can be written as S inverse AS. This is an equivalence relation, so which in turn means that the relationship is reflexive, symmetric and transitive. Reflexive meaning every matrix is similar to itself and if A is similar and transitive means, symmetric means if A is similar to B then B is similar to A and transitive means that if there is a triangular, it holds that is if C is similar to B and B is similar to A then C is similar to A. We saw that similar matrices have the same characteristic polynomial and the corollary to this is that if two matrices are similar then they have the same eigenvalues counting multiplicities and we also defined the notion of diagonalizability and a matrix is diagonalizable if it is similar to a diagonal matrix and the similarity divides the space of all n cross n matrices into equivalence classes and if A is similar to a diagonal matrix then any other matrix belonging to the same equivalence class is diagonalizable into the same diagonal matrix and any matrix which is not in this same equivalence class will not be diagonalizable into this particular diagonal matrix and we saw that the condition for diagonalizability is that it should have n linearly independent eigenvectors and but we haven't discussed when a matrix will have n linearly independent eigenvectors. One such condition is that if A has n distinct eigenvalues then A is diagonalizable. When it has n distinct eigenvalues it will have n linearly independent eigenvectors and it will be diagonalizable. So one thing is that if you perturb a matrix by a small amount the eigenvalues also get perturbed by a small amount and we'll see that result a little bit later and so even if A is not diagonalizable you can always perturb it by a very small amount and obtain a matrix that is diagonalizable. We also defined the notion of simultaneous diagonalizability which is possible if there exists a single matrix so there's a common diagonalizing matrix S such that both S inverse A S and S inverse B S are diagonal matrices and one interesting property is that two matrices commute if and only if they are simultaneously diagonalizable. A and B commute meaning that A times B is the same as B times A for the last time and at the end of the previous class we stated the following theorem which says that if you have two rectangular matrices A which is of size m by n and B which is of size n by m with m less than or equal to n meaning that A is a fat matrix and B is a tall matrix but because we have defined them as m by n and n by m it is possible to consider what happens to BA and AB. Both multiplications are kosher they're both possible and these two matrices BA and AB have the same eigenvalues counting multiplicities but the matrix BA which is of size n by n and it's the bigger matrix in size than AB which is of size m by m the extra eigenvalues BA has n minus m extra eigenvalues compared to AB and those extra n minus m eigenvalues will be equal to zero. So in other words the difference between the characteristic polynomial of BA and the characteristic polynomial of AB is just this factor t to the n minus m you can see that this has n minus m zeros equal to zero t equal to zero and further if m equals n that is both these matrices are square and at least one of them is non-singular then the two matrices AB and BA are similar. So clearly if m equals n then they will have the same eigenvalues but remember that having the same eigenvalues or having the same characteristic polynomial is not sufficient for two matrices to be similar to each other but in this case if one of them is non-singular then the two matrices are indeed similar to each other. So let's see how to show this. So this is a slightly clever proof. There may be other ways to show it but this way is simple but nonetheless it is a clever proof. So the way it goes is you consider the following this times the matrix okay so consider this product of these two matrices now AB is of size m by m and B is of size n by m so basically there are this this zero here has m rows and n columns and this zero here has n rows and n columns so overall this matrix has a size m plus n by m plus n okay it's a square matrix and I'm multiplying it by this matrix i m a zero i n so basically since this is i m this has m columns and since this is i n this has n rows and so this matrix is also of size m plus n by m plus n so this matrix here is of size m by n so it has the same rows as this and the same number of columns as this identity matrix so if I multiply these matrices i m times AB which is AB and so this times this gives me A B A and this times this gives me B this times this gives me B A okay so once again this AB is of size m by m A B A is of size m by n this B is of size n by m and this B A is of size n by n and so overall this matrix is also of size m plus n by m plus n as it should be same size as this okay similarly if I consider i m a zero i n times the matrix zero zero B B A what do I get I get AB I get B I get BA so this is the same as this so these two matrices are the same and so and and further this block matrix here i m zero this is a block upper triangular matrix in fact these two blocks are both diagonal and so this is actually an upper triangular matrix with ones on the diagonal all its eigenvalues are equal to one and so this matrix is non-singular all its eigenvalues this is actually not required for the proof but this is just a side observation since this matrix is non-singular and these these two products are coming out to be the same matrix what we have is that if I consider if I pre-multiply this by the inverse of this matrix right then I will get this matrix here so that what I mean is i m a zero i n inverse times AB zero B zero times i m a zero i n will be equal to this matrix here zero zero B B A so basically what this means is that this matrix and this matrix are similar to each other and this matrix yes I say what did you mean by block when you say block upper triangular matrix so an upper triangular matrix is like this all the elements above the main diagonal are non-zero and everything below the diagonal are zero and a block upper triangular matrix consists of blocks which which go down like this and all these all the blocks have so let me let me raise here so a matrix which you can divide into blocks so there's a block here a block here a block here and a block here and if this block is always zero you call such a matrix a block upper triangular matrix it is arbitrary you can divide it in whichever way you like but if you can divide it into blocks where everything below those blocks is zero then you call it a block upper triangular matrix sir individual blocks they could be non upper triangular right correct correct but in this case you see that the individual blocks on the diagonal are identity matrix and therefore they are actually upper triangular in fact they have ones on the diagonal so this matrix contains only ones on the diagonal and so it is non singular okay so these two matrices are similar they're both m by n sorry m plus 1 n cross m plus n and they are similar so basically if I call this matrix say c1 and this matrix c2 they are similar to each other and the eigenvalues of c1 is now this is a block lower triangular matrix so and the size of this zero here was n cross n so the eigenvalues of c1 are the eigenvalues of ab plus n zeros similarly the eigenvalues of c2 is the eigenvalues of ba plus this matrix and this matrix is of size so this matrix b is of size n by m so this matrix is of size m by m okay so it's the eigenvalues of ba plus m zeros thank you so the eigenvalues of c1 are the eigenvalues of ab plus n zeros eigenvalues of c2 are the eigenvalues of ba plus m zeros and so this means that just comparing these two the eigenvalues of ba so basically this n is greater than or equal to m so the eigen the the the eigenvalues of ba are the same as the eigen they have same eigenvalues they are similar matrices so we have that this is the eigenvalues of ab plus n minus m zeros and as a consequence the characteristic polynomial pba of t is going to be t to the n minus m times pab of t now to close out the proof if m equals n and say a is non-singular then ab equals a times ba times a inverse which means that ab is similar to ba okay now so one one small remark before i start discussing the next thing is that how are the eigenvalues of a related to the eigenvalues of a transpose and the eigenvalues of a Hermitian so eigenvalues of a transpose are the same as eigenvalues of a counting multiplicities also eigenvalues of a Hermitian complex conjugate of the eigenvalues of a counting multiplicities okay so so basically a and a transpose have the same eigenvalues a and a Hermitian have the same eigenvalues except for the complex conjugate operation so we'll just see this very quickly so if i consider determinant of ti minus a transpose okay the solutions or the zeros of this equation are the eigenvalues of a transpose and this is equal to determinant of ti minus a transpose which is equal to the transpose operation doesn't change the determinant ti minus a and so they basically ti minus a and sorry a and a transpose have the same characteristic polynomials and so they have the same polynomial same eigenvalues similarly determinant of if i take t complex conjugate i minus a Hermitian that is equal to determinant of ti minus a whole Hermitian and when i take the Hermitian every element gets the conjugate operation so the determinant of this you can think of it as this transpose and then taking the complex conjugate and determinant of this matrix transpose is the same as the determinant of this matrix and the complex conjugate simply complex conjugates every element of the matrix and so this is equal to determinant of ti minus a whole complex conjugate so this means that p a Hermitian of t complex conjugate is equal to p a of t complex conjugate and so this means that if you find zeros of this and then you take its complex conjugate you will get the zeros of this matrix and so the eigenvalues of a and the eigenvalues of a Hermitian are related through the complex conjugate operation now we know that if two matrices are similar then they'll have the same characteristic polynomial and the same eigenvalues counting multiplicities but what we've shown here is that a transpose and a have the same eigenvalues and the same characteristic polynomial counting multiplicities obviously we cannot conclude from this that a is similar to a transpose okay this is not I mean so if two matrices are similar then they have this same eigenvalues but if they if two matrices have the same eigenvalues it does not mean that they are similar so do you think a and a transpose are similar to each other in other words if I give you any matrix a will you be able to find an invertible s such that a transpose equals s inverse a s what is your guess sir a is similar to itself so if we take a transpose of that the a transpose will be similar to a transpose okay from that you cannot conclude that a is similar to a transpose sir if we take transport in the definition in the definition of similarity so but the definition of similarity is that it says that they're similar if there exists an invertible s so it goes to I mean if you take the transpose in that it it simply gives you the reflexive relation that is if it is true that a is similar to a transpose it will just say that then it means that a transpose is similar to a but it won't really give you a proof that a is similar to a transpose right so this is one of those results which is you know in matrix theory which makes this this subject very intriguing it turns out that a and a transpose are actually similar to each other you will be given whatever a you would you can find an invertible matrix such that a transpose equals s inverse a s so they are actually similar to each other but to show that we have to use this something called the Jordan canonical form which we'll cover a little later in the course and but using that form we can show that a is actually similar to a transpose that will come later


There's something about me that you probably didn't know and that is that I used to be the biggest Apple fanboy in the world like I would seriously watch every single one of their events. I Still do But I watched every single one of their events and I was always excited about it And if I had the money at you know that point in my life I would buy as many of their devices as I possibly could and For the most part I didn't have that kind of money, but I always wanted to have that kind of money I was wanting to have I always Endeavored to be able to someday afford like I had this plan when I first started podcasting to buy The 2013 Mac Pro now that's the little trash can thing. I wouldn't touch that thing with a 10-foot pole now But when that first thing first came out, I thought it was the coolest thing since sliced bread I thought it was amazing. It was the future. I wanted one like I would I would seriously I'm gonna remember I was not very old at that point or at least I was younger And I would go onto their website I would buy or I would build you know in their configurator the best Mac Pro I could possibly build and just fantasize about how I was gonna one day own that computer Like I had no real use for that kind of power at that point and even now I really don't but man Did I want that thing? But now I'm a Linux user and I no longer need the highest end Hardware or anything like that whenever I buy a new phone. It's always a used phone Whenever I buy a new piece of hardware It's usually either used or a couple generations old at least for example that monitor that sits behind me in all My videos that thing is probably 15 years old now like I don't need top-of-the-line anymore So I have definitely Transitioned away from being an Apple fanboy and an Apple apologist But I still like I said watch their events and Oftentimes gates at their hardware like man, that is really cool hardware Like it's really like one thing that Apple does really well is they do design hardware They can really design hardware, right? So what I thought I would talk about today is Not how awesome Apple is but more about how Linux could learn from Apple and Mac OS so Here are the five things that Linux and the Linux community could learn from Apple and Mac OS Let's go ahead and jump in So the first one and I think that this is very important, but also Not necessarily something that is ever going to really play a role in the Linux community And that is pretty software cells So you can argue that Mac OS is not as functional as Linux I would argue that and I would also Say that there are many things with Mac OS that just are Other garbage like there's some things there that are just not good at all but one thing that you can't deny is that their aesthetic is at least somewhat pleasing and when you boot into a Mac for the first time and you see their design language That really does transition not only from the operating system But also into the applications that Mac OS runs you really get the sense that Things are meant to work very well together on this platform and they're supposed to all look like they're on the same platform One of the things on Linux that you can't say is that there is a cohesive design language There's not like every application looks different like Mildly different even if if you have two applications that will you know do the same thing They could look completely different and one of the things that Linux and the Linux Community and really the open-source community in general has a problem with is that They're not always the best designers when it comes to apps Usually their functionality is perfectly fine And I would argue that in some cases open-source software is superior to anything you would get on Mac OS But when it comes to the actual look and feel of these applications a lot of these things are subpar when it comes to things you'd find on Mac OS and some examples of this GIMP is a good one GIMP is Okay designed. It's definitely better than it used to be like 10 years ago when it was like four different panels or something like that And it was completely unusable But now it's better, but it still doesn't really look as nice as some of the options that you get on Mac OS And I'm not even just really talking about Photoshop I'm talking about other applications that you'd find on the Mac App Store Same thing with a lot of like video editors. Kate-in-Live is a kind of a hot mess compared to like Final Cut Pro You know, it's just it doesn't look as well. Now. I understand from a usability perspective Looks really don't matter like it doesn't really matter how Kate-in-Live looks or that it's overly complicated because it works It works really well but When you are trying to draw in new users one of the things that does matter is how your software looks and Think consistency and sometimes the Way that some Linux software and opens our software looks kind of dated does play a role in How people perceive Linux like when you open up For example audacity like let's just I always show you actually audacity right now Audacity would look the same on Mac OS as it does here, but this is the premier audio recording Software on Linux we have other options for sure But this is the one that most people use and it looks like it was developed for Windows 95 You know what I mean, and it's still perfectly functional. It definitely is But it looks old and it's not the only Example of that out there a lot of Linux or open-source software It just kind of looks old So pretty software is something that Linux could learn from or at least open source could learn from the next one on the list Is that installation of software should be easy and when I say easy? I mean it should be drag and drop easy I talked about app images on the podcast this previous week and one of the things that I said was that app images had a chance to be the way of Installing software on Linux literally you drag and drop it to an applications folder and it runs You know, that's the way it works on Mac when you download a piece of software on Mac, whether it's Whatever it is like you download it from the web and it just comes up on your desktop You open up the thing you drag into a folder. It's installed. That's the way Installing software really should work at least when you're trying to download something away from a store when you're installing something from a store It's different obviously, but if you're downloading something from the web being able to drag that application from Where you downloaded it into your application folder and just having it installed? That's an amazing way of installing software and that's the way it works on Mac OS for the most part and has for years now Obviously, there are some exceptions where there's windows style wizards and stuff like that But for the most part you download a DMG or whatever. It's called you double click on that It shows you a window and it tells you what to do drag from here to here and it's installed That's awesome. And it's not hard is the thing is the one of things that's a problem on Linux is that we have 50,000 different ways of installing software. Obviously that is an over exaggeration Don't message me in the comments saying we don't really have 50,000. I understand we don't have 50,000 I was being hyperbolic. It doesn't matter We have a lot of ways of installing software and we've tried to come up with ways that are cross distro in order to install Software better snaps flat packs app images. These are all attempts by developers to make and song software easier Across distros like we've tried It hasn't always necessarily worked flat packs and snaps have probably come the closest But for the most part people still rely on their distro given package manager in order to install software Most people do and there's nothing really wrong with that but from a new user perspective That is messy because especially if you change distros as a new user quite often like if you go from Manjaro to Ubuntu or back and forth whatever those things have different package managers And you can't go into Manjaro and do sudo app install. You can't go into Ubuntu and use sudo packman dash capitalist You know, I mean they're different things and if you don't know that they're different things That's going to be a hurdle for you to get past So installing software on Linux is a mess and it could be better similar to what it is on Mac OS The next one is in a similar vein in that one thing that Mac has done really well is created a store That is really good like it has a lot of software in it Now I know developers have had a lot of problems with the Mac app store over the years And it definitely takes a lot of money from developers and you can argue about all the flaws like it definitely has flaws I'm not saying any of this stuff is perfect I'm just saying that the Mac app store is a great central place to download applications for the Mac now Obviously, there's just one Mac OS. So They don't have a problem creating one, you know app store and saying here's where you get your apps That's just the way to do it when you have 300 Linux distributions It's much harder to create a central place to download applications Because we can't first of all we can't agree on anything. We're never going to we're never gonna all sit down and say hey flat packs That's the way to go definitely not the way it's going to work, but we could somehow maybe come to an agreement where there is a Front end that kind of accesses all the different package Places like snaps and flat packs and app images like one Store that just kind of works with all of those things. Maybe this thing could also tie into The distro centric package management systems and repositories that would allow you to then kind of have a front-end that works with every distribution It would be a app store that just kind of exists on every Linux distribution that could then be used to download software It looks the same It doesn't really matter where the software comes from because most users don't care just long as they can get their software And then it just works, you know, they don't have to deal with having the GNOME Software Center on Ubuntu They don't have to have the elementary app store the PAMAC on Ubuntu, whatever or not on Ubuntu on Manjaro You know, you have 12 different app stores. They all look different. They all have different functionalities Some of them work better than others. It's a mess having one that kind of goes across all distributions works well with all the different back ends would be a great way of Having software just again very easy to install the next one on the list is that Hardware really matters one thing Apple really does well is they create fantastic hardware and Whether you like them or not, you know, especially since how they're obviously really expensive, you know They're not definitely not for everyone, but even people who can't afford them or Have no interest really in spending that much money on something they can still admire the fact that this hardware is really really good and Because they own the entire software stack and the hardware stack they allow those things to work really well together and Linux, I don't know how they would go about doing this like there are some or at least there's one good example of a hardware manufacturer that's doing something similar than that and that's systems 76 they Manufacture hardware and they've made their own distribution to go on it They work really well together and that's kind of a good thing, right? One of the things we always talk about when we talk about the proliferation of the Linux desktop is that in order for it to actually happen Hardware needs to happen people need to be able to go into Best Buy or Amazon or whatever and buy a piece of hardware Would Linux on it? That's not something that you can really do right now and until you can do that Linux won't be very popular at least in the mainstream So hardware really doesn't matter, but it's really more than that Like we have hardware vendors that make Linux hardware like some of it's really very good some of it is Pretty cheaply made because they have to source it from other companies and stuff like that So one of the things that Apple does really well is they make really premium hardware and stuff that people Aspire to own like remember my story about the Mac Pro earlier in the video people aspire to own that machine or the new Mac Pro that's looks way better people aspire to it and You can't really say that there's very much hardware out there in the Linux ecosystem That people aspire to the last thing on the list is that arm is the future And I think that out of all the ones that I put on this list. This is the One that Linux open source really truly already gets like I think that of the vast majority of Linux distros The maintainers of the Linux distros a lot of the software and hardware vendors They know that arm is going to be the future of Computing like when you buy a computer 10 years from now it's almost guaranteed to be an aren't based processor of some kind and We know that because at least at this point in time arm does a fantastic job of creating Mobile worthy processors that can run desktop class software Without sacrificing things like battery life and performance like you you can buy a mem one or M2 MacBook and run everything you want to run it while simultaneously getting battery life that extends You know into the double digits of hours something that you can't do with a Intel or AMD processor It's just not possible yet and while it's possible that Intel and AMD will get their shit together and create processors that can either mimic or Surpass the arm-based processors that Apple uses. It's possible at the moment Arm seems to be the direction where that kind of functionality is going to go like if you want high performance Without the power costs of the traditional processors arm is just way better And it seems like it's going to continue being self or the foreseeable future So I think that already like I said a lot of Linux distros They have arm versions and they've worked to make their distributions and the Linux kernel and all this stuff work on arm It works really well like things like you could buy a Raspberry Pi and run a full-fledged Linux distributions on there And as of right now, it's almost So good. You can actually use that as a daily driver. It's not quite there yet But another generation or so and who knows you could use a Raspberry Pi as your daily computer It could be possible. So we know that from a software standpoint Linux distributions are at least thinking about how they can Make their distributions and Linux in general work well on arm And I think that that is a good thing But I also think that there's a good chance that if that Development doesn't speed up a little bit that Linux could be left behind as more and more hardware transitions to arm if the functionality and Ability for Linux doesn't keep up with that speed of the hardware It might become harder for Linux to actually run on some devices now It's possible that Linux could keep up or even Surpass the other operating systems that are out there in terms of arm capability But it's also possible that they could fall behind and that is something that scares me just a little bit Like if Linux doesn't keep up with the development in order to keep arm support there Where it needs to be for the vast majority of hardware that comes out It would be A shame because as of right now if you want to run Linux on a computer you can do so Pretty much any computer that's out there as long as it runs an intel or an AMD processor You can put Linux on no problem pretty much any computer that has ever existed You could put Linux on without any issue But when it comes to arm there are problems because the development just Hasn't been there yet for that kind of sought hardware support So Linux the Linux kernel supports a huge variety of pc hardware That support for arm hardware is still really small If the pool of arm hardware Grows faster than the support the Linux kernel can give to it That means that you could go out and buy an arm computer But not be able to install Linux on it And that is a little bit scary because if everything goes arm in the future And you can't install Linux on everything like you can right now with Linux on everything that is Intel and AMD Then where does that leave Linux? You know, it's kind of out in the cold Some of that is paranoia. I will just put that right out there right now But it's just something that I worry about just a little bit if Arm continues to be the thing and Linux doesn't keep up that hardware support That is known for What are we all going to do, you know, so anyway, so those are the five things that Linux and open source can learn from mac os and apple And i'm sure there are other things and I should just put this out there I'm not saying you should go buy a mac or an apple A product of any kind in fact, I think that the apple has a lot of flaws when it comes to privacy and being a monopoly, you know They have many flaws and mac os definitely is not perfect to has many flaws. I would not use it You know, that's the thing is like despite my admiration for some of the things that mac os does I wouldn't use it. I love linux. I want linux to have Some of the things that mac os has I think we could do well with emulating some of the things that apple does But also linux is free and open source software And I wouldn't want the future of linux to be anything but free and open source So I wouldn't want them to completely adopt to apple way of doing things That would be horrible and it would make me not want to use linux anymore So I don't want anybody out there to think well Matt's an apple fanboy. He wants linux to become like the mac And I'm gonna unsubscribe from his channel now. That's not at all what I'm saying So I hope that's not the way this video came off If you have comments about this kind of thing, you can leave those in the comment section below You can follow me on twitter and tweet at me there if you want At the linux cast is the handle there if you want to follow me on mesadon or any of my other social media networks You can find those links in the video description You can support me on patreon at patreon.com slash linux cast Just like these fine people who have supported me well over the last Year and a half or so I really truly do appreciate Every one of you who have supported me through patreon and the youtube membership thing that is below The videos and stuff like that. There's a few of you who do the the youtube thing I do appreciate all you guys as well. So everybody who supports me. Thank you so much. Thanks everybody for watching I'll see you next time