And today I'm going to talk about immutability and JavaScript. It's not about functional programming though. So I work with HelpShift in Pune. HelpShift has really embraced functional programming and the concepts of immutable data structures. Our backend is written in closure and at front end we use React and immutable data structure. You should definitely check it out. I came across this term, persistent data structures when I was working on a JavaScript application that was something like Google sites where the user would come and create a webpage using dragging and dropping a widget. So it had a Visivig editor and the requirement for us was to have an undo redo functionality. So my colleague, he knew about persistent data structures and immutable data structures and we tried to dive deeper into it. When we did that, we found out that yes, it gives you redo undo functionality, but that was just a side effect. What you actually get when you use persistent data structure is a lot of other advantages when it comes to writing applications, be it JavaScript or any language. So off late I started looking into what is functional programming, what is persistent data structure, what is immutability and stuff. And I would like to share whatever I've learned so far. So in short, these are the two main points that we'll talk about today. One is what is immutable data structure and how does it simply simplify the process of writing softwares. You'll also see how immutable data structures are implemented internally and how does it lead to performance. So I'd like to start with this code of sort, Rob Pike, who is well known for his work with UNIX and with Bell Labs. So he gave these, these five rules of programming, you know, programming in general. This is rule number five. So I'm just going to read this. So he says data dominates. If you have chosen the right data structures and organize things well, the algorithms will almost always be self evident data structures. But algorithms are central to programming. So people translate this to something like this.  So the point that I'm trying to make here is that data structure is something that is important when it comes to writing applications. And we should see if we can do better in terms of it, whatever we are doing today. So to touch the problem, why should we actually consider it and all? This is a text from immutable.js, you know, which we are going to talk about a little bit today. This is a text from the documentation. It says that, and I think we have heard about it during the talks over the last couple of days, much of what makes application development difficult is tracking mutation and maintaining state developing with immutable data encourages you to think differently about how data flows through your application. So the point here is that maintaining state of our application is something that we've been doing a lot. We spend a lot of time and effort thinking about how should we structure a database data and how should we, you know, organize? How do we react to state changes in the application? So there is another way to do things, which is this persistent data structure and immutable.js and, you know, all this concept of immutability. So we'll see how does it actually help, right? So just to, like, you know, set the context correct, this is the dictionary definition of immutable for people, you know, who are wondering what actually immutable is. So immutable simply means unable to be changed. So something that cannot be changed once you create it. So in terms of a JavaScript application, for example, you create a variable. You're not able to change it. It is there. It will just stay there in your application, wherever you try to access it from. So this is a concept and JavaScript actually already has few concepts, which are immutable in nature. String is one of them. So we'll just see, just to complete this definition, we'll just see what string, you know, how does string work in JavaScript? So let's say I create a string. I call it str and I set it a particular value in this case, one string called strings are immutable in JavaScript. And then I try to mutate it. The whole concept of immutability, the opposite of immutability is mutating, right? Something that can be changed. So let's say I try to mutate it. So I say str index of three and I try to set it to x, for example, or maybe I try to do a slice operation, you know, I apply slice function on this, pass on couple of indexes, right? And now if I log it to the console, the string that I created earlier, it's going to be the same.  But the string that we created earlier, the point is that the string that we had created earlier, whatever operation you do on it, use any framework library string in JavaScript would be immutable. You won't be able to change it. So not just strings in JavaScript, all the primitives, the numbers, for example. So let's say you have a number five in your application, every time you face your program encounters that symbol five, it is going to have the same notion. It cannot be changed. So yes, this is the concept of immutability. And you know, I talked about it can be good and, you know, it can lead to good things. But how do we actually use immutable data structures in JavaScript? Because JavaScript, even though it has primitive data structures, where we have strings and numbers and Booleans, the most important or mostly used components of our application are array and objects, right? So how do we use arrays and objects in JavaScript today with your application? So you can use a couple of libraries will today just talk about immutable.js. So immutable.js is a library written by Facebook. So it tries to mirror the ES6 sets maps, you know, ordered map order sets, and it has a JavaScript first API. So it is object oriented API. So you will not feel, you know, that you know, you're using something else, a new technology or something or a new library, so you will feel at home. It has all the object oriented like APIs that you can use. The only difference here is so every time you do an operation on a collection. So immutable.js gives you a good set of collection that you can use in your application. As I said, set map ordered set order map and stuff. So if you want to, if you do a mutation operation on a set or a collection using immutable.js, it is always going to return you a new copy of it. It does not return. It does not mutate it in place. It gives you a new copy of it. So that's the difference. So let's see, let's see a couple of quick examples of how would we have an object in immutable, you know, if you use immutable.js or any immutable data structure. So I declare a variable called map one and I say immutable.map is a syntax, simple syntax and I have three keys A, B and C and I assign it, you know, the values one, two and three. Now I try to, excuse me, now I try to mutate the object that I just created. So I say map one dot set B and 50. So if you had a normal JavaScript object, we would have done something like this. We would have got the object, you know, it would have got updated. But in this case, since it is immutable, you know, that's something that cannot be changed. We still get the same A, B and C with one, two and three. So the first map that I had created, it did not get updated. What it actually does in fact is that it returns a new copy of it. You know, it creates a copy, updates that and returns that, which we are, you know, storing in map two. So if I log map two to the console, I'm going to get the updated one, you know, what we intended to. So this is what you do when you try to mutate something, when you try to, because we cannot make an application where we don't, you know, we're not allowed to change something. It is weird, right? So this is how you do it, though, similar to the list map example that we saw list is also there, also known as arrays if you want to use it. So you create a list, you try to push three to the list that I had just created one and two. So if I do a push operation on a normal JavaScript array, it generally gives you an, it updates it, right? But it is not going to happen because it's immutable. And if I log the second list, it gives you the, the updated one, right? So it's cool, you know, a new concept, but why actually it is good?  Why should we do it? So why is immutable data structures good? So that's, that's the main point that I'm going to highlight now. So we touched upon the problem of mutation, maintaining state. So the biggest advantage that, you know, I can tell you is the state management is very easy when you work with immutable data structure. And what happens is that, you know, in most of the cases, we have an application, we have a state which is represented by some object nested object or something. And we react to the changes to the state, right? So what we do is we check if the state got changed and we do some operation based on it, maybe like we would re-render or we would make some database calls or whatever, some XHR. But we do something based on the state changes. So the most important thing here is to understand if the state got updated or not, right? So immutable data structures work differently when it comes to doing this. So the concept of equality comes into picture. It has a very simple concept of equality. I'll just compare it with the, you know, mutable world, what we do right now so that, you know, we get an idea. So let's say I have an application and this is the, you know, in simplest term, this is how I am representing my state, the state of the application. So I say where X and it has a key called foo and the value is bar, right? So this is my state at this moment. And somewhere in the application, I can have something like this. This is quite possible. And I update the reference that I had, the second line, where Y equals foo. Basically it's a pointer to X in the memory location. So I say Y dot foo equals bars. And now, you know, my application encounters this state tracking, you know, change tracking code and it finds that is the new state or whatever new object same as my earlier state. So what we get here will get true, right? Because the reference, reference equality always gives you true. Even though what we see here is that the state has changed, right? So my application would not react to it, would not do anything because we just did our reference equality. What happens, and the state is different, what happens in the case of immutable data structure, if you do it like this is, you would again do the same thing in place of a normal array, you know, object literal, I'm using immutable dot map and I'm setting it, I'm changing it. Now, the example that we saw earlier was that, you know, every time you try to do a set operation or a push operation on an immutable data, it creates a copy and returns you a new version of it. So why in this case would definitely be a different reference? And I would easily, you know, safely and simply can say that, you know, my state has changed and, you know, work on it, do some operation based on it. So this is the, I think this is the most important concept when it comes to understanding the state management problem and the change tracking problem that we saw that, you know, I just wanted to highlight and the state has already actually changed and sorry, and this works for nested objects. So you might say that, you know, my state does not look like an object, which is, you know, foobar, right? It's very simple, but if you use immutable data structure, it works for any level of nested object, you know, a state represented by an object, which is of any level. So it works out of the box. In case you don't know React, you would have learned it by now, you know, a lot of React stuff. So in case you don't know React, if you do not pay attention, React basically has, you know, views which gets created, you know, it's a bunch of components and I'll not go into details. But every time React, so React tries to smartly not do a lot of stuff. It does only the minimum possible, you know, requirements. So it tries to, so every time it tries to render a component or a child of it, it goes to this function and tries to, you know, run it. If this function returns true, it re-renders it simply. So the very basic or the default implementation that React has, it always returns true because it doesn't know what is going to be there. So basically it's a hook for the developer, you know, for us. And we can write logic here to tell that, you know, if you are certain that this particular change from next, from, you know, this state to next state is not going to change, you know, my component does not require an update. I would just say, you know, return false, right? So this is the to-do that you should have in the application. I've just picked it from React's documentation. So now, so we might do something like this, right? Return this props value, you know, not equals next props dot value. So basically if my state did not change, I'll return false. And if my state changed, you know, if I want my component to be updated, I'll say true, you know, go and update this component. So I'll take a very simple, you know, trivial use case. This is my current state. This is my next state foobar foobar, right? The only difference is that I have one level of nesting. So props dot value, next props dot value. And when I have this, when I run this logic that I have written, if I run this, it is going to return true, right? Why? Because they are different, different, you know, references. You can see it, right? They're different references, so it's going to return true, which is not the case, because my state has not changed. It is still the same. I don't want to update it. So if we use, you know, again, I don't want to bash mutable data structures, but if you again use the mutable data structure here, your problem would be solved. And, you know, as it works with nested objects, you are, you are very, it's very simple, right? I'll just like to talk very quickly about pure functions. I don't want to go into function programming and stuff. I also don't know much about it, but pure functions are functions that work with immutable data structures, right? So you give some input to the function. It does some operation, just that it is not allowed to update that, you know, it is immutable. So you send, give some inputs, it returns some outputs. It has no side effects.  So I input X, it is going to return me Y. Whenever, whatever happens in your application, it is always going to do that. It is not going to change its behavior. So if we have functions like this in our application, it's going to be easily testable. That's the biggest advantage that I can think of. And you can write easy test cases. Persistence that I already covered a little bit. You know, it simply means that immutable data structures or libraries like immutable.js, they preserve the previous version of the data that you're working on. So you updated it, but it is still going to be preserved. So a very, you know, quickly, I'll go back to the same list example that I showed. I did a push operation on list, but it's still preserving the same original list that I had. And if I do an equality, it is going to give me false because they're different objects now. They're not the same object. So a very naive implementation of this, this looks like this. I picked it from Lee Byron. Lee Byron is the creator of immutable.js library. He works with Facebook. So this is the way naive implementation of list.push or any immutable data structure operation. So what we do is every time we want to do a push on list, what we might do is we make a copy because we cannot mutate it. We want to keep it. We want to preserve it. So we make a copy. We edit the copy because we want a new version. So that's the push operation that it would do. And then we return the copy, right? So we are maintaining the immutability of function. So it's gonna be there. And we are also changing it because we have to update it, right? So you might say that this is slow, right? Copying a lot of things. Every time you do this, every time I do a one push operation, and I don't know, I have thousands of push operations in the application, every time you do it, it's gonna, you're gonna copy and it's gonna be dead slow. You know, react once more. Sorry about that. So react does the same thing. React has this concept of virtual DOM, right? And it tries to do again the minimum amount of work. So it tries to find the difference between the next DOM and the current DOM. And it tries to reuse the stuff which you don't want to update. So basically, and recall, I mean, there's a fancy term for that. It's called structural sharing, right?   I'm gonna talk a little bit deeper into it. I want to explain this concept. So I believe that everyone knows what a list is, right? So link list basically. So a link list is a group of nodes. I want to explain what the concept of structural sharing is. So let's say this is a list and one is the head node and two, three, four are the tail. And I want to update this particular list. I want to create a new value of it. So what I'll do is I'll create one more node, zero, and I'll point it to the entire link list. So I have two values now, zero, one, two, three, four, which is the new one, and one, two, three, four, correct? So if I want to do something similar, I want to have five, two, three, four, right? So now I have three values of this list that I had and I'm still sharing two, three, four nodes, right? In all the three values, all the three versions of it. So this is nothing but structural sharing. We are sharing these three nodes for, you know, these three different values of link list. I hope this is pretty clear, right? It's not very complicated. And if I want to copy, you know, if I want to update one to five, what I'll do is I'll copy zero because I'm not allowed to mutate zero, right? So I'll make a copy of zero and I'll make change one to five and I have now zero, five, two, three, four. This is how structural sharing works and there's a better data structure for that in terms of efficiency. It's called directed acyclic graph. Again, like nothing very complicated here. It's a graph. If you have seen a graph in, you know, school or college. So it's a graph and what the aim is to, you know, leverage structural sharing or demonstrate structural sharing here, how structural sharing would work in a structure like this, right? So let's say I want to mutate or, you know, update seven, right? So what I'll do is I'm not allowed to change it in place. So I'll make a copy, right? I made it X. It is still point to eight because eight has not changed. I want a new version of it. So, you know, I pointed to the previous, the parent node, six. But again, six is not allowed to be updated. So I'll make a copy of it and I'll reach till the node, till the, you know, root node. So I have a new version, you know, a brand new version that I wanted. One, two, three, four, five, six. In case of seven, I updated it to X. So one, two, three, four, five, six, X, eight. This is the new version that we just got. And these are the stuff which is, you know, two, three, four, five, all the purple ones. Yeah, all the purple ones are shared, right? So structural sharing. This is how structural sharing is being used. I still have the old version preserved. It's not lost. In case you want to lose it, if you want to, you know, you don't want the version. So you can just get rid of the reference. It'll get garbage collected, right? Now work with this. So DAG directed a cyclic graph. This structure is cool, you know? Structural sharing works with this. But we don't have DAGs in our applications, right? In our applications, we have arrays and objects, you know, as we said earlier. So this slide, I'll just quickly go. It is efficient, you know, clearly because we are not copying a lot of stuff. The space we are reusing. And because we are not copying, we are saving time as well, right? So again, the question is, we need to represent arrays and objects in terms of DAGs. That's what we want. That's what, you know, our application says. So, you know, clever people, you know, intelligent, brilliant minds, they came up with something called this, very complicated looking structure. It is not, it is called bitmap vector try. I have references. You can, you know, go through it if you want to know. But overall, it's similar to the structure that we saw earlier. The difference, it has, you know, a couple of differences. Each node that we saw earlier, you know, the green ones or the purple ones, those nodes are replaced with arrays of a fixed size, which they call a branching factor. So in this case, the branching factor is four. Each array has four items. And each array item would point to an array of the same size in the next levels, right? So for the first item is pointing to, you know, an array of four items and so on, right? I'm not representing each one because it's going to be tough. So at first level, you have four, one, four is for zero, then four is for one, four is for two, right? So each node is an array. The second property is that data lifts, you know, the data that we are representing. We are trying to represent a list here, right? So data lifts at the bottom of the tree, right here. So starting from the top. So let's say this is an array of 150 items, right? And we are representing indexes from 128 to 143. So it's like this. So there's a list representation in terms of bit mapped vector try, you know, fancy term. So just representing is not enough. We want to do get set, you know, all those operations. So how do we do a get? So let's say I want to do a get of 141 index, right? That value. So if I want to do that, what they do is we first represent this to the binary form, start. And the idea is to reach from top to bottom because the data lifts at the bottom, right? So we start from the top and we reach at the bottom following a particular path, right? So we take two bits each, sorry. So we take two bits each and we try to find which path do we take. So we start with one zero, the red one, and which is the three third item. It's nothing but, you know, two in binary. So there's a third item in the array. So which tells us that, you know, go to the third item in the second level. So we reach here, we encounter zero, zero. It tells us go to the first one. We find one, one, then we find zero, one, right? And this is how we get 141. You know, this is the path that we took. And 141, whatever value is there, we just return it, right? So if we want to do a set, like I'll just quickly wrap it. So if we want to do a set, we do the same thing. We want to leverage structural sharing. So we follow the same path, right? We make copies because we're not allowed to mutate each array. So we make copies and we update the value and we save foo to that particular index. And there's a new brand, new version of it, right? And these gray ones are the one which are shared. The green ones represent the new version and the light gray ones are the old version. So we are using structural sharing and what we did, right? We did four array hops in order to do a set. Four array hops plus four copying of arrays. And forget we just do four array hops, right? So, and it turns out that JavaScript engines are, you know, aggressively optimized for these kinds of operations, array operations, you know, bitwise operations. So it turns out to be very efficient. We'll see how, you know, in detail. So the implementation, you know, we just saw the implementation, those graphs and tries, right? The implementation is done as try, something called try. It comes from retrieve. You should look it up. But that's the structure that we just saw. So the implementation is done like this. But the interface, you know, the APIs that has been given to us using immutable.js or other libraries are list and maps. So you still can do everything what you can do using, you know, normal array. You can do a random access. You can do a push. You can, you know, iterate from first index to the last index and stuff like that. So the interface, the APIs is still list and maps. No change. Just that implementation is try, which is efficient. Let's talk about performance, right? Because performance, performance is the theme. So about performance, we saw the branching factor of four, right? Each array had four items. So that was just for to fade in the slides because it's tough to, it's easy, right? To visualize for not many complications. In actual, if the languages which actually implement immutable data structures, like immutable.js or, you know, libraries or Clojus script, for example, they use a branching factor of 32. So at each, they came to this number to buy a lot of empirical testing and, you know, it maps good with the hardware and stuff. So, so they came up with this number, 32. So at each array that you have has 32 items, right? And it points to 32 other items. Each item points to arrays of 32 items each, right? So every level you have 32, then 32 raise to power two and three, four, five.  Let's assume that we have a try or whatever structure that we saw earlier. It has a level of seven, let's say, right? So it is going to represent, and as we saw data lives at the leaves, right? So the number of items at the lowest level or the leaf level is going to be 32 raise to power seven. Now this number is roughly 34 billion, you know, items. So if I have an array of 34 billion item, you know, I can represent this using a try, which has seven level. If I want to do a lookup, what will I need? I'll need, you know, at most seven hops, right? In that structure, if I want to do an update, I need at most seven hops and at most seven copying of those arrays, you know, following that path. So this thing is, if you do the same thing, you know, if in a normal 64-bit machine JavaScript engine, I took it from David Nolan, but the numbers are correct. If you do it in the, you know, 64-bit JavaScript engine, it is going to take 256 gigabytes of memory. So you can have a 10 billion item array in your machine, in your application, and you can do a lookup in seven hops, and you know, you have to copy seven times, right? It's crazy efficient and performant.  So they can combine the concept of virtual DOM and for managing state, they combine the concept of immutable data with virtual DOM, right? DOM, sorry. And there are libraries or languages, you know, we saw a good talk about Elm today, right? So Elm is one such language which does that. There are other libraries called OM. There is a library called Mori as well, you should check it out. So there are libraries and languages which sort of combine these two concepts and give us, you know, super fast ways to write applications. So just to give you an idea about Elm, Elm, this is the good old to-do application that, you know, Elm people wrote and benchmarked. I'm not going to go to her details, but still, this is the to-do application that they wrote and this is the speed in milliseconds that they compared with React, Angular, Ember, and Angular 2. So Elm is these, you know, this one, the smallest bar, smallest, smallest good in this case because speed. So this is both naive and optimized performance comparison of to-do application written using Elm and written using, you know, libraries and frameworks using mutable data. The differences between React and Elm is that Elm uses immutable data structure. React, the good thing about React in this case, I just wanted to point this out is that React does not assume what kind of data structure you have to use. So today in your React application, if you want to use mutable data structure, you're free to do that. If you want to use immutable data structure, you're free to do that. It has no opinions about data structure that you have to use. I think Angular 1.x had this. I think Angular 2 also is sort of like that. I'm not sure. But yeah.  So you want to know more about it? You can check these people out. Rich Hickey. So Rich Hickey, like almost all of his talks, whatever I've seen are like brilliant. This is one that I wanted to point out because there is some stuff that, some idea that I took from this talk. It's called value of values. You should check this. David Nolan, again, that branching factor concept that he talks about. And he has a library called, he maintains a library called Mori, which is Cluj's script immutable data in vanilla JavaScript if you want to use it. You can do that. This is the link. You can look it up, but here's a link anyway. Elm language we briefly touched upon earlier also. The complicated data section that we saw, they were, you know, inspired by this paper by Phil Bagwell called ideal hash trees. And if you are interested, you should check it out. And he's a talk by Lee Byron on the same subject on immutable.js. He's the creator of React. You should watch that as well. So quick recap, immutable data structures, let us write simple applications. It makes our lives easier as JavaScript application developers. We can use, if you want to use it today, we can use it. There are libraries out there that are easy to use, JavaScript first APIs. They use structure sharing in order to achieve persistence and efficiency. And they enable superfast performance as well. Here's a summary. Immutable data structure struct. And I can take some questions. Yeah. Yeah. Just a quick announcement before questions. The PWA birds of feather session is starting now. And the flash talks begin after question here. Which one? This rocks. Okay. Yeah. Sorry. Oh, sure. This is the recap. Immutable data structure is cool. Yeah. Okay. Is there a question? Hello. Yeah. So Redux came up with a immutable store. So it uses just object.assign. So can you repeat? So in Redux ecosystem, Yeah. The reducers use object.assign. Yeah. Which is not performing for large amounts of data. But at the same time with immutable.js, you get around 50 KB of payload in your build size. So what is the... Correct. Have you benchmarked anything like at what point immutable.js becomes a good thing to use compared to a normal object.assign implementation. Okay. So if I understand correctly, what you're saying is that why not use object.assign? Yeah. Because for small sets of data, object.assign is fine. Yeah. It's not visible, but the immutable.js 50 KB payload in the build size. It affects larger than that. Yeah. So you're correct. Object.assign does make your object immutable, right? And then I think object.observe as well, right? I think they dropped object.observe from the ES7 candidate list or something. But still, so this particular thing is more about thinking in terms of immutable data structure. So let's say you have a state, right? And you know that your state is allowed to be updated. So you'll write your application or you'll structure your application in one particular way. You know that, you know, your state is going to change and any part of the application can do that. But if you work with immutable data structure, you're going to have a different kind of architecture. So it's the differences there. I just use immutable.js in order to explain. If you want to use it today, how do you do it? But it's more about how do you actually, you know, use immutable data structure to write your application and make it simpler, right? If you know what I mean, right? Quite cool. Does it answer your question? There are benchmarks. I can give you the links, but there are benchmarks. You can just Google, there are benchmarks. I've seen benchmarks. I could not have everything here because it might get confused. So confusing. So there are benchmarks that you can look up. Hey, hey, hey, hey, so you said immutable, like it creates a new copy of object, right? Suppose some map. So suppose some object is keeping a reference of the old one and you replace the object in list, list something. Sorry, I got the first part, but not this again. Suppose some other component or something is keeping a reference of the old object. Okay. So you replace it with a new object. Now you state becomes a new object. Okay. But the reference is being pulled by some other object. So that may lead to memory leaks, correct? No, so let me give you a refresher. So when you have an object and when you update it, right? It does not update it in place. It gives you a new version of it. So let's say your program, some part of your program had the old reference and was using the old, you know, state for example. So it would do its, its, you know, execution, whatever lines of code that you had written, it would do it based on the state that it had, whatever it has in its scope. Now you changed it. So the new version would be worked upon, you know, your code will run on the new version. So you will do something based on the new version. So it's like that. So you're not losing both of them. If you want to utilize it, you can utilize the old one. If you don't want to utilize it, you can just lose the reference. Okay. Or does that answer? Okay. Okay. More questions? Do we have time? Hi. Okay. Yeah. Yeah. Can you hear me? Yeah. I can see you. So the thing is that you talked about immutability where you say that you create new objects and then after that assign. So what happens in the case where you are actually creating a UI model that maps to a particular view and then after the user keeps changing values in the view. So don't you think that the overhead that is there by creating different immutable objects actually affects or is it different to the performance? It's a good question. So are you done with the question? Yeah, I am done. So it's again about implementation and interface that I just talked about, right? So the implementation is done as tries. So let's say a library like immutable.js or a language like Clojus script or anything, they would apply mutation internally. So there's a concept called birthing that Richiki talks about an object, you know, you give birth to an object or a value when it is actually used by the outside world. So when you are actually using it or you did, you know, 10 mutations. So the libraries would apply 10 mutations internally, but what you get is a value which did not mutate, right? So the implementation is like that. It does not actually mutate every time you mutate it. The end result of a particular operation gives you a immutable data. Did you follow? So, but even though you say that internally this happens, so don't you think that looking at what they were talked about in the previous sessions, where they talked about progressive web apps for mobile devices? So considering the limit on the amount of memory available, so don't you think that it would still be an overhead if these are used in mobile devices? So when I started, you know, like you guys older than me, I started with a 256 MB RAM computer, right? I have a 16 GB computer right now. So it's not decreasing. There are devices, mobile devices, which are like smaller, but still like it's not that, you know, small memory that you have that you can't do this kind of thing. People used to do this because earlier like decades ago, we had computers or memories which are like very limited and you have to mutate in place. But it was like quite some time ago, not I think, I think 50 years ago, when we used to do, I mean, we see the pictures of, you know, punch cards and stuff, right? But not anymore. So we don't have, we can talk about it offline. Yeah, I can hear you and I can, yeah? When you try to set using this, so what you do is create a copy, all right? And you'd keep the old reference to be dumbed by the garbage collection for the browsers, right? So how does that affect the performance?  So if you are setting so many objects at a certain rate, how does it affect?  Yeah, so it's a good question again. So garbage collection is something that again, like it's about implementation and interface. We don't have to worry about garbage collection, the languages or the libraries that implement immutable data structure. They know that, you know, this is the case that is going to be there with immutable data structures.  That's how it works, right? Works, cool. Okay, that's all folks. Thank you. And thanks to JSFOO for, you know, putting up a great show two days, right?


Hey everybody, welcome back to Magic Orthodoxy. My name is David and this is a Magic Review. Hey, today we're going to look at Untouched from Ruhei Nakamura and Sans Minds Magic. All right, so what is Untouched? Untouched is a instructional video on how to use IT. Now, if you don't know what that is, if you don't know the magician's code, I really can't tell you because I don't want to break any magician's secrets. Please don't decipher it in the comment section below. People will need to do their own research for this, but it is an instructional video for IT and it is a video only, all right? So even in watching the commercial, I just want to be completely upfront and honest with you, you will not receive any IT with this. You will not receive any gimmickry, any gaffes, any anything. This is a DVD only, only instructional video, an hour and six minutes long. Now, the DVD itself is also in Japanese. That's another thing you should know to be completely upfront with you. It's all in Japanese with English subtitles, okay? And what Ruhei is going to do is he's going to walk you through his own brand of IT magic and it's going to be Reels and IT design that he prefers. He's going to go over clothing options, what kind of types of outfits he likes to wear. He is also going to go over performance area, surfaces, okay? And talk about what the best surfaces are to perform from. So you're going to get that. Then you're going to get a seven minute multi-phase routine and I'll get into that a little bit more. So is it what I thought? You know, I think it, I think we all knew that it was a video about IT. I didn't know it would be in Japanese or that it wouldn't include anything. You will need stuff for this. Like obviously, you know, you can't just buy this DVD and expect to do magic. You will have to have a center pole IT thread reel, number one. You will have to have one and you will have to have magician's wax. So those are two things you will need to purchase. So if you want to get this DVD, make sure you already have those objects or add those to cart as well. How are the angles on this? The angles on this are really super clean because of the performance area that Ruhay uses, okay? So that is part and partial with most of the tricks that he is doing. As far as inspectability, the objects of course can be inspected, the cup, the glass, the glasses, the fork, all of that can be inspected. All of the apparatus is on the magician's body. Once the overall quality and production value of the video, Stan's Minds always makes great DVDs. I was confused as to why they released this with a Japanese subtitle only because, you know, Stan's Minds does work with a lot of Asian act, Asian performers. And usually when another performer creates the effect, Herman still does the teaching. So I don't understand why Herman couldn't have done this teaching.  Maybe they felt like, you know, this was really Ruhay's baby and they wanted him to do all of it, which is fine. But, you know, even their splash screens in between segments were in English. So obviously it was directed at an English speaking audience. Even a voiceover would have helped and I think a voiceover would have cleared up some of the broken English subtitles. I think one negative for this and I'll stick a negative here is that even the subtitles aren't completely clean. They're not completely clear. They might have been done with a computer because they're or at least there's some words that they didn't translate maybe the best they could. And I think for magic, that's crucial. Like your instructions, the instructions you receive, the things you read and hear, that's crucial to deciphering those effects. I don't think it hurt the teaching in any way. Please don't think that I think it hurt it in any way. And it certainly doesn't hurt to have Ruhay speaking in Japanese that didn't hurt at all. I was able to learn more from watching, obviously. You learn way more from watching.  I think all of the real meat of the teaching comes from that. And so I definitely think you're getting good teaching, you're getting a well shot DVD. I just would have preferred the subtitles to be a little bit more on point. Alright, so I said he's going to teach you a multi-phase routine. It's a seven minute multi-phase routine and literally the camera walks you through the entire seven minute routine from trick to trick to trick to trick with no breaks. Like he is moving his hookup, moving his material from one object to the next, moving fluently from cup to fork to fork bending to tying the two objects together where the actions of the cup and the actions of the fork mirror each other and then back together. And then you kind of break that and then you glide the cup across the floor and then you glide the fork across the floor. You can make the cup float in mid-air or float or balance on the end of your finger. You can balance the fork off the edge of the cup. I mean it's just bam after bam after bam. The performance is really super long and extremely beautiful, extremely beautiful. This is a beautiful routine and really this is what you're getting. You are getting a seven minute psychic routine that involves the wine glass and the fork and it is just simply a beautiful routine. And then at the very end of the routine at the end of the teaching there's one bonus handling where he goes through the eye glasses one where the arms fall over and the glasses fall over. He covers that at the very end bonus handling. So how much practice will this require? Of course it'll depend on your own level of proficiency using IT. You should have some level going into this however I think this would be a good video for beginners because he does cover a lot of things like where you should wear on your on your body and what you should wear and your performance area and your surfaces. And so he does cover a lot of beginning level stuff. So this is a really good beginner's level introduction to IT. How much setup and reset is there? It's one simple hookup and you're good to go. Positives. All right so what are the positives to untouched? This is the IT instructional DVD I wish I had years ago when I was just starting out. Finally right we get performances that look like real psychic phenomena and not just floating tissue paper. Negatives. All right so what are the negatives? You know like we say around here there's negatives to everything. These are just the negatives that I see.  It is kind of an introduction to IT and IT reels and it is in Japanese. So I didn't know that fully or at least I didn't pay attention fully to the ad copy and like I said even the subtitles aren't perfect. Lots of broken English and indecipherable phrases but you can look past that. There's some great quality teaching here. Is it worth your money? It's $35. $35 it's an hour and six minute teaching and you don't get any IT at all. So $35 is a little high I think. I think this probably would have been better at a $19.99 price point since you're not getting anything and it is only an hour. I mean it's not like a double disc set right and it's not like it's you know you're getting two hours of material. It's one hour of material and you're not getting any IT at all. So $35 seems a little high but I think if you like the performance I think if you want to learn this seven minute routine it'll be worth your money. Who would like this? People looking to get into IT. I think people who want to learn this kind of more beautiful looking way of moving objects around I think should definitely consider Untouched from Ruhi Nakamura. All right so that is my review of Untouched from Ruhi Nakamura and Sans Mines Magic. Of course I want to thank Murphy's Magic Supplies for allowing me to have this so that I can do the review for you and if you'd like to purchase it for yourself you can find it from your very favorite Murphy's Magic dealer. Thanks, bye.


breathe. Alright so I came in early today just so I can record this real quick so today's video is gonna be a little bit different I have a client coming in today that I'm doing Medusa on the inner thigh I've never done an inner thigh so I don't I don't know how that's gonna go and this client I did a whole project the whole outer sleeve project on him and it's been over a year no touch ups none of that I just one pass I think it took two days back to back I did it on a Monday and a Tuesday I think it took about 10 hours to get this done today's back-to-back so he got from here all the way to the ankle so no touch ups none of that I we just went at it one pass so this video I wanted to focus on fresh versus heel because I do get a lot of questions on my YouTube asking I want to see a heel then I want to see it after three months and I want to see it after a year I feel like people's perspective is that that tattoo is gonna look different when it heals and it's gonna get lighter and it is the case with a lot of artists depending on styles depending on how they tattoo if it's color black and gray or true grays as a client you want to make sure that that your piece is not gonna fade in a year you know or it's gonna look weird after like couple days after you got it done so today is the perfect is the perfect day for me to explain this and show you guys how a fresh tattoo looks next to a heel tattoo after a year I definitely wanted to address this topic and and really show you guys the way my work heals I'm not gonna be speaking for other artists because I don't I don't know the way they do their setup I don't know the way they tattoo I don't know their style you know so I'm only I'm only giving you guys my perspective and the way I tattoo and the way my tattoo is healed it's gonna be interesting I really I'm really gonna like this video because I couldn't find a way to explain it until now that I was like I'm getting this question a lot and I definitely want to like talk about this but I don't know how oh also drop a comment let me know what was your favorite part of this video and the best comment I'm gonna sell you some money so you can take your boyfriend out your girlfriend your wife your husband your family your kids whoever you want to take out for breakfast or dinner and I'm gonna sell you some money in the foodies on me the theme that I'm gonna be talking about today I'm gonna explain it in English because there are many comments that have left me in English where they ask me how my pieces are scarred and how they look after three months six months or a year so I'm gonna be explaining it in English basically what I'm gonna be explaining is this I have a client that will come today that I'm gonna do the part inside the leg and outside I did a project all the way from the outside of the leg and from all the belly and all that I did a big project that already has around passing the year that is already scarred so what I'm going to be explaining is how a fresh piece compared to a year of scarred scarred and let me know what is your favorite part of this video and the best comment I'm going to okay so let's start by showing you how the project looks like after a year and five months I'm really satisfied on how the tones and the contrast held up my favorite part about this project is that it looks more like a painting like if I was drawing with charcoal now I'm gonna show you a close-up of the whole thing so you guys can really see the tones and the transitions that I use I want you to pay attention to the white highlights now white highlights sometimes only sometimes can turn yellow because the tattoo is exposed to the Sun in this case my client took really good care of his tattoo and it really shows you know and he also has really good skin so now let's compare side by side fresh and healed and how much you changed this area right here is fresh and this area is healed notice that it did not change a lot I really like how it's hard to see where it's fresh and where it's healed I think the hardest part was remembering what tones that I used last time moving on to the face the face still looks a little bit red it's still irritated but I know once the redness is gone we will be able to see how the tattoo is gonna actually look like luckily I get to show you guys both faces and compare it I don't think I got nothing else to say so I hope this video answer your questions and if you have any more questions I'll try my best to answer it so now I'm just gonna show you the whole thing so enjoy


Massive amount of underground cities found all over our planet. Extraordinary undertakings, seemingly necessary at some time in the very distant past, complex tunnel networks almost telepathically hewn direct to each other. Cut from hard bedrocks, with many exhibiting considerable efforts committed into security. Huge rolling doors can be found at many crucial junctions within the underground systems, as can be found, for example, amongst the underground cities of Cappadocia. Derinkuyen particular still exhibits its rolling door still in situ. No one displaying the builder's impressive capabilities, but also the abilities of the rolling stone operators. As whoever built these contraptions unarguably still possessed megalithic stone-moving knowledge, which we hypothesize is lost knowledge due to the builders of said sites also a lost civilization, which instead of where they have been placed chronologically by funded investigations, actually we believe, originate an unimaginably longer time ago, place far within an antiquity not only lost, but actively dismissed. But regardless of the impressive feats these underground cities were to create, the question persists, why? Why go to so much effort? The cities of Uskanakt, Derinkuyu, and Kemakli, all found just within Cappadocia, Turkey, are not only some of the most complete underground dwellings, with Derinkuyu estimated to have once been capable of housing 20,000 people. Derinkuyu even connects to Kemakli via an underground tunnel, an astonishing 8 kilometers long. And this is but a tiny fraction of the ancient underground cities, which have so far been found all over the world with more discovered each day. Many seem to have simply been sealed when no longer needed, thus many still lay undisturbed to this day. Derinkuyu, for example, was only rediscovered when a wall was knocked down in a house during renovation work. Walls seemingly constructed around the same time, yet any definitive motivations for why ancient man decided upon such drastic efforts worldwide have yet to be substantiated. Their construction remains a complete mystery, a fact we find highly intriguing. Many people will argue that these cities were chiseled by slaves over many years and a great suffering, a safe bet narrative which jives with the mainstream. But it comes to the academically claimed ages, and due to the people during said ages, substantially lacked any advanced stone cutting technologies imperative for creating such vast works. This argument, however, thanks to the volumes of examples of exquisite, astounding feats discovered as a special few of these underground complexes, not only installed clearly to demonstrate an acoustic level of awareness on par with prodigal ability and possibly many other as yet undicipered features displaying excelled understanding of many of life's most intriguing subjects. The Hypogeum, located within modern-day Malta, is but one of many examples which can be presented as proof that whoever built these underground layers at minimum possessed astonishing acoustic knowledge far ahead of man as well as almost physics-defying stone-moving techniques displayed in the structure itself. The Hypogeum possesses a characteristic designed into its construction which is simply astonishing. It is so mystifying that although very little is known regarding how it was achieved, a certain frequency can amplify which seems to stimulate the building's amplifying capabilities as if the entire structure resonates and has since been shown to also affect the human brain becoming known as the god frequency. Who built these underground labyrinths? Why? When did they build them? We find these incredible relics of a lost civilization. Thanks for watching! Drop a like, leave a comment, please don't forget to subscribe to our channel, Design Hysterics. Get more updated videos from now, click on the bell button below to get notified. See you people in the next video. Till then, it's a bye from Design Hysterics team.


Welcome to the lecture number 29 of the course, Quantum Mechanics and Molecular Spectroscopy. In the last class, we were looking at the rotational transitions. One of the features of the rotational transitions is the spacing between the rotational lines. So, I showed you that the rotational lines are evenly spaced by 2 h b e, 2 h b e, 2 h b e. So, this is from, so let us call it as 2 h b e, 4 h b e, 6 h b e, 8 h b e. This is from 0 to 1, this is from 1 to 2, this is from 2 to 3 and this is from 3 to 4. This is the values of j, j is equal to 0 to j is equal to 1, j is equal to 1 to j is equal to 2, etc. We know that h b e is nothing but h bar square by Re square. When I multiply 2 h b e, this will come out to be h bar square by mu Re square. So, if 2 h b e can be experimentally measured, then based on this one can estimate Re square, okay. So, 2 h b e will give us Re square in time, we can get Re. Now, what was Re? Re is nothing but if you had 2, if you had a molecule ab, Re was the equilibrium distance. So, by measuring the rotational spectrum, one can measure the equilibrium bond distance of molecule ab.  So, rotational spectrum or rotational spectroscopy is the only spectroscopic method by which one can estimate the bond distances, that is geometrical parameters, okay. No other spectroscopic technique can measure bond distances as the rotation spectra can do. So, that is the power of the rotational spectroscopy, okay. However, one must always remember that this is only possible if mu naught is not equal to 0. That means, you can only measure the bond distances of hetrodiatomic molecules or molecules that have permanent dipole moment, okay. Now, one of the problems of rotational spectroscopy is something called centrifugal distortion, okay. Now, what is centrifugal distortion, okay? Now, let us suppose if you have a molecule ab with a distance Re and it is rotational energy, E rot is given by H BE into J into J plus 1. And we see that as E rotation is H BE into J plus J plus 1 and it turns out that as the BE decreases and we see BE is equal to H BE is equal to H bar square by 2 mu Re square. So, BE is inversely proportional to 1 over Re square or that is what it is. Or Re is inversely proportional to 1 over square root of BE. That means, as the equilibrium bond length increases, the rotational constant goes down. So, longer bonds have smaller rotational constants. Longer bonds have rotational constants. So, this is something that you must remember, okay. As if I take AB, okay, the same molecule and keep increasing its bond length, the rotational constant keeps going down, okay. Now, fortunately or unfortunately molecules are not rigid rotors. That means that molecules rigid. That means you cannot hold molecule AB such that the position of A and B are at the, are locked up, okay. They are going to move, okay. So, one of the things, of course, they vibrate, but the rotational motion and vibrational motion have different time periods, okay. So, we will not able to, we will not consider this. What is that, what does it mean? What does that mean? Vibrational time period is far smaller than the rotational time period. So, since there is a mismatch in time periods, the effect of vibrations on rotations is minimal and one can ignore that. So, molecules are not rigid, but rotational and vibrational time periods much different. How different? For example, rotational time periods are picoseconds and vibrational time periods are femtoseconds. So, there are three orders of magnitude different, okay. Therefore, the coupling between the rotational or influence of vibrations on rotations can be neglected, okay. This is a very general statement, okay. There will be cases when you cannot neglect it, okay, but that is kind of advanced level spectroscopy, but at a level that this course is intended, one can always assume that the rotational motion and the vibrational motion are independent of each other, okay. Now, if that is the case, if vibration is not influence the rotation, what else can that? Now, think of it like this, if you have an object AB or a molecule AB such that this is RE and you want to rotate it, okay. So, you rotate. Then what happens, there is something called centrifugal force, which kind of throws away A and B away from each other. So, what happens is that A and B start moving away from each other and this is called centrifugal distortion. One starts getting centrifugal distortion and you will see the faster you rotate, the more will be centrifugal distortion. Of course, you will realize that for J is equal to 0 state, J is equal to 0 state is essentially no vibrational energy is 0. That means for J is equal to 0, so there will be no centrifugal distortion, okay. So, as the J states keep increasing, the centrifugal distortion becomes more and more effective, okay. Now, what is that it is doing? It is increasing the bond length. So, your AB is no longer RE, but something else slightly more than RE and we know as the as the distance increases, the rotational constant goes down. So, effectively when the rotational constant goes down, the delta E goes down. So, therefore, EJ rotation will now be equal to HPE J into J plus 1 minus HDE J square into J plus 1 square. So, essentially what you are doing is you are writing a series. This is the first term that is J into J plus 1 that is a linear in of course, this is linear in J and this is quadratic in J. So, you are trying to add up more terms, okay. So, essentially what you have done is nothing but J HBE J into J plus 1 minus HDE J into J plus 1 whole square. So, this is for J into J plus 1, this is a linear in J into J plus 1 and this is quadratic in J into J plus 1, okay. So, this is just the first correction. Then you can have the third order correction, etc. But it turns out that the second order term or this DE itself is so small, do not have to worry about the terms later on. Now, this is what you get. And you can see that this is subtraction that means as you keep increasing the DE, okay by the way DE is called centrifugal distortion. Now, as you keep increasing DE or as you keep increasing J value, the DE becomes more and more effective. So, now let us look at and all having done this the way nature of the wave function has not really changed. You are still using spherical harmonics. So, delta J is equal to plus minus 1 and delta M is equal to 0. These selection rules are still valid. However, what you are changing is the energy spacing. So, what you are doing is you are changing the energy spacing. Now, when you did not have the rotation energy E rot is given by H BE J into J plus 1. If we have centrifugal distortion in the presence of centrifugal distortion. So, your E rotation will now be given by H BE J into J plus 1 minus H DE J square into J plus 1 square. So, in general, if you look at the transitions of the rotations, then one can think of 0 to 1, 1 to 2, 2 to 3. This will be 2 H BE, this will be 4 H BE, this will be 6 H BE and separation will be 2 H BE where this is your energy, okay. Now, if you have centrifugal distortion, so in the sense of centrifugal distortion, what you will have your 0 to 1 delta E will be equal to H BE 1 into 2 minus H DE 1 square into 2 square minus H BE 0 1 minus H DE 0 square into 1 square. So, this term essentially is going to be 0. So, your delta E 0 to 1 will be equal to 2 H BE minus 4 H DE. Now, for 1 to 2 delta E will be equal to H BE 2 into 3 minus H DE 2 square into 3 square minus H BE 1 into 2 minus H DE 1 square into 2 square. So, this will be nothing but 6 H BE minus 2 square is 4, 3 square is 9, 4 into 9 is 36, 36 H DE minus 2 H BE minus 4 H DE. So, this will turn out to be 4 H BE minus 32 H DE. Similarly, when you have 2 to 3 transition delta E that will be equal to is equal to H BE 3 into 4 minus H DE 3 square into 4 square minus H BE 2 into 3 minus H DE 2 square into 3 square. So, this will be equal to 12 H BE minus 3, 3 square is 9, 4 square is 16. So, 144 144 H DE minus H BE 6 minus 36 H DE. So, this will be 12 minus 66 6 H BE minus 144 36 that is equal to 108. So, this will be 108 H DE. Now, if you start plotting the spectrum earlier what we had 0 to 1, 1 to 2, 2 to 3. So, this for 2 H BE, 4 H BE, 6 H BE. Now, it will transform to 2 H BE 0 to 1 minus 4 H DE. Second one will be 1 to 2 that will be 4 H BE minus 32 H DE. Third one will be 2 to 3 this will be 6 H BE minus 10 to 8 H DE. So, now the lines are becoming narrower. So, this was just 2 H BE separation was 2 H BE. Now, in this case this will be 2 H BE minus 4 minus 32 is 28 H DE and this will be 2 H BE minus 108 minus 32. So, 76 minus 76 H DE. So, the lines are getting closer. So, if you keep moving to the higher values of J, the lines will get closer and closer. Generally, the BE and DE BE is about 10 power 4 times larger than DE. So, DE is approximately equal to BE into 10 power minus 4. So, 10,000 more. So, that means, when you start multiplying this number at least to a value of that order of BE it will start getting affected. That means, J into J plus 1 square should be of the order of 10,000 or at least of the order let us say even 10 percent of it should be of the order of 100. Only then it will start affecting the the rotational line spacing. That means, we have to go to very high values of J. What high values of J? The values of J that are at least in double digits. So, double digit J values will start affecting the rotational spacing or rotational line spacing. Okay. So, for large values of J, the lines become closer and closer and that is the indication of saying the presence of centrifugal distortion. We will stop it here and continue in the next class. Thank you.


Ranger Bill, warrior of the woodland, struggling against extreme odds, traveling dangerous trails, fighting the many enemies of nature. This is the job of the guardian of the forest, Ranger Bill, pouring rain, freezing cold, blistering heat, snow, floods, bears, rattlesnakes, mountain lions. Yes, all this in exchange for the satisfaction and pride of a job well done. Say, fellows and girls, do you remember how the Apostle Paul brought the gospel with him when he was put in prison? Remember what a remarkable change the gospel made in the prison? Well, this story isn't about the Apostle Paul, but it's about Bill and his Rangers. They took the gospel to the state reform school for boys. The reform school is located on the outskirts of Naughty Pine. Oh, it's not as easy as it sounds. Bill and the fellows had to fight to get the message of salvation inside the reform school. Wait a minute, I almost told you the story. You'll have to hear the gospel goes to reform school. Inside large ominous buildings are almost endless corridors. Along these corridors are locked rooms. Inside the rooms are young lads who made mistakes early in life. Some of the lads are tough as old shoe leather and hard as nails. Others aren't. But all isn't well at the school. The warden and the chief guard are talking about it in the warden's office. Warden, the boys are restless again. You know what to do. Yes, sir, I do. But I don't think that's the answer. Individual confinement always breaks down the toughest, Wayne. Yes, it breaks them down all right. But it doesn't correct the difficulty. What do you mean? Well, I think we're approaching the problem negatively. Sure, individual confinement subdues them. That's all we're interested in. We're not running a kindergarten here. This is the House of Correction. But still I... Who's the ringleader this time? Joe Madsen. So it's Joe again. Put him in individual confinement immediately. Well, he just got out of solitary two days ago. Put him back again. That only makes him worse. I said put him back. Well, he'll only make him harder to handle when we... Look, I'm the warden here. I said put him in a single room and lock it. Yes, sir. Wayne, one more thing. Yes, warden? If you want to keep your job as chief guard, I'd get rid of those soft ideas about baby and these lies. Understand? Yeah, I understand. Boy, you sure never know when they give up, do you, pal? What do you mean, pal? Well, I'm talking about warden Dawson. Well, we're not licked yet. Maybe not. But it doesn't look like he's going to say yes. Well, don't go giving up so easy, fellas. I've seen Bill make harder-boiled men than him, say, uncle. So have I. But he's a boss at the reform school and what he says goes. That's right, Henry. But you've forgotten one thing. What's that, Bill? The Lord's on our side. The Lord wants the gospel in the reform school, and a dozen hard-boiled wardens couldn't stop the Lord's plan. Well, I know of that, Bill. Maybe we jump to conclusion, Henry. Too often we try to work out Lord's plan our way. Yeah, you might have something there, sonny. Let's let the Lord work out his own plan the way he wants it done. Maybe I am a little hasty. I'll wait and do whatever the Lord wants me to do to help. Well, I'm glad you put it that way, pal. There's the reform school ahead and we're just in time for the appointment with the warden. You fellas pray while I do the talk. Bill, why do we have to go over this whole thing again? Because I'd like to know why you won't let us bring sports activities and Bible classes into the school. I've told you that. I don't believe in babing these lads. They're tough, potential criminals, and they need to be taught respectful law and order. That's a negative approach, warden. Why not teach them the positive way? Oh, you're as bad as my chief guard. I think Wayne's right, if you want the truth. What's the matter with men these days? Don't they have any gods? Does it take intestinal fortitude to run a crime college? Are you saying I'm running a crime college? Yes. You're making the lads bitter and hateful by your negative methods of discipline. The Lord would never use the method you use. Well, the Lord's method may be all right for Sunday school goodies, but not for tough guys. Oh, is that so? How do you know? You're not willing to give the Word of God an opportunity to work here. You're afraid to give these lads something concrete and constructive. Something they can feast their hungry souls on. The only thing I'll feed them is bread and water if they don't behave themselves. I'm afraid that you're wrong, warden. Terribly wrong. I feel sorry for you. I feel even more sorry for the lads under your iron hand. Iron hand?  All right. I'll go. But we'll pray that the Lord will open your heart and mind to the truth.  Are you busy? Come on in, Wayne. Are you sure you have time to talk? That's a big pile of paperwork you have here, Dad. I always keep that pile of paperwork on my desk. Makes me feel like I've got something waiting to be done. Well, I appreciate you taking time out to talk. Well, any time I can help, I'm glad to do it. It's always better to talk at the time a person has something on his mind than to put it off. What's on your mind, Wayne? Well, I guess you know that the warden and I don't see eye to eye on how the lads should be handled. Yeah, I know. You mentioned that. What can we do about it, Bill? Well, frankly, I don't know, Wayne. You mean it's hopeless? Oh, I didn't say that. But warden Dawson is the boss of his penal institution. Yeah, that's right. But his ways of handling the boys are outdated, antique. You could complain to the right people. That might help. No, I... I don't want to do that. He might lose his job. Well, there's only one thing we can do, Wayne. What's that, Bill? We can pray about it. Why don't I think of that? I guess the Lord has dealt with harder hearts than the wardens. That's right. Suppose you and I pray right now, and the fellas and I'll have a prayer meeting tonight. That's fine, Bill. And I'll come tonight, too. Good.  In this instance, action is out of the question. You all know why we're here. I don't need to go over the purpose of our prayer meeting again. Wayne, will you start? I'll be glad to, Bill. Gentlemen, let us pray. Heavenly Father, we ask that you intercede for the lads at the reform school who will need the gospel of salvation so badly. Please soften warden Dawson's hard-boiled attitude. So a wonderful story of salvation can be told. We're up against stone wall, but we know you have planned to open closed door. We know that the promises given in thy word are everlasting. Give us the patience and the trust to wait upon thy good pleasure and the fulfillment of thy will. Hear our prayer for the gospel's sake. In Jesus' name we pray. Amen. Sometimes the Lord moves in strange and mysterious ways to accomplish His plans. Perhaps this is one of them. High excitement runs wild inside the reform school because the boys are on the rampage. A riot is near and the guards are having a tough time controlling the frenzied mob of lads. Wayne and warden Dawson are trying to calm the boys down. Those boys back to their rooms.  What do you plan to do now, warden? Let's go into my office while we can talk. That's a good idea. What do you think about it, Wayne? Well, I'd say we've got a pretty serious situation. We've got to get those lads back to their rooms and quickly if we can. Well, that's right. Then we'll put them in solitary confinement, especially the leaders, until they cool off and acquire some common sense. Well, that's only one of the things they're complaining about.  Do it. But what if they're repellicant? If the women's handy have been hurt, the boys are using homemade clubs and blackjacks to fight the guards. That settles it. Break out the tear gas and call the state police and rangers. We're going to need help. Ranger headquarters, Bill speaking. Yes, warden? What? Yes, yes. We'll be there as soon as we can. Yes, sir. Goodbye. Well, what's cooking, Bill? The boys at the school are rioting. No joking. How come? Several guards have been hurt. They need help. Let's get Stumpy and Grey Wolf and be on our way. Oh, sir, yes, this is from the balcony of the auditorium, Bill. We managed to pin them all in the auditorium. Well, let's have a look. Well, Bill? The lads are pretty angry. Yeah.  What does that prove? I'm the head of this institution. It's natural for them to scream at me. One of any plans do you have, Bill, on this for the moment? I'm going into the auditorium and talk to the boys. Oh, Bill, you can't do that. Certainly you can't be serious, Bill. One guard has a fractured nose, another a scalpel, two have black eyes, another has several minor cuts. I never was more serious in my life. But, Bill... Henry, please let me talk. I'll not assume a responsibility for your safety, Bill. I'm not asking you to. But I go in there on one condition. What's that?  All right, I'll agree to that. If you can do your part. Yes, that's right, warden, if I do my part. How do I get to the main floor of the auditorium from here? Write down that stairway, Bill. The doors are at the end of the corridor. I'll unlock them for you. We'll all go in in case you need help. I'll go along, warden. Wayne will open the door. I don't want them to get the idea that this is a trick. All right, let's go, Wayne. All right. Are you rangers going to stand there and let him walk into that lion's den by himself? Well, Dan, you didn't have anybody with him except the Lord. The door is unlocked, Wayne. I want you to get out of sight, though. I will, boy. I'll be praying that your plan will work. Wayne. All right, open the door. Right. But I know how you're going to do it. Wayne is that Bill's using a mob-quieting trick as over the hill.  The angry lads realize that somebody new and different is standing before them. But he doesn't say a word. Just stands there like a piece of granite. Now the angry lads are curious. Who is this guy in a different uniform? Why doesn't he speak? Slowly their curiosity overpowers their anger and they quiet down. Maybe this fellow in the strange uniform will say something. Maybe something important. Now they're waiting for Bill to speak. They're ready to listen. But Bill still stands with his arms folded like a marble column. Why don't you say something, mister?    So let him speak. My name is Bill Jefferson. I'm a forest ranger. I've come here to help you.  That's my Uncle Lloyd.  I happen to be a Christian, young fella. A Christian doesn't go back on his word. Let's go back to our rooms. I believe Bill's on a level. Bowled Ned. It's a free throw for the red shirts. Ned's bigger than I am. How else can I stop him? That's no reason to be a poor sport. It's not Christ's life. The fact that Ned has an advantage in height should be a challenge to you to outplay him. I never thought of it that way, Bill. I'm sure glad you and the other fellas are teaching us how to be Christian. Thanks, Jerry. Ned, take your free throw and we'll go on with the game. Next week, fellas, we'll begin our new Testament studies with the Gospel of John. Can we read the first three chapters in the meantime? I saw for today. Henry, I'd like to thank you for these wonderful studies. They've really helped me. Thanks, Al. I only wish I could spend more time with you, fellas. It's fine of you to say that. A lot of folks think that we're not human because we're in reform school. Thanks again. They are doing wonders with these lads. They seem more content and happy. They're giving the power of the Lord Jesus Christ in the lives of these lads, Warden. Not by might, no by power, but by my spirit, set the Lord. Huh? Oh, yeah, of course. I know you'll see a big change in the boys if you will give the Gospel enough time to take its powerful, positive effect on them. You're giving the lads something for their starved souls, Warden. Bill, as long as things keep improving, you can work with the boys. I won't interfere at all. Thanks. Let's put the boys on a solid foundation. Well, Joe Mattson's coming out of individual confinement today. I'm going to have a talk with him in my office. I gotta get going. Joe Mattson? Seems I've heard some pretty vicious stories about him. No, they're not stories, Bill. They're facts. He's a tough and bitter young man. Add enough, Joe? Yeah, yeah, yeah.  Yeah, sure, Warden. I think you know, but now that we mean business, Joe, individual confinement isn't any joke. Better lads than you have snapped under that treatment. Now, I ain't about to snap. I'm just sick and tired of solitary.  You know, Joe, you've got such a miserable record here that it wouldn't take much more to send you the state penitentiary. One more ordinary trick of yours, and you'll be sent there. Is that clear? Yeah. All right. You can go back to your room now and get back into routine again here. Hey, you guys, it's Joe. He's back. Yeah. He must have got tired of living by himself. Hi, guys. Can it kind of be? Joe, was it rough and solitary? What you guys reading? Give me that. Hey, that's my Bible. Take it easy. You're what? You guys lost your minds? Reading a Bible? That's only for goodies. You know what Ranger Bill says? He says the Bible is for everybody. And the Bible says so.  Yeah? What if we like it? Maybe we don't want to quit. Listen, you jokers. You'd better or else. Bill, you noticed change in fellows in last week? I'll say I have. What's causing it, Bill? I haven't been able to put my finger on it, pal. You know, Wayne? Yeah. Well, let us in on the secret, sonny, before all of our work goes up in smoke. It's Joe Mattson. Joe Mattson? Are you sure, Wayne? Well, the change has come over the boy since Joe's out of solitary, hasn't it? He's right, fellas. I was afraid this might happen. Joe have that much influence? I'll say he has. He's probably threatened every fellow in here with a beating if they turn religious or something like that. Are you sure Joe is the cause of the sudden change in the attitude of the boys? You can have my job if I'm not. He's a tough-ank, Bill. I see. Is the warden in his office? Yeah, I think so. Fine. I'm going to ask him if I can have a talk with Joe. Cheers, Bill. Thanks, Wayne. Come in, sit down, Joe. Joe, you know who I am by now, I'm sure. And I know who you are. What's more, I know your record here before I'm schooled. Yeah? Well, when do I get the sermon? Joe, let's talk straight from the shoulder, okay? No, I ain't going nowhere. I've got to listen to you. That's what the warden said. Joe, if you don't want to listen to me, you don't have to. You can go right back to your room right now. It'll be perfectly all right with me. What do you say? Eh, I ain't got nothing else to do. Go ahead, preach. You may have the other fellows bluffed into thinking you're a tough guy, Joe, but I know differently. Yeah? How do you know so much? I'm not able to answer that right now. But I happen to know a lot about you, things you did before you came here, before you made your mistake. So? So why the change in your personalities since you came here, Joe? Ah, that's my business. Mine, too. I think you're a fine lad, Joe, deep down underneath. Just because you made a mistake isn't any reason to go sour. Yeah, that's what you think. I'm going back to my room. Now, one more thing, Joe. Yeah? Even though your family has forsaken you, you still have two friends, myself and the Lord. Apparently Bill's talk with Joe was a waste of time. Joe's instigated another riot in the school. Only this time the situation is more serious. One building's on fire and another badly damaged. After a violent struggle, the warden and his men finally cornered Joe and his ringleader friends in a small building. The rest of the lads have been hurted back to their rooms. The warden sent for Bill and the Rangers. The warden's not happy at all about the whole thing. So the thing we got fire engines around here, the whole place was burned down. I should have my head examined for listening to soft-hearted fools. Teach them the gospel and they'll be good little boys. Poppycock, pure unadulterated bumbug. All the boys are back in their rooms, except Joe and a half dozen more, warden. They still on the laundry? Yes, sir. We've got them surrounded. They can't get out. When can get them out? We've tried. They've got ammonia guns rigged up. How in the name of common sense did they get them? I... I don't know, sir. I don't know. While you nimble brains were softening me up, they made the ammonia guns. They'll be the laughing stock of every penal institution in this country. Why did I ever let myself get talked into letting you gentlemen work with these boys? When we get this thing under control, things are going to change. I'm going to rule this school with an iron hand. I'll show you Sunday school teachers how to run a house of correction or die in the attempt. Wayne, get your men in tear gas those lads out of the laundry. When you get them out, they go into solitary. Bread and water for a month. I'll show them they can't run me around in circles. What's more, Jim Mattson's going to be transferred to the state pen after he gets out of solitary, and I'll get going. Yes, sir. Right away. Oh, wait a minute, Wayne. Keep out of this, Bill Jefferson. You've caused enough trouble already.  What? What are you talking about? I'm talking to you. The situation at this school developed under your own doing. We got in here too late to prevent this. Don't blame the gospel for your own shortcoming. Hit him again, sonny! Get out of here! I'm not going anywhere until I've finished my job. I'm going over to the laundry and talk to those lads. Bill, they've got ammonia guns. Ammonia guns don't scare me. I think I've got Joe Mattson's number. You guys, here comes Bill. Let him in. Maybe he can talk to the warden for us. Yeah, yeah, we could trust him. You guys ain't letting no cop in here. Get ready with your ammonia guns. We'll blast him when it gets near enough. Get a move out, he's almost here! What's the matter, you guys got ten ears? I ain't blasting no nice guy like Bill. You ain't, huh? You blast him or I'll blast you. You squirt ammonia on Jerry and Ned, and I'll let you have it right in the face. You'll hurt him, Joe. We like Bill. Open up, fellas. This is Bill. I want to talk to you. I'll let him in. Okay, Jerry. We'll keep Joe covered. Hi, Bill. Hello, Jerry. Let me have your ammonia gun, Joe. Turn the muzzle towards yourself, Joe. No funny business. Thanks, Joe. Let's put the ammonia guns on the table, fellas. Why'd you come here, copper? To tell you, fellas, that you're making it bad for everybody, including yourselves and me. You, Bill? Yes. How come you? Because I almost had the warden's soul in giving you fellas sports, shop, classroom studies, and most of all, church services, Sunday school, and Bible classes. Now you've upset the apple cart with this shenanigan. Why did not think of that before? We're only hurting ourselves. Yeah. I'm through listening to Joe. Me, too. All he knows is to be tough. He ain't got a brain cell working.  Here's what I think of you. Joe! Joe. Joe, you hit a federal officer. I'm sorry you did that, Joe. You hurt my faith in you more than you did my jaw. Why don't you hit me again?  It's all right, Jerry. Go ahead, Joe.  It's a matter, Joe. You're supposed to be tough. Knock off the wisecracks, fellas. I can't hit you again, Bill. I could have felt I hit the best friend he's ever had. I could send you to the state penitentiary for what you've done. I know that, sir. Well, I'm ready to take my punishment. Joe, you've changed. Yes, sir. Thanks to Bill and the rest of the Rangers. What made you change, Joe? Two things, sir. Yeah? Bill told me I had two friends. Himself and the Lord. Then when I hit Billy, well, he treated me with love and kindness. Nobody ever did that to me before. I knew then that I must find out how to become a Christian. Well, I'm giving you another chance, Joe. I guess I've learned a lot. Let's start from scratch again. What do you say, Joe? Well, I don't know what to say except, well, thanks. From now on, things are going to be different around here. Thanks to Bill and his Rangers. Boy, things are pretty tense there for a while. You know, boys and girls, when we let the Lord work out his plan for doing things, all of the big problems just melt away. Listen next week for more adventure with... Rangers!


So my beautiful people, I am back with another Saints Roll video and today I'm going to showcase to you guys how you can get yourself a helicopter so you can explore the entire map from the very start of the game as soon as you hit that spot where you can explore the open world. Is it going guys, my name is dpj and if you do enjoy the video leaving a like really helps out and if you like what you see and want to see more Saints Roll be sure to subscribe. Okay so you want to get yourself a helicopter so you can explore this map it's really this simple. Okay so from the very start the very first apartment you get as you can see on the map right here you will actually go all the way over here to about there in this area here guys there is a helicopter simple simple as that so we want to mark that spot right there and then just grab yourself a vehicle if you haven't got one in your garage simply just go and steal one it is this easy. Now if you're wondering how I got this supercar I've made a video on this already I can get this from the very start of the game as well but yeah so grab yourself a vehicle and just follow the path you've just marked on the map and it's easy guys now these helicopters are quite easy to fly as well now you get one within like the first very first mission like a tutorial mission but you quickly lose that and as far as I'm away can't go back and get it. Now I haven't tried selecting a vehicle leaving the helicopter in place and actually at the start of that mission you could probably leave the helicopter there and then use the vehicle and drive well I don't know I'd have to restart the game which I really can't be bothered to do but I'm pretty sure someone can confirm that in the comment section but either way guys this isn't a military helicopter not like the one you're using the tutorial or the starting mission but it still will allow you to explore the map and find things that I don't know why I've gone this direction but it doesn't really matter I'm still going to end up in the same spot either way get out of my way get out of my way mother get out of my way oh shit oh shit I don't want to wreck my supercar I do not want to wreck my supercar okay so around here why did you just jump in front of my he just jumped in front of my car what is going on what is going on okay so we're actually not too far away from it just want to take you about two or three minutes to get here depending on the car you're using maybe we've got a super quick car like this two minutes if you're a good driver unlike me if you've got a superbike two minutes if you're a good rider unlike me if you've got a slow car it could probably take you for five minutes but either way like I said once you get it you are good guys you are good I will warn you it is like a what is that a military base up here it's like the marshals thingy it looked like a prison to me I drove through it went around it got shut up by some crazy ass green beam assault rifles I thought yeah I'm getting out of there because I want to do explore the area if I get my uh come on come notority off is it well it's cool I can't even remember either way I got out of there yeah so you'll see that in a second anyway so I think you may have to go a bit off the road here I've got the wrong vehicle for that but don't really matter it doesn't really matter so I can see where we're at right here guys this way we go off the road so what do I do just calm down this way oh my car's all over the place you see that kind of like building there it's literally just by that so we head towards this you can see we're out on the map that's where we're out on the map and we'll see you if we come around here I'll be told to get I should be told to get out of the area it's in a marshall that big building up there that's when if you drive through that you get done over now interestingly this helicopter actually changes colour and does respawn here so you're good so if you want to come back here and grab this you can and then guys simply jump in it and fly now to fly this thing is A or what is it on that playstation is that the X button there you go and just fly around people it really is that simple do what you want to do now take it by that that marshall's base well I won't take you over because I don't want to get my uh my wanted up but it's brutal hey I did go around building I did fly over it see if there's anything there but I couldn't find anything good in there but probably something good in there probably later on in the game but yep guys this is how you get the helicopter uh fly around do you find anything interesting hit me up on my discord linked down below but guys if you enjoyed the video leaving a like really helps out if you like what you're seeing want to see more say and sure be sure to subscribe and hopefully my beautiful people I will see you on that next one


Speaking. You used like hiring on that, like. If we were to hire, it would be on our website. Yeah, my laptop broke like six months ago and I needed a job to get a Lappie. If you just want to take some notes on that, I can just tell you just real quick couple of minutes. I built a dog house like maybe two months ago and I just YouTube that. So that can be my regimen. I'm sweet to start like Friday. I'll transfer you through to her now now that she's producing. Good afternoon, my name's Virginia, this is Casey. Yeah, good day Casey. My name's Darren. I'll call right, just asking for a job on that. I'll use one of your computers and I can apply there. There's a bit more of a process behind us. So I can't. You wouldn't be able to use one of our computers because they are locked with our business information. If you tell me that, then like I can log in. I'll just be like five, 10 minutes. Bit more lengthy than that as well. Sort of struggling with your cash, actually. I'll be there on Monday morning. Bushy tailed, broad-eyed, right? I'll do that job better than anyone I've ever seen before. I also don't appreciate your language you're using. What language? English? All right. I'm peaking English to you, mate. What do you know about the blood bled swear word before, mate? Meh! I'll see you tomorrow.