He's from Portland. He works on the New Relic Ruby Agent team with me and a couple of other fine people. If you use New Relic, you have used Jason's code, less so my code, maybe some of my documentation or a test. Jason writes a lot of things and he's really smart about all the things that you would want to ask him about the agent. He is also kind of an atypical Portlander in that he brews his own beer and mostly just rides his bike everywhere. He has chickens in his backyard, giant beard. We don't have very many of those in Portland, it's very rare. So a big round of applause please for Jason Clark. Hello everyone, glad to be back here at Ruby on Ales. It's awesome to have a chance to talk to you again. So last year I talked primarily about home brewing in the beer side of things. So this year I thought it would be fitting if I talked a little bit more about the Ruby into stuff. So the topic today is testing the multiverse and what I mean by the multiverse is sometimes when you build a gem, it is going to build on top of other libraries that exist. The most common thing might be something like Rails where you have something that you've written that needs to work against multiple versions. So what we're going to do is we're going to talk about what you need to do to make that something that you can test consistently and easily. But rather than just dive into a whole bunch of technical details, I want to kind of set this as a story, some of which might be a little fictional, there may be some elements that aren't true, leave it to you to decide what that is. But in the Ruby space there has been a library that has just taken off in the past few years that has an incredible amount of momentum and everybody's talking about it, everybody's using it. And of course that framework is Ruby on Bails. So Ruby on Bails is the best possible framework that you could use for making command line applications quickly and easily. So this kind of harkens back a little bit to Rails, a framework you might be familiar with for doing web programming, but you know since the Unicorn Puma Wars of 2018 kind of broke things up and caused a lot of schisms in the community, it made this opening for command line apps to take off. It was sort of a renaissance of the command line for us. So all of you will have seen something like this. This is what a standard sort of Bails command would look like. So we have our class, we derive from Bails command and then we provide it with a run method. This is just about the simplest thing that you could do. It's awesome the conventions that it brings. So this would look in practice like this, running on the command line, I've got my Twitter. This is just awesome the way that I can build these command line things so easily. But like any massive shift in the ecosystem, Bails opened up a lot of other possibilities for people to think about and created other ideas out there. And so one of those was the pure metric. Now anybody here familiar with this metric? No? Well, that's good because I made it up. So it would be kind of weird if you knew about it. So it stands for Programmer Input Output Ratio. So this is a ratio that measures the amount of text that you input to the amount of output that that generates and it's kind of golf scoring. You want the lowest possible number that you can do. And so I got really interested in this is like it's a way better way to measure your productivity than lines of code. Like this is how much leverage you're getting out of your framework. So obviously got a great idea. It's time to go log an issue for it. And so I put something in on the Bails project to say, hey, could we track these metrics? Is there something that we could do so I can have all the Bails commands that I'm executing tell me what sort of productivity boost I'm getting out of them. Well, you can see from the comments at the bottom, they're like, eh, this doesn't really belong in the core. But you can go build it yourself if you want to, right? It's open source, that's how this works. And so the straw project was born. So straw is a plugin that builds on top of Bails to let us take metrics out of the commands that we're doing. And it generates a lot of data kind of like this. So the first number in that is going to be how much output. So we can calculate that. The second thing is going to be the status code so I can tell whether things are errors or not. There's all sorts of analytics and parsing that I can do off of this. Now at this moment, you might be wondering like what, how many of these beers I've had previously to this presentation or where I'm headed. But this is the meat of it because as a good Ruby developer, I want to be able to test the stuff that I've written. And so my tests look a lot like this. I'm using many tests because why wouldn't you? In Stanchi, it's a Bails runner, goes and runs a thing. And then I've got some helpers that let me look at the output that I've done from things. Look at the data that I've actually stored. So life is good. My code's well tested. Straw 1.0 ships and people all over the place are able to get these numbers and figure out their productivity and measure what's really going on. So life is good. But life doesn't stand still in open source. So Bails had a new release, came out with a 2.0 version. And all of a sudden, the way that I wrote my tests, the tests are still valid, like not much changed in the way that I plugged into Bails for the second version. But I'd really like to be able to run the test with both sets of dependencies. I want to be able to check that I haven't broken things as those projects that I depend on and build on top of evolve. Well, luckily, there's some stuff in the ecosystem in Ruby that makes this pretty easy. And that is the Bundler project. So Bundler, we're almost all familiar with it.  And that spells out a number of dependencies that you have and you run commands to install those gems or run commands with it. But Bundler actually has some other tricks that you can play with it. So most of the time, we've all created gem files, just a gem file in your directory. But you don't have to do it that way. You can be more specific about where to get those dependencies from. So to be able to test against multiple versions, what we're going to do is we're going to create more than one gem file. And I'm going to put them down in the test directory and name them sanely after the sort of Bails versions that I'm caring about. So I've got a gem file for Bails 1 and a gem file for Bails 2, and then my other test files. Those gem files look just like the sort of gem file that you've dealt with day in and day out. You can specify whatever dependencies and whatever combinations of things you need. Well, so this is all great, but how do I get my test to actually run and use those things? Well, Bundler provides a way through the bundle gem file environment variable. Now, I'm only exporting it here just so the thing fits neatly on a line. You can do it in line with the command as well. But when I say bundle gem file and point it to that alternate location, when I bundle exec my tests, they're going to load the particular set of gems that are in that gem file for me instead of what might be in my default gem file or just on my system. So we see everything runs neatly. We get our test output. Everything passes. Life is pretty good. Now, this introduces a little bit of difference from what used to happen with my tests, though. When I run the tests at particular time, I can't necessarily tell what dependencies I might be running it against. It used to be I was just running my tests. Now, I might be running them against this version of Bales or that version or this other set of dependencies. So one nice thing, a trick that you can play to help yourself out in this case, is somewhere in your test helper put something like this that gives you a little output, gives you a little more context of what's going on. And so when you've got long streams of output as you start testing against lots and lots of versions of things, you can tell what you're actually running against. So this ends up giving us a little nugget here in our output to help us figure out where the tests are actually breaking if we ever do introduce a regression. Now, we can actually go one step further and use other things that bundlers provided and get the list of the specs that have been loaded and build up a nice little string instead of that and spit that out. And now we have the full set of dependencies that have been loaded by Bundler for us. And depending on what sorts of sub-dependencies the other gems you have might have that will move and evolve over time, this can be really critical to finding inconsistencies and problems that may not duplicate themselves immediately with any other combination of gems. Well, this is pretty sweet. It's nice to be able to test against these different versions, but setting that bundle gem file, bundle exacting, and all of that is kind of a pain. And so we like to automate things in Ruby. So enter our rake commands. So when we say rake multiverse, this will take care of running these commands with the appropriate additional parameters that we want along the way. Take a look at how that's implemented a little.  It takes a couple of parameters. When we call it without any arguments, we're just going to look for all of the gem files that are in our test directory. We iterate through each of those. And after each of those, we back tick to go run exactly the same test invocation that we would have previously prefixed with the write environment variable to tell it to go use the particular gem file that we selected. So now we can run our whole set. It will find any of those gem files that we've dropped in that directory and run our tests for them. It's also nice sometimes to only run a certain subset, though. And so we also provide a way so you can say bales10, provide the latter portion of what that gem file is going to be suffixed with. And then it will find that by this fileless splatter that it takes on the front of that. But then the rest of how it runs is exactly the same. That just selects a different set for us to go with. Well, so that's great. We now are able to test against multiple versions. And we've got the beginnings of a setup that's going to let us grow this suite as we go along. But in open source, one of the great things about it is that other people are out there finding your problems and your bugs. So this came out. Got this issue. Make multiverse. Somebody, somebody who is that? Oh, yeah, it's my boss. So he cloned the repo down and tried to run the tests. And it immediately fell over because he didn't have the right versions of the stuff. Well, your response to this may initially be something along these lines. I don't know how it works for me. But that's not really a great answer. We do want this to work with a clean installation. And so our problem is that we're bundle-executing and running with a certain gem file. But we've never actually taken the time to tell it to make sure that the things are installed. So there's an easy fix for this. You can remember it with the acronym ABC. Always bundle constantly. This is probably a pretty good rule if you're just working in Ruby anyways. But here it's particularly pertinent. So the easiest possible way that we can handle this is to just run our bundle install in front of the command that we're doing there. Now, you'll see I've pulled the gem file and setting the bundle gem file out of the inline command. Because as this grows, we're going to see a couple of different commands that we're going to run that are all going to take advantage of that environment. And so this will allow us to set that in one place rather than every time we make the command line. So this is a good place to start. But unfortunately, an apologies to Terrence if he's in the room. But running a bundle install every time that I run my tests, it's not that bundler slows. This is doing a lot more work than I used to for my tests. This is taking steps that didn't use to have to happen, just to make sure that everything is OK. And this might go talk out on the network. It might try to download stuff. So it would be nice if we could kind of sidestep some of that effort some of the time. And there may be better ways to do it. But one step that we were able to take with this is here on screen. So we set our bundle gem file. And then rather than running the full bundle install, we tell it minus, minus local. And we run this. And so this will not try to contact RubyGems. It will try to resolve things based on what you have installed locally. And so there's some potential that it'll cut out some of that network crosstalk that goes on. If that succeeds, then we're fine. And we'll just carry on and we'll run our tests after that. If it fails, then maybe we turn around and we've got to do a full bundle install. Maybe we've missed some gems. We don't have everything that we need. So we get our environment set up and then we carry on.  So at this point, there may be some of you that are thinking the same thing that this issue that came in from Matt was saying. So apparently there's a gem out there called appraisal. Or appraisals. And it takes care of a lot of this for you. So this is an actual gem as opposed to some of the other things in this presentation, which may be fictitious. And this takes care of a lot of the mechanics of what we've talked about so far. It's built for exactly this case. What you do is you provide an appraisals file. And one of the nice parts about this is what you do here is you provide just the deltas against your core gem file. So this is just the things that need to vary per test. So you notice it doesn't list the rake and many test dependencies because those are already expressed in my main gem file. So it will merge those together. We do an appraisal install. And it generates a set of files that looks very much like the sort of files that we had hand coded ourselves. With appraisal, then you can prefix any command with appraisal, the particular appraisal set that you want to run it for, and then give it the command. So this isn't bound to just running your tests. You could run other things and have it run in that particular environment. Now this is really nice. If this is your destination, if this is as much complexity as you need to it, this is a fine gem to use to get this sort of multi-environment testing configured without having to write a lot of stuff yourself. But we've got a few other things and other places that we're going to land. So we're going to carry on with working in the framework that we've built to this point. But before we can move forward, we've got to look back. So this issue came in. Again, thanks, boss. So for some reason, he's using a really old version of Bales. Like he's using a 0.8 version. I don't even know why somebody wouldn't have upgraded to a newer version. It's kind of crazy. But the truth is that writing the sort of thing that I'm writing, I don't want it to break. Even if it's an old and crafty version that I don't want to support, I don't want things to blow up when people try to mix it together. I want my stuff to be safe. So let's take a look at what it takes to do that and how we can test around that effectively. So our first step is we need to add an environment to test this in. So we'll make a new gem file, add in the dependency that we want, and sure enough, when we run the tests, we get an undefined method run on the Bales runner class that we're calling. So this gives us a little bit of a hint. And we go digging through the history on the Bales project and we find that somewhere before, between 0.8 and the 1.0 release, somebody thought, you know, it used to be called execute. We should call it run instead. And some of our stuff depends on it being called run. So this would be the point where you'd have to decide, do you make your code work with it or do you just want to skip the tests? Like, is this an unsupported version, basically? And that's what we're gonna choose. We're gonna choose to say, you know, Tim, I'm sorry that you're stuck on this old Bales version, but we're just gonna have to move forward. So we write a little helper somewhere in our code base that does an appropriate check for the version ranges and the conditions where we wanna be able to apply things. And so just for clarification, I know that's not the right way to do version checks. You'll see version checks like that in this presentation. You should be more cautious than just doing the string compares, but it reads a lot nicer on the screen. A little aside about that as well, if you're a gem author and the only place that your gem version shows up is as a hard-coded string in your spec file here, please don't do that. Please pull it out into a constant that other people can access at runtime. Like there's a couple of projects that I know of that I'm not gonna call out that have this and it makes it really hard for people building on top of you to do any sort of version checking. So my plea to you, make a constant, put your version somewhere other people can check it. So once we have this check, it's pretty easy for us to skip running all of those tests that no longer apply, that are there to test functionality that we know doesn't work with this version. And so we can just gate our entire test top to bottom and say, hey, don't run this test case if this is not a supported version. But that is not really quite enough. Like I don't, it's not just that the tests don't run. I wanna make sure that I'm not doing anything damaging if I'm loaded with that unsupported version. So there's a couple of ways that we can write tests that check that that's the case as well. The first one is to actually run the underlying pieces and make sure that we are not interfering with it. So in this case, we set our internal writer to a little object that's gonna blow up if we ever try to touch it. So basically anything in straw, if it tries to write out information, is gonna fail this test. And then we do a basic run of the execution of it and make sure that everything came through fine. So this shows us that we have not interfered with the functioning of the library that we're building on top of in the case where we are not a supported version. Additionally, if you're doing things where you're patching methods or there's other signatures that you can tell that your code has injected itself or built on things that you wanna avoid, you can even just use Ruby's introspection facilities to check that you're not doing those things in this particular environment. So making sure that you don't do things in an unsupported place is something that you can test for.  But having looked at the past, now it's time for us to look to the future. So Bales 3 came out. Bales 3 has this awesome feature to let you unrun commands that you ran. It's like undo for the command line. This is so awesome. Like, I don't know, you don't seem as excited about it as I am, but we want to support it from Bales. We wanna make, or from straw. We wanna make sure that this works, right? So what this looks like in an app is that you just have an unrun, symmetrical to your run method. It's really beautiful the way these conventions work. We write a test for it and the test looks something like this. We spin up our runner, we give it an untweet. We ask it to untweet something for us and sure enough, if we run these tests against an environment that includes Bales 3, everything is happy. The test went green. This is exciting. But, does anybody wanna guess what happens when we run those tests against an older version of Bales? Any guesses? It's sad, the tests don't work. In this case, the output looks something like this. So if you remember from my description of the data, the one there indicates to us that this had an error. So when it tried to run the command, it probably didn't find the untweet command. Didn't know what to do through its hands up. So a lot like the unsupported versions, we need to gate this because there's certain tests and certain functionality that only applies if you're on a certain version of Bales. There's a couple of different ways that you can slice this and it's somewhat up to you which of these fits the best. So one of them, you can simply wrap the method definitions for the tests to begin with and entire block of them and say, hey, if you're not in a supported area, just don't even define these test methods so those won't end up getting run. I've also seen it done before doing an early return from within the body of a test based on that same condition. Your mileage may vary which of these you like better stylistically or if there's some other reason that you might care what to do. But my actual favorite way to do this when I have significant functionality that I need to gate off is I like to make a whole other test file that's related to this. Test files don't have to be one-to-one with the class files. They don't have to be one-to-one with anything. And so what we do is we make a file that's entirely centered around testing the unrun capabilities in bales. And we put that check up at the top. And a key thing about this is I have output that tells me that if we are in a version of bales that is not supporting this, it's explicit that I am skipping these tests. This is kind of important because maybe you get those version checks wrong, maybe something gets skewed slightly and you may not know that you are not running some of your tests. So this gives you output to let you know whenever you're skipping tests and make sure that that's actually what you want to be doing. Well, like all great projects, bales inspired some competitors. There are people with other ideas about how to do things, other vantage points on how to write command line applications and simpler ways of doing things is tends to be where they land. So that was the genesis of the Kruner project. So Kruner code for doing the same sort of thing we saw earlier, it's gonna look like this. Got to admit that's a lot simpler in the bales example. I mean, there's no classes, don't have any method desks. You know, maybe this is more your speed, maybe this is how you'd want to write them. Output looks the same sort of thing, the way that that works for us. And so as the author of the straw project, like I want all of my command line things to be able to tell me the metrics that I'm looking for. I want everything to work with this. But this poses a bit of a problem. Like all of the tests that I've written to date work with bales, they only should work with bales. They're not written to work with Kruner. And I need to write separate tests that work with Kruner. And I need some way to keep these segregated. And so what we're gonna do is we're gonna make a construct that I'm gonna refer to as the test suite. So rather than having just one monolithic group of tests that I run within my gym, I'm gonna have separate suites of them that are centered around a set of dependencies that can all run mostly the same tests. So in this case, it would be the distinctions between running for bales or running for Kruner. So this actually ends up being fairly straightforward with the work that we've already done. So our multiverse task, we add some parameters to be able to pass in the suite that we're running with. And then we break things out so that we have kind of a separate test runner class. Now, instead of just running rake test, we're gonna execute the separate test runner to go and run the things that we're looking for. Because we're getting a little more functionality. There's a little more work that it's doing over there. That test runner looks a lot like this. It takes on some of the responsibilities that the rake test tasks did for us of loading up the right files, setting some of our paths for where things should be. But at the end of the day, this will select a set of tests that are in a named subdirectory and go and load those up and run them for us. So now we can say things like run multiverse for Kruner. And this will run all of the Kruner tests against all of the gem files that we've defined for those. And only the tests that are for Kruner rather than the ones that are for bales. So this is pretty nice. This is kind of the big thing on top of appraisals that is why I kind of stuck with building this out by hand. Because this gives us flexibility to partition things a little differently and gives us these suites to separate out dependencies. But the life of an open source maintainers never quite done, get this in. So all of the time when I've been showing you these commands, I've just been doing rake multiverse. But apparently, if you bundle exec rake multiverse, it breaks, which is kind of weird. I mean, I didn't quite understand what was going on with this. Really grateful that Jonin gave it a plus one. That was important that I had his feedback there. But it was an interesting pursuit, though, to figure out why this happens. So if we look at our test execution, so if you bundle exec your rake command, bundle exec rake multiverse, this task is going to be running within the context of what that bundle exec does. So it's going to load the gem file. It's going to set everything up and load the dependencies for our default gem file there. Well, one thing that I didn't really know that Bundler also does is it influences any sub-shells that come out of that. So our process invocation there, where we're going to back tick to Ruby again, it actually ends up being not just the command there, but effectively this. So it sets the gem file to the same thing that is the gem file that is currently loaded. And then it also includes a Ruby opt to say, require Bundler setup. So before we ever even get to my test runner's code, Bundler has loaded that gem file and taking care of all of the setup and set all the paths. And if you look in Bundler's source, once it has set things up, it's not going to do it again. So when my test runner comes along later on and tries to reset what the gem file is and set it to this other set of dependencies that actually belong with my test, it's just going to look and go, I'm already set up, I'm good to go, but I don't actually have the dependencies that I wanted for that. Fortunately, Bundler provides us a way out. It provides us with clean inf. So anything that happens inside of this block doesn't receive that treatment where it modifies the sub-shell environments. And so this can run clean. This doesn't then end up loading up the Bundler stuff at the process start and we can load the gem file that we want at a later stage during our test runner. So yeah, it's true. Maybe more people would run things if it didn't take so long. And if you're like me, probably one of the first things you'd think of is maybe you could fork, right? I mean, we've got multiple test processes already, we're back ticking out to things. That would be a plausible solution. But unfortunately, I also received this issue right about the same time. Asking for JRuby support. And as we all know, the JVM doesn't fork. So that kind of threw the forking out of the window as a way to handle that in the test. But fortunately, there are some other simple ways that we can get around this. I'm gonna show you an approach using threads. It's not in here. So what we need to do is we need to, what we're gonna do is we're gonna spin up a thread for each of the processes that we're gonna invoke. So we start narrated to track all of those. And then inside of our clean end where we're doing that, we spin up a separate thread. And that thread, all that it's gonna do is it's gonna step over and invoke the test runner for us the way that we wanted. We do need to remember to join at the end of it because we gotta wait for all of those threads to wait for their processes to finish before we can get back. Now this works pretty well for a little bit until we get this issue in. I didn't notice because my tests don't fail, so I didn't notice that it wasn't failing properly, but it's kind of an issue that it doesn't return those status codes right. So we gotta track that. We've gotta do a little bit of manual handling for it. So here's how we accomplish that. So we need to initialize a status. And this will be the status that eventually we're gonna return from our process. We'll take advantage of the fact that a non-zero status means an error. And so for us to error things out, we can just tally up the exit statuses that we get from each of the sub-processes. So the dollar question mark gives us back the last process result that we had back ticked to. Now the dependence in the audience may point out that there could be race conditions here and you're totally right. There are more complicated things that you might want to do to make all of this totally bulletproof, but this mostly works for the purposes of the example. Then we gotta make sure that we exit with that status that we've tallyed up. And that's the last thing. So now we're back to failing properly. We do love Unix. It's the right way to do things, so. But of course, the life of an open source maintainer is never done. Now somebody noticed that they're trying to debug stuff, so that's good. They're trying to pry, they're trying to do some things. So that's helpful. But it actually makes a lot of sense why this wouldn't work if we take a closer look at how we're actually doing our invocation. So here we're saying puts and then back ticking out to this other command. It runs this other process. If there's a pry, some point when a debugger breaks over there, well it's gonna stop, it's gonna print out some of the state and then it's gonna wait for you to put some commands in, right? But our back tick is sitting there waiting for that process to get done before it sends any of the output back to us for us to be able to put it out here. And so as long as that's blocking there, we're not gonna see any of the output that it's given us. Now funnily, you could actually enter commands and the commands will get passed through fine and it'll catch those, but you won't see the output. So there's a couple of ways that you can address this, but the easiest is just to make things run serially in the main process. So our test runner, eventually, we'd wrapped it up in a nice class, we have some things that run. And by default, it's just running with the arguments that we're passing along. We can leverage the fact that we've built this separate test runner, though, to be able to run things directly in process with our main rake invocation. And then all of your pry and anything that's expecting to be in that process is gonna be fine. So that would look a little like this. So I named the task serial because it just runs in process and runs directly there.  But most of the time, if you're debugging, that's probably what you want. And so here we invoke our test runner directly and everything will work nicely and you'll be able to debug your stuff. So that's where we've been. Hopefully this has given you a few ideas about how you can test things when you get into those more complicated scenarios with a lot more dependencies that you need to check your stuff against. We've seen how Bundler supports us a lot. It gives us a lot of the tools that we need to do for these sorts of alternate environments. Seen a little bit of rake, a little bit of tricks there that can let us do some fun things and automate our work more easily. We've seen how you can handle different versions and how you can parallelize your tests and break things up into suites to manage them. I hope that with all of this information, your testing will look more like this and less like this. Thank you.


this is Sonali. Thank you all for carving out some time for tending today's webinar on the episode 11 of the Business X Learning series, Invest, Scale and Value. Today's topic is on brand building, the defining factor of scaling up. To all the attendees out there, please type in any questions you might have in the Q&A section and we'll try to answer as many as possible at the end of the session. I would now like to welcome our speaker, Mr. Gaurav Mara, Chairman and Founder of the Franchise India Group. A very warm welcome to you, sir. Thank you Sonali and welcome friends and welcome to another edition. It's a 11th edition of a Business X platform. Business X that Sonali said is a platform part of Franchise India Group, but focuses on a lot of investment side. So a lot of startups are even scared up companies which are now looking to raise capital. They come to this platform and we help them to reach out to both angel funds, private equity, family offices and so on and also Business X has a big, you know, we are the largest network from business resale viewpoint. A lot of people who want to now look at exit of their businesses, they come and we value them. We have a special technology which is called BizEquity.com.  So these are two prominent things. So the purpose of these webinars is really to talk about the companies which we really work with. We work with a lot of these what I call small to mid-sized businesses and small to mid-sized businesses. We are talking about three things every time. One is obviously invest. Second is scale. How do you really scale and how do you really build value in a business? They're very interconnected from perspective. So we touch on topics which are subject to investors, people when they're looking to invest into early stage companies, what they should look at. We also talk about companies which are now looking to grow their businesses, what are the challenges they're going to talk about it and more importantly, I really love to talk to a lot of fellow entrepreneurs and business owners because they don't understand value building. You know, how do you build value in the businesses and we get a lot of companies and reaching out to us and we look at the businesses and the businesses doesn't have inherent value and one of the areas which we will talk about next say 25 odd minutes is brand. And I will give you some perspective. One I'll give you perspective which I covered in my last edition is really growing and versus scaling. Growing is a very conventional old school of growing your organization, which means in terms of your better network, better distribution, better top line and things of that nature. But this is classic growing of companies were proposed, you know, in the manner where you proportionate, you also grow your resources, which means that I would have to have more, you know, offices being deployed, more people being deployed very clearly every dollar you get, you have additional investment to be done to get that additional dollar. But scaling up companies, you know, companies with scale up actually don't do in the same proportion. With a very small investment, you can multiply multiple times. And this is why technology companies are much more valued because they continue to multiply and look at companies like which are most valuable companies. They are not even creating content. People are creating content for them like Facebook, Google, everybody is creating a content for them. Everybody has become and they're not paid for it. They spend more on it to create content for them. These companies will continue to go and multiply. So companies have to really see through that how you design a company, your business model, re-engineer your business model, that you can shift your mindset from being just growing to scaling. Now, another area which is for scaling companies, which I have realized lately, especially this COVID period and other things happening around, we're getting a fantastic businesses which are coming to us. These are great businesses, great structure, but they lack brand. They have no brand. You know, they very need to offering and I'll give you some perspective on this. I get pretty much three types of companies which are coming to us at this moment. One, I see great product, great service, but no brand. I mean, obviously there is a brand, but there is no recall value. People don't really consume them because they were brand. I feel that these companies are in huge danger, huge, huge danger because when this all is over, they might have no customer left, right? Or somebody would create equal competitive product available for them. Even if they were having a big ride pre-COVID scenario from their product viewpoint, that differentiation, if there is a still a window, they still can go out and create some kind of a brand equity, but if there is no window for you to really have a competitive product coming in, then it will be a big danger for you. Then the second companies are essentially people who have built the brand, but maybe the business is still at this stage because of the reasons of COVID and other things is not there at the same level. I think they would be born much faster. They would be born much faster and they would be able to consolidate their position provided they have other strategies of their business in mind. Brand would take care of a lot of other issues from them. Like for example, let's talk about Oyo. Great brand, very strong work Ritesh Agarwal has done in terms of building the brand equity, very strong brand equity, but the business has struggled. Business is not struggled because of COVID, but business has struggled for the last one year itself. But I feel that he has still a big, but bigger position to really rebound the business when the things start getting normal. He can extend the brand to many other things which can be probably fit into the whole value of the brand and so on and so forth. And then there are third side of companies which I'm seeing which are actually building the brand in this period. These are great organizations because these companies would really, to me, would be the next big opportunities. The opportunities which have been built in these times, the brands which are built in these times are going to be with people for a very long period. So you have to really see where you fit in and how you really want to shift that. So building a brand is very important and building a brand which has two major factors to me. How do you really set the value? How valuable the brand is to the consumer? How valuable it is? And second is how much sustainability he carries. So these two are very important. Sometimes you create a good valuable brand, but sustainability is missing. Now these times, I think we both have to marry these two things and then only the brands would be in that thing. Like for example, the electric car, electric business Tesla is a great story of these two things. It's a sustainable technology, sustainable ecosystem. While the business is still very small, the business is still not penetrated and how these companies become more valuable than even Teotas and the likes of them which have the largest distribution available, the largest brand equity, largest consumer base, everything is there. But then look at the company's valuation of Tesla because of sustainability. Sustainability, their investment towards sustainability, their investment towards technology which is next 30 years, 40 years, 50 years of future technology, while their offering is still not reached everywhere. But clearly the investors are liking this story better. And this is strong answers which we are getting these days that how do you really demonstrate a strong sustainability of your business or your brand for next 10, 15, 20 years, it can be through thriving technologies and so on for like even Mahendra Modi's statement yesterday is all about the creativity and thinking, critical thinking and how do you really able to do this piece? And especially in this technology driven world, I think the challenges that things have been now becoming very, very scattered and very fragmented. You need to have a lot of shared values which should come in. You have to build your personality of the brand, how do you build and I think, and you need to also go deeper in fulfilling the need of the customer, much deeper than earlier it used to be. So how do you really bring the shared value? How do you build the strong personality of your brand and how do you go and fulfill your deeper need of the brand? It also, I mean, end of the day is all old school, what it stands for, what would it customer buy? Why would he buy? What is the purchase decision? What is the purchase trigger? All that is important but now in these times particularly, we need to really see that what is the shared value? What is the value, shared value which we brand really reflects? What is this personality and what is the deeper need which we are going to fulfill with the consumer? Now a couple of things which are, I would say that before I have even given tips on in terms of how you should really invest into your brand and different products would have different brand strategy, but things are which are very important for one to understand what is sometime lacking in the companies which we are getting. Some companies come to us which have a great product strategy, as I said, but no brand. Now the danger I see in this business is that they have a good product which is currently compelling and has a good wave and good run. Say for example, you were selling something on Amazon.  So to me these are all good stories because they clearly saw the wave and they want to drive the wave but they have no brand. So eventually as then when competition would trigger them, business would product would become commoditized, they would all vanish, they would all vanish. So a lot of these companies which come to us which have a very many two kind of a product, maybe they've got the wave right but because they've not built the brand, they will not stay in the business, that's for sure.  If you not built the brand, then you're waiting for somebody to match your product and if start matching your product as it did get matched, then your relevance would become lower and it'll be difficult for you to get new customers in and so this is a very short window which people have when their product is very compelling and it's been in the demand in the market and quickly they shift also equally focus on building the brand and staying what you value, what you believe on. So that would become a very important part. Second is a lack of alignment in your organization itself. You know, people get very clearly driven from functional roles but they don't have a strong alignment as a company for your brand, what the brand stands for and every single member of your company has to stand for the values of the brand and unless little that alignment comes in and sometimes alignment is totally broken, totally broken from a founder, it's a very different perception to people who are in the market has a very different perception and especially when you run businesses which have, you know, a lot of, you know, people that are different peers of functionality bringing in some kind of consistency is very difficult. So if you're running a business which is like advertising agency, very easy to really spread the culture. So very clearly same kind of age group of people, same kind of structure, but when you run an industrial organization, you have one way blue collared workers, one way you have people sitting with a little bit of management backgrounds. So different kind of a class people. So how do you really integrate a brand culture? And these are Japanese companies have done it phenomenon. If you go to Japanese factories, you will see the CEO from a worker down the line having a same kind of a culture and behavior. So they, they institute this. Indian companies are disconnected, they are broken. This is very clearly broken what large part of the organization, 80% of the organization don't do it, especially in the industrial side of organizations, the culture and the brand is absolutely broken. Then another point, which is very important is that poor and inconsistent decision making, you know, these days, especially this is happening, a lot of people are taking a lot of decisions very fast and these decisions sometimes don't go with the brand. You know, some people have changed the product strategy, some have done something else, but your brand says something else, you know, brand is talking very different than you were trying to do something else. And that's something which I personally feel is not good. In a short term, it can really maybe benefit you from some cash flows viewpoint, but in a long term, it will have a bigger impact. So you need to have a strong and long term decision making rather than short term decision making. Unless and until there is a, there is a immediate opportunity or something which you don't really cap, staying within the framework of the brand, then it is fine. But I feel that particularly these times, these starting times, a poor and inconsistent decision making can spoil your organization. That's very, very important. Competitive vulnerability in terms of how your competition is behaving and how competition is going to do that, how is the cluster building up, how you're differentiating yourself from there. That's also very important point. As a brand, we need to really see that what we are, our set of consumer as engaged with us, we're not diluting the whole impact, we're not just going in the same clutter or clear landscape, which we have to define that what is our landscape, what is the competition doing, but not just try to do or repeat what competition doing, find your own place, find your own structure. That's very important. And lastly, which is, which also we are seeing these days is a lot of desperate communication offerings. People are discounting too much in the market or they would running some offers which are, which to me sometimes it doesn't make a financial sense. And this has happened in one of the industries which we closely worked with. And I was saying this for last two and a half years that they're killing themselves on the field. So the food business particularly food business in last two years, almost everybody started losing money. Why they started losing money? Because of this, the over discounted went into the market. Everybody was trying to do this one plus one three and things of that nature. And it started with some of the invested companies. I would say the companies like Faso's and likes of them, while they have used the investor money big time and even Burger King and even other companies, they have used a lot of investor money. They have burned a lot of investor money. I have no shame to do that. The huge amount of money has been burned. But they also killed a lot of other players in the market. Because I don't see any sense of Burger King. Anybody even Burger King can give me any form of advice and say how they would sell a 45 rupees or a 50 rupees one plus one burger free, one plus one burger and as an offer in a 50 rupees. Now this is being extremely desperate and they are doing it not in this COVID time. They were doing it before that. I don't know who are they going to place that? What kind of revenues they were trying to drive? Who are they trying to handle the competition? But eventually they would have burned their own balance sheet. The entire balance sheet would have burned. But when companies like this of this nature do something like that, they actually kill a lot of other people in the market. Not that they would do benefit to themselves because they have spoiled the whole mindset of a customer itself because customers start expecting a 50 rupees one burger plus one burger coming to them. That's to me is ridiculous ideas and these were done by a lot of companies who wanted to unridiculously scale themselves. In their scaling, they not only damage themselves, but they damage the entire industry. To me, it would take a lot of long time where people start realizing that the good quality product or good one thing would have to be paid on that. Nobody was expecting Burger King to do that, but they did it. And we saw 20, 25 years of McDonald's surviving in the market and they never did this kind of deals. They never came up in these kind of, they did one or two times in past when they've drawn the veggie burger, they wanted to really put this and that thing. They did some trials and they pushed the price back to the normal because it was very difficult to take it back. Same thing in one time, Dominos did when they brought their 50 rupees pizza and they had to very big difficulty to bring the price back. And I think maybe the same learnings didn't come to companies of that nature and they started disturbing their own brand itself. So these are five mistakes which you can do. One, don't just put your all energy on the product side, parallely build your brand. Second, get your alignment with the organization. Third, don't take poor and inconsistent decision making. Fourth, understand your competition, see how vulnerable that situation is. Fourth, don't take desperate communications and offerings out. You actually create a lot of disrespect for your own brand if you do a lot of desperate offerings and so on. So you need to really work in terms of what I call the intentional way of designing the brand. You have to be very intentional about that. It should be expressed with a lot of consistency. You need to be also really see that there are two things which should match your personality of the brand and the values you really bring. You need to blend these two things. How do you really blend the personality and how do you really impart values which the brand stands for? If you are able to do that, then I think there is a great opportunity for you to build the brand. Now let's go into even more deeper in terms of what is happening at this stage from our changing consumer priorities. Consumer is certainly, when it started, a lot of people were asking me that what would happen. So my opinion was different. I'm honest about it because I used to say that nothing is going to change in two to three months. It's just a pause and no behavioral changes would come. We will start coming back to things that are what I call normal and now because when it's all dragged a little too much, it's now gone to about six months and we don't know if it is ending in the next three to four months. I think some permanent changes would come in the consumer side. A lot of permanent changes would start coming in. So obviously, usage of technology is one set of estimates but a lot of other changes and some changes were already there but it's become even more stronger now. Like for example, opinions. Earlier we used to buy things by our own choices or while people you know around and things of that nature but now you're taking opinions with people you don't know. So a lot of opinions are set in the market, very fast opinions are set in the market and very fast people react on that. So in that sense, I feel that this is not the greatest time for organizations because they don't get even a breather time.  People are just making opinions. Look at what is happening around us in this media space and things of that. A lot of people who don't know the subject or understand subject but they would make opinion on it. So this is now a way of life. People make opinions very very fast and that's something which is just way of life for you and how do you really one build your brand on that? You can build a brand also. This is a very unique situation where you people are building brands on setting these opinions in their favor. And sometimes you can destroy the brand because sometimes you're not able to manage that. This is very very difficult situation especially for established brands because established brands become more vulnerable. They're more vulnerable. They more have ability to people to pull down them and things of that but for a lot of new brands they can use this as an opportunity. They can use this as an opportunity to build their own brand equity because they can actually talk through consumers. So not talk to consumers but talk to through consumers. That's very big value. A lot of marketing also has become very I would say more scientific now. The whole brand building is now driven by tools and techniques and things of that nature versus a lot of old school base of building brand and so on which is once and good because it's very due to you do yourself kind of a market which is becoming. And you also have to really think through that. I mean I would say at this stage even brand building you should not go all over. This is one of the areas which people do mistake. They try to go all over. This is a good time. This is a great time where a lot of medias are available. A lot of other things are available. A lot of collaboration is available but you can also do that. For example I just advised one of my companies and so they were running a business of laundry chain in India largest laundry chain and we wanted to really build even more brand at this stage what bigger capability and things that reach out customer create more value for them and so what we did is we approached to a company called FedEx. Now FedEx is the world's number one logistic and delivery company and said look you're setting up shops of FedEx. Don't set up with us collaborate with us and every Euclain shop can also have FedEx or every Euclain can tomorrow have the Amazon also around that. So what it does is it gives much bigger value to Euclain. It gives obviously distribution to FedEx because FedEx would get into 75 art cities. So these kind of brand alignments I think creates much bigger value at this moment. So at this stage this is a time of collaboration. One has to really think through what kind of collaborations you can do with your brand. How can you really I think you can drop off with other brands which in a positive sense but what value you bring to that? What value you would be able to bring to these companies that would create a much more significant difference in the way it is needs to be approved. So a lot of collaborative time has now come in. Now let's look at obviously I've talked about there is a old school of building a brand and there is an absolutely new school of branding the brands but I'll give you some statistics. Another big statistics which is very important is that significantly changed in people's mind that people are thinking that social media particularly or social connectivity is now up to 91% where people feel that it impacts and connects world. So 91%. So it's really gone to the top. It cannot be bigger than that and 64% of customers feel that they can be connected by the brand through obviously digital and so on and 70% of consumers feel more connected to the brands with their CEOs being active on the social media. It can go wrong also in like in MI's case it was a classic example. He was a very popular social media as a CEO available in the market. Very big following. Everything going to undating but when things are not right it can backfire on you but large part of organizations are reflected to their CEOs or founders or people being connected in the media themselves. They're available themselves. So they're pretty much are available to really launch their products launch this entire thing. So this all is changed. People are looking more people because social is all about people. So people want to really connect with people rather than organizations talking to them. So they don't want to really see any kind of communication. They want to really see hear people talking about it. So a lot of your organizational key people should come in the front and that also is a big way of building a brand. Another thing is you need to really find a connection through intention. How do you connect with people? It has to have a strong intention. What do you really want from them? What are you looking from them? Stand for something. Don't just communicate but you have to stand for something which is very important. Another area which is very important is the culture and marketing are deep rooted together. You cannot separate them. So whatever you communicate, whatever you say to build your brand when you start your marketing, it also has to be connected with your culture what you really stand for. And last which is what I call how and more approach. How versus more approach which means it's not really but how to approach. It's about more to approach. It's not about spreading more. It's about how to approach. What is the way you really want to approach your customers, clients, what do you want to communicate? What do you want to stand for? This will all make sure that how your brand is recalled in the market. So if I have to summarize this situation for scale up, I think at this stage brand would become a very very strong strategy.  Somebody would become your competition soon. Somebody would match your product or take it even higher. Somebody would have even ability to give you better, so to say, price and then you will not be able to stay in the market. So it's quickly you need to really shift focus and say, while I'll continue to deliver my product or the service in the market, but let me also concentrate and build a sustainable and a valuable brand in the market. So valuable and being sustainable, these are two important part of the brand. So over to you, Sonali, if you have any questions for me, we have another two, three minutes left. Thank you so much, Kaurab sir, for another wonderful session and for sharing your insights. We do have a few questions lined up with us. I'll just take them one by one. So the first question is by Mr. Salik Faraz. He says, please give three key strategical recommendations for brand building in fresh fruits B2C segment. So three strategic recommendations in fresh food, a B2C segment, right? So I've done just now a project for B2C fresh fruit segment. Actually, as you used to see in locally, there was a, you know, the fruit doesn't come like what we get in India, you know, we get the full fruit, but in other countries in Europe, particularly you get cut fruits and nicely packaged so people can directly consume. So it's a very clumsy exercise if they want to take fruits to our office or take to any other place or at your workplaces, which people want to do. So there are two concerns for you. One, you, how do you really cut the fruit and put this into, I think it's one time consuming clumsy bulky to do that. So, and the cut food, the problem is that it just doesn't have a shelf life. So there's not technologies available, which can give you a not humanly touched product. It can be still be packaged, nice boxes, not touched by a human. So it's safe, very, very safe to consume. And it also gets you shelf life of three days. The same thing you can do. So I feel that when you're doing a business like commodity, you know, only thing which would change is your experiential value. You cannot make Apple cheaper than what is available in the market. Apple would be Apple, it will be same price everywhere single. You would obviously differentiate the little bit of quality and it's end of the commodity. It will play that. The only thing which would change is experiential. What is the last mile experience difference you would be able to create? And if you are able to make and work only on that part, the rest forget about this. This is a very good question. Actually, if you just work on the last mile experiential and product can keep changing, evolving, that's okay. But if that is done, then there is a bigger opportunity for you. Right. The next question is what kinds of brand building process should be on for companies started during the pandemic and how brand building can change after the pandemic or this economical slump? As I said, I mean, I clearly see that three types of companies in the market. One had a offering because the market was growing, everybody was selling. So I was also selling, but I had no brand equity. I feel that these companies are in danger. They're in danger because when everything is going, everybody can sell everything. Right. So this is the nature of that. So if you are producing something like, say, I know a company in Jaipur, which makes this cookies for women. Right. And they would do about a four million, five million kind of a production because they were the, you know, put it on the marketplace and they would just start selling. So these companies, while they can be still a manufacturing company, that's fine. But when things are going good, any player like that would create a maximum value because the market is very interesting. But when market starts shrinking, market starts shrinking, consumer becomes very conscious about where they want to invest and how they want to invest. So at this stage, they would, they would have these companies would have big problem. These companies who were running only for economy scale, just mass producing, just for doing and that thing might not be able to survive in the market. And I think the brands which would be strong, brands which would have their own good recall value would survive better. But I also tell you, these times, new brands would be born. A lot of new brands would be born. New opportunities would come in the market. A lot of people would shift and create their brand into more relevant answers. And these are a kind of companies, which we would start seeing this guy. And I think the first two quarters of any recession is all about taking control. But now people would start becoming and I think you're already seeing, you know, Mahindra launching the new thar, which is coming in.  Why it is happening Mahindra clearly saw. This is not time to really go out and create. You have people who are fans. So he wants to now engage fans. He doesn't want to go to customer because commuting is not people who want to drive people out to buy. He's very clear. He's very sharp. He saw that commuting is not a preference today. People don't just because I want a new car is not going to make a purchase. They will not make a purchase decision because they would delay the purchase decision, which means Mahindra was a computing decision, you know, want to buy a car, let me buy this, I can buy this, I can buy this. But now he's gone to fans. He says, I will only address my fan who just live for this. This is the desire to have it. And he's doing the right thing. So you will see when this car launches, I'm very hopeful that it would create a history that never thar sold so much, which they sold in pandemic, that kind of rule will come. But particularly because he just picked up the fans and took it out and this and that. Like mobile phone, Apple would come. You'll see a fans would come, right? This fan always wanted the first Apple whenever they come in, they come in their hands. So these companies are smart. They did never lose their fans. So you really have to see where you fit in and how you were able to do that. Yeah. All right. The next question is from Mahima Suri. She says, as a waste management and recycling company, how can we create our own brand value? I think Mahima's answer is, you have answer in your, what you do in terms of a waste management recycling or circular economy itself is a demand side. It's from a brand building side. I think one, there are very few companies, very few people are doing this. So there is a kind of a blue ocean kind of a structure. Second, I think this is a topic which everybody is talking anyway. So you need to really use them to talk about. Everybody already talking, every industry, every company, every organization, every organization has to talk about it. A government has to talk about it. Now you need to really see how you integrate with them and they talk about you. So fundamentally, so it's much easier for you. What I was saying, talk to, through your customers, not to your customers. So make sure what, who are your customers and talk to them and say you are doing something with any of the recycling, like say large organization, PepsiCo, another company, they all are talking, they all are talking. How do you integrate and how do you really create your structure? So those are would be my early ideas. So you need to really see through that who's your customer and customer of these corporates and companies and which are need to look at recycling and waste management. And if they say, we work with, we are work with this company because they are the best in the town and we work with them, it builds your brand equity. So in your case, I would say brand alliances would play a very big role. Great. So the next question we have from Mr. Captain Amitray. He says, how are you seeing the utility energy sector where most of the offices are not operational and suddenly closing down? Utility energy, most of the operational and suddenly closing out, which you're talking about the, because of pandemic, this issue has Captain I understand, which needs to be done. Yeah. So any B2B supply business, B2B service businesses, if they are directly related to any of the corporates or structure, which are not working at this stage would obviously have an impact. But what I'm saying is this is a pause period. This obviously is a different discussion. So it's more about how do you really sustain this period and pause this period so that your consumption when it comes on or all alternatively find a new target group, which would start consuming. And I think a lot of companies are doing that. A lot of companies are quickly changing their target groups. And for example, I tell you we have a company we're doing. It's actually a diesel supply company. So what they do is that they supply diesel to industrial businesses. And in these days, when the lockdown started, obviously all the industries were shut. Nobody was buying it. They quickly shift their focus to agriculture. So they started doing agriculture because agriculture was still on and they need gensets and diesel and other things. And agriculture is actually very unserviced market for diesel side. So they quickly shifted. So entire lockdown, they were doing a lot of supplies to agriculture. So you have to release things through. And I think Indians are very smart. They quickly change and pivot and find out what is the best way to do it. Great. I would just like to take up the last question now. The question is by Ms. Medinha Soni. She says I'm a startup, a training and development company. Can you give me tips to build a brand in the COVID scenario for my company? So good question. So I also run multiple training and coaching companies. And I say, I mean, I manage those companies, global organizations. So in that, I always say that when you're doing a training and any kind of a professional service business, their brands are actually two. One is your company and second is you yourself. So put a lot of effort on yourself. Most effort on you. So if you become an authority and opinion leader and things which you do, then you will not have the risk of commoditization. Otherwise training and development as a just as a corporate brand or something like that sooner or later becomes commoditized. Even the biggest training company, which Barthi's floated. If you see the what kind of rates and the structure they work on, it's already commoditized. So fundamental is that for training and development company, I always see that personality plays a very important role. Don't go the other way around. Don't go and commoditize yourself and start addressing everybody. Put yourself out there. Put yourself in the, use LinkedIn. LinkedIn is a fabulous media for yourself. Make yourself authority. Make yourself opinion leader. And as you start doing it, you start, you're seeing your organization also start benefiting from that. So that should be my advice. Wonderful. Thank you so much for your time, Gaurav Sir, and for very patiently answering all our questions. Anything you would like to say in the end? Thank you. We will do, see you all at the next edition at next time is Sonali's value. It's a bit doing value. Yes. Next time we talk about value and also talk about exit. Exit is a part of how do you find exit and a lot of people are looking to exit their business. So if you are interested to listen to it, please come over. And this is something which we, we at business sex day and day night work on helping people to find profitable exits. I should like to call it like profitable exit, but sometimes not so profitable, but we are these days working hard to give people profitable exits. Thank you so much, Gaurav Sir. Thank you to all our attendees for your time. We really hope you were able to add some value to your lives through the session. And as Gaurav Sir said, we would see you next time on Saturday at three o'clock with another session. Thank you so much. Thank you very much.


Ladies and gentlemen Salam Mike with day day two video three week three We already filmed day one of week three and now Dead look day, so we're talking splits. We're talking nutrition a little bit full day of eating coming I appreciate all the love there. Maybe we can get the one and only Allen thrall to do a full day of eating with this We'll see but basically Questions I got were Recently were how many sets how many reps do you need for each body part each week to make progress and Progress is obviously dependent on the individual Your stage in lifting your genetics, but also what's the most optimal kind of split the split is still such a weird term that's thrown around I think because of the multi you know big media stations like men's health and stuff they do some really cool things for the industry they obviously promote a Healthy lifestyle and they have some good information seeped in tucked in behind a lot of the information. That's just blanket It's just old. It's just not really necessary or relevant to the main goals Which is hopefully just making progress and whether you're trying to get stronger you're trying to get bigger You're trying to lose weight you're trying to gain weight a lot of it's obviously the nutrition part But in the gym we should just focus on doing a certain set of lifts that work for our body in our mind that we enjoy Who can do without pain that we can make progress in now if you're a power lifter Obviously those have to revolve around the squat bench dead if you're a weight lifter They have to revolve around the clean and jerk and the snatch if you're a bodybuilder They basically don't have to revolve around anything whatever it can do for you to build the body that you want whether you can Competitive or not. That's all that matters How many sets and stuff per week is kind of dependent on the individual, but there are some blanket statements There are you know ranges that we can maybe fit ourselves into if we're talking big lifts again A beginner will be very different than someone who's already deadlifting seven eight hundred pounds But for a big lift if we're seeping anywhere between maybe eight and sixteen sets per week Split up between one to three sessions You're probably in the range smaller muscle groups if you're trying to just hit your delts just trying to hit your tries Just trying to hit your bias We might be able to get a little bit more volume in there and handle something maybe in between 1224 maybe even 30 Sets and that's spread across different exercises, right? So I'm not just doing 30 sets of Strict overhead press although if you work your way up there You could probably handle that just fine the body's capable of amazing things if you listen all the motivational speakers that are Happening online nowadays.  I think the pendulum swings in everything we do from politics To nutritional strategies, right? No fat to high fat to moderate fat to flexible dieting to paleo to vegan these things swing to the extremes High frequency training swung to an extreme where people are deadlifting their faces all five times a week And that's probably just not gonna be best for longevity overall It's possible and some people might be able to get away with it But again the answer is often in the middle which isn't as sexy which isn't as cool Which won't get me the views won't get me the likes or the popularity of other people Just eating broccoli or just eating steak 24-7, but You know for a deadlift one to three times a week for a squat, maybe one to four times a week a Bench probably two to four times a week I say one because that's a rare extreme where someone can't handle twice a week Depending on the individual, but I imagine I don't know but if you bench 750 pounds It's gonna be real hard to get that kind of weight on your shoulders four times a week Generally speaking though again the split is that old-school thought where I'm just hitting delts on Monday Just hitting biceps on Tuesday And not only will we be out of practice if we only hit a muscle or a lift once a week But more so we'll be able to handle more volume and intensity if we spread it out if I'm doing three Really hard sets of deadlifts. I could probably do that every three days If I'm doing ten really really hard sets of deadlifts or or lats or whatever every Monday Then I probably won't be able to do as much But if I do it every three days now in a month I'm gonna overall be hitting more deadlifts more lats more sets more volume more progress, right? And so that's the overall spectrum and how do you learn? How do you where do you start? If you're brand new you obviously just follow program even if you're somewhere in the middle You probably follow a program or a coach But once you've been lifting two three four five ten years You start to slowly troubleshoot and refine what works for you and that's what I'm doing So we got basically lifting every single every other day for me. I just feels good with my mind feels good with my body squats Mixed in with my push day. So benching and squatting basically every four days Deadlifting and doing some kind of Latin bicep work every four days now in a week You know the other thing too is this you know seven-day spectrum or a seven-day week doesn't have to fit our programming perfectly I'm technically kind of on like a eight-day rotation. So I don't lift every Monday is my squatting bench day again, it's every Other other day if that makes sense to you and we can write something out and show you what it is But that's just kind of what the basics are working for me The other you know general rules we're looking at are changing rep schemes or changing variations in some kind of block So you don't want to just be doing Heavy single with no back down work and nothing else for the rest of your life Switching up your rep range. Not only will I be to progress? In strength but also hypertrophy So if you're we can get into more depth on blocking things out But generally speaking hitting a variety of rep ranges with that same lift So I'm deadlifting right basically twice a week One day is going to be a little bit more reps a little bit less weight. The other day is going to be a little bit heavier As we get more specific towards powerlifting or towards bodybuilding that's when you have to refine those reps They're perhaps even refine the exercises themselves to allow you to optimize what you're doing But there is no optimal basically. I was having a conversation with someone online and they're asking me Mike I feel like I'm spinning my wheels. I want to be optimal with what I'm doing But that's kind of a perfectionist mindset. There is no optimal There's things that we can tweak to try to do our best to be as optimal as we can But I don't know if today's workout was optimal. There's no way to Quantify that and there's no way to do everything absolutely perfectly So we kind of have to throw that out the window and do the best we can day in and day out Refine our programming our nutrition over time and just do it for a very long time And not only will you get better at refining it troubleshooting over time But the number one key is just that consistency and no one wants to hear that again.  It's it's not doing, you know A thousand push-ups a day workout for men's health, but sorry to bash you men's health You guys done some good work. You're just the only one that pops in my head But yeah, it is what will work over time. So that's where we're at Nothing's optimal no perfect split no perfect life. Let's break the ourselves from the constraints of society telling me I need to be perfect ladies up. Feel me. We'll be back next Monday, man We may or may not have some special guests coming to YouTube channel. So stay tuned. I appreciate you So I'm like we had a week three diving in training. The comeback is full flow right now all the positive comments, man Thanks for the love. Be sure to give this thing a thumbs up Subscribe new videos every Monday and we might be twinkling in a couple videos here and there throughout the week and gaming channel coming soon Today I don't know if I've talked about my split too much We're gonna talk about some basics in my programming Keep it real simple. I'm training every other day I think one mentally keep me in the game to to allow my back some recovery I don't really have like an ongoing injury But my back tends to lock up on me really bad and I'll be stuck for weeks So I don't want that to happen. Although my back's a little sore right now. We're still getting it done So squat day is paired up with push day pretty simple Doing a couple cycles So I'll do three to maybe five weeks of a certain movement then I'll switch it up So we got the safety squat bar as the current cycle went pretty heavy last week. So today was quote-unquote de-load I just went a little bit lighter triples two plates in a quarter Whatever the heck that is two ninety five three hundred pounds with the safety squat bar and then push so Benches were all taken is actually popping here at untapped strength Alan thralls Jim So I waited around for a bench couldn't get one whatever I make do I'm not that friendly. So I didn't want to work in a Little chest press machine and one of my favorites a little hammer strength and then Viking press afterwards Which is basically like a hammer strength shoulder press standing. It's a strong man unit feels really good So loaded that thing up keeping in you know kind of the high parameter for you ramp range Just doing moderate weight moderate loads. So anywhere from like six to ten. I'll do on the second movement. I'm kind of my my bread and butter rather than the strength lifts and then finished off with some triceps and pushdowns So I'm overall feeling really good. There's some kinks just in your body as you get back into training It's a little bit chilly here. Everyone's commenting like Mike You live in a igloo like no, but we don't live in LA. It's not excuse me. It's not like 70 degrees all the time It gets like 40 degrees When you're in a warehouse gym some of my joints. I'm getting a little bit older kids So just taking time to warm up. That's why I kind of wear tights in a beanie hop on the Assault bike the aerodyne deal try to warm it up. So joints feeling a little bit glued I guess from the weeks of taking time off, you know when you squat more often I was squatting every day this summer My joints felt great and that's just the truth of it But when you're out of practice and now you're adding stimulus now you're adding load They just get a little bit achy. So pushing through the hard part I know that I knew in my head weeks one and two would be easy in terms of recovery But feel heavy and then I knew from like week two to eight I'm gonna feel a little grindy and beat up, but that's just part of the game and so You acknowledge it. You don't let it stop what you're doing If anything stopping what you're doing you just kind of work around focus on what you can do what you can't and that's kind of where We are so body weights down about five pounds again, just focusing on protein nothing too Particular with my nutrition feeling solid. I have a spin bike. It's on my mom's house I'm trying to get a truck to drive it to my house because I want to spin Every day just because I don't like walking into the cold and I'm just less likely to actually get it done You want to set yourself up for success nutrition workout, etc So you want to be able to build those habits and build the routine and build the Environment that allow you to succeed and I know for me having that spin bike in my house I'll be much more likely to ride that thing every day get some blood on my legs open up my hips Which then long-term not only my conditioning burning a little extra calories to help me lose weight But my back will feel better. I just get a little uneven hips and then qo and things tend to lock up But it is what it is feeling good moods pretty good We got to go eat some food next training days one day off and then we're going to Deadlift back day, so I'll do deadlift back some biceps pretty basic again I'm just pulling from the ground for now Again three to five weeks, but then I'll probably choose a variation or two and kind of rotate those around At least from my main strength movement. It might be like a block pull might be a pause Maybe pull against bands to start sometimes that feels good. We'll see we'll see as it goes Nothing too particular just building her back up Time to eat I'll see you on twitch money to Thursday live streaming if you guys are into twitch Or if you just want to come hang out ask me anything fitness or otherwise related role He's just chilling all evening long 3 p.m. Pacific standard time. I appreciate you time to roll and we'll catch you on deadlift day perfect