I'm Ruth Ann. I'm a junior dev at Spreedley, and I'm going to tell you all about my experience moving to Elixirville. When I decided a number of years ago that it was time I should learn to program, lots of people told me not to worry too super much about what I started with because you know you learn something and then you're just going to have to learn something else in a minute. So I just picked up whatever class I was taking or the tutorial I was working through or the job I was doing required, which was Racket and then Ruby and then JavaScript, Python, Java, SQL, Rails, Ember, Pyramid, Jekyll, Flask, Node, and each time it was a little bit like moving to a new city. The first time you're out on your own, you squint at a map, you read the docs, you spend a lot of time figuring out where you can live that you'll be able to walk from your new apartment to the grocery store. And eventually you find the coffee shop that is your coffee shop. You learn how to write a case statement. You figure out how the public transit works and then it's time to move again. And you move again and again and again and maybe you reminisce about your old favorite bar or variable assignment by value instead of by reference, Python. You know that the town you're going to will have coffee shops so you don't stress too much about finding them before you move there. You settle in, you get on with what you need to do in your life. But as I moved from one language to the next, a funny thing started to happen which was that the town kind of all started to look the same. The maps weren't really telling me things I could actually use. Everything in whatever tutorial or blog post I was reading would be really obvious and then all of a sudden everything would be really opaque and then I would quit the tutorial and go look for a real problem to solve. And by the time I was headed to Elixirville, this was particularly bad. There is some chance my manager is out there somewhere so I'm not going to tell you just how bad it was. But it was a pretty disorganized trip and in case you too would rather just look up the nearest coffee shop when you want a coffee and in case you too should decide one day for whatever reason to visit Elixirville, I'm going to tell you a little bit about a couple of things, a couple of customs if you will, that sort of confused me at first and what I've learned about them. Number one, pipes. So I took a look at our code base. There was a whole bunch of this stuff on the left. It was like what is actually going like okay the passenger is doing something. So what a pipe does is let you pass an expression as the first parameter to a function. So this saves us at a minimum a bunch of repetition and at best a lot of cognitive load. So the functions that I sort of like mocked up here aren't exactly isomorphic but they do kind of the same thing. I tried to make the second one over there at least like a little bit idiomatic and ruby so I wasn't like torturing the example too much. But the result of this is that helper functions get conceptualized a little bit differently. Thinking of Elixir in terms of a spoken language kind of feels like swapping from sentences start with a verb and then you have to wade through everything else in the sentence to figure out who we're actually talking about to sentences start with a subject.  Am I being tricked? Not being tricked. That's actually what's happening. Second thing, pattern matching. So you remember how I mentioned that there's like this point where all the tutorials become super opaque and I threw my hands in the air. For me that was pattern matching. It's like we have the same function defined four times. Why? How can you even do that? The confusing part about this is there's this whole thing in Elixir about how the equal sign doesn't do assignment exactly and I sort of went this is all very strange and I don't know why anyone would want this. Where this really shines is in function definitions. At some point you were probably told one or more arbitrary acceptable lines for a function and then you had to write a conditional that had more than two clauses and that was the end of that. But pattern matching breaks that up a lot as you can see. So here we have some common behaviors for espresso drinks. We have some common behaviors for non-expressor drinks. We have suitable incredulity when you don't actually want to coffee. And we have this final clause that will sort of catch everyone who actually needs to go around the corner to the bar. Finally, probably the most cultural of all of these mixed format will find what code you wrote that isn't appropriately formatted. You can set your formatting on a per project basis. So that offers some granularity for local preferences and it's great. No one likes to be culturally insensitive, especially not an accident. Now when I was writing this I thought there was a way to have mixed format like actually show you what you had done wrong. I can't actually figure out how to do that anymore. But if you like me always forget to check your formatting until after you've committed, then you can just go see what's different in a mentor commit. So those are some things that I got to learn on my way to Elixirville. I am super glad to have all of you here in my physical hometown of Durham. And I love to talk about what I learned in Elixir. I love to talk about Durham. You need any recommendations or thoughts or notice that I wrote something completely incorrect. Please come find me later. Thanks.


Russia has lost 90% of the tanks it had at the time of invasion of Ukraine. Forbes. Since the beginning of the full-scale war in Ukraine, Russia has lost 90% of the tanks it had at the time of the invasion. In February 2022, the Russian Federation had 2,987 tanks and after 23 months of fierce fighting it has lost at least 2,619 of these armored vehicles. This is stated in the article by Forbes. It is noted that these are 1,725 destroyed, 145 damaged, 205 abandoned and 544 captured, T-55, T-62, T-72, T-80 and T-90. The article adds that if the Kremlin had no other options to replace its military losses the occupiers would currently have only 368 tanks at their disposal. However, the Russian Federation has something to make up for the losses. In particular it is the production of new T-90M tanks by the Ural-Varganzavod plant as well as the repair and modernization of old tanks by four other companies. At the same time the Kremlin claims that in 2023 it received 1,500 new and modernized tanks through intensive industrial efforts. Forbes suggests that because of this Russia should have 2,400 tanks in service but there should be much fewer. Therefore, Russia may not be producing as many new and modernized tanks as the Kremlin claims, the publication said. An analysis by the French intelligence group ARI shows that the Russian industry produces only 390 tanks a year. This means that in 2022 and 2023 it could build or repair only 780 tanks. If this is true, the Russian armed forces could be reduced to 1,180 tanks, perhaps a little more tanks than the Ukrainian armed forces currently have, Forbes added. On the 13th of December the Lithuanian Ministry of Defense stated that Russia could produce or repair about 100 to 150 tanks in a month.


Hi, everyone. This is a really big room, so if you guys want to come up, please do. So it's a little bit intimidating to see this big room. My name is Dimms, and my co-conspirator is Swapnil. I work on things like NOAA, Oslo. I was a PTL for Oslo. I'm on the technical committee. I mainly help out this time with the release management team, trying to figure out how to make the releases automated, and if you see all the 100 emails come to your OpenStack Dev, OpenStack Announce, that's us. As part of the release team, we were also taking care of the requirements changes that were happening in all the projects. So how many of you have had trouble with Python packages installing? Okay. One, two, three. So if you're thinking this is about getting your requirements into OpenStack, wrong session. So this is just about Python packages and, you know, the versioning and the problems with the co-installability and things like that. So heads up before we start. Okay. So we're going to go through... See? I got you. Okay. So we're going to talk about what the problems are, typically, in an OpenStack environment. How do we end up with version conflicts and how do we get out of version conflicts? How do we make sure that over a period of time, you know, all of us are not struggling trying to merge code here and there, trying to... Especially people like Zego who has to package Debian packages. So we... Yeah. And Cori. Cori? Yeah. Cori who has to package, you know, Debian packages and others doing RPM packages. How do we make their life a little bit simpler by coming up with strategies to manage the versions that need to be installed together? So we're going to go through what global requirements are, what we mean by upper constraints and, you know, a few other things that you see on the slide. Okay. So when we identified that the release team is taking care of a large set of tasks with respect to requirements, we said we need to split out a separate team, mainly consisting of people who are working with packaging stuff, but also anybody who is, whoever else is interested in taking care of this hard problem. And the main thing that they were going to work with is what we call global requirements.txt file, which is present in a repository right now called OpenStack slash requirements. So before we go into what global requirements.txt is, typically if you open up a Python package, you would see something like this. You can event let what versions can be used, what versions are not good, right? So if you see the line number eight, you can see that there is one version of event let which we don't like. And then we accept anything about that, right? And then LXML is BSD license. We can work with 2.3 and above. What this means is we may have a feature of LXML that we use, which is only available about 2.3, right? That's why we need a minimum of 2.3. And then SQL Alchemy, we are doing an upper range and the bottom range because anything about that upper range, we know it's broken. We have a bug that is upstream that's waiting to be fixed. So, you know, things have to be tracked. So this kind of gives you a sense of, okay, if my operating system has these Python packages which fit within the range, then I'm okay. So then you have to go back to PyPy and figure out what is a set of packages that is there, what will install together, right? So that is essentially what we end up doing for all OpenStack projects. So typically in requirements.txt, there is a test requirements.txt, sometimes in the setup.cfg, depending on which, you know, Python package that you're looking at. Okay. So what do we mean? What are the files that we are taking care of in the requirements? It seems really simple. Every project has requirements.txt, then how do we come up with a combined requirements.txt? So all the projects in OpenStack can be installed. So that's what we call the global requirements.txt, and we have to enforce what is in the global requirements.txt to each of the individual projects. So that's the huge task that we are faced with. And one thing that helps the packages is we calculate the upper constraints.txt based on what we can download from PyPy, what is in our mirrors, and so we come up with a list. If you look at the upper constraints, it's triple equal to sign, which means it's a pinned fixed version. So CouchDB, we always, in the CI test, we are using 1.1. MySQL Python, if it's 2.7 Python version, then we are using 1.25. So we are publishing essentially the set of packages that we install in our CI. And if you go back to the global requirements, each of these will fit exactly into the global requirements. So global requirements can give you many answers, but this is one answer that we are actually testing. So that is exactly what we are doing. So now we have these two files. We don't want to manage it manually. It's a huge task. For example, the upper constraint.txt, we can run some jobs to calculate it. And the global requirements.txt, we can run some jobs to publish that as reviews to each of the projects that want to adopt the global requirements. Anybody confused yet or not? It will get even more confusing. So just raise your hands if you have a question and we can talk it through. So there are two files. We need to manage the two files. And we have to distribute the information in the two files to all the projects. So that's the task at hand. And the team that is going to do this in automated fashion and deal with exceptions is the requirements team. That's basically what we are talking about here. So different projects may have different version ranges. And also the order of the installs in the requirements file might break some stuff, too. So what used to happen previously was if you take, say, Python client library, Keystone client library, it used to be referenced by many projects. And each of them had their own version. So depending, there was random order in which DevStack would end up installing stuff. The same Python library might be installed like five times. That used to happen in our CI. So we would never be able to figure out exactly what we tested unless we put a, you know, we print out at the end of the CI run. But then all the CI runs would have totally different ones because of the random ordering that got pulled down. So we could not publish that information and that information was not useful to the packages. So that's a problem with the CI. Then also, if when new projects are coming in, when projects are trying to do new stuff, like, you know, somebody wanted to add ZooKeeper, somebody wanted to do a different Python library for Memcached and things like that. So somebody has to ask the hard questions like, okay, is the license compatible? Does it work in Python 3? Because we have a long-term goal of going to Python 3 as a whole community. Are there other libraries that other projects are already using? So we have to ask these questions before we can let new libraries in because we don't want this set of libraries to explore. So, and the team that vets these questions is the requirements team again. So new requirements are added by, you know, people like NOVA, Neutron, Congress, anybody can add new things. They are welcome to open reviews in the OpenStack requirements repository and come up with an answer for all the questions that we ask, you know, work with us and try to get stuff in. Then we, when things break, we add things like, you know, the pins, exclusions and things like that. And we have a process where every night we calculate changes to upper constraints, we install stuff from PyPy, and then we calculate the changes that were done in upper constraints that are needed in upper constraints because somebody published a library on, say, a Friday night, which typically happens. So, and then on Saturday morning, we'll have a review that says, look, MySQL put out a new library or, you know, event let had a minor update. So, and then there is a review that's logged and then the requirements team approves that and that gets merged. So this is, there is like a cyclical things that we have set up that we end up monitoring all the time.  So we go add a pin by hand and exclusion by hand and then, you know, we move on. So the other good thing about this is we, one big thing to protect us from breakage like that is the upper constraint. So if there's a new version of event let that breaks, say, neutron, then we fix the upper constraint. We don't fix the range. We fix the upper constraint. We let the CI go, you know, go and then what we do is we work with the event let team to figure out if it's something that can be fixed easily. If it cannot be done in a few days, if we realize that it's going to take a really long time, then what we do is, okay, we go add a block on that specific version and tell them look, we're not going to pick up any new versions or we're going to say we're going to block on one specific version. So recently what happened was a library was already published, but they published a wheel for the library and the wheel was breaking our CI jobs.  So sometimes we do global, it's hard to do the global requirements change because if we do the global requirements change, then we end up changing everybody. If we make a change in the upper constraints, then only the CI jobs are affected and we don't push out a change to everybody when we know it's a temporary problem. So these are the kind of issues that we deal with on a daily basis and, you know, we need your help. If you are interested in this kind of stuff, you know, please talk to us. So the bot proposes update to the subscribe projects. Okay. And also, so in this whole thing, it's not enough to keep adding stuff. We have to take stuff off too. For example, Zigo is trying to get a botolibrary off for a really long time. Yeah. No? Well, there was, you have a set of libraries that you don't like that are not well maintained. There you go. So there is, we have a process of pruning the stuff from requirements as well. So it involves identifying which projects needs to be removed, going and talking to the teams that are responsible for that project and make sure that they take it off their requirements and test requirements. And then when we know that it's all gone from all the projects, and then we can get it off it from global requirements and upper constraints. So also, one more thing which you may or may not have appreciated was if a thing in the global requirements adds new dependencies, for example, one library starts, has a new release that uses something else, something, some more plugins or something like that. So the upper constraints is going to grow as well. So the upper constraints grows based on the global requirements and shrinks as well. Okay. So this is just an example. So how does a project know whether they, whether, you know, how to get into global requirements process, right? So the first thing is there is check requirements job. A check requirements job is a well-known template in the project config repository. And you have to add the check requirements at the bottom. And if you don't have it, then you are not running the check requirements. What check requirements job does is if a random developer who has no idea about the global requirements process wants to suggest a change to add a new library or change a version or change the range and they don't know what they are doing, this stops them by doing a minus one saying, okay, you are subscribed to global requirements updates, but you're doing something that you should not be doing. So and then they get to know that, okay, we should, the course will say, okay, look, check requirements are broken. So what you're doing is wrong. So go talk to the requirements people. So it gives you an alert when things happen like that. And also when the Oslo team releases Oslo Utils 3.17.0, then the global requirements may be updated depending on if somebody feels that they need the global requirements to be updated. Typically what happens is, say, Glance or Neutron or someone else needs a feature in Oslo Utils that was not there in the previous version. Only then we let them update the lower bound of the library. Typically we say, do not raise the lower bound unless you absolutely need it. But what happens typically is, when we release the library and Glance starts using it, because we are using upper constraints, they will fetch the new library as soon as it hits the upper constraints and they don't realize that the global requirements is still using the lower bound. So that is one of the holes that we have right now. So it's a really complicated process and we would like your help. Okay, go ahead. Okay, now I'll let Swapnel talk a little bit about himself and continue the rest of it. Thanks, James. Hello everyone. So I'm also part of the requirement stream that we maintain the libraries. And I work at Reddit and contribute to Kola. So that's all about me. So DIMS explained us very informative about how we do requirements, how we manage global requirements and upper constraints. And as a part of requirements team, we need to maintain global requirements and upper constraints. So how we do that? So maintenance basically happens in two ways. So there are broad proposed updates and there are human interventions. So for broad proposed updates, we update requirements project itself and the other projects that are managed by requirements. For requirements projects, we update the upper constraints automatically whenever new library is released into PyPy. So Infra has the mirrors for PyPy which picks up the latest releases and updates the upper constraints and the dependencies. And once they are updated, the core review team of requirements basically checks whether it passes the cross-project integrations that we have. So can just, okay. So it will check whether it passes the cross-project integrations that we have for projects that are using upper constraints and as a sanity check and then basically they will approve the upper constraints. And like Dim said, the global requirements change is very, checked very strictly because it updates a whole lot of projects in OpenStack ecosystem. So we check whether it's absolutely necessary and then we update it. Then the board basically triggers a change to all the projects that are using that global requirement and update it kind of. And the management of basically updating the test requirements and requirements is up to the core review team of the particular project. So can you just move back. So if you check, so we have taken care of both the things for bot and human interventions and basically for global requirements we have some constraints for global requirements as well as for upper constraints. So for upper constraints, we only accept bot proposed changes. We do not entertain human intervention unless until it's absolutely necessary. While when it is breaking stuff, like Dim said that some projects get it in the gates directly when it is updated from pi pi. And if it breaks stuff, then we need to go and change the upper constraint for that. So how do I subscribe to global requirements process? So one of the things that we need to do is whenever I have new projects, I need to check what requirements I need and I need to check what requirements I do have into global requirements. If I have all the requirements, I can directly go and submit a check requirements job change into the project config and see how it and sync the versions in my requirements file whether they work correctly. Once the project config change has been merged then you can submit a change to project.txt to update your project and the bot will then trigger the changes for requirements into your projects. So you just need to monitor the bot proposed changes into your project and basically approve them. So add in and upgrading requirements. So basically we get a lot of trouble when people want to add new libraries. So we have a strict requirement that adheres to a set of questionnaires that needs to be fulfilled and basically core team needs to be in agreement that we need this new library. Because whenever new project starts or people see new libraries, they tend to pick it up, implement the new features and they want that it to be part of global requirements. But we might have a library that is doing the same thing or it might not be compatible license that we expected from or it might not be Python 3 compatible or distro may have alternate options for that. So we need to check all these things into consideration before we approve any new library into the requirements. So we are very strict on that purpose while adding it because it creates a new maintenance job for the requirements team as well as the release team when we are releasing new things for OpenStack. Same goes with upgrading the requirement version. So we are very strict on upgrading global requirements because anything changes into it affects all OpenStack ecosystem and you need to be very sure that I need to update it. So the update process basically is followed in multiple formats. So for OpenStack libraries, the release team basically takes care of updating the requirements into global requirements for OpenStack projects. For dependencies that are managed by projects themselves, so they know that I need a new dependency for this particular library, they submit a new change into the requirements repo for updating that global requirement and sometimes a distro specific library which basically is added as a part of dependency management into upper constraints. If they need any change into it and they need to add or update into global requirements, they submit a change into requirements. So this way we manage upgrading the requirements into requirements repo and like we discussed, the upper constraint changes are very specific. They are 100% or 90% we can say are managed only by bought proposed changes and no human intervention as long as it's not necessary. Okay. So as a part of this, basically presentation I want to basically ask as many people they want to review and provide help to requirements team to review the new requirements or upgrades. So because we need feedback or basically when we break any requirement, we need early feedback from as many users as we want and this basically helps to reduce the CI, the efforts that we lose in CI for breakages that we can reduce by knowing those early things. Then as a part, because as a part of adding new requirements, why we need all those questionnaires because we need to know who is maintaining that requirement. If nobody is maintaining it, then we get into trouble too many times rather than recovering from it. So that's why we need to know who is the maintainer and when we know then he can basically come around and put it to a minimum version or block it kind of that way so that we know the damage early rather than knowing it later. Whenever we are doing any changes into requirements, we appreciate to have as detailed commit message as possible so that we can evaluate the change appropriately. And if you are not sure about your requirement and it's very specific, so it's very volatile, so we have blacklisted requirements, so we don't recommend you adding into it, but there are things which change very much to project specific, so those are added into blacklisted requirements like pipette, flakette, so every projects have their own changes or rules for that matter, and they add it into basically requirement stream, add them into blacklist, and they are ignored when we are basically changing the constraints. So as a part of Newton, we have accomplished a very good review thing, so it's very diverse and it's around more than 2,600 reviews in Newton and more than 570 commits from complete community, and I really thank everyone for that. So some of the accomplishments that we have done in Newton as we have first time formed a team which is formal and which is continuously running the meetings and working together as a group, so we formed the formal team, so Tony Brits is our first PTL and as elected PTL, then we have active core review team which works every day to manage things. One of the major thing that we have achieved in this cycle is cross-project integration, so prior to Newton we had DIMS proposed patches that we used to check for all the projects that were managing the upper constraints for any change that is done, due to in-front supported facility that we can do a cross-project integration, now we have gates that check for every upper constraint change, the upper constraint for projects that are using it, and we are having now specific stakeholders who look into issues related to requirements updates, so we can ask for this two specific things like for number it is not here, core is here, so we ask them specifically, do you want to add this requirement into global requirements and they are very much there to help us at that point, we are having better coordination with release engineering and one of the things that we did is removed most of the cruft requirements that were not being used or were duplicate kind of that stuff, some of the pitfalls we have observed during this release is basically like DIMS explained that people start using a feature that is just added to UC and upper constraints and that is not added as a part of global requirement, so if a project is dependent on that project which is using UC then it fails because of that, we don't deal with folks, so basically there are some projects which are having folks with different features and different projects want to use it differently, then it becomes a difficulty for requirements and release stream to manage that, we don't basically test the lower bounds, so similar to upper bounds we need to check whether lower bound for the requirement works perfectly while installing a project or using it, then this is a very common problem but we have dealt it couple of times in this release that if a requirement fails, basically if whenever we update a global requirement it triggers a change for all the projects and if we need to revert it then we need a lot more cycles to basically CI cycles to get it into all the projects that have been affected, then larger set of jobs to basically prevent bad things going in, so we ask more projects to start using upper constraints so that we know what is failing and have a better integration with projects, so if a project starts using upper constraints then we can add a new job into requirements or in the same projects to check with upper constraints and get the results early than getting it later kind of, so some of the current challenges that we have identified at the end of the release is basically remove the requirements with duplicates, then remove the requirements without active maintenance and find duplicates if possible, so some of the things that as a community we have done, I think in the last couple of releases that the important requirements that were not maintained, OpenStack community has taken the responsibility to maintain them and we are, as a part of requirements team we are going to see how we can help with that, then like I said advocate more project teams to use upper constraints, so it helps to better check the sanity and optimize the proposed changes, so the way we propose changes to all the projects and the board propose changes how we can better optimize it kind of, so one of some of the priorities that we have in Okata is basically introduce lower bounds or the way we called as divergent constraints, and so that we test those into CI and reduce the proposed changes, so we have a session on Thursday, I think 3.30 design summit session for requirements where we discuss all this thing for divergent constraints. The another thing that we are looking forward to is Python 3 compatibility, so we are having a separate working group for Python 3 and we are, at the same time, we are looking at the existing requirements which can be, which are getting to Python 3 or how we can find replacements for that, and this is always a point that better communication of failures and impact analysis so that we have very, we basically secure the environment from complex binary changes kind of, like he said for event later and we had some from Oslo at that time. So, how you can contribute, so we want as many people as to contribute to requirements and we have a lot of contributors, thankfully, so how we can manage the global requirements for your projects by your own. You can contribute to reviews, so anyone who wants to contribute is always welcome and more project integrations for upper constraints. Some of the resources for requirements that you might want to have a look at, so we are on GitHub. You can contribute to get it reviewed, so if you want to see what we are doing over the next couple of, over the cycle, then we have a to-dos list. We weekly meet on IRC on Wednesday. The timing will change a bit in this cycle, so it's around 11 UTC, and we are always available on OpenStack Requirements IRC channel, so if you have any queries, feel free to drop by and... Thanks a lot. Any questions, anyone? Any questions? Nope. No. Okay. Thank you. Thank you.


and the person with the most cash and property value wins. This is faster than the standard game, which continues only until one player remains. All right, you all ready? Yeah, yeah. Should we, unless you- And we also rolled- I'm the penguin. I'm the battleship. I'm the battleship. I'm the battleship. I'm the battleship. He's one of those. Are we implying the snooze you lose rule? Wait a minute.  I'm at St. Charles. You're St. James, I'm powerful. You're lucky. I'm sorry, I last talked about you for no reason. That is- Jesus Christ Simon, oh my God.  No. OK, I'd love to keep that. You're the banker. Thank you, I know. All right, your turn, Simon. Eight landlords. Uh, 280? Can we just have a calculate out here? It's not snooze you lose, it's 12. Oh, OK, 12. I thought he's on- Yeah. No, he's on Virginia. Yeah. So he gives me 12. I thought you didn't notice. I did notice. You didn't notice. That you're really counting your money. I'm not too busy counting my money. I'm never too busy counting my money. That's all that I thought. I wonder why, because I don't have enough money, all right? I never have enough, never satisfied. Six. Nope, take it in turn. Come on, quickly, quickly. Hurry, hurry, go, go, go, go. Take the turn. That's you, Simon. I just went, it's me. Pay attention, Simon. My bad, guys, it's always you. Three. Which one are you? One, two, three. Three, five. Nothing happens. Three, five, five, eight. And nothing happens for some reason. Don't even- I'm chillin. Marvin Gannins. Two, ten. Two, ten. Sold to the gentleman for two tons. Marvin Gannins. Your building loan matures. Collect 150. You have no buildings. But it doesn't say I need a building. I'm joking. This is a joke. We have fun. This is a joke. Advance to St. Charles, please. If you pass, go. Collect 200. Would you like 200? All right, St. Charles, please.  Would you let me just- Yeah, I want the 200. I want the 200. I want the 200. I want you to- I could just give me the 10. You gross me out, man. My turn. Broken mistake. The controls. Utilities. Three, four, five, six, seven, eight, nine. You gonna buy it? You gonna buy it?  Yes, yes, buy it, buy it, buy it. You bought it, all right. It is expensive. It is expensive. But you know what? I am expensive. Four plus three is seven. There's always wrongly dice. I'm always wrongly dice. I'm always wrongly dice. You gotta be quicker, man. Blasting music like that in your neighborhood tonight, I proved go to jail, correct? What? I'm in jail. Ah! Wait, I don't think I got the card for North Carolina Abbott. Can you give him the card for North Carolina Abbott? You have it. No, I don't. Yeah, but I bought this in the beginning of the game. Oh, did you buy it and know? Oh, excuse you, Luz. All right, Luz.  I snooze, but you lost. I just bought, bought, you bought it. I'm gonna pay to get out. OK, paying to get out. Right, nice. Cool. I just want to make an announcement. You all have 10 minutes left. We're speeding it up. OK, we gotta go even faster. OK, just don't worry. OK, who's turn is it? I just went. It's Simon. It's Simon. He just went. All right, it's my turn. OK, five, six, five, five, one, two, three, four, five. Tennessee Avenue, that's my property. Yeah, all right. Damn right, it's my property. There was a terrible idea. He's got a monopoly. Great, thank you. Oh, true. All right, since it's been around, give me eight houses. Income tax. For some reason. Ooh, Virginia Avenue. What on earth is he going to pay me? Let's see. That's gonna be $900. $900. You also roll a double. So roll the doubles real quick. Well, I don't have the money. You have to sell your properties. Roll the dice. Roll the dice. Thank you. Four, one, two, three, four, Tennessee Avenue. You also have to pay a need to something. So sell your properties. Let's sell, sell, sell, sell, sell. Let's do it. Let's do it. Who wants to monopoly on the property? No, no, no, no. You sell them. You sell them. So that's $400. That's $350. Let me get out the calculator, but it's OK. All right, let's see here. I told you we should have a calculator. You did this to me. I told you. You're going to pay for it. You pay me first. All right, so you need $900. You want to sell the blues, right? You want to sell the blues? OK, we got $400. We got $400 plus $350. I don't even need to do the math. It's $750. $750, let's count the. One, two, three, four, five, six, seven, eight. Eight, Pennsylvania Avenue. You want to buy it? Go on once. Go on twice. It's up for auction. OK, auction.  All the way money. Mom and dad is. That's mine. You better pay me $24. $24? No. Whatever, whatever. Give it a change. No. OK, $10. Doubles. Two, three, four, five, six, seven, eight, nine, 10. As soon as you lose. Boardwalk, thank you buy the blue if you want. You want to buy the blue? $400. $400. Come on, $400, you want to buy it? Great, $500. And you get $100 back. He gets a boardwalk. All right, my turn.  That's still a lot. $9 is. He gave him park place. $9, luxury tax, $100. Not feeling so fine. You can take the $20. You rolled the dice.  Let's do it. All right, it goes up for auction. Let's start the bidding at $1. $1. $1. $2. $5. $5. $10. $10. $15. $15. $20. $100. $20. $20. $500. $500. $500. You're going to have $500. $500. $500 for the man with no money. $500. $500, you have to sell all your properties and pay $500. It goes to me. $150. No, no, no. He said $500. You have to sell all your properties. Who has accumulated the most wealth? It totally may. If it's not me, I'll scream. I have a total of $294. I can't count. You're using a calculator. Yeah. I need all the help I can get. Take capitalism, baby. One game. You only won one game. Did you get that first place? No. There's got to be a second. No. That's fraud. This is fraud. It's not fraud. You're still counting. What are you counting? 1, 2, 3, 4, 5, 6. Jasper is the winner. It has gained 20 points. Yes, bro. You just wins the whole episode. I knew it. I knew I'd clean up with Monopoly. You just can't. Yes. You're not going to give me 5. I want to see it. Jasper has won the game. You're not going to give me just what winning looks like. You only won one game. Winning looks like one game. You only won one game out of four. I won three. I won the most important game. I think I second place in final one. Yeah, that's right. That's right.  Walk off. You know, I've trained a lot for this. You're not going to walk in a lie. I've analyzed just about. Sportsmanship. Yeah. Bipolar guy over here.  She was a huge inspiration for this Monopoly game. So I love you, mom.


Hey, what's up guys welcome to the trending reviews I just want to start off by saying Merry Christmas to everyone if you don't celebrate Christmas Just want to say happy holiday season to you guys, and I hope you guys have a wonderful new year So I'm pretty excited for Christmas this morning I got the brand new iPad Pro and I've been wanting to get this since the day it came out I think a chance to do that. So I'm super excited right now I'm gonna give you a quick unboxing a couple of features that this thing can do a bit of the spec Overview and then just to set it up and see how it looks. So let's just get straight into it All right guys, let's go ahead and unbox this. So It's got a nice little pill that you can just Take off This is one of the most satisfying pots All right, so let's go ahead and open the box This is the 64 gigabyte space gray 11 inch iPad. So I'm just gonna go ahead Peel that out. Slot that out They have This thing is a butte now. Obviously you can get a lot of fingerprints on this as well So that's one thing to be aware of so I'll run through the specs in a second. What else have we got in the box? So we've got the user guide We've got the power plug So it is powered by a faster USB-C and I will be getting the keyboard and pencil with it Fairly soon. So keep an eye out for that. Okay, so just to give you an idea of what it comes with So you have the speakers here along the top you have the microphone input You have the power button there at the bottom You've also got loads of speakers there and you have the USB-C charging port and then on the right-hand side You've got the magnetic colder for the Apple pencil, which will automatically charge it as well as when you place it on there So on the back you do have that raised bump for the camera It is a 12 megapixel camera and you also have a flash there as well And then you also have the magnetic connectors there for the Apple keyboard at the bottom Now I like the feel of these buttons as well because they're very small. They're very thin Don't know if you can see from that angle. So They don't stick out too much. I want to go ahead set this up and give you guys a quick review All right, so this thing is beautiful it comes with a liquid retina display like I mentioned is 11 inch It's got an LED backlit multi-touch display It is 4k and the camera can record up to 4k at 60 frames per second like most Smart devices nowadays as well now the one thing that really stands out about this is its speed and it comes with the new A12x bionic chip processor, which is 64-bit architecture from Apple Probably one of the fastest things out there for any tablet right now And although I won't be using this much for the camera It does have a really good camera on there So it comes with 12 megapixels with f1.8 aperture and you can also do digital zoom up to five times as well Which is awesome now It doesn't have a home button So it's all swipe gestures and one thing I've really liked about Apple products is that the swiping and the gesture controls on the iOS has been so smooth and it's probably one of the best out there for any tablet now I'm going to give you a full review on the iPad Pro camera as well very soon So keep an eye out and subscribe so you won't miss that one So the first thing that really stands out on this for me is the design. It's just sleek It's got very minimal bezels on there as well It looks actually kind of bit like my TV downstairs, which is pretty much edge-to-edge screen So it doesn't come with any home button. So it is face unlock. I've just set it up So I'll just look at it Swipe up and I'm in so pretty smooth very seamless much like the iPhone 10s I've got really good experience using the iPhone 10s Max and it just resembles that pretty much on point The a12 x bionic processor chip inside is just super fast Now if you've ever got the Google slate tablet, which is also the next flagship tablet that came out around the same time as the iPad Pro You'll notice that there's a lot more lag in the OS for the Google slate and once you start using it more and more It will become such a hassle that comparing it to the iPad There is no competition. Apple will win 100% of the time So there's a lot of things what this iPad can do now. I'm going to use this for my Work laptop and see how that goes for the couple of weeks Now I have ordered the Apple pencil and the Apple keyboard to compliment this Christmas gift I received So I'm going to be using that as my full-time work laptop And I'll give you guys a two-week review on how that's gone So make sure you subscribe so you won't miss that one, but that's really it guys So I'm going to give you some really awesome videos. I'm going to use Final Cut Pro on this for video editing I'm going to connect some external hard drives through USB C and start importing videos to see if that works I'm going to connect Apple TV to the iPad Pro See if that can stream Netflix and Amazon Prime and all that kind of stuff. So some really unique videos coming out I'm going to test on this I guarantee no one else is doing those tests and I'm sure you're going to like it So other than that, I hope you liked the video if you have any comments do drop them down below again I hope you guys have a very good Christmas and a very happy holidays, and I will see you guys very soon. Take care


What you can do and what you cannot do, nobody else can decide for you, nor can you decide. Because when we say what you can, we're talking about capability. Capabilities are never stagnant. Capabilities can be constantly enhanced, isn't it? So there's really no limit as to what one can do. Because capabilities can be constantly enhanced. It's better to look at it in terms of, am I holding myself back for concerns other than what I want? Many human beings, you have seen people whom you… who are historically known as great beings, this is all that happened to them. They were living with a limited identification, suddenly for some reason some event broke their identities and suddenly they identified with a larger process that was happening around and they did things that they themselves could not imagine. For example Mahatma Gandhi, a very limited man, he could not make a living. He got qualified as a lawyer. I remember what he wrote when he… when he went out to fight his first case in the court in India, he says, I stood up to argue my case and my heart sank into my boots. This was his expression and of course he lost the case. Then he decided this law is not for him. He must seek some other profession because he doesn't have the courage to stand up and speak in a courtroom. Does that sound like Mahatma Gandhi? The man just moved millions of people, just one incident. Suddenly his old identities broke. He went to South Africa to make a living and he was doing okay as a lawyer and one day he bought a first class ticket in a train and got in and he travelled some distance in the next station somewhere, another white South African got in and he didn't like brown skin men sitting in a first class. So he called the ticket collector. Ticket collector said get out. Mahatma Gandhi said, I have a first class ticket. He said, it doesn't matter, just get out. He said, no I have a first class ticket, why should I get out? So they threw him out of the train. His luggage and everything they just threw him out and he fell on the platform and he just sat there for hours. Why did this happen to me? I bought a first class ticket, why am I thrown out of a train? Suddenly he identified himself with a larger predicament of the people. Till then his survival, his law, his making money was all important. Suddenly he identified with a much larger problem that existed and he became a colossus. Just broke that little identification and moved into a much larger identity. Probably there has never been another man on this planet who moved as many people as Mahatma Gandhi moved. It's such simple ways.  Never before another conquering force on the planet has been made to vacate the land where they had taken roots without firing bullets at them or killing them or anything like this. Never before such a thing has happened. People who have conquered the land have conquered at a certain price. They won't go easy. They won't go easy. But it was made to look as if they went easy. It didn't happen easy but without fighting, without bloodshed. Because the man could move people into that kind of action but a kind of passive action. See shooting at the soldiers who are carrying guns is one thing. Throwing bombs at them is another thing. But just going there, standing on the street and willing to be beaten down on the heads with cracked skulls you fall down one line of people, fall down the next line of people come and give their skulls to be broken again is a completely different kind of strength. It's not easy. It takes a very deep inner strength for a person to do that. Dying in fighting is different. You're also fighting, somebody else also is fighting with you. You get killed, that's a different thing. Without fighting, just going and getting killed is a very different thing and that's what he managed to do and all that happened to him was from his small identity of himself and his family and wanting to make a living, his identity just exploded identifying with the larger problem of the people that was there at that time. So don't put a limit on yourself as to what you can do and what you cannot do. You do everything that you can do. What does not happen is what you could not do. Isn't it? What did not happen is what you could not do, isn't it? But you did everything possible, everything that you can imagine. Still some things didn't happen. Those are things you cannot do.


NeoFetch is a sure sign that you've been posting to Unix porn, or at least that's what I've kind of always thought about it. And the thing is is that a lot of people use NeoFetch. Most people don't really do anything with it. They just use the standard configuration file and go about their day. They don't think about their NeoFetch all that much.  And you have discovered that there is, in fact, a configuration file that you can do all sorts of things with. So today, what I wanted to do was take you through some of the stuff that NeoFetch can do inside of its configuration file and just kind of show you how extensible it really is. So let's go ahead and jump into that. But before we do, if you leave a thumbs up on this video, I'd really appreciate it. It really does help the channel. So NeoFetch looks like this. If you've ever seen a terminal on Unix porn, it probably has had NeoFetch inside it. Now, this is not the standard configuration of NeoFetch. This is my personal configuration that was created by someone on my Discord server. This is for whenever I'm doing a challenge, I can have the challenge kind of counting down inside of my terminal. It's really cool. And you can kind of see from this that it is quite extensible because the standard one looks like this. There's nothing wrong with the standard way that NeoFetch looks, but it is highly customizable. So if you are interested in changing the way that it looks, I'm going to show you some of the things that the configuration file can do. So the standard one has an ASCII art on the left-hand side and on the right-hand side, it has an output of some of your system information. So it has the operating system, the host, which is usually going to be your motherboard for some reason. And then it has the kernel, uptime packages, shell resolution, desktop environment, window manager, theme icons, terminal, CPU, GPU memory, things like that, right? And sometimes you'll find configuration files that have other things as well. So things like the currently playing song through MPD or NCMP CPP or something like that. Or things like the IP address. Now, if you're going to be using someone else's configuration file, you always want to kind of make sure that you've read the configuration file to make sure that it doesn't have information you don't want out there. So if you don't want your public IP out there, maybe you'd want to change that line. So the standard configuration file, once you've run NeoFetch for the first time, is located in .config slash NeoFetch, which is this path right here. Now, if I do an Alice here, you'll see that I actually have one called config.default. The standard configuration file is config.conf, but that is the one that I'm using for my regular NeoFetch, which looks like this, right? So I'm going to show you the default configuration file, which looks like this. Now this initial section, the print info section, is the section that determines the things that are outputted when you run NeoFetch. So each of these lines here correspond with a line in the print info section. So if you wanted to make it so that the host isn't displayed, you can delete that, or you can comment it out. So comments are with a hashtag, so just like that. If you wanted to make sure that the host wasn't displayed, you could comment it out or delete that line. Same thing if you wanted to have the window manager theme gone or the icons and themes and the terminal font, whatever. You can delete those, and it also gives you options for things that aren't there by default that you can enable. So for example, the disk section would display free space on your disk. The battery would show the free percentage or the charge percentage on your battery. The song will display the currently playing song when NeoFetch is run. It also has several other options as well. Now you can, if you wanted to, create your own items to display here, and I'll show you some of that later on once I show you my actual configuration file. But let's go ahead and jump into the rest of the config here. Each of these lines has a corresponding section below it. So for example, the kernel section right here gives you some options over how the kernel is displayed, whether it's displayed at all, whether it is shown regular or in shorthand, and things like that. Some sections are kind of light on options like the kernel, whereas things like the memory has several different options that you can configure. So how it's displayed in terms of percentage, whether you're displaying it in megabytes, kilobytes, or gigabytes, things like that. If you go to the CPU section, the CPU section has many different options for you to configure, things like how the actual CPU is displayed, whether it shows the brand, whether it shows the CPU speed, and so on and so forth. There's actually several different options here. They also allow you to show the temperature. So if you wanted to show the temperature of that particular CPU, it could do so. Same thing for the GPU. If you wanted to show the GPU information, you could do that. And there are several different options here for you to configure how that is displayed. Now what I wanted to do next was actually show you a couple of the sections that I considered the most customizable for me. Because honestly, what you're wanting to do probably is change the ASCII art. Now the ASCII art here by default is usually the logo of the distribution that you're using. And it doesn't have to be that way. So if you go down and search for back-end. Now this section here is dedicated to all the things, how it displays that image on the left-hand side. So the first part is the back-end. Now by default, it is set to ASCII. And if you are wanting to display your own custom ASCII art, you'll leave this as ASCII. But there are several other options for you to choose from. Most of them are going to be terminal specific or display ASCII art in certain different ways. The one that I'm going to show you today is going to be Kitty. But Kitty's going to work the same as W3M and Ubersug.  So I'm going to change this image back in here to Kitty. Because I'm using Kitty, it's the terminal that I'm using. If you're not using Kitty, you can use W3M which is going to do the same thing or Ubersug. Which you'd then have to install. Usually W3M is already installed. The Ubersug probably is not. There is a problem with that particular program in that it is abandoned. But there's one called Ubersug++ which is currently being developed and is available in quite a few repositories. I know it's in the OpenSUSE repositories. And you can download that. And it actually works drop-in replacement for Ubersug. So you could use that instead.  Now by default, it's set to Auto. And basically what Auto means is that it will pull in the ASCII art for the distribution that you're using. So for me, I'm going to actually change this to a path to an image. So I'm going to do like so images and then favicon.png. Like so. And now I'm going to open up a terminal. Now it still showed my own configuration file because that's what's default for me on my system. So if I wanted to run from this particular configuration file, I'll zoom in here so you can actually see, I'll run neo-fetch-config and then the path to the configuration file. So this is usual for if you want to have different configuration files for different things, right? If you have different setups for whatever, you can point neo-fetch to a specific configuration file. So in my case, it's going to be dot-config. If I can spell and config neo-fetch-config.default is the one that I wanted to show. And if you run that, you can see now that it uses my icon instead of the ASCII art. So that's how you actually go and use your own image instead of the default. And that's I think probably the customization that most people want to do. You can also have it so that if you wanted to change your own to your own ASCII art, you could do that. Like I said, you would leave the backend set to ASCII and then you would point the image source to a text file with that ASCII art inside of it. So you just create a text file, paste the ASCII art that you've created inside of it and then point image source to that particular path. And then it would show your own personal ASCII art instead of the default one. So I'm going to actually go here and I'm going to undo that and I'm going to undo that and then I'm going to show you the next thing. So by default, there are actually, I'm going to close this so that this looks a little bit better. There are actually some options for how that default ASCII art is displayed. So the probably the best example of this here is this section here. Now, by default, ASCII underscore distro is set to auto. Now, if you wanted to use some other distros ASCII art, you could do so. So if I wanted to say right now my open source is a tumbleweed, but I could change this to Ubuntu like so and then run that thing here and it would actually show the Ubuntu logo even though I'm on openSUSA. I could do that if I wanted to do that for some really weird reason. But really what this section is for is that in some cases distros have alternatives. So if you wanted to, for example, use the openSUSA small version. So by default, the ASCII art looks like this. If I change this to open SUSA, if I can spell which I can't underscore small and save this and then run this again, you can see that it actually changes to a different ASCII art. And all of these distributions right here have options for smaller versions of the ASCII art. So if you wanted to change to that small version, you'd come to this section here, do ASCII underscore distro, change it to the distro you want and then underscore small. Now obviously not all distributions have small versions, but you could create one and point it to your own file if you wanted to. The rest of the configuration file, or at least most of it, is going to be dedicated to colors. So by default, the NeoFetch will actually inherit your colors from your terminal and I find that that's usually the best way of doing things. But sometimes you want to get creative and create your own. Every single option that is displayed can be changed with the colors inside of this particular file. So you can change what the color is for the ASCII art. You can change the color for all the display output of your system. You can change the colors of the lines for the color palette as well. All of that stuff is configured right here inside of the configuration file. And then there are some options for if you are using an image. So if you are having problems where your custom image isn't showing, you can change it so that the terminal will constantly redraw it over and over again. You can also change it so that the thumbnail is in a different position, a different spot. You can change the crop mode. So this is where you change the size of the image that you put in there. And there are just a whole bunch of different options here in the configuration file. So I highly recommend if you are going to be interested in customizing your NeoFetches to hop into the default configuration file and just kind of play around. Because each section as you can see is very well commented. It tells you exactly what it does. It shows you all of the potential options that you can use for that particular option. And then a lot of times it will actually give you a link to more information if you need it. So if there's a lot more information to be had, you can click on the link and actually go get that information. If you are customizing this and you just kind of mess around, just know that if you make some changes, make backups of the configurations that you like. That way if you need to go back, you don't have to go kind of hunting for those particular options. Because the one thing that I will say about this is that the configuration file is long. Now granted, a good probably 50% of it is comments. So you could shorten that up by taking the comments out, but it's almost 900 lines long. So it does have some impediment to actually finding things if you don't know what you're looking for. So that's the default configuration file. Let me show you mine. So again, this was created by someone on my Discord server. And I'm just going to show you some of the things that NeoFetch is actually capable of beyond what's in the default configuration file. So you can set variables inside of NeoFetch. You can use let and diff to perform calculations and then display that output. So in this case, the configuration file that I'm using is displaying the time until my challenge ends and the number of days that I've been using this particular distro. So that does that. And then in the print info section, which is the same as the other one, it just displays all of that information but in a very stylized format. So it has all these lines and has the icon. So someone asked in one of my shorts is how do you put icons inside of the NeoFetch config? Well, this is how. All it does is it just uses the info, which is we saw before in the default configuration file, and then you just paste the icon that you want wherever you want it to be. So if you want it to be next to the OS, you just put the icon there. Same thing with the D window manager has an icon there, right? You can put as many icons as you want. You just go, you would put those right in this file. Now, if you wanted to find those icons, you would go to something like nerd fonts or awesome font awesome or something like that, get the icon there and paste them here. Now, your terminal does have to be using that font in order for those icons to show up.  So another really cool thing that it can do is that if you wanted to, you can use other things like bash built-ins inside of the NeoFetch configuration file. So you can use Echo here. AUK is here, which is not a built-in. It's its own program, but you can use AUK. You can use print and all that stuff. And it just uses the variables that were set above to perform operations and display specific information. So if you wanted to use some bash script like operations, you can do so. You can even use if statements if you wanted to do such a thing. So the limitations on the NeoFetch configuration file are really up to your skill level. So if you wanted to do any of this stuff here, all this stuff was beyond me, someone else created this. But you can see that it allows you to basically do whatever you want, which is pretty cool. So the last thing that I wanted to show you was this particular project right here. It's called NeoCat. Now, NeoCat is a NeoFetch theme pack. And they have... I'm not actually sure how many that they have so far. It's like 30 or 40 different NeoFetch themes that you can choose from. So if you were to download this repository, which I have done, you can see that there are large themes and small themes. Now, basically what you want to do is before you even get into this, you want to go into your .config NeoFetch and back up your current NeoFetch configuration file. So I'm going to cpconfig.conf into config.mine so that I actually have that. Because if you run this script in the... So let's just go into the small themes here. So here are all the small themes that they have. So if you wanted to try these, you just do .slash start.sh. And it's going to ask you which one that you want. And you can just try these. So I'm going to try the, let's say, the giraffe one. So I'm going to try been 21. And then it's actually going to run that particular NeoFetch. And what it has done is it's copied that configuration file as you the output of a giraffe into the place where it goes. So in .config slash NeoFetch it copies that. So if I were to run that again and type in 13 for the truck, it would then run the thing and it will show you the truck, right? And it has, like I said, a couple dozen different configuration files. But you'll want to make sure you save your old one so that it doesn't get overwritten. Because it does not do a backup on its own.  NeoCat basically just gives you an option of some preconfigured NeoFetch configurations that you can use. So you don't have to do anything on your own. I've used this for quite a while. If you saw my videos a couple of weeks ago, I was using one with a little kitty cat. That one came from NeoCat as well. So you can use that. There are small ones. There's large ones. And there's quite a few options for you. So that is NeoFetch. And like I said, that was not a comprehensive line by line explanation over what the configuration file can do. But I've showed you some of the options that it can do. I hope that this video was interesting. If you liked it, make sure you leave a like on the video. I really do appreciate that. If you have comments on NeoFetch, you can leave those in the comment section below. I'd love to hear from you. You can follow me on Mastodon. Obviously, those links will be in the video description. You can support me on Patreon at patreon.com slash the Linuxcast. Links for PayPal and YouTube will be in the video description as well. If you want to support me there, thanks to everybody who does support me on Patreon and YouTube.  Without you, the channel just would not be anywhere near where it is right now. So I think it's a very, very much free of support. I truly do appreciate it.  Thank you so very much. Thanks everybody for watching. I'll see you next time.


So we're filming at the Goshen set in Utah that's owned by the church. This is the same set where they filmed the Bible videos. We're really honored to be here. It's a beautiful set and I think we're worthy of the type of video we're trying to produce celebrating the birth of the Savior. Okay, cut. Good job, man, good job. We're going to reset. We're doing good. The question that I had and maybe others had from the beginning is why did we need to create another version of the nativity. But the more we fleshed it out, the more that we saw the opportunity to explore some of the history and some of the context of the time in ways that we haven't seen before. Sometimes this story is told with a certain amount of pageantry and formality that I think in this production we're trying to get at the reality that these were real flesh and blood people that were living their real lives in a real place and that this event actually happened. That's become really important for me, these two people, Mary and Joseph, and see them as real people experience something extraordinary. Details that we have just a single line about in Luke 2 or in Matthew that felt like could be more than what's been represented on film up to this point. I think the Christ child got as close to first century reality as any film that I've ever seen. It's really a massive undertaking, but it's worth the effort because of the story we're telling. There's nothing that's been of more importance to the world than this gift that we celebrate at Christmas. Jose, whom have I eaten? Our approach into this nativity story was just trying to capture moments between Joseph and Mary and so that's how we started building it. It was these building blocks, what moments would be really important for us to see in ways that we perhaps haven't seen before that felt fresh or new in ways that would help us understand the story in a more meaningful way. These two actors genuinely connect and you're just immediately drawn in from that very first glance at her in the doorway, you just went, wow, this is great. This is what human life is all about, relationships, interrelationships and it was just beautiful to see the humanness come out of the story. We also wanted to tell Joseph's side of the story.  He had at least two heavenly visitations that we know of and he had a role to fill and he filled it and we wanted to bring that story to life in a way that hasn't been done before. I know any time we work on this everything revolves around my love for Mary, every step I take, every thought is inspired by her and what I can do to protect her and to help deliver this baby. I would just say play this just a little bit more like awkward. One of my favorite moments is when she's going into labor, she signals to Joseph, Joseph is panicking and trying to find some place they can go, Joseph goes to help her up and she shrugs him off for a little bit. He's really wanting to help her and he grabs her hand to take her, but she can't move, she can't go anywhere because she's experiencing a contraction in that moment, but as soon as that contraction is gone then they just have this window of time where they can make their way back into the cave for some privacy before another contraction hits her. I love that moment so much. I definitely tried to tap into who I felt Mary would have been, she was incredibly strong to have gone through this and be so young and to just accept what God was telling her was going to happen. You know that takes great bravery and strength. Mary's Lullaby wasn't in the original script, it was something that actually came up during the filming process. Mary's Lullaby was one of those things where sometimes you get on set and something happens or an idea comes or inspiration and guidance comes. We were in the middle of filming and one of our scholars was on set having a discussion with some other people about Mary. That she was really knowledgeable in the scriptures and knew the Old Testament. In Luke 1, the King James Version says that Mary said, as she uttered the Magnificat, but the translation is that Mary sang. So the idea just popped up, she should sing, why don't we have her sing like a mother would sing a Lullaby to a baby. As we discussed with the historians, the song that she would have sang would likely have been a Psalm. So the creative team went to the Bible and started going through Psalms, trying to find something that would be appropriate. Looking in my iPad and turning to Psalm 27.1, which said, the Lord is my light and my salvation. Whom shall I fear? It was a great scripture, it was in theme with what we were trying to do, the story that we were telling with this light coming into the world that felt very appropriate to the moment. And so we translated that into Hebrew. We went to the actress and told her that we had an idea. Unbeknownst to any of us, Brooklyn MacDaris, who played Mary, was a professional singer. She's a wonderful singer. She was very open to the idea. She went through, looked at a bunch of hebriistic music forms and actually improvised the melody. The next night when we came to shoot that scene was the first time any of us heard what she had come up with. And it was so sweet and so beautiful and so appropriate. What turned out to just be a spontaneous idea became, I think, a real emotional center point for the film. In the King James version of the Gospel of Luke, right after Jesus is born, the text says they laid him in a manger because there was no room for them in the inn. For us in modern English, when we read the word inn, we're thinking of a hotel. And so the idea comes across in film often that they're frantically knocking on hotel doors, but there are no rooms in the hotel so they get turned out and all they can find is a cave outside of town for Mary to give birth. Now that word inn is actually a translation of the Greek word kataluma. That Greek word actually means something more like guest chamber. One thing that is nice about this script is that it goes past that traditional view and goes, I think, a little bit more accurately towards the scriptural account. There's nothing explicit in the text, but it's more likely that they went to a residence that they're familiar with, perhaps some extended family that lived in the area, and that they were welcomed into the home. So when we see Joseph and Mary enter this place, the main level is full, Joseph goes upstairs, that too is full. There's literally no room for them to really kind of bed and make themselves comfortable. The ancient world humans had very close contact with animals, so they go for area of privacy into the back area where the animals are kept. Because the stories of Jesus' birth are so different in the Gospel of Luke and the Gospel of Matthew, Christians have long tried to figure out how to fit the two stories together. One of the things that I was very excited about when I first saw this script was that this portrayal of the birth of Jesus did not harmonize the accounts of Matthew and Luke, but instead separated out the events of Luke chapter 2, which is kind of the first act, and then it transitions over to Matthew chapter 2 as kind of a second act, so that rather than artificially blending them together in a harmony where we have Luke's shepherds and Matthew's wise men all together in the scene at the same time, which is often done in traditional films, that we separate those accounts out a little bit and so that we can get to know the story as Luke tells it first and then transition over to the story as Matthew tells it. One of the things that we explored in this film are how the shepherds react and who those shepherds are. In our research we learned shepherding, it wasn't just for men, it wasn't just for old men, and that was just something that we wanted to make sure we captured. And so we brought a girl in, one of our shepherds, and she ends up being one of the featured shepherds in the story. We had this wonderful moment where the shepherds come in, and this young shepherd girl who would have been about the same age as Mary, they just have this moment of connection, of realizing this togetherness and this the magic of this moment that just happened. So I really wanted to just tell the story visually and just rely on actions and reactions of people, and if there were dialogue just have it be very sparse. And because of that it got us thinking about maybe we could do this in another language. The language of the time would have been Aramaic, so that was a challenge because that's a dead language now, you know, who speaks that. But we found a scholar out of Minnesota that does translation work and still works with that ancient language that was able to help us. I'm David Calabro. I work at the Hill Museum and Manuscript Library in Minnesota. Mostly I'm working with Joseph and Mary and with the wise men, the lead wise men and some of the extras. What I'm having them say varies depending on the situation, so Joseph and Mary have relatively speaking a lot of lines. I'm lucky enough to have a mother from Israel who spoke fluent Hebrew and spoke it in the house, and so I speak fluent Hebrew, and there is a lot of overlap between Hebrew and Aramaic, because Aramaic borrows from Hebrew and Arabic and some Greek, so incorporating that dialogue in that text of Aramaic was fairly easy for me, but not so much for others. By having it in Aramaic and not having subtitles on the bottom, it really does pull you into the story and it makes you pay closer attention to what's really happening, and along the way you're asking yourself a lot of questions but you're getting a lot of the answers as you're going along the journey. Kudos to the actors for doing as well as they have. For me, it took 15 years of college to learn this and they have three days, so. So Matthew chapter two actually doesn't give us a whole lot of detail about the wise men. It simply says that a group of people that it calls Magoi come from the east. The Greek word Magoi could be translated as magician or astrologer. It often is a word that's used to describe somebody who is a priest of another religion, of a non-Jewish religion. The tradition that there are three wise men comes from the fact that they offer the baby Jesus three gifts, gold, frankincense and myrrh, but there's nothing in the story that tells us precisely how many wise men there were. When the wise men finally appear in Bethlehem, they are led somehow to the home in which Mary and Joseph are living and we don't know how old the baby or the infant Jesus was, but once the wise men find this home and they come to the child Jesus and present their gifts and then eventually they move on when Herod finds out about the birth of this child who some believe now is the Messiah, of course he issues a decree and the decree indicates that he has every child two years old and under slaughtered and that slight hint right there has suggested to many scholars that Jesus could have been as old as two years old when Herod issued his decree. We knew we wanted to tell a bigger story of the wise men and how they must have felt, you know, after however many years of waiting for this sign and seeing it and being committed traveling, who knows how far across their world to then what that experience would be to actually meet their savior face to face. I mean all we have in the scripture is that they fell down and worshiped him and you know, what does that really look like? When we're watching a film where we're trying to find characters that we relate to that we connect with so that we can experience the story and the wise men does that in this moment. We all kind of ask ourselves the same question what would we do if we were in the same position? Would we be able to speak? What would we say? How would we act? Daz's performance really does call that out of us and makes us imagine and makes us feel that moment together. The emotion was just all there and just his feeling and everything coming together.  He'd been with King Herod. He was powerful. He was literally at the top of his game and then the contrast between that earthly king and this young boy, wow, must have been like that. We really wanted to give a gift to the world that testified that this happened to real people and that savior really was born in the world in fulfillment of ancient prophecy to come and bring light and ultimately bring salvation to the world and that's what we hope this gift will bring. We hope that people will use this video to flood the world with the story of Jesus Christ. This has the potential of being a Christmas tradition every single year to talk about and show and remember the birth of the Savior Jesus Christ.


That's good news. Our missing submarine is located. Of course, it's on the bottom, but now we can send DSRV. RV. Deep Submergence Rescue Vehicle. It works. Of course, they're already working. The DSRV crew. They're on alert, ever since that submarine was overdue in filing a check report. They can be alerted after a known accident, or when contact with a submarine is lost for an extended period in an organized exercise, or when there is reason to suspect that a casualty has occurred. But this time, the sub didn't report, and DSRV is ready, just to be sure. Every system is groomed for maximum readiness. Pre-selected mission equipment is checked and loaded for transit. Briefings are held. All 15 of the DSRV crew are working hard. A successful rescue requires a lot of teamwork. They're part of the team. This fiberglass skin is for hydrodynamic streamlining only, and is free-flooding. Inside, three connecting pressure spheres, each seven and a half feet in diameter, hold the controls, diving crew, and rescues. Most of the systems and units are in smaller containers in the free-flooding areas, four and half. These containers are pressure compensated. The response phase starts when the DSRV is ordered to move. Depending on the distance to the disabled submarine, the dissub, DSRV goes directly from its own waters, or is moved over land to a port with proper facilities nearer the distressed sub. But in this case, that sub is remote, and the DSRV must go to an airport for airlifting. The basic coordination is part of the rescue system, and was worked out long ago. The military airlift command of the U.S. Air Force provides the three C-141 aircraft for the airlift. As soon as a submiss is suspected, the Air Force is alerted. They are important members of the team. Simultaneously, the nearest nuclear submarine, modified to be a mother sub, is shifted from previously assigned duties and directed to the remote port. The mother submarine has many special equipment and systems, which were installed long before the emergency arose. At the same time, its crew received special training. They also are on the team. The DSRV and all its support equipment are en route to the remote port. These remote ports around the world are pre-selected. They have adequate piers, cranes, etc., with a nearby airport having appropriate runway widths, lengths, and loadings. These required facilities are checked out. Even the roads from the airport to the pier are mapped, considering width, overhead clearance, and corners that the land transport vehicle can negotiate. The DSRV is about 50 feet long, 8 feet in diameter, and weighs 35 tons. One C-141 carries the DSRV. Two more C-141s carry the support band, skirt and mother sub pylons, auxiliary equipment, and the DSRV crew. At the remote port, a United States representative makes arrangements to receive the rescue vehicle and its support equipment. And move them from the airfield to the port, and takes care of all customs and logistics problems with the help of local officials. Of course, the people first on the scene are still working too. They're vital members of the rescue effort. They're sending back information on subsurface topography and temperature profiles, wind and sea conditions, currents, existing weather, and the long-range forecast. Now, it all comes together. Part of the mother sub's special equipment are TV cameras, which observe the DSRV when it's piggyback on the sub. Once loaded, the mother sub and DSRV head for the search area. On the surface, they perceive its speeds limited mainly by the sea state, or they may move at 15 knots submerged. When the DSRV arrives at the scene, and the search force narrows the location of the distressed submarine to an area 6 miles in diameter or less, the rescue operation shifts to the localization phase. Sonar men on the mother sub are listening, because the crew on the dissub are also working. They too are active in their own rescue effort. They're helping the localization phase with the distress pingers, underwater telephone, submarine sonar, and just simple hull tapping. On board the mother sub, other rescue system operations continue. Before launch, responsibilities of the first crew are study the available data and develop an operating plan. The alternate crew aids and participates. After developing the plan, the operator and co-operator go through their checkout procedure. And the other crewman takes care of his pre-launch duties. The vehicle's effective search speed is 1 to 2 knots. The DSRV uses the plan navigation course, dive angle trim, speed, and active passive location procedure. Refined information from the onboard sensors may change the original plan. Using its integrated navigation system and sonars, the DSRV navigates in relationship to the search target, fixed navigational points, or the mother sub. An onboard central processing computer integrates the data from sensors and controls, monitors all vital vehicle functions, and provides information to the operators. The vehicle's intercom links the three spheres. Speech and other data are recorded. The DSRV also has a UHF radio for communications while on the surface, and underwater telephone for communicating while submerged. It communicates with the mother sub at regular intervals, relaying additional data. All significant sonar contacts are reported immediately. Sonars are used to locate the dissub by watching for returns from the submarine's sail or hull. Directional listening hydrophones may be used to listen for sounds from the bottom submarine. When the sub is located, the mission moves into the rendezvous phase. The DSRV homes on the distressed submarine with assistance from the dissub if communications have been established. Rescues can be accomplished with a passive disabled submarine. However, the dissub can provide information to help the rescue mission. If communications have not been established with the dissub, the DSRV will determine the extent of damage. For visual observation at close range, the vehicle has five viewports and six television cameras, as well as external lights and film cameras. The DSRV fixes the dissub's position. The vehicle is equipped with two releasable miniaturized homing transponders, HTs. The vehicle returns to the mother sub if time does not allow initial mating on the first trip. Propulsion and control are provided by a stern propeller within a movable control shroud and four ducted thrusters to control pitch and yaw. The DSRV has a sprint speed of 4.5 knots and a maximum sustained speed of 4.1 knots. In mating to the mother submarine, the various ballast systems are adjusted for a neutral attitude. The DSRV eases onto the pylons at near zero velocity. Then, it notifies the mother sub when the pylons and mating skirt have positive contact. The mother sub crew verifies that the DSRV is in position and actuates the pylon latches. For the first rescue trip, life support supplies must be replaced, batteries recharged, etc. Crew substitutions can also be made. The mission moves into the rescue phase and the DSRV returns to the disabled submarine for mating. The final approach to the submarine is made with the shock mitigation ring lowered. The DSRV hull withstands an impact up to 85 100ths of a foot per second, but the shock mitigation assembly withstands impact up to two feet per second. The vehicle sets down on the hull of the sub, then the manipulator clears the hatch. First, the messenger buoy cable is cut, then the manipulator's water jet clears any debris from the hatch area. Mating begins with the DSRV aligned to the hatch and with the shock mitigation ring extended. When centered over the rescue seat, the shock mitigation ring is retracted and the dewatering pump in the skirt is started. As the water is pumped out, a pressure differential is created, pressing the DSRV against the sub, ensuring the seal. Now, compartment pressure becomes important. The pressure in the forward control sphere of the DSRV is maintained at a constant one atmosphere. However, the pressure in the mid and aft spheres is variable from eight tenths to five atmospheres to match the pressure in the disub. When the pressures are equal, the hatches separating rescuers and rescuers are opened. Next, if they are needed, the DSRV offloads supplies such as oxygen flasks or carbon dioxide absorbent canisters. Water equal in weight to the rescuers is discharged from the DSRV's rescue ballast bags into the disub's bilges. Now, the rescuers are loaded on board. Twenty-four rescuers are carried each trip. Normally, six trips evacuate a nuclear submarine. Separating is essentially the reverse of mating. Upon return to the mother sub, if the rescuers require decompression, the DSRV is mated a fort ships to the forward hatch to offload rescuers into pressurized compartments, then moves to the aft hatch for replenishment. When the last rescuers aboard the mother submarine, the mission begins the return phase, and all the support equipment is returned to rescue unit home port. This return is normally the reverse of the response phase. The DSRV can also work from an ASR-21 submarine rescue ship, which is equipped with decompression chambers and other deep diving systems. The Catamaran ASR launches and recovers the DSRV through the center well. The DSRV may be supported by a ship of opportunity if a mother sub or ASR are not available. The DSRV has many safety features. In the event of entanglement, the manipulator can be jettisoned, as can the downhaul winch and the pan and tilt TV units. All ballast can be released to increase buoyancy. There is an independent emergency power system, an emergency breathing system for each sphere, and fire extinguishers in each sphere. That's the way this team makes a rescue mission work. Every phase successful, alert, response, localization, rendezvous, rescue, and return is recover the people. That's what DSRV does.


So, I'll be honest with you, I just don't feel like it today. Just don't feel like making this video.  But, you know, for sales calls, I think, you know, coaching calls, we could say, not sales calls. Because that gives the wrong perception of what it is. You know, tons of work, tons of coaching, like five, six hours I think of, And it just came back from a workout and long, long day of studying and business. Tons of stuff. I was barely eight today for some reason and I had such a chaotic day. I forgot to eat, just ate like breakfast and the fruit shake. I don't, and I don't feel like making this video. I mean, I feel like talking about not feeling like making the video, but I don't feel like making a coaching video.  This is me not feeling like making it. It's not that I don't have what to talk about. It's the opposite because after four coaching calls, believe me, I stacked the list of new topics I can give you. I want to give you, but I don't want to give them right now because some, I'm out. You know, it's late.  I still have 10, 15 pages to write. I still have to meditate. A lot of emails, a lot of, you know, contact requests. Like I said, the more activity you get, the more you need to do. I'm going to have to get an assistant soon again. So, you know, what, what do you think about me? Like, does it annoy you that I'm tired?  Have you stopped watching the video? Which is paradoxical because you're watching. Think about it. Why can't you show up when you don't feel like it? If I can make a video when I don't want to make a video, who said you can't work out when you don't want to work out, just do it.  Bam, you just meditate. You can still do all the things that you need to do. Even if you don't feel like it. And that's how you maintain consistency.   But, just like I said in the previous video, it's always better to do something shitty than to not do something at all. It's better to be seen and sucked than not be seen at all.  Because just, you're just thinking about me. I mean, it increases the chances that you'll contact me. Maybe you'll look at another video made. Does that make sense? Do you understand my point? The more time people invest looking at you, the better. Never skip consistency. Just because it's not as good as it's usually.   Hope you appreciate it. Hope you apply it to your life. Because I don't know if you've seen, but I'm growing pretty fast. China is growing pretty fast. Maybe we're up to like five or seven or eight, ten subscribers a day. I have to check it out. But the views, man. Watch time. New record. 26 hours of total watch time. Just yesterday. That means that for every hour of the day, people spent an hour and a couple of minutes watching my videos. Looking at this pretty face. Do you not think this is effective? Do you not think this leads to sales and money and wealth and fame? Whatever you do, even if you don't have any idea yet, you know, you're just a guy, a girl. You don't have any idea what to do with you. Get attention. Trust me. Sorry for ranting. Sorry for making this really awkward. Sorry for not having any sort of consistent, steady thing to talk about. But this is how I am when I don't want to make a video. And I still make a video. But I still give views. I still get attention. And tomorrow's video is going to be amazing. All five of them. So you're going to forgive me.  I'm out.