Okay, so, my name is Evan Phoenix, and I am the Rubinius Lead Developer, and I work for Engineering, working on Rubinius, and we're going to talk about cats, no, Rubinius today. But just so you know, just so that we're all on the same footing here, I am a chronic procrastinator. So I think I added about 20 slides just in the last, you know, two hours or so. So, but that's okay. What I want to happen here, and what I like in every talk is for as things, as we kind of progress into topics, if you have questions, raise your hand. And when I get to a stopping point quickly, then we'll talk about those, we'll address those questions sort of in the moment rather than waiting towards the end so that hopefully we can kind of get in a discussion sort of throughout the presentation then. Okay, so hopefully I will be tickled pink by this question. But who is unfamiliar or has never heard of Rubinius before? All right, so two jerks and, all right, okay, so while I am, that's awesome. We had one person raise their hand. That makes me very happy. So that means that I have two seconds to do the following slide then. I was calibrating per person, right? So let's see, actually, let's see if this works. So what is Rubinius for you, sir? It's a re-implementation of 1.8. We strive to do as much in Ruby as we can and we make sense of use of testing throughout the project. Okay, we're done with that, sweet. We are metacircular-ish and currently the project is slow but getting faster. And I will kind of explain what I mean by metacircular-ish as we go on. Obviously a big huge thanks to Engine Yard. Without them, the project would not be where it is. They have very graciously allowed me to essentially work on this full time and, yeah, I mean, this would still be a hobby project. I probably would have abandoned it for, you know, a lolcat's clone by now. So now that that's done, we're all sort of on the same footing, we all know what Rubinius is and all of us but this gentleman are sort of familiar with where it's been. So we're going to go over really the state of things, where things are. I've given a lot of presentations about Rubinius before, about what it is, sort of features of it. Today, what I'm really going to be talking about is the thing that we've been working on for the last few months, which is really the new virtual machine that we've been working on writing, like I said, I think we've been working on it for the last six months or so. We just recently switched over and made it our main branch so that that's the branch that everybody is using now, which is a big step because that means that we've gotten it back to the really close level of completeness that we were at before. And if you followed me or you followed sort of the discussion about this new branch, you know that one decision we made was to write it in C++. And I've gotten flack for that, that's fine, I would have given myself flack. Because it is a sharp tool, but the decision, hopefully we're going to, I'm going to talk the next probably 20 slides about that decision, about why we made that decision and why I think it was actually a good decision. The three big things that it gives us that we didn't have before, and partially this is because we're sort of starting from scratch and taking what we had learned before and moving it forward is these three things, the type safety organization and architecture. I'm going to spend a lot, the next few slides are about type safety and then kind of the remainder are about the last two topics. So what is type safety? Well, that's when it actually is a duck. That doesn't just sound like a duck or quack like a duck, you test that DNA and it's a duck. So what we're going to do for these next few slides is go over what we had before.  And the following code is sort of close, but not exactly what we would have before. So this is an example of some code that you would see in the old VM. I'm going to kind of let you read this over. Essentially, the idea was given some string object, you just want to print out how big that string is. Now this code is a minefield. It is rife with the opportunity to spoil a otherwise wonderful day. The first place is right here, clow. Now what happens in this case if our self argument, which is passed in, was not a string and we asked it to get its size? Well, all of a sudden, get size is expecting a string and it's just going to seg fault on you right there. It's right out of the gate, spoiled your day.  And so this is sort of what we, the scenario that we had in the old VM where we didn't really have the ability to express the types of things in this case. Everything was an object and you just sort of hoped and prayed that the person knew what they were doing when they passed this in. It was sort of programming by prayer, instead of programming by contract. And there were ways to solve this. And we did solve it in many different cases in specific places we would solve it. This is sort of, this isn't how we solve it. This is a very quick example of, okay, well fine, just put guards in there, right? All right, we'll make sure that it's a string and then you get the size back and make sure that that size thing is a fix num and then do the operation. Well, if you're going to have to go through the whole everything, the entire code base and add these guards, you're going to have more guards than you're going to have actual code in the code base at that point. Just because the ability to express what was going on is completely lost. And this was a really big problem because it made the code incredibly hard to really read, to really get a feel on what was going on and where potentially you'd have problems with things. And so let's do the same thing but in the new system. So this is C++ code and it's considerably more straightforward, especially coming from with an object oriented background here. Now we can see that the tiniest primer of C++ that string is a subclass of object and it's got an instance variable basically called size. And there's a method, a class or a instance method for string called size int that goes through and calls a two int method on the size. And already we can see much more straightforward about the ability to organize that code. We're not cluttering up the code with guards or calling things as methods rather than as functions that have long prefix names. So already the code feels a lot more like something that we're used to. And in addition, we get things, too bad. In addition, we get things like we can declare actual types for things. So we see here that we've actually said that size is going to be a fixed none. And so we can bank on that to let the compiler at the front end do a lot more of our work of making sure that things are correct.   And now in C, you would just do a cast. You'd say, this thing, I know that it needs to be a string. I'm just gonna sort of cast it as such. So what we did is we added basically the ability to do safe casts to the system. So what we can do is we can do something like this. Where this get an object returns just something, just object. Again, this class names have the same hierarchy as they do in Ruby. And so what we did is we added these functions as try as and kind of that work just the way that you'd expect them to. Which is, as you can see here, as I'm asking object to be a string. And if it doesn't work out, it's gonna raise an exception. And this try as if it doesn't work out, it's gonna set it to null. So that you can actually do that as a conditional. And again, kind of, which is the same way. So what we've done then is we have taken this sort of model of where we had no types before. Everything was object. And we've added instead, now we've annotated everything with the ability to say, no, I need a string here, I need an array here. And then we've built, once we have that, we've allowed you to kind of escape the type system with casts that are safe. So that you want a string, okay, great, say that you want something as a string. And if it doesn't work out, great, no problem, it'll just raise an exception. I should note, I didn't put this in here that when you use these casts, like if you use as, and it raises a C++ exception called type error. That actually gets translated into a Ruby exception, a type error Ruby exception. So if you're going along in your VM code happens to do something where you passed in some, say that, get an object, return an array. And the code didn't really work out. You would get a type error back in Ruby land that would say, by the way, the VM couldn't figure out what was going on, you'd get a type error. So that in the previous, the previous VM, you'd actually get a crash, which would make it significantly harder to debug. So the big thing that hopefully you guys can see here is that now, where now we have this ability to have the, the actual class hierarchy inside the VM mirror the class hierarchy that's in Ruby. So we've drastically reduced the sort of cog, cogn, cogn, the dissidents between, between the VM and the kernel. And that has proved actually to be a really big benefit. Because now, as you're looking at the VM code, it's much easier to understand what's going on because you're already familiar with how those things would work in Ruby land. And we've just coded them to work the same inside the VM. Obviously, we, not all of them, but the methods that we do. So that's type safety. And that, that has, that has spared us a lot of, of, of grief. You know, early on in the, in the project, early on in the project, there was a lot of, of debugging primarily by myself that had to do with, oh no, I didn't expect this to happen and it crashes because I'm trying to use, like I said, a number as a string or something like that. And now we get these very nice way of, of both annotating what we, our expectations for the code and also making sure that when those go wrong, we get very nice way, very graceful failures. Yes. Hmm. It's a good question. So the question was, does this, the aspect of type safety in the VM indicate it would be nice to have some kind of type safety in the, the entire G of Ruby? I actually, I don't, I don't think so. Mainly because I consider the VM sort of the, really the heavy lifting part of, of the system. And I, I, I really like the fact that when, that it is going to do all of those kind of yucky bits having to do with really needing to know the types. And not needing to know the types is a luxury. And that's really why we're building, but that's why we're trying to build Ruby. That's why we're trying to build an, an abstraction and infrastructure to get to that point. So that you don't have to have the type safety parts. And so I don't, I don't necessarily think so. I mean, obviously the VM needs the type safety because at some point you need to, you know, it, it, it needs to not just act like a string, it needs to be a string. And that's kind of where the rubber meets the road. But no, I guess, I guess I don't. So, in the back. Doesn't that apply to some future world?  That applies to some future world where you might not like VM in Ruby, like to make it work, work, work, and then you want to have the type safety for Ruby. Was that a question or was that a statement? I couldn't, I can't tell from here. So I, it seems like it goes to make the Ruby a small Ruby over time. Right. So that's kind of, so the, the, so the question was, how does this play in with the idea of eventually making more of the VM written in Ruby? And this is why I kind of called that metacircular-ish. You know, we, obviously we try to write a lot in Ruby, but there are, there are times, you know, like I'm basically explaining the parts that we didn't write in Ruby right now. And so as we get closer down the road to this idea of, what if, what if you, what if we're writing Ruby code that's in some way being translated, I guess, to some, you know, like C plus plus or C or whatever it might be, what would happen then?  I mean, I'm not, we're not at that juncture yet. So I'm not going to solve that problem until we even fathom it. Yes. Sure, if everybody here, so you can possibly translate it. Sure. We're not believe, we're not doing anything extra with the type safety system. What we're doing is taking Ruby's type safety and bringing it down to the C plus plus level, throwing it up or raising a type error is Ruby's type safety. It doesn't say fault, it's, it raises error. And that's all that we're doing. We're just bringing that to the C plus plus. I think that's a better way. Sure. Yeah, so what Arrow was saying is, and that's a good way to explain it, that the idea is to, is to say, well, in Ruby, when you get something wrong, you get a type error. So let's extend that same idea to the VM to say, you know, Ruby already has the ability, you know, there are methods in Ruby that do not duck type. There are a number of string methods that say, I need the argument to be a string. And if it's not a string, I will raise a type error. And in that same way, we've extended that concept all the way through to the, all the way through the VM now. So that at any point in the actual VM code where you're manipulating something, if that types don't match up, you now get this type error so that it's sort of extended throughout the system. So let's move on. So the next thing I want to talk about here is exporting methods. So a big part of the VM is not just the ability to, you know, to run the code, is the exporting of what we call these primitive operations, primitives. And they do things, there's sort of two spheres of primitives. The first is things that you just can't do in Ruby. A good example is fix num add. You, you want to add three to four. There's, you have to at some point drop down to a lower layer to actually perform the integer addition. And so that's a place where you have to have a primitive for that. The other realm of primitives is things where we have sort of isolated these, you know, typically they're tight loops. A lot of times it's copying data that we want to, we want to keep fast. And so we'll implement those as primitives. So there's these two kind of levels of where we want to have the VM provide us with the ability to run specific code. We kind of consider it sort of named code. And I'll get to why that is in a sec. So we'll go back to size. And this time we're just doing size, sort of size int. And this is what it looks like inside the VM now to create a primitive. Before there was this long complicated process of adding things to lists and updating 12 files. And that's, those are, those days are gone. Now this is all you need. And we have a process now in our build that will go through and find all these markers and automatically hook all this up on the VM side. And so now what we can do on the Ruby side is we just do something like this. And as you can see the syntax for it essentially matches directly. So that now we've exported this method in the VM as a name, string size. And then we've attached it inside Ruby. So now we have created this very simple bridge between the two sides of things. So to pull it back in, now what we've also got is to add type safety on top of that. So we've got size, let's add another primitive this time string add. Okay, great, same thing. This time it takes an argument, no big deal. So we hooked that up in Ruby. Again, taking an argument. But one thing that, like I said before, is that what happens when we add this type safety into it? We say, oh, hey, we've got a specific type here. Whereas in the old VM, this would have just been object other. Now we've actually said, no, no, no, I need a string here. Don't pass me anything else. Don't pass me a number, don't pass me an array. I need absolutely a string here. And so what happens when you do this? Well, it behaves exactly as you would expect it to, which is you get a nice type error. So now the primitives are able to declare their types and the system will enforce all of that for you so that we've eliminated essentially the burden of having to maintain the primitive, maintain this sort of master list of primitives and do all your setup, before there was a lot of setup code that had to do an improvement. If you had to take things off the stack and make sure they're types, that's all gone. Now that is basically handle all for you directly. So any questions on that section? Let's move on to the next one. Josh? Let's try this stuff. Yeah, this one? No, that's the one. See what's with it? Yeah, you, um, so is that this?   Yes. So if you start in one world where you have a hierarchy, which has some pretty structure to it, you know, it's never even with a bunch of methods in places, you're going into another space that's a local hierarchy, but to transition from one to the other, it's a completely flat hierarchy. And did you think about how to retain the hierarchy using that company? The flattening, I mean, is something in this desire? Yeah, so I'll repeat the question a little fast. So the question was, it seems funny, you know, I've come, I've explained a lot about how the VM and the RELAND both share these nice hierarchies. And essentially to export an operation from the VM to Ruby, we are flattening it into this one namespace with symbols with names and that kind of thing. And have we thought about how to sort of integrate that? Well, you know, the team and I talked about this a lot. When I was first working on this system of automatically detecting primitives and exporting them, there was initially this discussion of, well, what if instead, you know, what if this, you know, instead of, I think the first, like maybe day two, I actually had this set up so that you just did Ruby.primitive and you didn't even put a name there. And what it did was actually, it generated some code that when the VM booted, it would actually go through and it would add a method called add that did X, Y, and Z to actually call this thing. And the reason that we decided not to do that and I'll explain that first is that essentially couples the VM directly to the names of, see, how do I explain this? It's pro, okay. Well, there's that. So, it's pro, so, okay, the boot process is kind of involved, is involved in this decision. So, when the VM first boots up, we actually have our kernel compiled into .rbc files, which I'll talk about here in a little bit. And they're loaded one at a time and they're allowed to basically run this normal Ruby code that go through and open classes and add methods and into aliases. There's sort of a restricted subset of things that they can do because there's not very many methods available, but largely they do, they're just running as code. And if we were to go through and want to add in sort of these things beforehand, there was no real place to do that. Our boot process is essentially run all these Ruby files, these pre-compiled Ruby files, and then you're done. And the VM exits when it's done with that. So, it would have broken up the boot process into something that we hadn't done before. So, this continued to make sense, basically having them flattened and exported like this sort of made sense. I think if we were to kind of export the hierarchy, I don't really, I think there would be a lot more magic. I think that the worry was that it would be, we might obscure it even more. So, I guess that doesn't probably answer the question, but that's the best I can do. So, on to the next thing, method dispatch. So, obviously we're going through a lot of low level stuff here. So, I talked about this a couple of times, and obviously this is, the reason I bring it up yet again is because this is obviously the core of a Ruby implementation, is how given, you know, basically given a receiver and a method, how are you going to figure out what method to run? Well, we've got essentially three mechanisms right now. We've got what we call hierarchy lookup, which is kind of typically how people explain how method lookup works.  So, you're going to look through basically a number of hash tables. What we call internally is lookup tables to find a method, an executable object. Well, that's extremely slow.  So, we added the global cache, and then we've also added an inline cache. I haven't really detailed those here, and I could talk about them at the end if you guys want me to. But they essentially allow us to cache this sort of these three pieces of information. The receiver, the method name, and the eventual destination method. So, that's the first step in calling a method. Now, number two is going to be obviously the execution of it. So, the way that we have it, the system setup now is every method in the system anything that is capable of being executed by the VM is a subclass of a class called executable. And it provides this sort of function pointer that tells you what to do. So, the VM after it's looked it up is basically just gonna call this thing. And what that lets us do is we can basically just have every primitive that's in the system be one of these functions so that when you go to run a method all you're gonna do is basically go, okay, I've looked it up, go execute this thing, and the code, right off the bat the destination code that you're gonna be running is one of those primitives like size like we saw earlier, or add. So then when you wanna run a Ruby method we use sort of this sort of specialized executor to actually make it faster. Now, and I can go over this more later too. The idea is that in Ruby the distribution of methods that take arguments is actually preware falls on the simple side. So you're gonna have a lot of methods that take like one argument. You're gonna have a lot of that take none, take two, take three. You're actually gonna have fewer that takes that say like use a splat, or and fewer that use optionals. It's not obviously zero and with the advent of DSLs and stuff we see that distribution go up but it's still pretty good. So what we do is we basically accelerate those cases. Those really simple cases that we can we hook them up inside the system so that the code to be executed right off the bat is going to reflect the argument counts of those methods so that we can make it nice and fast. And obviously we have a slower sort of fallback case for all the more exotic call argument patterns. So to kind of look back on this, this is sort of the critical path of the whole VM because method dispatch is the critical path. So we're gonna go through we're gonna populate a message and then we're gonna call a resolver, what I'd called trampoline, it's just a function in here that happens to be set up so that the VM is able or that the compiler is able to compile it when it compiles out to machine code it can actually do it as a tail call so that that makes it even faster. And that resolver, all it does is that the resolver is one of those three kinds of resolvers we saw, it's a hierarchy look up it's gonna be a global cache or it's gonna be an inline cache and it's gonna try and fill in the message as best it can. Well, it's not gonna, I take that back, it's gonna fill in the message period if it doesn't fill it in, then the system crashes and then we're gonna call out to the executor. So the idea here is and I've kind of gone through this path a lot because the performance of these steps is so critical, especially in Rubinius because with most of our methods actually implemented in Ruby, we hit this path vastly more than any other implementation just to say, what's a good one? Say like string percent which is like sort of like printf, right? That in 1.8 actually uses a printf whereas ours uses a really large set of Ruby code to figure out to parse what you needed using normal string methods and to dispatch to them. So this is really critical, really critical part so that's why I'm kind of giving you guys the intro on it. So another critical part is once you've actually executed that Ruby code what's the sort of the execute, what does the framing, by framing I mean like stack frames look like? Well, what we have is we have this, these method context objects that are storing information about methods that are run and they're chained together with references. So they're what you, what Lisp originally called this idea of a spaghetti stack so you create a method context object and it essentially just points to the person who sent to it. It's not organized like a C stack, it doesn't have anything implied with memory addresses or anything like that. It just basically says, this is my sender when you're done, go back to him.  But obviously if we're executing, if we're running a lot of Ruby code the speed that these things can be created is critical. When you first, when we first implemented this and this is true of all the small talks too when you first implement a really naive version of this you find that something like 80% of the objects allocated in the system are just method contexts because everything you do is gonna be creating one of these objects. So you really need to figure out the fastest possible way of doing this and a huge amount of the research in VM design actually is related to this singular concept of how to create these space to represent my context information as quickly as possible and how do I get rid of it as quickly as possible? So I'm gonna explain how we do that in Rubinius. So what we do is we kind of we put them in for a lack of a better word, a ghetto. There's a special memory of that only context live in. That's the only thing that can live in this very special section of memory. And what we do is if you observe what happens you find that the execution of Ruby code even though we've not restricted ourselves to being allocated to calling ourselves on a stack it actually follows a stack for the most part.  So if you were to model that you'd see that it just sort of bounces up and down. And so we can exploit that pattern to make the ability to allocate and de-allocate very quickly. So what we get is we get a section of memory that looks something like this. We're just gonna start allocating from the top and we're gonna go down. And this current is where the next one will go. And then what we get though is Rubinius has the ability, and it has the ability both as called and implied to reference the context. So a good idea of where it's implied is if you create a block. If you create a block you're implying that the context that that block was created needs to be saved, right? So if you need all the locals that were there you need to know what the value of self was in that case. So you need to retain that. Even if someone returns, that needs to be remembered because those blocks will continue to live on. So what we do is we have this context bottom that says what is the lowest on this graph? The lowest context that's actually been referenced by someone that someone's created a block with typically. And what we do is we save all those and then we continue to kind of fill in the bottom. So what you get is, and this would have been a great animation, but you get essentially a stack that starts at zero and it starts to fill and then it starts to come back. It starts to fill and as things get referenced this starts to move down. The top stays here. So essentially this keeps moving down and we kind of bounce up and down until it starts to get all the way full.  And this allows us to essentially turn this context creation into the same thing that would be used to create a stack frame in C which is essentially just adding a fixed offset to a pointer.  I'll just add that and fix it and then go on to the next thing.  This is another quicky little diagram that kind of shows the chain. These aren't contiguous in memory. They're just sender to sender to sender. What you can see is you get this sort of mixed mode of things. We've got normal method context for running a method. These block contexts are created to run a block. Native method contexts are created when you're actually calling out to C code which we're gonna talk about next. So this ends up being fairly linear and we exploit that to make it fast. So what we've got these native method contexts in there, so what are those? Let's talk about those for a second. So early on in the project, the decision was made that, well, we're writing this in C. It would be a real shame if we couldn't run all of those extensions that are out there today. And so we decided we really should try as much as possible to be able to run all those extensions. So again, we're talking about this little method context here. And the reason is that C, especially for a lot of things continues to be the standard. You see a lot of really important pieces of functionality in the Ruby community implemented as extensions. There are currently 138 extension gems and those are things, these are a few of the quickies. If you could imagine not having access to these gems, that's what we're talking about.  And so we've got this great body of work that we wanna make available. So what we've done is to make a process where all you need to do is recompile that extension in the presence of Rubinius essentially and then we can use it. Obviously this is not complete but we're working towards that. In order to make that happen with the way that the rest of the system executes, we have a few little pieces.  Koichi talked about this a little bit as well where in order to actually implement it, you need to know every time an object is written to and you have to allow, well you don't have to, but it's pretty important that you allow for the ability to move an object. So if an object was over here, you'd really like the ability to compact memory and to move objects around. And so the C doesn't really like that. And so what we've done is we've given, we have to add sort of an abstraction layer on top of it so the extensions can run. That's where we get this indirection from. So that's a little tricky. We use a stack technique that allows us to run code actually in a different section of memory so that we can run the extensions sort of in a side, sort of by themselves, sort of segregated and they can do whatever work they need and they can actually contain any kind of context information, they can use normal C locals and that kind of thing and they can call back into Ruby code and the Ruby code can return back to it and it doesn't necessarily even know that things have happened. So that is a bit tricky. And one thing that we have is this ability to recover from a segfault. So obviously you have to be really careful when you recover from a segfault because you're not really sure what segfaulted, but it's actually pretty cool and this is kind of an older example but this is an example of what I mean. We're able to do stuff like if this code up at the top obviously is gonna try and read from the address four which is very unlikely that you're able to read that and you get this nice memory segmentation error inside Rubyland. And when you're debugging your extension and you're not sure what's going on or why the interpreter just crashed being able to have these errors that say, oh, by the way, your extension test.c crashed here is actually really nice. One thing that we've thought about eventually providing is the ability to have backtraces inside this code but that's not there yet. So I only have a few minutes left so I'm gonna skip this section and I'm gonna talk a little bit about performance because it got brought up during Koichi's talk specifically about Rubinius and so thank you Koichi for your kind words. So this is sort of the reality of the situation. We're doing really well on the micro benchmarks things like garbage collection and method dispatch. I'm extremely pleased with the way that those things have been going. We've been spending time on specifically method dispatch. That's kind of the section that I talked about before. We're doing okay on the macro benchmarks. We're sort of hit or miss. It depends on what is being benchmarked. A lot of the macro benchmarks do things like they ended up calling some string method that we happened to implement in a very naive way and all of a sudden our performance just goes through the floor. So it's a little bit hit or miss. And on the mega benchmarks, if you will, I would consider mega benchmarks something like running a large application. We're pretty poor. And I'm gonna tell you why sort of in my solutions part. So how are we gonna make it fast? As Koichi-san said, it's a slow kind of curve as we move up and the idea behind the projects has always been if we have put all of this pain on the developers of the project, in order to make the project even decently fast, we have to make all of this Ruby code that we use as the kernel fast. That means if we can make that code the speed that 1.8 was, then you all of a sudden you've accelerated every piece of Ruby code that you might be able to run. And so I think that's the big benefit there. So we're sort of exploring a bunch of different options. And this is just a couple. We've been doing a lot of recent research into how we can use LVM. Again, Koichi talked about this in context of YARV a little bit. It gives us sort of a high level abstraction for the ability to be generating machine code for Ruby methods, which is obviously going to be higher performance than using an interpreter. And we're looking into both the ability to do that on the fly so that as methods are added in, we're generating machine code. And also sort of in recent days, the ability to do this sort of upfront. So perhaps the kernel is all pre-compiled into machine code and therefore that gives us sort of a temporary leg up while we are able to make the rest of the code fast. The other one that I kind of mentioned earlier is this idea of improving algorithmic performance or efficiency here. I think that is actually going to be really big. The project is largely focused on compatibility right now. We're using the RubySpec project to really get us to a level of 1.8 compatibility. And then once we're there, then we're going to start to go back and say, okay, we're complete. Let's go back and let's say, how can we make this method faster? And working on that as an algorithmic approach and essentially refactoring and figuring out where are the things that we're spending the most time on? How can we make those fast? And maybe that's again the time where perhaps we've figured out, okay, this really should, we're doing this, you know, big O end to the 10th power craziness, right? And we can reduce it. Maybe it's that we decide, okay, we really need the ability to copy data really quickly. Let's add that as a primitive. So a lot of that is going to come out of basically continuing to push on the boundaries of what we have, how we've structured that code. And I want to end with a good quote for any project that goes on for a long period of time and doesn't necessarily seem to make a lot of progress, but you feel like it is.


And you enjoyed a good season, last season in particular, narrowly missing out on the playoffs with Dale and I think you've got 10 goals from midfield. Is that kind of the part of your game that you do enjoy getting forward and trying to contribute with goals from midfield? Yeah, that's what I pushed myself to score goals so that's something I want to keep adding to. Obviously last year was a good year for me in front of goal and I want to keep doing that through this year as well. Yeah, my aim is to get a few goals for the team and hopefully help out other lads, other strikers, other defenders who score goals and it's always good to get on the score sheet. And when you've got likes of yourself, obviously Stephen Warner, your team from Burton, I've been coming in kind of a breath of fresh air. I guess obviously you've not been involved in the defeats previously. Do you think you can kind of give that uplift and that confidence boost to the rest of your new teammates really? Definitely, it doesn't obviously feel like we've lost like four or five on the bounce so we've got to give that a bit of fresh air for the team. So I think if we can do that then it'll only help the team out and obviously going into Saturday's game is a crucial game for us and if we can add that little bit of confidence which maybe a couple of lads might not have because it's difficult when you lose a few games then it can only be positives. And you, touching on Saturday Oldham Athletic, the opponents next weekend, do you feel you'll have benefited, I guess obviously you've got your first debut at the weekend coming off the bench. You'll have a week of training this week, do you think that will benefit you and hopefully give you a chance of pushing into that starting 11? I hope so, that's the aim I want to get in the starting 11 and obviously it's good to get there in the minutes. I want to be playing like everybody else does so I've got to earn that. So this week's a good week for me to show the manager and the staff and everything that I can play in the starting 11. And when I get the chance I'll prove to them that it's worthwhile.


Good morning, and welcome to the 16th meeting in 2022 of the Local Government Housing and Planning Committee. Annie Wells, Marie McNair and Mark Griffin will be joining us remotely today. I would ask all members and witnesses to ensure that their mobile phones are on silent and that all other notifications are turned off during the meeting. The first item on our agenda today is to consider the non-domestic rates coronavirus Scotland Bill at stage 2. We are joined for this item by the Minister for Public Finance, Planning and Community Wealth, who is accompanied by Scottish Government officials, Sandra Reid, who is the bill team leader, David Smith, a lawyer and Gavin Seller, who is the parliamentary council. I welcome all to the meeting. Members would refer to the marshaled list and groupings for stage 2 of the bill, which were circulated to members on Thursday. I call amendment 1, in the name of the minister, in a group of its own. Minister to move and speak to amendment 1. Thank you very much, convener, and good morning to the committee. The principal rule in this bill, broadly speaking, is that, in calculating the net annual value or rateable value in relation to any property in the 2017 valuation role, no account can be taken of any matter occurring on or after 2 April 2020 that is directly or indirectly attributable to coronavirus. This date is consistent with non-domestic rates policy regarding the definition of material change of circumstances and the circumstances when general economic factors can be regarded as relevant to a change in valuation. Amendment 1 adds a new subsection to section 1, which seeks to make clear, for the avoidance of any doubt, that in the application of the principal rule in the bill, 2 April 2020 is the effective date from which a determination cannot reflect any matter attributable to coronavirus in rateable value or net annual value. It clarifies that, in calculating the net annual value or rateable value of any lands and heritages, for the purposes of any entry in the valuation role, should a matter attributable to coronavirus first occur before 2 April 2020 and to continue to occur on or after that date, no account can be taken of that matter with effect from 2 April 2020 onwards. This amendment aims to strengthen the policy intention, and we have discussed it with assessors to ensure, from a technical perspective, that it does that. I hope that members will agree with the rationale that I have set out and that they will vote for amendment 1, and I move amendment 1 in my name. If any members have any comments or questions, I invite the minister to wind up. The question is that amendment 1 be agreed, are we all agreed? The question is that section 1 be agreed, are we all agreed? I call amendment 2 in the name of the minister, grouped with amendment 3, minister to move amendment 2 and speak to both amendments in the group. Broadly speaking, the aim of this bill is to ensure that, with effect from 2 April 2020, no matter attributable to coronavirus can be taken into account in a non-domestic property's net annual value or rateable value in the 2017 valuation role. Section 2 of the bill, as introduced, meant section 2 on E of the Local Government Scotland Act 1975, which places a legal duty on assessors to alter the valuation role in certain circumstances while the role is in force, which is up to 31 March 2023 for the 2017 role. It expands on these circumstances by adding the coming into force of this bill. As the committee are aware, we have extended the disposal date for appeals until 31 December 2023, so that appellants can make an informed position as to whether they wish to pursue an appeal or not when Parliament has finished considering the bill. Should any appeals continue to be pursued after the passage of the bill, it is possible that they may not be determined by 31 March 2023, given the time that it can take for complex appeals to be determined. This amendment removes section 2 and introduces a new provision altogether. This creates a new duty on the face of the bill, requiring the assessor to apply the rule in section 1 of the bill to the current valuation role and to make any resulting change to the net annual value or rateable value of any lands and heritages. The new provision also makes it clear that this obligation applies both while the current 2017 valuation role is still in force and thereafter. Our intention here is to make it very clear that, should appeals continue to be pursued after the bill is passed and should any values be reduced with effect from any period prior to 2 April 2020 as a result of a matter attributable to coronavirus, the assessor would be required to reverse that change with effect from 2 April 2020 in the 2017 valuation role. As explained, there is no change to the policy intention. Those amendments are intended to strengthen the policy intention, and we have discussed them with assessors to ensure, from a technical perspective, that they do that. I hope that the committee agrees that this new wording makes that intention clearer, whilst also recognising that any Covid-19 appeals that appellants will wish to pursue may not be resolved by 31 March 2023, particularly given the extended disposal deadline of 31 December 2023. Amendment 3 is consequential to amendment 2. It adds to section 3 of the bill a definition of the term assessor for the purposes of the bill and ensures that reference to this term in the bill are interpreted consistently with references to existing legislation. I hope that members will vote for those amendments and I move amendment 2. Do any members have questions or comments? I invite the minister to wind up. No further comments, convener. The question is that amendment 2 be agreed. Are we all agreed? I call amendment 3 in the name of the minister already debated with amendment 2 and invite the minister to formally move. I am a con. The question is that amendment 3 be agreed. Are we all agreed? The question is that section 3 be agreed. Are we all agreed? The question is that section 4, 5 and 6 be agreed. Are we all agreed? The question is that the long title be agreed. Are we all agreed? That ends stage 2 consideration of the bill. I thank the minister and his officials. Mr Arthur will remain at the table for our next item of business, but I now suspend the meeting to allow for a changeover of witnesses. The next item on our agenda for today is to take evidence on the non-domestic rates valuation notices Scotland regulations 2022 from Tom Arthur, Minister for Public Finance, Planning and Community Wealth. Mr Arthur is joined for this item by Scottish Government officials Anouk Berthier, non-domestic rates policy and Susan Robb, who is a solicitor from the Scottish Government. I welcome the minister and his officials to the meeting. Before I open up to questions from the committee, would Mr Arthur like to make a short opening statement? Certainly. Thank you, convener. Thank you also to the committee for the opportunity to give evidence on a second piece of NDR legislation today. The Scottish Government is keen to ensure that non-domestic property valuations are better understood by ratepayers. The draft instrument that we are considering today increases accountability in the non-domestic rates system ahead of the 2023 revaluation. The Barclay review of non-domestic rates called for assessors to provide more information to property owners and occupiers when making rateable value calculations. The Barclay Implementation Appeals subgroup, an expert group, set up to inform advice to Scottish ministers in respect of NDR reforms to the appeal systems, specifically recommended that assessors should provide alongside property valuations the addresses of properties, the rental evidence of which was used to inform the calculation of the basic rate applied to the property. It proposed that four categories of properties be covered in the first instance—standard shops, offices, warehouses and workshops—and that that would be expanded in future. We consulted on a draft instrument that sought to require that assessors provide this information in draft and final valuation notices in respect of revaluation. On the one hand, some responses called for the proposed information sharing requirements on the assessor to be expanded to more property types or to more valuation methodologies. On the other hand, some raised concern should these requirements be expanded over the potential provision to thub parties of confidential and commercially sensitive information such as trading accounts or lease details. We considered this and, as a result, this draft instrument now goes beyond the appeals subgroup's recommendation. It requires that for 32 categories of property valued using the comparative method and the basic valuation rate, the assessor must provide the addresses of comparable properties used to calculate the rate and state where the information can be accessed. Requiring that a list of addresses be produced, only where two or more properties were used in comparison for the valuation, will avoid the risk that commercially sensitive information can be worked out in directly. I believe that our response to the consultation demonstrates our commitment to greater accountability in the rate system, while ensuring that our reforms do not place an unrealistic burden on assessors. I hope that members will welcome this, given the points that were raised about assessor workload in its stage 1 report on the non-domestic rates coronavirus Scotland bill. We remain committed to greater accountability in the rate system and will explore how to expand on those information sharing requirements in advance of the 2026 revaluation. The instrument also contributes to modernising the NDR system by allowing for draft valuation notices to be sent electronically where that has been requested by the owner or occupier and it has been agreed in writing between the assessor and owner or occupier. I hope that members will support the draft instrument today. I now open up the session to questions from members, and I would like to begin. You touched on the specific 32 property classes a little bit in your opening statement for which additional information will need to be provided in respect of the valuation. Can the minister explain the rationale for the selection of these 32 property classes? Certainly. There are a number of aspects that I touched on in my opening remarks. One is the need to ensure that we recognise issues around commercial sensitivity. That is why there is a focus on the comparative methodology as opposed to the restriction expenditure or the constructor method. There is also the practicality of delivery and recognition of assessor's workload, which I also touched on. We have a revaluation from 1 April 2023. We have a one-year tone date that assessors are working to. We also have, for the first time, assessors who have been required to produce a draft valuation notice for 30 November of this year. Taking all of that into account and through engagement and collaboration with assessors, we settled on the 32 classes that are included in the draft order. I do not know if there is anything that you would want to add. I would like to bring in Marie McNair with question number two. Thank you, convener. Good morning, minister. I was wondering if you could provide further details on the Scottish Government's position on expanding the list of types of properties for which the additional information must be provided. As I said in my opening remarks, we are committed to greater accountability and transparency in the non-domestic rate system. I recognise that it is of great interest to members in this Parliament and to businesses across Scotland. Ahead of the revaluation in 2026, we will explore ways in which requirements can be expanded to allow for a greater share of properties to be on the valuation role. However, it was sensible, in the first instance, to focus on properties using the comparative method of valuation because there was aforementioned commercial sensitivities that we would come in to play with the other methods of valuation. Okay, thank you. I am now going to bring in Annie Wells with a question. Good, convener, and thanks minister. Just following on from Marie McNair's question, when might any expansion to the list of properties covered come into effect? Thank you. We have set out what we are intending to do for the revaluation for 2023. The next revaluation is scheduled for 2026, so we will continue to work and look at ways in which we can expand the amount of information provided ahead of that revaluation in 2026. Of course, Parliament will be fully notified and included in that process. Do you have an actual timeframe in mind? I know that you are saying 46, but is there any plans in the meantime? The revaluation is scheduled for 2023. We have had a tone date in April this year. We have a one-year tone date, so the next tone date will be April 2025. The revaluation will be from April 2026. What between the revaluation being completed and the next revaluation will be the period in which the list can come into a further consideration of how more information can be provided and what additional information can be provided. That can be considered in that period. As I say, we are trying to strike a balance to deliver as much information as possible across as many classes, but we are having to recognise the issues that I mentioned around commercial sensitivity and, importantly, assessor workload. We will, following this revaluation, continue to engage with assessors and consult them on how we can further expand the amount of information provided ahead of the revaluation in 2026. Thank you, minister. Thank you, convener. Okay, thank you. I am now going to bring in Paul McClellan. Thank you. Morning, minister. Morning, panel. Minister, you can touch on this in the opening statement. Some stakeholders commented that address information itself is insufficient and that further details such as rent values should be provided. I don't know if there's anything else you want to add to that at all. I would really just reiterate the point that I made that this was ultimately from where I was agreement reached with the Barclay Implementation Appeals subgroup, and he did consider a wide range of options. Clearly, it comes back to that point around commercial sensitivity. Another point that we noticed is what the IWRV said in response to the consultation, where we recognised it by providing addresses that provide a sufficient level of information for ratepayers and, indeed, professional representatives to do their own research. Thanks, and a question from Miles Briggs. Thank you, convener. It was further to the previous question with regards to expanding that information and whether or not that is something that the Government is looking into to go beyond just address being provided to assessors. Again, we will consider what we can do. I can understand that one of the concerns would be that we start to factor in information that could be on rental agreements, lease, cost of building, when we get into the territory of commercial sensitive information, and that's particularly acute when we look at the other two methodologies, receipts and expenditure and constructive methods. It also touches on, for example, the issue of hotels, restaurants and pubs in a way in which the IWRV is calculated as well because turnover is put into that process. We have to consider those matters very carefully, but what I'm committed to and the Government is committed to is to ensure that we can provide as much information and as much transparency as possible so that users of the non-domestic rate system have the greatest understanding of how the RVs are calculated. I want to ask you a question on the wider issues that apply here. It's about the criteria that the assessors use to set rateable values and you've explained quite clearly that they'll provide a set of equivalent or adjacent addresses upon which the assessment was based. Is the current economic circumstances ever a factor in the equation? You can imagine a scenario where adjacent shops are perhaps shut, so why should a rateable value go up if adjacent properties are closed and why does that represent market value rather than the assessment of the practical circumstances that are evident in a local economy? I'll obviously, as you'd expect, caveat my answer by recognising the independence of assessors. It's apropo of the legislation that we were considering earlier on. General economic conditions and general market conditions are best considered at a revaluation and the reforms that we have implemented from moving from a five-year cycle to a three-year cycle from a two-year to a one-year to a one-year mean that valuations will be more reflective of market conditions at prevailing at that time. It is, of course, for individual assessors in the legislative context in which we operate to determine the RVs for properties in a well-established process for appeals to be raised by individual ratepayers should they wish to. Is it part of the criteria—I don't know who sets the criteria that they use—but is that part of their consideration or should it be? Can you imagine the situation in which rateable values just go up and up and up? Perhaps a lot of shops in all of our high streets remain closed, so it doesn't seem to make sense that the RV would increase if local economic circumstances point us in a different direction. The point that I would make is that RVs derive from net annual value and that is derived from the reflection of what would be the rental income for a property in the open market in Canada a year. That rental value is ultimately going to be determined by market forces in itself, so that will—that prevailing economic conditions nationally and within a locality will ultimately, just by the way the methodology works, feed into how net would have been considered and consequently the RV. That is factored into the process and that's where the importance of revaluation and the importance of having revaluation in a three-yearly cycle now with that tone date of one year to ensure that when the revaluation comes into effect it is up to date as it possibly can be and that is of course a reform that we brought forward ahead of schedule. I thank the minister and his officials for their evidence today and we now turn to agenda item 3, which is consideration of the motion on the instrument. I invite the minister to move motion S6M-04283 that the local government housing and planning committee recommends that the non-domestic rates valuations notices Scotland regulations 2022 be approved. Moved. Thank you. Do members have any further questions? The question is that motion S6M-04283 in the name of Tom Arthur be approved. Are we all agreed? We're all agreed. Thank you. The committee will publish a report setting out its recommendation on the instrument in coming days. The final item on our agenda for today is consideration of the local government pension scheme Scotland miscellaneous amendments regulation 2022. There's no requirement for the committee to make any recommendations on negative instruments. Do any members have any comments on the instrument? No comments. Is the committee agreed that we do not wish to make any recommendations in relation to the instrument? We agreed. Thank you. As that was the last item on our agenda today, I now close the meeting.


Welcome to the Tick Mill Update. I'm Kiana Daniela, the founder of the Investeva movement. Before we get started, make sure to subscribe to the Tick Mill YouTube channel and please support us by liking and sharing this video with your friends. On Monday, after hours, which basically was Tuesday morning during the Asian session, the RBA knocked the Australian dollar off. As it said, even though the rates are at historic lows, they could go even lower if needed. So the official cash rate was kept at its 0.75% record low. On Tuesday's London session, we have the Eurozone Zoo Survey for February coming out. Today, I'm looking at the pound dollar pair, which remains below the daily HMO cloud and has recently completed its pullback. The future cloud is getting thicker on the bearish side. The highs have been getting lower in the past couple of months. So the technicals and the sentimentals are pointing to further drops, potentially towards the key to open up your tradesman levels at 1.29 and 1.274 respectively. Now, do you think the pound dollar pair will continue under bearish pressure? Head over to the comment section and let me know. Of course, trading in the financial markets involves a risk of loss and it should only trade the money that you can afford to lose. If you like this video, give it a thumbs up and subscribe to the Tick-A-Mill YouTube channel. I will get back to you with more updates tomorrow.


A fiery horse with a speed of light, a cloud of dust, and a hearty hyosilver! The Lone Ranger! Before this exciting adventure, a word from our sponsor. General Mills, makers of Cheerios, the ready-to-eat oat cereal that gives you go-power, and Wheaties, the breakfast of champions, present by special recording, The Lone Ranger! Hi there. This is The Lone Ranger speaking. Out here in the west, we have a couple of champions who are really doing okay. Champion Bob Maynard. He can grab a thousand-pound steer by the horns and toss it to the ground like it was a three-day-old calf. And Bronk busting champ Bob Burrows. The way he can stick on a mean, side-winding bronk, you'd think he was glued to the saddle. They're both great rodeo champions, and both eat Wheaties. Have that ever since they were youngsters. That's a good example to follow. With his faithful Indian companion, Tuttle, the daring and resourceful mask writer of the plains led the fight for law and order in the early western United States. Nowhere in the pages of history can one find a greater champion of justice. Return with us now to those thrilling days of yesteryear. From out of the past come the thundering hoofbeats of the great horse, Silver! The Lone Ranger rides again! Come on, Silver! Let's go, big foe! I'm Silver! Three army wagons loaded with supplies and ammunition and guarded by a small escort moved slowly through a valley in the direction of Fort Worth, Texas. The Sergeant in charge of the escort rode his horse beside the lead wagon and was talking to the driver. We were warned to watch for trouble. Seems when the army scouts reported unrest among the commandeers in his territory. Yeah, I heard about it, Sergeant. There's a rumor that some white men are arousing the Redskins nearby.  Get him! Get him! The three wagons and the small escort tried to outrun the attacking horde. Their attempt was unsuccessful. That night the commandant at Fort Worth, Colonel Bailey, discussed the attack with his aide, Lieutenant Poole. The situation is very serious, Lieutenant. Only one man lived to tell us the details of the attack. He seemed to think there were hundreds of Comaches. The Indians are better organized than we were led to believe, Colonel. If they learn our desperate need for ammunition and reinforcements... That's what I fear. We have a hundred men here, and our ammunition is low. An attack on the fort would beat a disaster. Undoubtedly. I've already sent a courier to Fort Sherman asking for more ammunition and reinforcements. But it's a question whether the men on ammunition can get through to us. Frankly, I'm very much worried by the situation. We'll have to hope for the best, sir. I know. If the Comanches should be successful in taking this post, there'd be a general uprising in the territory. The only thing we can do now is wait and hope that help gets through to us. The following morning Malone Ranger and his Indian companion, Toto, left their camp near Dallas and rode toward town. Malone Ranger had disguised his features and rode without his mask. He was saying... We'll ride to the show grounds and see Hank Pickens, Toto. From the number of painted wagons we saw on the trail last night, Hank must have added considerably to his road show. That's right. He remember when he'd have just one wagon, sell medicine while fellow Duke Jig get crowd. Yes, his medicine was supposed to be a cure-all. But he gave it up after people began demanding their money back. I'm sure he's doing well. Now he has just a good show. I like Hank. I'll be glad to see him again. Come on, sir. Later at the show grounds, the lone ranger and Toto pulled to a stop at the godly painted office wagon.  Oh, sure glad to see you. But where's the mask, man? How come you're riding with this? Hello, Hank. I decided the mask would cause comment, so I disguised my features to come here. Hey, it's you! Man alive, am I glad to see you two again. How long are you staying here in Dallas? A week. Then we head for Waco. Didn't tend to stop near Fort Worth a couple of days, but after we heard about the attack and massacre... Attack and massacre? Yeah, heard about it in town this morning. Seems three army wagons with an escort were attacked by Comanches. Where? In the valley between here and Fort Worth yesterday afternoon. We didn't know that. Oh, sure, don't look good. Of course I figured they wouldn't attack my wagons. Indians seem to think the painted wagons are moving totems or something like that. But the performers were uneasy. So I told them we'd skip Fort Worth for now. I understand their uneasiness. From what I heard it seems there are some white men riling up the Redskins. Oh, they ought to be strung up for what happened yesterday. They'll be punished when they're caught, Hank. Thought I'd go to town and find out all you can. I'll ride to Fort Worth and talk to Colonel Bailey about the situation. I'll meet you in camp tomorrow morning. We'll see you again, Hank. Adios. Bye! The lone ranger who again wore his mask was known at the fort and was immediately taken to the Colonel. Colonel Bailey greeted him with evident relief. Hello, my friend. I'm more than glad to see him. I heard about the attack, Colonel. Todd and I were over near Dallas when we got the news. I had no idea you were in this territory at this time. Please sit down, sir. Thank you. How is the situation here, Colonel? Not good. We have only about a hundred men here, and our ammunition is running low. A survivor of the attack reported that they were at least 300 comanches. We couldn't withstand an attack on the fort at this time. It's rumored that white men are behind the uprising. Yes, so we understand. I've sent for more ammunition and reinforcements. I know the most men I can expect from Fort Sherman would be about a hundred. If they get through with the ammunition, we'll be all right here. But if they don't... I'll meet them near Dallas and help in any way I can to get them through safely. If the comanches take this fort, it will be disastrous. Exactly. What with you to help? I have no hope, sir. I'll try not to fail you, Colonel. I'll leave it once for Dallas and watch for the reinforcements. I'll give you a note of identification. Then I'll wait and hope for the best. That night in a shack near Dallas, two tough-looking men listened as a renegade army scout spoke. Blackheen. I found out the Colonel sent a courier for more ammunition and reinforcements. When do you think they'll be coming through? Three or four days. We'll have the comanches attack in the same valley. Once the reinforcements are out of the way and we get the additional ammunition, the rest will be easy. The Chief says if his braves take Fort Worth, other tribes will join him in a general uprising. The help of the comanches will be able to take over this entire territory. Yeah. I promise the Indians plenty of land, cattle and horses if they help me get control. Well, as I see it, it's just about in the palm of your hand, Blackheen. We'll know by the end of the week. Come on, we'll see. We'll go have a power with the Chief right now. The following morning, the lone ranger met Tonto at their camp. Well, easy. It's any big fellow. Tahi Kimasabi. Tahi Tonto. I talked to Colonel Bailey. He expects a hundred men from Fort Sherman and some ammunition, which is needed badly. He fears there may be a attack between here and the fort. That may be Kimasabi. We do some scouting. Pine Comanche Village and Hidden Canyon in Hills. There are about 200 braves. The report of the survivor was correct. Ah. Because of that last attack, the Indians have guns and ammunition. They'll be sure to attack the reinforcements. Not good. We must find a way to get those troops and the ammunition through safely. How we do that? I don't know. Tonto, I have an idea that may work. I'll ride to meet the reinforcements before they reach Dallas. You go to the show ground and tell Hank Pickens his plan. The following morning, four army wagons and the mounted troops moved along the trail from Fort Sherman to Dallas. The captain in charge was speaking to the men riding with him. As I understand it, we're safe enough as far as Dallas. There we are. Hey, look. A horseman coming toward us at a gallop. Squadron! Oh! He's wearing a black mask. Cover him, men. This may be some trick. Aye, sir. Boom! Good morning, Captain. Yes, sir, you're covered. Raise your hands and keep them up. Just a minute, Captain. I came to meet you. Quiet. We've been warned there are white men working with the Comanches.  After that, you'll have some questions to answer. We'll continue our lone ranger adventure in just a moment. Diving Doris is 13 and she is a diving queen. She can do a flip because she knows she's got go power from Cheerios. Yes, she's got go power. There she goes. She's feeling her Cheerios. Cheerios. Cheerios. That's a mighty good idea for you. Just make sure you eat a big bowl of Cheerios and milk every breakfast and you'll get go power, too. Because a Cheerios breakfast is loaded with proteins, vitamins and minerals. The very things that help build healthy bodies, strong bones, good red blood and muscles. Why they'd be the sort of breakfast you'd go for even if they didn't taste so good. And they do taste delicious.  So that's for you. Swell tasting Cheerios and milk for go power. Eat them every morning and you'll hear... She's feeling her Cheerios. All to continue. When the lone ranger met the reinforcements, he was covered by guns as the captain in charge threatened to disarm and unmask him. In spite of the captain's order to be quiet, the masked man spoke sharply. I came here to help. I've come from Fort Worth and I carry a note signed by Colonel Bailey. Why would the Colonel trust a masked man? You might read the note and find out, Captain. Keep your hands up. Man watch him closely while I search his pockets for the note he mentions. Yes, yes, sir. Easy there, easy boy. Come on. The captain rode beside the lone ranger and found the note in his pocket. He read it quickly, then spoke. But this identifies you as the lone ranger. That's right. I'm sorry for the reception you received. I've heard many glowing reports about your help to the army in the past. That's all right, Captain. No harm done. I rode to meet you in order to discuss a plan that may get you safely through to the fort. Good. We'll have our discussion as we ride, sir. Very well. I suggest we get going, Captain. Right. Squadron! Fire! Even after darkness fell, the wagons and froopers continued their journey. It was well after midnight when the lone ranger led the company around the town to the show grounds. A short time later, the lone ranger met with Hank Pickens and the captain in Hank's office wagon. Hank, I remembered what you said about the Indians' attitude toward your painted wagons. The idea struck me that those ten big painted wagons would easily carry the ammunition and the troopers. Well, you're welcome to the wagons, my friend. My regular drivers will take them through and bring them back later. What about our horses? Captain will keep them here at the show grounds. Till we get word it's safe to drive them to the fort. Then my roust abouts will take them to you. The main thing now, Captain, is to make certain there's enough men at the fort to withstand an attack there. I agree. We'll go through with your plan, sir. Good. If the wagons move during the night, they'd suspect something. That's right. We always pack up during the night and start for our new location at dawn. Then we'll leave here at dawn, with the ammunition and troops hidden in those painted wagons. At dawn, the gauntly decorated wagons left the show grounds and headed toward Fort Worth. The lone ranger and torto took a roundabout route, impossible for the wagons to follow, to the far end of the valley, where they waited for the wagons. Concealed on the thickly wooded slopes, the command she's also waited and watched for the appearance of the army wagons and troopers. Blackie, waiting on one of the slopes, finally spoke. Hey, wagons are entering the valley. The west is on the opposite slope. I'll tell them to start his group in the attack when we started shooting. We'll wait till the wagons and troops are passing. Wait a minute, Blackie. Look again, huh? Those are show wagons. Welcome. You're right. The show must have pulled out ahead of the troopers. We'll keep out of sight while they pass. The show wagons, watched by many unseen eyes, lumbered past. Then Blackie spoke to the renegade scout. Listen, Joe, why don't you do some scouting back toward town and see where the troopers are? All right. I'll come back and let you know. Steady there.  Almost an hour later, the scout returned to make his report.  Blackie, there's something wrong. What do you mean? The troopers' horses are still at the show grounds near town. What? And so are the show tents. I didn't see any troopers around. They're trekkers. The troops must be in those show wagons. They must be almost to the fort by now. We can catch them before they reach the fort. You won't get the Indians to attack. They're superstitious about these fancy wagons. They'll attack after I convince the chief we've been tricked. Now go tell them now, then we'll go after those troopers. The lone ranger and Tato rode rear-guards some distance behind the wagons. Suddenly, Tato indicated a halt. Oh, come on. Listen, Kimosabi, Indians coming. They must have discovered our trick. We'll go warn the men in the wagons. And while the captain and I make plans to meet the coming attack, you go on to the fort. Mosul! Come on, scout! Late afternoon found the wagons about two miles from the fort in the foothills when the lone ranger and Tato caught up to them. Tato continued on as directed, while the masked man pulled alongside the first wagon on which the captain was riding disguised as a roustabout. Easy silver, easy. Captain, the Indians have discovered our trick. They're coming after the wagons. Do you think we can speed up and reach the fort before they get to us? No, but there's a pass just ahead. I suggest the men leave the wagons and take positions on the fluffs on either side of the pass. Then have the wagons go on with the supply of ammunition. Good idea. We'll be in a position to fire down on them when the Indians ride through that pass. Yes. Tato has gone to the fort for help. We should be able to hold our own until then. All right. I'll give the orders to the men right now. Men! Get these wagons moving! Get out of here! At the pass and before the Indians were in sight, the troopers left the wagons and manned the opposing rims of the pass. Then the wagons went on. Soon the Comanches headed by the three white men and their leader came along. Advised by the masked man, the captain waited until all the Indians were in the pass. Then he gave the order. Fire! Many of the Indians who were taken by surprise fell from the first onslaught. A large number remaining dismounted hurriedly and began fighting their way up to the rims of the pass. The Indians, used to sneak warfare, moved from tree to tree and bush to bush as they rallied and moved up toward the troopers. A low ranger seemed to be everywhere at once fighting and encouraging the men. Keep under cover! Watch behind you! For some time the battle raged and many Indians and troopers were wounded or killed. The troopers in the pass! They've come to help! From then on the battle was fierce but short and after their leader's fell wounded the Comanches were finally defeated. Flaki, Wes and the renegade scout were taken prisoners along with the Indian chief. The dead and wounded were taken care of and the remaining Comanches completely subdued were rounded up to be sent to a reservation. Later at the fort the Colonel was talking to Hank Pickens and the captain. Mr. Pickens because of your show wagons the threat from the Comanches has been overcome. I'll send men back with you to bring the horses that were left in Dallas. Colonel, the wagon sure did the trick but you got the mask man to thank for the idea of using them like we did. My men and I wouldn't have had a chance if we had ridden openly through that valley Colonel. I know and I didn't dare send my troopers to meet you without sufficient ammunition. That situation was solved when the wagons arrived and we left the fort at once. Because of the good advice given by the mask man we managed to surprise the Indians and hold them off until your men did arrive. First time I really ever saw him in action. Oh man alive he sure a fighting hombre. I've seen him in action before so I agree with you Mr. Pickens. He's a real American who loves peace, law and order but when necessary there's no man alive in my opinion who can outsmart or outfight the lone ranger.


loyal to a company, the company appreciates that. It's just that the companies themselves aren't even in control of the economic factors that are changing themselves. So I think it's not even that, you know, I think sometimes people look at it like, you know, corporations don't look, not only do employees not only have loyalty to corporations, but the corporations no longer have loyalty to the employees. I think what's really happening is the economics are moving so fast that it's kind of messing up everyone. And that the companies can't move fast enough to support the economics and they get caught out. Well, and I think people are encouraged to think of themselves as their own brand. So they're able to switch careers once you've built a social media profile and in a sense that is who you want to be. And you're looking for things where that will fit so people feel less allied to specific companies. Yeah, the personal brand? Yeah, I think that's been a big part of people being able to transition between jobs. There's a permanent profile that's always updating about what you're doing and your portfolio is out there for everyone to see of what you've been doing for the last few years. So I think the growth of personal brands has been actually very, very great for people looking to, you know, move up in their career. I noticed that millennials are quite demanding and I think we've switched from a time when companies were choosing you, where we're recruiting you, to a time when, especially for the most talented millennials, they choose the company they want to work for.


The flooding of 2005 was a catastrophe that will remain in our memories for a long time. After strong precipitation, many Swiss rivers and lakes burst their banks, causing flooding and great damage. The Bernese-Mutter district was also affected by the water masses of the Arre River. Extreme events like 2005 are not unique, but have happened again and again throughout history. There are numerous examples of disastrous floods in Switzerland. One such event, the flooding of 1868, stands apart. The Largo Maggiore reached its highest known water levels and in the Rhine Valley, lakes formed. The event caused tremendous damage and 51 people lost their lives. Coping with the event was a great challenge for the still young nation-state. For the first time in its history, the Federal Council took the initiative in dealing with the natural disaster. To truly understand and to be able to predict such events, we need to study as many as we can. For 2005, we have many observations of the weather, even radar and satellite data, allowing us to analyse such a flood event in detail. In the past, however, quantitative data are scarce, as systematic weather observation systems weren't established yet, and only few observations were made. Those few observations, however, are very valuable, since today, quantitative methods can again make use of this historical information. But first, we need to find the data. Sometimes, you don't need to look very far. In the middle of the 19th century, Daniel Gottlieb Benoit measured and noted meteorological parameters from his house, just a few metres next to the flooded Mutter district. He was not the only one. In fact, meteorological data have been measured since the age of Enlightenment. In Switzerland, the first known meteorological measurement series from Johann Jakob Schroeder in Zurich dates back to the year 1708. Over the years, more and more private observers in natural science societies started to measure different meteorological parameters. Some of them even started their own station network, like the Bernese economical society in the early 1760s, although most of them only lasted a couple of years. We see the same trend all over Europe and North America. With the rise of nation-states in the 19th century, long-term and stable measuring networks were finally established, such as the official network of the Swiss Central Meteorological Society in 1863. Whilst some of these historical series have already been digitised, the majority have not been studied at all. Only many such series together can provide enough information to reconstruct the weather in detail, much like a huge puzzle in which most of the parts are missing. The more pieces we have, the better our reconstruction gets. In Switzerland, the James Project, funded by the Swiss National Science Foundation, aims at excavating these historical meteorological measurements from archives and making them accessible for scientific work. In collaboration with historians, the manuscripts and metadata from these historical series are compiled and photographed. The next step is to digitise the data. This requires carefully typing the handwritten measurements into computer tables. However, it is still a long way from these raw instrument readings to climate reconstructions. First, the measurements need to be processed. Let's take air pressure as an example, which was mostly measured with mercury barometres. What is measured is the length of the mercury column. For scientific applications, however, this length needs to be converted into mean sea level pressure. This conversion requires four steps. Adjustment to a standard temperature, conversion to pressure units, correction for local gravity and reduction to mean sea level. First, because mercury expands or shrinks depending on temperature, we need a temperature measurement near the barometer, as well as the expansion coefficient of mercury to correct this effect. Then, the length of the column, often given in old units such as parry's inches, must be converted to millimetres and then to units of pressure using the hydrostatic equation and the density of mercury. In this equation, standard gravity is used. Local gravity, however, differs from standard gravity, and this must be corrected. Finally, when comparing atmospheric pressure at several stations, the altitude differences between the stations must be considered. Therefore, pressure is often reduced to mean sea level. The next step is quality control. This procedure aims at eliminating errors in the data. There are many sources of errors. The instruments may not work well, or errors may occur during transcription and processing. Simple plots can already visually reveal a lot of these errors. Tests can then be used to find values that are outside of a physically possible or plausible range. A third set of tests then makes use of the full length of the series to check if values are statistically plausible. For instance, values that exceed four standard deviations are flagged. Also, the sequence is analysed. Pairs of temperature observations on consecutive days that differ by more than 25 degrees Celsius are flagged, as are more than three equal values in a row. Further tests can address the physical consistency between two variables and compare the series to data from neighbouring stations. Even after quality control, metrological data series may still reflect non-climatic influences. For instance, the replacement of an instrument or a change of the measurement site may lead to a step change. Such non-climatic effects are called inhomogeneities, and the process of removing them is called homogenisation.  Such changes are not always apparent in the original series, but can be detected, for instance, by subtracting data from a neighbouring station. We plot the cumulative sum of the differences. This is a simple method to detect breakpoints, which lead to changes in the direction of the lines. To find possible explanations for the breakpoints, the metadata must be carefully studied. The result is a homogenised metrological series in standard units, which provides point-wise information on the weather of the past on a local scale. In the next video, we will show you how we get from this data to global weather reconstructions.


Jefferson is not necessarily doing sort of like the full drain to swamp, right? He only removes, I think, you know, I think a fourth of a lot of the federalist appointees and things like that. You know, one of the first big battles is over the federalist refusing to leave, right? It's over the judiciary. It's over last second midnight appointments and things like that. And you mentioned this is the degree to which the federalist cling to power. It even insults Jefferson. It's almost a counterproductive measure there, just how over the top they try to do to maintain their power. But one of the early problems, though, and I think this is just something that hits, you know, throughout your chapters here on Jefferson, is that it's not going far enough. The Republicans are able to repeal the Judiciary Act of 1801, which is kind of a saving grade. It gets rid of some of the most vulgar judicial appointments, but they do not get it rid of the 1789 Judicial Act. And so again, what you have effectively created is that while Hamiltonians have been removed from office in the legislature and in the White House, we now have the Thurne reign of government, which is the judicial system that is flexing its muscles. It is imposing itself on this new old Republican-ish regime. And here you have the Federalist power maintaining to have relevancy through the Supreme Court of John Marshall, who has the famous quote that compared to Hamilton, he has a mere candle beside the sun at noon day. He is very much driven by restoring the sort of Hamiltonian view of government. And here you have a Jeffersonian administration that seems for almost the get-go on top of their own direct appointees in the administration itself is weak to start off with. It does not make the necessary victories needed on the judicial front that ends up playing a major role in not only issues for Jefferson down the road, but really kind of cements a political system that we're still dealing with the ramifications now with the degree to which courts have so much more power than any other office out there in many, many ways. Yeah, absolutely. You made fantastic points. And this is something that really goes, I don't think it's a properly appreciated, but a lot of cronyism in United States history was basically protected or even caused by the judiciary. The judiciary is not a minor partner in cronyism, right? It in many ways reinforces, it strengthens cronyism of various laws and empowers the executive in Congress to do certain things, etc. And this is why so many anti-federalists, both when the Actors passed and even subsequently, they were against the Judiciary Act of 1789, which really created the Supreme Court and the system of inferior courts. A lot of people might not necessarily know this, but there's nothing in the Constitution that says, you know, that describes the Supreme Court really in any sort of detail per se. It just says Congress has the ability to create a court, much like there's nothing in the Constitution that says the President, you know, the President has, you can have these executive cabinets of X, Y, and Z, just as the President has the power to appoint the heads of executive cabinets that Congress creates. It's sort of vague and it's wrapped up, you know, it's wrapped up in there. It takes time to unwind, sort of like, I guess, an accordion might be a good way of describing this. So the federalists, after the election of 1800, they lose the executive, they lose the legislator, but they still have the judiciary. Adams had appointed John Marshall to be Chief Justice. Who is John Marshall? A lot of people don't really know this, but this is one of these interesting facts that I think is extremely important is that John Marshall's younger brother James Marshall had married the daughter of Robert Morris, one of the wealthiest men at the time, huge land speculator. John Marshall had worked with Robert Morris on various land deals, so on and so forth. And like a lot of biographies, they just sort of like casually mention this as if it's not important. When I read this, I'm like, wait a second, that's, this is huge. This is like spent a lot more time talking about this and less about, you know, other sorts of early, you know, random facts from his early life, etc. And so John Marshall starts to engage in what's known as judicial review, which is that the Supreme Court will start to review the constitutionality or the uncut constitutionality of various legislation. And he's doing this to basically protect prior federalist cronies. A lot of federalists were afraid that now that the Republicans control, they were going to repeal the Bank of the United States, they were going to maybe default or even repudiate part of the national debt, you know, downsize the military, repeal various laws like the judiciary act of 1801, so on and so forth. And that John Marshall now wants to use the Supreme Court as kind of like a sniping tower. So he could strike down, could stop all of these reform movements dead in its track by basically saying, oh, you can't do that. That's unconstitutional. And it's really, you mentioned this, I think it's important. It's a great way, it's a great example of how the swamp, so to speak, kind of like defense, it's sort of like a turtle, you know, the turtle goes in the shell and it's like this rock, you know, it's this impenetrable edifice, right? Because then the judiciary, they sort of act and they try to prevent the Republicans from weakening the government. But they extended their reach too much and they were, the Republicans were able to repeal the judiciary act of 1801. Unfortunately, they didn't go farther, as you mentioned, by repealing the judiciary act of 1789 or really, Jefferson, even really appointing hardcore strict constructionists to the Supreme Court. And that really just kind of sets the stage for later examples of moderation and failure. Because you're only getting rid of some of the government. So then the next time the government's going to increase further and cronyism will follow through and then, you know, now you're five steps back as opposed to two steps back. So the judiciary, not taking the judiciary head on, and this is something that happened during Jefferson's years, as well as later years, this is a really big problem that impacted the future of special interest legislation in the United States.