What's going on, everyone? Sam here with late in sports cards, we're in 22. Can you select football hobby, 12 box, full case, break number 14, random division style. There's a look again at your random results. As always, you can find those on the websites, under the results tab, as well as the link that's in chat. So, good luck, everybody. Let's do it. Full case, oh, select, always a fun time. Looking for the zebra, hopefully some gold, some greens, maybe a one-on-one or two.  Breakest legs. That could happen. Sideways box, interesting. I jumped off the cliff over. Bad move, bad move, bad move. Bidding. That was not a good one. Oh, yeah. Kenny Pickett, Traylon Burks, Prussian Harris Silver and Michael Dick. See if the sideways box mojo is in effect here. Blue, Davis Mills to 149. Fattucassi, Silver of Calvin Austin. CJ Mosley to 149 for the Jets. Silver, David Ajabo, Rookie and Devon Bush. Silver, Jaylen Waddle. Silver, Nick Bosa and Jordan Davis, Field Level Rookie. Son Haskins, nice. 38-49, Drake London, Rookie Swatches on the track for the Falcons. Silver, Bobby Wagner and Michael Parsons. There's Michael Pittman, Jr. to 249. Silver, Jerome Ford, Tagan Quitteriano. Kenny Pickett, Sweet Level. Chris Olave, Rookie. Silver, Amanra and Matt Judon. Traylon Burks, Rookie. DJ Moore, there's a Nick Chubb. A, Silver, Russ. Broncos country led the ride. Fred, Cameron Jordan, that is to 99. We've got Kenneth Murray, 75 up to 75 on the red auto for the Chargers. That is going to be, so London's NFC South. Kenneth Murray, AFC West. Serena Serena, yeah. She said yes. White Lamar Jackson to 35. 15 to 35. Silver, Andrew Booth. Silver, Serena was it, yeah. Kyle, did you say yes? Yeah, yeah, said it to me. Jaylen Waddle. There's a Taekwondoer in 88 of 99. Jersey Auto for the Patriots. I'll tell you, Kyle's bottom line. Oh, God. We all played four times I paid for it. Oh, yeah, he told me about that. And he goes in and pays. So we paid for a five-sum. And he doesn't pay me. Silver, Kyle Hamilton. He didn't pay you. No, we paid twice. XRC, defense two should be for the NFC West, I want to say. Yes, Devin Witherspoon. NFC West, cornerback for the Seahawks. Nice one there. Got him. Got him. Put that in my pocket. Sucker. I paid for it. Bailey Zappi, sweet little 149. It's unreal, no respect. Silver, Drake, London, Fred Warner. He's going to be in the hole because of that kid. That's ridiculous, dude. Damian Pierce. Josh Batscalf, silver rookie. He might never get an inviting end, man. Yeah, that, yeah. That is the Sean Watson wait to 35. Zach Wilson, 57 of 99. Blue Auto for the Jets. Chris Olave. He's waiting for the pay me. He's sitting in the bottom of the game. Oh, hey, when I was there, I'm like, what? Hurry, pay. Silver Devonze Adams. John Dodson field bubble. We say I have a couple drinks out of it. True. Sauce Gardner, tie-dye, neon icons. AMC East, 13 of 25. Nice one there. Sean M, nice one there, Sean. Silver, AJ Dillon and a Sam Darnold. Blue, Kyler, 2199. Silver, Cam Jordan. Chase Claypool. Sauce Gardner. There in Matthews. Christian Watson, 33 of 60. Red Auto, nice one there for the NFC East. Or NFC North, NFC North, excuse me. It's going to Rakesh. Blue, Sauce Gardner to 99. There you go, NFC East. Jordan Boyer. Silver Devonze Wyatt. John Dre Hopkins. He paid. Kyle Pitts, 54 of 75. NFC South on that one on the jersey card. Linderbombs. Silver, Cooper Cup. Dante Forman should have beat him off in a parking lot. I was never thinking about it. It's a stealer's truck. Desmond Ritter, there you go, it's collateral. Desmond Ritter again. Silver, CJ Mosley's kid. Slash and tires. Red Choice, Micah Parsons to 49. Sweet level. Silver, Cam Juergens rookie. Allen Robinson. All right, guys, again, we're down to 14 to go on 2020 Bowman. 14 spots to go. That is breaking soon. 14 to go. Let's get that filled up, everybody. We're almost there. We're getting very close to being sold out on the night. Christian Watson, snapshots. Silver Traylon Burks and Ed Ingram. You know Donnie will walk in there. There's an Orange, Ron Dale Moore to 49. A Allen Robinson Auto to 49 on the red NFC West. Mark Andrews. Andrews. XRC. Kenneth Walker. Silver Mahomes and Dalvin Cook. That is going to be wide receiver three.  I believe Zay Flowers, I believe. Yup, Zay Flowers for the Ravens and the AFC North. Nice one there, going to Mike K. There you go, Mike on the Zay. April Showers, bring Zay Flowers, baby. Jettos, 31 of 99 for the NFC North. Jersey Guard. Silver, Nick Bonito, Vaughn Miller. White, Mark Andrews to 35. AFC North. Jones, Silver, Saquon. And a Breeze Hall Rookie. Kenneth Walker Rookie. There's Silver, Derek Carr and Derek Carr again. Kenny Pickett, Silver Sensations. Mark Andrews, Silver and Tyler. Kenny Pickett on the Tri-Color Rookie to 249. Nice one there, AFC North. KP Action, Silver, Brian Asamoa and Amari Cooper. Rashid Shahid to 199. Silver Lamar and Kyle Phillips. Nice, Whitefield level. Desmond Ritter 6 of 35. NFC South. There we go, Jeffrey. Congrats, buddy. Nice one there, my friend. Rokwan. Hey, Silver Juju and Kevin Harris. DK. 2199, Serian Davis Price. Jersey Auto, NFC West. Jeffrey again. And Jair Alexander. Josh Allen. Silver, Deshawn Watson. And Tarelli Minns. Count of the next box. One thing really quick. And guys, still 14 to go on 2020 Bowman. That's what we got to fill up next. That is not after this break. It is the following break. Let's get on our way. That is a Silver Chris Godwin field level and a Christian Kirk. DK Mechaf, 4 of 75. White Jersey, nice little Jersey match there. For the NFC West. Silver Skymore, Damian Pierce. Damian Pierce in the Icon. Silver Village Jones Jr. and a Breez Hall field level. Silver Rokwan and Jalen Hertz. Serian Davis Price, 2199. Silver Damian Pierce and CD Land. Blue, Cooper Cup. 2, 149. Silver, Brian Robinson Jr. and Cam Akers. George Kettle Silver. And Marshawn Lattimore. Barry Sanders, that's awesome. Field level for the Lines. 23 of 25. Layton Vandoresh. Purple, Jersey Auto, 249. For the Cowboys, NFC East. And Brian Burns. Christian McCaffery. 95 of 99. Jumbo Prime Selection, Jersey Auto. NFC West. James Conner, he could be poised to have a pretty decent year. He's good, man. No more de-hop there. De-hop to the pageant, huh? Hopefully not. Dylan Parham to 75. It makes the most sense, to be honest, out of everywhere else he's talking. Asamoah, Silver Rookie. Silver, Stefan Diggs, snapshots. Silver, Akim Hicks and Austin Eckler. Jane Johnson to 99. No, 149 on the maroon. That's what that was. Silver to Sean Watson and Luke Fortner. Luke Fortnite. Luke Fortnite. Sounds like Fortnite. It's the same first five letters. It works. It works. Maroon, Darren Waller to 149. John Franklin Meyers. Silver, Tom Brady. At least I didn't pay twice. I'm still angry about it. Damian Pierce, Silver, Cadarius, Tony and Jerry Judy. Just finesty, man. Roquan Smith, AFC North to 149 for the Ravens. Tri-Color, Silver, Dallas Goddard and Trevor Lawrence. Just finesty. Big time. Bailey Zappi, sweet level. Silver, Evan Neal. I probably would be some stars. I'll beat him up. The bathroom. White to 35. AJ Brown. Cedric Wilson, Jr. to 99. Nice one there for the AFC East. There's a pretty bad crease on that. We'll send an empty box and wrap our AFC East. Sorry about that. Yeah, DRock, I'm a Ravens fan. So I have to say that I don't miss Roquan on the Bears. But now I know a lot of Bears fans feel that way. Keontae Ingram to 75. Dora Andrew Booth, Roquie. Silver, Kyler. And Jalen Hertz. Bloop, Tresson Ebner. Nice one there to 149. We got a Silver behind that. Jerome Ford, Roquie. And Trey Hendrickson. Danny Gray, 68 of 75. White, Roquie Swatches. That's what I'm saying. Kwame, David Bell. Aidan Hutchinson, Roquie. Oh yeah. 99. NFL Draft Mystery Autograph Redemption. That'll be random to everybody who has an XRC in this one. You can tag that one, too, by the way. That'll be random, too. Jonathan Taylor, Jair, and J.K. Dobbins. Really, the talks fell through. Wow, I guess Chris Ops-Porzingis is no longer a Celtic. Wow. What happened? T-Rain Davis Price, 8 of 10. Yeah, yeah, yeah. We signed them to a pretty good extension, so I'm pretty happy about that one. Kenny Pickett, Kyle Hamilton. Silver Jamar. Silver Kyle Phillips and Daniel Jones.  Oh my god. I don't think Marcus Morris probably hates the front office as much. We got guys 14 to go.  Almost there, everybody. 14 to go. Because at least now Marcus Morris probably thinks I don't have to play for the Wizards. And that's probably a little bit of like positive. Ravens have an amazing front office. Yes, they do. In EDC we trust, baby. In EDC we trust Eric DeCosta. Multiple master classes. They're when James Jr., 27 of 75. AFC West. Silver Jermaine Johnson. Ed Ingram. Silver Gino. Mark Andrews. Blue Alvin Kamara. Yeah, 299. Silver Derek Stingley. Devon Bush. Yeah, I was too, I was really worried. Ryan Robinson Jr., 6 of 49, field level on the blue checker. Lucene Silver. Rookie. Probably get the Hofstra going to blow it tomorrow. Yeah, I wouldn't shock me. Sauce Gardner. Pierre Strong Jr., 71 of 75. Blue Otto. AFC East. Chris Olava. John Taylor. Silver Sam Howell. Can you make Kyle do the UU thing really quick? I want to watch. Kenneth Walker, snap shots. Silver is Deandre Houston Carson. Reese Hall Rookie. John Taylor. 2, 149. Brian Burns. The NFC South. And Jair Alexander. Red, Saquon Barclay to 149. Maroon. Nick Chubb. Silver is going to be Josh Allen. What's up? He's laughing. Silverpatsch Mahomes. Yeah, there he goes. Silver Chevrolet Lawrence and Mark Hoover. There's Jalen Ramsey. 2, 199. Bailey Zappi. Silver is Amir White. And Amari Cooper. Great trade earlier too.   Again, guys, we've got 14 spots to go in 2020 Bowman. Need to go. Let's get that filled up. Jairus Walker. Jairus Walker would be good. Jairus Walker would be really good there. Donovan Wilson to 199. Silver, Matt Jones. Damn, whoa, chill. Ross Knox. Jairus Walker would be really good for them. Justin Fields. Silver, Jonathan Wilson. And Terry McLaurin. Roger McCreary to 249. Shrek London. Silver, Kenneth Walker too. Isn't that your Twitch bio too? Yeah. That's your Twitch bio. Ryan Asamoa. Matt Corral, 11 of 25. Little Rookie Patch. Nice one there for the NFC South. Silver, Jonathan Taylor, Keem Hicks. I mean, outside of the top three, it's pretty like up in the air who's going to go where, you know what I mean? George Pickens. Silver, Kyle Hamilton, sweet level. Travis Kelsey, field level. It's very up in the air who's going to go where or when, I should say. Chris McCaffrey, field level to 75. Silver, Marlon Humphrey and Portable Patterson. Little Rookie. Silver, Fields and Nick Bolton. Neon Icons, Tom Brady. Silver, Mark Andrews. Blue, Joe Burrow to 99. Silver, Orlando Brown, CJ Mosley. Kenyon Green. John Taylor, nice one there for the NFC West. That's cool. Super Bowl Auto. Chromed Out. Abraham Lucas. Jamar Chase. Redemption. Prime selections, prism signatures. Breece Hall going to the AFC East. On the Breeze Hall. Joe Mixon. Silver, Chris Olava and Neon Icons. Silver, Devin Bush and Marcus Jones. Hey, thank you Lance, taking a spot. Down to 13 to go. Lance. Let's go Lance. Thank you, buddy. 13 to go in Bowman. 2020 Bowman. Let's get that filled up. Again, that is a four box break. 2020 Bowman jumbo. 12 autos to the entire break. Plenty of color. A lot of good stuff for sure. QP with the chat sometime. He's already been banned, dude. Ryan Robinson. Silver, Barry Sanders. I don't ever want to see that guy again. Codolphin's really. Algiers, Sauce Gardner. 2.99. Nice one there, AFC East. Silver, Calvin Austin. Brady. That's so funny, dude. Silver and a Kobe Dean. That's so funny. Justin Herbert to 49. I wish we were recording at the time. Traylon Burks, rookie Silver. That's how many of those had to be destroyed. Destroy them, yeah. Yeah. Then we'll ask for forgiveness later. Kenny Pickett, Silver Russell Wilson and Nick Christian Watson. We'll get Permaband on. Dude, I'm going to strike away, man. There's Amon Ross, St. Brown, 45 of 99 on the Jersey Guard. There you go, NFC North. Silver, Kyle Pitts, Kyle Hamilton. Desmond Ritter rookie. Garrett Wilson, rookie. Silva, Jalen Hertz and Brian Cook. Trevor Penning. What's up, Jeremiah? 2.249. Got 7 of 49, Calvin Austin, the third rookie Jersey auto for the AFC North. I don't know if you saw Peechee Platinum. We have a group break of it tomorrow. I know you're one of our resident hockey guys here. There's Magi Sanders, 2.149. Silver Tua and Sam Williams. Silva J. Jettis, Sensations. AJ Terrell and T. Higgins. Souse Gardner. Deandre Hopkins. John Mechie, 41 of 99. Jumbo rookie Jersey auto, AFC South. Congrats on that one. Now I don't. Kyle does. Kyle and Donnie. We might. Do I have a text out there? Give me a couple. That's your funeral, pal. 75. DeMonte Adams. I don't want to talk to her. Kingsley Enigbara and Harrison Phillips. You can't cut me or anything. You keep your distance. I trust me. That's what I'm saying. Never see it with face. Running. 13 to go. And guys, 13 to go.  You beat me to it. You know what I'm saying.  What'd you say? Go dolphins on that one? Yeah, I got your money. Yeah. I didn't even go in and pay. You probably just got free golf. Yeah. I got them. OK. Silver Aaron Rodgers. Chris Olave field level. Just 13 to go. On a 2020 Bowman Jumbo. So, Sauce Gardner to 99 on the Jumbo Jersey AFC. A lot of sauce in this. Silver Garrett Wilson neon icons. DeMonte Smith, James Cook field level. Silver Shaq Leonard. Jalen Warren. Cam Jergens went flying. Roquan Smith to 149. AFC North tricolor. Sweet level. Silver is Dallas Goddard. Maroon, scary Terry McClourn. For the NFC East. Just send an email to Latins. I know you guys want to just chop him up on that one. Someone was probably trying to scoop up some cereal. Now it's everywhere. 99 of 199. K-9 Kenneth Walker. It's unnecessary, man. Marshawn Lattimore. Mac Jones. Silver Rashad White and Damien Pierce. Hey, Saquon Barkley to 249. And James Connor. That's a tough one, dude. Traylon Burks to 99. It's a really tough one. Charles Haley going to the NFC East. Nice one there. Super Bowl Autumn. What do you think if you're breaking it down? Probably Derek Henry, to be honest. Yeah. That'd probably be my first overall pick, yeah. Red Choice, another sauce. Gardner to 49. Sweet level. One of 49 Jersey numbered. Silver Joe Burrow and I think it'd have to be, to be honest.  Randy Moss. Nice one there on the, what is that, the, oh, the multi-verse. That's sick. This is going to be NFC North and NFC East. So Rakesh C and Drew B, this'll be a random. Again, that's Minnesota Vikings, Dallas Cowboys. This is like one of those what-if cards. That's Randy Moss and a Cowboys jersey. I think it was a... Right. Those are so sick. Brissol, Silver Brady and Cam Acres, as long as I hate that. Yeah. And guys, 13 to go. Let's get that filled up. 2020 at Bowman at Jammu. Bowman at Jammu. Silver Malik Willis and Damar Hamlin field level. T-Law, Silver Isaiah Pacheco and Marquise Brown. It's going to be a blue, Kenyon Green to 149. Gavante Williams, Silver and Daniel Jones. CD Lam, 82 of 99. NFC East. Silver Erica Zucon, LaGeno Smith. Avon Kamara, Silver. Deandre Swift. Bailey Zappi, Neon Icons. Silver AJ Brown, Trey Hendrickson. Baker Mayfield to 249. 199. Jalen Tolbert, Rookie Jersey Auto. Channing Tindall. Silver Devante Adams. Daniel Jones, AJ Terrell. Jay Jedos to 49. Orange, nice one there for the NFC North. Silver Christian Watson and JK Dobbins. Bailey Zappi. Traylon Birks to 199. Rookie Jersey Auto, AFC South. Very nice. Josh Jacobs. Traylance to 199. There's a Kenny Pickett Rookie. Silver Andrew Booth Rookie and Akim Hicks. Las Pacquiao. Reg Marches to 99. AFC North. Kamara. Silver David Ajabo and a T-Law. And guys, 13 to go on 2020 Bowman Jumbo. That is breaking very soon. We are almost there everybody. Let's get that filled up. David Bell to 149. There's Brian Erlocker to 199 and NFC North, that's awesome. Grats on that one NFC North. Now let's get it. All a famer, Brian Erlocker. Kenny Pickett. Brady Neon Icons. Silver Herbert field level. And a DK. The home snapshots. Silver Kenneth Walker, nice K-9. And Joe Burrow field level base. Blue Harrison Phillips to 99. Silver Taylor Heinecke. And a Diggs. Not enough involved in the offense, Diggs. Yeah. Kade York. Silver Sam Howell, NFC East. Derek Stingley. Kenyon Green. 8 of 10, Mahomes. Three colored patch. That's one there, AFC West. Let's go into Scott R. Congrats Scott. Nice one there buddy. That's actually pretty solid. Garrett Wilson. Silver Louisine, Davante Smith. It's going to be a blue Malcolm Rodriguez. Nice hot rod to 99. Silver Kyle Pitts. And Stefan Diggs. Silver Traylon Birch snapshots. Marcus Jones, Silver. And Aaron Rodgers. Traylon Birch rookie. Redemption. Brian Robinson Jr. Rookie signatures, Prism, NFC East. Drew, I believe. Yep, going to Drew B. And Merse. That is NFC East. Kirk Cousins try color to 199. Copper cup. Silva Keontae Ingram. Tite Faray. I think so, yeah. I think he will. Alec Pierce to 75. He's just not on a good team. And Tagan Quinteriano. I don't think Arthur Smith's second to the coach either. Don't see that one. Very much. All right. Silver to Dawson Knox. And Malik Willis, field level. Silver, Cooper cup. Herbert. There's Justin Herbert to 75. On the purple. Silva, Mack Jones. And Alan Robinson. Vonte Smith, Silver Jay Jettas. Cameron Dicker to 149. Elijah Moore to 299. On the Silver Auto. AFC East. Of course, Buck Knight. Jomar Chase, 2 of 75. Nice one there. And the bronze, Sparks Jersey. AFC North. Silver to Marvin Lial. Deandre Hopkins. Silver learned Floyd.  Chiefs? No. Tideye. Silver, Hunter Renfrow, and Zay Jones.  He's gonna bug me. Bills? Yup, Buffalo Bills. Let's go. Yeah, he's gonna be him and Vaughn. It'll be fun. That duo out in LA. Blue, Saekwon to 299. George Pickens, sweet level. Silver, Matt Ryan. And Matt Stafford. Derek Stingley, tri-color to Vance, Nick Boussa. Boussa. Purple, Logan Hall to Yeah, fair, 275. By Robinson, that's where everybody wants to win a ring goes. One of those two teams. And last pack here. Allen, Peer Strong Jr. Red Auto, 260. 8 of 60. Alright, we got a couple of randoms to do here, guys. I'm just gonna make sure nobody has majority on the XRC. I don't believe anybody does. Multiverse. There's gonna be Vikings. That was a 1-1. That's what you wanted, man. Probably, yeah. Yes, that would resell. Yeah, probably not. Yeah, he stinks. He's been out of the NBA forever. Yeah, wouldn't that great. Nobody knows who he is. Overview, there it is. Come on. Yeah, that's nobody's got majority on that one. What are we doing? This is for the randoms for the XRC. Okay. Auto and the multiverse. So we're gonna start with the random for the multiverse. That's gonna be between the Vikings and the Cowboys. So again, whatever division is on top after. Four times. So either the NFC north or the Vikings, NFC east of the Cowboys. Got 1, 2, 3, 4, going to the Vikings, NFC north. NFC north. And then gonna roll the dice on the XRC. Auto's gonna give everybody an equal chance on this one. Three times. Oops, that's a wrong one. That's the X. This is the multiverse. So that's NFC north. My bad, my bad. All right, we're good. 1, 2, and 3. Going to the Vikings, NFC north. So I guess we're gonna stay on there. Oh, no. Nice one there. NFC north getting the mystery auto. Do a quick recap here, everybody. Jamar Chase, Patrick Mahomes to 10. C.D. Lamb, Saus Gardner, Monroe St. Brown, Matt Corral, Irwin James, Danny Gray, DK Metcalf, Jay Jettas, Kyle Pitts, Drake London, Pierce Strong Jr., Elijah Moore, Brian Orlocker, Traylon Burks, Jalen Tolbert, Charles Haley, Kenneth Walker, John Mechie, Calvin Austin, John Taylor, Brian Burns, Pierce Strong Jr., Tyrion Davis Price, Gold, Patrick Wilson Jr., Tray McBride, Flayton Van Der Esch, Tyrion Davis Price, that is going to be Alan Robinson, wide receiver three, Zay Flowers, Christian Watson, Zach Wilson, Tyquan Thornton, Kenneth Murray, defense two is Javon Witherspoon, or Devin Witherspoon, Bresaul, Brian Robinson Jr., Magged Cards, we had the Mystery, XRC 299, we had the Randy Moss, Multiverse, that's Cowboys and Vikings, and then we had the field level white Desmond Ritter, 6 of 35. Going to do it for the break guys, thanks again for the fill, up next we have our mixer.


Moving outside of Africa, the United States is committed to providing Ukraine with the weapons it needs to defend itself against Russia. U.S. National Security Advisor Jake Sullivan said this as Ukraine seeks more military aid from the West. Sullivan said the Biden administration will send more weapons to Ukraine to prevent Russia from seizing more territory and targeting civilians attacks that Washington has levelled war crimes. The line is this. There must be accountability. And the United States will work with the international community to make sure there's accountability. In the meantime, though, we're not going to wait for that. We are going to get Ukraine the weapons it needs to beat back the Russians, to stop them from taking more cities and towns where they commit these crimes, and also to squeeze the Russian economy to increase the pressure and the costs on Vladimir Putin and the Kremlin and the Russian government. That's what we're going to do, and we intend to work in lockstep with our allies and partners in support of the Ukrainians as they defend their country. There are two major issues and points. First and mostly, we need weapons. We cannot defend our country with the fists. We need weapons to defend our country. Second, isolation, economical isolation of Russia. Every cent and every trade that you do with Russia, and every cent that Russia is getting, they're using for weapons to kill us, Ukrainians. And relying on their propaganda, Ukraine is just the beginning. They will roll further. And if we're not going to stop them in Ukraine, they will come further. If we fail, the Western world, the free world will fail. Please do subscribe to our YouTube channel and don't forget to hit the notification button so you get notified about fresh news updates.


Just like humans and dogs, cats can be affected by high temperatures. Heat stroke and heat exhaustion are serious conditions that can occur in any animal. We tend to hear more about heat stroke in dogs, especially those left in hot cars or taken outside as temperatures increase. Cats are not commonly affected by heat stroke because they are less likely to be trapped in hot areas, but this doesn't mean they are not at risk. You can protect your cat by understanding the signs of heat stroke and learning what actions to take. What is heat stroke? Heat stroke is a condition that occurs when the body temperature has become dangerously high. A cat's normal body temperature range is between 99.5 and 102.5 degrees Fahrenheit. An internal body temperature over 102.5 is considered abnormal. If the elevation in body temperature is caused by a hot environment, heat exhaustion may develop and heat stroke is likely to follow. Can cats get heat stroke? Yes, mainly due to being trapped in enclosures. Enemy number one? Cats might consider this a safe and cozy refuge, but then they don't have the ability to escape the high temperatures. They might also suffer heat stroke, also referred to as hypothermia, if left in a car or in a cage during grooming. Braggdon says certain breeds of cats get heat stroke sometimes, too. There are brachysophallic cats which are more susceptible to heat exhaustion, she says. Like dogs, these cats have shortened snouts, small nostrils, and narrow airways, making it difficult to manage the stress of high temperatures. VCA hospitals note that cat breeds such as the Burmese, Himalayan, and Persian might be more at risk for brachysophallic airway syndrome, which could lead to heat exhaustion and heat stroke. What's the difference between heat exhaustion and heat stroke? Heat exhaustion implies the body is showing early signs of stress due to elevated temperatures. If ignored, heat exhaustion leads to heat stroke as a cat is no longer able to thermoregulate and core body temperature exceeds 105 degrees Fahrenheit. A cat's average temperature is 100.4 to 102.5 degrees Fahrenheit. Along with smushed-faced kitties, Braggdon recommends cats with long coats or physical impairments should be kept inside when it heats up outside. Chunky cats, as cute as they are, might also be at risk because of their obesity. Signs of heat stroke in cats. Cats are experts at hiding signs of illness, so you may not notice your cat is overheated until things have become serious. The following signs indicate your cat is overheated and possibly has heat exhaustion or heat stroke. Body temperature of 104 degrees or more, rapid breathing, panting, or respiratory distress, vomiting, diarrhea, anxiety or restlessness, lethargy, dizziness and disorientation, dark red gums and tongue, rapid heartbeat, sweaty paws, drooling with thick saliva due to dehydration, tremors or seizures, causes of heat stroke. Cats are unable to regulate their body temperature as well as people can. The human body is able to sweat and cool down in response to hot environments. Dogs can pant to cool down up to a point, though this process is not as effective at cooling them down in the heat. Cats do not sweat to cool down and they don't normally pant until they are already in distress. To stay cool, cats tend to move to cooler areas like tile floors, sinks, or tubs. Self-grooming can imitate sweating and provide some cooling. A cat's coat provides some protection against the heat, but this only works to some extent. If a cat ends up in a dangerously hot situation, the body cannot cool down fast enough to prevent overheating. Most cats instinctively move to cooler locations as soon as they feel too warm. Most are able to cool themselves before they approach heat exhaustion. However, a cat may become trapped in a hot area like a greenhouse, garage, shed, car, outdoors, or even a clothes dryer. These are unfortunately some of the more common causes of heat stroke in cats. Kittens, seniors, and sick cats are more susceptible to heat stroke because they are even less capable of regulating their temperatures than healthy adult cats. In addition, short-nosed cats like Persians often have compromised airways and are more sensitive to heat. Overweight and obese cats are also more prone to overheating. Hello! This video is sponsored by Beemix Pets. Are you looking for high-quality cat collars at an affordable cost? Check out BeemixPets.com. Use coupon code KittenLife to get 20% off. Diagnosis of heat stroke in cats. Your veterinarian will ask you about your cat's activity and environment to determine what risk factors for heat stroke your pet has been exposed to. Factors such as exposure to high ambient temperature without ventilation, inability to access shade or water, or excessive activity should be communicated to your veterinarian. Your veterinarian will take your cat's body temperature to determine if it has become elevated. Your cat's normal body temperature should be in the 100-102.5 degrees Fahrenheit range. A body temperature of 102.5-104 degrees Fahrenheit is elevated and a temperature of 105 degrees Fahrenheit or higher is life-threatening. Treatment. The best thing to do if you suspect heat stroke is to get your cat to the nearest open veterinary facility right away. Call the hospital or clinic when you are on the way to get advice about safe cooling methods. You may be able to check your cat's body temperature to assess the severity of the situation. If their body temperature is over 104 degrees, you may be able to administer cooling methods at home. Keep in mind that your cat will still need to see a veterinarian. Cooling down an overheated cat must be done with care. It may seem natural to use ice or very cold water, but these may constrict the blood vessels and actually prevent cooling. Ice and cold water may also overcool the cat and lead to hypothermia, another dangerous condition. Take the following steps to cool down your cat. Move them to a cool, well-ventilated area. If the cat is alert, offer cool water to drink but do not force it. Many cats resist drinking water when they are overheated. Use cool or tepid water to soak a towel and place your cat onto it. Do not wrap your cat in the towel as this may trap heat. Change the towel out when it becomes warm from your cat's body heat. Gently apply cool or tepid water to your cat's coat. Turn on a fan if possible. Continue to check your cat's temperature. Stop cooling methods once the body temperature has reached 103.5 degrees. Further cooling at this stage increases the risk of hypothermia. Bring your cat to the vet as soon as possible for an examination, even if your cat seems to be back to normal. Your vet may need to run lab tests to check for damage to the internal organs and cells in the body. Additional treatment may be needed to rehydrate your cat, regulate body temperature, and attempt to reverse internal damage. Sadly, not all cats will recover from heat stroke. How to prevent heat stroke. Be sure not to accidentally trap your cat in an area that gets hot. Never leave your cat in a hot car or other hot, enclosed area. The heat inside can rise far higher than the outside temperature. Do not shave your cat's fur to keep them cool. A cat's coat has the ability to keep them both warm and cool. Additionally, shaving the coat increases the risk of sunburn. If you have a cat that goes outdoors, provide access to cool indoor areas and fresh water at all times. Make sure you see the cat at least twice a day. If you have not seen your cat in a while, check to make sure they are not trapped somewhere. Indoor cats should also have access to fresh water and cool areas. Make sure to leave the air conditioner or fan on when you are not home. Before running the dryer, always check to make sure your cat is not snuck inside. Sadly, this is not an uncommon occurrence. Recovery of heat stroke in cats. If no organ damage has occurred, recovery should be full. However, a cat that has suffered from heat stroke may be more prone to recurrence. Care should be taken to ensure they are not exposed to factors that could precipitate heat stroke in the future. You should monitor your cat for possible complications from organ damage, especially if elevated body temperature was prolonged, including watching for blood in the urine which would indicate kidney damage. Seek veterinary help immediately if signs of organ damage manifest. If you enjoyed this video, kindly press the like button. Also don't forget to subscribe with notifications on, so that you don't miss out on videos like this. Thank you for watching.


Hey, you guys ready? Thank you guys so much for coming. This is awesome. I was really, when they were putting together the schedule, I said, make sure that you put us down in the caves of Moria. So thank you guys for coming down and making it. I'm Tom. This is Yehuda. When people told me I was signed up to do a back-to-back talk, I don't know what I was thinking. Yep. So we want to talk to you today about Skylight. So just a little bit before we talk about that, I want to talk about us a little bit. So in 2011, we started a company called Tilda. It's a shirt. Leia made me self-conscious because this is actually the first edition and it's printed off-center. Well, either I'm off-center or the shirt's off-center. One of the two. So we started Tilda in 2011. And we had all just left a venture-backed company. And that was a pretty traumatic experience for us because we spent a lot of time building the company. And then we ran out of money and it sold to Facebook. And we really didn't want to repeat that experience. So we decided to start Tilda. And when we did it, we decided to be DHH and the other people at Basecamp were talking about being bootstrapped and proud. And that was a message that really resonated with us. And so we wanted to capture the same thing. There's only one problem with being bootstrapped and proud. And that is in order to be both of those things, you actually need money, it turns out. It's not like you just say it in a blog post and then all of a sudden you are in a business. So we had to think a lot about, OK, well, how do we make money? How do we make money? How do we make a profitable and most importantly, sustainable business? Because we didn't want to just flip the Facebook in a couple of years. So looking around, I think the most obvious thing that people suggested to us is, well, why don't you guys just become Ember Inc. raise a few million dollars, but your business model mostly prayer. But that's not really how we want to think about building open source communities. We don't really think that that necessarily leads to the best open source communities. And if you are interested in more in that, I'd recommend Leia Silver, who is one of our co-founders. She's giving a talk this afternoon, sorry, Friday afternoon about how to build a company that is centered on open source. So if you want to learn more about how we've done that, I would really suggest you go check out her talk. So no. So no Ember Inc. Not a lot. So we really want to build something that leveraged the strengths that we thought that we had. One, I think most importantly, a really deep knowledge of open source and a deep knowledge of the Rails stack. And also, Carl's, it turns out, is really, really good at building highly scalable big data systems. Lots of Hadoop in there. So last year at RailsConf, we announced the private beta of Skylight. How many of you have used Skylight? Can you raise your hand if you have used it? Okay, many of you. Awesome. So Skylight is a tool for profiling and measuring the performance of your Rails applications in production. And as a product, Skylight, I think, was built on three really, three key breakthroughs. There were three key breakthroughs. We didn't want to ship a product that was incrementally better than competition. We wanted to ship a product that was dramatically better, quantum leap, order of magnitude better. And in order to do that, we spent a lot of time thinking about it, about how we could solve most of the problems that we saw in the existing landscape. And so those breakthroughs are predicated, sorry, delivering a product that does that is predicated on these three breakthroughs. So the first one I wanna talk about is honest response times. Honest response times. So DHH wrote a blog post on what was then the 37 Signals blog, now the Basecamp blog, called The Problem with Averages. How many of you have read this? Awesome. For those of you that have not, how many of you hate raising your hands for the presentations? So. So for those of you that- Just put a button in every seat. Press the red button if you have. So if you read this blog post, the way it opens is, our average response time for Basecamp right now is 87 milliseconds. That sounds fantastic. And it easily leads you to believe that all is well and that we wouldn't need to spend any more time optimizing performance. But that's actually wrong. The average number is completely skewed by tons of fast responses to feed requests and other cast replies. If you have 1,000 requests that return in five milliseconds and then you can have 200 requests taking 2,000 milliseconds or two seconds, you can still report a respectable 170 milliseconds of average. That's useless. So what does DHH say that we need? DHH says the solution is histograms. So for those of you like me who are sleeping through your statistics class in high school and college, a brief primer on histograms. So histogram is very simple. Basically you have a series of numbers along some axis and every time you're in that number, you're in that bucket, you basically increment that bar by one. So this is an example of a histogram of response times in a Rails application. So you can see that there's a big cluster in the middle around 488 milliseconds, 500 milliseconds. This isn't a super speedy app, but it's not the worst thing in the world. And they're all clustered and then as you kind of move to the right, you can see that the response times get longer and longer and longer. And as you move to the left, response times get shorter and shorter and shorter. So why do you want a histogram? What's the most important thing about a histogram? Well, I think it's because most requests don't actually look like this. Most endpoints don't actually look like this. Right. If you think about what your Rails app is doing, it's a complicated piece, right? It turns out Ruby turned complete. You can do branching logic. You can do a lot of things. And so what that means is that one endpoint, if you represent that with a single number, you are losing a lot of fidelity to the point where it becomes, as DHH said, useless. So for example, in a histogram, you can easily see, oh, here's a group of requests and response times where I'm hitting the cache and here's another group where I'm missing it. And you can see that that cluster is significantly slower than the faster cache hitting cluster. And the other thing that you get when you have a distribution, when you keep the whole distribution in the histogram, is you can look at this number at the 95th percentile, right? So the way to think about the performance of your web application is not the average, because the average doesn't really tell you anything. You wanna think about the 95th percentile because if it's not the average response time, that's the average worst response time that a user is likely to hit. And the thing to keep in mind is that it's not as though a customer comes to your site, they issue one request and then they're done, right? As someone is using your website, they're gonna be generating a lot of requests.  So we look at this, here's a crazy thing. Here's what I think is crazy. That blog post that DHH wrote is from 2009. It's been five years and there's still no tool that does what DHH was asking for. So we, frankly, we smelled money.  Why is the slide not green? Yeah, it should be green in dollars. I think he has the dollars, the make it rain effect I should have used. So we smelled blood in the water. We were like, this is awesome. There's only one problem that we discovered. And that is, it turns out that building this thing is actually really, really freaking hard. Really, really hard. So we announced the private beta at RailsConf last year. Before doing that, we spent a year of research spiking out prototypes, building prototypes, building out the beta. We launched at RailsConf and we realized we made a lot of problems. We made a lot of errors when we were building the system. So then after RailsConf last year, we basically took six months to completely rewrite the backend from the ground up. And I think tying into your keynote, Yehuda, we were like, oh, we clearly have a bespoke problem. No one else is doing this. So we rewrote our own custom backend. And then we had all these problems and we realized that they had actually already all been solved by the open source community. And so we benefited tremendously by having a shared solution. And so our first release of this was really very bespoke. And the current release uses a tremendous amount of very off the shelf open source projects that just solve the particular problem very effectively, very well. None of which are as easy to use as Rails, but all of which solve really thorny problems very effectively. So let's just talk, just for your own understanding, let's talk about how most performance monitoring tools work. So the way that most of these work is that you run your Rails app and running inside of your Rails app is some gem, some agent that you install. And every time the Rails app handles a request, it generates events and those events, which include information about performance data, those events are passed into the agent. And then the agent sends that data to some kind of centralized server. Now it turns out that doing a running average is actually really simple, which is why everyone does it. You basically can do it in a single SQL query. All you do is you have three columns in database, the endpoint, the running average, and the number of requests. And then so you can, those are the two things that you need to keep a running average, right? So keeping a running average is actually really simple from a technical point of view. I don't think you could do it in JavaScript due to the lack of integers. Yes, you probably wouldn't want to do any math in JavaScript, it turns out. So, so we took a little bit different approach. You could, do you want to go over the technical architecture? Sure, so when we first started right at the beginning, we basically did a similar thing where we had a bunch, your app creates events, most of those start off as being active support notifications, although it turns out that there's very limited use of active support notifications. So we had to do some normalization work to get them sane, which we're gonna be upstreaming back into Rails. But one thing that's kind of unfortunate about having every single Rails app have an agent is that you end up having to do a lot of the same kind of work over and over again and use up a lot of memory. So for example, every one of these things is making HTTP requests. So now you have a queue of things that you're sending over HTTP in every single one of your Rails processes. And of course you probably don't notice people are used to Rails taking up hundreds and hundreds of megabytes. So you probably don't notice if you install some agent and it suddenly starts taking 20, 30, 40, 50 more megabytes. But we really wanted to keep the actual memory per process down to a small amount. So one of the very first things that we did, we even did it before last year, is that we pulled out all that shared logic into a separate process called the coordinator. And the agent is basically responsible simply for collecting the trace. And it's not responsible for actually talking to our server at all. And that means that the coordinator only has to do this queue, this keeping a bunch of stuff of work in one place and doesn't end up using up as much memory. And I think this ended up being very effective for us. And I think that low overhead also allows us to just collect more information in general. Yep. Now after our first attempt, we started getting a bunch of customers that were telling us that even the separate, so the separate coordinator sort of was a good thing and a bad thing. On the one hand, there's only one of them. So it uses up only one set of memory. On the other hand, it's really easy for someone to go in and PS that process and see how many megabytes of memory it's using. So we got a lot of initial complaints that said, oh, your process is using a lot of memory. And I spent a few weeks, I know Ruby pretty well. I spent a couple of weeks. I actually wrote a gem called allocation counter that basically went in and tried to pinpoint exactly where the allocations were coming from. But it turns out that it's actually really, really hard to track down exactly where allocations are coming from in Ruby because something as simple as using a regular expression in Ruby can allocate match objects that get put back on the stack. And so I was able to pair this down to some degree, but I really discovered quickly that trying to keep a lid on the memory allocation by doing all this stuff in Ruby is mostly fine. But for our specific use case where we really want to be telling you you can run the agent on your process, on your box, and it's not gonna use a lot of memory, we really needed something more efficient. And our first thought was, we'll use C++ or C. No problem, C is native, it's great. And Carl did the work. Carl is very smart. And then he said, it is now your turn. You need to start maintaining this. And I said, I don't trust myself to write C++ code that's running in all of you guys' boxes and not segfault. So I don't think that, that doesn't work for me. And so I noticed that Rust was coming along and what Rust really gives you is it gives you the ability to write low level code, I'll loss your C++ with manual memory management that keeps your memory allocation low and keeps things speedy, low resource utilization, while also giving you compile time guarantees about not segfaulting. So again, if your process is randomly started segfaulting, because you installed the agent, I think you would stop being our customer very quickly. So having pretty much 100% guarantees about that was very important to us. And so that's why we decided to use Rust. Just keep going, keep going. So we have this coordinator object. Basically the coordinator object is receiving events. So the events basically end up being these traces that describe what's happening in your application. And the next thing, I think our initial work on this, we use JSON just to send the payload to the server. But we noticed that a lot of people have really big requests. So you may have a big request with a big SQL query in it or a lot of big SQL queries in it. Some people have traces that are hundreds and hundreds of nodes long. And so we really wanted to figure out how to shrink down the payload size to something that we could be pumping out of your box on a regular basis without tearing up your bandwidth costs. So one of the first things that we did early on was we switched using protobufs as the transport mechanism and that really shrunk down the payloads a lot. Our earlier prototypes for actually collecting the data were written in Ruby. But I think Carl did like a weekend hack to just port it over to Java and got like 200X performance. And you don't always get 200X performance. If mostly what you're doing is database queries, you're not gonna get a huge performance win. But mostly what we're doing is math and algorithms and data structures. And for that, Ruby is, it could in theory one day have a good JIT or something. But today, writing that code in Java didn't end up being significantly more code because it's just algorithms and data structures. And I'll just note something about standardizing on protobufs in our stack is actually a huge win because we realized, hey, browsers, it turns out, are pretty powerful these days. They've got, they can allocate memory, they can do all type of computation. And protobufs libraries exist everywhere. So we save ourselves a lot of computation and a lot of time by just treating protobuf as the canonical serialization form. And then you can move payloads around the entire stack and everything speaks the same language. So you save the serialization, the serialization. And JavaScript is actually surprisingly effective at taking protobufs and converting them to the format that we need efficiently. So we basically take this data, the Java collector is basically collecting all these protobufs and pretty much it just turns around. And this is sort of where we got into bespoke territory before where we started rolling our own. But we realized that when you write a big distributed fault tolerant system, there's a lot of problems that you really just want someone else to have thought about. So what we do is we basically take these, take these payloads that are coming in, we convert them into batches and we send the batches down into the Kafka queue. And the next thing that happens, so the Kafka is basically just a queue that allows you to throw things into, I guess it might be considered similar to like something like MQP, it has some nice fault tolerance properties and integrates well with Storm. But most importantly, it's just super, super high throughput. So we basically didn't want to put any barrier between you giving us the data and us getting it to this as soon as possible. Which we'll, I think, talk about in a bit. So we, so basically Kafka takes the data and starts sending it into Storm. And if you think about what has to happen in order to get some requests. So you have these requests, there's maybe traces that have a bunch of SQL queries and our job is basically to take all those SQL queries and say, okay, I can see that in all of your requests you had the SQL query and it took around this amount of time and it happened as a child in this other node. And the way to think about that is basically just a processing pipeline. So you have these traces that come in one side, you start passing them through a bunch of processing steps and then you end up on the other side with the data. And Storm is actually a way of describing that processing pipeline in sort of a functional style and then you tell it, okay, here's how many servers I need, here's how I'm gonna handle failures and it basically deals with distribution and scaling and all that stuff for you. And part of that is because you wrote everything using functional style. And so what happens is Kafka sends the data into the entry spout, which is sort of terminology in Storm for the streams that get created. And they basically go into these processing things which very cleverly, cutely are called bolts. This is definitely not the naming I would have used but they're called bolts. And the idea is that basically every request may have several things. So for example, we now automatically detect M plus one queries and that's sort of a different kind of processing from just make a picture of the entire request or what is the 95th percentile across your entire app, right? These are all different kinds of processing. So we take the data and we send them into a bunch of bolts. And the cool thing about bolts is that again, because they're just functional chaining, you can take the output from one bolt and feed it into another bolt. And that works pretty well. And you don't have to worry about, I mean you have to worry a little bit about things like fault tolerance, failure, item potence, but you worry about them at the abstraction level and then the operation part is handled for you. So it's like a very declarative way of describing how this computation works in a way that's easy to scale. And Carl actually talked about this at very high speed yesterday and some of you may have been there. I would recommend watching the video when it comes out if you wanna learn more about how to make use of this stuff in your own applications. And then when you're finally done with all the processing, you need to actually do something with it, you need to put it somewhere so that the web app can get access to it. And that is basically, we use Cassandra for this.  We're just very, very heavy right. Like we tend to be writing more than we're ever reading. Yep. And then when we're done, when we're done with a particular batch, Cassandra basically kicks off the process over again. So we're basically doing these things as batches. So these are roll-ups is what's happening here. So basically every minute, every 10 minutes, and then every hour, we reprocess and we re-aggregate so that when you query us, we know exactly what to do. So we sort of have this cycle where we start off, obviously in the first five, in the first minute, you really want high granularity. You wanna see what's happening right now.  So we basically do these roll-ups in the cycle through the process. So this, it turns out building the system required an intense amount of work. Carl spent probably six months reading PhD theses to find theses, to find data structures and algorithms that we could use because this is a huge amount of data. Like I think even a few months after we were in private data, private beta, we were already handling over a billion requests per month. And obviously there's no way. Basically the number of requests that we handle is the sum of all of the requests that you handle and all of our customers handle. Right. Right, so that's a lot of requests. So obviously we can't provide a service, at least one that's not, we can't provide an affordable service, an accessible service if we have to store terabytes or exabytes of data just to tell you how your app is running. And I think also it's problematic if you store all the data in a database and then every single time someone wants to learn something about that, you have to do a query. Those queries can take a very long time. They can take minutes. And I think we really wanted to have something that would be very, where the feedback loop would be fast. So we wanted to find algorithms that let us handle the data at real time and then provide it to you at real time instead of these like dump the data somewhere and then do these complicated queries. So, hold on. So this slide was not supposed to be here. It's supposed to be a rail slide. So, whoa, I went too far. Okay, we'll watch that again, that's pretty cool. So the last thing I want to say is perhaps your takeaway from looking at this architecture diagram is, oh my gosh, these rails guys, they have completely, they jumped the shark, they ditched rail. I saw like three tweets yesterday. I wasn't here, I was in Portland yesterday, but I saw like three tweets that are like, I'm at RailsConf and I haven't seen a single talk about Rails. So that's true here too. But I want to assure you that we are only using this stack for the heavy computation. We started in Rails. We started, we were like, hey, what do we need? Ah, well people probably need to authenticate and log in and we probably need to do billing. And those are all things that Rails is really, really good at. So we started with Rails as basically the starting point and then when we realized, oh my gosh, computation is really slow, there's no way we're gonna be able to offer the service. Okay, now let's think about how we got there. I think notably, a lot of people who look at Rails are like, there's a lot of companies that have built big stuff on Rails and their attitude is like, oh, this legacy, terrible Rails app, I really wish we could get rid of it. If we could just write everything in Scala or Closure or Go, everything would be amazing. That is definitely not our attitude. Our attitude is that Rails is really amazing at particular, at the kinds of things that are really common across everyone's web applications, authentication, billing, et cetera. And we really wanna be using Rails for the parts of our app. Even things like error tracking we do through the Rails app. We wanna be using Rails because it's very productive at doing those things. It happens to be very slow at doing data crunching, so we're gonna use a different tool for that. But I don't think you'll ever see me getting up and saying, ah, I really wish we had just started writing the Rails app in Rust. That would be terrible, right? So that's number one is honest response times, which it turns out seems like it should be easy, requires storing an insane amount of data. So the second thing that we realized when we were looking at a lot of these tools is that most of them focus on data. They focus on giving you the raw data. But I'm not a machine, I'm not a computer. I don't enjoy sifting through data. That's what computers are good for. I would rather be drinking a beer. It's really nice in Portland this time of year. So we wanted to think about if you were trying to solve the performance problems in your application, what are the things that you would suss out with the existing tools after spending like four hours depleting your ego to get there? And I think part of this is just people are actually very, people like to think that they're gonna use these tools, but when the tools require you to dig through a lot of data, people just don't use them very much. So the goal here was to build a tool that people actually use and actually like using and not to build a tool that happens to provide a lot of data you can sift through. So probably one of the first things that we realized is that we don't want to provide, this is a trace of a request, you've probably seen similar UIs using other tools, using for example the inspector in Chrome or Safari. And this is just showing basically, it's basically a visual stack trace of where your application is spending its time. But I think what was important for us is showing not just a single request because your app handles hundreds, thousands of requests or millions of requests. So looking at a single request statistically is complete, it's just noise. And it's especially bad if it's the worst request because the worst request is really noise, it's like a hiccup in the network. Literally the outlier. It's literally the outlier. So what we present in Skylight, it's something a little bit different and it's something that we call the aggregate trace. So the aggregate trace is basically us taking all of your requests, averaging them out where each of these things spends their time and then showing you that. So this is basically, like this is like the statue of David. It is the idealized form of the stack trace of how your applications behaving. But of course, you have the same problem as before which is if this was all that we were showing you, it would be obscuring a lot of information. You wanna actually be able to tell the difference between okay, what's my stack trace look like for fast requests and how does that differ from requests that are slower? So what we've got, I've got a little video here. You can see that when I move this slider, that this trace below it is actually updating in real time. As I move the slider around, you can see that the aggregate trace actually updates with it. And that's because we're collecting all this information. We're collecting, like I said, a lot of data. We can recompute this aggregate trace on the fly. Basically for each bucket, we're storing a different trace and then on the client we're reassembling that. We'll go into that in a little bit. And I think it's really important that you be able to do these experiments quickly. Every time you think, oh, I wonder what happens if I add another histogram bucket if it requires a whole full page refresh, then that would basically make people not wanna use the tool, not able to use the tool. So actually building something which is real time and fast and gets the data as it comes, it was very important to us. So that's number one. And second thing, so we built that and we're like, okay, well what's next? And I think that the big problem with this is that you need to know that there is a problem before you go look at it, right? So we've been working for the past few months in the storm infrastructure that we built and makes it pretty straightforward to start building more abstractions on top of the data that we've already collected. It's a very declarative system. So we've been working on a feature called Inspections. And what's cool about Inspections is that we can look at this tremendous volume of data that we've collected from your app and we can automatically tease out what the problems are. So the first one that we've shipped, this is in beta right now. It's not out and enabled by default, but there is behind a feature flag that we've had some users turning on and trying out. And so what we can do in this case is because we have information about all of the database queries in your app, we can look and see if you have n plus one queries. You can maybe explain what n plus one query is. Yeah, so people know hopefully what n plus one query is, but it's the idea that you buy accident for some reason instead of making one query, you ask for all the posts and then you iterate it through all of them and got all the comments. So now you, instead of having one query, you have one query per post, right? And what I'd like to do is do eager loading where you say include comments, right? But you have to know that you have to do that. So there's some tools that will run in development mode if you happen to catch it like bullet. This is basically a tool that's looking at every single one of your requests and has some thresholds that once we see that a bunch of your requests have the same exact query. So we do some work to pull out binds. So if it's like where something equals one, we will automatically pull out the one and replace it with a question mark. And then we basically take all those queries and if they're the exact same query, repeated multiple times subject to some thresholds, we'll start showing you, hey, there's an n plus one query. And you could imagine this same sort of thing being done for things like, are you missing an index, right? Or are you using the Ruby version of JSON when you should be using the native version of JSON? These are all things that we could start detecting just because we're consuming an enormous amount of information and we can start writing some heuristics for bubbling it up. So third and final breakthrough, we realized that we really, really needed a lightning fast UI, something really responsive. So in particular, the feedback loop is critical, right? You can imagine if the way that you dug into data was you click and you wait an hour and then you get your results, no one would do it, no one would ever do it.  So we use Ember, the UI that you're using when you log into Skylight, even though it feels just like a regular website, it doesn't feel like a native app, is powered all of the routing, all of the rendering, all of the decision making is happening as an Ember JS app and we pair that with D3. So all of the charts that you saw there in the aggregate trace, that is all Ember components powered by D3. So this is actually significantly cleaned up our client side code. It makes reusability really, really awesome. So I'll give you an example. This is from our billing page. The designer came and they had a component that was like the date component. And the- Seemed really boring at first. Seemed really boring. But this is the implementation, right? So you could copy and paste this code over and over again everywhere you go, just remember to format it correctly. If you forget to format it, it's not gonna look the same everywhere. But I was like, hey, we're using this all over the place. Why don't we bundle this up into a component? And so with Ember, it was super easy. We basically just said, okay, here's a new calendar date component. It has a property on it called date. Just set that to any JavaScript date objects. Just that you don't have to remember about converting it or formatting it. Here's the component, set the date and it will render the correct thing automatically. And so the architecture of the Ember app looks a little bit something like this where you have many, many different components, most of them just driven by D3 and then they're plugged into the model of the controller. And the Ember app will go fetch those models from the cloud, from the Java app, which just queries Cassandra and render them. And what's neat about this model is turning on web sockets is super easy, right? Because all of these components are bound to a single place. So when the web socket says, hey, we have updated information for you to show, it just pushes it onto the model or onto the controller and the whole UI updates automatically. It's like magic. And it's like magic. And when debugging, this is especially awesome too because I'll maybe show a demo of the Ember inspector using this. So yeah. So that Lightning Fast UI, reducing the feedback loop so that you can quickly play with your data, makes it go from a chore to something that actually feels kind of fun. So these were the breakthroughs that we had when we were building Skylight, the things that made us think, yes, this is actually a product that we think deserves to be on the market. So one honest response times, collect data that no one else can collect, focus on answers instead of just dumping data and have a Lightning Fast UI to do it.  It's a smart profiler that runs in production.  But instead of being on your local dev box, which has nothing to do with the performance characteristics of what your users are experiencing, we're actually running in production. So let me just give you guys a quick demo. So this is what the Skylight, this is what Skylight looks like. Let me send this. There we go. So the first thing here is we've got the app dashboard. So this looks like our 95th percentile response time peak. Maybe you're all hammering it right now, that would be nice. So this is a graph of your response time over time. And then on the right, this is a graph of the RPMs, the requests per minute that your app is handling. So this is app-wide. And this is live, this updates every minute. Then down below, you have a list of the endpoints in your application. So you can see actually the top, the slowest ones for us, where we have an instrumentation API and we've gone and instrumented our background workers. So we can see them here and their response time plays in. So we can see that we have this reporting worker that's taking 95th percentile, 13 seconds. So all that time used to be inside of some request somewhere and we discovered that there was a lot of time being spent in things that we could push to the background. We probably need to update the Agony Index so that it doesn't make workers very high because spending some time in your worker is not that big of a deal. So then if we dive into one of these, you can see that for this request, we've got the time explorer up above and that shows a graph of response time, again 95th percentile. And you can, if you wanna go back and look at historical data, you just drag it like this and this has got a brush so you can zoom in and out on different times. And every time you change that range, you can see that it's very responsive. It's never waiting for the server but it is going back and fetching more data from the server and then when the data comes back you see the whole UI just updates. And we get that for free with Ember and D3. And then down below, as we discussed, you actually have a real histogram. And this histogram in this case is showing, so this is for 57 requests. And if we click and drag, we can just move this and you can see that the aggregate trace below updates in response to us dragging this. And if we wanna look at the fastest quartile, we just click faster and it will choose that range on the histogram. I think it's fastest third. Fastest third.  So this makes it really easy to compare and contrast, okay, why are certain requests faster and why are certain requests slow? You can see the blue, these blue areas, this is Ruby code. So right now it's not super granular. It would be nice if you could actually know what's going on here. But it'll at least tell you where in your controller action this is happening. And then you can actually see which database queries are being executed and what their duration is. And you can see that we actually extract the SQL and we denormalize it. So we normalize it so you can see exactly what those requests are, even if the values are totally different between them. Yeah, so the real query courtesy of Rails not yet supporting bind extraction is like where ID equals one or 10 or whatever. Yep. So that's pretty cool. One other thing is initially we actually just showed the whole trace but we discovered that obviously when you show whole traces you have information that doesn't really matter that much. So we started off by, we've recently basically started to collapse things that don't matter so much. So you can basically expand or condense the trace. And we wanted to make it not that you have to think about expanding or condensing individual areas but just you see what matters the most and then you can see trivial areas. Yep. So that's the demo skylight. We'd really like it if you checked it out. There is one more thing I wanna show you that is really freaking cool. This is coming out of Tilda Labs. Carl has been hacking, he's been up until past midnight getting almost no sleep for the past months trying to have this ready. I don't know how many of you know this but Ruby 2.1 has a new stack sampling feature. So you can get really granular information about how your Ruby code is performing. So I wanna show you, I just mentioned how it would be nice if we could get more information out of what your Ruby code is doing. And now we can do that. Basically every few milliseconds, this code that Carl wrote is going into the Ruby, into MRI and it's taking a snapshot of the stack. And because this is built in, it's very low impact. It's not allocating any new memory. It's very little performance hit. Basically you wouldn't even notice it. So every few milliseconds it's sampling and we take that information and we send it up to our servers. So it's almost like you're running Ruby Profiler on your local dev box where you get extremely granular information about where your code is spending time in Ruby per method for all of these things. But it's happening in production. So this is, so this is, we enabled it in staging. You can see that we've got some rendering bugs that's still in beta. And we haven't yet collapsed things that are not important for this particular feature. So we wanna hide things like framework code, obviously. But this gives you an incredibly, incredibly granular view of what your app is doing in production. And we think this is an API that's built into Ruby 211 because our agent is running solo level because we wrote it in Rust. We have the ability to do things like this. And Carl thinks that we may be able to actually backport this to older Ruby's too. So if you're not on Ruby 21, we think that we can actually bring this. But that's a TBD. So I think the cool thing about this in general is when you run a sampling profile, this is a sampling profiler.  That would be very slow. So when you normally run a sampling profile, you have to basically make a loop. You have to basically create a loop, run this code a million times and keep sampling and eventually we'll get enough samples to get the information. But it turns out that your production server is a loop. Your production server is serving tons and tons of requests. So by simply taking a few microseconds out of every request and collecting a couple of samples, over time we can actually get this really high fidelity picture with basically no cost. And that's pretty mind blowing. And this is the kind of stuff that we can start doing by really caring about both the user experience and the implementation and getting really scary about it. And I'm really, like honestly, this is a really exciting feature that really shows what we can do as we start building this out. Once we've got that round work. So if you guys wanna check it out, skylight.io. It's available today. It's no longer in private beta. Everyone can sign up. No invitation token necessary. And you can get a 30 day free trial if you haven't started one already. So if you have any questions, please come see us right now or we have a booth in the vendor hall. Thank you guys very much. Thank you.


Good day everybody. Welcome to a discussion of the gluteal region. Today we are going to demonstrate the superficial gluteal muscles. This muscle that you see in front of you, this is the largest muscle of the gluteal region and this is the gluteus maximus. Straight away you can see that the fibers are running obliquely backwards and this is the one which gives the bulk to the buttock. This is the very thick coarse muscle fibers and latest research has shown that this is composed of both type 1, slow twitch and type 2, fast twitch muscle fibers. So it's a type of postural muscle but it also has other actions. So it takes origin from the sacrum, coccyx and also takes origin from the ileum behind the posterior gluteal line. Insertion is a double insertion. The superficial three-fourths of the muscle gets inserted onto this tough facial structure that you see here. Going on the lateral side of the thigh, this tough facial structure is the ileotibial tract. So the superficial three-fourths of it gets inserted into the ileotibial tract and the ileotibial tract goes all the way down to the leg and it gets inserted onto the lateral aspect of the tibia in a tubercle known as the anterolateral tubercle of GERD. So that is the superficial three-fourths of the muscle. The deep one-fourth of the muscle gets inserted onto the gluteal tuberosity on the back of the femur. So this is the insertion of the gluteus maximus. What is the action of the gluteus maximus? It is responsible for extension of the thigh or extension of the hip joint and lateral rotation by virtue of its double insertion. There are a few special points about the gluteus maximus. The gluteus maximus, as you can see, it is crossing the ischial tuberosity and it is crossing the greater trochanter. I have reflected the gluteus maximus by incising it at its origin. So there is a bursa between the gluteus maximus and the ischial tuberosity, this is known as the ischial bursa. Similarly, when it crosses the greater trochanter, there is a bursa between the gluteus maximus and the greater trochanter, that is known as the trochanteric bursa. And finally, there is another bursa between the ileotibial tract and the lateral intermuscular septum which covers the vastus lateralis muscle of the thigh. And that bursa is known as the gluteal femoral bursa. So, we have seen the origin insertion and the bursa of the gluteus maximus. What about the other actions of the gluteus maximus? The gluteus maximus is the muscle which is responsible for making us standing up from a sitting position, which helps us to sit down, which helps us to climb up stairs and climb uphill. So, these are some functional uses of the gluteus maximus. I am going to reflect the gluteus maximus. And after reflecting the gluteus maximus, we see the other superficial group of muscles. The muscle which immediately comes to our vision or field of view is this muscle here. This is the gluteus medius. And you can see the origin of the gluteus medius is again on the outer surface of the gluteus surface of the ileum between the posterior and the anterior gluteal lines. If you take a look at the fibres, most of the fibres are coming down vertically, they are meeting and they get inserted onto the greater trochanter. So, therefore the action of the gluteus medius is abduction and medial rotation. The gluteus medius is supplied by the superior gluteal vessels, the superior gluteal nerve, the superior gluteal artery. And we can see the branches of the superior gluteal nerve here after reflecting it, superior gluteal nerve. The superior gluteal nerve, it is coming through the suprapyriformis compartment and this is the branches of the superior gluteal artery. And they are all supplying the gluteus medius and you can see the cut portions of them here. So, that is about the gluteus medius. Now, there is a very important clinical correlation about the gluteus medius. If this nerve is injured, the superior gluteal nerve is injured, then the person cannot hold his pelvis horizontal when he is standing on the paralysed side. And the opposite side pelvis will sag down and that is known as the trendlinburg sign. And this will give him one of the three gluteal gates, one is an out swinging gate, high stepping gate or a waddling gate. That is about the gluteus medius. Now, let's reflect the gluteus medius. And what do we see under that? We see a third muscle. And this muscle is the gluteus minimus. This takes origin from, again, the outer gluteal surface of the ilium in the anterior and the inferior gluteal lines. And the fibres also get inserted onto the greater trochanter. My finger has gone in and gets inserted onto the greater trochanter. The nerve supply action is all same as the gluteus medius. And we can see one of the branches of the superior gluteal nerve is supplying not only the gluteus medius, it is also supplying the gluteus minimus. And finally, the last muscle of the group, if we were to reflect this and look further antrolaterally, we see a muscle here. We see a muscle here. This is attached to the tubercle of the iliac crest on the lateral surface and it gets inserted onto the iliotibial tract. And you can see the iliotibial tract here. This is the muscle I was referring to and we can see that muscle here from inner surface and we can see the same muscle from the outer surface. This is known as the tensor fascialata. We can see that the iliotibial tract is considered as the eponeurotic expansion, long eponeurotic expansion of the tensor fascialata. And this same iliotibial tract then again gets inserted into the antrolaterally tubercle of Gerdie. So therefore, to summarize, the iliotibial tract is considered as the eponeurotic expansion of both the gluteus maximus as well as the tensor fascialata. The tensor fascialata also has the same nerve supply and action as the gluteus medius and minimus. And before I conclude, I need to tell you one more thing. The iliotibial tract on the lateral side is the counterpart of another insertion that we shall see on the medial side of the thigh which is known as the pestanserinas. So this is about the superficial group of gluteal muscles. Thank you very much for watching ladies and gentlemen. If you have any questions or comments, please put them in the comment section below. Have a nice day. Dr. Sanjay Sanyal signing out. Don't forget to like and click the subscribe button.


What's going on everybody, Chad here. And today we are checking out a hidden spy camera. So I have two kittens that are unbelievably mischievous. So when I put the normal cameras out, they come up, they knock them over, it's a pain. So I'm gonna put this one in, which actually doubles as a power strip, USB ports, regular plug-ins, and we're gonna see how it works out. But let's get it out of the box first. All right, so you can see we get the user manual. We have the unit itself. So this actually looks like a cat. I did not realize that when I ordered it, that's fantastic. So we have four normal plugs. We have two regular USBs and then a USB-C in the center. And that's actually up here is where the little camera is. On the back, we have a normal three-pronged setup and this will actually go into the ground of the second outlet in your wall. What I really like about this is it's 2.4 gigahertz and five gigahertz compatible. So it's gonna work with my Wi-Fi router no matter what setting I have it on. Another thing I really like about this is I can take my 256 gigabyte memory card and stick it in here. Now this takes HD videos, so I'm gonna need that memory. So why don't we get this plugged in and see if we can catch the cats in action. Have it plugged in and it's already booted up. It went through its little light flashing sequence and then we connected it to our other phone. So let's switch over there and see how it looks. We have the camera connected as you can see, I am in it. We also have the cat down here eating and clear view of the camera. That's 120 degree angle. So that picks it up, no problem. All I needed to do was pair this with my Wi-Fi and the camera and I'm good to go. I can take photos, save things to SD cards and put up alerts. Overall, this was a super easy quick install. Gotta say the prompts were very user friendly and while I make a composite of my reviews I would highly recommend.


This study used Sentinel-1 satellite imagery to assess and monitor rice production in Myanmar. The dense time series of Sentinel-1 data allowed for the identification of rice paddies and their associated characteristics, including growth stages, dynamic ranges, and inundations. The resulting maps provided accurate estimates of the total area of rice cultivation and its seasonal variation. Additionally, the study showed that the Sentinel-1 data could be used to accurately estimate the amount of rice produced in Myanmar. This article was authored by Nathan Torbic, Dya Chowdhury, William Salas, and others.


Check Cummings of Neofect and I'm standing on a platform with a big TV in front of me and he's going to tell me why I'm here. What is the product we're looking for, Adam, what is it for? So this is a tool that gamifies lower extremity rehabilitation. So the idea is when you need to rehabilitate your leg after something like a stroke, you're going to need to do repetitions and this is making those repetitions more fun, more engaging, overall more productive. Okay, so it looks like I'm just standing on a flat platform and I've got something on my chest here with a big white thing on my back and I've got a TV screen here, so what am I going to do? These are sensors that are tracking your movements. This is similar, this is sort of we mixed with Dance Dance Revolution, right? So let's, we can, you're basically that airplane, so you're going to be the airplane and so you'll see that your movements and if you like lean back a little bit and you move side to side, you're going to try to avoid these. Okay, tell the audience what I'm avoiding here. So you're avoiding these missiles, if you will, they're going to start to become more abundant here but the idea is to use your movement and balance and shift your weight in order to avoid that, again it's not all that hard for me or you but for somebody that's rehabbing from a stroke and this is challenging and this is part of therapy. It didn't blow up when I blew it though. That's good. You dodged it, dodged a bullet. Will it, will it blow up if I, if I mess up? It will. Okay, I'm going to go right at it. Okay. Let's see, I want to make sure it, it's bad. Uh-oh. Oh, no, that's interesting, so will this be in, will this be in hospitals and things or in homes or what are you picturing? In hospitals to begin with, hospitals, clinics, the idea is for all of our products to end up in people's homes, right? We want to kind of fill the gaps in care. We want to build the bridge between the clinic and the home and give people more options for therapy, more engaging therapy and better access to therapy. So it's going to start in the clinic and the hospital, don't really have a set release date yet but oh yeah. I just died mid-time, you didn't tell me giant aircraft were going to come flying at me. That was not fair. But yeah, so this is kind of our main product that we're revealing at CES for this year. Very cool and you've got a glove over here that I've been watching people holding onto or a guy's got it on his hands here. What is that? This is our smart glove. It's our flagship device. It's been in existence since around 2010 and it's the same concept, gamifying the rehabilitation process, making the repetitions more fun, except this is for fine motor recovery as opposed to leg recovery. Wow, that's pretty cool. So is that in hospitals or in homes or how's that? Both. So we have a line, the software is different between the home and the clinic but it is equipped to be used in the clinic driven by a therapist or in the home driven by the patient themselves. That's fantastic. Okay, so the name of the company is Neofect? Neofect. And your website is at? neofect.com. N-E-O-F-E-C-T dot com. Thank you very much. My pleasure.


I am Madhura Chitrapatti. I was diagnosed with high blood pressure and was asked to consult a cardiologist. I went to Manipal Northside Hospital. Dr. Nagesh was very understanding. He put me at ease to narrate my problem and he heard me fully. His sharing of his insightful diagnosis makes the patient comfortable whatever be the problem. Apart from the advice on medication, Dr. Nagesh ensures that the patient understands all aspects of proper routine. These definitely make a difference to the patient's recovery. The system at the reception puts any newcomer or regular at ease with quick response and proper guidance. Again at the doctor's reception, nursing staff are friendly and very attentive. On the whole treatment and the entire process is an excellent experience. Cardiologists take care of one of the most vital organs of the human beings on the special day of the World Heart Day. Observed on 29 September, I wish the cardiologists, the life saviours, nursing team of Manipal Hospital, the best in all their endeavors of caring patients and saving lives.