All right, we are recording. Sorry about that. Go ahead Bianca. Yeah, so Yeah, that that your your Description of what happened to you and what you were feeling and what you were going through is something that Jared Tendler really touches on in his book and Provides some really interesting strategies to Not only recognize these emotions and that's sort of the part that we're working on here Is to get everybody to a point where they can? recognize the inception of those emotions But so he talks about not the first step is to sort of recognize these emotions or Thoughts but then the next step is to what do you do about them? Right? Well, how do you deal with this? because the for some people these Triggers that you know cause us to spiral in some way have been There present for many years and potentially even in other areas of their lives, you know You know not being able to lose or wanting to be right all the time, you know, those are all things that you know Pertain to different people not everyone all at once, but you know, everyone has their own issues and The more you become aware of those and how they can impact your trading Potentially The better the better trader I think you're you're going to be so Or can become or whatever, you know, so but I wanted to see Based on what we talked about last week if anyone had any Experiences with some sort of out-of-the-box Mindfulness practices drinking their coffee or doing the dishes or anything like that that they wanted to share If you would feel free to I mean if you want to just post in the chat feel free or or if you'd rather Jump on if you if you want to speak I can we can unmute but just give me a heads up in the chat If you want to say something and then I'll give you the heads up to go ahead and speak Well, well anyone's typing their answer or or let me know they want to speak all this I'll kind of jump in and just say, you know one thing I've kind of gotten the habit got in the habit of doing from our between now and our last session was I I Tended I like to do it when I'm brushing my teeth Was just going to say that and that's exactly what I do Because it's such a nice, you know succinct amount of time. It's not like, you know, this long Drawn-out thing. I mean, I don't know how you brush your teeth, but it could potentially be long but you know a few minutes whatever and so it's this very manageable amount of time and There are so many physical sensations going on that you can really sort of Be mindful of and be present with that's actually a perfect one to to do Yeah, and I know it's just something that I know I do twice a day and It kind of starts my day ends my day and so it just kind of it works for me Yeah, I find myself sort of automatically doing that a lot of times Throughout the day, I've got I've done this for so many years that I I get into this habit all the time of just You know stepping into this sort of like very sort of mindful state When I do things so for me, it's become very natural But it takes practice and it's it's um, you know And it takes patience with yourself most of all and when you and when you when you're doing that when you're kind of doing your Practice, you know during these little Everyday things that you do. What do you what are you actually doing? I think it'd be helpful for people to understand a little bit deeper about what are you actually doing What are you actually thinking about? What are you actually focusing on? Yeah, and actually that was and that's one thing we're going to do today. We're gonna do a little body Sort of scan mindfulness practice and a little breathing and those are some some of the things that I do I usually do a Few breaths like, you know a very specific type of breathing very specific breaths and then I sort of like Close my I close my eyes I like to close my eyes some people like to keep their eyes open that you know Depends on what what works for you but I like to close my eyes because it allows me to turn sort of inward and I kind of like take a nice deep inhalation with an exhalation I just really let everything relax and I feel I can literally feel myself getting heavy and just release and So I try to stay with that feeling for as long as I can and just scan through my body see how it feels, you know So that's those are you know these short kind of practices that just I feel like they release a lot of tension you know it just it just When you get into the habit of it and you really focus on Relaxing with the with the exhalation really focus on relaxing your body You can get to a point where you can really really feel it. You can really feel the tension leave So that's what I like to do But we're gonna we're gonna do something a little more detailed that will give you a much better idea of what what I mean when I just with what I just said so I'm wondering if If everyone in this room is able to lie down on a floor where they are That would be ideal If not, you can stay seated but Ideally because we're gonna do some Body scanning that is sort of best done on the floor But if not don't worry about it just stay where you are and just you know do the best you can with what you got so The breath that I want to talk about today Is called a double inhale Breathing exercise and this type of breathing Is specifically for the reduction of stress and I also want to quickly touch on The fact that as a society we have become These like mouth breathers right many people breathe excessively through their mouths for a variety of reasons and Our bodies have This incredible Filtration system through our noses right there's like a ton of stuff that filters out Everything from bacteria to viruses to dust to pollen to everything Before it even gets to your lungs and there are so many studies that have been done on the effect of Breathing through your nose versus breathing through your mouth and The there's no doubt that breathing through your nose is Incredibly beneficial for not just your immune system But for your digestive health for your mental health for your concentration all kinds of things I mean, it's it's pretty incredible the studies that have been done and There's also something When you inhale through your nose Your body actually your your your I'm not a doctor, so I don't know if I'm medically explaining this correctly It's but it's there are like little Cells in your nasal passages that produce nitric oxide and Nitric oxide is a is a dilator it dilates your blood vessels So everything gets more oxygen and you you get actually more oxygen if you're inhaling through your nose Then when you're inhaling through your mouth and it's it's just incredible What what the difference between nose breathing and mouth breathing so I Would like everyone to try to as much as possible breathe through your noses When you're doing these exercises any kind of exercise breathing exercises that we do Unless specifically stated should always be through your nose and is that in through the nose and out through the nose? Yeah, you can do in this particular exercise that we're doing we're actually going to do in through the nose and then out through the mouth But in general We want to try in through the nose and out through the nose unless a specifically stated The one very important thing and one of the reasons why So many people have trouble breathing through their noses is the placement of the tongue in the mouth and You'll hear this a lot like you know in in like yoga classes and stuff like that They'll say put your tongue on to the roof of your mouth and when you have your tongue on the roof of your mouth and It's sort of like in between your top teeth and it's it's kind of touching your entire tongue is touching the roof of the mouth You cannot breathe through your mouth in that position Unless you release the tongue from the top of them of the palate so Ideally the tongue is always at the top of the mouth and So for some of you that might be really odd if you've never done that before if you're not used to that But just try the best you can to keep your tongue on the top of your palate Towards the top of the palate so you're the tip of your tongue is sort of behind your teeth And then the rest of the tongue is sort of against the upper palate Eventually when you're breathing through your nose It's really natural to have your tongue in that place. It's not odd anymore But in the beginning it might feel strange so Shall we get started with Okay so Like I said, this is a this is called a double breath a double inhale and What we're going to do is we're going to inhale through the nose as As much as you can you're going to inhale it into your lungs and Then at the top when you've inhaled as much as you think you can inhale you're gonna Stop and you're going to take a really fast Sniffing inhale so you're going like this and then you're going to hold it for a second and You're going to exhale Slowly very slowly through the mouth. I'm going to try for about a double count on the exhale I'm going to try and make my breath a little audible. I don't know if you guys will be able to hear it But so we'll get started with an inhale. Is that pretty clear to everyone? Does that make sense? If you want to type something in the If you need clarification or give me a thumbs up or something All right Excellent. I see some thumbs up. Okay, so let's start. We'll do that for a few breaths You can go at your own pace Just try to have the exhalation Be about twice the length of the inhalation. So let's start at your own pace Okay, so let's breathe normally again so this particular breath When we have when we do the exhalation twice as long as the inhalation it really Sends the message to the brain That it's safe. It's time to relax And not be in our you know, it gets us to our parasympathetic nervous system rather to our fight and flight um situation so Did that that worked for you guys? Was that okay? Yeah, that's great anything Anything you want to share about that any difficulty anything that you want to One thing I always one thing I always find when I'm really focusing on my breath at the at the end of my exhalation I always kind of just feel like a Full body kind of almost tingling sensation and I I try to kind of focus on that because it's a it kind of Really helps me focus on my breath Yeah, that's nice. Yeah so, um This this is a really good type of breath to do if you feel yourself going off the rails At any point in time during the day You know, whether you're trading or you're doing anything else if you start to feel you start to become aware of certain emotions or something that you think can Start to bubble and boil This breath can really help you De-stress and and really calm you down So that's that's a good one to have in the back pocket um now, um as far as the um The mindfulness practice now that we're we're going to do is are most people able to lie down or are we are we all sitting? Oh, I was lying down for the breathing one Oh, perfect perfect So if if many of us are lying down, then it's actually I mean I if everyone is like sitting then I could modify it But if if more people are lying down, then I I'm going to proceed as planned and do the um The um relaxation and mindfulness Okay, so Assuming that everyone is in a In a good relaxed position on the floor I Would invite you to close your eyes and start to breathe normally Not trying to control the breath Just breathing in and out through your nose Nice and smooth Think of the breath as a circular movement So there is no Retention of the breath at the top or bottom it all flows into one another smoothly Your hands are by your side palms are facing up and they're sort of slightly away from your body Your legs are relaxed and your little toes are kind of flopping towards the floor and we're going to start to Become aware of certain parts of our body touching the floor So if you're lying down The back of your heels Your calves Your buttocks your sacrum Going higher up Upper back your shoulders The back of the head and the back of the arms The back of the hands Feel the contact with them with the floor See if you can get a sensation of melting into the floor with every exhalation Releasing the muscles Becoming aware of any holding or tension that is going on Just releasing it into the floor and then become aware of any Parts of your body that are making a space with the floor such as The back of your ankles Back of your knees Your lower back Back of the neck Imagine those spaces becoming smaller and smaller with every exhalation As you are melting further into the floor now bring your awareness To your face the tongue is resting on the upper palate You're breathing in and out through your nose Become aware of your jaw. Make sure your jaw is relaxed Become aware of the skin around your eyes See if you can get a sensation of releasing that skin those tiny little muscles all around the eyes that sometimes Stay very tight Intense let's start to become aware of our thoughts around this process To try to approach this process without judgment Without expectation Imagine you are lying down Looking up at a sky full of clouds and each time a thought arises That does not pertain to the mindfulness practice Just attach that thought to a cloud and let it drift away You find your mind Wandering off Just gently bring it back to your body Without judgment Slowly begin to wiggle your fingers and your toes and start to bring yourself back and come back to a seated position or to your chair or wherever you are There we go Everyone's still with me I'm back. I'm back. All right So that was a short, you know, what was it three four minutes? Did everyone have a good experience with that? easy difficult Anyone want to share It's it's a lot easier for me when when there's somebody guiding it for sure Yes, it definitely is Oh, yeah, I love the bells too It's such a beautiful sound. I don't even know if that comes through really well through the microphone, but Yeah, it kind of startled me out. Honestly Yeah, they're really they really vibrate in your In your whole body when you're was that one of those bowls? No, they're they're these um, they're discs. They're sort of like brass discs.  Singing bowl singing bowls. Okay. Yeah Yeah, they make beautiful sound too So, yeah, so I don't know if anyone wants to share Uh anything any experience that they had or or um, do you guys find that difficult to Sort of focus, uh You know on your with your thoughts This idea of attaching the thoughts to the clouds and letting them drift away. Is that is that a good image Yeah, I mean for me And I want other people to jump in here too. I don't want to be the only one doing the talking but For me. Yeah, I mean, I definitely At first my mind started wandering off but Um, like Andrew said I got I got so relaxed that I almost Drifted off almost in a dream dream like sleep state Yeah, yeah Yeah, that that can happen. I mean, I you know It happens all the time in yoga class that people start to fall asleep during this kind of stuff, but But as much as possible, we want to try and stay present In our bodies and just observe You know be be an observer of of what Goes on in our minds and and you know, what happens when we become quiet with ourselves That that can be very difficult Especially for people who are haven't never done this before And what don't have A lot of experience with that that can be a really difficult concept to be quiet with yourself, but um Yeah, so that's how we start Little baby steps at a time Great stuff Yeah That's all I got for today. Okay Um before we go is anybody have anything they want to share and anybody want to get on the mic and Speak instead of chat feel free now is your chance I just wanted to say thank you so much for doing this. I I really enjoyed it I wasn't able to come to the first one. Thank you. It really was great Oh, you're welcome. Welcome I enjoyed it Yeah, this is great. And I know I mean I think one thing I'll be I mean I I would I'll probably Listen to this replay and kind of redo it again. You know, I just that the whole guided piece of it is is a big help for me um So hopefully hopefully others can Yeah, do the same if they want and as as you know, we get more comfortable um And and the process becomes more clear and easier we can Obviously extend the time Of this, you know, we don't have to keep it so short. We can do a little bit longer Um, just initially I think it's it's easiest for everyone to just sort of get their feet wet and You know keep it short and sweet and just You know sit with that let your body sort of Sit with that and and your mind sit with that and get comfortable with the idea of Turning inside and going into yourself and and being quiet and Yep, great stuff. Well, I know for me. I mean I've yeah, I kind of This this weekly session is going to help me get back into more consistency and and With this kind of thing consistency is is a huge deal. So That's uh, that's part of what I'm I'm most excited about Yeah, as as with anything, right and we know all about consistency and as traders, right? Right.  It looks like a couple people are typing.  I think it's uh, I think it's great Yeah, yeah, I'm glad I did too. It's fun for me because it's you know, it's in my wheelhouse. So Um, it's nice to be able to share that Excellent Well, it looks like Into money honey is still typing. So Oh, there we go I am familiar with this as I'm a yoga teacher as well But love that you're bringing this into the trading space. It's so needed. Absolutely. Couldn't Very cool. All right everyone. Well, we will uh trader Bianca Is it next week next thursday 30 minutes after the bell next thursday the 8th?  All right, perfect So 30 minutes after the bell 330 central next thursday june 15th. We'll do the we'll do another session Great. Thanks. Thanks for coming. All right everybody. Take care. Take care All right. Bye. Thank you. Take care


J-E-L-L-O. The Jell-O program coming to you from the Plaza Theater in Palm Springs, California starring Jack Benny with Mary Lincen, Phil Harris, Dennis Day, and yours truly, Don Wilson. The orchestra opens a program with, I'm going to Kearcock, Iowa with a banjo on my knee. Sometimes I think I could write a whole book about what a Grand Dessert Jell-O really is. For example, I could devote the entire first chapter of the book to telling you how gay and inviting and jello looks with its vivid glowing colors and shimmering beauty. In chapter two, I'd point out how delightful, tender and delicate jello is and what a smooth melt in the mouth texture it has. Chapter three would deal at great length with jello's glorious flavor. The flavor is distinctive and well-known as its name and just as refreshing as the juicy ripe fruit itself. Then in chapter four, I'd explain how quick and easy jello is to serve and how it sells for only a few pennies per package. And oh yes, in chapter five, I'd remind everybody to be sure to try strawberry, raspberry and cherry jello. Each has a new improved flavor obtained by using a natural flavor base artificially enhanced. And as a result, they're better than ever. Try a tempting dessert made with rich, delicious jello tomorrow. Ladies and gentlemen, for our second broadcast from Palo Vas, have been enjoying our vacation on the desert. As you remember, last week, Jack was living quite a little distant from Palm Springs at a place called the TP Motel. But a few days ago, he rented a house here in town with a swimming pool. Yeah, he loosened up. Dennis, don't interrupt. Go ahead, Don. Anyway, last Thursday, Jack invited us all over to his pool for a swim. It was a beautiful sunny day. Jack told us to get there early, so we'd have a full day on board. Rochester, the gang will be over pretty soon. So I think I'll take my swimming lesson before they get here. OK. Now watch this, Rochester. I'm going to swim clear across the pool. Clear across? It's only six feet. That's too bad. I'm sorry I haven't got the Atlantic Ocean here. Now keep your eye on me and tell me when I do anything wrong. But, boss, I don't know anything about swimming. I gave you an instruction book last night. Why didn't you read it? I was working on the Navajo rug for your father. You're supposed to weave in the daytime. Now here I go across the pool, Rochester. Have you got the gun? Right here, boss. Well, start me off. OK. On your mark, get there. Across the pool. How was that, Rochester? Fine. This is a deep end. Oh, well, I've had enough swimming for a while. Ain't you going to take it, dive and listen? Oh, yes. Here, help me out. Now hold my water wings and I'll dive in. I think I'll dive from the high board. That'll be a real thrill. Uh-huh. I'm not used to this. Maybe I ought to dive off the low board. That's fun, too. Uh-huh. Oh, I bother. I'll dive right here from the edge of the pool. I must be psychic. I figured that. Well, here I go. One, two. Rochester, the rest of the gang get here yet? No, ma'am. You're the first one. Yes, it's lovely. Look at those mountains all around us. Majestic, ain't they? Oh, thank you. Where's Mr. Benny? He's down at the bottom of the pool. Bottom of the pool? Oh, yes.  That's his two pain, Mr. Benny's over here. Rochester, I almost drowned. Why didn't you jump in after me? Well, it said in the book you're supposed to come up three times. You didn't have to wait for the limit. Now pull me out. Hello, Jack.  What's the matter with it? The first one I ever saw with long pants. These aren't long pants. When my trunks get wet, they creep down. They'll be all right when they dry out. When they dry out, they'll break your legs. It will not. This material is very good. Say, you've got your bathing suit on, Mary. Why don't you go in for a swim? Oh, I'll wait until the others get here. Hey, Jack, what's that canoe doing in the swimming pool? That canoe? Oh, Rochester wanted from an Indian. You know, he brought his dice with him. Would you like a string of peas, Mr. Livingston? Rochester. I told you last week to stop gambling with the Indians. Well, I'm trying to win some buckskin underwear. I don't care. I want you to cut it out. You've got more Indian stuff now than Fred Harvey's. So take it easy. Hey, Jack, look. Here comes Mr. Billingsley, your border. Oh, yes. What's he doing here? He arrived a few hours ago. Claims he flew in from Hollywood on his magic carpet. Over these mountains? Oh, you're as bad as he is. Hello, Mr. Billingsley. Good morning, Mr. Benny. Been in for a dip, I see. Yes, yes. I notice you have your trunks on, Mr. Billingsley. Why don't you dive in? Oh, I never dive with water in the pool. It hurts my head. It's wood. It's wood. I see what you mean. Say, Jack, I think I'll scratch out and take a sun bath. Go ahead. Watch out for that sun, Mary. It's pretty hot. Here's a can of oil. I'm not going to rub that stuff on me. Here, take this can. Nothing doing. It's still got a sardine in it. A sardine?  Never mind. I think I'll take a sun bath, too. Raj, I have to rub some oil on my back. You mean out of this can? Yes. I did that yesterday, and the cat licked it off faster than I could put it on. That isn't around here today. Rub me. OK. See, Mary, just think. Here we are taking a sun bath, and right above us are snow-covered mountains. Aren't those peaks beautiful? They're sharp, too. My magic carpet isn't shreds. Oh, that's too bad. How are you going to get back to Los Angeles? Los Angeles? Yes. Didn't you hear? It floated away. Now, now, Mr. Billingsley, don't, don't exaggerate. Say, Mary, you better cover up there. You'll get sunburned. Oh, I'm all right. See, you look cute in that bathing suit. No kidding, Mary. You look just like Miss Hollywood. Oh, hello, Dennis. Hello, Mr. Benny. Stand up, Mary. Let's see your suit in the bag. There. Oh, boy. Dennis! Dennis, now behave yourself, or I'll take away your pass to my swimming pool. A membership. Can't start a swimming club without members. Dennis is different. I got a pass because I mow the lawn. Yes. Holy smoke. You're not making the kid work on his vacation, are you? A little work won't hurt him. When I was Dennis' age, I used to mow every lawn in my neighborhood. Go on. The lawn mower wasn't even invented then. I just wish I had an encyclopedia, sister. That'd make a monkey out of you. Say, Mr. Benny, you got a lot of swell records here. You mind if I play your Victola? No, no, go right ahead, Dennis. It's the club Victola. Any member can play it. Oh, Mr. Billingsby, are you sure you wouldn't like to go in for a swim? No, thanks. I'll just run out to my room for a sun bath. To your room? Oh, did you bring a sun lamp with you?  Goodbye. And notice that saw on a suitcase that I thought it was musical. Oh, well. Look, Mr. Benny, here's one of my records. Would you like to hear it? Yeah, that would be swell.  See, the sun is hot now. Sure feels good, though. See, it's fun just stretching out here. Oh! Oh! Oh, oh, oh! What's the matter, Mr. Benny? His pump's just dried. Oh, my leg. I can't understand this suit shrinking so much. My own father sold it to me. Why don't you go in for a swim? I don't know how to swim. Oh. Oh, you don't. Say, Mary. I meant to learn, but I never got around to it. Oh, oh, didn't you? Say, Mary. You're not going to kick me out of the club, are you? Oh, look, Dennis, just sit in the sun and peel. Now, forget it. Say, Mary, I wish Don and Phil would get here so we can get started on our hike. Now, wait a minute, Jack. I told you I'm not going on any hike. You are, too. We're going up to Tockwood's Falls, one of the most beautiful sites in this part of the country. Here comes your friends, and first more, that sardine oil. Oh, yes. Look at this. Here, kitty, kitty, kitty, kitty.  I just want to pet him, that's all. Here, kitty. Hey, Jack, haven't you got some flit or something? There are more flies around here. That oil sure draws them. Well, don't stand there. Kill those flies. OK. Not with a gun. Well, you scared them away, anyhow. Hey, Jack, here come Don and Phil. Oh, yeah. Hiya, Jackson. Hello, Mary. Oh, hello, everyone. Well, fellas, what do you think of this place I rented? Not bad, eh? Hey, it's all right. Swimming pool and everything. Is that a swimming pool I thought it was yesterday's rain? Well, Phil, if our little swimming pool doesn't please you, you can very well stay out of the water. Nothing to do, and I paid 10 bucks to join this club, and I'm going to get the curl out of my hair. Well, then don't run it down. An incident, fellas, before entering pool, please take shower. How much does that cost? Oh, don't try to be funny. The shower is free. How's 15 cents? Now, cut that out. And I'll tell you one thing, fellas. I'm very lucky to get a house like this at the height of the season. You certainly are, Jack. It's a lovely yard. And look at those fruit trees.  They'll leave those oranges right on the trees. I don't want to break up a crate. Jeepers, they counted them. Mary, that's part of the landscaping. I don't want them disturbed. A member of a swimming club, and I can't swim.  Dennis, put down that gun. Gun is only for starting me across the pool and flies. Now, behave yourself. Say, Jack, don't you think we ought to get started on our hike? Yes, now, we'll be leaving just as soon as our Indian guide gets here. Indian guide? Yes, he knows the trail. Now, get into your slacks, Mary, so you'll be ready. I am not going on that long walk. Then why did you join the Benny Swimming and Hiking Club? You told me Mrs. Roosevelt belonged. I did not. I said I sent her an application blank. Now, come on, we're all going. Say, Jackson, how do you like my hiking outfit? You look swell, Phil. But what's that bottle sticking out of your coat pocket? It's a little Kentucky medicine in case a snake bites me. Well, you might need it at that. Hey, wait a minute, Phil. There's another bottle in your hip pocket. What's that for? That's in case the snake has a friend. Come on, everybody, let's get ready. I'm all set, Jack. I've got the rope and everything. The rope? Yes. I hear the trail's pretty steep in places. So I figured we'd all tie ourselves together. Oh. Then in case one of us happens to slip, the others can keep him from falling. Well, that's a beautiful theory, Don.  Next Sunday, the Aldrich family. You said it. Well, let's get started.  OK, I'll be right back. Look who's here, boss. Oh, yes. Me, Indian guy. You, Jack Benny?  Now, look, Leaping Deer. That's your name, isn't it? Leaping Deer, my uncle. Me, Eagle Puss. He couldn't come, eh? Well, now, look, Eagle Puss. We'll be starting in a few minutes. What do you get for taking a party up to Tockwith Falls? Pickley cash. No beige, brother. All right, all right. Come on, fellas, let's get ready. Hey, Dennis, have you got the water jug? Yeah, I got it. Good. Uh-oh, somebody picked an orange. Bill, put that orange. It was nice of you to bring your drum along, Mr. Billingsley. I'm sorry, I swallowed my pipe. Your pipe, eh? Well, don't worry about it. The drum is just dandy. Hey, Jackson, all this walking is monotonous. Oh, it is, eh? If a snake don't bite me pretty soon, I'm going to take a drink anyway. Would you touch it? Say, Eagle Puss, we've been walking a long time. How much? Eagle Puss, how much further is it to Tockwith Falls? Me don't know. Eagle Puss off the beam. Say?  You should have known that, as Tomahawk says, made in Japan. Oh, what do we do? Here's a sign, Mr. Benny. Tockwith Falls, straight ahead. Oh, yes. Well, let's get moving. Oh, I'm hungry, Jack. Let's stop and eat. Don, we're not eating till we get to the falls. I haven't had a bite of food since breakfast. I know, Dennis, I know.  We'll eat later. Say, Phil, what are you doing with that bottle in your hand? Oh, a snake bit me. That's impossible. At this time of year, rattlesnakes are in hibernation. They're in their holes, sleeping. Well, this one's a playboy. Oh, stop, will you? Well, all right, Eagle Puss. There's the sign. Read it. We take them trail up mountains. Follow me, pale faces. So long, boys! Right, that water jug is heavy. Well, limit it to somebody else, Taker. Phil, you carry the water jug. Look, I got the hatchet. Here, Don, you take it. Oh, I'm carrying the rope. You take the water, Mary. I got the camera. Here, Jack, you carry it. I'm loaded up with the compass and everything. Here, Dennis. Dennis, you take the water jug. OK, there's something funny going on around here. Well, you had a rest, didn't you? All right, fellas, let's go. Forward march. Why, Mr. Billingsley, what happened there? I stumbled. Oh. Well, don't bother with the drum now. I got the pipe again.  You know, I've never seen a view with so much, hey. Hey, what's that? Look, Jackson, there's something moving in that bush up ahead. Yeah, that's what I meant. I wonder what it is. Might be a wild animal. Oh, Rochester. Go find out what's in that bush. Round the bush. Now come on, fellas, we can pick up the trail on the other side. Lead the way, Eagle Puzz. Rocky up here. Say, Eagle Puzz, what are all these holes in the side of the mountain here? Many moons ago, white men picked gold here. Gold, eh? Well, yes, Jack. Even today, hikers have been known to find nuggets on this trail here. Is that so? Say, that's very interesting.  I'm just bending over. This knapsack is heavy. Well, let's get going, fellas. Come on. No, fellas, I wouldn't have missed this hike for anything in the world. The all-abastness of this gorgeous scenery makes one realize the insignificance of man. Especially me. I can't even swim. Dennis, will you forget about that? You're right, Jackson. Look at that brook down there with the weeping willows hanging over it. Yeah. What a painting that would make for my bass drum. Well, I wish you'd put it on there. I'm tired of that girl sitting on the crescent moon. You talk about scenery. Oh, hey, fellas. Hey, look at that cliff over there. Look at that cliff over there. Gee, it makes an echo, too. It makes an echo, too. Hey, this is fun. Hello? OK, I'll watch it. She was, fellas. Look at those white, fleecy clouds against the blue sky. Gee, did you ever see anything so, whoops, help me up, Rochester. Why don't you watch where you're going? Well, I didn't see that. Hey, wait a minute. What's this? What's this? I saw it first. You saw what first? Right there, that gold nugget. It's mine. Mine! Where, Jack? I don't see it. Right there. I moved my foot and there it was. Gee, there may be hundreds of them here. And they're all more slaving on the radio. No more pictures with Fred Allen. Oh, he's falling out. Pick it up, Rochester. Well, come on, fellas, let's get to the falls. Ready, Mr. Billingsley? Forward. Recipe book. Every day, thousands and thousands of letters come pouring into the mailroom of General Foods in Battle Creek, Michigan, from listeners all over the country who want their brand-new dessert book. But here's the most gratifying thing of all, the fact that an amazing number of these letters ask for not one book, but several. Two, three, four, and even five. The folks at General Foods tell me that they've never known a recipe book offer that prompted so many people to write in for more than one copy. Yet it's certainly easy to understand why, because this new General Foods dessert book is really a winner, a book that will answer your dessert problems day after day for a whole year. It contains recipes and suggestions for 365 luscious desserts of all kinds, pies, cakes, puddings, cookies, and many tempting jello treats as well. So send for your copy now. Just include $0.10 in coin or stamps for each copy you request, and mail your letter to Don Wilson, Care of General Foods, Battle Creek, Michigan. Remember, for each of the copies you request, be sure to send in $0.10 in coin or stamps. The address again is Don Wilson, General Foods, Battle Creek, Michigan. We're a little late, so good night, folks. Are you good at arithmetic, ladies and gentlemen? Can you add, subtract, and divide, and get the right answer? Then add together fine South and Central American coffees. Subtract 97% of the caffeine. Divide by two into drip and regular grinds. And what have you got? Why, Sanker coffee, of course. The real coffee that never robs anybody of sleep, because the sleep-disturbing caffeine has been removed. Better get Sanker coffee tomorrow. Sanker coffee presents we the people over another network every Tuesday night. This is The National Broadcasting Company.


Hello and welcome to the session. My name is Mansi and I'm going to help you with the following question. The question says find the distance between the following pairs of points minus 3, 7, 2 and 2, 4 minus 1. Before starting with the solution let us see the key idea behind the question that is if a point P that is x1, y1, z1 and a point Q, x2, y2, z2 are two points then the distance between them that is PQ is given by square root of x2 minus x1 the whole square plus y2 minus y1 the whole square plus z2 minus z1 the whole square. So using this formula we find out the distance between the two given points. So let us start with the solution to this question. Let the point P be minus 3, 7, 2 and the point Q be 2, 4, minus 1 then PQ that is the distance between P and Q is given by square root of 2 minus minus 3 the whole square plus 4 minus 7 the whole square plus minus 1 minus 2 the whole square.  This is equal to square root of now 2 plus 3 is 5 and square of 5 is 25 square of minus 3 will be 9 again square of minus 3 will be 9. This is equal to square root of 25 plus 9 plus 9 that is 43 so square root of 43 so our answer to the question is that the distance between these two points is given by square root of 43. So this is our answer to the question. I hope that you understood the question and enjoyed the session. Have a good day.


OK, thanks. Let's start. So hi, folks. I'm Serge. And we're going to spend 30 minutes or so speaking about Python and static analysis. But well, to be honest, the title is a bit misleading, because it's impossible to use full Python and at the same time have very accurate static analysis. So the real title should be Python or static analysis, pick one. But still, it's not because it's impossible to do it as a whole that we can't do relevant stuff. And that's what we are going to explore together. Whoops, next slide. Yeah, so I'm a compiler engineer, but I have a lot of other hobbies. And I'm going to present some tooling to do some partial static analysis on Python programs based on my previous experience on that topic. So that previous experience is mostly based on the Python project. So some of you may know it, but it's an embedded DSL, embedded into Python, targeted at scientific computing, which makes it possible to secretly compile Python kernels into efficient native libraries that you can still import from Python and get good speed up when you're using NumPy or this kind of stuff. So it's not a generic compiler at all. It's very specific, but it's still a good plan to develop. And while developing it, I met, obviously, a lot of issues. And some of them were relevant enough to build a new package that we are solving some specific issues that I thought would be useful to other people. And that proved to be true. So the two major components of Python that are reusable are Gast and Beneget. So these two package are using names from a small language on the west of France called Bretonac. And I will just give the translation while we go through these tools. The first one gives you an abstraction of the Python abstract syntax tree across Python versions. And the second one provides some basic analysis of Python programs that other compiler or analyzer can use. And I'm going to go through the two of them and then describe another project, Memestra, who's using these two building blocks to write a simple but efficient static analyzer. Let's move on. So Gast, it's available on the cheese shop on GitHub and such. So it could mean generic AST, which is totally relevant, but it also means in Bretonac a good time girl. So this tool started four years ago and was presented by Pycon French. And the original goal of that tool was to use the translation between Python 2.7, which was the original target of the Python compiler, to Python 3. When you're migrating a compiler from across different versions of Python, it's not as easy as when you do it for a regular application because you're changing the input of your program. You're going to parse Python 2.0 program or you're going to parse Python 3.0 program. So that's very different from adding parent phases around print statements, right? So instead of reworking the compiler for each new Python version, I wrote this small abstraction layer to ease the manipulation of the AST. Basically, it gives you a generic AST that you can manipulate whatever the underlying Python version you're using. It turns out it's very successful because there are more than 100,000 downloaded per day according to IP stats of that package. But you don't need to trust numbers. It's actually a dependency of terms of flow, not my fault. And so only one package is actually using it a lot in addition to my package. But that's an important package. So it looks like a very useful package, but it's not as useful as it seems. So to give you an hint about what it tries to do, if you run this simple Python line, you're just importing the AST package that's going to, and then you dump the results of parsing a simple subscript expression, which is valid Python across Python 2.7 up to 3.9. And we are going to see how the Python compiler is seeing that expression. And it changes a lot depending on the actual Python version. So if we are in Python 2.7, at the top level, we've got a module. Because even if it's a single expression, it has to be in a module. This module has a single statement, which is an expression. And this expression is the actual subscript. And the important part is that the slice field of that subscript is an extended slice, because it has several elements. And the first dimension is an index. And the second one is an ellipsis. And that's how it's represented in Python 2.7. And you can build your compiler based on that. But if you happen, and I hope you did, to move to Python 3, say Python 3.6, then you still have the module and the expression and the subscript. But then the slice is no longer an extended slice. The node is now an indexed by a tuple. OK, so it means that if you want your compiler to work both for Python 2.7 and Python 3.6, you need to handle two different ways of representing a subscript.  And it's a single tuple. So it means that whenever you've got a new Python version, be it a major or minor version change, you need to update your whole compiler because you're not matching the same abstraction, the same abstract tree. So what I did is put all that glue code in the guest module. And whatever the Python version you're using, if you're dumping the AST using guest instead of AST, we've got exactly the same API just to ease the transition. Then the module is something. The AST representation is very close to the 3.91 because we tried to match that one. But it's also compatible with all the previous version. So if you're running that exact code in Python 2, you will get the exact same abstract syntax tree, which means you can then think on the guest representation instead of the official AST representation and your compiler is fine with that. That's a super nice property. And it's not getting obsoleted by the doom of Python 2. It's also very relevant to all the minor Python 3 versions. So that's for guests, very simple building blocks. When you do that, you've got some trade-offs. The first one is because of legacy compatibility with Python 2 and we're still keeping that. Our AST representation is slightly more verbose, especially for AST name. But that shouldn't be a big trouble, but it's good to know it. And we are relying on the official AST parser. We're not implementing it from scratch. So there is a translation from your Python AST module to guest. So it's an extra processing step, which shouldn't matter even for large modules. But it does matter if you're trying to pass all the Python file in your system, which is something I tried to do.  So you have to pay for it. But then you're going to Python, so you don't care that much about paying for doing things more in an easier way. So that's for guests, very useful to, at least to me. And it proved to be useful for other people, too. So then benignette, same available on GitHub and on the cheese shop, used by a few other package in addition to Python. And this time, it's not a bad word. It's blessed. Just the same, you would say, holy shit, you say benignette when you're surprised or when you want to protect yourself, something like that. And this analysis, this package, to understand it, you need some compiler background, but a very basic one. And I'm going to introduce them in the next slide. So it's computing the used definition chains for Python program statically. So it's a foundation for a lot of more advanced analysis, especially the Python one. But to understand how cool it is, you need to understand used dev chains. And when you need to understand something, you go to Wikipedia. So Wikipedia tells you that it's basically a used dev chain, is a link or a tree between a definition of a variable and its usage at another point in the program. So for instance, if I'm defining variable a and then using it, then there is a chain between that definition and that usage. And because of the dynamicity of Python, there is a lot of way to create chains between identifiers. And some of them are a bit tricky. So for instance, but first, what is it useful for? If you've got a definition that has no usage, then it means that this definition is not useful at all. So you can use the negate to write some kind of a linter that would detect that you're defining a variable somewhere or assigning or creating a binding to be a curate. And that binding is never used as where. So to detect a news import or a useless assignment, it can be a useful tool. You have to take into account a few things. For instance, underscore is generally used when an assignment is useless. For instance, when doing the structuring. And when you're importing a module, even if that module is never used, there are a lot of side effects. Like this module may not exist. And you may actually have imported that module just to try to import it under the import exception. Or the module import may have a side effect because code is actually running. And so it may not be relevant to remove that import. But that's up to the user. And that's technically not something a static analyzer can decide for you. Yeah, so just a reminder, you're not defining a variable when you use an assignment in Python. You're creating a binding between a value and a string identifier, which is the name of the variable. It's somehow being a bit pedantic. But once you've got that model in mind, it helps a lot to understand all the limitations of use depth change for Python. For instance, here is a small loop. And I'm iterating over L. And in some case, I'm printing G. And in other case, I'm assigning it. So is the print statement faulty? And the answer is the same as for all the tricky case actually. It depends. It depends on the runtime content of L. Depending on whether L is empty or not, whether L has values that evaluates to false or not, then the print statement is going to be faulty. But according to the use depth change, there is a possibility of valid depth use, which is the L's close is defining G and the true branch is using it. So that's fine. So it looks like perfectly valid code. And it may not be. That's dynamic behavior that's benegate is not able to capture. Well, it could send a warning actually, but we're not doing it like that. It's static analysis. Another case, you're defining a global using the cursed keyword global. And you're doing that inside a function and doing the assignment inside a function. And in another function, you're using X. Is that faulty or not? Well, according to the static analysis of the depth use change, there is a depth in foo and a use in bar and that's fine. Or at least we can represent it. But it's not capturing all the possible usage. It depends whether bar is called after or before foo. And we don't know that because we don't know how the module is used. We're only doing a per module analysis, not a world package or word analysis, which however would depend on the Python path which we don't control. So it's not possible to decide whether it's the only possible chain or not. Still dynamic behavior. Another case, which looks super simple. We've got an assignment for X and then we're iterating over a sequence, eventually assigning X to the different value in that sequence and then printing X. So the print is a user. But to which depth is it referencing? And in that case, it may reference the first assignment or the loop assignment and we don't know. So we represent both. Both values are potential definition for the print usage. So with that in mind, what does Benny get do? It tries to compute all the possible, but it may not be the actual, all the possible definition for any usage in your module. So that's super useful, but it's only a super set of the actual definition use links that may happen at runtime. So that's the difference between dynamically creating binding and statically assigning variables. But also, although it seems I'm super pessimistic, it turns out that if you're writing a compiler for a subset of Python that's with static assumptions, which a lot of people are doing, then it may be useful. It may be useful to write, for instance, a simple linter. You may know by lint or by flakes, this kind of linters. With Benny get, you can write a much simpler linter, but only with a few lines. You're basically iterating over all the depth use chains. And whenever you've got a depth that has no use, you check if the depth name is a conventional bypass, even if someone in the chat told me that it may not be as conventional as I would expect. And if it's not a bypass plus a few other checks that I removed here for the sake of fitting into one slide, you can issue a warning. So that's a good first step to write a linter. And the good thing is that this linter does not depend on the Python version because Benny get itself depends on guests. And we already saw that guest is agnostic from the Python version. So with that, we've got that is really generic and with all the concerns splitted across several package, which is a nice property from an engineering point of view. And to illustrate that, so first, obviously you understood that Benny get can do anything if you've got a call to the global in three six or the evil in three six or to the local in three six, anything that is or double underscore imports, all this kind of stuff. We can't do anything about that. Just be aware what actually what we could do. And that's what we do is whenever you reference globals, you reference the word. So it creates a lot of links from all the possible global available in the program. And you're referencing them, but that's still a subset of the possible globals. So that's not enough, but we're doing our best. Just be aware, Python or static analysis and not Python and static analysis. That's the key. And so as an illustration to how to write a useful tool based on the generic tool set without too much efforts, let me introduce memestra. So memestra means two things. People from Brittany are known to drink a lot. And so it could say the same, please when you're ordering a beer or Cedar or whatever, but it's also when you're upset by the children or by other people. You could say, oh, please stop. And then you would say memestra. So stop to write deprecated code. That's what memestra is trying to do. So it checks your code for places where a deprecated function is used. And what is a deprecated function? A deprecated function is a function decorated with the deprecated decorator, which is not standard, but you can have your own in your package, or you can use the one from PyPy, which is nice. And based on the tooling I introduced, even you could feel or have a good hint that it's easy to write that kind of useful linter based on Benny Gates. Basically, it's three steps. The user is going to give you the signature of the decorator, say decorator.deprecated or something like that. And you're going to track the usage of that decorator into your code. Track the usage from a definition that's Benny Gates. So once you have all the usage, you have all the function decorated by this deprecator, deprecating decorator. And then you can track all the usage of this deprecated function. If you have none, then that's cool. If you have one, is that usage inside a function that is itself deprecated, then that's okay because you're still into the deprecated word. But if it's not, then you're using a deprecated function in a non-deprecated function. And that's something the user needs to be warned about. And so you print it. And that's it. That's how you write a deprecated function linter using Benny Gates. So as with all commercial or simplistic talk, it's a bit slightly more difficult than this, but the idea is the same. So for instance, in that test.py code, you're importing the decorator package and you're deprecating foo. Foo is used both at top level and inside the function bar. Bar is not marked as deprecated itself.  And that's what we would expect. But if you think a bit, you maybe think about NumPy. NumPy has a lot of the API of NumPy is quite large. And so it's marking a lot of function as deprecated because the API evolves over time. So in your client code, you want to parse NumPy code to check whether everything is deprecated or not. So it means that instead of doing a module analysis, you want to do a cross-module analysis. So it's a bit more difficult than what I've told because you're assuming that the Python path is known and you can then start to resolve statically the imports and then applies the very same method as the one I described in the previous slide. So to do that efficiently, you need a cache which actually represents correctly how modular imports in Python. So that's good. And you can process the whole Python, including NumPy stack in a matter of minutes using MMS tracking or also deprecated usage. So that's still possible and can be done efficiently. When you want to advertise deprecated usage, I should mention deprecated package, which is not official, but just does a job and it's used in a lot of place. So you can just use it as you would expect you deprecated function and you can even give a version or a reason why you're deprecating it. So feel free to use that and MMS tries obviously compatible with that. Actually, MMS tries independent of the decorator. You can configure that in the decent way. So as usual, there is limitation and in that case, typing is in our way. Here, the foo method is marked as deprecated but only within the class foo. If we have another class with a foo method and it's not deprecated, then we can't resolve in bar the call to foo and say, okay, foo is that deprecated call and then we are doomed. MMS tries does support flagging a class as deprecated and is that case whenever you instantiate that class, you'll get the warning but for method, it's not the case. We could imagine a coupling with MyPy or using type annotation to improve the analysis but that's far beyond this talk and but that may be a relevant goal for MMS try. So we are getting close to the end. So again, Python is not made for static analysis. Have a look to MyPy and how they are trying to do static typing on Python, there are limitation and so for any static to link, there are limitation and you need to be aware of them. Once you are aware of them, that's okay. You can start building two links and sharing them as I do and as other people are doing, obviously and it's still a perfect tool for embedded DSLs into Python and a lot of people in the Python numeric community are doing that. And to finish the talk, I'd like to thank Sivan Corley for the original idea of MMS try. Mariana for reviewing a lot of my pull requests on MMS try and Lancelot 6 for the proofreading of this talk. And I'm handing it to you, Nicolas or to anyone who has questions. Okay, so we have two questions. So I'm going to take the first one. David is saying, can you use Python IST module to parse code for other languages such as C? If not, maybe you know some specialized libraries for creating ISTs for other languages? So no, you count. The Python IST module is specific to Python and as I told, it's even specific to the actual Python version you're running. You can't parse any other language unless it is syntactically embedded, strictly embedded into Python. So if you've got a subset of Python, you can use the Python IST module to parse it and that would work because that's only parsing and not trying to interpret anything. But it happens that I'm also an 11M developer so I can answer your second question. If you want to parse C or C++, Clang has Python binding to do that. So you can use Python binding from the Clang compiler and you get a representation of C or C++ that you can manipulate from Python. Cool, so last question. Artem is asking if IST applicable only for functions what about class level or global variables? I didn't get the first sentence, is, pop, pop, pop. If IST applicable only for functions? So if the question is about memestra, then yes, it's applicable to both functions and classes. But it's not applicable to function inside classes. So not to method. Okay, cool. So, we're on time. Thank you very much. Thank you for presenting. Have a good day. Thanks, Nicolas, and thank you to all.