Hi, everyone. Joe for jasmine'scasebreaks.com coming at you with a one box break of 2023 museum collection baseball. Random division break number three, it's from a fresh case and we're giving away a free spot. So of the six divisions, we're only selling five spots. We're gonna randomize these five names, new dice, new list, name on top, gets an extra spot after seven. One into six, seven times. One, two, three, four, five, six, and good luck. Seventh and final time after seven, it is Eric Klicks. After seven, congrats to you an extra spot going your way. Now the rest of you, don't worry, you still have the shot at that. Had a nice division. Let's get everybody's names in here. Now let's roll it and randomize names and divisions one and a two, three times each. One, two, and three, easy. All right, and one and a two, three times four, the divisions. One, two, and three. Got NL Central down to AL West. Here are the divisions. So Shane, you have the NL Central, Jim with the NL East, Eric AL Central and AL East, Stephen K, NL West and AL West. It's alphabetized by division. Trade window is open and while that trade window is open, we're gonna select the box. So it's from a fresh case as I mentioned. So let's pop this open and here's how we're gonna do it. So the left column will be one, two, three, four, five, six. The right column we're gonna number that seven, eight, nine, 10, 11, 12. We're gonna go to ran.org, we're gonna generate a number between one and 12 and that's the one we're gonna do. Good luck boxes. Three. So we'll go one, two, we'll go one, two, three, that box right there. These will save right over there. These might get mixed up at some point. We may renumber them at some point, but there you have it. All right, now let's flip back over here. I don't think there's gonna be any trades, no trades in the chat. We'll go TWC trade window closed print and RIP. Sun's at Lakers. In season tournament quarter final, Lakers up by four. Four minutes left in the first half. So here is the final printout, the list hot off the presses. Thanks everybody for making this happen. Next one box break in the store, jaskyscasebreaks.com, check it out. Ooh, nice three. Wow. There's the frame already. Good luck everybody. So that's usually one per case. Sometimes there's two, but the frame poppin' already. The hits are on the bottom here. Good luck. Start off with these guys. There's a one-soto to 150. Xander Bogart to 99. Both Padres, both for the NLS, both for Stephen K. All right, let's work all the way from right to left and we'll see what the frame is gonna be. We'll do that last. So behind this reproduction is a triple relic and autograph, Tristan Houses. Nice. Two-color triple relic, 14 out of 3.99. That's gonna go to NLEast Jim with that one. Not the NLEast, AL East, Eric. Sorry, Jim. With the Tristan Houses. Nice. All right, there he is again. And it's a Padre, one-soto. Six out of 75. Some nice digital camo there, quad relic. That's gonna go to the NLEast Stephen K. And then behind Sandy Alcantara is a Tim Anderson. Meaningful material relic, AL Central, Eric Klicks. All right, what's the frame gonna be? Behind Francisco Lindor it is. Is it gonna be upside down? Is it gonna go this way? Behind upside down Francisco Lindor, it's gonna be Mark McGuire. Nice, 10 out of 10 gold ink autograph, AL West, Stephen K. It's a good-looking card there. Get some of that dust out of there. Nice big Mac. A's edition, you got the gold ink. 10 out of 10. There you go, gang. That was random division break number three, the next one-box division break in the store right now, JasperysCaseRakes.com, check it out. Remember, we opened a fresh case too, so let's keep working through those. I'll see you next time for the next one.


So my name is Eric Evanczyk, I work on cars. I work for a company now called Faraday Future. We're making a new electric vehicle. I get to say that we're hiring, which is something I've never got to say in my life before. So if you're someone who's into cars, wants to do like firmware kind of stuff on cars, reach out after we can chat about that. The other thing that I've done is build this little open source can tool called CanTact. Basically the way that this came along is I was giving a talk on CanBus just in general at TourCon, which is a great conference that happens in San Diego every year.  Most of them are a couple hundred bucks or whatever. There's some open source ones, but no one really makes them anymore. Someone was like, oh, well, you should build one and so I did. This talk isn't really about this tool, it kind of is, but it's more about something called Socket Can. We'll talk about Socket Can, which applies to a lot of different tools, both commercial and open source, what it is, how it works, and how you can use it to develop CanBus applications for whatever you want to do with cars. So what is Socket Can? Basically, if you've ever dealt with, is anyone here like a Linux user in general? Are you mostly Windows? Okay, so we got a good amount of Linux users. OSX, anybody? Couple, okay. You guys might know what's going on a little bit, and then Windows, you have no idea what's going on, but I'm sorry. You can run a VM, you can run a VM. So what happens with this is, if you've ever used Linux network devices before, you have the network driver, which is sitting real low in the kernel, deals with the actual hardware. In this case, that's replaced with the Can controller. Then on the left, we have the Socket Can version. On the right, we have the traditional version. We'll start with the traditional way of doing it. So Can controller, you stick a driver on top of that, such as a character device driver for the SL Can devices we'll talk about. Then on top of that, you can stick a protocol interface, and then the application that you actually write goes in the very end. You can take a picture of this, or literally go to Wikipedia, which I ripped it off of. Yeah, sorry. But on the left-hand side, you have the Socket Can version. The way this works is your ethernet hardware or whatever Wi-Fi card, whatever it is, replaced with a Can controller, and then Socket Can jumps in and takes over from the network device driver level up, and it actually merges back with how you'd normally deal with Sockets and Linux at the socket layer, which means that we can write code that looks a lot like network socket code, but it's actually going to talk Can.  And you're probably familiar with something like this if you've ever dealt with Sockets ever, or devices on Linux at all. This is kind of washed out, I'm sorry, but this is me running IFconfig for a VCan device, which is a virtual Can bus device we'll talk about. And it shows up just like any other network device you'd see. It has, the one weird thing with it is the hardware address comes up as just a whole bunch of zeros for some weird reason. And it has everything you'd expect. Some of those numbers don't work, but a lot of them do. Received packets, transmitted packets, all that kind of stuff. So once you have this device and you've set it up and it's actually a network device, in C, you literally do everything you'd expect to do with Sockets. So has anyone done socket code in C before? Got a couple hands.  The difference being where normally you would specify like I want an Inet socket and I want it to be, or UDP datagram and I want these flags. This will get you a Can socket, that is a raw Can socket, which means you get direct access. There's also a mode called BCM, which is meant to deal with queuing and it's meant to take the work off of the user space application and do more of it in the kernel space. I haven't worked with it too much. It supports kind of odd, it seems, but it's getting there. So once you have that socket, you can do everything you'd expect. You can call IO control to set up, you know, in some cases bit rates, but at the very least, set the address of it. You can bind to it and then you can do reads and writes and you can set socket options to block or not block or time out, all those things. You can also do all of this from Python, but specifically Python three. For whatever reason, socket.pf can socket.socket.socra are not defined in Python two. I'm not quite sure why, but in Python three it works great. You can create a new socket and call all the same functions. It's just an interface. So this is, you know, that's how you go from Can to Sockets is you're just working with them.  Now, if you don't have any Can devices though, a lot of you will have one of these sweet things now, but it doesn't plug into your computer. So let's say you want to play around with Can on your computer and, you know, create a device that's, it's not a real device, but it'll let you send and receive messages and play around with all the tools with no hardware. So it's free. That's the biggest benefit. It's also useful for like simulating stuff and just testing out tools. You can actually do this pseudo IP link add vCan zero of type vCan. That will create you a new virtual Can device. Once you have the device, you can just do ifconfig vCan up and sure enough, you get a Can device. Again, it's not gonna send any frames out on the wire. It's just virtual, but you can use all the tools. You can send stuff around. You can write. It's quite useful for developing tools because let's say you have a client and a server. You can develop both of them to use Socket Can. Use this to test it without actually dealing with hardware and then write whatever you need to deal with the hardware later. I may have done that once or twice. So it's kinda handy. Now, if you want a real device, there's a few things you can do. One is this SL Can. So this stands for Serial Line Can. And it supports this pretty old protocol that some company came up with a while ago that basically takes Can frames and encodes them over serial data like UART or RS232. You can actually buy something that does this from, for example, Peek or GridConnect. They sell a tool that is canned to RS232 and it spits out ASCII. It's really not that efficient because, for example, the byte FF becomes the two bytes, the character F and the character F again. But it's well supported and it works out of the box. So that's why this CanTech thing ended up using this protocol rather than something more efficient. It's just, it works. The bad news is that serial is very slow. Typical bot rates are gonna get off of RS232 or UART, it's gonna be 115, 200 bits per second. Can can go up to one megabit per second that we usually see it used at 500 kbps. Can FD is another thing that I'm not gonna talk about, but there actually is starting to be Linux support for it. So yeah, that's a problem, right? We have one order of magnitude of a jump. The good news is that it turns out that the bit rate doesn't actually matter when you're dealing with a USB to serial device. That bit rate that you set is only to tell the device, okay, please talk serial at whatever rate. So in the case of the CanTech, if you tell this thing I wanna do 9600 BOD, it will ignore you and instead just continue talking as fast as it possibly can over USB. It's kind of a common misconception. People figure, oh, well USB serial devices must be limited to whatever, 115, 200, but no, they can go a lot faster. Specifically, if you're interested in it, it's a 64-byte endpoint for USB, so you can basically do really fast transfers as long as they're 64 bytes or less. So you can use this, there's a type on this slide, but you can use this command to bring up a serial line device. So anything that speaks this standard protocol will interface by running this command. So it's SL-CAN-D, which is the serial line Can daemon. Dash O tells it that when you start it up, you want to send the open command, which is just capital O and a, it actually all uses a carriage return rather than a new line, or yeah, carriage return rather than new line for whatever reason. Dash C tells it whenever you close SL-CAN-D, you want to send the close command, you give it the path to your device, dev, TTY, ACM, whatever, then the name of the device that you wanna actually create. So in this case, it would connect to something like this and create a Can zero device. Here's the typo, you would then call i-f-config, Can not v-can, zero, up, and that would bring the device up, and now you have access to it over the socket interface. Now, if you're a developer who deals with Unix sockets, that might be of interest to you, might be like, great, I can do Can now, that's cool. If you're not, you're probably thinking, well, okay, what's the point? Like, I don't write code for that anyway. And the main reason you'd wanna do this is there's a whole bunch of tools you get for free. This is a list of some of them. And we'll show them now because I don't have that many slides, I figured it would be better to actually show you this working and how it works. So if I switch to VM mode, and if it actually works, oh, that is interesting, that is not what I want at all. I have no idea what that is. This is why you test out the projector before you start your talk, just for future reference. Nope, that's me changing my screensaver. No, I took that picture, it's a good one. Thank you. Here we are, arrangement. Let's see, where's mirror? It's not gonna let me mirror. Awesome. What we're gonna do then is we're just gonna take my VM because you guys are probably bored of me playing around with display settings. Is that, there it is. Apparently it's off to the left of my screen. Hey, please don't be terrible resolution. All right, now I have to look this way. So, first thing we're gonna talk about, and I'm gonna do this all on VCAN devices, just because this is all stuff you can try at home with no hardware, which is kind of fun. First thing we'll do is, actually, let's do Tmux, let's do, it'll be equals, cool. So I have two terminals here, hopefully, it comes out legible. Projectors and VMs are always trying.  So, CAN dump VCAN zero. What this is gonna do is start dumping messages, and there actually are active messages right now flying around. We'll look at that more later, but it's gonna give you a trace of the CAN bus, it's just gonna give you every message printed out with a few different options that are quite useful. So, if you want time stamps, you can do TA for absolute time stamps. That's the number of seconds since the Unix epoch that your CAN message arrived, which is probably not the most useful number. But TD is a very useful one, it will tell you the delta time, so time in between messages. And that would be CAN dump, pretty simple, but let's keep CAN dump running. We'll kill off that stuff running in the background, cool. So it stopped, we'll start it again so you can see. You wanna send some arbitrary CAN frames, that's another useful thing to do. We're gonna use CAN send format for this is CAN send, CAN ID, number sign, and some bytes, one, one, A, A, B, B, C, C, whatever. And that, oh, no it's not, the CAN zero for the device. And that'll let us send CAN frames. So if we're connected to a real car right now, we're literally sending CAN frames on the bus. It's pretty simple if you wanna just fuzz out some frames and see what happens. Another pretty useful thing you can do is logging. So I actually took a log by using CAN dump with the dash L flag, which will log to a file. And the nice thing about this is I can now play it back. So this might be a little hard to read. What I'm doing here is using CAN player, which is a playback tool, and I'm saying send the messages that were on CAN one whenever you received them to the device CAN zero and repeat this infinitely using this log file. And so that's what lets us just generate a whole boatload of frames that are kinda useful. There's another tool if you wanna generate useless frames called CAN gen. And that will literally just spit out random data. There's a whole bunch of different flags you can set for different types of data, but the CAN zero. You can use this very useful if you wanna load up a bus to like 90% and see what happens. You can say I want message zero to be going on at really, really fast speeds that I can test to see if my diagnostic stuff that's on really high IDs still work.  So these are all like, you know, simple CAN interfacing tools. Now we'll talk about some actually pretty useful ones. The first one is CAN sniffer. And CAN sniffer is sort of unlike any other tool that I've really seen for CAN. It basically lets you be CAN zero. Basically lets you just take a look at what's going on. Is it, I've killed off all of my messages in a sec. We'll start that log up again, and we will do here, kill that. CAN sniffer, V CAN zero. This is gonna show you everything going on in the bus.  After a couple seconds, a lot of them go away, and we only have one left. And the reason being, this is the only frame where anything is changing. Everything else, it's just we're getting the same frame, the same data over and over and over again. And that's not exciting, because who cares? When you're reverse engineering CAN buses though, it's quite useful to be able to see what's changing. For example, you wanna know where the pedal position signal is on the bus. So you plug in, and you start pushing the pedal, and you wanna see that value change. This gets even better if you do use the, ah, what's the flag? Oop, nope, it's definitely not dash dash help for it. There is a flag for color. It's dash C, great. So now we can actually see what's changing, and it shows you exactly what byte is changing. It shows you it in ASCII as well, and increments like that. If you plug this into real systems, it's quite useful because all the cruft that just repeats itself over and over and over again goes away, and you actually get to see the live data. So that's CAN sniffer. It has a whole bunch of other options. This is a quick demo. Depending on what you're trying to do, CAN sniffer might have something useful. The last thing I really wanna demo, and then this is basically just about showing you tools and having you ask questions about them. The last tool I'll show off is Wireshark, which some of you have probably used for not CAN purposes. It's a pretty popular tool. You may have heard of it. Wireshark supports CAN, and most people don't know this. It supports it out of the box. It does a pretty good job of it too. If you just wanna record CAN frames, everything that I've been doing is now recorded in this Wireshark trace. I can scroll through, I can pause it, I can save a pcap file. You can write filters like CAN.id is greater than 0x100. It'll filter them. If you're working with CAN open, which is a protocol mostly used in ICS systems, not so much cars, so industrial stuff, SCADA, you can actually do CAN open dot and filter by a lot of different things that CAN open uses. I'm not sure if anyone's interested in that part of CAN, but those options are there. And it's a useful tool for looking at buses. It can deal with very large amounts of data. It's used to dealing with network packets. And yeah, it's kind of a nice thing to run the background and just be able to save a trace of what you're doing. So all this stuff, it's pretty low level tools. It's more meant for the development end, but it makes it pretty easy to then write your own software using CAN. And if you do see right now when you do network devices or any kind of socket stuff, extending that to CAN has just become, okay, I'll call it with the right flags, and that's about it. So that's pretty much my really quick tour of socket CAN. At this point, questions or tool demos that you wanna specifically see probably make the most sense because we should tailor this to what you want and not just keep talking about random tools. So is there any questions for anyone about socket CAN or devices or really anything CAN related? I'll try to answer. Oh, what is CAN? I figured people in here knew a bit about cars and CAN bus.  I hope I didn't. Has anyone gone to none of the car hacking stuff yet? Everyone's gone to something, right? Good, you scared me. I didn't realize that, okay, good. Are there any other questions about socket CAN or CAN in general? Yeah, so this device that I built, it's basically I was like, hey, I should build an open source hardware thing. So I did. This is using the STM32F0, which is remarkably similar to the microcontroller on this guy. Slightly different package. Cool thing about it is it can do USB and CAN at the same time. So this is essentially a USB connector, microcontroller, CAN transceiver, and some jumpers. Reason being, if you've ever dealt with DB9 cables, they come in two different formats. The really expensive ones come with the right pinout. The cheap ones from China come with the wrong pinout. So this lets you select between both those pinouts. I say the right pinout because it was actually set by CAN in automation like 20 years back and for some reason they don't conform to it. It also has a little termination resistor. So if you're just testing like two of these or this and one other device, you can terminate the bus. Otherwise, nothing works. So it's used to be able to jump or select that. And yeah, DB9 connector on the end. Yeah, it was just mostly just to say, hey, I wanna put together something, make it open source. github.com slash link layer has all the firmware, hardware design, everything you would need to put one of these together yourself. You can, if you want, you can print your own board and build it. contact.io, c-a-n-t-a-c-t is the actual website. I'm not allowed to get selly, so I'm just gonna stop right there. You can go learn more on that website. But yeah, the main goal was let's build an open source one and the information's out there now for anybody here to go out and build a USB to CAN tool that speaks socket can. Any other thoughts, questions, ramblings? I'll take anything really. This was meant to be kind of quick and introductory. Not aftermarket, I've heard of some OEMs, but not with this. It's a really divided world, the automotive one. OEMs, for example, work with the most expensive tools out there that cost more than everyone's badge for registration here combined times 10. Stuff like that. You were talking like five figures before, you can get even a single CAN channel plus the software, plus the support, plus, plus. The tuning guys I'm guessing are more into cheaper things and they need to get that out there, so that could be interesting. But it's a pretty closed community from what I've seen. They don't wanna talk about much. I don't know if you work in that. Yeah, okay. It would be interesting, we should talk, yeah. Because some people figure out secrets about how to make your cargo faster and they want to not tell you that because they can make money off of selling that option. And that's a business model, I guess. The automotive companies, of course, they're most interested in making your car as emissions-friendly as possible nowadays. So that's why the aftermarket guys can have some fun. We don't care about emissions now, let's just go for performance and then suddenly your car behaves very differently. Any other stuff? Yeah. Sorry, what was that? So, oh, okay. So if you wanna figure out what ECUs are talking to each other, the question was how do you figure out interactions between them? Oh, if you wanna simulate an EC, okay. So, it's hard. CAN is a totally multiplex, or sorry, multi-master bus and everything is sent to everybody. It's broadcast. So every message that's sent out could be received by every controller for all you know and you have no idea really how they act. The way you would find out is you get the DBC file, which is a CAN database from the manufacturer, which actually will say here are all of the nodes in the network, here is all the messages that every single one of them receives. The only problem is the manufacturer is not going to give that to you. Yeah, they're not gonna give it to you. They'll make it available if you care to go down that road. So yeah, they just don't want you to know or they figure they can make money off keeping that information secret and selling it. So really the best way to figure out interactions between controllers is by trial and error nowadays. It's sort of, it sounds unfortunate, but it's true. If you disconnect a controller from a CAN bus, a whole bunch of messages disappear, so you know where those were coming from at least. You can also do things like fuzzing. Fuzzing in a real car can be kind of dangerous. I have a little story. I was talking about this at another conference. There was somebody from Continental in the audience and he was like, don't tell people to fuzz CAN. I said, okay, why not? He said, well, I'm not gonna give you any details, but you can actually destroy an engine by fuzzing the CAN bus while it's running. Oh, it's like I've seen it happen. I was like, oh, that sounds really bad. So you can do fuzzing, but that gets to be somewhat problematic. You can actually potentially mess things up. In simulating, if you're doing V-CAN simulations, the easiest way to do it is you treat the V-CAN interface like a CAN bus and you just make everybody connect to it. So you can also use it for piping messages around. I've seen at least one script that took messages from a real CAN interface, moved them to V-CAN, doing some filtering and some reassignment of IDs, and then moved them back to a different CAN interface. So that way, what often happens is you buy something from an OEM, it only supports CAN ID 100 and 101, and they wanna charge you like 10 grand to change it to 102 and 104 or whatever. So you put a device in the middle and you make it do that translation for you because it's cheaper. For stuff like that, V-CAN can be pretty useful. But in terms of actually knowing who's talking to who, unfortunately, CAN is pretty good at hiding that from you. It takes a lot of other stuff available though. Yep, sure, so this is raw CAN, this is just the messages. This'll do anything except CAN FD. For those higher level protocols, 1939 OBD2, Unified Diagnostic Services, which is ISO 14229, I think, somebody? Yeah, I got it. For those, you're gonna need some higher level software. There is support for, all right, add to backup. CAN supports eight bytes per message. That's a little limiting if you're trying to send, let's say, a firmware update, eight bytes at a time. So there's a protocol on top of that called ISOTP, and I forget the ISO number. 15.765-2, I'm bad with numbers. So that is the protocol it's used to basically say, I wanna send 10 kilobytes over CAN. How do I string it all together? It'll do that. Then on top of that are the actual services for UDS. That middle part, which is called ISOTP, if you don't wanna remember that number that Rob yelled out, that is actually implemented in kernel space, but it's not included with the kernel and it's really hard to build. It's a lot of butts, I'm afraid. It would be really nice if it worked, but it doesn't. So one thing I'm working on are some new open source software tools for doing the higher level protocols, but socket CAN itself is very raw. Give it eight bytes, a data length code, and a message ID, and it will send a frame. That's about it. That's a silence. Are we good? You can find me after and ask me about anything, really. I'll be around here for a little while, but thanks a lot for listening about socket CAN. Hopefully it was of some interest and you can play around with it.


Hi, I'm Zor. Welcome to a new Zor education. I would like to spend some time and talk about an operation which we didn't really discuss yet related to matrices. Division. Well, let me start from division of the numbers. The very convenient way to introduce division of numbers is first to introduce an inverse number. So, if you have a number N, then integer number N. We basically define a completely new universe of numbers and we define a new number which we just symbolically write as 1 over N and this is a new number which by definition multiplied by N gives 1. So, this is basically the way how we can introduce the rational numbers given integer numbers. Well, we will try to approach the similar question with matrices in exactly the same way. So, first for any matrix we have to define something which we can call actually an inverse matrix. So, it's a matrix which multiplied by our matrix gives something which is equivalent of the 1 in the matrix world. So, what is the equivalent to 1 in the matrix world? Well, we were talking about identity matrix or a unit matrix sometimes it's called. Identity matrix is something which contains 1's on the main diagonal. Now, the property of this matrix is such that if it's multiplied by any other matrix the result would be exactly this particular matrix. We have already showed that in the previous lectures related to multiplication of matrix. So, in matrix notation if identity matrix is i, i, then i multiplied by any matrix is the same as the result will be the same as the original matrix. The multiplication can be on both sides, doesn't really matter. In this case, by the way, multiplication is commutative which is generally speaking not the case. So, we know what 1 actually in the matrix world is. It's an identity matrix or a unit matrix. Now, question is can we define an inverse of the matrix A and usually it's written as A to the power of minus 1. Which is also kind of equivalent to numerical symbolics. We don't really use this type of symbolics and I will tell you why later. But in any case, so this is an inverse matrix and we would like this matrix have the property if it's multiplied by the original matrix it will give the identity matrix. And it's supposed to be on both sides. So, for a matrix A the inverse matrix is the matrix which we symbolically note as A to the power of minus 1. With such a property that if multiplied by A it gives identity matrix. So, that's how we will try to introduce this division operation through multiplication. So, division by something in the numerical world is basically multiplication by inverse. So, that's how we will define inverse in the matrix world and that's how we will approach the problem of division. Okay, so, this is basically a definition of the inverse matrix. It's such a matrix noted as A to the power of minus 1. By the way, it's not really a power, it's just a symbolic representation. So, such a matrix which if multiplied by A on the left or on the right the result will be identity matrix. So, definition is fine but definition must be reasonable, valid and the definition should have certain properties. Well, the two most important properties of any definition is if we define an object the question is does it exist? I mean we can define something which maybe doesn't exist at all. Maybe there are no matrices which have this property. And the second property of the definition which is very, very important is uniqueness. I mean does it really define the matrix considering it exists? Maybe there are more than one matrix which have these properties. In which case the definition is really fuzzy. I mean yes we can define like any matrix which has this property can be called an inverse. But that's not really nice. We would like to have a unique matrix which has this property. So, these two very important aspects existence and uniqueness of whatever we define we have to really discuss right now. Okay, so first of all let me speak about the dimension of the matrices. Can matrix A which has m rows and n columns where m is not equal to n. So, it's not a square matrix. Can this matrix be invertible? Does it have an inverse matrix? Well, let's just think about it. We would like to specify this and this which means that the number of columns in the inverse matrix should be the same as number of rows here. Remember if we have two matrices which we would like to multiply one by another. Now, if this has dimension m times n, m rows and columns this should have n rows and whatever number of columns. Otherwise the multiplication is not defined. Multiplication is defined only if number of columns of the left multiplier is equal to number of rows, number of columns of the left is equal to number of rows on the right. Right? Yes. Okay, which means that inverse matrix to A must have m columns, m columns. But now this also is true. So, it should have n rows. Okay. So, we found out that to be able to multiply this and this my matrix A to the minus one, the inverse to A matrix should have dimension n by m. But now let's talk about the result. Now, the result of this operation would be if I multiply matrix of this dimension by matrix of this dimension I will get the matrix of n by m dimension. Now, on this side I'm multiplying m by n dimension which is A and n by m which is inverse to A and the result would be m by m. Now, that's not nice again. We cannot say that these two are the same even if they are both identity matrices but of different dimensions. One is n by n and another is m by m. So, my point is that if the matrix has different number of rows and columns it cannot be inverted in the story. So, only square matrices can be inverted and this is basically the reason why. Because multiplying left by right we will get one dimension of an identity and right by left we will get another which is not really a good way to define the object. So, the first thing which we have to remember is only square matrices can be inverted. It's defined basically only for the square matrices. So, square matrix has an inverse only if there exists another matrix of the same dimension, the same square dimension n by n or whatever it is which has these properties. Alright, fine. Now, next thing is before addressing the existence and uniqueness of this definition. Let me talk about division now. Now, why did we introduce inverse matrix to talk about division? Now, again as an analogy with numbers we can have three quarters and we know what it is. Right? It's basically three times one fourth or three times four to the minus one. Now, what's interesting is that one fourth times three and four to the minus one times three is exactly the same number. Because the multiplication of numbers is commutative. Now, let's talk about matrices. What if we want to divide a by b? Now, analogously to this we can say this is a times one over b or a times b to the minus one. But why did we write it this way? We could have written it this way. Right? It's completely analogous and this is b minus one times a. But the problem is these are not equal to each other in a general case because the operation of multiplication of matrices is not commutative as we know. Which means that writing this is not really a good idea. We don't do this and similarly we don't really use this neither because it has basically the same kind of a horizontal bar which separates numerator from denominator. It's not really well-defined things. What is well-defined is this or this. So, whenever we are talking about, whenever we want to talk about division, we actually should explicitly specify which division we really mean. This or this. In which case it doesn't really make any sense to talk about division altogether because it's just a multiplication. What does make sense is to talk about inverse matrix which is b to the minus one and the multiplication. So, forget about division of matrices. Obviously, somebody can talk about this. But to be precise, let's not talk about division of the matrices. We will talk about multiplication of matrices and a concept of inverse matrix. And then how we position inverse matrix relative to another one. That's our business and that's why we really prefer to forget about the division of the matrix and talk about the multiplication. And then we will specify explicitly what kind of multiplication we need. What's on the left, what's on the right. So, that actually closed the issue of division of the matrices. There is no valid kind of a point to talk about this. What does make sense is to talk about inverse matrix and multiplication of matrices. That's why you won't find actually the concept of division of the matrices discussed in any substantial number of literature or whatever. Okay, now let's talk about existence. So, we have defined our inverse matrix as this and it's defined only for square matrices. Now, does it exist? No, it does not always exist. Let's put it this way. Not for every matrix I can find an inverse. Well, similarly to the numbers, by the way, there is no inverse for zero, right? Now, what's kind of an equivalent of zero in the matrix world? Of the number zero in the matrix world? Well, for instance, the matrix which contains all zeros, right? A null matrix, if you wish. Now, if A is a null matrix, it has all elements equal to zero. Then, obviously, no matter what this A to the minus one is, the result would be the matrix which will contain only zeros. Because that's basically how the formulas of the multiplication of the matrices look like. The numbers from the A matrix participate in every member of the result of the multiplication. So, the result would be zero, which is not, obviously, which is not an identity matrix. We cannot get identity matrix if A is a null matrix. That's a trivial example number one. A little bit less trivial example is, what if the matrix A contains only one row or only one column equal to zero? Well, as a result, I mean, again, you know from the rules of multiplication of the matrices, if you have one particular row, for instance, or one particular column equal to zero, then the result will also contain one row or one zero, or one column equal to zero. Let me just give you an example. For instance, you have a matrix A, B, C, D, and you multiply it by X, Y, zero, zero. Now, what would be the result? Well, the result would be, this is two by two, this is two by two, so the result would be two by two matrix. The element one-one is the first row multiplied by first column, which is AX plus B zero.  Now, let's multiply element one-one-two, it's one-two, it's AY, B zero, and here is CY. Now, what if we do the other way around? What if we multiply X, Y, zero, zero times A, B, C, D? If we consider A, B, C, D to be an inverse of this matrix, the result should be exactly the same and it should be an identity. Now, in this case, we will have XA plus YC and here we will have zero and zero. Here, we will have XB plus YD and then we will have zero. Now, as I said, if you have the row equal to zero, then the left, multiply on the left, it will give the row equal to zero. Which cannot be an identity matrix, right? Because identity matrix has always one in every row and every column. Now, if you have the column equal to zero, then the situation would be slightly different than the multiplication on the right would give you a column equal to zero and on the left not. So, one of these cases will always be present. So, if either row is equal to zero in our matrix A or column equals to zero, one of these will definitely not be an identity. So, there is no inverse. There is no A, B, C, D matrix which can result in multiplication with result in an identity matrix. Okay. Fine. So, this is again a trivial example. So, the most trivial example is null matrix which does not have an inverse. The best trivial example is when only one row or only one column or multiple rows, whatever, not necessarily an entire matrix. And I have two other examples slightly more interesting. Let's consider that you have one row proportional to another row in the matrix. And I do have just a concrete example. Let's say 2, 4, 3, 6. Okay. If you have this matrix as A, and let's consider you have something which is a candidate for its inverse. Now, the result must be the identity matrix, right? Well, let's see what happens. 2A plus 4C, 3A plus 6C, 2B plus 4D, 2... Sorry, 3. 3B plus 6, right? That's my matrix. Now, what do we have as a result? Now, as a result, you have proportionality between these two lines. This line, if multiplied by 1.5 in this case, same as this. This line is proportional to this, and the coefficient is 1.5. So, the result also is the same proportionality between these two lines. Now, let's talk about identity matrix. Identity matrix, it has only one on the main diagonal. So, in this case, there is no proportionality. Identity matrix has completely independent rows. There is no linear dependency between them. So, you cannot multiply this by 1.5 to get this, obviously. So, my point was that if two rows are proportional to each other in the matrix A, then no matter what the inverse matrix candidate we will consider, the result would be the similar proportionality of their product. And since their product must be equal to identity, and the identity cannot have this proportionality. So, there is no inverse matrix. Now, in this case, I have actually columns proportional as well. Now, and just to demonstrate the proportionality of the columns result in exactly the same thing. But in this case, we have to have it in inverse. We have to consider A, B, C, D, proportional, multiply by proportional matrix 3, 4. Now, in this case, the result would be 2A plus 3B, 2C plus 3D, 4A plus 6B, 4C plus 6D. Now, in this case, as you see, the columns are proportional. So, this is double this, similarly to this. This column is double this column. So, this proportionality again is preserved. So, proportionality between the columns is preserved if we have multiplied this particular matrix on the right. Proportionality between the rows when you are multiplying by the left. And again, in the identity matrix, there are no columns or no rows proportional to each other. So, that's another a little bit less trivial example of non-existent inverse matrix. And the last example of situation when the matrix does not have an inverse is if you have a linear combination, it is slightly more complex than proportionality. Proportionality is just between two rows, let's say. One row is another multiplied by certain coefficient. The linear dependency is similar thing between multiple rows. Let's say you multiply one row by one number plus another number, another row by another number, and you will get the third row, something like this. So, in this case, exactly the same logic would lead us to similar linear dependency of the result of the multiplication. You can check it yourself on a simple 2 by 2 matrices. It's very simple. So, the point is that linear dependency of the rows or linear dependency of the columns in the matrix A is yet another cause for non-existent inverse matrix. Well, maybe there are no inverse matrices. Maybe there are only matrices which do not have inverse. Well, that's not the case, and we will have certain problems where I will actually derive concrete inverse matrices for certain matrices which do have this type of inverse. All right, so I wanted to make sure you understand that not every matrix has an inverse. But there are many matrices which do have and we will address that issue. And the last question which I would like to address is uniqueness. So, in case the inverse matrix exists, is it unique? I mean maybe there are two inverse matrices which result exactly the same thing, right? So, that actually can be formulated as a little theorem. I mean, it's very simple. It's called mini-theorem. So, if you have matrix A and you have two different matrices, both of them are inverse. I would like to prove that these matrices, U and V, are the same. Now, if both are inverse, then I can write this. That's the definition of the inverse matrix, right? If U is inverse, then the multiplication by A on both sides gives identity and if V is inverse, the same thing. All right, so let me use this equation first. Let me multiply by V on both sides. If these are equal, I multiply by the same matrix V and, by the way, all of these matrices have exactly the same dimension, whatever the dimension is, N by N square matrices. Okay, so multiply by V and I get this, right? Now, the multiplication of matrices, as we know, is associative. If you don't remember it, go to one of the previous lectures where I discussed this and prove it, too. Now, the associative law actually allows us to change the parenthesis, so I can put it this way. Now, V times I, since I is an identity matrix and we know that multiplication of any matrix by identity would result in the same matrix V, right? Now, V times A is I. Now, again, identity matrix multiplied by any the result in that matrix, so I had U is equal to V. And that's exactly what we have to prove. All right, that basically concludes my introduction into inverse matrix. We will spend some time in problem solving, probable lectures to basically find out what exactly are these inverse matrices and calculate them. And meanwhile, this is the end of the theoretical part, so to speak. I invite you to unizord.com where this lecture contains also the notes, goes through notes, it's very important. And basically, that's it. Good luck and until the next lecture about the problems related to inverse matrices. Thank you very much.


What's up internet? We have a discount code from Aliexpress for you guys and it's just super simple to use Number one, you need to buy more than five dollars worth, but that includes already shipping and then you get four dollars off Number two, this needs to be your first order from Aliexpress Number three, the code is good up to December 31, 2020, so you can use it. If you do use the code, we do get a small commission So, thanks very much. If you do use it. Sa mga kapalit kong Pilipino, pasensya na po, hindi ito available sa atin dito sa Pinas Unfortunately, may mga specific countries lang na pwede mag-avail nito ang promo code na ito. Di tayo kasama dun Pero kung may mga balikbayan kang mga pamilya or mga kaibigan, let's say sa UAE or sa Canada or sa UK, France, Germany, Italy Yung list of countries nandito sa video description, yun magagamit nila yun So, kung tinin mo, magagamit nila, useful naman, pa-forward naman sa kanila. Thank you. Alright, so this is my first time on Aliexpress and let's see what weird stuff we can find So, did I have anything interesting? So, it's really a grab bag. I mean, you have lots of different stuff. Like, is this tin? Alright, let's look for the interesting stuff. Alright, let's go to computer. It's hardware sugar. It's a computer store. Let's see what kind of stuff we can find. The Kingston SSD is always, you know, you can find it a lot. Alright, but that's boring. You have Wi-Fi extenders for 100 bucks. Wow. Alright, let's look for, since everybody is looking for these things. Yeah, there we go. Aliexpress knows what it's about. Okay, you can get an RTX. So, what's this? This is 3080 for $1,673. I like how it knows I'm in the Philippines or I don't know if... I don't know if this is just the image they display to everybody, but the first one in the Philippines, RTX 3080. The brand is iPason. The price is, well, it's a lot, but it is a 3080. So, actually, I think this is a good price already. They have other stuff. Dung the 3,000 series, NVIDIA 3,000 series card. Very powerful PC and Sether is the best. Very excellent communications. Karaado. The reviews are from July and May. And yet, it has an RTX 3080 card. Although, there is some explanation. We newly launched the new 3080 in stock. Don't ask me if I have 3080 or not. I really have 3080. This actually does remind me of some customers we have to deal with online where they're very annoying when they keep asking, do you have this card? Do you have this card and things like that? Okay, what else do we got? Is that the only art 3,000 series card? Aipason also has a 3070? At least here, we have a legit brand. We have ASUS Tough. ASUS with their tough line for 900 bucks, 3070. Only 10 left. So, they are indicating that it is in stock. When I'm filming this, the new AMD Ryzen have just come out, the 5,000 series. So, let us see what they have. Shit, I think it's Ryzen 7. Okay, let's get the latest and the greatest. Let's get the R95900X. I don't know, what else do I want to try? Actually, I have a solar panel at home and our inverter, the manufacturer of our inverter just went out of business. So now, I'm a bit concerned like if I need to replace the inverter, what's going to happen? So, we Google solar inverter. Oh, you know what, better. There are options. So basically, this is for storing. You have a solar setup at home and you generate excess power instead of selling it back to your grid, your local distributor, you can store it. And so, that's what the Tesla Powerwall does and this guy as well for $2,700. So, I have no idea if this is a good one or a bad one even based on price. It's Sophie's Game Shop. So, Sophie's Game Shop sells all the old school stuff. But they have a lot of foreign ones. These must be like knockoffs. I don't think they made these actual five-in-ones officially. So, there are still people selling for the Sega Genesis. Oh, and they have for the SNES. Sorry, this is for the Sega Mega Drive. Damn. Wow, is this for the Famicom? This is for the family computer. Eight-bit could be. Who is still buying these things? Oh, this is for Nintendo. This is for the NES. And here we have the SNES. Secret of Mana 2. Wow, for $8.45. Man, who is still buying these things? Game card with manual and retail box. Oh, so it's a complete experience. Are people buying this to play or to collect? Divine ceiling with box and manual. What game is divine ceiling? I don't even know what language this is. Is this Thai? Is this script Thai? I don't even know what game this is. And I think we got punted. Oh, no, it's still Sophie's Game Shop. Okay. But not in English anymore. Actually, I'm a big battle star. So, battle star Galactic of Lego. I'm a big BSG fan. You can see where this is going. Oh, this is a scene from Rogue One, I think. So, definitely, though, not an official Lego set. Yeah, this is the one where they're hovering over the city. Looks pretty good, actually, but this is not an official Lego set. I wonder how big this is. Oh, they do have the Superstar Destroyer. Secutor class. Oh, I want to click, but it won't let me click. I do have a very nice Tantip4 from the latest UCS. So, this isn't Lego. It's 21 or whatever this is. So, this is not licensed by LucasFilms. Oh, they even have a Nebulon B frigate. This one you can click on. Oh, this one looks pretty good, actually. So, they have the Falcon Curved. It's sort of like in mid-term. Oh, they have a Tridarian Shuttle. It doesn't look bad. What did we search for? Oh, yeah, battle star Galactica. Unfortunately, they do not have BSG. It's weird now how it's from right to left all of a sudden. Going on AliExpress. Nice, they have a Viper. What is this? A model that you assemble. Oh, they have a Cylon Raider. They have a BS. I'm not sure it looks like a model. I'm not sure what this one is. Okay, now we've gone down the rabbit hole. They got a Rebel Steeder. You got an X-Wing. You got the cockpit of the Falcon. This looks like the Reliant from Wrath of Khan. The original Enterprise. The movie version you'll notice in the cells. Aren't the circular ones like in the TOS. And this is Voyager, I think. It does look like Voyager. Can't even tell, like, are these diecasts? Are they plastic? This is a really interesting Viper. It even says police on the side, 911. Definitely not an official issue Viper. Do your own research, obviously, before buying. Happy shopping.


Youth and the power of change. In recent times, we have seen an uprising of young Nigerians and Africans in a never-before-experienced opera occasioned by the protracted seeming inability of governments to provide an enabling environment for young people to thrive. As a development consultant, every day I engage scores of young people in discussions hinged on their personal ambitions, career projections and general polls about life and living in Nigeria. Needless to say, 10 out of 10 young people live in abject despondency concerning their ambitions and dreams in Nigeria. In my work engagements too, I have had reason to interact with the top echelon of society, the so-called big men and women. The disparity in living circumstances between these two groups is not only glaringly alarming. The dissonant gaps that exist between these demographic divides seems to have no bridging in sight. With an arguably eroded middle class, Nigeria presents at best a morbidly unwell social construct which, if not urgently checked, will result in, I reserve my comments. I do not necessarily want to delve into the myriad mental health issues that these feelings of utter hopelessness produce, but my focus today lies in the question how can young people governize their power and collective goodwill toward engaging the socio-economic, political and structural systems of Nigeria as a whole. Governizing saying in order to produce an El Dorado of sorts, or at the very least, a land they can be proud to call their own. A land that gives them hope for today and assurance for the future. A place where dreams are not daily met with the possibility of death. A country where the aspirations of young people are not too easily crushed by the seeming indifference of successive governments to the plight of their greatest strengths, the youth. Much as we may want to move away quickly from the horrors that tell the end-sales protests, this phenomenal expression of the strength, unity and glory of youth, in my opinion, should be properly harnessed and channeled to outputs and outcomes that not only provide a pedestal for positive youth engagement, but ultimately change systems, improved governance and consequently improved life outcomes for the people. Sadly, it seems our youth find greater satisfaction with simple campaigns, some of which are violent, aggressive exchange and a never-ending cycle of mob action. While these are somewhat applied and found to be commonplace as expressions of quest for change globally, what next becomes the question after all of the upheaval? How do we channel the voice of youth unrest into outright, tangible, productive and sustainable change in Nigeria, Africa and the world at large? Quite an interesting read. And Mr Amy, what do you think about this conversation? Especially as a Nigerian who is based in the UK, what's your opinion or perspective on this issue? No, it's a good point. I'd like the fact that he briefly touched on end-sales without going into detail. But we saw what can be achieved when people come together for a plan. We saw unity, we saw the use of social media and technology, we saw large sections of people from a certain age demographic coming together for a common purpose with the demonstrations and protests that went on. But to your question, how can it be challenged? You can only, I think to get to the future you have to understand the past first and foremost and then align and change the present to get to the future. If you try, you can't do it with willpower alone, but we know that the youth have the ideas, they have the energy, they have the creativity, they have the innovation, they have the imagination and they have hope. What they don't have is experience. And I feel in a country like Nigeria, if you rush that change it might not end too well like one of the other advocates said it has to be something that you have to have a plan, a long-term vision with not so much emotion, a little bit of emotion because you are aggrieved about certain things not working properly, but you have to have a plan in terms of, okay, how do you want to represent yourself? Do you have a 10-year plan to say, okay, like the other advocate said, let's start from the bottom up and the top-down approach. Do we want to take some certain seats in some certain elections because we want to have political power and then grow that over a period of maybe two or three election cycles? Because if you just channel all your anger to the streets you don't want a situation where it ends in violence whether it's state-sponsored or otherwise. I think in the last few years we have seen the youth show their own concerns and their appetite to certain actions within the state but I think that has to be channeled. Youth advocate groups around the country are being formed, they have been formed and perhaps they want to go back and then learn the lessons of the past and look for a new way forward. I think in my view, what is most pertinent is after looking at the kind of directions and things that have happened in Nigeria, especially during the ensars, the ensars situation is something most people do not know. Yeah, you got a lot of people in Lagos in different states on the streets but do you know that that number is enough to recall this entire state house of assembly in Lagos and in all those other states? So I believe political literacy is key to moving forward. It's hard to explain to Nigerians when you tell them okay you're not politically literate enough but imagine if they took out, by recalling that's what I mean by the takeout, took out the entire state house of assembly you know how to clarify that. So if they took out the entire state house of assembly you can take out a governor or you can impeach a governor for inaction and that will send a message to the center they will never forget. We need to understand the constitution, how our country works and what exactly could work. So looking at the Aram Spring and Co. Yes, there's the front which looks like the agitation streets but there's also the strategic at the back end and I think that was missing. Okay exactly, I think I agree with you especially that the fact that the problem when it comes to youth participation is the fact that we're missing out on the strategic part. Now this is what happened during the ENSA campaign. A vast majority of young people were on the streets but the vast majority of people in the corridors of power were older people, right? Because the truth is for the interests of the youth to be represented, let's come to the reality the youth must be there to represent their interests. So the solution is simple young people have to start getting involved. You talk to an average young person in Nigeria he or she feels governance is not their business politics is not their business he or she has visions of becoming CEOs of companies becoming things but when it comes to politics you discover that young persons walk away from politics those people there are like we said earlier occupying political position and they will represent their own interests until they are no longer there so I think it's an organic process, right? Young people need to start getting involved in politics from the grassroots because it will always get to power is never given, it has to be taken. And I believe that's where he mentioned about political literacy I think that's the first step when people understand the correct process how to go about things during the ENSA's advocacy I was constantly speaking on the need to engage strategy, it's like in development you have programs and you have a project now the project is what gives longevity and sustainability to the programs that you do so your programs are like activities that you carry out but that alone cannot stand and bring structural change like we deserve and like you've mentioned which is something I realized during the ENSA's protest the refusal of the young people to come to the negotiation table the truth is except you're going to have a cool guitar even if it's the devil that is sitting on that table you have to engage the powers that be and it has to be systemic, it has to be strategic and it has to be with the goal of sustainable change and it was difficult during the ENSA's campaign because we are now dependent on Twitter influencers to engage the government you know what I find most odd about the whole matter I remember a comment saying during the ENSA's and when I saw it I was really hurt and it meant what the old people cannot see we use drone and everybody joked about it and I was like this is an IT generation, you know that a drone can only go where the mind of the person controlling it knows so it doesn't change and actually this statement came from someone who is serving in government with older so he was even more keen the fact that they thought in that process let's understand the people in power right now and I heard this when I was in South South and I was with some politicians and they said something to me we took over power from our fathers who didn't go to university and who lived in a hamlet I say we were schooled in America, ATC do you think you want to take power from us with university degrees you are going to come without a plan? Oh well, time is never a friend on this programme however the Advocacy continues on our social media platforms on Facebook that's Plus TV Africa with the hashtag the AdvocateNG or on Twitter and Instagram at Plus TV Africa with the same hashtag the AdvocateNG to catch up with previous broadcasts you may log on to www.plustvafrica.com forward slash the AdvocateNG don't forget to subscribe to our YouTube channel Plus TV Africa till next week same time on this station remember the important conversations are among the necessary tools for a Sena society bye for now