Hi everyone, Sean with jaspyscasebreaks.com here doing 2021 Break King Stars and Legends hobby three box case break random team number three, where all cards ship high risk, high reward, 18 spots. Everyone gets a random letter for the list below. Go by the player's first letter of his or her last name that appears on the card. So if the card is Charles Barkley or to go to the B spot for Barkley, if it says Karima Abdul-Jabbar, it'll go to the A spot for Abdul-Jabbar. If it happens to be a one name person like Ichiro or Pele, it would go to either the I or the P. If it's Ichiro Suzuki, it'll go to the S for the last name. There is our list of letters from A through W down to the combo spot of Y, V, I, and N as well. And here is our list of customers from Wesley Thomas with last spot, Mojo back up to Monty Stibick. And there's that list of letters again. Dice will randomize both lists and pair them up a one and a two, three times. Third and final time from Wesley Thomas down to Gail Abloh, three times in the randomizer, three times in the dice. Now, three times on the letters, third and final time from T down to K, three times in the randomizer, three times in the dice. So Wesley Thomas with T, Monty Stibick with D, Jose Rodriguez with J, Gerald Hurtado with P, John Gotti with R, Chad Meyer with F, Gerald Hurtado with H, Gail Abloh with B, Jonathan Liang with C, Anthony Goodwight with A, Cory Barrow with M, Kurt Verne with W, Oliver Sorri with S, Ryan Redmond with WV, sorry, Y-V-I-N combo. Rosario Carucci with G, Wesley Thomas with E, Jonathan Liang with L, and Gail Abloh with K. So quick trade window, no checklist on products like this so it is a little bit harder to gauge trades. But if anybody has a letter that they're looking for, specifically here's your shot. Give it about 15, 20 seconds. If there's no talk, then we'll go ahead and close up the trade window pretty quickly. Okay, no talks of trades. So going once, going twice, going three times. Trade window plus, so it's print and rip. Willie Stargel, Ichiro Suzuki like we just talked about. This is our final case, Mr. Sherbert, yeah. So three boxes, three cards per box. First up, we've got Christian Polisic, 2019 Finest, Champions League, PSA nine. Polisic obviously goes to P, here's our final list. P, Gerald Hurtado, nice start there. Johnny United's 1972 tops, PSA five. You is not on the list. So we'll actually have to do this as a randomizer separately. So everybody will be in on that. We'll use the original list of customers' names. And final hit, Jason Tatum, Prism Rookie, PSA nine. Tatum, Wesley Thomas, last spot mojo. That's 60 points the other night. We're going, Polar Bear, Pete Alonzo from 2019 tops throwback Thursday, PSA 10. A, for Alonzo, Anthony Good Wyatt. That's a cool looking card. We've got Shaquille O'Neal, 1992 stadium club. Rookie, PSA nine. O'Neal, O is also not on this randomizer. So nobody has the O spot. So that will actually be another randomizer at the end. So what we'll do is, number one on the randomizer gets to Johnny United's number two. We'll get the Shaquille O'Neal. Troy Aikman, 1989 tops traded secondary auto authenticated auto grade a 10 for A and Anthony Good Wyatt again. Very nice, Troy Aikman there. We got Anthony, box number three. We've got Warwick Dunn, 1997 Ultra Rookie, PSA nine. D, Monte Stivic, good guy Warwick Dunn. Built many, many houses for the underprivileged in his original home state where he grew up. Kyrie Irving, 2019 Chronicles prism update, PSA 10. So this is actually his first prism Brooklyn Nets card. Kyrie Irving, that's part of the combo spot, Ryan Redmond. That's true. Yeah, that's right. His group was responsible for DeSean Watson's house that he grew up in as a kid. And our final hit of the break, Fernando Tattis Jr. tops Chrome rookie refractor, PSA 10. That's pretty nice. Tattis, Wesley Thomas with the Tattis. Last spot mojo. There you go, Wesley, congrats, man. Now, let's do this randomizer. Like I said, one on top ends up with the Johnny United is 1972, PSA five. And number two gets the 1992 Shaquille O'Neal stadium club, PSA nine. Let's pop back over here. Had that open just in case we hit a sale sheet hit. So let me copy the customer list over. Actually, we'll use the letters. Since it is a random letter break. New dice roll. And the letters on top after a four and a four eight times. Number one gets the United's two, gets the O'Neal. Eighth and final time. M is gonna get the United's and C is gonna get the Shaquille O'Neal. M is going to Cory Barrow. C is going to Jonathan Meang. There you go, guys. Cory, you're gonna get that Johnny United's. Jonathan, you're gonna get that Shaquille O'Neal. You guys, congratulations to both of you. And thanks for all for being a part of that. That was 20 21 break King stars and legends, hobby three box case break random team. Number three from Jasper's case breaks.com. I'm Sean Jasper's case breaks.com. Thanks for hanging out. We'll see you next time.


Hi guys, this is Jason here from the Nathaniel School of Music and in this lesson, let's explore the world of triplets and also discover a few grooves which are not triplets, sometimes mistaken for them but also sound really groovy and very awesome in their own way. So let's get started. I'm going to first talk about two very important rhythms which you need to know, one which is not a triplet and the other which is a triplet. So let me just play you two rhythms and then we'll try and figure this out together. Here's the first rhythm and now let's do the second rhythm, back to the first one. Second, first, second. So if you'll observe, both of the rhythms sounded very similar but yet very different in terms of their groove and what they make you do with your body, you know, you should ask dancers that. I'm sure they'll be able to answer the question better than me. So let's decode all of this together and understand exactly what's going on with the mats and before we get started, do subscribe to our YouTube channel if you haven't already. Turn on that bell icon for notifications and now let's begin. So the first rhythm which I'm going to show you or which I played is what we call as the Thresio. The Thresio rhythm is nothing but you divide the beat into four. You count semi quavers or sixteenth notes. You do not count triplets but then there's a rather irregular kind of a pattern which we can also feel as three plus three plus two subdivisions. So if I have to count it out for you guys slowly, one e and a two e and a three and a four e and a. This is how you maintain a sixteenth note groove and a four e and a. Let's say that together and a three and a go.  And as you will see by the notation, you will find a hit point at the one. You will find the hit point at the a of the one, one e and a and then at the end of the two.  So a triplet is something you can't get away with especially in places like the east or especially a place where I come from, India, where you hear triplets in almost all the music, the folk music, the film music and the indie music, you hear it pretty much everywhere.  So a common way in which people count triplets is usually to divide the beat into three equal parts and perhaps play all the three equal parts as follows, one and a two and a three and a. Sounds quite cool but doesn't give you that vibe of a triplet which you really hear in music, songs like the bridge of Bohemian Rhapsody really gets you to feel that. And so on and so forth. A good way to feel a triplet is you divide the beat into three equal units that's one and a two and a. But then instead of playing all the triplets, all the available triplets which constitutes an eighth note triplet vibe, what you will do is you will skip one.   Right, this is what we call as a triplet feel or a lot of people also use the term hemiola or a three is to two kind of rhythm where you're feeling three beats against otherwise perceived two beats. Let's focus on the difference now again between the thresio and the triplet feel or the hemiola. The thresio again you're dividing into four equal units that'll be one and a two and a three and a very dancy, very salsa, you'll also hear songs like shape of you following this exact rhythm. Another way you can count thresio in a very crude way could be one two three, one two three one two three one two three one two three one two three one two but that doesn't make it triplets. Triplets is equal three, equal three divisions. So if you have to now compare the thresio, one and a two and a three with the hemiola or the triplet feel first off you need to be thinking one and a two and a three and a four and a so you go one and a two and a three and a four and a one and a two and a three and a one triplet two triplet three triplet four triplet one and a two and a three and a four and and this actually is also known as a quarter note triplet. So if you are notating it you'll have three quarter notes in the space of a minimum or in the space of two beats okay. So let me now just for a better illustration try to slow this down and explore an eighth note thresio and also a slower even slower version of a triplet and those also sound quite groovy okay. Let's try and explore that and eighth note thresio is where you do one and two and you do the end of the two one and two and three and four and one where you're counting eighth notes where you divide the beat by two one and two and three and four and one and two and three and four one and two and three and a little different feel because you're not imagining those ease and the urge of the sixteen which gives you a very dancy vibe. So one and two and three and four and one and two and three and four one and two quite groovy and we can also slow down the triplets as well. So the same procedure you still divide the beat by three units one and a two and a three and a four and one and a two and a but now you don't play one and a two and a three and a four and you don't do a six hits in a bar of four rather you want to do three hits in a bar of fours that'll sound like one and a two and a three and a four and one and a one and a two and a three and a four and one and a two and a three so if one trip, lit, one, trip, lit, one and two and a three and a four and a two. This is also what we call as a half note triplet. What we saw earlier, one and a two and a three and a four and a one and a two and a three. This is what we call as a quarter note triplet. The minimum triplet or the half note triplet, one and a two, 1 and 2 and a 3 and a 4, 1 and 2 and a 3 and a 4, 1 and 2 and a 3 and a 4, and if you are observing the left hand of my bongo is doing the pulse while the right hand is demonstrating all of what we are trying to explain in this lesson, that's the triplets, all the thresio and so on. Let me now move over towards the piano. So I am going to show you the thresio which is the 16th note thresio.  Observe that my left hand is doing the pulse, maybe an F minor chord, right hand is doing the thresio, 1 and a 2 and a 3 and a 4 and a 1 and a 2 and a 3 and a 4, or maybe the left hand could do the thresio and the right hand could do something else. You could just use the thresio as a bass and then the triplet feel or the hemiola as we note. So in this instance my left hand is doing the triplet, 1 and a 2 and a 3 and a 4 and a 1 and a 2 and a 3 and the right hand, 3, 4, 1, 2, 3, 4, 1, 2. Now on some wind instruments or maybe a guitar, you may not have that hand freedom. What do you do there? You have to take a call as to what role you want to play. Do you want to do the hemiola or the triplet or do you want to just hold the strong pulse? But when you are playing in a band, where the band is sort of doing the triplet and you are not, you will still have to feel their triplet otherwise you will not stay in time. So it's very essential even if you don't do both the tasks together, the pulse as well as the triplet, you need to feel it with your band. So there are some other kinds of rhythms which we think are triplets but are possibly not triplets or definitely not triplets. Let me show you one very common one.  So this particular song seems to start with a lot of three accents. You go one, two, three, one, two, three, one, two, three, one, two, three, four. But you see the problem at the end, it doesn't stay three, doesn't it? It's three, three, three, three and then a four at the end or else a two plus another two at the end. Let me count it for you. One, two, three, one, two, three, one, two, three, four. One, two, three, one, two, three, one, two, three, one, two, three, four. One, two, three, one, two, three, one, two, three, one, two, three, four. So what is that? What is that time feel or that time signature? Well, it's neither a time feel nor a time signature. It's just an accented pattern. It's still a four by four song but I could look at it perhaps as a succession of eighth notes or a succession of sixteenth notes. If you look at it as a succession of sixteenth notes, it'll be three, three, three, three, two plus two or the same thing with an eighth note sequence. It's just that with eight notes, it'll go over two bars with sixteenth notes. It's going to go over one bar. Okay. Has a very steady pulse in my left hand if observe three fourths, actually a four by four and my right hand's doing sixteenths, one E and a two E and a. Another thing which sometimes we confuse as triplets are dotted notes. So very specifically dotted quavers or dotted eighth notes as we call them. So a dotted sequence or dotted rhythm sequence is more like a pulse. You feel that against the other pulse. So if I just demonstrate it on the bongo, you'll have something like this will be the pulse and a dotted note is going to be one E and a two E and a three E and a four E and a one E and a two E and a three E and a four E and a one E and you see what's happening. There's no real resolution as such. It's taking a long, long time to resolve. Actually it takes about three bars to resolve. Sometimes it feels like a three, three time signature and then a four polyrhythm over that it depends on how you think about it. So very important that you have an idea of all these three things as you pursue your music learning. First off, when you hear a song, pulse, very, very important. Feel the pulse, whatever it is, the pulse and also the time signature. Then figure out the division system. Is the artist dividing by two, by three or by four? You have to figure that out. And then you have to see within the division system is it exactly divided by something by three or in today, in this lesson, we've looked at triplets. So divide by three or is it like an irregular division? If it's an irregular division, it's going to be something like an accent, like what we saw as the Thresio, you know, one E and a two E and a three E, which is also very, very cool, by the way, right? You use all the rhythms which I've talked about in like tons of songs, right? Guys, I hope you found the lesson useful. Again, this is Jason here from Nathaniel School of Music. All of these notes are downloadable. You could click the link in the description. Also, check out some of our other videos. And if you have any questions or if you have any further lessons you'd like us to teach you, please leave them in the comments. Subscribe if you haven't already. Turn on the bell icon if you haven't already for notifications. And please share the video and the channel with all of your musician friends. And let's move forward as a musical family together. Cheers.


Right guys, how we doing? I just got back from the track. I just did my first Bronco in about two and a half years and Actually thinking back thinking back when I did do a Bronco test on this channel. I Believe that it wasn't and it wasn't a full Bronco I didn't have the markers to actually put the 20 meter 40 meter and 60 meter marker out I kind of had to guess and what that led me to do is to think that I was a lot fitter than what I actually Was and I thought that I got a four-minute 45 second Bronco And in fact I didn't looking back now. I there's no way in hell that that was the case today Today I've gone out there, and I've done another Bronco Just for shits and giggles really just to give me just to you know Give me a measurable as far as my fitness is concerned and and allow me to then work on that into the future And so I'm happy to say that I was able to mark out 20 meters They're in back 40 meters. They're in back 60 meters. They're in back in total. It is a 1.2 kilometer run and It's a shuttle run and it's five laps of 20 out and back 40 out and back and 60 out and back five times and Today I can safely say I did do it properly. I did do it To standard and I got five minutes 31 and that is through Nothing other than sheer willpower I wasn't running nearly as as fast as what I probably could although by the end of it. I was pretty gassed I'm gonna say that five thirty one is not the worst, but it's certainly not the best and I'm and I'm also gonna say that I Believe that with a bit of work but a conditioning I could probably get that down to five minutes and that's gonna be the goal So today's video is just a bit of fun. I wanted to bring some some fitness content back to the channel And look if anyone else out there wants to do the Bronco, please Head down into the comment section below and let me know how you did That'd be fantastic We need a bit more engagement on this channel and in fact I need to start reading your comments a bit more too But that anxiety will get you that anxiety will get you I tell you either way Enjoy the Bronco Watch the start watch the end watch the whole thing if that floats your boat It's just a bit of fun, and I'll see you in the next one


Okay, okay. Oh, I guess I'm using this mic. Hello, hello, hello, good morning. Good morning, happy Friday. First I wanna say thank you to everyone. Thank you to the organizers. Thank you, all of you for being here today, even though I know it is the morning of the second day, which makes it a lot tougher to get here. So thank you for being here. It is a great honor to be here. I think this is my fourth year here, I think, and I love coming every time. So thank you. Today I'm gonna talk about taking out the trash. This is the title of my talk. First I'm gonna introduce myself a little bit. My name is Aaron Patterson. I'm also known as Tender Love. If you don't recognize me, this is what I look like on the internet. So my avatar looks a little bit different than me, but that really is me. So I work for a company called Github. You may have heard of them. I'm not sure. I've been working for the company for about three months now, and it is the first legit company I've ever worked for. So like I said, I've been working for the company for about three months, and it was really weird. I had to go down to, I live in Seattle. I had to go to San Francisco for a week to do training or whatever. And it turns out that at the company, everybody refers to each other by their Github nicknames. And like in person. And this has never happened to me before. All these people were calling me Tender Love, and I just thought it was really awkward.  That's fine. That's fine too. I'm happy with my real name. So I should have called this, I should have called this Cat's Puns and Friday Hugs, because it is Friday and I love puns and cats.  This is one of my cats. This is Choo Choo.  So it always sticks out. This is a more famous one. This is Gorbachev Puff Puff Thunder Horse. My wife likes him better than the other cat. This is, he's trying to hide in this photo here. He thinks he is hiding. He is not. This is Choo Choo again. I really like her. She likes to sit on my desk while I'm programming and she always makes this face, which is like the same face that I make when I'm programming. I'm actually like. Sorry. Anyway, so I also love cats and code, just like our MC. So I wanna go over a few things that I've learned so far at the conference. So first off, I learned about some new Ruby features. We were taught, like Matt was talking about typing in Ruby and we learned about gradual typing and I want to, so I wanna demonstrate it here today. I have a live demo for all of you. So I'm gonna demonstrate gradual typing, okay? You ready? Yes, I did it on stage. And now soft typing, soft typing. Wait, this is a mechanical keyboard so if you want to talk about mechanical keyboards, you should come talk to me later. Okay, also I learned that we don't care. What? Dynamic typing. Dynamic typing, yes. Dynamic typing, this is very dynamic. I was also gonna do static typing where I don't move my hand, the keyboard. Anyway, so we don't care about small things which is why in Ruby 2.5 we're gonna remove the down case method. So no more small things. Also I thought it was, I was watching the presentation. I thought it was really cool that we're gonna have up case and down case and they're gonna support UTF-8 characters so we have up case and down case. But I was thinking about this and I'm like, well we've got up and down but we don't have widen and narrow end. That doesn't, we're missing those so I put together an implementation of that so you can call widen and narrow end. So look forward to this in Ruby 2.5. If you wanna get this functionality today go ahead to my GitHub repository. You can get this jam and have those. I also learned that there are no durians allowed at this conference but that is too bad because I love durians so I will eat them anyway. And... Sorry, I'm trying to work in a durian pun somehow. I appreciate all of you for enduring my puns. We also learned about teaching people to fish. I'm going to teach you all how to fish. Go ahead and look in your email today. All of you, you have an email from me. Just enter your bank account information and I will help you out. So also I learned from today, at this conference I learned from Terrence that learning a new language can keep me from getting rusty so that was an important thing I learned from his talk today. All right, so let's move on to the real topic of conversation. I'm gonna talk about GC today. I'm gonna talk about GC specifically. I'm gonna talk about Godfrey Chan. So I asked him, you know, what is your favorite memory and he said that it has been collected. His favorite food is pizza and I asked him on the bus this morning what is your favorite color and he said that it is ruby. Actually I said it was orange but I fixed that for him. Okay, no, no, no, no.  So, you know, get ready to have a nap this morning. It's okay, you can sleep in. So we're gonna talk about, I'm gonna talk about the GC and MRI. I'm gonna talk about GC algorithms but I'm gonna talk about them specifically with regard to the algorithms that we use in MRIs so I'm gonna talk about some GC algorithms but I'm gonna focus heavily on the algorithms we use in MRIs GC but I think I'm also gonna talk about two sides of the garbage collector. I think it's interesting when you see people give talks about the garbage collector they typically talk about collecting memory but they don't really talk so much about allocating memory so I'm actually gonna cover both sides of that. The GC is responsible not only for collecting memory but also for allocating it so we're gonna cover that. So we'll look at collection algorithms, how Ruby actually reclaims memory and then we're also gonna look at allocation algorithms, how we actually create objects in Ruby and I'm also gonna touch a little bit, if we have time I'm gonna touch a little bit on the introspection API like the GC introspection API and MRI so you can actually get statistics about objects in your system. So I'm gonna talk first about the collection algorithms in MRIs GC so let's describe a little bit what type of collector MRI has. The type of collector, we can describe it as a mark and sweep collector, it's generational and it is also incremental so we can use these three adjectives to describe the garbage collector. So we're gonna cover each of those a little bit more in depth but first I wanna step back a little bit and talk about what exactly is a GC so we know that it's a thing that frees up memory for us but at a high level what does that really mean? If you think about the objects that are in your system so if you look at the objects when you're creating objects in Ruby you'll notice that they form sort of a tree thing here so for example if you look at this Ruby code on the left you'll notice that it kind of forms a tree where we start at the root and the root references an array which is that A variable and then that array references a hash and the hash references a key and a value pair so we can think of it as kind of a tree data structure. So when you're creating these objects in Ruby you're creating kind of a tree data structure and let's say we change this code a little bit and we assigned a nil into A and we actually cut that line up there with the root now the root is no longer holding a reference to that array and hash, et cetera so these objects are going to get collected. So essentially what our garbage collector is doing is saying okay we're gonna find everything in this tree that isn't referenced from the root anymore and we're going to free that memory up. So we can think of all of our objects as a tree and we can think of the GC as something as trying to find things that are not available in that tree anymore. So a few terms that we can learn from this are we have what's called a root set which is that very top root thing we have garbage objects those are ones that are no longer reachable from the root and then we have live data which is all the objects that you can actually reach from the root in that tree. So our GC's entire job, the entire job of the GC is to find those unlinked nodes and then free those up. So when we talk about GC algorithms all we're really doing is talking about how do we find those unlinked nodes, right? How do we get those? What is an algorithm for finding those and releasing those nodes? So the first thing we're gonna talk about is mark and sweep. This is a very simple GC algorithm and it has two distinct phases, mark and sweep which is why it's called mark and sweep garbage collector. So if we look at this let's pretend we have an object graph that looks like this. What happens is we go through a mark phase and the mark phase goes through, walks every one of these arrows and actually marks that object as something that we care about. So it starts at the root and follows each of those arrows through the tree. So you'll see that it'll follow through A and it'll follow through all these arrows until it marks all the objects. And then we go through a sweep phase and what happens in the sweep phase is any objects that were not marked we actually just free up those objects, they go away and we're left with the actual live objects. And at the end of the sweep phase we go back through all those objects and unmark them all. So now we're back where we started and we can continue on with the program. So right now the mark flag has been cleared. So the mark and sweep algorithm is very easy. It's a simple algorithm but we have some problems with it. It's a little bit too slow. We have to actually walk every one of those arrows every single time, look at every object, mark whether or not it's alive and then sweep through the whole thing. And another problem is that we have to actually stop the world when we do this collection. You may have noticed in older versions of Ruby if you're, especially if you're running a long process you'll notice like it'll just stop for a second and then do, you're like, oh it's just pausing. Maybe my iTunes is playing too much or something. No, it's not your iTunes, it's fine.  So the other problem is that we have to visit objects every single time. We have to visit every one of the objects in the heap and mark all of those every single time and this is not very fun. So we have to walk every object every time.  So typically objects, you're gonna allocate them and then they'll just go away very quickly. So the idea is that if we divide objects up into old and new objects, so if we have old objects and new objects, then maybe let's only look at the young objects, only look at the new objects. So the way this generational collector works is say we have a object graph that looks something like this. We do the same mark and sweep phase where we say, okay, well, we're gonna mark here. We mark B and D and then we sweep A and C. So those go away, but once that happens, then we take B and D and we move them into the new generation. So they go into the first generation, right? Now let's say the program continues on and we allocate some new objects. Those new objects are gonna get allocated in the young generation or generation zero. Then we go through the same mark and sweep phase. So we mark F and G, we also mark D. Then we know that E goes away and then F and G get moved into generation one. Oh, go transition, there you go. And then we do the unmark step again or we clear that mark bit. Now the interesting thing that you may or may have not may or may not have noticed is that when we're doing that mark phase, when we're walking those arrows, we actually didn't have to touch the B node. We didn't go to B because we knew that that one was old. So we're not dealing with B. So the nice thing about this is that we don't actually walk those old objects every single time. So we can speed up that mark and sweep phase because we're only looking at old objects once in a while. We only consider new objects frequently. But there is one slight problem with this algorithm and that's that let's say we have a graph that's like this, B and D are in the old generation and for some reason, something happens such that D actually allocates a new object E, right? That new E object is in the young generation and when it's time to go through our mark and sweep phase, we don't actually walk that arrow up there because we know B is old, right? We know B is old so we don't go through all those arrows and what happens is at the end of the mark phase we say, well, E hasn't been marked so we're just gonna GC that and now we've got this bad connection here.  So the way that we fix that is we introduce something that's called a right barrier, a right barrier and a remembered set and what a right barrier is is when we write that connection between D and E, when that arrow gets written, we keep track of that. We keep track of that connection inside of what's called a remembered set. So when that arrow gets written, we remember that. We put it inside a special set so that we know when we do our mark and sweep phase, we say, oh, well, we're gonna go look at that remembered set too. We need to mark E and then E goes into the old generation and we're free of our, we don't have this bug anymore. So we have a couple new terms from this. We have a right barrier, which is just keeping track of those interesting, what we call interesting arrows, which would be old generation to new generation arrows and we have a remembered set, which is that list of those interesting arrows.  It's faster because we don't have to walk as many nodes as frequently, but it's not quite as easy. We have to implement this right barrier. So it introduces some right barrier and a remembered set. So it introduces some complexity to our garbage collector. Now, unfortunately, we still have to stop the world with this algorithm. Even though we're walking fewer nodes, we still have to stop, go through that cycle and then continue on.  It's something that you can do incrementally and we'll look at how that works. The way this algorithm works is that it uses an algorithm called tricolor marking where you have three colors. Wow, these names are so imaginative, I love it. All right, so we have three colors, white, black and gray. Now, those objects are objects that we're going to collect. Black objects, they have no references to white objects but they're reachable from the root and then gray objects are reachable from the root but they haven't been scanned yet. So we'll look at how all these colors work together. So the way this algorithm works is we pick an object from the gray set and then we move it to black. We change that over to the black set. Now, for each object that that one references, we move those into the gray set as well and then we just repeat step one and two until the gray set is empty. And then we know that everything that's left over that's white, those can be garbage collected. So an example of tricolor marking, let's say we have an object graph that looks something like this. We start out with A and F in the gray set because they're referenced from the root. We color those black, then all of their references go to gray, then we color those black. And now we know that we're done, we don't have any more objects inside of the gray set so we can take all the white objects and GC those, we can free those up so those go away. Now, the advantage of this algorithm is that we can interrupt any one of those steps so we can take a break at any time. So we do the gray to black coloring and we can just stop right there, we can continue on with the program. So what this means is we can perform each of these steps incrementally which is why it's called an incremental garbage collector. So what this means is that our halting time is actually reduced. What we do is we say, okay, we'll run the program for a bit, now we're gonna do one step of this incremental GC and then we're gonna continue on with the program. So our program halts for less time. But there's also a problem with tricolor marking and that's very similar to the generational problem which is let's say we have these gray colors here. Now, let's say we halted right now, we're gonna pause the program and we do the first step, we pause the program, we let the user code continue so the GC pauses and then your code continues and somehow F, this F object creates a new object. It allocates something new. So it's pointing at a G object now. We have this new object. Now, let's say the GC starts up again and it says, okay, well now we're gonna take all the gray objects and we're gonna color those black. So it colors all the gray objects black and it says, okay, we don't have any more gray objects so it's time to GC. So we collect that G object and now we have a bad reference again. That G object should have been live but it is no longer live. So in order to fix this problem, we actually introduce another right barrier. So we say, okay, when we write from F to G we're actually gonna save that off. So we have another right barrier and a remembered set. So we do exactly the same trick we were doing earlier. We just keep track of that and then we know that we can color that one gray later. So interesting things from this. The glossary to learn from this is we have incremental GC which means that we can halt the GC at particular times. We have a right barrier again which keeps track of rights to objects and then we have a remembered set which is those interesting connections. Now, all these algorithms, the idea behind all these is that we want to actually minimize tracing. So we want to minimize the number of arrows that we traverse when we reduce those as much as possible and we also want to decrease halting.  We want to reduce the number of arrows we walk because that's less work we have to do and we want to decrease halting because if the program halts, it means it can't be doing other things like servicing requests from a user or something. Now, things that our GC is not which I want to talk a little bit about, our GC is not parallel. It means we're not able to run this mark and sweep algorithm in another thread. We can't do that. We can't do it in parallel. It's also not real time which means we can't run MRI on things like that require real time feedback. For example, like, I don't know, maybe you're building a robot or something. You might not want to run MRI on that. You might want to use something like M-Ruby or something that has a more real time garbage collector. The other thing is that it's not compacting. We don't actually take these objects and move them around and I'm going to talk about that a little bit later. Those objects, when we allocate them, they stay in one particular place in memory. So we'll look at that when we talk about allocations. All right, so we've covered the way that we do object freeing in MRI. Now, I kind of want to look at allocation algorithms and the thing I want to look at first is I want to look at our heap layout. So MRI, we have a heap. Our heap contains all of our objects. Now, when a Ruby object is allocated, we don't actually call malloc every single time. We actually allocate that into a page and the reason that we do that is that malloc isn't free. Come on! Ah, you're killing me. I know it's early, but please, I'm so proud of this one. All right, so, oh, thank you, thank you. All right, so malloc isn't free when you call malloc at cost time. So what we try to do is we try to allocate one large chunk of memory. We allocate a large chunk or we call it a page or a slab. I prefer to call it a slab though I think it's referred to in the code as a page and the reason I like to call it a slab I'll get into a little bit later. Now, we allocate one large chunk of contiguous memory. This page memory is contiguous. So in each one of these, chunks of memory contains a linked list and yes, I should advance the slide. So each page holds a linked list. Now, this linked list, each member of the linked list is what we call a slot. So nodes in this linked list are called slots and though each slot is actually a Ruby object. So to make this a little bit more clear when we do an allocation, we'll allocate a page and it is just a big chunk of memory like this. And when the garbage collector allocates an object it'll just put one of the objects inside of the page. So each time we allocate an object we get a new object one after another. Oops, yes, there we go. So we have a linked list that's stored inside of this page. This list we call the free list. So all we have to do to allocate a new object is we find the next slot that's open in the free list and then hand that back to you as your Ruby object. So if we actually fill up a page, let's say this page is filled with objects. When we go to the free list we see, oh, it's filled. So let's just allocate a new page and now we have a bunch of other places to store objects. Now, each one of these pages, actually one thing I wanna talk about is when we're looking at the top of this linked list where we actually pull that object out when it's time to allocate an object we call that our Eden, so that's where objects are born. So when an object gets garbage collected it's actually pulled out, it's pulled out from this list so we free it from that, we free it from that list and that actually leaves a hole in the page which I wanna talk about a little bit later. But let's say we actually free up all of these objects, all of these objects get GC'd. If that happens then we'll actually free up this page so the page will go away so we can free that. Oh, I wanna talk about, this is exciting, I love this part. So I wanna talk about some interesting allocation hacks. Now, not every object requires allocation. So Matt's talked a little bit about this yesterday with integers, now not every object and you may or may not know this but not every object in Ruby actually requires us to pull something off of that page. So I'm gonna try and walk through how that actually works here. So one page, one page in Ruby is about 16K. This is just a size, it's a fixed number, it's a 16K page size. Now one object in Ruby is 40 bytes, okay? So we got a 16K page and we got 40 byte objects. Now pages are actually aligned there and what this means is that we say instead of malloc-ing the pages, we actually do what's called an aligned malloc and what this means is we ask the computer, okay, give me a chunk of memory but I want the beginning address of that chunk of memory to be divisible by some number, okay? So the address of that chunk of memory is gonna be divisible by some number and we choose 40. So we choose 40 as our multiple. Now 40 happens to be the size of a Ruby object. Now what's cool is if you start at 40 and you print out the binary representation of that number, so we're gonna say, all right, 40 times one, 40 times two, 40 times three, et cetera, as if we're walking through the size of those objects that we're adding, we keep adding an object to that list. If you look at the binary values of those, now if I'm gonna just show you this here, these are the binary representations of those numbers. If you look at the last three digits, you'll notice that those last three digits are always zero, okay? They're always zero. So what this means is we can actually use those last three bits to add some meaning to the number. So we'll say like, let's use those last three bits to indicate that that number is something special. So what we can do is we can use that bit to represent integers without doing any allocations. So for example, let's say we have the number two and we wanna represent that as a Ruby, we wanna represent that in Ruby. What we would do is say, well, let's have a flag of one, for example, and if we convert two to binary, we know that that is one zero. And if we shift that over, then we get 100 and we add the int flag to that and now we have 101. And if you look at that number, because those last three digits are not zero, we know that that was not allocated in Ruby's GC. If an object is allocated in Ruby's garbage collector, it's always gonna end in three zeros. And since this one doesn't end in three zeros, we know that it's something special. So what we can do is just take that number two, encode it like this and treat it as a Ruby object. And then to decode, we simply just shift that over, shift that over one. So using this information, we can actually figure out what is the largest fix num that we can allocate without actually pulling anything from the garbage collector. So for example, if we do two to the 64 minus one, you'll see that's what the binary representation looks like at 64, 64 ones. But if we subtract one from that, we get a big num class. And that's because we had to shift that over one. We lose one bit from that shifting. So we can't represent 63 bits. And if we do 63, we still get a big num. And the reason we get a big num is because the very first bit represents plus or minus, right? So if we actually do two to the 64, then we get a fix num. So we can see that that's actually the largest fix num that we can represent. Now, even if you add one to that, you'll still get back a big num. Now unfortunately, this is before Ruby 2.4. If you go look at Ruby 2.4, it's much more confusing. You can't tell the difference. They're all just integers, unfortunately. But if you look at the object IDs, you'll notice they're very, very interesting. Those top two ones there, those top two ones have very big object IDs. And it's because we actually use the memory address, the address of the object as the ID. So you can tell those two objects at the top, those two are not allocated in Ruby's GC and the bottom two ones are. And this technique of using those three bits, we call those tag pointers. So it's a pointer, it's some number stored in memory, but that number has special bits in it. So I love this hack. I think it's awesome. It's really clever, in my opinion. Now, if you look at the other objects in Ruby, many of these objects are tag pointers. Fix nums are tag pointers. Of course, we don't have fix nums in 2.4. Floats are tag pointers, true, false, nil, symbols. So a lot of these things don't actually require allocation from the garbage collector. So I wanna move on a little bit to talk about some allocation problems. And these are problems that we've been seeing in our application. Now, one problem that the garbage collector has is we have an issue with poor reclamation. So let's say we have three pages that look like this. They're filled with objects, right? Now, let's say the garbage collector runs and we reclaim some of these objects so they go away, right? We've reclaimed some of those objects. Now, unfortunately, I mean, what would be cool is if we could take these objects and move them around like this, then we could actually take this page and free it. It would go away. Now, unfortunately, we can't do that. That does not happen in MRI. We cannot move these objects. So what ends up happening is we have these three pages that are allocated with holes in them and we can't reclaim that memory. So unfortunately, this causes some problems for us where we have heaps that are too large. They could be smaller, but they're not. The other issue is that we have copy on write. We've experienced copy on write problems and where this comes from is I'm gonna explain how these copy on write issues occur. Now, unfortunately, a Ruby memory page is not an OS memory page, which is why I like to call those pages in MRI slabs. So an OS page is something totally different. It's a page of memory, but it's not the same size as a Ruby page. So one Ruby page is about 16K. On OS 10, an OS page is about 4K. I think on the Linux systems we have in production too, there are one OS page is about 4K. So one Ruby page contains four OS pages. Now, let's say we have a parent process and a child process. Parent process forked to have a child process and they're both pointing at something that looks like this. So they're both pointing at a Ruby page that looks like this. Now, let's say the child process allocates an object, sticks it in there. Now, what happens is when we write to that bit of memory, the operating system has to copy it. So it's copy on write. We wrote to the memory, it has to copy it. Now, unfortunately, the operating system doesn't copy just that little section. It actually copies one OS page. So rather than copying those 40 bytes, we actually copy 4K. So we wrote 40 bytes, but we actually got 4K copy. So what would be cool is, and this is something I'm trying to work on and test on our application, is if we could group old objects together such that we didn't have as many holes in our pages. So for example, let's say we had two types of pages. One type is probably old page and another type is just a regular page. Now, what we could do is, if we allocate objects, at the time we allocate them, if we know, hey, I think you're gonna be old, we stick that into the old page, then maybe we can group all those together so we don't get holes in them like that. So we'll allocate an old object, we know it's old, when we allocate objects that are unknown, then we just stick them into the normal pages. So you might be thinking, Aaron, how do you know what object is going to be old? It seems hard, it is not that hard. If you think about classes and modules in Ruby, all these things are objects and they're probably not going to get garbage-elected. When you do a class foo, it's probably going to become an old object, same with modules or constants or possibly frozen strings. So we know we can have some heuristics to determine like, hey, when we allocate this object, let's put it into the old page. The other thing I was thinking about doing and I'm not, I'm just testing this now is if we could statistically determine which objects are gonna be old and which ones aren't. So let's say we have some foo object and 90% of the time we allocate a foo object, it becomes old, then the next time we allocate a foo object, let's just stick that into the old page. Though, unfortunately, most objects, becoming an old object is a rare thing so I'm not sure if this technique will actually work for us but that's why I'm just trying to implement it and see what happens in production. So this will help us efficiently use space so if we can group all these old objects together then maybe we can reduce those empty slots without having to move objects. We could also reduce GC time with this technique because if we know that those objects are gonna be old and we mark them old already, then we don't have to go through those first two cycles of garbage collection in order to mark them as old. All right, so let's take a look at a little bit of some GC introspection tools that we have available to us. We use a lot of these tools to debug object leaks and just various GC issues in production. So MRI has a lot of GC introspection tools so for example, we can look at GC info. Now, the way to look at GC info is just with the GC.stat method and you don't need to read all these. Just go run that method. But one of the main reasons I went through talking about all these GC algorithms and pointing out the particular glossary in those particular terms is because each of those keys in this hash corresponds to that particular thing with the garbage collector. So if you know how the GC works, when you read all these keys, it's very easy to understand exactly what the GC is doing. So now that we've talked about all these techniques, go run this code, take a look at all the keys and you should be able to determine what each of those keys means. We can also get GC performance. So sometimes we'll look at the performance of our garbage collector and that's really easy with just a GC profiler. It looks, the code looks just like this. You can just enable the profiler and check reports for it. You can see how long each GC took. So just call this method and then call the report method to take a look at the performance of the garbage collector. We also use a lot of heap introspection. So we'll look at what objects are actually allocated. And my favorite tool for using this is object space dump all. And what this does is it takes your entire heap and actually dumps that out as a JSON file. And if you have a lot of objects, this can take some time. So be careful when you use this tool, but this is one of my favorites to use. You can actually dump one, this dumps out your entire heap, but you can actually dump one object at a time if you want to. You can just use object space dump to actually dump out one object. You'll see right there, that's just the JSON representation of that. And what's neat is if you use this dump method, you can actually see what happens to the object as you GC. So let's say we do a GC.start three times. You'll see that that object down at the very bottom, after the three garbage collections, it becomes old and uncollectible and marked. So you can see how these objects change over time, which I think is very cool. Also, not all objects in Ruby have a right barrier, and you'll see when you dump out a particular object, you can see which objects do and don't have a right barrier. So in Ruby, objects have three generations, as we saw from this. The last one is the third. We don't consider an object to be old until it makes that third generation. So another thing I really like to use when debugging allocation issues is object space. Go check out all the methods on that class, especially trace object allocations. I like to use this one, I like to use this one a lot. If you call this, if you look at this method, you can actually turn on tracing for objects. So that every time an object gets allocated, it remembers where it was allocated, what file, what line. So if you're having troubles determining where some object came from, enable this flag, and then you can ask it, hey, where were you allocated? Hopefully I am out of time. I don't know yet, I think so. Am I, am I? Okay, thank you, thank you so much. I, oh, please use this hashtag. If you enjoyed the presentation. Also I have stickers of my cat, so come say hi to me. I know I'm not supposed to have stickers, apparently that's not cool anymore, but I do. So come say hello, find me later, yes. Thank you. Hello. Thank you. Any questions from the audience? I know it's early, but you can do it. Yeah, I was trying to think of some questions, but my memory is maxed, and I want to GC, but take too much time. Hello. You're using a right power, right? Yes, yes. Is there a reason we can't just mock, so if a black object allocates an object and retains reference to it, is there a reason we can't just mock that allocated object as great during allocation? I don't think so. I mean, we probably could, though I don't, I mean, yeah, I don't see why not. There's, I don't think there's any significant overhead. We could try it. Seems like a good idea, yes. I've got a question? Yes. So you mentioned that classes and modules are the objects that probably will become old and will not be garbage collected. What if I use a lot of anonymous classes? Does it make it harder for GC to do its job and they should avoid it? No, I don't think so. If you use anonymous classes, that's fine. We can tell, so when we want to divide those, when we want to divide those up, we can tell like, okay, this class was allocated via class foo. We know it was actually allocated in the source where if you're doing an anonymous class, you're doing like class dot blah. You're doing like class dot new or something or module dot new. So we can tell the difference between those two, those two types of allocations. So I mean, feel, continue to do that. Feel free to do it. Any more questions? I think you guys need to keep seeing. Okay. I did it. Yay. Yeah, don't forget to take your cat stickers. If not, I'll take them all.


So over the past four years, I've tried so many different scanners, some really expensive ones, some really cheap one, but overall it was just all about the same. So I decided to give a shot back to TWES because they do have the free mosaic scanner which as I remember was quite complicated but guess what, four years later, it's actually not that bad and it's completely free. So in this video, what I'll do is show you my setting or some basic setting that you can work around to customize it to your preferred liking. So as usual, this is not gonna be financial advice and I'll link all the best tools for day trading in the description, so let's get right in. So we are in TWES and as I mentioned in the intro, there's a really good scanner and I'm really surprised.  And also there's a really good newsfeed which pretty much all the news source and I'll dig a bit into that in this video but I'll do a full video on it because it definitely deserves it. There's so many ways to actually customize it. The first thing we'll do is show you which scanner I'm currently using and where to access these scanners. So to access them, the first thing you need to do is just click new and I'm gonna unlock this layout to unlock it, it's gonna be right here. I'm gonna go to new and the scanner that I'm using is gonna be the advanced mosaic market scanner, not just the regular one. And I'll show something very quickly.  It just makes it annoying. I personally don't like it. So I'd like to use this one better. And when you use the advanced one, which is gonna be scanner advanced market scanner, and we're gonna start with like a fresh one.  When I'm scanning for things, I just don't want the ETFs. I just want the regular stuff that's trading on NYC, AMEX, or NASDAQ small and regular securities. I haven't really played with removing this one, but so far I haven't had anything weird by just letting it on. After you did this, the next thing you wanna look for is select this over here depending if you're looking for a scanner on positive result.  The issue that I came across or had is if you click on the top loser percentage right over here, then you put all the settings for the gainers. It's not gonna come up with some result and I was so annoyed with that until I figured it out and I was like, huh, totally makes sense. We're gonna look for stocks that are gapping up, then you're just gonna have to enter your price. So I like to look at stuff above 20 cent. And if I'm looking for pre-market, I have a couple of variants. So I'm gonna look either for stock with volume over like 50K or 100K. This is more if I'm trading news, so I wanna see quickly what's moving. But if I'm looking more at the end of the pre-market, I'm gonna look something like one million so you can just add the M. Then you can add a filter and you can play a bit with after-hour change. This is gonna show you really for like the pre-market or after-hour session. Or I just like to use the change percent and just click okay. And then you can just put the simple percentage that you're looking for. So if I'm looking for 10% and then I'll just click search and here we go, we have a top gainer scanner. Like super simple and it works as good as any other scanner. By the way, if you enjoyed the video, don't forget to like and subscribe. I'm trying to get to 10K subscriber by the end of the year. And also if you're looking for the best tool, everything will be linked down below. Let's get back into it. Some stuff that are important to talk about are gonna be the columns over here. So if you wanna insert a new column or I could start with talking about the one I have, I have, you know, the stock, which stock is it? The last, you know, what's the price, change volume and tweet volume score. So this is something that no other scanner have but it's gonna calculate how much people are talking about the score and there's another one that you can have which is super important and it's gonna be just customized layout and then you can just search tweet and then you go to this one over here. So this is gonna show you the change. So it's like the percentage change but it's gonna be for the tweet. So if people are starting to talk a lot about, you know, a certain ticker or something like that it's gonna increase. I haven't back tested really like how accurate it is but when you're trading, it's really important to understand, you know, how much people are involved in the stock because if you're looking at something like a Mullen or an AMC which had the ape or like a very cult like stock, this is gonna be really elevated and you can judge that there's a lot of dumb money in this stock versus, you know, when nobody is talking about a stock, it's probably because it's not really in play. So I'm definitely gonna track more going forward but as of right now, it's just something that I like to look at the tweet score and not the exact tweet change. So this one, I'll remove it once again and something you probably realized by now and it's definitely something that annoys me at time is if you add a column in one of these filters so like you insert a new column, it's gonna be over here. Let's put like news time. It's gonna add it like everywhere and sometimes you just want this on one of your filters, not all of them. So this is something that you're gonna have to deal with and really figure out which column you really wanna see or have like completely different layout at a different time of day. That could also be an option. So if you're looking for just like top gainer, this is how you would do it.  And as I mentioned, because I click the top losers and I have filters for top gainers, it's not gonna show any result right now. So what you need to do is go back over here, remove this or then look for a stock that are less than 10% and then for open change, we can actually remove this one and then you can go to search and here we go, now it works. So you have to find or choose the proper global setting and then you can go ahead and customize it or fine tune it. So really important.  Following on to something else that I think is pretty important or pretty interesting for a lot of guys that trade momentum, which is my case. I'm gonna go to edit because I don't care about this scanner. And then you can look for stock that are being halted. So for this, because the market is closed, I can't show this, but I do have a video that's gonna show how it's actually working. So let's check this out. So right now we can see that I have my halt scanner at the bottom right over here. There's nothing on it. And then when it's gonna light up, you guys gonna be able to see very shortly, it's gonna pop on the halt.  It's gonna show it right over here and all the information is gonna be shown like this. So I think it's pretty useful. The only thing that you wouldn't get compared to like some trade ideas or something like that is that it's not gonna make a sound. Like it's not gonna have like a ping or something like that when it gets halted or I haven't found a way to do it. And a solution I came to that is that was actually from a long time ago even when I use trade ideas is I just have my halt scanner as like a priority. So it's really like in front of me because if something gets halted it's because there's crazy volatility or sometimes some news just hit the stock. So this is like more important for me than hi-a-day. For anything that's just like a hi-a-day scanner or filters I really just look at the top list and I open like a few charts and that's enough for me. If I need, I just put an alert above the hi-a-day and it's gonna ping me when it's crossing the high. So I don't need something that's gonna show me every two seconds or distract me from the trade that I'm actually looking at. So this is how the halt scanner is gonna go. So now let's go back to the setting. So for this quite simple you need to select the halt and after you can click minus 10 or 10% it's not gonna really matter in terms of like how something is extended. What I like to do after it is just volume. So 20 cent volume, at least one million. This is kind of the benchmark that I'm looking for. You can put it a little lower like 550 and then just put a K for thousands and then it's gonna show you if there would be something. I personally really use the top gainer, top loser or I look for imbalances which is an imbalanced scan or the halt. This is gonna be my priority when I'm looking at stocks. Something that you wanna do after that is make sure they're linked. If you don't see this little icon to link them just go over here and then you're gonna be able to have like a drop down menu where it's gonna show you this, right? Like, you know, this little thing to link all the same color on all of them. The following thing we're gonna do is have a news feed. You know, I talked about Benzinga in the past. I do have a subscription still but Benzinga is included for free with TWS.  So it's this one over here. So you can open it again. I already had it open so I'm gonna close this one and then you're gonna have your setting over here and when you have company specific news it's gonna show you like all the source. So it's gonna have a lot of source, a lot of information there but when you see something on your scan maybe Mullen, there was news at, you know, 805. Then you're gonna have the article that comes in also. So you can click over here and have all the article. So this, if you don't see it, what you're gonna do is just, you know, I can close this one.  For sure, if you're trying to trade like breaking news or news that just coming out it's not gonna have the best filter but if you're just looking to find news or find stock that had news or just know what's the news on something you can just go over here and click and then you have all the headline for all of these, right? This is very simple. It works pretty well, surprisingly, pretty fast also. So I hope you enjoyed this video. If you did, like and subscribe. As I mentioned, trying to get 10K before the end of the year it's gonna be a tight race but we might get there. So thanks for watching, peace.


Make it a great night, folks. Serve the one you love. Once you decide to be a couple there, you're there to serve the one you love, to serve your love to your lover. And every kiss and every touch, you feel that you are there to please the one you love without expecting anything back. Market wise, let's take a look at it out here. We have the Dow Industries down 36. Nasdaq is up 30, S&P's up six and a half. Gold contract up $8.70, traded 18.27 an ounce. We've got Silver up 42 cents, $23.24 an ounce. LightSuite crewed up a Buck 31, $82.53 a barrel, notes and bonds. The 10-year note, up five ticks, traded 128 to 17. The 30 are up two at 156 flat and King dollar. King dollars down 679 ticks, traded 94, 947. Euro is at 114. The yen is at 114.48 and the British pound is at 137 to one US dollar. Our phone number is<PHONE_NUMBER>. Give us a call folks, one note's going on in your world and the world of the S&P's, let's take a look at them. What do you have? Well, we had out here yesterday, they went the higher price at a contraction of volume. We're gonna have another contraction of volume out here. Bottom line, you're coming into Thursday, Friday, you're coming into the mouth of Luther King. Holiday, you're gonna remember, Monday the markets are closed and the United States folks, bottom line, I expect this S&P's gonna go right up to the highs once again. The contraction's out here. So when we had come downtown, we came downtown with 119 million shares. Yesterday we went up with 74 million. Today we'll probably do about 50. No, 60 rather, we're at 49 right now, 65 probably. So you can see that contraction. NDX 100, same type of setup inside the NDX. The difference with the NDX in my own speculation is that this won't get to the highs. The reason being is that we already have the aspect of three lower lows and two lower highs. That is the definition of a downtrend folks. And that would be a total change of trend. There's no doubt about that. When we'll see how the baby shakes out, but I suspect what you're gonna see is this. We come down with 91 million. Yesterday we went up with 68. We're at 45 right now, probably do about 55. And as you get higher, it'll keep contracting. That's just a really nice setup. Sell it, you're going far. And the Q's, you're going for 350. I suspect it's gonna get to 400. It's a free 86 right now. Gold, gold contract out here caught a bid. We caught a bid out here yesterday. You get some follow through. You get some follow through in the equities in a big way. Gold right now is up 840. Looks like it's gonna go after the swing point tomorrow. So this is gonna be interesting because the swing here on gold is 1833 and you need 168,000 contracts for an ABC structure up. Well, it has the volume even today. And if that's what we get, let me see, 1753. So you got what, 47, 57, 67, 77, 80 bucks, which would get you 1860. 1860, what's that? Yeah, we'll go into the swing high. So yeah, if you take your ABC structure, it lines up really nice. The swing high is out there. Good old King doll. Actually, let's go to the oil market first. Let's take a look at the oil because oil is on its way up to like $107. This is quite a movement. Okay, so you just overtook the highs out here at 8213 today. You get 377,000 contracts, which is big contract volume. Yep, you're going, man. You're going top side.  It's probably gonna hit the same thing. 66, 76, 14, 77, 87, 91. Right now you got a confirmed ABC structure up to 91. Right now you're trading to 82. And good old King dollar. So King dollar, it's pretty amazing that King dollar finally broke its consolidation. And you can see this thing. If this was an equity, it would have been a lot easier basically dealing with it because it would have had volume and we would have saw volume down the bottom here. And it would have been a lot easier and we would have saw volume down the bottom here. But you can see this is a long consolidation, man. This is a consolidation since I think Christmas Eve. And you broke it. And what that sets up now is going back to the breakout area. The breakout area for the dollar is 94,967. No, 93, sorry. Because we're trading at 94,967. 93, another penny down. Right now you're down to 677,6. And what you're going to see here is that we had a break top side in the Euro. Euro had been consolidating sideways. That just blew away its bottom. That's setting up a Euro at 116. And right now we're at 114. We go look at the British pound. They're all going the right direction if you happen to be in the metals market, folks. If you happen to be a bull in the metals market. British pound, same deal. Big top side move out here. And then we go over to the yen and what you're going to see, the yen in particular is definitely going the way for us gold bulls. The yen is going down. We hit a high last week of 116, we're at 114.50. And that's saying that the yen is going to make its way back to the 112. And we'll see what ends up happening at that 112 area. So you got a lot of moving pieces here. Now copper, oh man, look at this thing. This is, this took off yesterday. It followed through today, you know, in a monster way. Took out its consolidation. Yesterday it's that moving. Today it took out the whole consolidation. Copper's up 13 pennies at 456. That's on the way to 477. And of course, whether, you know, we look at any of these copper stocks and copper and gold, they're up big time. You got Freeport McMorran, that's a breakout. TGB, I was looking up TGB last night too. Is this up like 20 or 30 cents? Eight cents, okay. Because TGB wants to go to this high out here. So that's got action. And then the largest copper stock in the world is SCCO. And yeah, I'll do TGB. I'm gonna go out of all of these as soon as we come back. Oh yeah, look at that SCCO. You talk about a breakout. Whoa, baby, this is a big breakout. 67, 54, 74, 78. Stay right there, folks, we'll come right back. Our phone number is<PHONE_NUMBER>. We have the Dow Industries right now trading down 17. Nasdaq is up 34, S&P's up eight and a half. We'll come right back.


Software development is the process of conceiving, specifying, designing, programming, documenting, testing, and bug fixing involved in creating and maintaining applications, frameworks, or other software components. Software development is a process of writing and maintaining the source code, but in a broader sense, it includes all that is involved between the conception of the desired software through to the final manifestation of the software, sometimes in a planned and structured process. Therefore, software development may include research, new development, prototyping, modification, reuse, re-engineering, maintenance, or any other activities that result in software products. Software can be developed for a variety of purposes. The three most common being to meet specific needs of a specific client-slash business. The case with custom software to meet a perceived need of some set of potential users. The case with commercial and open source software or for personal use. E.g. a scientist may write software to automate a mundane task. Embedded software development, that is, the development of embedded software, such as used for controlling consumer products, requires the development process to be integrated with the development of the controlled physical product. System software underlies applications and the programming process itself, and is often developed separately. The need for better quality control of the software development process has given rise to the discipline of software engineering, which aims to apply the systematic approach exemplified in the engineering paradigm to the process of software development. There are many approaches to software project management, known as software development life cycle models, methodologies, processes, or models. The waterfall model is a traditional version, contrasted with the more recent innovation of agile software development.


Now, the determinant is a multilinear function, but it's also a function that preserves multiplication. Linear maps remember they preserve vector addition and they preserve scalar multiplication. Multilinear means it's linear in every factor in every variable. Now, when it comes to linear maps, we don't make any requirement that a linear map preserves multiplication. Because for a typical vector space, there is no notion of vector multiplication. But for matrices, we can multiply them. It does actually beg the question, can the determinant preserve multiplication? The answer to that question is yes. The determinant is a map that preserves matrix multiplication. The determinant of A times B is equal to the determinant of A times the determinant of B. I want to give you an example of such a thing. Consider the following. If we take the determinant of A, 6, 1, 3, 2, this is just a 2 by 2. We're going to get 6 times 2. Remember how we do this one. You're going to take the product of this diagonal and subtract it from the product of this diagonal. You get 6 and 2, which is 12, minus 1 and 3, which is 3. That gives you 9. If we do the next one, 4, 3, 1, and 2. Again, for 2 by 2, you should take the diagonals 4, 2, 3, 1. The ones that go to the right, you're going to add the ones you go to the left, you're going to subtract. And so you get 4 times 2, which is 8, minus 3 times 1, which is 2. 8 minus 2 equals 6, all right? Actually, I made a goof somewhere, didn't I? We had 4, 3, 1, 2. So, oh, where did the 2 come from? I'm sorry. So 4 times 2 is 8. Then you get 3 times 1, which is a 3. Make that fix. No one's going to notice. And therefore, 8 minus 3 equals 5. There we go. Now let's multiply together A and B, like so. So we get 6, 1, 3, 2. And times that by the matrix 4, 3, 1, 2. When we multiply those together, first row, first column, we are going to get 6 times 4, which is 24 plus 1, so that's a 25. Then this first row, second column, 6 times 3 is 18, plus 1 times 2, which is 2, should that give us a 20? Right there. Second row, first column, 3 and 4 is 12. 2 and 1 is 2, so 12 plus 2 is 14. And then lastly, the second row, second column, 3 and 3 is 9, 2 and 2 is 4. And 9 plus 4 is 13. So if we calculate the determinant of their product, 25, 20, 14, 13, this one will be a little bit more difficult, but we can do it. 25 times 13, that is equals to 325. And then we're going to get 20 times 14, that's 280. And then 325 minus 280 equals 45. And 45, notice, is 9 times 5. So the product of the matrices has the determinant, which is the product as well. And there are tons and tons of consequences of this multiplication-preserving property of the determinant that I want to talk about in this lecture right here. So for example, a matrix is non-singular. It has an inverse if and only if the determinant is not zero. And in that case, the determinant of a inverse is just equal to the reciprocal of the matrix. And the idea is the following. The proof is actually pretty short and slick right here. If a matrix is non-singular, that means there exists an inverse so that its product equals the identity. If you take the determinant of both sides, you get the determinant of a inverse and the determinant of one. Well, because of the factorization property, the left-hand side becomes the determinant of a times the determinant of a inverse. And then what's the determinant of the identity matrix? Well, like we talked about in the previous lecture, if you have a triangular matrix, which diagonal matrices are triangular, the determinant is just the product of the diagonals. Well, the identity matrix is diagonal with ones along the diagonal. So the determinant of the identity is always equal to one. And so the only way a product of two things can equal one is only if the factors can't be zero. And in fact, if you solve for the determinant of a inverse, you end up with one over the determinant of a. So invertible matrices have reciprocal determinants. And in particular, a matrix will be non-singular exactly when it has a non-zero determinant.


Good morning to you.  I'm speaking to Litzu, he's a political analyst. Good morning Litzu. Good morning, how are you? I'm very well. How have you been over the weekend? Are you embarrassed as I am as a Kenyan speaking of corruption because it has now gone to another level where a live show is held abroad to demonstrate how corrupt we are to a point of even charging, calling it charity tax, that's how that man described what he was requested for. It happened in Mombasa and this someone was coming to help Kenya. So what do you make of this? As a Kenyan, as a young Kenyan, I'm very much embarrassed first of all and you see that to our surprise our leaders on our stations are not ashamed of themselves. They don't feel that pinch. They don't take it as anything. For them they just take it casually. They just take it like a by the way. Or they can type it and say maybe these are just the whites who like speaking again in the African countries because those are some of the defense our leaders will come up with. Instead of sitting down and looking into the problem because corruption itself it has been a vice in this country. Corruption has killed our democracy. Corruption has killed our security. The education sector has been infiltrated by corruption and also the economy itself has been affected to a large extent by corruption. So when she like that person was coming was coming to provide services to the country that will benefit the common monainchi. But now his goods were stuck at the Mombasa port and he requested to give out something so that he can get to whatever he wants to get. And we forget whatever is bringing to the country is to our own health not to benefit himself but to benefit the country at large. So these are some of the things that we need to look into seriously and we need to step up as youths, we need to step up as a country and as a nation so that we can fight this thing. Because when you look at the economy it cannot grow it cannot grow why the trader or the small trader somewhere will incur so much due to corruption. Now when he or she incur so much due to corruption who suffers the consumer because you will get this person will come and inflate the prices that the consumer will not be able to manage as the market price. Now this one affects the revenue collection because when the trader cannot sell it means this trader cannot trim his taxes. If a trader gets goods which he needs to sell then he sells at the highest price because of the corruption because the trader also needs to meet these costs. Remember the trader when going to get the license for the license to come out quickly he had to give out something. For the commodities to come for him to get the commodities he has to get to pay something. Now these are the costs who needs to meet this cost the end user who is the consumer. Now the consumer may decide I don't want to get I rather sit down whatever you want to give me or I rather use other mechanism to get it. Now this trader at the end of the day because he has not made any sales at the end of the day at the end of the month he will return a nail sale to carry. Now there is no revenue collected. These hampas the revenue collection hence there is no development because we need to develop from the taxes that we give out. On the education sector why is it that we don't have good infrastructure in our schools? Why is it that even our children who have finished 4-4 of class 8 is despite the fact that we have the 100% transition they cannot go to school? They desired school. Why? One because the government has no funds to distribute to pay the school fees for this. I see promised when it was coming to power. So the children will be suffering at home because of lack of school fees. Remember the parent has been told education is free and we expect it to be free. So unlike you and me who went to school sometimes back why it was the responsibility of our parents to get that school fees to take us to school. Now a parent sit down and relax and waits for the government to pay for the school of this child. But even if you wanted to tie for our children it would be difficult because the economy is hard and it's hard because of the people who are on the top. I want to supply some goods that's a tender but I have to push my tender to go through. And in return I will supply whatever commodity I'm selling because I pushed for it. Someone would have offered better commodities than I am he's left out because of corruption. I just want to bring in one of the comments he said that he was called and told if you want these machines because they were drilling machines if you wanted to take the way you wanted to offer this charity was told you'll have to pay something. And you see the problem is who is speaking about it. It's not a Kenyan. Someone far from who and he says he has not been in any other African country and experienced such. But Kenya makes the whole impact and he says he has heard of Nigeria but he has not been there. But he makes Kenya to be the greatest. Come on Ghana is leading. I'm not saying we are okay to be number two but seriously last year no 2018 there was some math that was done on how corruption has been a problem in Kenya because it was believed the amount that we lose like say three months is equal to Thika Road. And I was imagining by the end of say financial year how many Thika roads would we be having. Lot because of corruption. Just last week we saw what happened to the Senate. They decided to send funding and writing to whom because of corruption. As much as we send him home because of corruption but have we recovered whatever he took from the government. No. We have not recovered and we never recover it. As much as this person will go to court will do what this amount of money shall never be recovered. The NYS story the money have never been recovered. So these are some of the things that you need to look into. Even Kimu Arora. And Arora the amount has never been recovered. We are still waiting for investigations. Right now from June July we need to pay the debts that we have that we owe China. Where is the money? We don't have the money. And that's why even the parliament is raising is working on raising the ceiling of borrowing so that it can borrow then it pays the debts. That is the mother the parliament is working towards to borrow then pay the debt. And we shall remain indebted in the high use sums of money if we continue doing what we are doing right now. So what we need to do is to step up. If there is corruption in whatever way because corruption hampers a lot of things. We cannot grow economically believe me or not. We can never grow because of this corruption. Remember this person was coming to offer services to our country. We can say he was coming to do free of charge. And that's why he called it a charity tax. He is coming to do free of charge.  And yet right now the rains we don't have mechanisms of harvesting that water. We shall and when it will come to that time when the rains are over there is a dry season we shall be crying of hunger. And yet we had mechanisms that we can manage so that we can do what have that change. Ethiopia has worked with the US to ensure that it constructs a one kilometer dam in the region. The head war with Egypt and Sudan Osomalia because of the river Nile. But the US has said we are going to work and complete that project because the project was to end by the end of last year. But it didn't come to an end due to those conflict. Now it's going to come to an end. Ethiopia will never experience things to do with hunger because it is working on food security. Two years from now onwards Ethiopia shall never experience anything to do with hunger. Our country when we sit down when we talk of development instead of doing the development we look at how we can embezo the funds. How can we benefit ourselves from that? For a few individuals and we forget the society. We forget the people who are supposed to benefit from those projects. So these are some of the things that we need to look into. Democracy has been also deteriorated due to corruption. Because we end up electing leaders that are not visionary, that are not up to task. That are either aim is just to still and not benefit. And we are also the cause of this because when a leader or when somebody needs to be elected then this person comes to you. Instead of you looking at the ideology of this person you are looking at how much this person is going to give me. Then this person sees it's better I buy these waters because it's a matter of buying them. They have showed me that I need to buy them. They are not interested in my ideology. Then let me buy them. That's why when an MP cannot account for the 100 million shillings that is given every year for CDF. And so is the MCA for the 20 million? MCA cannot account for it. The women have their own kiti. They cannot account for it. If we can account first of all for these leaders if they can account for their funds that are given so that they can support monainchi then we shall not have a problem in this country. But we go on not looking at an ideology of an individual but what is going to give me. Somebody give me 500. Most of these people who come to us they have very visionary points. We feel them, we see them and they promise us and we can see they will do it. But once they are in the house everything changes. Do you blame me as an electorate? No. Those fallashas, lucrative ideologies that somebody runs with. Like for example the fallashas and lucrative ideologies that the government trained when they were coming to power. The stadiums. If they could have best mechanisms if they could have best managers who could have implemented the projects Kenya will be very far. Because the stadiums is also a source of income. It is also a way of improving our sports. Now when you come to education it is deteriorated because of such things. There is not much funds in the education system. Look at the security. Why is it that we have the KDF in Somalia which is also bringing a lot of security to our country. There is somebody benefiting. I just did my few consultation with a few individuals from there and asked them why is it that this was a security officer from that region. Why is it that we cannot have serious security measures in Garisa so that we can finish this al-Shabaab. The UN cannot get out of UN peacekeeping because the UN has invested a lot of money to us so that we can be at the peacekeeping. And these monies go to few individuals. Now we are being fought by Somalia because of such things. If we withdraw from Somalia and the Amazon then we shall never be in the peacekeeping. It is good if we withdraw and stop being at the peacekeeping for our country to be safe. So if we get out so the monies will not go to this. The monies will not come to the country. Which favors few individuals in the military and other areas. So these are some of the lapses that we have. These are some of the major corruption that also goes in the security sector. Because our major problem is security, democracy, education and economy. Because investors cannot come to the country. That guy is an investor. He cannot come to the country. And how many investors who are interested in coming to the country in the western countries who have viewed that clip. They cannot come. Actually it is so much trended. I am imagining the people who have watched it and this was a live broadcast region. It is so embarrassing. Now that you speak of us being the wrong people we bring this trouble to ourselves. Just last week we saw our cadros have been banned This is a Kenyan market that we are losing. So in as much as we are blaming our leaders we still need to blame ourselves because we have become so much greedy. You see, and that's what I say at times we lose focus and our priorities are not well set. The avocado thing was politically instigated. It was just all about showing us we have connections with these nations that we can supply avocado. It was not well managed from our end. People were not well trained on the avacados. And do you remember the other time the leader student told people you cannot keep on planting maize. Plant avacados. Fine, you plant avacados. We have avacados. Where are we going to take them? How should we manage these avacados so that you can be able to sell them to the markets to the international markets. So the other day when people cried about the rice there was a time we cried about rice that is a plastic rice from international markets that was being brought to the country. Right now it is now a matter of flipping so that we can now entice the voters that lets people buy rice from the common market in Muaya at it a five shillings. Why didn't we have these measures before? Because the government itself has been buying the rice the government institutions the military, the NYS and other forces have been buying rice from outside the country.  First of all these avacados is not the first time they are being neglected or they are being rejected. It was there before but it was not in the lion light. So today it has just come on the lion light just because things have become worse. But if we can come out and do things in accordance the way we are supposed to do them. We take time because look at the flowers nobody has rejected the flowers from Kenya they are well much embraced outside. If we can take time and study about the agriculture sector on avacados and how we can import them they will best thing but the problem with us is that we hurry up things there are those ones who are fully informed they do it to the best they supply but there are those who are interested to do it but they cannot do it they only hurry up and then they mess up the market. Alright. Just a final one. The DPP was very under when he came into office and he has been doing a good job but in the recent past a few days ago it seems things are cool does it mean things are better now or we should wait and see what he has in store? You see first of all I can say the DPP was all about the show off because one the people who he arrested the cases are still pending in court if they are guilt or not guilt one there is no watertight evidence on these people the person is taken to court today the DPP will ask for more time for investigation more time for investigation then it comes and lapses there is no issue about that person again so it was all about a show off what we need to see I don't need to see somebody going to jail because of corruption but I want to see a case that has been looked into to an extent where the judge will say we don't have enough evidence to put this person in jail so this is enough evidence that this person should go to jail and the other thing is I believe and law should be put in place or actually be put in place to expedite this issue of economic crimes because they take so long and justice is not delivered because one person will stay in court forever with these cases and no justice will be delivered but these are some of the problems that we need to look into also when you are talking of changing the law so we need to focus in such areas of economic crimes how are we going to handle them apparently we had a very few minutes to talk about this but I appreciate you came and you made it it's a shame that we are talking about corruption over and over again I'm hoping there's a time we will completely don't have anything to do with corruption and we will have discipline and dignity to carry our economic education and every other thing that concerns every citizen and a common citizen to a place where we will be ok thank you so much for coming and back many thanks for keeping us company he has been my guest SIRAS Literacy Political Analyst coming up next is Val keep it OI 254 my name is Dereva Hillary