Hi everyone, Joe for jazby's casebreaks.com with the 2019-2020 the Cup Hockey Random Number Block Randomizer for these three teams right here Montreal, Chicago, and St. Louis works just like our number block breaks Also remember zero gets any and all redemptions for these three teams right here. That's actually in the frequently asked questions there I'm not sure why it's not listed there, but Next time we do one of these I'll make sure it's there But zero gets any and all redemptions including one-of-one redemptions But only for these teams and only for this break which will be in a separate video big Thanks to these folks for getting in on this There are the numbers right here. Let's roll it. Let's randomize it six and a five eleven times for names and numbers one two three four and 11 the final time after 11 we got Ben down to Eric Six and a five eleven times for the numbers one ten and eleven the final time after eleven There you go six and a five. There's eleven right there two down to five All right, Ben with two William with one Sean with four William with six Sean with seven William with three zero and nine J with eight Eric with five Let's sort these numerically by number William has zero and one so that that redemption disclaimer does not apply to him not this time I'm Joe for jaspscasebreaks.com. We'll see you for the break


And now, another tale well calculated to keep you in. In a moment, End of the Road. Written for radio by Alan Sloan, from a story by Eliezer Lipsky. Back in pioneer days, they used to talk about the quick and the dead. The idea used to be the quick survived and the slowpoke stopped an arrow. Well, today things have changed. On America's highways it's often the quick who are the dead. Haste makes considerably worse than waste, as highway fatality statistics grimly prove. Most highway deaths come from excessive speed and cutting out of line. It's possible to be killed by making a target of your car as well. It's possible to get into trouble by having a mechanically imperfect car. There are all sorts of dangers involved in piloting one of today's high-speed automobiles. But hundreds of thousands of drivers of all ages are proving that it's also possible to have an accident clean record. Alertness, politeness, yes, common courtesy on the road, and the flexibility about changing highway conditions. These are true driving skills. These are keys to accident-free driving. Your only guarantees of survival on the rugged roads of today. This is our husband. Who is calling? Well, just a minute. It's for you. Sounds like a job. Thanks, Willie. Hello? At 10 p.m. High fashion. What's the matter? I didn't mean good enough for a cover girl, huh? Here, I am for you. All right. 2 p.m. Elite. Hey, you hear me? You hear me? And as long as I have you, my gardener. Just a moment, please. Willie, please, please. I said I am going with you. Willie, can you wait till I finish this call? All right, I got all the time in the world, but I am going with you. You hear me? Ms. Gardner? Yes. Yes, was there something else? Yes. We just got a mother and daughter call for tomorrow. That'd be 11 o'clock in the park. What, 11 o'clock? Oh, dear, no. Elsie's in school, then. It'd be double-rate for the girl, Ms. Gardner, and it might make a cover. It's mother and daughter outfits. Hannah Troy. I'm sorry. I don't want to take Elsie out of school. Thank you. Now, are we going to get this straightened out once and for all? Willie, please.  I wouldn't have married you if I were. Then why don't you keep the get registered Elsie Lochan instead of Elsie Gardner? Because we worked together as models as Gardner before you and I were married. Please, Willie, I guess I'll board going over this again and again and again. And quit, then, quit. If I did, you'd have to go to work. Are you going to throw that in my face again? Did I try for a job? Did I? Yes. All right, all right. Don't give me no buts. I do all right, don't I? I bring it to home, don't I? Where does it come from, Willie? I bring it in. Don't I? What do you can't wear? Willie, can't we just drop the whole thing? Where's my bag? I've got a 2 p.m. I've got a 2 p.m. Now, listen, you mean we got a 2 p.m. I'm coming with you. Not in a high-fashion job. Oh, a low-fashion job. I could come along, huh? And watch them photographers pour you around. Give it a little pat here, a little pat there. Willie, I'm warning you. You're warning me. You're warning me. Look, cover girl, I got a message for you. Willie, go! You'll bruise my arm. I get a kick out of you. Not that you're hurting me, but you'll bruise my arm.  Your looks. Okay? Okay, if I don't go, you don't go. Willie, let's go. Sure, I'll let go. With one rake in the eye, I'll let go. Let's see him focus on that, huh? Cover girl with a shiner.  Sure. You said that's what got you about me when I met you. Remember, you said I was an animal. A magnificent animal! How's that, Mrs. Oceano? How's that? In just a moment, we will return for the second act of suspense. Hollywood star Mona Freeman. Who feels like acting with a miserable cold? I relieve cold distress the fast way, with four-way cold tablets. Yes, tests of all the leading cold tablets proved four-way fastest acting. Amazing four-way starts in minutes to relieve muscular pains and headache, reduce fever, calm upset stomach, also overcomes irregularity. When a cold strikes, do what I do. Take four-way cold tablets. It's the fast way to relieve nasty cold distress and feel better quickly. Four-way, only 29 cents. Our program will continue in a moment after a word about another fine product of Grove Laboratories. Does dandruff dull your hair? Leave scalp itchy. Get Fitch dandruff remover shampoo and get rid of unsightly dandruff in three minutes. Three minutes with Fitch regularly is guaranteed to keep embarrassing dandruff away forever. Apply Fitch before wetting hair, rub in one minute, add water, lather one minute, rinse one minute. Every trace of dandruff goes down the drain. Three minutes with Fitch, unsightly dandruff's gone. Fitch can also leave your hair up to 35% brighter. Fitch, dandruff remover shampoo. Make yourself comfortable, Mr. Luciano, and you, Mr. London. Thank you, Mr. Morgan. Haven't I seen you somewhere before on many a magazine cover, Mr. Morgan? As Mary Gardner, Mrs. Luciano, was one of our top models. And as counsel for the agency with whom she's registered, I, uh, we need your help. I take it it's a matter of assault. A black eye who gave it to you. My husband, Willie Luciano. Willie, Willie Luciano. That's why we're here, Mr. Morgan. Unless I'm wrong, it was you who prosecuted Ms. Gardner's husband on a charge of possession of a gun. And convicted him, yes. Now I remember. You're married to him, Ms. Gardner? He's my second husband. Mr. Gardner was killed in an auto accident. I had a little girl and I...  She's only six, Mr. Morgan, but he hates her. Please, Mary. Mr. Morgan, Ms. Gardner is planning to sue for divorce. That is, she is, uh, well, we are seeking divorce grounds. Just a minute, just a minute. Where is your husband now? He ran out of the house. It was five days ago he gave me this beating. And then he ran out of the house. The man's living in a west side hotel. We're, uh, we're investigating him for evidence of, uh, whether you know the grounds for divorce in New York State. Well, one moment, this is, uh, civil matter. Why do you come to me? I'm a criminal prosecutor. The point is, my client would like protection against her husband. I can well understand that. But protection for herself and for her child. But what do you expect me to do, Mr. Linden? Well, we thought you might, uh, well, as an assistant district attorney who has already sent him to prison, warn him to, uh, to keep the peace and let the law take its course. It's a divorce law, that is. Depending on what your investigators come up with. That's right. Perhaps you might cause him to post a bond to keep the peace. Have you told him you're divorcing him, Ms. Gardner? No, I, I was afraid. Mr. Morgan, believe me, the marks you see on Ms. Gardner's face are, are nothing compared to others you do not see. Her body is covered with bruises. Well, I still don't see how I can intervene in a divorce proceeding in which my office is in no way involved. And Mary. Yes, sir. Tell Mr. Morgan, if you would, what you told me this morning. About the, the fight? About the threat. Well, I, I picked Elsie up after school and, and he was waiting for us. He pushed her into the bedroom and then he started right in on me again. I'll show you, he said. I'll show you where to get off. When I get through with you, you'll be a good model for one of those liniment ads, before and after. He threatened you with continued bodily harm? Yes. And said he was walking out on you? Yes. But with an implied threat to return and do further harm? Mr. Morgan, don't you think it would be better to forestall a homicide than to have to go looking for a killer? Yes, yes, I agree with you. Very well. Now Mr. Linden, I never want to tell a lawyer how to run his case, but pending the results of your own investigations, there is something I can suggest. Yes. That pending evidence of adultery. Now, that's going to be difficult to obtain. This man likes to boast about women we've discovered, but he has been very circumspect, meets them only in public places. Well, I can go before a magistrate with you and support an application for a warrant of arrest on the grounds of abandonment. Abandonment? Yes, Mrs. Luciano, abandonment is a crime, a misdemeanor. And if it continues for any length of time, technically we might be able to prosecute. But... But what? But all he has to do is to give the money for support and the criminal charges purged for all practical purposes. That's what these wise guys do when they run out on their families and just enough money to pay the gas bill. Then what's all this about? Oh, he'll see me in court. It may have a quieting effect. Also, if you'd like to apply for a bond to keep the peace, I'll go along. I'll suggest high bail in view of his criminal background. And your husband will either fail or make bail or be sobered by seeing that you have your eye on him. Mr. Linden, Mr. Morgan. Yes, my dear? But what happens if he doesn't make bail? He's committed to the civil prison. For how long? Until he makes bail. I'm no lawyer, but if he's in jail... How can your investigator obtain evidence against him for the divorce? Obviously, he can't. The main thing is, you and your daughter are safe. And if he gets out? On bail, I mean. He'll come after me. Not if he knows the district attorney is interested in the case. Well, we hope. In the meantime, now, this is entirely up to you, Mr. Linden. Your client can sue for a legal separation. It's not much, but it's something. Mr. Linden, honestly, what shall I do? Mary, I'd do as Mr. Morgan says. The main thing is to protect you and Elsie. We can take each thing in its own time. Now, don't you agree? I guess so. Very well. Mr. Morgan, is there any necessity of Mary's remaining here? No, no, not at all. But you'd better be at my office here tomorrow morning at about a quarter to ten. Then we'll go right in there and make application for a warrant of arrest. Quarter to ten. All right. Thank you. Just a moment. We will return for the concluding act of... Suspense. Around the clock, CBS newsrooms are kept humming with a steady influx of incoming dispatches and expanded reports from correspondence around the world. The object, the one object, is to make sure that you are kept completely advised as to the constantly shifting pattern of world events. Here, each day's global developments brought to you swiftly, accurately, and in meaningful detail via CBS News on CBS Radio. Just one question, Mr. Linden. I know. Why did she marry him? Love, I suppose. Men like that have an animal attraction for girls like Miss Gardner. Beautiful faces worshiped like goddesses by the multitudes and nobody knows how long they wait by the phone for a date. And a healthy young hoodlum like Luciano moves in. Well, I'd better get back to the office. I'll have to prepare an affidavit for tomorrow. Mr. Linden, would you mind a suggestion? Please, I feel sort of helpless here. A separation action can end in a judgment for stiff alimony. That's a pretty strong weapon when a man's trying to hide his means of livelihood. You might tell your client it can't be a blow-hot, blow-cold proposition. I quite understand. Point is, so must she. It's her main legal club over the man. She's not obliged to let him back into the home, or there goes her case. As for having anything to do with him... I know what you mean. From now on, she'd be better off living in the YWCA. Otherwise, no case. But the main thing right now is to put up a legal wall between her and his fists. You were right.  I'll tell you something else we're gonna do, Elsie. We're gonna take a big, long vacation down in Florida where the sun shines all the time, and we're gonna get twin bathing suits like the ones they took pictures of us wearing. And we'll go fishing and swimming, and we'll get so sunburned they won't have to use makeup on us when we go back to work. And we'll just laze around the stand all day. And we won't have to worry about what we eat. We'll just get fat. Hi, you baby. Really? Did you miss me? All right, she hit the road. Another 15 minutes? You can stay here if you like. I have a case in special sessions. Well, perhaps she went straight to pounding. No, no, no. I made it perfectly clear it was to be here, my office, 9.45. Morgan. Mr. Morgan, this is Mary Gardner Luciano. Oh, yes, Mrs. Luciano. What? Mrs. Luciano, may I ask where you are? We said my office, quarter to 10. I'm home. He just left. But when did he arrive? Last night. How did he get in? I don't know. I guess maybe he had a key. What did he want? Mrs. Luciano, tell me one thing. Was there a reconciliation? Mrs. Luciano, that's a question you can't ask your district attorney or your lawyer. Only your own heart. Where is your husband now? Shopping. For groceries. Give it another try. Oh, gee, he's right. What's the story? Same old story. When a lovely woman stoops to folly and finds herself deserted and alone, she smooths her hair with automatic hand and welcomes the prodigal husband right back home by Morgan out of Goldsmith. Or was it Pope? I can't take as light a view of it as you do, Mr. Linden. What am I supposed to do? I don't know what went on last night in that happy little loveless. But if a girl wants to be a fool, that's her privilege. But the man's dangerous. The story is this, Mr. Linden. Has it ever occurred to you that some men have only one way of showing their women how much they love them? And that's by beating them up?  Just an ordinary girl with an ordinary face. Would you think it was so terrible? Oh, I'm thinking of the child.  I'm seeing her stepfather beat her mother up time and time again. I'm thinking of the child, and so should you be. I am, I am. But the mother's your client. I intend to keep in touch with Mary. Mm-hmm. I wondered why a corporation lawyer showed such an interest. All right. I'll show you a guess. All right, Linden. I give them six months. The question is, in this strange affair is a woman infatuated with an animal-like creature? Yeah. Well, the name of the fellow in that play loved his wife and beater? Lilliam, Lilliam. Never mind, Lilliam. The question is, at the end of six months who is going to come out alive? The lady or the tiger? Morgan. Yes, Mr. Linden. Well, it's been just about six months, hasn't it? What's happened, Linden? Certainly, certainly. What about the daughter? Cardinal, you're safe here and your daughter will be escorted by a patrol car. Now, please go on with your story. Well, that's about all. Just that when I found the gun in his pocket and tried to stop him from going on on this job, he called it. He hit me. He hit me and hit... like an animal. Like a wild animal. You say he threatened to come back and what was his expression? Take care of me. He said he'd take care of me for good. Mr. Morgan, he's insane. Then why did you go back to him? Why did you take him back? I couldn't... Morgan, spare the girl. No, no, no. It's all right now. I'm over it. It was just that I couldn't resist him when he just... just even touched me. But it's all over now. I'm cured. You're sure? Yes. I'll do anything you say. I'll sign warrants. I'll go right over to the court. Anything you say. Will you come with me to 1st Avenue and 33rd Street for 10 minutes? What's over there? Your husband. He went on a robbery job, liquor store. The dealer had a gun, too. Bellevue is at 1st Avenue and 33rd. That one, he's hurt. I know he's hurt. No, no. But Morgan is at Bellevue. I'll ask you to identify him and then you can wipe him out of your life. But you don't understand. Hmm? I hated him. I hated him for what he did to me. But I love him. Who will he? Who will he? Who will he? What am I going to do with him? You can grow up. You can come to your senses and thank your stars.  That's what you can do. Women. Brother Lyndon, take care of him. Skip the identification. I've got his prints on file. Women. Suspense. To End of the Road. A story by Eliezer Lipsky. Written for radio by Alan Sloan. In a moment, the names of our players and a word about next week's story of suspense. Out of tune because of irregularity? Kellogg's All-Dran helps put you back in tune. Kellogg's All-Dran is the natural way the good food way to end constipation caused by lack of bulk in your diet. There's only one All-Bran. Kellogg's All-Bran. It's whole-brand content, gentle-to-way constipation. Supplies your system with the bulk-forming food you need. Kellogg's All-Bran is the only whole-brand cereal to bring you the combination of proved effectiveness, appetizing taste and crispness. It never gets mushy in milk. So get back into and stay into. It's easy with the one and only Kellogg's All-Bran. A-W-L-B-R-A-N. Safe, reliable, pleasant. Millions enjoy it every day. They know they can count on Kellogg's All-Bran to relieve irregularity. Heard in tonight's story were Bernard Grant as Willie Luciano, Rita Lloyd as Mary Luciano, and Nat Polan as Mr. Morgan. Others in our cast included John Seymour and Rita Sergel. Listen again next week when we return with The Mystery of Mary Roget by Edgar Allan Poe, adapted for radio by E. Jack Newman. Another tale well-calculated to keep you in on CBS Radio.


Alright, let's talk about arms. This is probably one of the most prized body parts, biceps, triceps, forearms. They're often exposed, and this is why people like to develop them, men and women. So in today's episode, we're going to talk all about the muscles of the arms and the best exercises you can do to sculpt and shape amazing arms. This is my favorite subject. This is my favorite too. This is killing it. The first body part I ever trained, I think. When you guys were younger, was this the main one?  I knew everything. I think arms, yeah. That was probably my first. I really liked training arms. It was just like it gravitated to me. Then chest, of course. I'm guilty of like only arms for like two or three years. That long? Yeah, because I was terrible at bench. I was a kid. I mean, that was like crazy. I almost screwed my basketball skills. Whatever the excuse was, I used back then as a kid. Didn't want to do legs for sure. And so it was arms. Arms was all I trained. When they tried to get me to bench press, my form was so terrible. I've told you guys before, like three guys. One guy would pin my shoulders down. The other two guys would spot the bar. And then I was like 135 pounds. It was just terrible. So yeah, all arms. All the time. And when I got into being a personal trainer, I had trained them so frequently, so often for all my early years, teenage years, that they became really stubborn. Like I could just, you couldn't hammer my arms and I wouldn't get sore.  Throwing something at them. I mean, I always train kind of everything around the gates, because I ran out the gates. I bought books and followed routines. And there's that story when I met the power workers. Just curling books. There's a reason why arms are so popular. It's because it's a proxy for a strong physique. Meaning, for the most part, if anything's exposed, unless you're at the beach or something like that, if anything's exposed, it's usually your arms. And if you have muscular, fit-looking arms, it typically tells the person that the rest of you is fit. That's what it means by proxy. There's no wonder why it's such a popular body part to train. There was a time when women didn't want to train arms, but then they became popular for women as well, because they realized, I'm not going to get big arms, I'm going to get nice sculpted looking arms. And women's arms are shown as often, if not more often, than men's. Now, what's funny is there's so many myths that surround arm training that this will be a fun thing to talk about in terms of what are the best exercises or the best, even more importantly, of exercise to develop, to get well-developed arms. So this will be a good one. But we're going to talk about the basic, because there's more muscles than the ones we're going to highlight today. There's lots of small muscles that are in there and stuff like that. We're not going to cover the shoulders, we're just sticking with them. We did a whole shoulder master class already, didn't we? Yes. And I definitely think that, you know, refer to that episode, because I do think that it's a suit of like aesthetic looking arms. You want my shoulders. Yeah, that makes as much of a difference, if not more. In fact, I think I have smaller arms today than I did in my early 20s. But I have better looking arms because they're more proportionate to my shoulders. So that makes a big difference. Now, arms feel awesome to train. That's true, that's for sure. It's a really nice feeling. It typically not hard to connect to the muscles of the arms, yet we're completely machining or whatever, a computer. So I can almost always get someone to feel their biceps, feel their triceps, and feel their forearms if I want them to. So this isn't really an area where typically it's like, ooh, we got to figure out a way to get you to do it. There's not really a loss of connection. So there is sometimes with tricep though. Tricep sometimes can be more difficult for some clients to feel. And I don't want to mess up the flow like, do you guys remember of all the things that we learned and what we're probably going to talk about in this episode as far as exercise selection and lifts and sets and reps and all these different things, do you remember what were some of the most pivotal moments when training arms were? I know there was a big one for me that made a huge difference. I think it was probably the same thing for me. It was the elbow position. That was a big one. I didn't understand that. With the stretch position versus I didn't learn that until I learned biomechanics later on. Let's talk about that first. Let's talk about the biceps. They attach here underneath the elbow and then right at the shoulder or a bit higher. There's two heads of the bicep. So because the attachments weigh up here near the shoulder I can make my bicep shorter simply by lifting my elbow and I can make the bicep longer by putting my elbow behind my body and lengthen or shorten by the position of my elbow. That's what we make by elbow position. I can do exercises where my bicep is shortened I can do exercises where my bicep is lengthened and then I can change the resistance so that it's hardest when I'm squeezing or it's hardest when it's stretched or extended. Those are the factors to consider when you're training biceps along with this is different for biceps where for biceps hand position also matters.  You'll notice your bicep shortens and lengthens. One of the actions of the bicep is also to rotate the hand. So that also is something you want to consider when you do bicep exercises. Yeah one of the things I was thinking of when I was just young and just starting out and especially doing curls I was doing a preacher curl and my range of motion was tiny. I would just come down and then bring it back up and get a squeeze and I thought I was doing something and then I remember a bodybuilder someone came over and was like yeah you want to go all the way and I had to drop a ton of weight and it was very humbling but then I was like oh wow okay I have to go all the way down so I applied that again to the elbow position on all the other exercises but that was like a huge thing if I was just doing short reps all the time. Three things that were very huge moments in my arm training for that. Range of motion, elbow positioning and compound lifts for that. Because it was popular when I first started learning a curl to do all these isolation exercises. Well almost every bicep exercise is isolation. And the ones that are compound are not called bicep exercises. So it's like a sneaky way for your biceps to build and nobody would label it as that and so I totally ignored that in my bicep and tricep training. I ignored the compound lifts that didn't fall under that category because they were either a bench press or a pull up or these movements that were for your back or your chest and so you're like oh this isn't for my triceps and also I was still in that trap when I was a kid of thinking that just because I felt it the most in an exercise that it must be building that muscle and that's a fallacy. Like there's exercises sometimes and we know this when we talk about things like legs. Like a leg extension you're going to feel your quads more than you will. They're going to be on fire. Yeah, they're going to be on fire compared to a squat. But they ain't going to come close to building your legs like a squat will. And it's like we knew that, that's obvious, but for some reason that same principle people it's not obvious to them when it comes to their biceps and triceps. But it's still true. The craziest mass builder you'll ever do just overall development of your bicep is going to be a supinated grip chin up or pull down. This is a compound lift for the bicep. Just like we do compound lifts for the chest, the back, the legs, and we know that those are the best for the bicep suit. Now I do want to say this. The technique's a little different. If I do a supinated grip pull up, I'm leading with my chest and I'm squeezing back. I'm trying to get my back activated. If I'm doing it for my biceps, I'm rolling forward and I'm pulling with my arms. Same thing with a pull down.  Yes, I would look like what I'm doing is bad form. So if someone saw me do a bicep pull down like this, you might be like, oh, he does it. That's a crappy looking pull down. No, I am emphasizing the bicep on the way down versus the back with my chest out. But try those. First off, a chin up this way. Most people aren't strong enough to do it this way. So you'd have to do a pull down but grab the bar and curl it down with this kind of roll forward position and squeeze the biceps to the bottom. You have now done a compound lift for your biceps and they you'll feel the difference when you do they build doing this. And I've done chin ups like this where I'm only doing three or four reps and the biceps just I did that with a super set with oh man, that destroyed my so you've talked before about how like certain muscle or how low reps only lend themselves to certain muscle groups. This is the exception for like any we've talked about like, you know three rep range doesn't do much isn't a typical way you would lift biceps. The only way I would is if I was doing this a pull up. I wouldn't do three reps for curls. Yeah, no, it's just an isolation exercise three times.  Yeah, 100%. Kick in the shoulders and everything else to get it up. All right, today's episode is all about training and developing the muscles of the arms, biceps, triceps and forearms. Anyway, got to give away for you. Maps anabolic advanced. That's today's giveaway. Here's how you can win. Leave a comment below this video in the first 24 hours that we drop it. Subscribe to this channel and turn on notifications. If you win, we'll let you know in the comment section. Hey, we are also running a sale on some workout programs. Check this out. Maps cardio is 50% off. The shredded summer bundle is 50% off. And the bikini bundle is 50% off. If you're interested in any of that, just click on the link at the top of the description below. All right, back to the show. So we talked about elbow position.  So here's three exercises that fit that category, which is great. Now, why all those? Because elbows in front shortens the biceps to the sides. It's kind of, you know, kind of in the middle behind the body. There's a stretch when you do a full extension. So the best exercises or some of the best exercises like this are preacher curls, elbows in front of my body, standing curls barbell or dumbbell by my body, and then incline curls where I'm sitting back on an incline my elbows behind my body. Those three exercises right there hits all three elbow positions. And then there's a muscle that we should probably talk about that you if you want well developed biceps you also need to work on, which is the brachialis or hammers. Yeah. And this is a flat muscle underneath the bicep.  This muscle flexes the elbow and it's most activated with a what's called a neutral grip. A hammer curl. A hammer curl will develop the brachialis pretty damn well. I mean, that kind of covers it. Well, so, okay, now talk about programming that and how I do this. So if I back when I was doing like body part splits and arms would be like an arm day, I'm actually going to do an exercise that hits each one of those in the workout. Correct. If I'm falling more of an MAPS anabolic routine. We're doing one. Where I'm doing one exercise, I do one on Monday, a different one on Wednesday, a different one on Friday for the week. So that in the week, I get all three elbow positions. So that's how I would program that is I want to in a week's time, I want to make sure I hit all three elbow positions, whether I'm doing all that arm workout and one or two workouts, or I'm spreading it over three or four workouts. I want to make sure within the week, I'm hitting all three major elbow positions. And then I'm going to stay with those exercises for an extended period of time in order to get good at them. Right. So I want to stick with those three movements that you're saying for at least four, six, eight weeks. And then I'm going to change the exercises up too.  Right. But still follow the elbow position.  Well, here's now where it gets interesting. A preacher curl, especially a free weight preacher curl, most of the resistance is at the bottom because that's where gravity is fighting the most. Here at the top, there's not much resistance because now my form is perpendicular to the weight into gravity.  I'm doing elbow in front of my position exercise, but the squeeze is the hardest, not the extension. So I would switch out preacher curls for something like a concentration curl because it's the squeeze now, that's the emphasis. Yeah, you're talking about triceps, then you're talking about skull crusher being the top position right here, right? And then you're talking like say you're doing like a tricep extension for neutral, I mean obviously that's probably not the best one, but then dips behind you. Yeah, we're going to get there, absolutely. Yeah, but back to your point with the biceps, like so another thing to manipulate your point, so you could also do a preacher curl with dumbbells for that for four weeks, and then I go over to a preacher curl on a machine. And now machine is different because the tension is still all the way all the way to top. So people have to understand that like you can do dumbbell curls on the which I love to do or a camber curl bar on a preacher bench and it's still it's now a different exercise when I same preacher bench, but now I'm on a machine, right? Or now it's got the cable, right? So that's attached to it or whatever, because of the way the tension is on it. So that is a way of taking a movement that is the same but then changing it because you are changing the tension on it throughout the strength By the way, if you use a bicep machine you can figure this out by looking at the pulley and the shape of the pulley and you'll notice that that it won't be perfectly circular, it'll be maybe be oval shaped, it'll be kind of odd shaped and you can tell when the resistance is going to get harder. So some machines on a preacher curl even though it says 50 pounds on the stack, it's actually 30 at the bottom 50 at the top. Now you might not be able to know this by looking at it if you're not experienced go try it. Go try the exercise and notice the most difficult part of the rep and then the next time you do a similar exercise find one where the hardest part of the rep is in a different position. By the way bands are a great way to do this. I used to do this at home when I was a kid this is before I knew anything about bands all I knew was, wow this preacher curl is easy up here. So I attached a band around the bar and I attached around a pole and I knew that the band would make it harder at the top and I used to blow my friends away when I would have them try that out. I was always surprised why those machines didn't get I don't know more talk like as far as they were casting the others. It's complicated. You think so? That's why because people don't know to change that pin that changes the pulley position. So what the you're American barbell which was gold when you worked there they still have some of those. I love those and you can change and they so there's machines if you've ever seen them so you can educate the audience that doesn't know what this is. Some gyms will have like the preacher curl machine and then on the right normally right on the side where the wheel is or whatever there'll be a handle that you pull out and it normally has numbers one two or three and what you're doing is you're changing the heaviest part of the weight to be either in the stretch position at the middle position at the top which is a cool way to manipulate an exercise that is in the same plane is virtually the same thing but now because you manipulate that it's like it's novel to the muscle because it's not used to the load hitting you like that. That's right but if you just picked an exercise from elbows in front elbows aside elbows in back you're 97% of the way there throwing some chin ups where your bicep emphasize you know squeeze now you're doing a calm down lift. How often do you do reverse curls because I know for me like if I go back to them it's always like I always do too much weight because it's a very like different reverse curls that are hammers that's I'm I'm yeah I normally bounce between so hammer curl break your alice reverse curl the weakling tends to be the break your radialis which is the top of the forum which we'll go to because we're gonna get to the forums in just a second. So next let's talk about triceps now triceps are different the biceps because the hand position matters zero yeah if I'm doing a press down and my hands are facing in facing down facing up that doesn't do anything at all. Which you will see this okay next for the listeners the next time you go to your commercial gym okay next time you go to the commercial gym storm with a young teenage boy I'm guilty I'm sure of doing this at one point in my lifting career and he'll go over the cable machine and he'll do the metal triangle then he'll do the rope push down and then you'll do the reverse grip all the same thing all the same thing and you think it's different because you're doing the rope the triangle and they may even argue like it feels different and well we know why it feels different when you supinate your hand you drive your elbows into your sides more and so it's really about that but as far as what it's targeting as far as your tricep it is it's the same thing and that that kid would be far better off you know doing the rope push downs and then moving the cable all the way down the bottom and then flipping around and doing overhead extensions like that is going to target that completely different so yes the elbow position I mean wrist wrist position no longer matters when we're talking about elbow position matters a lot with triceps because of the way the attachments are for the tricep if my arms are behind my body my tricep is shortened is I move my elbow to being above my body or where you know by my head now the tricep is being stretched at least the long head what's called long head of the tricep there's three heads the long head attaches I believe near the scapula so if I bring my elbow up now I'm stretching the tricep so shortened versus you know moderate versus lengthen you want to look for different elbow positions when you tricep exercises so you could pick three to four because you could actually pick an exercise where your elbows are next to your body in front of your body overhead or even behind your body so there's actually four choices although one of my favorite compound lifts for triceps is elbows kind of behind the body so I tend to leave that out when I'm looking at isolation exercises so the best examples of or some great examples I should say of different elbow positions are press downs press downs elbows next to my body now I elbows in front of my body skull crusher great exercise for that and then elbows here pointing up next to my head or above my body overhead tricep extension rope cable dumbbell barbell all elbow up by my head all three should be present in your routine all three elbow positions now I did say next like behind the body as well this is where compound lifts now it's not so controversial or weird to hear people say compound lifts for great for triceps just because I think it's been more communicated close grip bench press is amazing dips is my favorite I don't think you can beat dips for developing the triceps in terms of compound lifts and that would kind of qualify as behind the body as you go down to the bottom so I don't know what you guys like better dips or close I saw I'm partial to the close grips you're a dips or close grips you know I'm trying what is it about that that I like better maybe I feel like I can load the bench press more and and focus more on tricep because it's just there's more of a like dips are a better how about this dips are a better overall exercise all concede that all day long because it's more functional you have to stabilize your body shoulder stabilization in there core stabilization in there control of your own body weight it would win as far as a better exercise but I have I've had I personally think I've had more success putting mass on my triceps from close grip inches because it's easier because it's easier to control I can load it more and I can concentrate just all tricep and take it out of my chest and shoulders and put more my tricep and for that reason I lean that way a little bit more although both belong in the routine and I know there's probably a lot of people out there too I've come across it that avoid dips because of their shoulder has issues and so I get that like too so the close grip branch press is a great option for that to load I would say you may use band assisted dips if that's the case get good at them because it's such a great exercise it is by the way dips for triceps and dips for chest look a little different if you're doing dips for chest you don't want to lean forward and you want the elbows to flare out a little bit if you want dips for triceps you're going to stay more upright elbows are going to be much tighter to your body that's going to emphasize the triceps close grip presses people always screw up by going too close you go too close you are asking for trouble in the wrist this is how I tell people to line up so you pinch your elbows by your side and you want your arms bent 90 it's about shoulder width you have to slide into your ribs that's where you want your arms lined up to where it's comfortable you don't want to be like this to where you're and then another thing is if you want to emphasize the triceps with this close grip press you want the bar to come towards the chest or nipples you want that tricep extension you want the bar to come down at the belly because then what you do is a front delt lift this very front delt heavy so the bar should come back as you go down almost like a compound skull crusher not quite because there is a lift like that but do not neglect these two exercises like that and in fact when I'm building a routine for my arms these compound just like our legs legs we've convinced everybody obviously squatting and deadlifting should be the core of your leg routine well your dips and your close grip bench press and your pull up in my opinion should be the core of your arm routine and then you build the other use the elbow positioning stuff that we're talking about for all your isolation exercise but in a week those have got to be in there you can't have a week go by and there's not a dip there's not a close grip bench press and there's not a pull up involved in there if you are you're missing out on deadlifting or squatting by the way you want to know what's funny about the chin up that we were just talking about a beginner who tries to do a chin up tends to do a bicep chin up it's the advanced person that doesn't because they learn how to do it from back and then you tell them it's for bicep like what do you mean do it like you don't know how to do a chin up properly where you kind of hunch forward and you're pulling with your arms that'll hit those biceps but yeah so for triceps every week you want to do an exercise any exercises that you guys would categorize for you know triceps or biceps for that matter that you think are and I don't want to say a waste of time because there's no such thing as like an exercise it's a waste of time you know what I'm saying but that you tend to not mess too much with because you think it brings the least amount of value I think we've argued this before like I'm not a real big fan of tricep kickbacks me too that's on that list I know you argue it so but yeah no I like it I like it because it's a really good shortened position for the triceps and if you're especially for advanced lifters who often cut their tricep exercises short the reps so whenever you see someone cut a bicep short it typically means they don't go all the way down tricep exercises people don't extend all the way they do this but when you do a kickback you have to really extend the hell out of your tricep that's when you'll see the squeeze but I still I don't rank it it's not a top 10 it's that just fine yeah but people even here they do this oh I mean I still would I would still I mean full full I would still defer to our original top three things that I said you know range of motion compound lifts and then what was the other one I said elbow position those three are the good so no matter what exercise you're doing if you're not doing a full range of motion you're missing out I'll give you a tricep exercise that I think is I mean again they all have value but this one's less value is when people don't even use a handle they grab for some reason grabbing the wire I don't know why people just a tricep exercise by grabbing the wire it's so easy I like that better than a kickback because at least there's tension on the tricep through the entire exercise but why grab the cable when I grab a handle or a rope because you saw a bodybuilder do it be honest I am the bodybuilder I am the bodybuilder I am the bodybuilder I don't think I did it you know what I think the ball actually the fits in your hand is actually sometimes more comfortable grab a rope so sometimes if there's a rope there I would actually do the rope for biceps I know there's value because the elbow position right here but this is so dumb oh curling that way? no no no you mean revert you mean triceps that way no I mean curls it's like I get it like you want to put your arms up and get the elbow position the reason why because there's very few other than the chin up there's not another bicep exercise you're ever going to do with an elbow position there in that fully lengthened position there's even curls behind the head I used to do a lap pull down a lap pull down and I touched my neck so it's such a shortened position and it's so novel that there's nothing else that you do like that but it's not going to like it's not going to supplant not all gyms have where you sit down elbows are way up there and you lock your elbow in here and you curl here and it's an amazing it's an amazing exercise the closest thing to a chin up there's nothing else there's no other bicep exercise you'll ever do with the elbow position like that so I thought you met the reverse skull crusher which I would tell you that's why they named it the skull crusher because that is a stupid way to do that because there is with the pronating and subinating the hands now your grip is way worse more dangerous than you should be let's talk about forearms so forearms obviously strong forearms connect you to the world very important that you have well developed strong forearms and a lot of people don't realize, especially guys this is one of the top body parts that women use to judge whether or not you can find a man attractive also many times the limiting factor why you can't get stronger on some of your curls that's right because we use our hands so little yeah their forearms get so pumped and I've been here before where I'm like curling and it's actually the pump in my forearms and then my grip gives out before my biceps give out now forearms are easy to train wrist curls so really anything with resistance where you're curling the wrist you can do this over a bench or even just standing reverse wrist curls where you're just pulling up and then reverse bicep curls or reverse grip curls which you were talking about this right here develops this muscle here at the top of the forearm called the brachioradialis here at the top of the elbow and nothing will hit that muscle like a reverse grip reverse curl and if you've never done this before go light because they get real sore because it gets tight and sore that's one that you'll feel for a couple days and then one of my favorite exercises just for overall grip strength overall stability throughout the entire body and of course developing the forearms heavy, farmer walks like you hold on to heavy pair dumbbells for time while you're walking and it's an isometric lift it's true it's not a full range of motion exercise but you typically use your forearms in isometric ways so it's not a bad way to train the forearms and it's a very functional way to train the forearms because again you typically need to be able to hold on to something well now how do you feel in terms of like because we talked a little bit about different handles and grips and things for like bicep try some different with forearms right different thicknesses of the bar so because it's an isometric most of the strength that I'm going to build is going to be in the size that's going to be determined by the size of the bar that I'm holding but you can wrap a towel around it and you can have a thicker handle and now it's a different position or you can wrap a towel around it, hold the towel itself or you can pinch grip things in this fashion or even in this fashion and now you're working different positions now order here forearms last not beginning of workout don't work your forearms before your biceps and limit your ability to do the other unless this is like a specialized area for you it's an area you want to focus on then I'd say train them first but rarely ever I've never had a client I train forearms before biceps and triceps I finish with a forearm exercise always at the end of the arm workout and then all the other same rules apply that we always talk about with sets and reps right all the research is somewhere between 12 to 20 sets total in a month per week is what's optimal although I will say this you could probably get away with and I'm going to explain why you typically people get away with less sets for arms because you're doing it in the other compound lifts because every time you're working your chest and your back and your shoulders you're probably involving the triceps of biceps that's how my training has completely flipped from when I was a kid and all I did was triceps stuff all the time I used to do so much compound lifting which I neglected when I was younger it doesn't take much and obviously I attribute some of that to how much I train them for so long that when I do heavy bench heavy pull ups I do row even deadlifting, deadlifting stimulates your bicep you do some of these heavy compound lifts it just doesn't take that much of arm work to continue to stimulate and grow the arms on average I'll do anywhere between 16 sets per body part per week but arms are always about 9 maybe 10 or 11 because they're getting hit with all the other stuff it's like it would be over training almost or a waste of time for me to do that as many sets for my biceps they're involved with almost everything and forearms I do even way less because every back and arm extra every time you grab something you need to hold onto it I've had phases where I've been on like forearm kicks training like that just actually all focused on my deadlift no forearm training when I was in there when I was doing that because we were doing that all training together back in those days when I was chasing your deadlift number that was the strongest my forearm and I didn't do a single forearm exercise it was just from getting really really strong you can hold on to 500 pounds and I'm dead with no straps you're going to have some serious forearm strength if you like Mind Pump if you want to follow some of our workouts check this out go to Instagram Mind Pump Media for under $5 a month we will provide a new workout every single week so you don't have to get one of our full programs although if you want a full program and you want to go for it get those go to mapsfitnessproducts.com but again Mind Pump Media on Instagram under $5 a month get a new workout every single week you can also find all of us on social media Justin is at Mind Pump today we're going to teach you everything you need to know to build a strong, well developed chest when I think of weak points and areas that I struggled with developing for a really long time chest was up there it was for me for sure I got more caught up in the weight I could lift versus how I was developing my body I think it's one of the most challenging muscles to develop for most people because the form and technique


A question for Alexander. It has to do with this new evidence which isn't actually evidence yet, the reports. So how has it turned into evidence? I'm assuming Julian's lawyers are now trying to establish contact with these individuals to see whether they're prepared to testify or to provide witness statements. You can go directly to the US authorities and you can say is this evidence true? And if it is true why was it not disclosed previously at the court hearing before Baritza? That's the obvious first step to take. Now of course the US authorities may decline to answer. They're not noticed up to now denying this evidence but if you can't get it from the United States you can also go to the British authorities because the British authorities were also to some extent implicated in some of these activities and you can get your politicians to ask those questions. People like MPs, we have MPs in Britain who also support Julian and who would undoubtedly be willing to make those sorts of requests. And again I think this is an entirely appropriate question at this time in legal proceedings and that's an obvious first step. If you can't get past that point well I'm afraid you have to get in touch with Yahoo News. Try and establish contact as you said with the people who are involved and if you can't do that either you can still it seems to me come along to the court and say to the court well that we're getting all these extremely concerning reports. They're very concerning indeed. They are consistent with the fact that this is a political case. They're consistent with the fact that Mr. Assange was placed under all this sort of surveillance given that these reports are appearing. We cannot press ahead and extradite Julian Assange until this issue has been fully clarified and we understand exactly what happened because if we do then of course there are all kinds of risks which these reports appear to give credence to. The court can give orders for information to be provided and all kinds of things can be done and I'm sure they are being done.


All right first thing you want to do is get your water boiling. Then we're going to cook us up two pounds of ground beef. I'm using the Kentucky Cattlemen's because it's awesome. Our water's boiling we're going to salt it. Add our two pounds of macaroni noodles. Give them a stir so they don't clump together. Now our beef's done we're going to kind of push it to the side.  We'll put them right down here in the grease. Now we got most of that grease out. It's time to add the orange top. That's the taco. So you can see here this is a 3.5 ounce bottle. We got a little more than half so that's about two ounces in there for two pounds. So I know everybody's going to say oh you got to use a whole bottle to get any flavor. No look let me remind you something. The other taco packets any taco packet that you buy out there is going to have one ounce in it. The only difference is ours doesn't have any fillers like flowers, wheats, anything like that. Real sea salt, no sugar, no chemicals, real flavor. So we're just going to simply get this mixed in. Now you can use some water or a 12 ounce medello. Our noodles are just about done. Let's give it a little sample. Al dente that's right where we want them. Now we strain them. Keep this pot out. That's where we're going to make our sauce. All right you can see it's starting to thicken up a little bit. Let's give it a try. Mmm. Oh that's some flavor packed taco meat. Now we're going to add the birria cooking sauce. So we're going to add one jar of this. Turn this on low. Let this continue to reduce for the next 10 to 15 minutes. We're going to get our pan heated up, half stick of unsalted butter. Now that it's almost totally melted we're going to add some of our flour. Probably about a quarter of a cup to half a cup. This is on a low temperature but you want to move fast because you do not want this to burn. Kind of like making a root. Now we're going to go in with our heavy whipping cream. That mixed around. We're going to add a big bag of Mexican style cheese. This is four cups. Another cup or two of the heavy whipping cream. Fontina. This is one of the best melting cheeses there ever was. So what we're going to do is cut off the hard casing from the outside. Cut this into smaller pieces. Easier for melting. Add in our fontina just like that. We are officially going to go ahead and add the rest of our whipping cream. It's one quart. Look at that y'all. The clumps are starting to melt. We're almost there. We're almost ready to put everything together. Fontina. We're going to dice this up. One whole white onion. About a quarter of a bundle of some cilantro stems and all. Add that into the mix. Last I got two spicy jalapenos. You might be wondering how do I know they're spicy?  That means they're spicy. All right now it's time to bring this all together. Remember I'm totally freestyle in this. Add in our macaroni right out evenly. Now it's time for the cheese. Get it all moved around. Go cheese left behind. Get the rest of that in there. Once you get it evened out we're going in with our taco mix right on top. Now we got about two cups of a Mexican style cheese and then we got about two cups of cheddar and Monterey Jack. Now it's time for those jalapenos and there you have it. Now we go into our 400 degree oven. All right it's been 25 minutes and it looks fantastic. There's only one thing left to do. Now we're going in with a little bit of everything.  I'm 10 out of 10. If you're living that taco life you gotta make this. Yum yum get you some. I'm seriously supposed to be on a diet and I can't stop eating it.


Let us call Sandeep for the next topic, Shaq. Sandeep is the primary author of Shaq and product engineer at Pellivo. So please welcome Sandeep on the stage. I am Sandeep. I work as a product engineer at Pellivo. So the product engineering team at Pellivo is basically concerned with, you know, building services which talk to the core telephony component. So that's what we do. And I'm also the primary author of Shaq. So that's what we'll be talking today, the rate-limiting queuing system which we built and which we are open sourcing today. Yeah. Yeah, moving on. So the problems, right. Any web services which is deployed on the cloud has these two main problems. The first one is unpredictable traffic spikes on the cloud infrastructure. So generally what we do is we kind of plan for capacity, right? I mean, when you have a cloud infrastructure running, you plan like 1.5x or 2x, generally, of your peak traffic and you say, okay, this is what my infrastructure is going to be and you work out of that. But what of, consider a scenario where, let's assume you suddenly get a very high spike, like, you know, maybe your average request is 10 per second and then suddenly, like, you know, within the next five seconds, it increases to like 1,000 per second. How do you handle that? So that is one problem. And there are a couple of ways to quickly solve this, right? The first one would be the first thing which people would think is, like, you know, over provision, like, you know, have a lot of service already in production and then, you know, you say that, okay, my infrastructure would be able to handle a lot of traffic already. So I need not worry. But that kind of does not make any business sense, right? I mean, why would you have a very huge cluster just for a minute or two minute spike or not even minute or two? It kind of is like an overkill because you would be spending a lot of money on the infrastructure and it kind of, you know, you would lose a lot of money if you do that. The second thing would be to, if you are on some infrastructure provider like AWS, you would maybe have some auto scaling, something like a machine goes down, it comes up or when the load increases, it comes up. But again, there is a problem where, you know, by the time the machine comes up, the spike might have already ruined your entire system. Like, you know, it would have had a very bad impact on your system. So those are the two immediate solutions, but they do not solve the problem. To give you an example where this might happen, let's consider, for example, a data analytics company or something. So what it might do is it might have a set of claims who might be giving out data inputs, say, for example, like Google Analytics or something which would send out page hits to your server. And suddenly, let's assume one of your claims goes on the front page of Hacker News or TechCrunch. It gets featured in TechCrunch and there's like a sudden spike in traffic and there's a lot of traffic coming to your infrastructure and you just need to handle it. So that is one particular use case which you can talk about. The second one is gracefully handling third-party services. So here, what happens is, I'm sure in most cloud services, we would be using some third-party services. Like, for example, you would be using MailGun or SendGrid to send out emails. So what would happen in such a scenario is that the third-party services would actually have a cap on your usage. What they say is, okay, you can't send more than 300 emails per minute or per hour or whatever. They have those caps. So that is another problem which we face generally. So looking at the first problem, if you take a look at a simple architecture which would represent this, so it basically would have a HTTP server that and whenever the request comes to the HTTP server, it would forward the request directly to its respective cluster. Like, let's assume there is a different service cluster number one, service cluster number two, service cluster number three. So what would happen in this scenario? Like, what happens, what would happen in when a spike occurs is represented in the graph. So you can see that in the graph to the left, right? So there is a sudden huge spike on the HTTP server. So because of this, because of this spike, you can see that the entire service, because a specific service cluster is being impacted very highly, which is the graph to your right. So you can see a clear correlation, right? I mean, as soon as the server which is fronting earlier infrastructure gets a high load, then it just forwards all the requests to a particular cluster and the cluster just, you know, is suddenly under high load. And what that does is because of this spike, it affects all the users using that particular cluster. So this is kind of a not so efficient architecture. So that is the problem number one. And to illustrate the problem number two, it would be something like this, where there's a third party service and you're trying to make a request and it's again the same problem which I explained, they would have caps and you would not be able to, I mean, you might not be able to adhere to their rate limits. So to think about it, the most simple solution for this would be something like this, like, introduce a queue, right? I mean, this would solve the basic problem where all the requests are directly sent to the next level of clusters. So what this would do is this queue would basically buffer all the requests and then the service cluster number, service cluster two, can pull out these jobs depending on their capacity. Like, you know, if they're ready to accept jobs, it keeps upsetting. Otherwise, it will be in the queue and it can accept at whatever rate it wants. So this is a very simple system, like this can be very easily implemented by some most popular queues. Like, for example, salary, right? You just define a task and you just say, okay, I just need this worker to be running in this cluster and the other worker to be running in a different cluster and then it just pulls the jobs. But there is a primary problem with this. The problem is that there is a single queue. So what would happen is, let's assume there is a spike and the spike is related to a single cluster. Let's assume it is service cluster number one. What that would do is that would fill up the queue and that would slow down the request by people who are trying to make a request to the cluster number two, right? I mean, there is a single cluster and all the jobs are in that and it is basically causing problems where spike in one cluster is also affecting the service performance of the other cluster, right? So to think about it, the easiest solution would be to put two queues, right? So service queue one and service queue two. So this would solve that problem. What this would do is it has two queues, which means it is, so the HTTP server when it gets the traffic, it knows that it has to route the request for service number cluster one and puts it in service one queue and if it's a request to the service, if it's a request to cluster two, it puts it in the service queue two queue. So this again seems to solve the problem. It seems to be like a good solution, but it is not complete. So the problem here is that even though we separated the dependency between two services, now we have a problem where there is a content sheet between two users using the same service. Let's assume there is a user who has made like 10,000 requests to service cluster one and you have 10,000 jobs in the queue. What if there is another user who is making a single request to the same service? Because there is single queue, you would put him at the back of the queue, which means that he has to wait until all the jobs are completed. So that is one basic problem with this. So even this kind of an architecture can be implemented very easily with something like salary. So what you do is you just define two queues, two tasks and then what you do is basically have a worker running in service cluster one and service cluster two connecting to that queue and just pulling out jobs. So if you think about it, this still has a problem. It's not even like an ideal solution. It doesn't solve the problem completely. So what you would ideally do is an architecture like this. So this is where the shark, the queue which we built comes into picture. So what this does is it gives you the ability to create queues dynamically. So what you can do is have a per user queue or something and then set a rate limit on that user queue. So what that would enable you is that you can rate limit on a more granular level, which means that let's assume a user who's generating a lot of traffic, who's generating a spike will be put in his own queue like his specific queue with a specific rate limit. And that won't affect all the other customers or all the other users who are using the same service because each of the customer or each of the user has his own queue. So this is what shark exactly does. Basically, it creates queues dynamically to ensure fair queuing so that a spike from one user does not affect the spike from other user. And then is the ability to change the rate limits on the fly. And then it gives you a constant flow. It just does not give you jobs and burst. It just gives you a constant flow. So to give you a glimpse of what shark can do, let's dive into a quick hands on demo. So I'll just run through the demo what I'll be doing in the demo. So I'll show you a code snippet basically like the code which I'll be running. So basically, we'll have a worker listening on a particular listening on a queue of a particular service type. And then I'll emulate the situation where there is a customer who is generating a spike and then show you how the queue is able to rate limit and give out jobs at the specified rate limit. And then what we would do is we will emulate the situation where even though there are a lot of queues in that for that particular service type, I will make a request by another user and show that this user request does not get affected because there are already jobs in the queue. So I will show that. And at the end, I'll just show you how easy it is to change the rate limit on the fly for the queue. So let's dive into the demo. So I just need something to hold the mic or something. I'll be showing a code demo. So I just need someone to hold the mic so that I can. Thanks. Hey, once again, I just need to determine it. Should I move it or something? You can try. Other side. Yes, I just want to put this visibly. So Sharks server has this command with the configuration file. So it just takes a configuration file. And once you hit it, it starts running. And then, so this is a simple worker zip. What it's trying to do is basically running in a while loop so that it's dequeuing jobs from the queue at every instant. And then I'm using the request library to make HTTP requests. This queue exposes HTTP APIs for putting the job into the queue and pulling out the job. So there is a HTTP API where you can also basically in the, in the, what I'm doing is basically doing a dequeue operation there, which is slash dequeue slash sms. sms here is the queue type, which I, the service type, right? There are, there were two services service to cluster number one service cluster number two, and there were like a lot of queues, right? So this is sms is the one less assume one of the services. And what it does is it returns, if it the dequeue is success, it returns 200. And if it's the dequeue is dequeue phase, it returns a 404. So I'm just handling both the cases. As it's not like non-blocking, you just need to keep on pulling the server for jobs. So once I get the job, I just, you know, process the job right now. I'm just printing the job and then making a finished request. So what finished request means is in the shark workflow, how it works is whenever you enqueue a job, it goes into the, it goes into this queue, and then when you do a dequeue, it gives you the job, and then it waits for a particular interval for the confirmation from the worker. So the worker, once the job is dequeued, the worker needs to confirm saying that the task or the job which it just dequeued is successful. So that is the job of the finished request. So finished request is again the same. It just has slash finish slash the type of the service, which is SMS, and then QID and JobID. So QID and JobID are basically the unique IDs which define each customer, or in this case, customer or user, and then JobID is what it defines uniquely each job which you are trying to process. So let's look at a simple script which also enqueues jobs. So what I'll do is I'll just run this and as the shark server is running, it'll just keep on pulling sharks ever and waiting for jobs. So let's do this, and then we'll come back to another script which is basically doing an enqueue. Yeah, so you can see that it's pulling and it's waiting for jobs again and again, and then we'll go to the other side and let's see the enqueue script. Yeah, so what I'm doing is here, I'm trying to emulate the scenario where a single user is trying to make a lot of requests. So this is a particular user with ID number one, and he's making a request to the service type SMS, and I'm just inserting 10,000 jobs into the queue on a loop. And you can see in the line number 12, there is a parameter called interval. So what interval does is interval specifies the rate limit of the queue. So what it tells you is that shark server should wait for one second before dequeuing two jobs. So it is basically the inverse of rate limit. So to give you an example, if you want to rate limit this queue, to say that shark should only give out a job of this type with one job per second or something like that, then you would put this as 1000, which means 1000 milliseconds as one second. So this is the inverse of the rate. So you specify that and you specify the payload, which is the actual message which has to go into the queue, and then you just make the HTTP request. So let us actually try to make the HTTP request and see how it's being rate limited. Yeah, right? So at the right, you can see that there is a lot of jobs being enqueued, but you can see that it is getting dequeued at a control rate. It is getting dequeued at one job per second rate. So it's just waiting and it's, it just waits until the time, for example, I mean the shark server does not give out jobs until it is ready to be dequeued, depending on the rate limit. And then once it is, once it is ready, it just dequeues and it is coming out on a control rate. Okay, so let's now emulate the situation where there are like a lot of jobs already in this queue. Let's emulate the situation where now one more user is trying to make a request and how that, how the user is not affected by this. Right? This is, this is user number two. Who is trying to make a same request? Same type of request for the same service type. So if you, if you, if you just run this, you can see that it's, that is too right. I mean, you can see the message that it's saying from, from two. Right? So, so even, even though there is a lot of traffic, because of user one, it is not affecting the traffic of the user two, because, because each, each of them has their own queue, which is created dynamically. And the rate limit is different for both of them. So this is, this is what Shaq does. So to show you, to show you one more thing, the ability of Shaq to change the rate limit. So what, what, what shall we do is this right now is dequeuing at a rate of one job per second. Right? So let's, let's increase that to, I mean, let's decrease the rate and say it should only dequeue one job in five seconds. So what I would do is I have, we have an, it Shaq has an internal API using which you can do that. So I'll just show you a quick example. Yeah, right? So what this is doing is, it is of the queue of the service type SMS. And for the user one, it is trying to set the interval of 5000, which means that one job in five seconds. So that's what it's trying to do. So as soon as I do this, you can see that it starts slowing down. So just now it was dequeuing at a rate of one per second. Now it's dequeuing at a rate of one per five seconds. So this, all this, all this can be done without even any configuration changes. You can just do it on the flight dynamically in real time. So that is where Shaq comes into picture and that is how it differentiates itself from all the other existing queues. Yeah, so let's get back to the slides now. So, yeah, so, so you might be guessing already that, already that it might be based on this algorithm. So for those of you who don't know, there is an algorithm called leaky bucket algorithm.  So what it tells you is that regardless of how sporadic or how erratic your input to your queues, it should be dequeued at a specified average rate-limited manner. So you can see that there is a lot of, you know, a lot of drops going into that bucket and there is like a, you know, very consistent flow of traffic out of that. So this is, Shaq is based on this concept. To dig more into the internals, so Shaq is built on, Shaq has two components, the Shaq server and the Shaq core. So Shaq core implements the basic logic of rate-limiting and Shaq server implements the, implements a HTTP API over the Shaq core. So once I can just remove this. Yeah, so the Shaq core is basically the layer of the queue which talks with the redis. So we use redis for storing all the jobs and then the Shaq server uses Python Flask and G event. So Flask is used to expose an HTTP API and G event makes it async. And message pack is a serialization format we use to make the payload more compact when we store it. So once we say redis, it's like a, I mean, you might be thinking how we might achieve high availability, right? It's kind of in memory and it's, it is not basically persistent, right? So this is what we do in production.  The slave at any point of time will be having a streaming replica of the master and there is a project called sentinel, redis sentinel, which takes care of automatic failover. So as soon as the master goes down, it automatically promotes the slave so that it is the new master so that this is how we achieve high availability. So once we have achieved, I mean, Shaq is, when we're building Shaq, there are two aims. One is achieving high availability, not, not because it, I mean, not, not by building, I mean, Shaq doesn't support high availability out of the box, but it is designed in an architectural way where it can be deployed to get high availability and scalability. So this is how we achieve high availability. For scalability, we, what we do is, we call that single master slave pair as a shard and what we do is we have multiple such shards behind the load balancer. So if you can, if you can see that the producer is enqueuing a job to the load balancer directly without going to the machines and then there are, there is a consumer or worker trying to dequeue the jobs. So there are two caveats here, when you deploy Shaq and this architecture. The first one is that because the producer does not know how many shards are there and each shard is independent, whenever a job is enqueued it can go to any machine, which means that if the, if you send 10 jobs there can, 5 can be in one machine and 5 can be in another machine, which means that when it is getting dequeued the rate can get doubled. So if you say that I want 20 per second, if you use two shards it effectively comes out at 40 per second. So at any point of time the producer should know how many shards are behind the ELB. So that is one caveat. The second one is that the consumer right, the consumer should know where to send the finished request, the confirmation request. So the dequeue happens at the load balancer, I mean the dequeue goes to the load balancer because of which it doesn't know where the job initially came from. It can come from mission number one or it can come from mission number two and the finished request has to be sent to the same mission, right? If it goes to the different mission it won't have the job there. So to do that what dequeue does is dequeue along with the job returns a IP address of the mission from which it was dequeued from so that the worker can make a request to the mission directly. So you can see the green line there which is, which shows that instead of going to the load balancer the finished request directly goes to the master of the particular shard. So that's how we achieve high availability and scalability. So as shard is open source and it's available so we have a roadmap here for shard so right now what's available and what's not available. It's a new system which we have built and it is still in initial stages but we have been using it in production for a while now. So we have the enqueue API which is basically to enqueue a job. We have a dequeue API to get the job out of shard and then the finished API to mark the job as success or fail success. And the interval API and matrix API are other APIs where interval API is used to change the rate limit of any queue in real time and the matrix API gets you a very brief matrix. So what we have in pipeline is to build some feature where you can check for job status of each job and then you can have a feature of max retrace or even extending matrix API to give richer analytics. So one thing which is already also missing is the shard client library. If you see any queuing system the client library does not have to do much right. I mean just has to connect and dequeue a job but right now in us you just have to have a loop and which does all those dequeues. So we already use a shard client library in production right now but it's not yet mature to be open sourced. So it's in the pipeline which we will be open sourcing it very soon. And of course as it's an open source project any of your suggestions any of your improvements which you guys want or any of the things which you think is a very good thing to go into shard as a feature would be implemented. So shard is available at shark.io you can check out the documentation. You can check out the source code there are GitHub links, documentation FAQs. So you can I think you probably can check out shark.io. Yeah that's it guys. We can have a brief QA session. If any of you have any questions. I just want to know like how is this shark server different from this rabid MQ server like how is it what are the advantages of using sharks instead of rabid MQ. So the main brand of shark is that they are very good to be able to track things when you need it. So that is one way to see it. So some of you can use some of the things that you want to be able to track things when you need it. So the basic thing is that you want to be able to track things when you want to take specific tasks in these kind of situations, these type of things. And then you might have any function or something like that. But which kind of thing will create as many things as you want on the plate when you need it with everything you want to be able to do. So that is one good point and the second one is you can see very much one thing. So what can be considered as the biggest thing that you will have to be able to track things when you need it. And then you will be able to see the things that you need to do. So that is the basic thing. So probably after one more question. So you have talked about the output please. What is the output please. What is the output please. What is the output please. What is the input please. Okay right, right now the way it's architected, it's architected in a way where the basic assumption is that the broker is able to take as much as it can. So that is the basic assumption. So also, also it kind of does not make sense. I mean you want a queue to prevent such a scenario. Say for example you are using this for an API or something. The worst thing would be the worst thing for the customer would be have exceeded your rate limit. So instead of that, you can just accept and push it into the queue. So that is the basic problem which we are trying to solve. So if you try to control the rate limit while you are enqueuing, it means that you have to throw an error back to the user. Exactly. I get your point. But that is what it is trying to solve is what I am trying to say. So shock is trying to solve that problem. Shock is trying to say that your resource is not getting overlanded. I will just accept it and push it into the queue and it will get dequeued at a later point of time. So why was the design decision made to start this project from scratch instead of just patching it onto salary which is more widely used? That is a pretty good question. So when we evaluated this right, I mean when we evaluated salary to use this, so when we looked at the design of salary and the way it uses Redis data structures, the inherent design was not rate limiting for salary. So there was a lot of work involved which involved a lot of changes to the internal salary code which was kind of risky, right? I mean you can do that, you can always do that but it is always best to get away with it as long as you are, so it is like going to the danger zone. You need to maintain it on your own and then you need to make sure that it is bug free and it is not causing recursions on any other part. So that was one thing and moreover I think it was the basic underlying factor was that it did not, the salary was not architected in a way to support queues dynamically, to support rate limiting queues dynamically. So that was one reason. Do you intend to support Rebit MQ and priorities? To intend to support Rebit MQ as a broker and priorities? Yeah, that is actually probably a good idea but I will tell you why it was not possible. So you can use Rebit MQs with priority queues but the number of queues you define is constant, right? I mean, you are saying, can I plug in Rebit MQ? No, right now, no. So right now, shark is heavily dependent on the data structures, underlying data structures for Redis. So right now there is no support for any other broker except Redis. So you said that you used Lua in your project. So could you just throw some light on what you used Lua for? Okay, that is actually a good question. It is my bad. I missed the point to say why I am using Lua. So basically what Redis does is it explores a scripting language called Lua. So if you see the project, I mean, if you check out the source code, you will be able to see that NQ operation involves a lot of separate Redis operations. I mean, I update a lot of data structures in Redis in a single NQ, which means that I can't be having it, I should be having it in a single transaction. I can't like, you know, have separate Redis commands running over and then what if that process gets interleaved and there is some other process trying to access Redis the same data structures that would bring an inconsistency, right? So to make the operations atomic, say, for example, the NQ operation should be atomic saying if there is one NQ going on, there shouldn't be another process which is trying to NQ to Redis. So to achieve such sort of atomicity, we use Lua. You have dynamic Qs. Yeah, so you're aware that there are like multiple Qs and each Q has a rate limit, right? So what we do is basically, I mean, I'm not sure how many of you understand Redis data structures, but there is a data structure called sorted set. So what it does is the sorted set takes a value and a score. So what it tells you is that this set can have a value and at any point of time, it will be accompanied by a score and the score, the values will be at all points of time sorted with respect to score, right? So at any point of time, if you pull the first object, it ensures that it is the lowest score in the entire queue. So we use that feature. So what we do is we basically put the Q ID into the as the value and the score as the time at which it should be DQed. So what the worker does is worker keeps on checking that Q saying that the is the first job ready is the first job ready, checking with the current time. And then as soon as it is ready, it just pulls out the first job and gives it out. You said you have master and slave and use Sentinel to really decide election. How does the producer or consumer know which is the master and which is slave? Or does it matter? We send the request. Yeah, so this is actually a good question. So if we go back to this, I'm not sure if we have time. So, guys, okay, good. So, right, if we go to this architecture, basically what would happen if the master goes down, right? At this point of time, the Sentinel would kick in and what it would do is it would find out which slave, if there are multiple, which slave to promote and then it promotes. So there are some things which happen at this point of time that there might be some jobs which are de-cured and which are still pending to send the finished request. So the finished request would have the IP address of the old machine, right? It would not have the IP address. I mean, the machine would just bend down. It would have the IP address of that. So what it would probably do is the claims can be the Sentinel, at the end of the Sentinel, at the end of the failure process, there is a script which can be run to reconfigure all those things so that the client can be notified saying that, okay, this is the new slave or this is the new server to which you have to make a request or possibly what can happen is that that is, I think that is one good approach to do that, do the failure process. Yeah, so if you understand how Redis Sentinel works, right? So Redis Sentinel has like so many Sentinels installed. So the ideal way would be to run Sentinels on each of the claims. So as soon as it knows that the master is down, it starts a failure process, promotes a slave to master and then at the end of the Sentinel, there is a script which can reconfigure its own claims. So it will anyway be there in all the claims so it will reconfigure its claims. So I like the idea of making claims. So in the burst kind of example, right? It's not just that there are too many requests but that also sometimes some kinds of bursts are too many clients.  So you have thousands of clients each trying to make one request. So here you will create thousands of queries, which doesn't really solve the problem. So we have a lot of things to do and it has a pattern available. So when we load the site, we have the same pattern here, between the same pattern here and in the middle, we have the same pattern here and in the center, we have the same system. So we can create an instance where we can create news, rates, we can create news from that particular website. Which means that in that particular, the password from the portal to that particular website is not affecting the current process. Okay, so the queue destroy process is automatic. So if there is no job left, it just destroys the creation, right? It depends on hello, you able to hear me? Yeah. So the queue creation process, right? It depends on your business logic. So if you want the queues, you can basically say, for example, you have, you're making an API request and you have a service which users used to make API request. So what you can do is probably create new queues for each user. So you can have a user ID as the queue name, so that each user will have his own queue. Did I answer the question? Yeah, so basically on the business logic. So this is one example which I'm giving, but depending on the business logic which you have, you can create a number of queues. Yeah. So in RabbitMQ, we have the priorities that has been set for the queues. Likewise, even do we have that here? Priorities that have been set low, medium and high, which is being, which is the default here? So there is nothing called as a priority here. So priorities manifested as rate limit. So if you want this particular queue to have, I mean this particular queue to dequeue at a higher rate, you can set higher rate limit so that it processes jobs at high intervals. But two queues who have the same interval, there's no priority. I mean there is no factor which determines this queue is more important than this queue. The only factor which determines which queue to pick the job from is based on the rate limit. So in that scenario, instead of making user level queues, you can create queues based on the priority. So you can say this queue will have 30 as the rate limit and 30 jobs per second. Or this queue will have 40 jobs per second depending on the job or the message type. So you can probably use that. Or what you can do is you can, if you want to have both, like if you want to even have this and have that, then you can change the queues. So change the queues in the sense, it's a way by which you can have. So it basically is rate limited on a particular way where it is dequeued at this queue based on the user. And then probably you can put it in another queue if it is going out to a third party service provider based on that particular rate limit. So you can just re-enqueue it back with different QID, which is the... Yeah, probably, yes. We have questions, we can take one more. Okay, so I'll answer the second one first. So about the IP address, right? And it depends on how you deploy it. So if all of them are in the same... Let's say you're deploying out on AWS and all of them are in the same zone or all of them are in the same region, then you can probably be done with private IP addresses which AWS gives, the FQDNs which they give so that it can route via the private network itself. And the question about what happens if there is no finish request, right? So SHARC can be configured in a way where you can set the final saying, if there is no finish request coming from the worker before this time, then re-queue the job back. So what SHARC does is wait for that time and sees if the finish request comes. If it doesn't, pulls out the job from... I mean, it's internal data system and puts it back into that queue so that it can be de-queued again by any other worker. Yeah, okay guys, thank you. Maybe we can catch up post lunch, we can discuss more. Thanks. Thank you, Sandeep. We have lunch available.