Who remembers Monster House, the movie about a house that was a monster and tried to eat anyone who went near it? Well, I am here to tell a story, for you. I was in a knock shop, looking for things that caught my eye. I wasn't sure about what I would like, until I laid eyes on a three-disc set of open season, Surf's Up and Monster House. I already had all three films on DVD, but I decided to get it just so I could get Surf's Up and Monster House in fresh new copies. It was only $6 and I had enough money in my wallet to get it. I was very happy with the DVD I got. In my spare time, I decided to watch Monster House to keep me occupied. Before I watched the film, I went to look in the special features. However, there was something peculiar about the menu. It had a text saying that there were deleted scenes. Since when were there deleted scenes for Monster House? However, I just decided to watch them, anyway. The first deleted scene was an early version of the Nightmare Sequence. It started with DJ, the movie's protagonist, lying in bed. Then it faded to another scene, showing a close-up of his face. He woke up. However, he appeared shocked by what he was seeing right now. The camera zoomed out and it was revealed he was on Mr. Nebber Cracker's lawn. DJ started hyperventilating. He tried to run back to his house, but he got grabbed by the ankle by the house's carpet tongue. DJ let out a blood-curdling scream as he got dragged into the house. Seconds later, the shadow hand from the final product's Nightmare Sequence appeared and grabbed him by the waist. DJ tried to break free from the hand's grip, but it was too strong. The throat opened on the house's floor, and the hand put him in it, and he got shredded with blood flying everywhere. Then DJ woke up, gasping in his room, as seen in the final film. Then the deleted scene ended. I was shocked by what I saw. Why would they add this in a kid's movie, and whose idea was it to add this? There was a second deleted scene. It was the scene after the house tries to eat the three kids in the police car. The house started returning to its normal state. Then the camera panned into the hole in a wall through a tunnel at high speed. Then it showed the three children in the house. However, something wasn't right. The walls and floors were all depicted of human organs, as opposed in an early draft of the film. The three kids couldn't resist what they were seeing right now. DJ felt the urge to vomit. Chowder got the organ's foul sent up his nostrils and, in his mouth, and Jenny, unfortunately, couldn't hold the vomit in. She fell to her knees and wretched on leftover organs. DJ put a hand on her shoulder to give her company. Chowder shouted, What kind of house is this? Why are there so many organs everywhere? DJ covered Chowder's mouth and shushed him. Chowder, don't yell, you will wake up the house. Jenny got back on her legs, her face looking pale and her eyes looking very puffy. God, I feel very disgusted after what I just saw. DJ then told the other two about their plan to find the heart and put out the fire, as seen in the final film. Then the deleted scene ended. There was a third and final deleted scene, and boy, was it messed up. DJ was looking through Nebber Cracker's house to find the furnace. After a while, he heard soft sobbing. DJ started to get worried about what he was hearing, but he went to follow the sobbing anyway. DJ followed the crying, and he found who was crying, Jenny, next to the staircase. She was huddling, and her face was buried into her arms. DJ asked her what was wrong, but Jenny didn't answer. Instead, she started crying louder. Jenny, what's wrong? DJ asked again. Jenny continued crying. Jenny, answer? DJ grew impatient. Jenny started to cry at the loudest she got, then finally stopped. And she finally looked at DJ. However, something looked off about her. Her eyes were all black, her tears were replaced with blood, and she had scars around her face. DJ fell back in shock with a startled yell. What happened to you? It knew I was inside, and it did this to me. She said softly. DJ blinked four times, until it cut to Jenny again. This time, she was normal. This whole scenario was just a hallucination DJ was having. He sighed in relief. She was okay. DJ, what's the matter? Jenny asked. Oh, nothing. Just a day's rewind. DJ replied. Then the two went back to search for the furnace. Then it showed the scene where Chowder finds explosives. I ejected the disc in shock and fear. I could not believe what I just saw. I was going to destroy the monster house disc, but I didn't want to waste my money on those other products I smashed. So I decided to go back to the shop I bought the DVD weeks later. I told the woman at the counter about the deleted scenes I saw on the DVD. However, she didn't believe me and laughed it off, thinking I was making up stories. I then went home later and decided to keep the DVD, but not watch the deleted scenes. Were those deleted scenes really appropriate for a kid's movie? No wonder the original script had a darker tone than the final film itself. Most kid's movies have some dark moments, but they'll get used to watching them growing up. Be careful what you buy.


We have special programs like teaching history without dividing the lines. But you mentioned during your speech, so different civilizations, so different cultures, and how can we deal with this? And again, I already mentioned that at Harvard University we have a special course, Holocaust and Genocide. We should not group countries. And, you see, I don't want after maybe just to show with photos, and to put together with the photos in Auschwitz and say the same, every game. We like to just, you see, deliberate, never again but it... It always happens again and again. Yes, absolutely. Evil exists out there in the world. There are bad people in the world. I have an answer. I truly agree with you. No negotiation, Mr. But we have to prepare our society to answer on such questions. Sure. So I'd say a few things on those. Look, children are going to suffer. Their parents have made really bad decisions and the children will suffer. I mean, there's a saying in the Old Testament, I think, something about the children will reap the ills of what the parents have done. The parents voted for, supported, embraced Hamas. Their children will suffer from that decision. Children didn't do it. They didn't embrace it. And they are innocent victims and it's sad. And we should feel sadness about it. It doesn't make a difference.  You mentioned teaching history with no lines. But we need to teach history with lines and we do all the time. We don't teach that the Nazis were just like the British.  Well, Hamas is evil. And we need that history. That's fact. If you understand what evil is, they are evil. And we need to teach that. And if we ignore the fact that there is such a thing as evil, then we perpetuate it. We make it possible for it to keep coming back. And at the end of the day, what we need is to fight for a positive vision for the world. And this is the long-term solution. And the solution is a respect for the individual. I don't care where you come from.  I don't care what religion your parents had. The question is what kind of an individual are you as an individual? And what we need is to embrace that idea of individualism, individual liberty, individual freedom. And bring it, embrace it, and bring it to the world. And that's true of the Palestinians as well. We need to bring it to the Palestinians. We need to re-educate them, not re-educate them towards a different form of collectivism, towards a different form of sacrifice of the individual, but towards a respect for individual life. And once people have a respect for individual life, we can all live together quite peacefully. It's when we hate somebody else because of their nationality, or because of their religion, or because of their background, or because of the color of their skin that we get into trouble. It's collectivism and tribalism that ultimately lead us towards war. And individualism is what leads us towards peace. And it's not going to be easy to bring individualism to the Palestinians. But they deserve it just like any other human being does. We should treat people as individuals. First you have to win. Then you have to solve the long-term problem. The long-term problem is respecting individuals and teaching people to respect individuals.


Hello and welcome to the session. In this session, first we will discuss equation of a plane in normal form. A plane is determined uniquely if we know the normal to the plane and its distance from the origin that is if we know the equation of a plane in normal form. Consider a plane which is at the perpendicular distance d from the origin where d is not equal to 0. Vector on is the normal from the origin to the plane and n cap is the unit normal vector along on. Let p be any point on the plane which coordinates x, y, z. Position vector of p is vector r with respect to the origin. So equation of a plane which is at a distance d from the origin and n cap is the unit vector normal to the plane through the origin. So the equation is given by vector r dot n cap is equal to d. This is the vector equation of the plane. Then next we have equation of a plane which is at a distance d from the origin and direction cosines of the normal to the plane mn. Then the equation is given by lx plus my plus nz equal to d. This is the Cartesian form of the equation of the plane. If the vector equation of the plane is given as vector r dot ai cap plus vj cap plus ck cap equal to d then we have ax plus by plus cz equal to d is the Cartesian equation of the plane where abc are the direction ratios of the normal to the plane. We need to find the vector equation of the plane which is at a distance of 7 units that is we have d equal to 7 from the origin and which is normal to the vector given by vector n equal to i cap plus 2j cap minus 2k cap. Now n cap is equal to vector n upon magnitude of vector n that is equal to i cap plus 2j cap minus 2k cap upon square root of 1 square plus 2 square plus minus 2 square and so that is equal to 1 upon 3i cap plus 2 upon 3j cap minus 2 upon 3k cap. Now the equation of the plane in vector form is given by vector r dot n cap is equal to d that is vector r dot 1 upon 3i cap plus 2 upon 3j cap minus 2 upon 3k cap is equal to 7 or this could be written as vector r dot i cap plus 2j cap minus 2k cap equal to 21. This is the required equation of the plane. Next we discuss equation of a plane perpendicular to a given vector and passing through a given point. Let a plane pass through a point A with position vector vector A and perpendicular to the vector n. Let r be the position vector of any point P which coordinates x, y, z in the plane. Then we have equation of a plane through a point whose position vector is vector A perpendicular to the vector n is given by vector r minus vector A dot vector n equal to 0. If we have the coordinates of the point A as x1, y1, z1 and coordinates of the point P as x, y, z and we have that A, B, C are the direction ratios of vector n then the equation of the plane is A into x minus x1 plus B into y minus y1 plus C into z minus z1 equal to 0. We need to find the equation of the plane passing through the point P which coordinates 1, 0 minus 2 and perpendicular to the vector n given by i cap plus j cap minus k cap. From the coordinates of the point P we have x1 as 1, y1 as 0 and z1 as minus 2 and from this vector n we get the direction ratios as A equal to 1, B equal to 1 and C equal to minus 1. So the required equation of the plane that passes through this point P and is perpendicular to the vector n is given by A into x minus x1 plus B into y minus y1 plus C into z minus z1 equal to 0. That is we have x minus 1 plus y minus z plus 2 equal to 0. That is finally we get x plus y minus z minus 3 equal to 0. This is the required equation of the plane. Next we discuss equation of a plane passing through 3 non-colonial points. Consider 3 non-colonial points R, S, T on the plane position vector of R is vector A with respect to the origin, position vector of the point S is vector B, position vector of the point T is vector C. Let R be the position vector of the point P which is in the plane. So vector equation of a plane that contains 3 non-colonial points having position vectors vector A, vector B and vector C is given by vector R minus vector A dot vector B minus vector A cross vector C minus vector A equal to 0. If we are given the coordinates of these 3 non-colonial points R, S and T like coordinates of the point R given by x1, y1, z1, point S given by x2, y2, z2 and point T given by x3, y3, z3 then the equation of the plane passing through these 3 non-colonial points is given by determinant x minus x1, y minus y1, z minus z1, x2 minus x1, y2 minus y1, z2 minus z1, x3 minus x1, y3 minus y1, z3 minus z1 equal to 0. We need to find the equation of the plane passing through the 3 non-colonial points given by point A with coordinates 110, B with coordinates 121 and C with coordinates minus 22 minus 1. From the point A we have x1 equal to 1, y1 equal to 1 and z1 equal to 0. From the point B we have x2 equal to 1, y2 equal to 2 and z2 equal to 1. Then from the point C we have x3 equal to minus 2, y3 equal to 2 and z3 equal to minus 1. So the required equation of the plane which passes through the points A, B and C is given by determinant x minus x1, y minus y1, z minus z1, x2 minus x1, y2 minus y1, z2 minus z1 then x3 minus x1, y3 minus y1, z3 minus z1 equal to 0. That is we have determinant x minus 1, y minus 1, z0, 1, 1, minus 3, 1, minus 1 equal to 0. On solving this determinant we get 2x plus 3y minus 3z equal to 5. This is the required equation of the plane. This completes the session. Hope you have understood how we find the equation of a plane in normal form, equation of a plane perpendicular to a given vector and passing through a given point and equation of a plane passing through three non-colonial points.


Hello and welcome to the session. In this session we are going to discuss the following question and the question says that from this given figure find the radius of the circle. We know that Pythagorean theorem states sum of squares of the length of sites of a right angle triangle is equal to the square of the length of the hypotenuse. That is in a right angle triangle with hypotenuse c and sites a and b we have c square is equal to a square plus b square. With this key idea we shall move on to the solution. In this question we are given a circle on a coordinate plane with a line segment of length 16 units. We have to find the radius of the circle. Now let us label the points on the circle. Here o is the center of the circle. Let this point be m and this point be p such that mp is equal to 16 units and triangle omp is a right angle triangle. We know that any line from center of the circle to the point lying on the circle is equal to radius. So here op and omp are equal and both are the radii of the circle. Also triangle omp is a right angle triangle, right angle at point o. From this figure we see that side mp is the hypotenuse of right angle triangle omp and mp is equal to 16 units and we have to find its radius and let omp is equal to op be equal to x units. So now we have to find the value of x. Now using Pythagoras theorem from the key idea omp square plus op square is equal to mp square that is omp square that is x square plus op square that is also equal to x square is equal to mp square that is 16 square which implies that x square plus x square is 2x square which is equal to 16 square that is 256. which implies that x square is equal to 256 by 2 that is x square is equal to 128. Now taking positive square root on both sides we get x is equal to square root of 128 that is equal to 8 square root of 2 so x is equal to 8 square root of 2 Thus radius of the circle will be equal to 8 square root of 2 units which is a required answer. This completes our session. Hope you enjoyed this session.


Good afternoon everyone and welcome to thestockswishow.com review of Oracle. Oracle is gapping down tonight. Here it is, you can see it. Oops, there it's where it closed tonight at $4251. Now it's gapping down at $39.75. Decent gap down here in Oracle, looking at this for a short, for a short, for a short, for a short. The problem is that this isn't a clean gap. Nope. It's a watch. I'll tell you right now, this is going to be a tough sled in here tomorrow on this puppy. So I'm not going to watch this as a top pick. I'm going to watch the SWH. She is my top pick. But I know everybody loves Oracle and there'll be five, six million people in this tomorrow before the open. There could even be like eight. There are going to be a lot of people in this tomorrow morning. The gap's going to fall through on the morning. But the problem is it's going to fall through in the day. So here's how this is going to play out. And I don't know where this exactly opens tomorrow morning. It's just so far away from now. But it's going to hold the gap. Two things are going to happen here with this. Either it's going to open immediately and break. And you're going to have to be right out for a quick short and it's going to flip even though it's a bearish gap. Or it is going to rally. Rally look like it's going to hold break late on a five or 15 minute chart and then fall all day and bleed. So neither one is an ideal setup for me, quite frankly. It's better if this rally's first. But an immediate break in this, I do not think holds the high of the day. So FYI, if you choose to be aggressive on this, you got to give yourself two trains. This isn't going to trade clean tomorrow. I would be shocked. Absolutely fall on the floor. Fall off my desk chair if this trades clean tomorrow. Why? Because the market's bullish and Oracle's a market stock. And the market's very, very, very, very bullish. Even though it traded down into itself today, the market is still holding unbelievably strong and Oracle's a market stock. And even though it's capping down, I don't see the panic coming into this thing to fall off the planet in stock. I don't see dream targets. I don't see anything crazy in this. But it is a good short. If it sets up correctly, the best thing for it to do it be to rally first and then set up. But is it going to do it? What could happen is it gets a push, a push into the first five, 10 minutes of the day and then flips. And then it's not going to have an extension to the downside. So it's better if this rally's first for Oracle. And I'd wait for confirmed entry on that on the five minutes if you can get it. So I'm going to watch us and look at it. It could do something to make me like it even more tomorrow morning. But I doubt it. I think Oracle's going to be a choppy trade tomorrow to short. It is not along. And even if the day ends up closing green tomorrow on this, this is not along here for anyone to try to do tomorrow. It's just not something you want to go long. OK, because this is really actually gapping down. I mean, it really is. It closed at 42.50 and it's down at 39.79 and that isn't bullish. OK, that is weak. It's weak for this moment in this timeframe in this day. But will it have a day trade short in it? You know, that's the question here. Where did this actually go here? 3880. It's too bad this isn't better. I'm actually surprised this is gapping down. I'm surprised this is gapping down today. I anticipated SWHGapping down, but not this. I just didn't think it was going to. But it is. So I'll be watching this tomorrow. It's a watch. It's not my top pick. It's a pick, but not the top pick. It's a watch. It's what I call a watch. This is a watch tomorrow. And we'll see what it does. Could it go and break early and go and fall a day and like a crazy person? Yes. High odds it happens? No. You know what the best thing this could do to be the best thing in the world could this could do is open pop, set up, go and go all day. That's the best thing this could do to have a pop in it. Kind of like the way the Twitter was. That's what this could do. I don't know if it's going to do it though. Yeah, that's what this needs to do. In an ideal world, Oracle opens tomorrow, pops and goes and runs all day. And that's what it should do. Do I think it's going to do that though? No. I think it's going to have a topping tail and a bottoming tail on a body of some color that could be green or it could be red. I think this is going to be a tough trade tomorrow. But it definitely is something to watch. And it could look better tomorrow morning than it does right now. But right now it's right on the cusp. And I didn't rate it yet. I'm not going to rate it into the morning anyways because these things can change so much. It's just going to be down at 36 by tomorrow morning or it could be up to 41. Either way, it's going to have millions and millions and millions of volume shares in it tomorrow morning for the open. So there's just just weight on it. But it's a definite watch. If you'd like to do things, I'd watch it for a short tomorrow. I wouldn't go along this of any regard, even if it opens and reverse swishes. Okay. So Oracle is a good watch for tomorrow as well. So this is a Melissa with the stockswish.com. Have a fantastic day everybody or evening, I should say. And I'll see y'all tomorrow. Thanks.


This is stock number 9J310A. We are here at Summit Automotive in Fond du Lac, Wisconsin. You're new and use Jeep and Grand Cherokee headquarters. Today we are checking out this super clean 2019 Jeep Grand Cherokee Limited and Velvet Red Pearl Coat. This vehicle has a 3.6 liter V6 Pentastar motor, has a fresh oil and filter change, all the fluids have been checked and topped off by our service shop during our mandated Wisconsin State Inspection. And this vehicle is 100% ready to go. Like I said, Red Velvet Pearl Coat is the color we shoot all of our videos in 1080p, 60 frames per second. So if you have HD capabilities on your computer tablet or smartphone device, turn them on right now because it is like you're right here looking at the vehicle with me and definitely your best way to check out the quality and condition of the vehicle before seeing it in person. So you can make a smart buying decision from the comfort of your own home. If you want to check out more photos in the upper right hand part of the screen as they link right to our website to this vehicle so check those out there. It comes with the 18 inch painted and polished aluminum rims and it has Michelin Premier 26560R18 tires with right around half the tread left. Didn't see any dents or dings on that front fender. It is in really nice shape. Projector lamp headlamps on the limited. Projector lamp fog lamps. No dents, dings, scuffs, scrapes or cracks on that front bumper. Really nice condition. The hood is an excellent condition. I didn't see any dents or dings on that. And the passenger side fender. No dents or dings on there. Basically we do these videos so that you can get a full walk around on the vehicle and give the most accurate representation so that if you are making a buying decision from far away or even if you're close buying just can't make the trip down. You can still see the vehicle, hear the vehicle, have confidence in the vehicle that you're looking at so that when you get here there's absolutely no surprises and you'll be ready to take the vehicle home. In fact we offer a Summit Auto Fastpass where you can apply for financing on this vehicle, get pre-approved on this vehicle, even appraise a trade if you have one. All right on our website. Have the whole deal done and when you get here you just drive this one, love it and take it home. Back rim is an excellent condition and the back tires have just as much tread as the front tires. As we come around to the back of the vehicle you'll notice it has the towing package, receiver hitch four pin and seven pin wiring. The backup parking sensors, the rear gate is an excellent condition as well. I didn't see any dents or dings on that. Get a really good idea for that metal flake in the red velvet pearl coat and this is a power lift gate, suppress button, it'll power lift up for you. Back storage area, very clean as you'd expect and it does have a full-size spare and jack tools. Those seats do go down nice and flat and to put the rear gate down you press this button, it'll beep at you three times and then begin its descent. Actually beeps a total of four but on the third one it starts coming down and it does have the LED running lights right there. Down this side of the Jeep just as clean as that passenger side I didn't see any dents or dings on that rear quarter and for full disclosure no scuffs, no scrapes on this back rim. Down the rest of this side very very clean, it does have the enter and go system so you just have to have the key in your pocket and it will open the doors for you. It has the blind spot monitoring, heated mirrors and LED directional signals on the mirrors.  There are no rips, there are no tears on the seats. I can tell you with certainty that this vehicle has never been smoked in and both these front seats are heated. Factory floor mats, power windows, power locks, power mirrors and memory driver seat. Auto headlamps and as we hop inside the vehicle here you can see that this one has 12,935 miles you get a digital speedometer on the 7-inch LCD display, outside temperature, compass display and you can change what you want in the corners to pretty much anything that the car can provide. Heated leather-wrapped steering wheel, cruise controls on the right, Bluetooth and information center controls on the left and on the back of the steering wheel are the audio controls. This one has the 8.4 touchscreen radio, the 4C radio I should say, gives you AM, FM and Sirius XM radio capabilities. Also has the factory navigation system. Nice thing about this radio is if you have Android Auto or Apple CarPlay or one of those phones you can use Android Auto or Apple CarPlay to project to that screen. So if you like Waze maps or Google Maps you can put those on the screen if you don't like the factory navigation. But this one does have the backup camera as well and you can do your climate controls here and if you don't like the climate controls there you can do the climate controls there. It's more of a tactile button, especially if you got gloves on or something. Has the backup parking sensors, start, stop, you can turn that off, has the eco mode, sport mode and your stability control. Here's the keyless entry, has factory remote start and the power liftgate option on the entry and go system. 8-speed automatic transmission, you actually get a mechanical shifter here. This one has the Quadra Track 2 system, so you get the select terrain with snow, sand, auto mud and rock as well as the neutral setting for flat towing, four-wheel drive low and a downhill assist control all part of that Quadra Track 2 system. Factory floor mat and passenger seat are in excellent shape, no rips or tears on there, headliner is absolutely perfect. And like I said this vehicle has never been smoked in because and I can say that's with certainty because I know the people that traded it. They don't smoke. Home link buttons and your map lights up there and you do get SOS and assist buttons on the rear view mirror right there. Those are features of the vehicle that you don't have to pay a subscription for. And I did want to point out that this is a memory driver's seat and those buttons are located right there. We'll take a quick look at the back seats and then check out on the hood. Also wanted to point out this does have the capitalist fuel fill which is a really nice feature if you've never used it. Definitely a great feature to have, you're never going to get gas on your hands again. Back seats are very clean, no rips or tears back here. You can see that these seats actually do recline a little bit.  Factory floor mats, carbonings, super nice and clean. And these seats do fold down nice and flat for extra storage.  And last but not least it does have the child locks on the back doors which is a nice feature. We'll take a quick look under the hood. I would personally like to thank you for checking out the video today and hopefully from this HD video.  Now under the hood we have the award-winning 3.6 liter Pentastar V6 motor. Engine bay is very clean, runs very smooth. This Jeep has been fully safety and inspected by our service shop as a fresh oil and filter change. All the fluids have been checked and topped off. Vehicle has been gone through mechanically 100% and is 100% ready to go. I'd highly recommend it from a quality and condition standpoint. You're not going to be disappointed in this one. And to see more pictures of this Jeep or one of our other 450 new and used cars, trucks, SUVs, minivans, Wranglers, half-tons or quarter-tons, one-tons. You name it we got to go to our website www.summitauto.com. Full pictures and descriptions of every single vehicle from two locations all at summitauto.com. If you'd like to check out more HD videos you can go to youtube.com slash summitauto. Remember to like, subscribe and share on this video and all the videos that you see there. In fact in a second you will see a link to subscribe to our YouTube channel and your left. You'll link to more used inventory videos like this one on your ready if you have not been to our website on the bottom link to this vehicle on our website. Click those check us out and we really look forward to helping you with this super clean 2019 Jeep Grand Cherokee Limited. Thanks again.


Earlier brands would devote a lot of their budgets to this one big film or is one digital film also sometimes TVC sometimes But now it's become the speed of influences You are all over the place and we're literally ensuring that you know all brand campaigns are kind of coming to them That's not a way they are on Instagram Short-form video platforms, etc. So and they all they need is a mobile phone to shoot Whatever they want to say about the brand Where does that really lead to production houses which have you know for a brand to go to production house It's a massive budget involved. So in terms of relevance How does that affect the production houses today? I Think there is a happy code systems. I think there is probably a demand for both But like I mentioned earlier if you were to let's say there's a big influence of making videos and 20 brands come to our game and say make videos for us after a certain point One of the brands might come up and say how do I make myself distinct from the 19 others I'm going to the same person and pretty much the influence of voice is there in the videos He or she makes So then they probably need to hire a writer to write a better idea because it just can't survive on the charm of the antics of Good story Then it's okay. I don't want the person's bedroom I want them to be a sea beach So then they have to hire a location to go for a new life and then they say you know what it's it's okay It's nice for this video, but I want my video to look cool. I want it to have a certain production quality Which is why we need to hire great BOP get lighting and you know We serve different needs when clients want something Affiliate resonates with their brand the profile of the brand where they want to pitch it They want a great idea which is going beyond More than a single individual can do for that two seconds, but yeah, it's a there's a bigger thought there's a bigger idea and Like usually when we make films there's a huge checklist of things the brand wants us to know great consumption shots great product shots Great location, great faces or whatever you must like I mean, so there are so many things which We when we make the special films we bring to a certain And also we give a certain gallery that look this


Welcome back to PyCon India 2020 Hyderabad stage. Thank you to all of you for attending the event and speaking with us for another day of talks and start hunting. An important announcement before we begin with our next talk, it is for workshop and distance for life. Now grab them while they are still up for sale. Please welcome our special guest, Devi ASL, from Reservate. Devi has been a long-time pathanista and has delivered many talks at various conferences, including PyCon India and root cons. He has over a decade of experience in building software solutions in different domains in a variety of tech stacks. Please help me in welcoming her to the stage. Over to you, Devi. Hi, everyone. Good evening. Good evening, all of you. Thanks for staying back for the talk and let's get started. I'll go with my intro a bit. I'm Devi and thanks for the introduction which has been already done. I have around 15 years of experience in the industry and I'm working as a staff engineer at Reservate, working on observability and other cool products. And before my stint at Reservate, I was, I have spent five years as an architect at Power2Clyde. With that, I will get to the talk. The topic of the talk is logging. Logging is such a basic thing. All the developers, all of us, we do put log lines and we do log our code. What is it doing? And without that, we all know that it is, we are just blind without the logs. And this is the only way to find out what had happened at a given time frame or from any service or application that is on production. Without that, there's no clue, right? And not just to find out what had happened, we also find out, we also want to find out what exactly had happened and we want to do that quickly. And also, we want to find the scars. When an issue happens, we want to find exactly that log line which shows us what had happened. And we want to do that quickly and also find that it's root cause. And what had happened afterwards? I mean, what was following after that issue has happened, right? And we all know that. We want to do that, but it's not easy. Many a times, I have seen developers putting the log lines, putting more log lines and then deploying their code, just the diff, if you see, it would be just log lines and nothing else. And most of the devs struggle to find the log line that they are looking for. Sometimes that will be in order of minutes and sometimes it's an order of hours in microservices world to find out the root cause, right? The mean time to detect an issue is really, really, really large, huge sometimes. And how do we make it short by making logs easily searchable, filterable and aggregatable? And if we increase the logs, logs in our code at every point of time, then the logging cost would soar up because the maintenance of logs would be costly. How do we balance these two aspects of debugging and logging cost? And how do we optimize it? And lastly, we'll also see how can we trace the request across microservices in logs, right? With that, let's see the, let's attack the problem number one. How can we make logs easily searchable, filterable and aggregatable? This is without depending on the log management system that we are using. So we all know this, we have written hundreds of log lines like this or seen thousands of log lines like these. It just says, it just calls the standard logging library of Python, logger.info, some sentence, transaction succeeded with ID, blah, blah, blah, amount, blah, blah and payment mode, blah, blah, blah. And I'm giving the arguments to ID and amount payment mode from my transaction. This is how typically a log line looks like and we all are well aware of it. And this part of it is called log level, log level and there could be, there are many standard log levels and we can add more also. So some of the log levels that you would have seen or most commonly used are debug, error, info, critical, things like that. And you can add your own also. And on production, we would switch the log level to error so that we can see only error and above which is critical, error and critical. And maybe on the developer systems or dev environments we would start at debug so that we can see all the logs starting from debug, info, error, critical, so on. We are most of us diligently put the log levels also appropriately so that we don't incur so too many, too much of logging cost. And now let's start with the problem number one that we were looking for. How fast can I search for a particular log line that I'm looking for? And without, I don't know what has happened also sometimes, right? I don't know, that's the reason I'm referring the logs. And typically the log line will look like this. The example that we have taken from this in my, when my request is flowing transaction succeeded with ID amount and payment mode could be an EFT. This is how a typical log line looks like in our log files or on the log management system. Now, if I have a bunch of these can I answer a few questions like give me all logs where amount is more than 10,000 bucks? Or can I say give me all logs where in payment mode is RTGS? And how does that work? If you look at this carefully, this log line, from here, this is the application that it is emitting, this is the log level and this is the timestamp. And from here to here, this is all one piece of text, a sentence in English, which is trying to convey the developer the transaction has succeeded, right? But is this possible by machine? Does the computer or a server understand that whatever is followed by amount is really an amount? Or this is like an ID, which is always a string. This is a float. We can do filtrations like less than, greater than or do sums and aggregates on this. There's no clue, absolutely no clue for the machine to understand that, right? And this also, what is followed by the payment mode here, NEFT, that it is a string. It doesn't have a clue. We are not, we the developers are not leaving a clue to the machine to understand that this is how to extract this or how to pass it and we are dumping in the logs. We have been there, we all have been doing that. And so this is human readable, but not machine readable. We can do filter filters based on this because of the same fact that the machine does not know that how to extract this number out of this, unless we put a regular expression somewhere in our grogks on log stash or clue and D or somewhere else, right? Or if our log management system is doing it for us without being explicit. Aggregates, if I want to know in a particular window of time how much, how many payments have been or transactions have been succeeded. I don't have a clue to find, to figure it out from these logs. And how do I correct it? Treat logs as event streams. This is one of the 12 gems that 12factor.net tells us, right? And what do we mean by that? Treat logs as event streams. What is an event? So here comes the JSON part of it. So this is called structured logging. What are we replacing here? We are saying instead of a plain English sentence wherein we are writing transactions succeeded with blah, blah, blah and putting everything, every detail that we know into that sentence, here we are saying, look here, this is a new transaction which has happened and ID equal to this, right? So here if you see carefully, this is a dictionary kind of thing. These are all keyword arguments that are going into logger.info. This is key value pairs, basically. This is a message and these are all key value pairs. So whenever I say amount equal to blah, blah, blah, I am, as a developer, I know that this is always a float or an integer field on which I can do filters, like greater or equal to or equal to blah, blah, blah and this is a string field and all. And this information is really important for any search engine to figure out, to index, to give us the searches based on our filters. And can I do this on standard library of Python? No, unfortunately. So this functionality of being able to pass key value pairs is comes from a wonderful library called struct log, right? And how does a log line now look like with this in place? How does it look like? It looks like this, message, new transaction, ID, blah, blah, amount, this. Look, look here that there are no codes. Payment mode is successful, it's a Boolean, as we expect, and a timestamp. Now, each of these, it's very clear for the human being, for the developer assets and for the machine to do aggregates, to do filtrations or to do whatever that we want, right? And this is the first step in logging it right. You can do filters and aggregates. We are in the right direction of solving or getting to that log line that we are looking for faster, right? And how can we do that? Structured logging with struct log and it's a simple drop-in replacement to standard library, wherever you have logging.getlog, you could simply replace it with import struct log and structlog.getlog, nothing else. It simply works. And struct log also offers a plenty of powerful pipelines. Let's say you want to redact password, right? Or add some, some more metadata to the event, to whatever the logs are emitted. As a, at a central place, add a middle layer, middle layer, then that is also possible with any of these pipelines. There are quite a few, quite a number of useful pipelines that struct log offers out of the box. And to add new or customized pipelines, also it's very, very simple. It's a, it's simply a function that takes a dictionary and emits a dictionary out, nothing else. So we could simply use struct log and go with this to make our logs structured streams of events rather than English sentences, only meant for developers. With that, the first problem is solved. Now comes the other problem or the other aspect of the talk today. Logging is not cheap. We as developers, we see only the logs in our code, but if you see on the servers, how many logs are piled up or what is the cost incurred by them to maintain the network and the storage aspects of that. It's not really cheap. Number of logs, as you might think is always proportional to the number of requests that you're serving. And you want the number of requests to your website or the web application to grow, but not the cost, right? The cost is also proportional to the number of logs multiplied by the network and storage costs and the retention period. How long do I want to have my logs? Do I want to see the last year logs also? Or am I fine if I throw off the logs which have happened maybe last three months? It depends on that also. We want the number of requests on our application to serve, but not this part, right? So there is a, though they are directly proportional, actually, we don't want this to grow, but we want this to grow. How can we make that happen? And Python has magical, I shouldn't say magical, it has got a standard way of doing things. Okay, at RazorPay, we actually process two terabytes of logs every day, two terabytes. And it costs huge amount of money, believe me. And people who have applications which churns lots of requests per day, per minute, they do have terabytes, petabytes of logs flying in and it costs money. What do we optimize for? Cost or do we get big? Enter dynamic logging. So what is dynamic logging? Let's say somehow if I can turn the log level from let's say error to critical or from info to error in runtime without restarting my application. That's important. Without restarting my application in runtime, I want to change the log level. Let's say the request to my application is soaring up and I'm totally confident that my application is handling the traffic well. And I don't want the logs of every detail there. I just want to switch the logging level from info to error. How do I do that? Without restarting the application. So the standard library, standard logging library of Python provides us a way to do that, way to change the config by listening at a port.  Write out and it simply works. I have a full code snippet attached or a link to full code snippet attached to make this work which is on the documents of Python. This is one way of doing it, but when we are processing, I mean when our application is deployed behind something like G Unicorn or something, then all the processes listening to the sport might be possible or might not be possible. Then how do you do it? There's another way to do it. There is another way to do it, which is the standard way. Logger, you would get a logger from getLogger and logger.setLevel. This level, whether it is logger.info, logger.error or whatever it is, this can be changed runtime based on the metrics that you collect or the errors or latencies, whatever you want to. Let's say you store this and it is and pull it out dynamically based on the traffic. I mean anything can be done because this is dynamic. So once you figure out where to tweak this level and how do you want to change this? When do you want to change this? It's just turning that value and redis or posting a particular request to your config changer, whatever it is, right? And Python allows it so that I can, I will not lose my debugability, but at the same time, I'm being cautious about the volume of the logs that I am incurring. That's about dynamic logging. And we'll go to the last and the final aspect of the talk today, which is how do we make more sense of logs in microservices world? Today, almost all of you who are working on projects or applications and on production, you would have heard or working on microservices. You don't have one single app, actually, you have a number of microservices talking to each other and which are talking to each other and delivering a piece of functionality, right? To the end user. And in that, what are the challenges involved in logging and how do we make more sense of logs? And let's see that aspect of it. Now, let's take a typical example, which I have simplified actually of microservices. And let's say I have a frontend service which is talking to service A and which in turn is talking to microservice B. This is how the request is flowing. So this is the user facing service, let's assume. So the user, like you and me are hitting this frontend service and the request is touching service A and it is sending the request to service B, getting some response, getting back the response and the frontend service gives back this response to the end user, right? Now, if you see all of these services would be emitting logs. So frontend service and service A and service B, all of them are emitting logs and your log management system is taking all of them and storing them and making it searchable for you. Now, just for example, let's assume that at a given point of time, the developer sees something like this, a very, very simplified example of log line because of the space constraints on the screen, I just had to put one message, okay? So this is a log line from this frontend service, there are a couple of them and there are a couple of log lines from A, service A and there's one log line from service B. Now, as a developer, I'm trying to debug something and I want to know, I have seen this that, okay, this is the log line from frontend and it has occurred at a timestamp, blah, blah, blah. Now, I want to find out whether this log line is following this, I mean, the request is handover to service A, right? And it is handovered further to service B. Now, is this the successor of 91 or is this the successor of 91? How do I figure out? So how do I stitch in my head the logical flow of the request through these microservices? Do I have any clue here? Everything looks ordered in order of timestamps, but I don't have a way to say that log line with timestamp 93 is following this one, neither this. I can't say with any certainty and to know that what is causing, let's say this is an error and I want to see whether this user was getting an error or this user. How do I relate back or forth? There's no way, simply. And this wouldn't have happened if we had one single service, which is a monolithic application, but that's not, we are not living in that error and everything is served by one single monolithic application. Most of the times we have microservices and there are plenty of them, just not two or three like this and the developers who have debugged without any clue like this, they would know what that kind of hell it is, right? So what if I have a request ID? Actually, here I don't have any of these, but if I have a request ID originating from the front end, saying that for each of the requests, I'll have unique identifier. If I have some way to put in a request ID which uniquely identifies each request throughout all the services, then what would it look like? So this is originating from the front end because this is another request coming from the front end. It is labeled as something else other than ABC, right? The sum X, Y, Z. And here from D, when I, sorry, this should have been A and this should have been B. Sorry for the confusion, just take these. This is the log line from A and this is log line from A. And if I see ABC here, this means that this request, this part of the request which has come to my service A. Hi, Devi. Yeah. Sorry for interrupting. This is a reminder that five minutes are left for the talk. Sure, sure. We are good. Thank you. Yeah. We can simply see that this request ID is just the same, right? And I can clearly figure out that this log line from my microservice A is following this request ID. So I can simply group them. All of these log lines having request ID as the same thing, ABC, ABC, ABC. These are different components on front end service A and service B, right? Makes sense. Simply I can filter out with request ID, ABC, and can get that thread. Let's say an error is occurring here. How do I trace back to front end which has caused that? I simply can do a search for request ID, DEF, because I know that this is the cause and I want to see what has triggered that before reaching service A. I could simply do a search with a request ID and I'll get log lines from all the services. That's the key point here. But how do we do that, right? So this technique is called header propagation. One has to simply put in a header in the originating service, wherever your request is touching first. X request ID, whatever you want to call it as ABC and this will take the header, consume it and put it back in the headers whenever it is giving out another request, right? So that the request IDs flow across the services and to the log lines. That's it. You have request ID in each of these log lines and you can trace it back. Cool. So we have covered how to set log levels appropriately and how to make structured logging better. I mean, how to make the logs better by structured logging and how can we control the log volume by using dynamic logging and how to put in a unique correlation ID across all the microservices, connecting them all. Yep, these are the references that I was talking about and thank you all for staying back. If you have any questions, I would stay back on Hyderabad stage and take up any questions. And at Rezape, we have been working on amazing products and cool technologies and we have several openings and if you would like to know about the opportunities further, you could reach out to me on Twitter or LinkedIn by ASL Devi. Thank you everyone. All right, that was really an amazing talk, Devi. I would like to mention a famous quote I once read online. The quote meant like this, documenting is to build feature-rich software as logging is to maintain bug-free products.  The first one is, how does GDPR affect logging? For example, can we log user IDs or anything that can identify a user? Yeah, that's a good question. So we shouldn't be logging any PII, PCI kind of data, personally identifiable information and because I am in payments domain, card information also we shouldn't be logging and that's where I have shown you that redacting of sensitive information, right? And stuck log provides you that kind of pipelines to do it easily and effectively. Yeah, we shouldn't be logging anything which identifies a user, personally identifiable information, PII shouldn't be logged. Okay, looks like we are running out of time here. So before we wrap up, on behalf of Python India 2020 team, I would like to again thank you for sharing your expert knowledge on the subject of logging in computer software. For any questions that we could not feature during the talk, please feel free to catch Devi at the HyderabadStayStream at Zulip and we'll meet you again in five minutes. Cool. Thank you. Thank you. Bye-bye.


Mariel is the CEO at NeuralNet, which is an organization that works with native communities across North America to design, build, and implement sustainable tribal networks. Mariel wears lots of hats. She's done a lot of great work across the space, whether it's testifying in front of Congress to bring about regulatory change to help connect these communities, or actually climbing towers yourself to work with partner communities to get connected. So with that, I'll hand it over to board Mariel's recorded video and I believe she is on to answer questions as well. Hello everyone and thank you for joining me. My name is Mariel Triggs and I run a small non-profit called NeuralNet. We've been working since 2017 with tribes in order to make their own LTE networks. Private LTE networks driven by magma such that tribes that own and control their own internet feature. Now, back in 2016, our pilot network, we worked with the Hakusupai tribe at the bottom of the Grand Canyon. It's an eight mile walk or a helicopter ride in order to get there. With half a day of labor and $15,000 of equipment, they were able to bring broadband speeds down to the center of their village. That network sparked a movement. It was part of an endeavor in which we had to use 2.5 gigahertz spectrum and get a special temporary authority in order to get access to it. At the time, spectrum and licenses were frozen, but the FCC was able to see what was possible when tribes had control of their own spectrum, especially the 2.5 gigahertz spectrum. Since then, the FCC worked hard and had a rural tribal window in which hundreds of tribes applied and gained access to the 2.5 spectrum over their lands. Currently, 1.9 million people have spectrum now controlled by a tribal entity over their heads. What that means is in the next year, you're going to see hundreds of tribal networks being built. Tribal leadership has seen through the horrors of the COVID epidemic the importance of having broadband availability for their people. Whether it's the health disparities, education, whether it's economic development, or just being able to have a social interaction, it's so important that tribes have the ability to connect their own people. We have worked with dozens of tribes now in order to build private LTE networks. We've worked with colleges, we've worked directly with government, we've worked with economic councils or educational departments. Magma has been pivotal in this in making control of that network accessible, and they've been able to see what parts of running a network they want to do themselves, what parts they want to invest in, and what parts they want to partner with outside entities. So here's a call-out I have to you. Be a good partner. The open source code that you have been working on in the creation of Magma has been huge in giving tribes control over their own internet access future. So please, continue to build coalition with tribal partners. Learn what tribes need, their motivations, who they want to connect and how, and design around tribal partners. If tribes who are the least connected folks within Northern California are made to have control of their own spectrum, what that would mean is it's going to help many others along the way, school districts, small rural towns. Everyone would have easier access to broadband with your help. The user interface, figuring out what metrics tribes need, network management options, these are all parts of a network that you have control over and that you can make easier to access for our tribal partners. So please, be a part of this movement. Contact us at infoatmuralnet.org. Work with us and work with Native Nations to design, build, and control their own internet access future. Thank you for all you do. My name is Jesse Archer. I'm a consultant with the Lone Pine Paiute Shoshone Reservation. In partnership with Muralnet and Cisco and leveraging the recently acquired 2.5 gigahertz spectrum through the rural tribal window and our recent application with the FCC, we are going to be launching an emergency 4G LT network for our residents and citizens of the Lone Pine Paiute Shoshone Reservation. This network is going to have massive impacts for the community in terms of government operations, education, distance learning, community health, our emergency response services, and particularly protecting cultural resources, which is somewhat unique to our location in California. The Lone Pine Paiute Shoshone Reservation is as close to a true democracy, a pure democracy as you can get. While they do have elected officials, in order to pass laws, Lone Pine Paiute Shoshone's entire voting population must gather to vote to pass major ordinances and laws that affect the whole tribe. So when the pandemic hit, community, county, state, and even federal guidelines from the CDC prohibited large gatherings. So that effectively froze our government. And we needed a way, we need a way to be able to conduct critical government operations and communications. Our communities are on the unfortunate end of the digital divide. We do not have wide broadband access for all homes and particularly, most importantly, all students. Because of the coronavirus, schools had to go to distance learning. So if our students, our tribal students did not have a stable internet connection, they were not able to participate. We're looking to provide stable internet access to every single home on the reservation. The Eastern Sierra and Paiute tribes in general protect some of the largest concentrations of cultural resources in the Western Hemisphere. We have petroglyphs that are thousands of years old. And they are sacred, absolutely sacred to our people and priceless. And they are often vandalized and often stolen where we have no way to surveil or protect these cultural resources. Literal graves, campgrounds, gathering and ceremonial places, important to the people. This network will allow us to monitor and protect these cultural resources where we have never been able to before. So Lone Pine's equipment, our 4G LTE network is comprised of enterprise grade equipment. We are using air span equipment, buy cells. We are testing multiple frequencies. We also have equipment from Cisco and the FreedomFi and Magma software are at the core of our network. And this software enables small rural tribes like us with minimal resources to manage and operate on the same level as any other nation state. Also where we would be required to hire consultants, third party consultants that are very, very expensive and often out of our budget. The Magma user interface and the orchestrator allow us to set up and manage our own networks with minimal training. I myself set up our very first CPE just the other day when we were testing our network. It was very, very easy to use and the concepts were easy to understand. I am the first person and with the first device to be attached to Lone Pine, PiU Shownie Reservations emergency network. So we have our Cisco switch to our FreedomFi Magma to the buy cells integrated in tenant base station to your micro-tick CPE which is then your computer is attached to it. And I'm making it all happen. What we're looking forward to in the future is working even closer with FreedomFi and the Magma software and hopefully our partners at Cisco and MuralNet for training purposes. The interface and the software was easy enough for me to use as a first time user with almost no background. And what we would like to do for sustainability purposes is build capacity internally as tribal nations and this means we're going to need people who know how to run the Magma software very well because this is what we will be running our networks from. What we would like to see is developing even closer relationships so we can learn from FreedomFi and train our own people and vice versa. What I see in the future is once we build our own expertise as tribal nations, necessity will bring about the most creative uses of this technology, of these networks. And the most creative solutions that we will see coming in the future will come out of Indian Country and that's what I'm really excited about looking forward to. My name is Phil Fowler. I'm the IT Director at the Bishop Paiute Tribe. We partnered up with MuralNet and got some additional funding from the First Nations Institute. And we put together the beginnings of a 4G LTE wireless network that we're hoping to deploy to members of the Bishop Paiute Tribe community in order to facilitate distance learning, telemedicine. And you know just overall quality of life improvements. The internet in this area has been a little bit spotty over the years and although it's been getting better by dribs and drubs it's just the quality isn't what we think we should expect. And so we're working hard to try to fill that gap for the tribal members. This is a big experimental project. That's the main goal that we're doing right now is experimentation. Since the middle of December, probably since early December, we've been using the MagmaCore in order to deploy internet services over our LTE network. In our project we have deployed 6 LTE radios, 2 10 watts, a 20 watt and 3 quarter watts. We're evaluating how those work in our given environment. Residences are a little bit spread out and there's kind of a lot of trees around. And so we're just kind of covering all our bases and seeing what technologies work the best. The 60 node bees are managed in Magma. We also have 43 current subscriber cards available in Magma. They haven't been all put out yet but we're getting ramped up on deploying more and more in the very near future. And in fact we just had another one today come in and tell us that they were on our experimental pool. They told us that they were moving and asked if they could take the connection with them. So I think that really speaks a lot to how much they want the wireless internet and how happy they were with the service. Because if it sucked, they wouldn't be asking to take it with them. We manage that all from the Freedom Fly orchestrator and it's got a beautiful dashboard that helps us to visualize information and figure out what's online and what's not and easily reboot the service if we need to. Which thankfully it hasn't happened very much but because we're still getting everything squared away and figuring everything out there's little hiccups here and there. But by and large it's been a really smooth situation. Once we got it up and running online it's been running fairly solidly. I've found that it's user friendly in that it's intuitive. So I can look at the dashboard and I don't really have a lot of experience with LTE networks. This is the first time that I've ever even approached the subject. So when I'm able to look at the dashboard get an idea of what it is that I'm looking at and how it relates to one another. It just makes the system a little bit more intuitive for somebody like me that just wants to get the thing up and running quickly and doesn't have access to the kind of expertise that hiring a consultant might bring in. But since we're in a remote area we're largely on our own and so we need to be able to figure out what's going on with our network and kind of understand the nuts and bolts of it. It helps in affordability too because we don't need to pay really strongly experienced technical staff. It would be nice if we had access to something like that, if we had access to experienced engineers that we could hire but there's nobody like that in the local labor pool. So we have to be able to deploy technologies that we can manage on our own. That's one thing that MAGMID really does well is take out a lot of that complexity for you and it allows you to focus on the basic things like getting your customers subscribed and it just allows you to manage it with a little bit less expertise than you might have access to. There's about two thirds of people living on tribal lands don't have sufficient connectivity if having any connectivity at all to the internet and COVID has really shown why this is such an important issue. Unlike other countries though, the issues when it comes to getting connectivity on tribal lands isn't necessarily one of infrastructure in the sense of there's usually fiber to almost every school. So there is some sort of high speed connection to almost every village and also electricity for the most part is also present. What it often is is what we call the first mile otherwise known as the last mile. Getting it from that centralized place and distributing it to homes that seems to be one of the biggest issues. And that's where making those kind of networks operational and in control of tribes has been one of our biggest goals. So how do we make sure that they can own that infrastructure? Luckily carrier grade LTE equipment has really come down in price. How can we make sure that they get access to the airwaves in order to be able to broadcast? And the FCC released a 2.5 gigahertz spectrum allowed tribes to claim it for free before they're auctioning it off, which is a great great great band in order to broadcast really goes pretty far goes through leaves. It's almost perfect for this type of deployment. And then lastly, it's about the operations. How do you make it sustainable? And that's where open source cores are a huge part of it. If you have to always pay someone to manage your core, it's going to be some costs that you don't have much control of you can't predict. So the idea is what can we use that is lower no cost start them off and then help build that internal capacity so then they can decide whether they want to stick their running their own core or maybe move on to another type of technology or maybe have some sort of shared management. So that's one thing that we've really loved about magma in that it's accessible. It's fairly reliable and well, it's free to download it off the github. So mirror not was founded in 2017 by a bunch of volunteers and what we were tackling was the tribal digital divide connectivity on travel lands is much worse than anywhere else in the country. And what we felt is in order to make the world more equitable and in order to bridge the homework gap, we could find a way to get connected to the homes. When indigenous peoples had their lands taken they were pushed into the corners of the United States that were more difficult word harder to live were more challenging. But even then if we look at connectivity rates for tribal people living on lands versus non tribal people living on lands. It seems like the gap is always tribal folks seem to have about half the connectivity no matter what metric we're looking at compared to their rural counterparts. So as a nonprofit what we do is when we partner with our tribal partners, we leverage donations, we leverage volunteers, we leverage testing in Silicon Valley so we did a lot of testing in order to approve upon magma. However, that's not a sustainable model. So I came across freedom fly, because they were developing the business case if you will, that was appealing to our partners, where they have these small or medium sized networks, most of them are under 100 homes. And the freedom fly platform to give them the confidence that they would continue to get the technical support that they were getting from our Silicon Valley volunteers them. That was huge. That was absolutely huge to have a company that they can count on to have a number that they can call to feel like there was someone who had their back as they ran their networks. Well, it's definitely empowering communities bring connectivity to themselves and it is interesting because we talk about use case I would actually pause it it's use cases. There's 574 sovereign nations within the United States that means 574 different value systems different rules different terrains all of it. So it's really a I see it as a lot of innovation that's going to happen. Some people will do SpaceX. Some people will do the microgeos that are out there. Some people will do open source, open five GS versus magma versus all sorts of different things. The component of Torx problem actually has all the use sites it needs in the United States in order to test out these technologies. And like Boris alluded to, these are sovereign nations they can roll it out fast. They don't have to worry about a lot of stuff and they just move so agilely and will find freedom by so many interesting problems as they already have. It's pretty amazing. I mean just this weekend alone we're going to be helping launch three new networks. Where do you get to do that in a weekend. I think that it's both some of our partners novel technical university for example in a college a lot of the travel universities and a lot of the tribes they are putting together their own ISPs. They're the ones who are making completely new business cases for sustainability that's not necessarily based on a capitalistic system it just doesn't work with a lot of the communal cultures. They're putting together tech stacks I mean what I what I'm seeing happening in Alaska if you want to know communities that can make things happen by their on their own, some of these villages. And sometimes you think it's just going to be how should we say duct tape and the beauty 40 but no I was just talking to Alaska group this morning. And they're taking existing infrastructure DSL modems and they're re redoing the architecture of their network so that port one is your typical connection to the internet port three connects you to the clinic and port four connects you to the school. Where are you going to see that I mean, tons of innovation happening within these communities. That was so awesome thank you so much Mario we do have her on the call today so if anyone has any questions we do have a couple minutes so feel free to jump off mute and ask away. Amazing. For cashier and especially do the people from the travel folks. What do you find exciting about freedom five. Because that is one thing which I have heard from everyone of you. What did we hear freedom five. What do you think positive what exactly is the value that freedom five brings to you. So, what freedom five brings to us is they help us make sure we have a stable. stable orchestrator we have a lot of folks I'm here with with Bruce is honestly you just started working with back about five hours ago. Yeah. We're working together network protesting out 20 different CPE that will eventually be passed out. And this is great for tier one support we can do that but when it comes to something going weird. We can jump on the slack channel and talk to freedom five they can help us figure out what's going on. Magma still young still has some quirks but it's really great to have that safety net. They're running an open source software they're doing it themselves. And you, that takes a certain amount of courage but it also takes support you can cannot. So that's a good example of a great partner. I mean no pressure freedom five. Is this the portion where we get to ask for features Kendall. I mean go for it. You can put it out there. Well what's one thing that's really interesting here and a lot of the reservations the bigger ones they. They have, they don't have to worry about boundary constrictions or anything like that. So what's neat what's happening here in Bishop where essentially you're about a mile and a half by a mile. They have really easy controls of power outputs and such, so that they can make sure they're working with about a condition conditions there's the three five to five mix which seems to be working really well. And I see in the chat someone's talking about Wi Fi roaming cellular roaming for mobile. There's so many things that folks want to do here in order to make these sustainable, and make sure that they can bring connectivity to their people. This is where she's taking us. Maybe. I really want to extend my appreciation to the community out there that are making this happen. The idea of private LTE and small groups being able to start their own networks wouldn't be possible without what magma is done. It's just the subscriber cost for the cost of other courses simply just prohibited so you all are doing some amazing work and seriously from the bottom of my heart. Thank you. And it's really great for us to it makes us feel like we're, you know, we're helping out a lot. It feels it feels like we're at the tip of the spear here using the very beginning of this new public public availability for technology that used to be only available to giant telecoms. Now some of the guys like us.