What's up everybody look we appreciate our audience tremendously the show has grown Huge over the last seven years and so we wanted to do right now because it is the beginning of the years when a lot Of people want to work out want to get in shape We actually wanted to give people a free 30-day maps workout program This is not one of the giveaways we do on every YouTube. I'm gonna do that too. This is gonna be free for everybody Okay, so this whole episode that we're doing that you're gonna listen to we talk about this 30-day workout includes Exercises and mobility sessions. You're doing something every single day It's all mapped out planned out for you and hyperlinked to videos where we're demonstrating form and coaching you through them All right, this is day one. I'm super excited to bring this workout series for you guys We've been asked a ton of times if you guys were to plan out mind pump were to plan out the perfect 30 days to get Somebody started towards their health and fitness journey. What would that look like this series? We're gonna play take care of every single day for the next 30 days for you But pay attention because a lot of people this is what they tend to do as soon as January rolls around They got new year new you new goals and they go gung-ho But what we're gonna show you guys is how to strategically progress this every single day It's a free maps program and it's for everyone. You can find it at maps 30-day.com so that's for everyone and again. That's what we're talking about now Here's the other giveaway. This is the YouTube giveaway that we do on every episode It's gonna be maps anabolic So if you want to enter to win that leave a comment below for the first 24 hours that we drop this episode Subscribe to this channel and turn on your notifications. You got to do all those things if we like your comments We will notify you and you'll get free access to maps anabolic one more thing before we get started We are running a sale on three workout bundles right now We have a beginner workout bundle an intermediate workout bundle and an advanced workout bundle all of them include nine months of exercise Programming multiple workout programs the whole deal workout videos Blueprints everything explained and done for you so it's in each one of those bundles if you're interested You just want to sign up head over to maps January.com and then one more thing if you just want to try one maps program do maps anabolic It's the flagship program You can get that right now for half off if you want to do that go to maps red calm and then use the code January 50 for that discount. All right here comes a show. I wanted to do an episode I thought that would be cool and What would spark this was and we did this you guys remember what I'm talking about in a minute. We did this I believe four years ago We wrote this, you know free 30-day Workout that we did and then we shot it on YouTube and and it's like a free maps program Yeah, and it and it was very well thought out. We produced it We spent some good money and time putting it together and it was like over four years ago And why I want to talk about it is because I've got a lot of family and friends that I wouldn't consider Like hardcore fitness people I would consider them January fitness people, you know But the New Year comes around they put on some weight and they want to get started well all these close family and friends of mine they have all of our like Maps starter maps anabolic a lot of our beginner programs at one point either giving them access or they've purchased it and You know what they they all follow and I just found this out Just the other day like you talk into a few of them They all reference this 30 day as they absolutely and they've tried the other ones and like it's just they feel like it's perfect They're like I feel like you guys hit it out the park with the right amount of Exercises and work and it's so specific because we give something like every single day for them to do And then we scale the volume up It's the perfect way to get I think to get started, especially if you're looking to get started In the month of January on your on your fitness goals, you know, it's funny We were all talking about how grateful we were the other day, you know, it was the new year and We've been doing this now for about seven years So it's been a while and we wanted to give People something free now we give lots of free information, right? We give lots of free advice and You know how to do this and how to help you with that But we we talked about giving some people a free 30-day starter of getting going so I'd love that you're going in this direction We created this four years ago before we got we were a fraction of the size We are now which is probably why it didn't explode, right? We were kind of tiny. Yeah back then we just forgot about it Yeah, that's so much valuable information here that we haven't really brought up in a long time So I'm glad I'm glad we're revisiting. Yeah, and the truth is although It's more complex than this and there's coaching involved and hopefully our podcast provides that for people But when people first get started, I mean, I know you guys know this when you first get a client It's you really do increase their odds of success initially when you can help them day by day Like people like to know What can I do every single day now? Of course, you're not gonna lift weights hard every day that that's counterproductive It's not gonna work. It's not good for your body But there are things you could do every single day that kind of keep the ball consistent keep things rolling And then if it's done properly the way you feel really is a Motivating factor to help you continue on of course It's more complex when you get further down the year But at least that initial startup can be done the right way So that's the that's the feedback that I was getting okay So the feedback that I'm getting from my family and stuff that are that are following it is They love that it's like they have a small goal every day and it's it's it's very obtainable It's not very time-consuming, but they have something they can work on their health and fitness Every single day and every week we kind of scale it up So they start to slowly build the volume up and get some momentum That and then the combination of what we did with mobility because one of the other things we get is we talk a lot On the show about the importance of mobility mobility and we've got programs stuff around it But we've we've sold a lot of people on the idea of the that they need to be doing this But then so many people kind of don't know where to start And sometimes prime and prime pro there's we we've provided so many movements in there That some people feel kind of lost like I could you just tell me what I should do and then we're always like well That's kind of generic just to say go do this But we mapped that out in this program based off of the exercises that we knew they would be doing to make it as As customized and individualized as we could and we picked like the biggest bang for your buck type of mobility moves And that's the feedback I get I get the the day-to-day stuff So I have a goal and then the addition of that the inner Introducing them to mobility and it be able to actually feel what a difference it makes right away. Yeah mobility Requires good programming just like a workout I think people think mobility is just general and there's value to just doing mobility But to really get value out of it It should be programmed properly just like an extra like a workout program and the the the factors that you consider Are your individual body and the other factors you consider your workouts? What are you doing the day before what are you doing the day after? Because that can make a huge difference in terms of you know what you need to focus on you know we have a Very large audience the show gets millions of downloads a month and a small fraction of people take the leap And sign up for and buy one of our workout programs There's a lot of people that listen and don't take that step and I get it I totally understand that it's it's a leap of trust when you do something like that Especially with online workout programs stuff like that. So this is gonna be free. So we're literally in this episode We're gonna break down You know the the features of it of this program that we're giving you we're gonna talk about the value What it's gonna do for you what to expect over the next 30 days How to progress through it why we created it the way we did And you're gonna actually have access to this all written out for you Not only is it all written out, but the exercises that you'll get access to in a blueprint Are going to be hyperlinked to videos on youtube where we're demonstrating How to do these exercises so for all intents and purposes. This is a a straight up full on 30 day maps workout program and it's a really great way to get started. It's a really great way to get structured and organized Yeah, I think a good way to explain this. This is like our most handheld type program where we really try to kind of eliminate a lot of confusion a lot of We don't want to inundate people with too much information Which is something we learned as trainers. We got to start real simple and and and just keep it to the real effectives point To focus and so, you know, this program is is for that introduction Where, you know, you can really get a good experience and then build off of that to where you won't need so much Handholding and then be able to kind of work your way through on your own Totally, you know the other thing that we did and I forgot that we did this Because I don't think we've done this any other time is we were experimenting with The coaching aspect of the videos. Yes, so and we had a little bit of fun with it I actually really I you know, and maybe we'll go back another time and do this because I've had nothing but positive feedback and we only I think maybe we did it because it just it took all three of us And it was a little bit more timing. We're like, okay, this isn't realistic to do this all the time But we had Justin Demo the exercises so he's being videoed and then Sal and I are Commentating so and kind of like talking about coaching. Yeah, we're coaching. We're coaching And pointing out the movement and the cues while you're actually performing it So it's actually really good coaching built into it and you get a little flavor of our personalities too if you don't know Yeah, so here's some of the features of this 30 day workout program now. Remember You have something to do every single day with this so every single day You're either going to be using resistance training or working on mobility And the workouts and the in the mobility sessions are going to range anywhere between 20 to 60 minutes as you progress Through this program so every single day you'll have something Written out for you. You'll have demos on how to do them and coaching cues Throughout the entire program. So it's basically as close as you get you can get to having us train you In person without us actually being there in person. So one of the features Of this program, especially in the beginning of the program Is a focus on compound lifts. So compound lifts are exercises Now that the the the specific definition of compound lifts would be lifts that involve More than one joint but to to make it more simple Really, these are exercises that use more muscles Require more motor control and more stability than other exercises and what this does is it results in More bang for your buck. So to give you a good example A squat Is doing so much more for your legs than let's say a leg extension or a donkey kickback Or an isolation movement. It's just one exercise does so much. Now. Why do we do this? We're saving time and we're maximizing results Most people are not looking to work out more for less, right? They want less for more The compound lifts and exercises do that and there's so much carry over as you get stronger In these particular core lifts You're going to you're going to see carry over into other movements and other exercises down the road We also Followed the the principle that we always talk about about doing the least amount possible to elicit the most amount of change, right? So we start The very first week and there's only three of those movements per workout And then we actually split the body up, right? So you have upper lower upper lower So throughout the week so you the mobility in between that's right And then mobility and then the mobility is specifically addressing the movements that you did in the the previous day so that they Compliment each other and I think that's what people really enjoyed was it it was Something as simple as just a couple of exercises three exercises to get started with We were picking ones the biggest bang for your buck So we know them doing even just those three movements is going to start to show change in their body Most people if they're just getting started, we also know they're probably going to be sore and feeling that It's the first time they're doing a lot of these movements or first time in a long time They're doing these movements And so then the mobility days on the following day really address that yeah, so essentially go ahead Justin Oh also to yeah, just the compound list I know that they're a bit intimidating for people if they don't have any previous experience to You know trying to complete these types of exercises So we spent a lot of time breaking down You know a lot of the nuances of these lifts so that way, you know You maximize your effort your form your technique and everything's on point Yeah, totally so think of it this way too like one day You're sending a signal to your muscles and your body to get stronger to adapt There's a little bit of damage that's done That's what sends the signal right because that's why you get a little sore or it's kind of hard The day after is mobility mobility is recuperative mobility Helps facilitate recovery and helps you move better so that the not the next day when you exercise You're actually doing movements better than you did before so you'll start to see this kind of linear progression because of this alternating pattern of Resistance training and mobility so I can say very confidently this program Focuses as much on mobility as it does on the exercises And that just results in a program that feels really good as well as being extremely effective Another thing about this program is Over the course of this 30 day period You scale you scale up So what you'll notice is each week you're adding an exercise or two To your workouts so week one maybe three exercises on a particular workout week two maybe four And so on and what this does is it keeps the ball rolling and as your fitness level improves And and gets better You can do more and get even faster results and that's actually what you start to notice You just start to notice that the results will start to kind of accelerate Well, it's it's addressing what I think we all agree is maybe one of the number one If not the number one mistakes that people make with their new year's resolution when they get back into the gym And that is throwing everything that they can tolerate like you like to say like what you can tolerate And what is best for your body are two different things And so we're really encouraging people to do what's probably best for them volume wise And then we will scale that up over time and eventually get to maybe where you can tolerate But starting off right away in this in the the amount of intensity and volume as the most you can tolerate Is a is a losing strategy. Yeah to to illustrate that further think of medicine, right? You have a headache and you take some ibuprofen There's an amount and ibuprofen that's going to help take away your headache And then there's an amount and ibuprofen that you could take that you won't die But you can you'll survive right those that's tolerate versus effective dose Exercises the same way and we tend to push ourselves Especially when we first get started and do the maximum amount that we can handle Not the optimum amount and so what we're trying to do with this is we're we're giving you the optimum amount And over the course of 30 days As your body's ability to do more and to handle more and recover faster and also require more, right? So what works for you in week one isn't going to necessarily work for you anymore week four because you've already gotten stronger And you're more fit. So the program scales over the course of that 30 days. It also gives you something to look forward to What I also like about this program Is that um, you know, we prescribe Uh the mobility because like we're establishing these rituals So we're setting you up for long term success not just like getting you to this weight loss goal or this You know sort of 30 day goal and then you stop. No, we're trying to set you up.  They're they're you know, uh strong and supportive And you know, you're able to then move forward as you gain the strength that you're going to gain in conjunction with the weight training Totally. So there's something so there's a phenomena that you can apply to many things called a positive feedback loop Um, and to give an example of that.  What's happening is The microphone is picking up sound. It's getting amplified by the speaker that gets into the microphone And what happens is this quote was called a positive feedback loop, right? It accelerates and gets louder and louder and louder until you blow the speakers out Well, when you program mobility and exercises together So not just mobility by itself exercise by itself But rather we put them all together knowing what you did before knowing what you're doing after knowing What you're doing the previous week and the in the week that follows Is you actually get this positive feedback loop with the mobility program with the workouts You actually start to get better and more efficient and effective results as you continue So that's one of the features of programs that are written the way that we created this one Now there's one other thing that's included in this because it's it's it's resistance training focused And mobility focused and a lot of people say well, what about activity? What about daily activity? What about cardio? We thought about that as well now in our experience The most effective way to increase activity is not To schedule 30 minutes or 45 minutes on a treadmill or a bike now that that's okay. There's nothing wrong with that But taking an additional 30 minutes or 45 minutes out of your day to walk on a treadmill You're far less likely to be consistent long term Versus just tracking your steps throughout the day Because you can do that throughout the day and you can literally do things like park further Or walk a little further with your dog or take the stairs instead of the elevator All of this actually adds up and in the program We give you step goals on a week by week basis So not only do you have your workouts and your mobility workouts?  I had as a personal trainer because there's so many competing factors And you know to be able to schedule them a lot more time Specifically for a treadmill or for a bike, you know That's going to take away all these other Items and things going on in your day that you have to consider and so for me to kind of eliminate that and just focus on More of the activity of you being productive and then incorporate that into success of Body fat loss or whatever is going to help kind of aid in your progress By just tracking the amount of activity overall It had way more Adherence. Oh, totally. That's a it's a similar point that I was going to make is You know, I although this is a, you know, beginning of the year Getting someone started type of program Over my years of training clients I actually found this as a strategy all together for no matter what level of experience you are I mean, for example, like the last official like, you know, true Client that I trained was probably like melissa for a show, right? And this is one of the ways So the bikini competitor high, uh, like highly knowledgeable Experience advanced. Yeah advanced lifter. But yet this is exactly how I prescribed her fat loss journey heading into her Bikini competition would be through steps. I just find it a much better strategy For people to follow instead of this like, oh, you need to be on a treadmill for a one hour time versus I just need you to get your steps to this point when and how you get there I really don't care. You can break it up 10 times in the day or hit it in three little bouts It's it's easier to scale and it's easier to sustain after you reach your goals, right? So versus this like I have to be somewhere for one hour on a treadmill in addition to my weight training It's like, hey, I was doing 10,000 steps a day and now I'm I'm at my goal or whatever So I know like as long as I keep my walking up and act be active and you know, like sal said go park further away Take the stairs instead of the elevator I can maintain that type of movement and not feel like I'm having to schedule an hour of cardio out of my day No, that's it's so effective. I mean and you're talking about a bikini competitor who you know, this is an advanced person Who's competing? I mean the average person One of the biggest struggles with consistency is just how do I schedule all this stuff? How do I how do I keep this up? Well when you're talking about steps It's it's really just about your daily life. I mean when I had clients do this And and step counters are inexpensive and your iPhone. Yeah, even your phone will have an app that can do this So anybody can do this It's super easy like I would have clients that would tell me Oh, you know how I used to have to do 30 minutes of cardio, you know once or twice a day to hit 10,000 steps And I'm using a just a arbitrary number, but they would say I'd have to do that to hit my step goal Now I literally I mean we're we're saying things like park further and use the stairs Sounds silly, but that's literally what they would do. They would say oh, I would I would just take the stairs A few I had one client who said, you know what I do to hit my step count cell She goes instead of using the bathroom on my floor at work I use the bathroom that's two two floors up and I just take the stairs and at the end of the day I end up hitting my step goals I don't have to do any cardio and it's so easy to be consistent that way because you don't got to go Change go to the gym schedule this and go do that Now if you want to do that, it's fine if you love that there's nothing wrong with that But we wanted to make one of the problems with giving people a 30 day workout is this there's a million and one 30 day crash course lose weight, you know contest type programs that you see online We wanted to maintain our integrity and give people a 30 day start that was sustainable That was had a long-term effect as well Not just 30 days getting the best shape of your life, baloney And then get out of it because we hate that as trainers that just always fails. Well, that was the main goal, right? We know that Most people that get started in january aren't here three months later And so that was kind of the the problem we were trying to solve It's like, okay We recognize there's a massive wave of people that are coming into the the fitness sphere right now And we know that many of them more than half of them will be exiting in three or four months If we really care about and are passionate about what we do How do we help a majority of those? How do we how do we solve this problem? And I think one of the biggest problems is Starting it with a routine that's not sustainable. I mean and that's the biggest is not focusing enough on laying a solid foundation And I really think that's what this is is it's a very solid foundation For anybody that's been away from the gym for an extended period of time or somebody who is just getting started in the Now before we get into the kinds of results that you can expect In 30 days and again, remember we were trainers for two decades before we ever started This podcast so we're going to be very honest what you're not going to hear from us is you can expect 30 pounds No, I'm not going to tell you a baloney like that I'm not going to tell you what you can accomplish if you do things that are not sustainable Or if you harm your body, we're going to be very honest But before we get to the types of things you can expect Within this 30 day period I'm going to give you an example of what the first week looks like and then remember This scales every single week. So the first week is literally the least exercises and work every single week You'll add an exercise or two or a mobility movement or two as you progress through the program So just to give you an example, right? Monday, for example day one You're doing a bench press a pull-up and an overhead press and remember all of this is on a calendar that you're Going to be able to get and I believe the website. I think we have it up here now maps30day.com So it's maps30day.com so you can go there and get this calendar When you click on bench press pull up or overhead press There's a video demo with us live coaching it and telling you all the cues, right? So that's day one day two mobility 90 90 with the back leg up the next one is a shoulder dislocates then you get to lizards with rotation Wednesday, this is your lower body barbell squat barbell hip thrust walking lunges Then next day mobility again pigeon Thread the needle and the high five movement. So if you don't know what these are again Remember these all have videos that you can click on literally the word high five and you'll see what that is Then friday upper body again flat bench fly straight arm pull down laterals then saturday supine scorpion prone cobra and then handcuffs with the rotation and then sunday is the next lower body day It's bulgarian split stance squats romanian deadlifts and calf raises. That's the first week each week We add more you scale up and it gets a little bit more challenging allowing your body to progress The entire time so I just want to give that example So people kind of get an idea of what that first week looks like the the first week has also got 8,000 steps a day is is the first target, right? Which this is the one area where I would kind of but depending on the the family member that I was talking to We could we could change or modify right and what I mean by that is so I might have like my you know 70-something year old uh ant who Isn't moving at all and asking her to do 8,000 steps That's too big of a leap too big of a leap and what you'll see is basically we're scaling up 2,000 steps Every week on somebody I would just start her at a lower position So if I know she's doing hardly anything and not moving she may only start at like 4,000 steps to get her going And then I'll move it to 6 and then 8 and then she would end at 8 to 10 Where we have some people starting 8 to 10 for the average person should be a pretty good place Especially since we're asking you to walk. We're not telling you you should be doing anything intense Another thing I want you to do Sal as you went through the workouts real quick But I think what's important that people understand and we're like obviously we do this with every program But the the thing that I see with a lot of coaches and trainers is this the randomness of just throwing exercises or just the So explain the first three exercises with the mobility. Why did we do yeah those three mobility moves After those three Upper body uh exercises that we did right. Yeah, no, absolutely So you have first off the mobility day on on tuesday not only has to help take care of what happened on monday But also somewhat set up What happens the following day so the 90 90 with the back leg up? Well, that's a hip Kind of connection and mobility movement now. Why is that important? Well the next day you have barbell squats and hip thrusts And walking lunges that's right, but don't forget that the day before you did a lot of upper body stuff So you have shoulder dislocates. This is a shoulder mobility movement helps your shoulder move through Full ranges of motion and helps your scapula communicate with the upper arm as it moves because when you move your shoulders It's not just the the upper arm that moves in the shoulder joint But it's also the shoulder blade that has to move as well and then lizards with rotation That is to help you with the mobility in your spine your thoracic spine That's good for what you just did monday and also good to help set you up for what you're about to do wednesday So every single mobility session does that and again it scales it continues to scale and you'll find yourself improving each time And this is why I think the feedback that I get from all my family is like god I feel so good. Yeah, which is the opposite of what they would feel like in the past when they just go follow some random routine I'm so sore. I can't move. I'm thinking about skipping the next day And I really think that's uh, that's the brilliance of how we organize this is that not only are we going to be progressing them So they're seeing strength gains go up and starting to feel their body kind of tighten up But we're also making sure that we're complimenting that with the mobility stuff So they actually aren't feeling like they're losing Joint mobility at the same time which sometimes people feel like when they start off with a weight training routine And they're not addressing that. All right. So let's talk about what you can expect By following this 30 day workout. That's all planned out mapped out for you and scaled through that four week period Well, number one you should expect to get stronger. Okay, so what is it? What do I mean by get stronger? Well, either you'll be able to do more reps You'll be able to do more weight or you're gonna feel much more solid and stable So maybe when you first did an exercise it felt a little shaky You didn't feel as stable But now by the end of this program you're doing that exercise and it's smooth and stable and you feel great or Very clearly you can do more repetitions, you know, I did, you know, 10 reps with 100 pounds And by the end of this program, I'm doing 18 reps with 100 pounds So you can expect to see clear Gains in strength as you follow this program and strength is a it's such an incredible metric to follow because if you're getting stronger It's all it's one of the metrics where you almost you almost can't do anything wrong In for that for that metric to be positive like if you get stronger What that usually means and I'm being very general here Of course, it's more complex than the way I'm going to make it sound But if you're getting stronger, it means you did most things right If you didn't do most things right, you wouldn't get stronger. That's just the bottom line So it's not like the scale moving up or down. Well, maybe I lost water Maybe I gained water. Maybe I'm dehydrated. Maybe I starved myself and lost muscle, right? The scale can lie to you, right? The mirror can lie to you obviously it's very hard to be objective when you look at yourself in the mirror Especially over the course of three weeks, right? How many times have you thought you look bad and then looked at a picture yourself later on and said Actually, I've looked a lot better than I thought right strength is objective The numbers go up and like I said, it's really hard to do a lot of stuff wrong and get stronger It usually means you did a lot of things, right I'd argue it's probably the best indicator for your progressing for your health in general Just because of that fact alone that it's something objective that Will will show you whether or not everything is aligned for that to happen I agree with that and one thing I want to add because I think most people Won't know what this looks like because most of them most of those benefits you just said are pretty self-explanatory It's pretty obvious when you get stronger. It's pretty obvious when you feel better It's pretty obvious if you're starting to lose fat The metabolism one is that kind of throws a curveball for people sometimes And probably the the most common feedback I get from people that are going through this is oh my god My appetite is kicking up. I'm so hungry. I want to eat more And so this is a positive sign especially in combination with strength. Yes. Yes If I'm getting stronger and my body is get I feel like I'm hungry more often That is a really good sign. That's your body naturally telling you like we're trying to build And I need the material to do that. Yes, and now I want to be clear here, too There's a difference between an increase in appetite And cravings cravings cravings cravings happen when we're stressed Or bored or anxious or there's a trigger food with some kind of emotional connection or something you ate when you were a kid You know foods that you can't stop eating once you start eating them Hunger is genuine and what you're going to find if you really pay attention Is you're actually going to be hungrier For foods that contain things like proteins. This is the number one thing I hear from people is like I'm stronger my appetite's up and I'll say well, what kind of food do you find yourself wanting to eat more? And I'll have clients especially female clients would say this to me like this is weird But I want to eat more meat, which is strange. They don't normally crave me Well, your body is looking for the raw materials to build muscle because Strength always comes before the building of muscle you get stronger Muscle is going to follow although not always right you can get stronger just by getting better movement If you don't give it what it needs it. That's right But the appetite going up with more strength that means your metabolism has sped up And let me tell you something right now One of the best things you could possibly have that will Safeguard you against obesity and make living life in a world where food is so tasty and around us and so sedentary One of the best things you can have is a fast metabolism like if your metabolism burned a lot of calories on its own It makes being lean way easier than if you had a slow metabolism So this is a wonderful wonderful sign that you'll get and you'll notice this within the first 30 days You'll also notice less pain and stiffness And better movement So what you should not notice from a new workout program is the opposite and a lot of people Feel the opposite and they Chalk it up to well, that's because I started working out like how many times that people started a program And then oh my god, my knees kind of bothering me or my back is kind of stiff or oh man that workout was real hard I need to sit down. It doesn't feel really good like that is not a good sign You should move and feel better As you're doing a good program. That's what you can expect from following a program like this You should soreness is okay a little bit of soreness is okay But overall you should feel like your posture is better You're moving better and those aches and pains that you might have had in the past that were kind of naggy Are starting to feel a little bit better. For example, I'll have people tell me, you know On my ride to work, which takes me an hour, you know, I'm here in the bay area So an hour commute is is quite common They'd say things to me like usually at the end of my hour commute. My back is really stiff I'm noticing my back is not stiff like it used to be very good sign And it's definitely something that you can expect within this 30-day program Well that you hear that and the energy and stamina too. I feel like you you're the feedback is man I just I feel like I wake up with more energy. I'm more productive at work. I'm in a better mood All that stuff bleeds into that. Yes, totally Yeah, something to consider too like for your overachievers out there that want to throw the kitchen sink to all these things um You know to to go with with adam's sort of saying that you always says about Go ahead and say it real quick to do the least amount possible to elicit the most amount of change the most amount change, right? So In terms of picking weight in terms of You know really trying to to bring the intensity levels up in each of these workouts Just know you have 30 days to really scale this up into I would almost suggest to do a bit less In terms of the intensity then you'd probably think well the way the way that I coach it to my family right now Especially since we have some really good coaching cues and the videos of you doing the movement And you've got great form Is I I tell my my family like watch justin and your goal don't think so much adam How much weight should I be doing don't be distracted by the hands?  I care more about that So find a weight that you can do the reps You can look like justin's technique in form and that and that is and your goal is to Get as good as justin is at moving the weight And if you're off at all and your form isn't as good do not move the weight up Even if you feel like you can do more weight and those muscles are strong enough to move more weight I I want you to put emphasis on the form and technique, especially right now Over trying to scale the weight up all time. I think I think we get so hung up on You know, how much can I do versus how much should I do and getting the form and technique down? So when I coach my family on following this routine, I really put most of the energy and because here's what I know I know that You know, let's say, uh, my my mother-in-law is is a pretty strong woman and she can do she could squat 90 pounds She hasn't been doing anything. I know even if she did her body weight Squatting for those reps. She's gonna see change She's especially in the first more than what she always. Yeah, that's more than what she was doing currently So just because I could potentially throw 90 pounds on her back and have her get after it It doesn't benefit me that much. It would benefit me more by me saying, hey, listen Take 50 of the load mom and actually just get really good at the movement. I care more about that A little side note, by the way, you mentioned that they're gonna, you know, be seeing justin And I think we're in some of the videos as well, adam. Did we do that? I may be your intros and explanations There you go. Oh, yeah. So keep in mind. We did this four years ago A lot less media experience and and I have a lot less Hey, the value the value is there the value is still there But the value, yes, if you're looking at it, my man, look at Sal's hair. It's really dark I was like 20 pounds heavier, but you know, nobody it's a good time. So that's what you're gonna see All right, so I know what the the main thing people are waiting to hear is okay What can I expect with fat loss? What can I expect with, you know, how my body's gonna look? All right, what I what I want to explain here is this Imagine you're you're witnessing the building of an the building of an incredible house. Okay The first period the first short period that the builder is going to focus on is going to be on the foundation So you're going to show up To this site where they're building your home and for the first few weeks It's not going to look like much if you're going to now for someone who's experienced don't know Oh my god, look at the foundation here and while they've got good balance here The concrete is laid here perfectly. This is going to be a great foundation But the average person is going to walk and be like, where's the house? Yeah, I don't see the house yet, right? Once the foundation is built Then you start to get what's called a snowball effect And then the house starts to really pop up the walls and then next thing you know They're putting in the fixtures and next thing you know, you have this beautiful home Our goal with this is to set you up with a faster metabolism better movement Stronger muscles. So in terms of fat loss, you're not going to notice a whole lot in the first month And that's expected not only is it expected, but this is what I encourage I do not encourage people to go after crazy fat loss gains In the first month because you're going to mess up the the foundation building that we're trying to do But what you were building? Yes, but what you that's the point the whole point But what you will notice are the beginnings of a snowball effect Real effective fat loss does not happen quickly in plateau This is what most people experience when most people try to lose body fat And they do everything wrong and which don't feel bad. This is just how most people do it They get this initial very fast loss and weight, right? Oh my god first 30 days. I lost 10 pounds, right? And then they hit this hard plateau and they're stuck in this position where like, uh I guess I got to work out a lot more or eat a lot less to get this going and it's it's obviously easy to see why it's so unsustainable Real fat loss not muscle loss real fat loss done in an effective way Start slow, but it speeds up you get this snowball effect to the point where A few months into it when everything's going well You may actually start to wonder how the hell you're getting leaner so quickly and that's my that was my favorite comment I would get from clients when they'd come in and go I I'm keep getting leaner style. I feel like I'm eating more food than I ever have I don't know what's going on almost like it's like a mystery that their body's like freaking out on them I said no this we're doing everything the right way and we built a solid foundation Especially with your metabolism Will you lose fat in the first 30 days? You might you might lose a little bit But what you'll feel are the beginnings of this snowball effect, but you'll definitely be stronger You'll definitely be more stable and you'll definitely feel and move much better Well, I want to I want to add a little bit to that so they Their expectations are right too because there's a very good chance. You actually will uh drop a good amount of body fat But what you probably won't see and you actually shouldn't see is much movement on the scale Because if we've done if we've done our job and and scaled this correctly with the strength training piece You should also be building muscle And if we if we did a really good job and you did a really good job of following it You've added a few pounds of muscle at the end of the month And you've lost a few pounds of body fat which actually ends up looking like the same on the scale So don't let the scale Be what you're deciding factor on how successful that you were during that month In fact, that's actually what i'm looking for for a client in this situation that goes through the first 30 days for me And I am constantly reminding them that like we I know you came to me and you hired me to lose 30 pounds But this first month, I don't want to see that I want to start to build some good strength I want to build your metabolism up and yes, we're going to lose fat But you may not see it on the scale Hopefully you do in a month's time start to feel it and see a difference maybe in your waistline And how you're holding yourself and muscle definition starting to come That's some stuff that you might you should expect to start to see happening But so many people were trained to look at the scale and use that as like, oh, i'm losing or not and it's like Yeah, you could easily be losing five to six pounds But we could have also added five to six pounds of muscle And so it's a net zero on the scale and a lot of people that are doing phenomenal Because they're following it to a t don't even realize how phenomenal they're doing because they're measuring their success By what's happening on the scale by the way, if you lose Let's say five pounds of body fat and gain five pounds of muscle huge difference Although the scale isn't going to move you're going to be smaller Body fat takes up more space than muscle does I believe if i'm not mistaken body Muscle takes up about two thirds of the space as body fat because it's more dense like like a brick Would be in comparison to let's say a plank of wood, right? It's it's heavier. It's denser So what that means is if you gained five pounds of muscle and you lost five pounds of body fat You weigh the same But you but you're about a third smaller in terms of size where you lost that body fat So Visually you'll tell you can tell so don't just look at the scale I'm so glad you said that adam because people will ignore all the other positive signs that they're seeing in that first 30 days Because they're so focused on the scale in fact I would often tell clients not to weigh themselves the first month because it's such a it's messes with their mind So much so look there you have it again This is totally free. There's no catch or anything like that It's something we want to give our audience something we want to get people going Now our bet is you're gonna love this and you'll probably come back for more if not no big deal But here's again how you get it Maps30day.com you'll get a pdf On there is the whole workout. So everything laid out for you and then on each workout It's hyperlinked to a video demo of that workout with us explaining how to do each exercise each mobility movement So it's all set up for you So you're basically going to get as close as you can get to personal training with us For this 30 day period again one more time. It's maps 30 day Dot com look if you like our information and you want more free stuff you get that but you want more free stuff We also offer free guides at mind pump free.com. You can also find all of us on instagram So justin is remote right now. He's uh, he's in the covet house, but he looks okay So you can find justin go over here mind pump justin you can find me at mind pump sal and adam at mind pump adam


The study found that having a low percentage of vital capacity, percent FVC, was associated with higher mortality from pneumonia but not from other causes such as cancer or cardiovascular disease. Additionally, the researchers observed that weak leg force could be used as a marker for sarcopenia and that it could reduce the risk of higher pneumonia mortality related to impaired percent FVC. This suggests that preventing sarcopenia could help reduce the risk of pneumonia mortality. This article was authored by Nanako Shiakawa, Tatsuma Okazaki, Yoshimi Suzukamo, and others.


This video will focus on how to connect to a virtual machine that is not exposed to the outside world directly. In this instance, we have a Windows Server 2019 virtual machine that we will use, that we will connect to via remote desktop protocol, RDP, when the VM is only connected to the SDN. Our notable alligator virtual machine, Server 2019, has had remote desktop turned on for the operating system. We do this by browsing to the control panel, selecting system, the remote tab, and then allow remote connections to this computer. Once that's done, we need to go and expose the port as a node port through OpenShift. Now we could do this two ways. First, I could browse to the services here. I can create a service using YAML just as you would any other service. I can do that from the GUI. I can do that from the command line as well. However, in this instance, I'm going to use the vert-cuttle command line tool in order to do a shortcut. First, from our command line, let's make sure that we are in the right project. And we can review the virtual machines that are in this namespace. We have our notable alligator and our visiting primate. I can also do an OCGetVMI to see the running virtual machines that are inside of this namespace. Notable alligator is the running virtual machine. It is running on node worker 0. I now want to use vert-control-expose. I'm going to do a dash dash help here so that we can view all of the different information that's available. I will quickly copy the name of this particular virtual machine so that we can use it in the next command. Now notice that this vert-control-expose port 22 is very similar to what we want to do. We just want to expose port 3389 as opposed to 22 for RDP access to our virtual machine. So I'm going to copy that command. By selecting the type as node port, we are going to associate port 3389 with a port on the physical node that the virtual machine happens to be running on. So we've successfully created the service. If I do an OCGet service, we'll see that we have our Windows RDP service that has been created here. We see that it is exposing port 3389 as 32540. Now remember that our virtual machine was running on node worker 0. We can confirm that by using OCGetVMI. That is running on worker 0. In order to connect to the console of our VM via RDP, we need to bring up remote desktop. This is the Microsoft remote desktop tool or client for macOS. I'm going to select the option with command K to do a quick connect. We can see that I have already tested this. So I'm going to connect on the appropriate port, the port that was just used or defined in the last command. So you can see 32540 for our port name matches the 32540 that was used over here in our service. I want to select some options here, display. We'll go ahead and choose default. We'll let it start in the full screen session and go ahead and connect to our virtual machine. We log in using the A user. Now this is not a domain joined virtual machine. We just had the initial administrator configured. So that's the user that we will use to connect. Accept the self sign certificate. And in a moment it will connect to the virtual machine and we'll have access to the console. So this has been one method of connecting to the console of a virtual machine. You can of course connect through VNC directly against OpenShift virtualization. If you are using a Linux host, you can expose VNC for the virtual machine's console through the operating system, the guest operating system. And among several other ways, including connecting directly to an external network. Thank you for watching and please keep an eye out for additional videos on OpenShift virtualization in the future.


I have said, told you that if you ever find yourself on a desert island, and you only have one movie left that, you know, you can request. It comes floating up on shore. Watch, make sure you watch, for those of you, since we only have so many nights a week, make sure you watch Solaris with George Clooney. And this movie, I mean Solaris is, Solaris is really light is, which is really a way of saying God is. That's really what the movie's about. And just to give you a brief, it's like the law of what as you sow, sow, show you reap, and karma, and what you give is what you get. It's basically as you get close to this planet, Solaris, then all of your thoughts become manifest. So like on Earth time, everything is kind of slow. Everything keeps coming around again, like the Carly Simon song, but it seems to take a lot of time. And it can seem to take a long time, but these patterns repeat in very slow ways. You get to face these same patterns over and over very slowly. With Solaris, everything speeds up. And so the George Clooney character, which is interesting, his name is Chris, which is one letter short of Christ, has got to go through his ultimate forgiveness lesson and learn how to forgive the whole cosmos, and he does. And then his wife, who had committed suicide, and he's going to have all these lessons after she committed suicide. Her name is Ria, which is one letter short of real. So we have Chris and Ria, Christ and real, coming together. And that's why I always say if you're on a deserted island, ego's torturing you. And you get your one request, like one phone call, take this movie and use it for your awakening, because it's quite powerful. Another movie that was coming to mind that's funny and deep and profound is one called Fifty First Dates. If you really want to see a movie, it's really good. Even if you get the DVD, please watch the extra. They had so much fun making it. They were just in a happy dream in the miracle moment, the whole while they were making it. Adam Sandler, Drew Barrymore, and the producers, the directors, everybody was like totally in love with each other. And the outtakes are just as hilarious as the movie, because they're just so inspired. And it's in Hawaii, it's shot in Hawaii, and they have such a ball making it. But it's like it's using this amnesia thing. Drew has amnesia because of a car accident. Okay, we've all gone through the amnesia thing with God. And so it's a memory problem and yet it's a love story. It's breaking through amnesia to find a way to connect. And Adam Sandler tries everything to break through. It's really good. It's a funny movie, but it's also very profound because we have a memory problem. We are repeating the past over and over every day, kind of like Groundhog Day. We're repeating the reliving the same day over. And yet, with the Spirit's help, he finds a way to break through this loop. And actually, even though she cannot remember anything from the previous day. It's just kind of loops and loops and loops. He's able to break through and join. It just takes it all the way through to, it's a great, great love story. Another one that I really love, I showed this movie in a lot of places around the world. I've shown it over in Mallorca when I did these four-week and six-week retreats. That's a lot of fun too. If you ever get a chance, do a six-week retreat with me. There's lots of movies. I won't have to be telling you movies at the end. We'll watch them all. But it was called Frequency. And it's a transcend time love story of a father and son, interestingly, who are different generations that actually come together as kind of a murder mystery. And it's got quantum in it. At the end, it goes totally quantum. And it goes booming, blasting through to the happy dream. And they're able through their determination to communicate. And even though it's transgenerational communication, they literally, all of time and space is rearranged for them. And it transcends death. And it comes really quantum all the way to this beautiful scene at the end of just a little baseball scene. But it's just a happy dream with all kinds of slow motion joy and happiness. So I wanted to mention those. I also wanted to mention eternal sunshine at the spotless mind. We have two people who fall in love and who, all of a sudden, after they fall in love, surprise, surprise all of their grievances and their conditioning starts to surface in the love relationship because it just starts to come up. And all of their judgments are there and they start getting projected. And it gets difficult. So basically they choose to have this procedure where they go into, first Kate Winslet goes in and has her memory erased of him. I was there for dealing with her pain. She just goes in for a memory erasure procedure and basically erases him. And then he is so hurt by that that she would erase him from her memory that he goes in for the same procedure and to get her completely erased. If you're going to do that, I'm going to do it too. And then at some point during the erasure procedure, he starts to feel the steep love for her that he doesn't want her erased at some point. But the erasure has begun and so he is taking her hand and they're running through his consciousness trying to run and hide in other memories in his mind so that the great eraser doesn't come and erase him. But in the end it's so beautiful because one by one the memories all get erased and finally at the very end she's like saying okay this is it, Joel this is our last memory. What are you going to do? And he just kind of kicks back on the beach and he says just enjoy it. And in one sense the Holy Spirit is the great eraser. Taking it, erasing all these false memories and all these associations we had in time and erasing them from our mind so that we can come back to the eternal sunshine of the spotless mind which is our divine mind. No memories of time and space, no memories of relationships gone wrong and hurts and pains and grievances. It's like in the end we were talking about that today, John Mark and I about this memory starts to go. My grandmother she got lived to be 99 and we had such a great relationship and the further she got along in her 90s what the world would call Alzheimer's kicked in. I always tell people that you're going to go through some form of spiritual Alzheimer's anyway as this erasure begins and always you'll just remember in the end what's important to remember which is God, everything else gets erased, your memory totally was misused. You know Jesus even says in the Course that memory was an ability that was invented after the fall. There's no memory, there's no recall in eternity because it's all pure oneness. So the Holy Spirit uses memory the holy instant so that in the end we just remember the holiness and perceptions selected. We forget everything else. We come into our happy dream and then finally the reverse amnesia occurs where we forget the world and we remember God which reverses the whole amnesia process. So if you get a chance please please please watch Eternal Sunshine of the Spotless Mind another classic one in the movie Watcher's Guide. However the movie I've chosen for you tonight has got it all. It is such a well-made movie that I just I love seeing a masterpiece and one where it's like the Holy Spirit is just like just sit back and smile. This one hardly needs any commentary. It's so well made. I think it's in terms of recent movies over the last 15 or 20 years I just I cannot recommend this movie enough. The Course in Miracles is a path of awakening. Yes it has a perennial wisdom but what makes it a little bit unique from other path perennial wisdom is the emphasis on relationships and the use of relationships to wake up. You know it's really a pathway of relationships and this movie is first and foremost a relationship movie. It is a love story. We've been watching movies all week about transcending the belief and the experience of linear time. This movie hits the home run with that. Love story, relationship movie, undoing linear time, forgiveness, letting go of expectations and even transcending death. It's got it all. I just it's seamlessly made.  We'll be sucked in and carried through and lifted up. The feeling I get at the end of this movie is this bursting joy of how deep love is, how time could never keep us apart, how relationships are destined to be holy and destined to be freed up from the need for bodies to be present even. I mean that's really deep when you think of it. Jesus says you can't even think of God without a body and think of it throughout history when they tried to paint Sistine Chapel and all these paintings of God. It's like God's an old man with a white beard. Even these concepts of God involve the body and this movie goes and really hits the home run at taking us into an experience of a love that transcends bodies, that transcends bodies together. It has done so, so well. So sit back and enjoy time travels away.


All right. Thanks for coming, everyone. I'm Hinek, and my goal for today is to make your life easier by doing less. I want you to stop worrying about a lot of things in your applications. I want you to stop worrying where your logs go and how they are processed. I want you to stop worrying about where your configuration is coming from and how it's structured. And I want you to stop worrying where your application is running and how it got there in the first place. And instead of that, I want you to think about in different terms about how to make your application play nicely with others. Because the task, I just enumerated, they do not go away. Someone still has to do them. But it doesn't have to be you. Because if you stop thinking about the application as a Django web app that serves cat pictures and start thinking about it as a universal building block with clear interfaces that others can rely on, those others can start doing the work that you just dropped. So we are going to outsource complexity that is not inherent to the value of your application. So in other words, we are creating a lot of SEPs tonight. And as a side effect, by the end of this talk, your application will also be web-scaled by accident, which is also not too bad. Now, as with actual building blocks, it shouldn't matter whether you're building a doghouse or an airport. And I'm from Berlin. I know everything about airports. Believe me, it's fine. Your app should look the same on a laptop or on a cluster. It shouldn't know the difference. And this dramatically simplifies, of course, development, testing, operations, scaling, and also moving to new platforms. And while it may sound a bit academic at first, platform agility may be a bigger issue than you may think, because every infrastructure evolves over time until it goes extinct. So you will have to touch that CentOS 5 server eventually. And even if you are happy with your state of the art Kubernetes cluster right now, I'm going to bet you money that in five years, there's going to be a good business model around moving people off this legacy platform. So how do we get there and what exactly do we gain? I'm going to show you what a very simple web application. But before you start leaving the room again, this talk is not specific to web or something like that. But it's easiest to talk about. So I'm going to use it as an example. And most of the things I'm going to say apply just as well to other types of applications that run on servers. And while I'm talking meta, as with all of my talks, I will be using all of my time because I have a lot of materials. So there will be no Q&A. But I will be available throughout the conference. Feel free to come up and talk to me.  I've also compiled a page with everything I'm going to talk about with all the links, all the concepts. So you can dive into the topics you find interesting because, as always, I can only scrape on the surface. Now, behold our beautiful app. This is a very exciting pyramid view. And the only reason this slide exists is so I do not have to tell you to imagine a simple view. This is it. We are going to play with this one. We are going to make this great. So to run this in a Python web ecosystem, you need to create a WISC application. What it is exactly is not that important, but it's something you have to build. And how you do that depends on the framework. So this is how it looks in pyramid. And it's usually the same for all frameworks. There's a function that does something and in the end it returns something a WISC container can work with or a test framework. That's the nice thing about this. I like to put it in a file called App Maker because it's a function called Make App, so why not? And this initialization code, once it gets a bit more complicated, is notoriously hard to test because you have to simulate an environment it's running in. So the goal is to keep this code as simple as possible as few if branches as possible, so if branches between testing, development, and production in this case. And of course, this principle is not specific to web or WISC at all. You always want to isolate the creation of your app where you get information from the outside, instantiate your classes, and so on, and so on. And the rest of your application are just classes and functions that take normal data types, which then means that it's much easier to test. So in Pyramid, you basically create a configuration object.  This WiskeyApp is actually just a function. So if you've ever seen a tutorial from a WISC container like GUNICORN, it's actually really simple. Someone has to build it. And speaking of GUNICORN, this is how you could use it. In this case, I'm going to assume our application has the namespace sample. There's the app maker, it's the module, and MakeApp is the factory that we are calling, and it returns something that GUNICORN can work with. It comes up, and we can curl it, and we even get Apache style log output, which is cool. Now, if we wanted to deploy this application as it is, you could, of course, take this command line and put it into your system unit file, for example. But that would bleed the choice of a WISC container into the configuration, which probably, if you are following best practices, is not part of the application repo. So it might be something in your Ansible or Salt or Puppet or whatever repo. So maybe you want to switch out your WISC container. At some point, now you have to coordinate your changes between having the new container in your application and changing the configuration. This is not great. This is error-prone, so it's better to avoid. Yay, my clicker works. So what are we going to do? So remember, we want a building block. We want a standardized way to start applications. And it shouldn't matter at all that it's a Python application or it's a web application. It could be C++. It could be assembly. It could be whatever. So how do we do that? Well, we do it the same like our ancestors in the 1970s. We write a shell script. And this shell script, we just check in along with our application. You can call it however you want. In Docker, it's common to call it docker-entrypoint.sh. For this talk, I'm just going to call it runappsh, because that's what it does, and it fits my slides better. So one thing I would like to point out is this exec thingy here. This means that the shell process that is started here is replaced by your application, which is very important if you want to receive signals, and you do want to receive signals. Otherwise, you run into all kind of trouble. This little tidbit, also straight from the 70s, means that the standard error output goes to standard out, which means that you have one stream of output, one stream of logs, which is much nicer to handle. And this way, a shell script becomes the adapter between your application and its environment. It's a very simple adapter. But still, someone who wants to run your application at this point just has to run a shell script. And this works just fine. In SystemD, in Docker, or in proc files, which you may know from Foreman, or Forgo, or Hancho, there's a bunch of those. It's quite popular because Heroku uses them internally, for their deployments, but it's also very useful in local development. So what do we have? We have our black box, which is our application. It's a building block, because it's very easy to run. It exposes its service on local host, which is the default for GUNICORN in this case. And it logs to standard out, which is great. We are done at this point, because in development, this is your terminal, which is exactly what you want. If you run it in SystemD, it gets forwarded to Syslog, which means that you get 40 years' worth of GUNICS experience for handling logs. And cluster managers like Kubernetes or Nomad have, of course, first-class support for this kind of logs. You can have streaming over the network, so you can just live and watch what's happening on your servers. And more importantly, they will help you to aggregate your logs in something like LogStash or GrayLog. So I would like to stress here that you should not try to log through files. And more importantly, do not try to rotate them. This is something that will eventually make someone very mad. Anyhow, you have clear interfaces, I think. Now, in the next step, my goal is to make this example more realistic by adding more features, but to stay as close as possible to this ideal. And let's tackle the most glaring problem here first, which is exposition. This kind of exposition is useful in two scenarios. The first one is you really just want to access the service on local host, or you have a local NGINX that will expose it to the network or wherever you want. That's good, but we need to do better. So let's shed those shackles and talk about configuration. Here I find it important to stress that there's a big difference between application configuration, like your application, and the configuration of general-purpose software. Because general-purpose software like Xeam, Apache, and GINX, they need to accommodate everyone. They have to make everyone happy. Your application only has to make you happy and your coworkers. So you have to change the question from what can be configurable to what varies. What varies between deployments, between environments? And it turns out it's very, very little. So there are things that some people put into their configuration that don't really belong there, like the routes configuration or middleware configuration. It's still quite common in the pyramid world. Or logging. Let's talk about logging for a moment. When you configure logging, there's basically two things that matter. First is the log level. So in development, you would probably want to have more logs. And in production, you want less logs. OK, that's simple enough. Now, that's the log format, which is a bit more complicated. But again, you just want two options, really. You want one human readable format with colors for your terminal. And you want one easily parsable for production, which can be some key value pair thing or JSON. So what you do here is just you define those two configurations in your application. And then switch between them using an option that you pass into your application. This way, you can test your logging configuration very easily, because it's there. It's not in a different repo. It's not living along the Ansible. So what you need to make configurable though is, of course, exposition.  And also external resources, like web APIs or databases. These are also things that may change or that make credentials. So these are genuine configuration, things that should be configured. Now, once you've identified those few options, you need to pass them into your application. So how do you do that? So you could put them into an ini file, which is simple enough, because Python had support for any files since the 90s, I think. So there is one, not one, it has multiple downsides. So first of all, in some environments, maybe not in your current one, but maybe in one of your future ones, it's hard to impossible to inject files. That's just a matter of fact. And some of those options belong to the whiskey container. Some of those options belong to your app. So how do you separate them? You could, of course, pass the ini file in your batch script and pass them along. But I think we can agree on that this is not great. So what you really want is just passing key value pairs between processes. So if only there were a simple, reliable, and portable way to do that, there is. It's called environment variables. And they are not relevant just for our simplistic problem here. They are universally supported. So again, SystemD and any other process manager supports them. Dockerfiles have first class support and every cluster scheduler under the sun do that too. There's so many tools by now that will help you with that. So for example, DRN will set variables when you enter a directory. And there's like 5,000 others that do the same thing. Service discovery tools like console or HCD, they do have tools that will fetch the data you want, set the environment variables, and run your application. Of course, Python does have access to the environment. It's OSDoneEnviron. And if you really, really need a file for whatever reason, there can be legit reasons to use files. There's also solutions to that. So for example, GetText, which is actually for translating software, has a tool with it. It's called ENVyZepst. And it does what it kind of sounds like. It allows you to do very simple templating using files and environment variables. So you can get there. There's more complicated or more powerful tools for that too, like ConfD, which supports backends in Redis. So you can put values out of Redis and put them into environment variables, which is kind of cool. Console template, it's the official one from HashiCorp. So there is a very broad support for this kind of things. Now, back to our concrete problem. It turns out that the host port problem is kind of common. So it happened to people before that they wanted to configure the host and the port. So a standard, a best practice emerged. So there are two variable names that are called very appropriately host and port. And they are supported by most servers nowadays. And this is great. These are conventions. Conventions are amazing. So for example, a forementioned foreman, if you define multiple applications in one profile, they'll enumerate ports for you. So you don't have to do it by hand. So you can start multiple applications at once, and you do not have to fill around with the ports so you don't get conflicts. The lock level is easy enough too. You just grab into the environment, do a little bit of get-at-a-magic. But this is a little bit tedious and ugly, and it doesn't get more global state than host and environment. So it wouldn't be me if I gave a talk without plugging in another project of mine. So let me introduce you to Environ config. So I do realize that there are similar projects on PyPI, but at least when I started the project, there was none that did the same thing. So what it allows you to do is to declaratively define your configuration, including nested groups. As you can see, there's a subclass in a class. And when loading, those names just get concatenated, along with the optional prefix, and loaded from the environment. And once it's there, you can just access it like normal nested classes. The law of the meter be damned. You just use a lot of dots. Since Environ config is based on address, and I have new stickers, by the way, so if you want, talk to me, you get a lot of stuff for free, like default values, validators, or converters. For example, I love using enums to make sure that I get valid values into my applications, and it will just explode and not start up if you pass something illegal. Now, I like to put this thing into a file called config.py, but the declaration itself does not load it automatically. So where are we going to load it? We could load it in the makeApp function I showed you before that creates the application, but it is not great, because makeApp is sometimes used by tests, and you don't really want to mock out an environment, like a genuine environment just to create an application. That's not great. So instead, let's create a new file, a file that will do the dirty work of grabbing the environment and then just pass an app config instance into your makeApp. And this one I like to call whisk.py, which I've seen other people do too, so I guess a best practice now. And this is how you load it. It's really simple, just a one-liner. And now this module is the ultimate interface between your application and your environment. And makeApp, at this point, only deals with a well-known class, the Python class. So if you just grab something that doesn't exist, you get an attribute error. This is so great. And it also gives you a full control over your app instantiation. Yeah, you can create whisky apps for your tests without too much pain. And what's important here to note is that this allows you to use the lowest common denominator on the outside, key-value pairs, environment variables, and use structured data, well-known data, validated data in an insight once it's passed this file. So you may have noticed that now I put the whisky app into a global variable. It has multiple reasons, so it's more flexible. Not every whisky container does support this function call thingy. It's also, we need to pass an argument to makeApp now, so it makes things even more complicated. And I call it application because there's another convention. And because it's assumed that it's called application, it allows us for Junicon to only pass the module name. So our run script got even simpler. We just pass the name of the module and it grabs into it and pulls out the application thing. Now, in all the talk about environment variables, there's one thing I've left conspicuously out. And it's that time has shown again and again that certain things just do not belong into environment variables. Because some things you just want to whisper gently into the ear of your application and not make it global to your whole process tree. Because environment variables can leak. There's many ways they can leak. They've leaked before. They leak to very smart people in very sophisticated environments. So it can happen to you. It may not be your fault. It may be some weird package that you didn't even install yourself because it was a dependency of something else you used. And it just dumps the environment and now your AWS keys are on the internet. So let me be very clear here. I want to ask you to ignore the full factor app manifesto in this point for now because they got this one wrong. And that's not my personal opinion. That's quite, quite widely now. So thank you, Christian. But now things get a little bit hairy because solutions to this problem are platform-specific. Every platform has its best way. And it's kind of part of the lock-in too. And everybody wants to give you the best possible way. So what I can really just tell you is to use your platform-specific thing and leave it at that because giving you an intro alone to all these things to give you a rough overview is a talk by itself. But luckily for you, this intro exists. It's a talk by my friend Noa Kuntrowitz, which she gave two years ago, actually also at EuroPython. And I will link it in my talk. So it's interesting to get an overview. For the sake of completeness, we do run Vault. It's vendor-independent. It's quite nice. So in any case, whatever you do, you can use it too. It can be a lot cheaper than things like AWS Secrets Manager, where you pay per access and stuff like that. Anyhow, now I'm going to make Christian sad. So since we run Nomad and Vault, which are both by HashiCorp, we get built and templating for free. And they're just going to mount a special purpose file system called slashsecrets into the Docker containers. And I can template my secrets into this file. Now, this is not perfect. There are ways for files to leak, too.  So I personally consider it a decent trade-off. OK, Chris is nodding, so it's fine. OK, thanks. But the safest way to do this is always platform-dependent, because you want to use the best features that are available. And of course, if you want to have dynamic secrets, you have to do definitely the native way. And what do we do in programming if you want to hide away an implementation detail? Well, you write a facade, right? And I click too much. Go again, write a facade. So what I'm asking you to do is just to wrap your secrets client. So for vault, it would be HVAC, and build a nice API around of it.  Do you do it on instantiation or do you do it on access? It's your call. Your application will not know. And if you switch out your secrets back end, because that can happen, then you just rewrite this one class. The rest of the application will not know. And of course, this is also very easy to replace with a fake in your local development. You just return static strings, and you are done. So yeah, your application should not care about the secrets back end. So you will have to write more code than with the other things I've said, but it's still attainable. And you should really do it. Now, I'd like to point out really quickly that I like to encode credentials as URLs, which is vitally supported. And again, you prevent a problem of having to coordinate changes between configuration and secrets. If you have everything in just one place, it's one transaction once you change. And you don't run into problems that you change the host in configuration, but the credentials are still the old or something like that. All right. We still have a nice building block that is easy to run. We inject essential info that varies across deployment environments using environment variables. Secrets aren't as elegant, but with some effort, it's a magic. It's good enough. We exposed based on the configuration that is coming from the variables. We log based on this configuration. This is still pretty good. Now, keen listeners may have noticed that it's impossible to reload this kind of configuration. If you go down the road of environment variables, this is right out. I would like to reframe this ostensive downside as something good, because it forces you to rethink and reconsider. So for example, for things that change, not too frequently, so let's say once a day, you can just redeploy your application. And now this makes you think about zero downtime deployments very early on. And as someone who went through this a few times, I can tell you that caring about zero downtime deployments early on will pay off really, really big time by the end. And also, the longer you wait to think about these kind of things, the harder it gets. So it's kind of nice to have it from the first moment and that you can deploy any time and nothing breaks. And the good thing is, thanks to the fact that we now have a building block, it's actually very easy to attain. So instead of one instance of your application, you have two.  Now, your only application is duty. The only thing that changes for it is that it has to know the way how to extract metadata that is communicated by the load balancer about the client because the app is not talking to the client directly anymore. So it has to know about things like the X-forwarded-for header or about the proxy protocol by HAProxy if you are writing a TCP-based application. But this is it. That's all your app has to care about. And if you use standard headers, the chances are that your framework and your whisky container will take care of this by themselves. And at this point, you are ready for rolling updates.  It doesn't matter. Nobody will know. So first, you will probably want to stop your app without disrupting anyone. And to do that smoothly, you need clean shutdown. And I would like to use this moment to reinforce that you should make sure to handle SIG-term because Python is not great about this. A lot of applications, a lot of frameworks just wrap themselves in a try-except keyboard interrupt, which is Control-C, and do not care about SIG-term. But SIG-term is the standard signal for terminating processes. It's used by default, by system, it's used by default, by all cluster managers, by Docker. Make sure you handle it. Or make sure that you configure your process manager or Docker to use the correct signals, which is possible. In the worst case, if you do this wrong, your app receives a signal, ignores it. Your process manager waits for a timeout and then kills it using a SIG kill, which you cannot handle, you cannot block it.  This means that you get a very slow shutdown because there's this timeout and you get no cleanup. That's bad. Anyhow, let's assume you did everything right and your application is down. So now you can just deploy your code and take your time. You can change configuration. Also take your time. You can edit it on a server if you want. Please don't edit it on a server. Now, once your app is ready, you can put it back into rotation and you're done. You've deployed something and nobody knew.  Load balancers are really good at this, of being reconfigured while running. And this is kind of complex to do yourself in your app. This is great to have to move this task from your app to someone who can do it better. And another upside is that if the deploy does not quite go as planned, so servers on fire, what do you do? Well, first you breathe and then you don't do anything because that's the beauty of it. As long as you don't return this instance back to the load balancer, nobody will know that you screwed up or that something is broken. So you can take your sweet time to do a rollback or reconfiguration or whatever. So even if you deploy using Git pull on production servers like an animal, you will benefit from that. You laugh, but I know some of you do it. So everyone benefits from this approach. It doesn't matter whether you have a super sophisticated cluster scheduler from the future or whether you have an intern within SSH client.  Now, there's one thing I hand-waved over and that I need to talk about. And so when I said that it's added back to load balancing once ready, so how does the load balancer know that your app is ready? And for that, you have to add another interface. We need introspection. And introspection is an incredible, amazing, and powerful concept. The default way that it's done nowadays is to just expose a web endpoint that reaches into your application. And again, it doesn't matter where your app is a web app in the first place. You can always expose a web endpoint. It's even in the standard library, HTTP.server. So you don't even need an external dependency for that. So what the load balancer cares about is called readiness. So what is readiness? Readiness means that your application is ready to serve, ready to be added back to the load balancer. So you expose an endpoint that checks all resources it needs to do its job. And if it's fine, you return a 200. If it's not fine, you return a 500. And the load balancer will not add you back. Unfortunately, there is no clear standard how to structure or name this kind of endpoint. So most of you or some of you may have heard about HealthZ, which comes from Google. And I've heard multiple legends about the Z. So my favorite one is that it's a Google-grade security by obscurity. But it's probably just some clash avoidance. I heard they have this whole namespace of Zs at the end. Mozilla goes a bit pythonic. They use dundas. So dunder are heartbeat. And other common things is just to take literally the word and put it into a dash namespace. So dash ready is from Prometheus. Dash readiness is from GitLab. And I personally really, really like the dash namespace. Because it makes it super easy to block it in an edge load balancer. So with HAProxy, it's one line, one rule. And you can just have it as part of your app and nobody will ever see it. Now the downside of this readiness check is that it's expensive. Because if you ping your external dependencies, you have to ping your database with a select one. So that's not something I want to do every second or something. So you shouldn't do it too often. And sometimes you just want to know, is this application healthy? Is it still alive? And that's where liveness comes into play. Liveness is very cheap. Liveness is just to prove that your app is not in a deadlock or is running at all, that it reacts to requests. And this one should be relevant to process managers and cluster managers so they can detect that your application is deadlocked and needs to be restarted or that the startup failed and it needs to be rolled back. Now again, there are multiple common names. One is dash healthy from Prometheus, which I find very unfortunate because it's as close to health Z as it can be and means the opposite. GitLab uses dash liveness and Mozilla uses LB heartbeat, Dundra LB heartbeat. So this is kind of interesting because it seems like I didn't double check with Mozilla people but at least according to the documentation, they are using liveness for the load balancer. And I personally do that too because it's cheaper and all my resources I'm using in my applications are lazy, like database pools. So what I use for readiness actually is this. This is like straight from production, like no serialization, just plain text, no permissions.  Then you add it to your routes and once your application is capable to route this view, you know it is alive. And so at this point, my pool is initialized so it knows how to connect to the database and it can either start serving or serving errors but I feel like my errors are better than that, like a 502 gateway not found by HAProxy but you may like my vary. So I do have the traditional expensive one too but I personally use it for monitoring to just check that the app is healthy and alert when it's not anymore. It's a trade-off, so for me one of the reasons also that I use Nomad with console, console has only one type of check and I have to choose one of the two and I prefer the liveness one also. I don't want Nomad to roll back my deployments just because the database is down or something. Okay, but why should we stop here? We have an interface into our app. This is a powerful thing, so what else is possible? Okay, Mozilla has Dunderversion which contains version information, deployment information. If you use pool-based metrics, like I do and love, like Prometheus dash metrics. Logging, there's it again, there's always logging. You can get your log level but sometimes you want more information right now about what is happening right now and if you redeploy to change the configuration, maybe the problem you're trying to investigate goes away. Well, there you go. Just allow to post your log level against the endpoint and configure your logging. Basically, you can use this endpoint for anything that you used a unique signals before, so it's a powerful concept. Now, we've taught our app to talk to a load balancer and it's incredible how much freedom we've gained by this, because it can now scale up and down as needed, it's like magic. And you can, of course, take this further because if you have so many instances, how about we distribute them over servers? Sure, why not? Now, the only difference is that we do not dispatch over ports but over internal IPs and the load balancer runs on a separate host but the principle is the very same one. But once you distribute your app over multiple servers, you run into a problem because they all have separate file systems and while you could use something like NFS or God forbid Samba plus some weird locking mechanism, it's probably better to step back and embrace a rethink. And in this case, the result of rethinking is the file system is lava. So one of the classic problems is logging but we've solved that. We are locked to standard out and it's the environment's problem to solve that for itself. If you want the logs, it has to catch them and send them somewhere. You don't care. It's not your problem. Other classics are states like user sessions and those are shared or end permanent. So they need to be accessible by all instances. You don't want to have your users to be locked in in only one of your back ends. So what you need to do is embrace other services in your app. So no SQLite for you, no files that are needed by others except for like temporary files and learn to love the elephant. Postgres is great for data of any kind. Redis and memcache are great for sessions and caching. Console and at CD are great for service discovery and for key value storing, like dynamic configuration, these kinds of things. So let's have another look. There's one more problem with this thing. Now we have four instances on four servers and managing this can become a pain. For simple setups you can use a bunch of shell scripts. You can use something like Ansible and people do and it works great, but at some point there's a threshold and it gets very complicated. So let's get some help. You didn't think that it would take so long for Docker being on a slide, huh? So I think I'm on record of saying that Docker is kind of meh and I stand with it. Although now it's a more positive vibe for me because it's just boring technology that works. But Docker by itself is kind of a low level concept. But there's something great they did. So first of all, they cost an industry packaging standard. Well, not one by now, it's like five or something. That will abstract away even more for re-application. But more importantly it created an ecosystem and this ecosystem is what I'm gonna talk about now because part of that are of course cluster managers. And cluster managers are game changers. So if you don't know them all, top left Kubernetes, top right Mises, bottom left DCOS, bottom right Nomad. Once you get them running, which depends depending on which one you choose can take something between one hour and one year. You're in a good place if you know how to keep them running, which is also another question. Because now you can say, this is my container that I built. It's none of your business, what's inside. And these are my hosts. Run this container, one of those hosts. It needs so much memory and so much CPU and it just happens. So this means that your applications become ephemeral. It's possible that their lifetime will be very short because maybe they get shuffled around. Maybe some cluster nodes go up and down. Maybe there's some rebalancing. Once you have this kind of freedom, you can deploy like every 10 minutes and nobody will know, so why not? And this is another reason why the file system should be always lava for you from now on. But our application is ready for a multi-data sender cluster. Without knowing about it, all it knows is how to start and communicate readiness, how to serve and communicate health and how to stop and clean up behind itself. So basically, we are web-scale by doing less. And this is the point where I could and should start talking about things like service discovery or meshes like LinkerD or Envoy Istio. But I do not have the time and they also do not change anything fundamentally about your application. It's just an add-on on something you've already attained. So let's have a final look at our application. So our app is a black box that is easy to start, it's self-sufficient. It has very few varying options that are configured using environment variables. It does a clean shutdown when signals are using standard signals. It magically retrieves its secrets from wherever. It keeps its data that needs to be shared and that needs to be permanent in external services like databases. It exposes its services as configured where it is picked up by a load balancer that will expose it to the world or to your company. It also exposes its state using a well-known endpoint. And it does log to standard out where it's picked up by the environment and audio terminal and then it does whatever is best in that moment. Your app does not know, it does not need to know. And for all of this, our web view hasn't changed at all. Our application creator just takes one or two classes. It doesn't know where they are coming from. It just knows that it's configuration and the secrets it's know, it needs and it's all. The interaction with the environment is limited to one file, one file only. And the same application works the exact same way on your notebook, on a platform as a service or in a cluster, just a matter of how you start it. And the heavy lifting is done by decades old Unix tools or the B's, Ne's container orchestrator du jour. So success, one final thought. If we squirm at what we've tried to achieve here and what I think we've achieved is that we want to see our application as a black box with clear interfaces that enable loose coupling with other components. We do separate IO from logic. We lock the standard out. We push configuration from the outside and transform it into a class. And we do isolate your process, global state to one spot. These are all practices from software engineering. It especially reminds me of the hexagonal architecture by Alistair Cockburn who talks about ports and adapters. So I guess the lesson here is actually that your application's boundary is just another boundary. So you should treat this as such. It doesn't matter that there's a process ending. It's still just a boundary between like any other there are. So because your application is or could be or will be part of something much bigger. But as with software architectures, what I've shown here is an ideal. So not every application fits the constraints. Not every application can run in a cluster. I have plenty of applications run on a server because they need to do something on that server. Turns out someone has to write to a disk at some point if you wanted to keep that data. And finally, some of what I say today directly conflicts with my advice from last year. Neither is wrong. It's just two solutions to two very different problems. So what we're doing here is engineering. We are making trade-offs. But to make trade-offs, you have to know the consequences of the actions and choices you make. So in other words, what I'm saying here is that you should come to all of my talks and make informed decisions. So one more thing. Don't we all crave realistic examples? However, companies tend to not expose how they deploy things concretely. They just give you a soup of buzzwords talking about continuous delivery, chat-ups. But in the end, it's just a bunch of shell scripts from 2002. It's written by someone who's not working at a company anymore and everybody's afraid to touch it. But it turns out we do have a great open source example of a Python application. It is modern and I come back whenever I need to, whenever I want to learn something. And of course, it's PyPI. It's kind of perfect timing after a keynote, huh? It serves, and these are old numbers. I got from Ernest when I was doing this talk in March. So back then, it was like six billion requests per month, 1.5 petabytes of data, and most importantly, fast. I mean, when Ernest asked me to test PyPI for the first time, I thought it was just some kind of joke because it just appeared. And it turns out this is how a modern Python web app can look like if you do everything right. And everything you need to know about this one is on GitHub. All the operational stuff, the Docker stuff, it's there. And the tooling around Kubernetes that Ernest wrote is also on GitHub, just somewhere else. So if you want to learn something, have a look. And that's all I have for you today. I would like to ask you, yeah. I have some, wait, wait, oh, okay. So please, this is the page I talked about. The QR code book, get you there too. Follow me on Twitter, get your domains from Vario Media if you speak German, the reason why I'm here. Have an excellent EuroPython. I'm Hinek, thank you very much.