Getting the right people doing the right job, as every manager knows, is one of the crucial steps for success for the team, for the business and for you. And it's one of the toughest jobs to consistently get right, which is why, as managers, we are always struggling with how to make this crucial task easier. I take you through five steps that should make getting the right people doing the right jobs easier and help drive your success. The five steps are, Step 5 has links to other videos that you'll also find useful and these are in the description below too. My name is Jess Coles and I've had a 25 year management career in corporates and household names through to SMEs. Get the right people doing the right jobs and doing them well and do a half way to your next managerial promotion. Matching the right skills and personalities to the right roles and tasks is certainly a skill that gets better with practice. And if you're new to this channel, enhance.training shares business and people management expertise to help you improve your performance and that of your team and business. And if you like this video, please give it a thumbs up and subscribe. The first step to get the right people doing the right job is to work out exactly what is the right job. You might be thinking this is an obvious step and I would agree with you and I know so few managers really spend the time thinking through what is needed in the role. I've done it myself and regretted it. I've seen too many managers jump in without enough thought and they have not been happy with the results they got. I promise you that any time you spend really work out exactly what the right job is will be an amazing investment. You are less likely to have poor performance, recruited duds, move the wrong person into the role or spend hours tearing your hair out in frustration. So challenge yourself to answer questions like if firstly, is this job about maintaining the status quo or changing or improving it? Secondly, where does this job sit on the range of lots of routine, repeatable tasks all the way through to constantly changing problems to solve? Third, what metrics and goals need to be hit for you to judge that role is being done successfully? Fourth, what are the key responsibilities and deliverables for the job? Fifth, what are the essential tasks and which are the nice to have tasks? Sixth, which stakeholders internal and external does this job have to work with and what is needed for success? Seventh, what skills are needed to smash this role out of the park? Eight, will this role change over time? You know, for instance, in a growing company and what skills will be needed in the future or is this job likely to be fairly static? You know, say in a mature business. Nine, what development opportunities are there in this role? What career path might the right people for the job be on? And 10, how attractive is this role for internal and external candidates? Don't think high level or in generalities try to dig into the detail as much as you're able to. This is where the real value comes from in defining the role clearly. The clearer you are about the role you're offering, the better you'll be at getting the right people doing the right job. Write down the answers to the above questions or any other relevant questions that you think you need to answer and try to create a job profile from your answers. The very task of writing a profile will help your thinking. The right people would jump at the chance to do the right job. The wrong people will probably run a mile. This self-selection process is so much easier to go through before a person has actually started the role. A big reason for people leaving a role soon after joining is the actual role was quite different from how it was sold to them. Paint a detailed, accurate picture. And of course things will change over time. Anticipate the changes that you can and worry about the pace of change rather than the change itself. Work with what you know today. The second step to get the right people doing the right job is to work out who the right people are for the role. Before picking up the phone to your favourite recruiter or inviting the colleague you want to join your team for a coffee, take a bit of time thinking about what type of person would be successful in the role you've now defined. There are so many factors in choosing the right people to do the right job. You think about the characteristics and the fits before thinking about the hard or technical skills. Some of the things to consider when looking for the right people are. What aspirations should the right person have to fit in with the role that is being offered? What intelligence level does the right person need in order to learn quickly enough? Or be happy with a more routine role, for instance. What sort of energy levels will the right person need to keep up with and overcome the demands of the job? What drive and motivation does the right person need in order to match what the job requires and what you have available to give in terms of support and encouragement? How ambitious should the right person be to enjoy doing the role for the period of time that you have in mind? What other characteristics should the right person have? You know, such as attention to detail or great communication and relationship building skills. Work out the list. And finally, what technical know-how or qualifications will they need to enable them to do the job? Having a clear profile of the type of person makes any conversation with potential internal candidates or recruitment consultants so much easier. A clear profile also makes your job of finding the right people and keeping them a lot easier too. We may have an ideal profile, yet one of the biggest challenges to overcome is to find people with that profile or something close to the profile we want. And there are other times when we are just not sure of who will be interested in the job or a person with a different profile appears to be a great fit for unexpected reasons. Keep an open mind and get clear on who the right people might be for the job. Both will help you fill the role with the right person. The third step to get the right people doing the right job is winning the internal talent fight. You've worked out exactly what the right job is and you have a clear profile of the right person to be successful in the role. And Jill in procurement or Ted in supply chain seem a very close match to what you want and the role will be a good next step for them in their careers. When you make a few inquiries you quickly find out that two other departments also want Jill and Ted for different types of roles which would also be good for their careers. You have a number of people to persuade if you're going to get them into your team. Firstly, Jill and Ted of course. Secondly, their respective manager. Third, the head of function in which they sit. Fourth, the HR person. And fifth, possibly even the management team. You know who this list should be. Work out exactly who you need to chat to first.  Do you speak to the individuals first or should you check in with their manager first? In my experience finding out if the individuals are interested as quickly as possible is essential and it saves you a lot of wasted conversations. If they're interested in working in your team and in the role offered, then you are halfway there. If you don't know them that well, invite them out for lunch or to a few coffees and get to know them and vice versa. The strength of your professional relationship with each person on the list to influence is going to count. As will the business case for moving the individuals and the opportunity for development along the chosen career path for those individuals. If you tick all these boxes better than other managers or departments, you should get a new team member. Call in the favours owed to you and invite each person on your list for a coffee and persuade them to back your case. If you don't get the person this time, then work on your relationships with colleagues and your reputation as a manager within the business so you'll get the person next time. The fourth step to get the right people doing the right job is to hire the right people. If there is no suitable internal staff members and assuming you have the budget, start looking externally to hire the right people into the role. A clearly defined role and target profile of the person that you want will massively help the internal recruiter or recruitment consultant find the right person for you. If you are advertising and sifting through CVs yourself, be prepared to invest significant time into the process and don't forget to ask your network of contacts too. The process of selecting a suitable person and enticing them to accept a job offer is another challenge. Some general tips for this process include, interviews of course remain the mainstay of most companies hiring processes. They're a really time efficient way to narrow down the field of candidates. Think about as well auditioning rather than interviewing which is a great way of selecting the right people i.e. getting them to do the role for a short while or an exercise over a few hours so you can evaluate their skills in action. The third tip is to focus on the fit. You know how well will they work with your team and yourself, but fit before technical skills. You can teach technical skills, you can't really change a personality. Fourth, make sure as part of your hiring process they get to meet the team and spend some time with them. These team relationships will be very important in the future. Fifth, pay attention to the questions that they ask during the process as these reveal a lot about their interests and keenness on the role. And sixth, set out your expectations clearly for the role so they don't have any surprises once they join. Go with your gut as well as making a reason choice when it comes to hiring the right people. The fifth step is getting the right people doing the right job. So you have the right people in what you think is the right position, brilliant. Don't put your feet up yet, your job is not over. Create the best conditions you can to ensure the right people can actually do the right job you need them to do. Some of the areas you should think about, you firstly support your team members, you know, with coaching, mentoring, you know, bouncing ideas around and any other help that sets them up to do the best job they can. Secondly, protect them and the rest of your team from the ups and downs created from demands on the team, from vested interests, from politics, et cetera. Third, keep the team motivated and focused, providing them with clear direction that is tied into the goals of the function and the company. Fourth, give team members honest, open feedback so they can get better at what they do and they also know what they're doing well. Fifth, praise where it's due and praise often. Positive reinforcement really works and everyone likes to know what they are doing well. Recognition is an important motivating factor for most people and the lack of it is a top reason cited by leavers. Keep working hard to get the best out of each of your team members and all the efforts you put in will be rewarded with better team performance and a happier team, which in turn helps you as their manager in many ways. So there you have five key steps to getting the right people doing the right role. Don't be afraid to move people around within your team or change responsibilities or mix roles up to make the best use of the skills that you have available to you. As a reminder, the five steps are, firstly, exactly what is the right job? Secondly, who are the right people for this role? Thirdly, winning the internal talent fight. Fourth, hiring the right people and fifth, getting the right people doing the right job. If you have any questions then please leave them in the comments section below and I'll get back to you. Thanks very much for watching and I look forward to seeing you again soon.


Yeah. Thank you. Hi. Good afternoon, everyone. Welcome to the second session. And the next speaker is Michael from previous next. He's a senior developer at previous next. And he's going to talk about X debug. And if you after the session for the round table discussions, if you want to be part of the discussion or come on the screen, please just raise your hand. And then we will, we will make you part of the discussion on the screen. And over to you, Michael. Thanks for that. As he mentioned, I'm going to be talking about X debug. For this session, we're going to be using PHP storm and D dev. You can use any local environment you'd like. You can use land or you can use VS code or anything like that. And we're also just going to be debugging this basic triple site that uses the migrate module to pull in homebrew recipes from a JSON feed. So to get started, we're going to talk about some debugging concepts. And then we're going to go through some practical examples and some configuration at the end. So the first, the concept that I want to talk about is break points. So perhaps if you haven't used X debug before, maybe you have done something like this where you want to see the value of a variable. So you put in a bar dump and then load up the page in your browser and then realize, hang on, that's not the variable I want. And you rinse and repeat until you finally get the right information that you're looking for. That's not what I'm talking about with break points. And perhaps you've put in a triple add message into an if statement or a loop or something like that to try and see if your code's actually being run. And again, that's not what I'm talking about here. I know to some of you, XD bug will be second nature. So hopefully there's something for you to learn as well. So I'm going to jump right into PHP storm here and show you how to set a break point. So essentially this is massaging the JSON feed before we actually process it in my great API. So what I want to do is just stick, click in the left column here. It's going to put a nice red circle and that's going to indicate that as a break point there. Then we have to make sure that we're listening for XD bug connections and then simply load up this page in the browser and XD bugs going to trigger straight away. So what we can see here is this is the stack trace of everything that's come before where we are now. And this section here shows the current variables that are in scope. So we've got the URL which is passed into this function. We've got the current object, this and all of these superglobals as well. So once we've reached our break point that we can begin doing our step debugging. So basically we've got these buttons across here where I can hit step over, which is just going to evaluate the current line of code. And then I'll be able to see the new variables that are available. So response which came from line 31 there. And we can continue hitting step over and inspecting, you know, what's changed. Finally, when we come to a function call where we actually want to jump into it and see what's happening inside that function, we can hit step into. And that's going to jump us down to that piece of code. It could be in another file or in the same file. And that's going to get added to the stack trace here. So then this is a for each loop. So if we just keep stepping over and doing our debugging, you know, having a look at what's changing. And we realize, OK, we no longer want to be in this loop. It's actually going to iterate, I think, 50 times here. We don't want to just keep clicking through it. So we can then hit step out. And that's going to return us back to where we came from. And then finally, once we've finished, we just want to let the page keep loading. We'll just hit resume over here. And that's actually going to take us. This function gets called multiple times on this page. So it's actually going to break again. Or if we had other break points that are reached, it'll break on those. But if we just want to let the page keep running, we can just mute the break points here and hit resume. So the next concept is the debugging console. So I'm actually just going to reload this page again. OK, and the debugging console is just on this button here. So if we just skip over this line, we can see here's that response object here. We look at this stream. It's actually a resource and we can't really do anything with it. We can't see what it is. So we can jump into the console and we can start typing. We can basically evaluate any PHP expression. So response.getContents and we can have a look at what's in it. So that can be really handy if you think, you know, you want to change some logic in this function and you want to kind of draft it up and see in real time the output that you're going to get from it. And, you know, that can be a lot better than basically typing it straight into here and reloading the page and then going back and forth every time you get it wrong. The next thing I want to talk about is conditional breakpoints. So as I mentioned, this is a data migration. And let's say we just happen to notice that one of the nodes that was imported has some data missing. So on this one here, the mesh temperature, there's no value there. So we want to know what's going on. So I'm going to debug the actual migration itself. So I'm just going to grab the get plugin from the migrate module and I'm going to pop a breakpoint into this transform method here just so we can inspect each of the values that are coming into the migration. So I've got the breakpoint there. I'm going to run, this is the migrate commands. And it's going to break on the first row of the migration. We can jump into the console again and have a look at, let's say, row.getSourceProperty. And we can see that it's number one here. We're actually looking for, it was number 169 was the problematic one. So basically what we can, you know, keep stepping through it and reevaluating this, we're going to see, okay, now we're on row two and it's going to take a long time to keep clicking through until we get to 169. So what we can do is grab that expression here and right click on the breakpoint and place it in as a condition. So when that is equal to 169, that's when we want to break. So just resume the program and, you know, here's the migration happening and that should break once we get to that particular ID. So let's have a look at the source. So there we are, BRID 169. And we can see, okay, the temperature value is null, which is probably the problem here. So I was actually also going to show you there's a watch column here. So basically any of these expressions can be added to a watch list. So I'm just going to remove the condition on this breakpoint and keep stepping through it. You can see, so the value of it here has changed to number 170. So basically if you want to keep track of a variable or an expression or anything like that, you can add it as a watch. If I move that breakpoint down towards the return statement, you can keep track of the return value. So it's 68 in this particular row where the ID is 171. You know, kind of do your debugging that way. So now onto some more debugging scenarios. So you've seen debugging the browser. You can also debug Josh commands or PHP unit on the command line. But you do have to make sure that this environment variable is set. I'm going to go over some config stuff a bit later. But indeed, this is set for you automatically. The next thing you can do is run your PHP unit tests directly in PHP Storm without having to invoke it on the command line. So I've written a blog post to show you how to set that up because I'm not going to have time to go all the way through it. And there's a instructional video as well for how you can go from nothing to a full running Drupal site where you can debug all sorts of tests in there. So check that out if you have time. But I will just give you a quick demo. So I'm just going to open up the node module because it has a whole bunch of different tests. So if we have a look at this unit tests, we can pop a breakpoint inside a test. And we've got this little icon here that lets me click on it and hit debug. And that will break inside the test and we can have a look at what's going on. Similarly, you can do the same thing for kernel tests, functional tests, functional JavaScript tests. For this site, I'm using Drupal test traits which you may have seen before. But what's interesting here is you might want to debug the test itself, but you may also want to test the Drupal site that is being run behind the test. So here we can set a breakpoint in the test, but we can also set a breakpoint in the Drupal site. So I'm going to stick it in index.php. And then if I hit debug here, it should break first in my test. Okay, here we are and we're going to step over this and it's going to try and visit node one in the headless Chrome browser. And here we are, it's breaking inside the Drupal site so we can debug the Drupal site as well as the test. Okay, so to get started with XD bug, it's going to depend a lot on what environment you're using. So if you're using DDEV, a lot of it sort of works out of the box. And Lando does a fair bit in that way as well. So in your Lando file, you need to add this config XD bug setting. In DDEV, you can just enable it on the command line with DDEV XD bug on. And if you're building your own docker images, you'll have to install the extension and enable it. And that's probably similar if you're using a local server like BAMP or XAMP or something similar like that. Then there's a few key configuration variables. Just by the way, I'm talking about XD bug 3 here. Everything's a bit different in XD bug 2 and I'd suggest just jump straight ahead to XD bug 3. It's a lot more performance as well and easier to configure. So if we set the XD bug mode to debug, that's going to enable our step debugging. The client host setting resolves the docker container to your local machine. And the client port is where PHP Storm is going to listen for connections. And finally, this start with the request can be set to either yes or trigger. So if it's yes, every single PHP request is going to try and connect back to your debugger, PHP Storm or whatever. Or if it's set to trigger, then you need to use a browser extension or an environment variable to basically tell XD bug you want to start doing debugging. And that extension is called XD bug helper. So in your IDE, this is PHP Storm. You need to make sure you've got your port numbers configured the same as you had that extension configured. This is the default out of the box. Again, make sure you're using the latest version of PHP Storm, which supports XD bug 3. And you can click this validate button up here, which brings up this dialogue where if everything works correctly, you should get all these green ticks to say that XD bug is working. And finally, you need to make sure that XD bug or PHP Storm knows about your server. So on this, on DDEV, the absolute path to your code on the server is via www.html. And that's got a map to where the project is on your local machine. You don't need to worry about mapping the vendor directory or the web directory just as long as you've got the whole project mapped out. And the host needs to map, needs to match the domain name in your browser. This is the browser extension I was talking about earlier. There's one for Firefox and one for Chrome. Otherwise, just use DDEV XD bug on, which will use the start with request equals yes setting.  I'm not going to have time to go through the configuration for these tests, but I'll refer back to the blog post. So if you can paste a link into the chat, that would be great. So yeah, we're running a code sprint tomorrow. Debugging is probably going to be pretty helpful. So come along, give it a try and see what you can contribute tomorrow. Thanks for the presentation, Michael. If anybody wants to share or just general discussions on backend and testing, development and testing, just raise your hand and bring you to the screen or you can even just put question or a discussion topic in the live Q&A, which is in the control panel of your screen. I would like to share another thing which we have. Basically, you know, the XD bug has also another option called startup on error. And that's essentially, you know, you just basically, you know, any error, any exception thrown in your PHP code, XD bug will stop there. It's like a break point on every error, which is very helpful when you're mostly doing the, what do we say, console-based applications or, you know, grass-based imports and stuff like that. There is one question for you, Michael. How can you add watch to a specific variable from Liton? How can you add a watch to a specific variable? That's right. Yeah, okay.  So basically this watch's column here, you can hit this new watch and you can basically type in, you know, anything that's available. So if I put source data there, it's going to be, there's nothing in it. But if I, let me put a break point in here. The source data is null. If I skip over it, skip over again, there we are. So like that. There's also a setting that may be relevant. Some expressions can't be evaluated or can't be watched because they could be risky because they can actually change values. But if you know what you're doing and you want to add them anyway, there's a setting here, safe evaluation mode in value hints and watchers frame. And I think that may have actually been used where I was, it was in the, when I was doing a row dot get source. Something like that. Yeah, does that answer the question? Yeah. Does anyone here want to share the experience with X debug or their setup in their own organization or something? If not, I'll continue the discussion of the beat head versus Drupal testing traits. So, you know, in our organization, we've been using beat head for a while and, you know, it was taking almost, you know, so many hours to do it. And then we switched to Drupal traits testing traits, which saved a lot of time. And, you know, those hours now just became minutes. And, you know, we can do a functional test, all of the kernel test using those threads. And they've been very helpful. So can you explain a little bit what Drupal test traits are? So what's the difference between that and a beat head test and a, you know, a core functional test? So basically, you know, three types of tests we do, like functional unit test and kernel test. So Drupal test traits kind of beat head test is like a functional test and you are replacing a person going and clicking a button, right?  You know, your test case is just going and clicking instead of a person.  You don't have to interpret your things.   Can you guys see my screen? Yeah, cool. So I'll just quickly share my which is strong. Yeah. So, and for example, you know, and another side, where we just basically use this functional test. And it's very clearly saying, you know, just going to the page and clicking, so I'll just show you this one. So it's creating a landing page, which is essentially, you know, a Drupal node.  We're going to that URL, you know, finding an element with certain ID, you know, and then if the element exists, you know, we just want to basically add some values to that element.  And then, you know, a certain whether it's, you know, actually, you know, doing the, we actually got the right search time in the URL or not. So this is just a small example.  So I'm just trying to see if I can share we and see their scenario there. Meanwhile, meanwhile, I would really appreciate if somebody else also want to probably share their setup, how they do debugging and testing. Yeah, we don't need to be focusing just on debugging. So if there's any sort of backend tool or process or whatever that you use that you want to share, that'll be great. Something that we have been talking about was code quality tools.  If anyone has any of that to share. Has anybody using PHP Stan for the CI CD pipeline or testings? Yeah, we have it enabled on every pull request. Yeah. Do you want to run quickly what is PHP Stan? Yeah. So I guess PHP Stan is a static analysis tool that inspects your codes for potential errors. And it can be set to various levels depending on how strict you want to be. So it's going to detect, for example, maybe you're passing the result of a function to another function. Let's say it's like you pass something to an array, but perhaps it might not be an array that's being passed. It's going to, like, if there's a potential that it's not going to be an array, it's going to say, hang on, this could actually be null. And an array doesn't know how to handle that. So PHP Stan is going to detect that for you. Depending on what level you've got it set. We're also using for CI CD pipelines. Yeah. So we've got a couple of people. So Michael Priest and Bevan talking about. So Michael is using PHP Stan and Code Sniffer in CI. Bevan, yes, you do need to add it to your tooling chain. For Drupal 10, we're going to be requiring Drupal PHP 8 or perhaps even PHP 8.1. And I know there's a process at the moment where Garbo is trying to get the upgrade status module to run PHP Stan against every contrived module that's out there to detect PHP 8 compatibility issues. So, yeah, if you need to do a PHP version upgrade, then it's a great tool to use. Another very good tool we found for the, for the testing specifically for kernel testing is called Prophecy. I'm sure a lot of people would be using that to mark the objects.  So, so that made difference between functional and kernel would be the functional test takes more time because it's actually your machine going and clicking things and, you know, evaluating results. Sometimes they time out as well. But, you know, with kernel test, it's just testing the logic, right? So it's mostly, you know, a very lightweight wrapper around how you're going to test things. And you can, with Prophecy, you can create literally, you know, any type of objects existing in your system.  So I just have a question. And this is for everyone. How does the, you know, how Drupal Core does it right? What's basically Drupal Core's way of testing core and contrary modules? We see that, you know, sometimes when you submit a patch, it says the test field and test. So I've, you know, readily clicked on it and found a Jenkins job. But I was always being interested if somebody want to share in their experience. Maybe, Michael, have you ever come across? Yeah, I'm just going to, can I share my screen again? Yeah, sure. Let's have a look. So when a patch is submitted on Drupal.org. So it's going to run the Drupal test spot automatically. It's running 28,000 tests, which can take, I think it takes about an hour. So yeah, if we click into the dispatcher, we can actually have a look at what's actually being run.  And basically for a patch to get accepted, every single test has to pass. And you need to be writing a test for the new piece of functionality or the bug that's being fixed as well. What else can we see? We can see the build artifacts. So from here, if you have a look at like, yeah, you can have a look at, that's going to try and download the file. But basically you can, you know, have a look at the error log if there's a problem. Any of the artifacts from running the tests you can find in here. And this runs on Contrib modules as well. If the project is configured to do it. I've got a question from Morad Farshid about, are you able to show a scenario where, where I can use extBug browser extension? Yeah, sure. So it's a bit tricky because DDEV is configured. Let me show you. So I'll just close all of this.  Nothing's going to happen, right? So if I have extBug configured in trigger mode, basically I want to click, this is the extension here, set it to debug instead of disable. And that's going to send a cookie along with the request when you reload the page. And that, that would break when you reload the page. But since I don't have extBug configured that way, in DDEV, I can't show you that live. But yeah, I think if you're using Lando, that's the default configuration, is to have it in trigger mode. But yeah, let me show you the PHP info page for DDEV. So this is all set out of the box in DDEV, but you'll see... Yeah, so mode is actually set to debug, develop. So debug will add some other settings. I'm not sure off the top of my head exactly what it is. But if you're still on extBug 2, basically you have to set like eight or nine different variables where setting the mode to debug just does that for you. There's a page on the extBug site that explains the differences. Previously you'd have to say all of these things, which is now extBug mode is debug. There's some other things that extBug can do, like it can give you a coverage report of your unit test to tell you 90% coverage or whatever. You'll have to read up on here how to set that up. And you can also do performance profiling with xhprof as well. But I'm not going to be able to show that to you right now. I can even share like I'm using extBug on my screen. So I'll just show you on my screen. So basically, extBug is this extension, which Michael was mentioning earlier. So you enable that extension. And when it's green, basically you are in the debug mode right now. So every request it sends, it will basically say, I'm coming from 1, 2, 7, 0, 0, 1. So that's basically my setup on my local where it's coming from. And you have to get the PHP, basically IDE key, which you can set up by default. It comes with PHP strong, but you can add anything, other IDEs as well. So that's on my browser. And on the PHP strong side, I just put this where the request will come and filter anything with PHP storm IDE key. And I just started like a remote debug sessions on that. And that's pretty much all you need, right? And then I said, okay. And then when you want to start debugging, you just click on the listening thing. And I have put a break point here. And hopefully, when it runs, it's pretty slow. I think that's because of the cached thingy. But essentially, when it runs, it would just talk wherever your break point is. So that's how I set up. Like it's essentially the thing is you set it up as a remote break point. And then just enable the browser extension for it to get run. I hope that answers your question. So I might actually go through some of the settings that I have for running these unit tests in PHP storm. So essentially, if I can just have my screen back on, there we go. So essentially, we need to have a PHP CLI interpreter configured. So you can have just your local PHP installation on your machine. For this, I'm using DDEV. So that's actually loading in the Docker compose file that's generated by DDEV. And connecting to the actual DDEV container to run the unit test. Let's see. So under the test framework section, I've set it to use. So I went PHP unit by remote interpreter. And that's where I've chosen my DDEV interpreter, which is here. And you can tell it the path to the auto loader, composer's auto loader, and that's going to detect PHP unit, as well as your configuration file. That's the basis for it. Then the other thing is your PHP unit XML file. So essentially, like your simple test base URL is required for the functional tests. But it needs to be a URL that's accessible to your local machine for debugging, but also to the PHP container. So in DDEV, the domain name is exposed both inside the container and outside of the container. So you can just use exactly the same that you would use in the browser. A lot of the time, depending on your configuration, you'll probably just have something like local host here. Same goes for the database. So if you see this here, this is MySQL inside DDEV. So the host name is DB. The username and password is DB. And the database itself is DB. I'm actually using SQL Lite because it runs a bit faster for kernel tests and functional tests. For Drupal test traits, it's a bit different because you need a real-life database. So it actually just uses what you've got configured in settings.php. And so the same thing. So this Chrome here and Chrome driver here, the Docker containers that I've got set up in DDEV, you'll have to refer to my blog post about how to set those up. But that's so that Selenium and Chrome driver can talk to the site for running the functional JavaScript tests and the Selenium tests. Right. I never thought of SQL Lite before. I'm not sure if Drupal's CI uses it, but I've definitely seen something on Drupal.org about it. It'd be good to see the statistics of how much faster it is, but it's pretty cool. It doesn't work on every single module. So if your module does some strange database manipulation, perhaps it's doing it the wrong way. It might fail in SQL Lite. Another thing is I've been using XDebug for a while, but I've never used stepover, which you mentioned in your presentation. Yeah. So I probably use stepover a lot more than I do step into, or at least to narrow down. Sometimes you don't know exactly where you want to be debugging. You can kind of skip line by line. Yeah. And I guess sometimes you might see one function call, but that turns out to actually invoke like a hundred other functions. And if you step into each and every one of those, it's going to take you forever to get back to the next line. Yeah. Yeah, that's cool. Also we found that when we split up the container, so the container with XDebug is a separate service and the normal is a separate service that helps a lot. And so somebody, you know, like for example, because XDebug takes a lot of memory for running tests and stuff, like for example, if you're running PHP, you need a functional test, like switch to normal, you know, without XDebug container. And then for, you know, to debug that test, you go back to the debug container and then use it. Yeah, that's right. So in XDebug 3, it's not so much of an issue having the extension enabled kind of all the time because it's so much faster and more performant than XDebug 2. But we actually run a similar setup. So I haven't actually used DDEV until about two weeks ago. But yeah, what we do is we have engine X configured. So if it sees that cookie coming from the browser extension, then it passes the request to the XDebug container instead of the standard container. Right, interesting. And that has basically the start with the request set to yes instead of trigger. XDebug 3, does it have any dependency on which PHP version or it works on all? No. Yeah. I mean, maybe, maybe going way back to. Yeah. But if you have used it on 7.4, probably 7.2, I'm not sure. Yeah. Well, it's been nice. And thanks very much for sharing all the knowledge. Yeah. XDebug is, I think, very important utility in your toolbox. Definitely. Yeah. Yeah. Thanks for coming along. And I hope you've learned something. Yeah. If anyone has last question, feel free to post it in. So you all let the code sprint tomorrow. It's free. Yep. You don't need a ticket. Don't need to know what you're doing either. We've got mentors that'll, yeah. We've got mentors that'll guide us, guide everyone through the process. Sure. And I heard they also guide for how to contribute to group or like creating patch and stuff as well. Yeah. That's right. So essentially there's a bunch of tickets that have already been or issues on jiva.org that have already been tagged as ones we might like to look at. You can work on any issue you want. But yeah, those are the ones that we're going to be focusing on. So if you, if you want help with a particular issue, bring it up at the code sprint tomorrow. Yeah. No, is anything XDebug set up? Anybody want to bring up tomorrow in the code sprint? Yeah. I'm just going to help you with your setup. Sure. I will try. Right. Right. Thanks. I think that's a wrap then. Thank you, Michael. And thanks everyone for participating. Cheers.


Welcome to today's episode of the Mindset Mentor podcast. I'm your host Rob Dial. If you have not yet done so, hit that subscribe button so that you never miss another podcast episode. And if you love this podcast, you want some extra tips and tricks on your mindset. I send out an email every single Monday. If you go to mondayemail.com right now, once again, mondayemail.com, I'll send you some extra tips and tricks to improve your mindset to make your mind better. Today, we're going to be talking about why change is so hard. And I'm also going to take you through how to make it easier on yourself.  You know that. That's why you're listening to this podcast. But there is no way around it. You have to change in order for your life to change. If you do not change, your life will not change. It will be exactly the same as it is now. And a lot of people I feel like in the world are thinking that their life is going to change, but they don't have to do anything. So they're kind of just waiting for their life to change versus actually going out there and physically making a change. And it's kind of like Einstein says to do the same thing over and over again, expect different results is the definition of insanity. And so there is a psychological cycle that you will go through through almost any change that you go through. And that's what we're going to go through today. There's two psychologists, psychologists, Don Kelly and Daryl Conner developed a model that deals specifically with the emotional aspects of change and emotionally how you will feel as you're in these different stages that you go through in change. And if you can understand this, and number one, every time I teach this, people are like, Oh, my God, I feel so seen, like I feel like I finally understand myself. So if you can understand what I'm going to teach you. And while you're going through these stages, you can identify where you're at and what stage you're in. It makes it so much easier to continue to push through. And instead of giving up, which is what we usually end up doing. And so this cycle of change is actually called the emotional cycle of change. And inside of the emotional cycle of change, there are five different stages that you're going to go through. And you know, there's a graph that has to deal with it. The easiest way to think of it for those of you that are just listening to the podcast, is it's kind of like a you. So if you can just imagine a you, I'll take you through all of the different stages of the emotional cycle of change. And you can use this to understand yourself and to anticipate all of the emotional responses that you will have as you start to go through change. And by understanding each of these stages in detail, you can better prepare yourself and have, you know, tools to cope with your changing emotions as you go through it. So if you could imagine where at the top left of the emotional cycle of change, the top left of the you. And so when you think of top to bottom, the top is how you're feeling. So at the top, you're feeling optimistic and amazing. At the bottom, you're feeling pessimistic. And so at the top of the you is stage one, which is called uninformed optimism. In this stage, you're really excited about change. And this is why everyone is always so excited whenever they're starting off on some venture is because they have uninformed optimism. It's you're excited about it. And you have optimism because you're not really aware of the difficulties that you're going to face ahead. And this is the reason why everyone's so excited whenever they start something new, but eventually they go into the other stages and decide to give up. If you're one of the people who usually starts if like I always hear people say this all the time, I'm really good at starting stuff, but I'm really bad at finishing, you're going to understand as we go through these different stages. But the reason why you're excited at the beginning is because you're in stage one. And that is uninformed optimism. The one thing that you can do here, a tool that can help you as you start to go through these emotional stages is when you're feeling optimistic and excited is to make yourself a list of the benefits that you hope to achieve. Because when it comes, it's going to come back to you're going to want to give up at some point in time. And it goes back to the quote, which I'll tell you again later on in this episode, which is when you think about quitting, remember why you started. Now that you're at the beginning and you're in that uninformed optimism, make a list of all of the benefits you hope to achieve, all of the reasons why you're excited about taking this journey and making this change so that you have something to remind yourself of later on when things start to get hard. And at this first stage, you're going to be filled with excitement. You're going to be filled with enthusiasm and you see all of the potential benefits of change. You see how your life is going to be amazing with this change. But the reason why it's uninformed optimism is because you're looking at all the benefits, but you haven't yet experienced any of the costs of your change. This stage of uninformed optimism, you're just positive. You're just excited. Things are amazing. Things are great. And we're at the top left of the U and you imagine all of the benefits, but you don't see any of the costs in everything in life has a cost. Everything has a cost. For you to decide that you want to delay your health, there's a cost to that later on down the road. And there's a cost to everything, negative and positive that you have in your life. And so when you're at this stage, you're looking at all of the stuff and the optimism of all of the benefits, but you're not like any of the costs. But then you don't stay there very long. The excitement starts to fade. The more that you learn that you're going to have to grow and change, which then brings us to stage two, you're dropping about halfway down the U. And now you're in something called informed pessimism. You now know what you did in a before. And with that new knowledge, you're starting to get pessimistic. And as change progresses, negative emotions may start to arise. And eventually you start to see some of the difficulties that are coming up. And the benefits don't seem as real. And you start to see the costs more than you see the benefits. You're seeing more of the costs of what you're going to have to do and change and how you're going to have to change how your life is going to have to change. But you see less of the benefits. And this stage is really characterized by frustration, anxiety, and really is where you start to feel the desire to quit. You start to see the changes. Humans are uncomfortable with change that we have to make. And you start to think, maybe I can't do this. Maybe this isn't what I thought it was going to be. And as all of this reality sets in, the positive emotions that you had before quickly turn to pessimism. And the benefits can seem less real. They seem like maybe they're not even possible. They're not as important as they used to be. And the costs become really, really apparent. And this is where you will start to question yourself. You'll start to question the benefits. If the benefits that you'll get from success or from whatever it is that you want are worth all of the effort you're going to have to put in. This, you're going to start to question all of the things that you were doing before. Now, all of this informed pessimism sounds pretty terrible, right? It couldn't possibly get any worse, right? Oh, no, no, no, it does. It gets into my favorite stage, which is the bottom of the U, which is stage three. And you go from uninformed optimism to informed pessimism to stage three, what they call the valley of despair. The good thing about the valley of despair is it is the lowest point of the cycle. And this is a stage where you're going to experience the pain of change. And the benefits seem way too far away and they seem unimportant. The easiest thing to do in the valley of despair is quit. And this is what most people do. That's why people are so good at starting and so terrible at finishing is because they get into the valley of despair and then they start again and they get to value despair, they give up, they start again, they give into valid despair, they give up, they start again. And it's easy to want to quit and return back to your old ways of doing things. The lowest point of the emotional cycle of change is the valley of despair. And this is where you're going to give up where you have given up in the past and where you're most likely to give up. This is where you're going to feel the pain of the change and the benefits seem so far away. They seem unimportant. It's just easy to go back to doing what we were doing before.  And in that starting something new, you're going to go through the exact same emotional cycle of change. And so you might see something and be like, oh my gosh, that looks so much better. I don't want to do this anymore. But whatever you start the next time, you're going to go through the exact same process. And this is the reason why the grass looks greener on the other side is because when you're in the valley of despair, when you're deep in the valley of despair, and you're looking at something else, you get shiny object syndrome, you're looking at a patch of grass that's so green in your mind of uninformed optimism back at stage one. The problem is if you quit at stage three, you're going to have to start at stage one at something else. And you're going to go from stage one to stage two to stage three, you're going to eventually end up in the valley of despair with anything new that you start. So if you decide that you want to give up because it seems too hard and something else seems easier, the reason why that thing seems easier is because you're coming at it with uninformed optimism. You're coming at it looking from stage three of where you currently are to stage one of something else. You will eventually go through stage two and stage three of that new thing. It's so much easier to give up. It always is easier to give up. But if you give up, you're going to have to go back to stage one of whatever the new thing is. When you think about quitting, though, remember why you started. This is why in stage one, it's really important to make a list of the reasons why you want to do this. Because when you get to your lowest of lows, you want to look back at that list and say, that's right, that's what I'm doing this for, right? Now, the good thing about the valley of despair is you're at your lows, you're at the rock bottom of your emotional cycle of change. Now it starts to look up. We start to go back up the other side of the view, which is stage four, informed optimism. Look at this. At this stage, the possibility of success increases. And this is where you are going to actually see the road that you're on. And you're actually going to become more optimistic. You're going to say, I know what I know. I know what I don't know. I know what I need to do. I'm starting to feel really proficient at what it is that I am doing and I'm starting to get optimistic at it. And you're starting to like success actually starts to seem a whole lot more possible. It's like you're getting your legs under yourself and you're getting better at it. You've screwed up a whole lot of things, but you're starting to feel a little bit better at it. And the benefits of the actions that you're taking are now starting to show. You're starting to see the benefits of your actions. And the cost actually starts to seem worth it. Things are starting to seem easier. Doesn't seem as tough as it did before. And now you're starting to see a little bit of the fruits of your labor. And this is where it's like the God or the universe or whatever it is that you believe in starts to throw little breadcrumbs at you like, hey man, hey lady, you're on the right path. Like you're doing well. Hey, here's a little bit of success. You know, you're growing a business that's like, here's a couple of customers.   There is light that is at the end of the tunnel. We're starting to get there. And this is one of the most important stages you can be in because it informed pessimism stage four, you're starting to see all of the places where you were, all of the places you still need to go, all of the improvements that you've made, all of the improvements that you still need, but you're starting to become more optimistic of like, hey, I actually think that I could do this and I actually think I'm going to be successful at this and that stage four. And then what we all want, we all wish we could go from stage one to stage five, but you can't, you've got to go through stage two, stage three, stage four, but stage five is success and fulfillment. Success and fulfillment is the final stage of the emotional cycle of change. This is where all of the benefits of new behavior are finally fully experienced and the cost of change is now perceived as worth it. Like the costs that seemed, damn, I don't know if I could do this at stage two and stage three.  I'm so glad that I did it. It doesn't seem worth it until you cross the finish line.  And the actions that were once really difficult for you are now routine. Like it, it's not hard to do the things that you need to do because it's now a routine. They're literally habits that are built into you. And finally, with success and fulfillment, you're getting to the point where you're like, that was worth it. I'm so glad I did that. And you continue to keep working yourself in order to become better. And the important thing to remember is this, we all want to go from stage one to stage five. It's not going to happen that way. You got to go from stage one to two to three to four to five. And so the important thing in what you're probably asking yourself when you're out there listening to me talk about this, okay, if I'm going to go to stage two and stage three, what do I need to do in order to get myself to stage four and stage five? So glad that you asked that question because the most important thing that you can do when you're in stage two in stage three, knowing that you're going to not feel very good is to take action every day, even if it's just a little bit of action towards the goal you're trying to achieve. Take a little bit of action, regardless of how you feel, you should know that you're going to feel unmotivated. You're going to feel like you can't do this. You're going to feel like maybe this isn't going to work out. You're going to feel like giving up. But regardless of how you feel, you take action in the direction of where you're trying to go. That is the most important thing that you can do. And so it's not about like, Hey, I hope I feel good today. It's like, Hey, I'm going to take action no matter what, instead of trying to be motivated, focus on being consistent, waking up, doing what needs to be done, regardless of how you feel. The most successful people in the world do not wait until they feel good until they take action. They take action every single day to give them a chance of actually feeling good. Because when you go into stage two and stage three, there's a chance that you're probably not going to feel super excited. You're not going to feel super stoked. But as you start to get a little bit closer and a little bit closer and a little bit closer, you start to feel better about yourself.  And so if you're trying to get better and trying to improve and you feel like you're improving just a little bit every single day, you'll start to become happier, start to become more motivated. You'll start to see the light at the end of the tunnel. And you'll go from the bottom of the U back up to the other side of the top of the U. And you'll eventually go to stage four. And then you'll eventually, time will tell how long it's going to take. It could take a year, two years, five years, 10 years, 20 years. I don't know what it's going to take because I don't know what it is that you're trying to be successful at. But eventually you will get to stage five, which is success and fulfillment. And you'll only get there when you decide that you're not going to give up. So that is the emotional cycle of change. You will go through it whenever you do anything different whenever you start to have any changes. And if you can understand your emotions, it makes it so much easier to know, Hey, I'm here. I'm going to be working through this stage. And this is what I need to do. I need to take the right action. I need to be consistent. I need to make sure that I'm moving myself a little bit further into the direction that I would need to be every single day. So that's what I got for you for today's episode. If you love this episode, please do me a favor right now, share it on your Instagram stories and tag me in it, Rob dial Jr, R O B D I A L J R. That is one of the ways that we grow. And so if you would love to support us, I would love for you to be able to share it on your Instagram stories and tag me in it. And once again, I will leave you now the same way I leave you every single episode, make it your mission to make someone else's day better. I appreciate you. And I hope that you have an amazing day.


Hello friends welcome again to another session on elements of Indian mathematics. In this session we are going to do a very interesting construction. Now this construction has been discussed by Euclid as well, but we are going to take a look at how Indian mathematicians and precisely how the scholars who wrote Sulba Sutras have you know discussed this construction or have done this construction. What is this construction all about? So basically we are going to discuss a method of constructing a square equal in area that of a rectangle once again. So we are going to construct a square equal in area of that of given rectangle. So let us begin the construction. So for that I am going to first draw a rectangle. So let us say I am drawing this rectangle. So let me draw the rectangle first. So let me draw the polygon rectangle. So you can see I am drawing this A, B, C, D. Perfect. So this is a rectangle, the area, how much is the area? Let us see its area. So its area is 54 okay. So let us just hide this area for the time being. Now what we are going to do is we are going to construct a square whose area is 54. So how do I do it? So first I will do the construction. So pay attention to the steps which I am following and then I am going to prove that also why it is working okay. So let us first draw or complete the construction.  So how do I do it? So basically I will take a circle and this circle is centered at C and it passes through D. So clearly this point E, so C E is equal to C D right, the radii of the same circle so done.  So if you look at this point F right, so D C E F is the required square okay. Now I am going to hide these things because I do not need them anymore. So let me hide these okay. So and let me join F E clear. So F E is a square whose side is the breadth of the given rectangle this is the first step. Now what I am going to do is I am going to divide this rectangle into two halves, two halves, equal halves. So for that I need to take the midpoint. So let me take the midpoint of A and F. So G is the midpoint of A F and now I am going to draw another perpendicular line on G on A F like that okay. So if you look at it this these two rectangles so A G H B and G F E H R equal in area is it. So now let me again take this away I do not require it and let me draw the segment G H done. So what have we done so far? We have created rectangle random rectangle whose area was 54 square units. Then I constructed a square with the base same as the or the side same as that of the breadth of the rectangle. Then whatever is the leftover portion of the rectangle I divided into two parts okay this one and this one. So what I am going to do is I am going to reproduce this rectangle on the sides here EC what do I mean is I have to create a rectangle like that whose area is same as any of these rectangles. So let me do that how do I do it? So let me have that line back which line or rather let me draw a line this line F E connected line right. So this is the line.  Now you can see this E and let me name this point this point is I. So E I is equal in length to E H radii of the same circle okay. And now if I drop a perpendicular from I so let me name this point as J so what do you think guys I J length is equal to CE is it rectangle perfect rectangle and E I is same as E H. So in a way this rectangle look at this rectangle E C J and I is equal in area to G F E H is it why length is same length is same so F E is the length here EC is the length here and E I is the breadth here and H is the breadth here so both are same. So hence the area of again E C J I is equal to H G F E right is that okay. So I hope this is clear so let me now take away the circle I don't require it I don't require it either I don't require it anymore. So let me now construct the rectangle one for all let me complete this rectangle so E I and I J and J C okay guys so EC J I is equal in area to G G F E H or A G H B fine now what I am going to do is I am going to first of all let me also extend these lines so there was few lines let me open them up yeah so I need I will be leading this line yeah and I will also be needing this line okay perfect now. So look carefully what I am going to do now I taking J and this point which point here K J K J K as the radius and J as the center so look J as the center and K as the radius I have now found out a point where the circle is intersecting this H E. So this point is let me make it a little bit more zoomed in so yeah H L I hope this is visible to all of you so let me put this L here so these two points I hope this is clear right let me take it to the center here yeah okay perfect so you can see this H L right now another thing which I need to do is I need to drop a perpendicular from this point L sorry this point L and on to this line okay perfect now when you do this this line here the line perpendicular to H E on L cuts I K here let me zoom in again and yeah M so M is the right now now what am I going to do I am going to draw a square with side M J M J once again M J okay and this M J is the required side of the square so let me draw a circle like that okay and so this is one point so let me name this point here and and again a circle from N or rather I need not draw a circle I can just drop a perpendicular line from N on to this so here is the point of intersection where is the point of intersection this one oh and let me draw a polygon again with M J N O back to back to M no sorry the last one was not done properly so once again so let me zoom in first for a clear view okay so let me do this now am I what am I doing I am joining the I am creating this polygon M J N O and back to M so this is a polygon required polygon guys so this is a required square J N okay let's try and measure the area so you had measured this area is a 54 this area is also 54 amazing isn't it so by this construction we could get a square which has same area as that of the given rectangle so hence we could convert a rectangle into a square of same area that's the construction now how did it all happen let's now look at the


You know, you and I are both Joseph Campbell lovers and in mythology specifically in Buddhism Nietzsche talks about these young talk. All of them. Anyone with two marbles knows this The problem with talking about anything is we're separating from ourselves like this like third entity is like Oh, it's not really part of us. It's not me in reality like if you look at Buddhism or if you look at mythology look at like the hidden shadows in ourselves is About accepting it part of you, you know, Nietzsche has a great saying be careful to cast out the devil from you because you're casting out the best part of you Everything is like a double-edged sword. Yeah. Yeah, so we are best qualities are our worst quality. Yeah, so instead of instead of negating it Like people like to label it. All right There's a Vedic saying if you label me negate me and people like to label something Well, you know, I'm angry and like my primary dominance is like anger, right? That's kind of like my substrate I'm anger and cynical. I'm like, I don't trust people, right? Instead of saying, oh, this is a horrible trait of me like I need to eliminate it.  You don't recognize them You don't love them.  Yeah, it's like impossible. Yeah, it's you You can't run away from yourself. Correct. Can't just all of a sudden be like, all right. It's it's gone Yeah, there's no duality. Well, I read this book by Maxwell Maltz Who was for cyber cyber psycho cyber? Long time ago it is honestly the most incredible book and I've read a lot of incredible books, but like from the perspective of just succinct how to and like an understanding of the framework of the mind as like This this some goal oriented organism and what happens to the mind when it doesn't have a proper goal And what happens to the mind when the thinking patterns have become destructive, you know, it's it's absolutely mind-boggling in terms of how much I've I've gleaned from this from this book about like my past and thinking about you know How I used to think how I used to see things how I used to react to them And so I'm able to now go back in time kind of rewrite a story, so to speak and in frankly like change my emotions in some sense surrounding certain things and I think actually with this MDMA therapy, I think it could like Like a whole nother level I think it's at least for me. It's done a lot of good. There's a bunch of other therapies out there.  Mm-hmm, you know Drink That's how people tell what their problems. They drank, you know themselves into the an early grave or a stupor And it's it's so unfortunate. It's so unfortunate And so many good people have been crushed by the weight of their own minds their own issue, you know so many of our ancestors like Therapy is important But I firmly believe that like the type of therapy that will do the most good is the type where you're not just Ruminating on the past hurts and bring them up, but you're really thinking about like what is it that you can do today? Correct. How can you think differently today to like switch it up because it's like if I sit there and talk about that That I'm weak that I you know if three months ago and I was like 30 pounds heavier if I was just Pissing out myself for like being heavy But I didn't go to the gym to actually do anything wouldn't have done a liquor good for me. So you bring up a good point I'm a firm believer that so-called willpower scam Just like in computer software, there's a substrate and you have Whatever computer language you want and in the environment to behave a certain way different environments. Okay I'll give you example right now. I was at a gym really beautiful gym downtown Toronto right in the core around Eden Center Has everything you can possibly think about I never went why because it lived too far, right? Simple as a logistics So I found a gym close to me close as possible I actually got a co-working like a office. I do one hour a day right a litter Across it. What happened? Well, I go there every day because it takes me less than 10 minutes to get to the gym It's like seven minutes from my front door and so Going back to the therapy The problem is it's not just you within this computer code It is you plus the context that you're in so if you are Obviously always starts with you voice first. You got to work on yourself You know, there's a roomie saying yesterday. I wanted to change the world But today I'm no yesterday. I was clever on to change the world today.   Yeah And it actually brings you back to like the whole topic of habits and why they're so powerful well, you know You've been creating this habit of going to the gym by defaulting yourself into it by making it super easy for yourself No, no resistance. Yeah, exactly like resistance man Like we do things we use the phone because there's so little resistance with using the phone That's why we're so addicted to it. Right feels good um So yeah, I'm I'm totally in full agreeance there like I totally get that Yeah, so that's the thing is like I I have friends of mine to do a lot of therapies Then I asked a question like one friend is like 20th time doing something You know work by now Like 20 times in, you know, there's that counter thing too where it's like a lot of therapists, you know And I've gone to a few therapists where it's like Kind of been like, okay. Well, you know, was this really worth the value because they just kind of sit there and let you talk And then okay, sure that's cathartic to some degree. Yeah, but like I'm coming here for tools, man I'm coming here to learn something to like incorporate it into my life Not just coming here to like Blab and blab and blab about the past. I've done enough of that, right? Like I think for human beings, it's It doesn't come natural to think positive. Honestly for most I think Um, and that's like an evolutionary adaptation a negative one Unfortunately, because like we have to concentrate on the negative in order to escape from the tiger or whoever We have to see those negative things and build negative patterns to ensure that we're ready for it's a safety precaution. Exactly Potentially to happen again. So it's like we don't we're not born with a manual for the brain, right? And and very few people understand it and very few people teach it and it's kind of you're on your own Okay.  Not even a tree, but um Use your body, right? At least yeah, at least for in the west like I think it's seldom the people experience Real I want to say living but experiential Nature experiences brother, you know, I mean like real like I used to go partaging a gunkman park I'm talking about no food. We brought rifles in case of a bear fishing rods And 60 ounces of vodka There's the eastern block in yeah, that's right And uh straight up partaging like no food.   I was the last generation before the new generation 34 um It's seldom that I hear people do stuff like that sell them that they experience nature they go in and they experience Dude and and it's such an integral part like all the science Frankly like look, why do you need science to tell you you need nature? But okay, let's say we do. Mm-hmm all the science confirms that it is the healthiest thing for you next to like exercise and diet You need nature. Yeah, and for me, that's always been another pivotal part That's helped me like Become a better person live that concept of rte is stepping out Into that kind of darkness so to speak going on big trips whether through the Himalayas I hiked there for a month and a half.  Yeah, and I came back and My is a little off topic But it's like I actually had to come back and do more adjusting living here than I had to going over there