Welcome, thank you for being here. So I recently revisited one of the most sophisticated applications that I've ever been a part of. A key feature of this application took a complex input, in this case a huge production database connected to a CMS, and fed all that data through a Ruby function consisting of hundreds of lines of raw Postgres. Look all that data and spit it out into a CSV file that was between five and ten thousand lines long, representing every possible permutation of the data, and so way too long to be read or reasonably understood by a human. So this was a complex feature in a complex application. Now given that I was one of the original authors of this feature, you might think that it was easy for me to just jump right back in and start working on it again. But that was not my initial experience, and in support of this, I referenced something known as Eglson's Law. Any code of your own that you haven't looked at for six or more months might as well have been written by somebody else. My point is that old code is challenging, and it doesn't matter if you wrote it or somebody else. We call this code legacy code, and many of us deal with it every day. For those of us who have not yet experienced it, let me walk through some of the hallmarks of a legacy code base. First you'll see old interfaces. In this application we were dealing with aging versions of Ruby and Rails. If you open up the gem set, you're going to see gems that have been forked, gems that are no longer being maintained, and gems that have no path to upgrade. And each of these provides its own unique obstacle to future development. You'll see vulnerabilities. Because you're not updating the software, you're not getting security patches, and your code is more vulnerable. And you'll see dead code. Poor cleanup over time leads to code that never, ever gets called. There's the saying you aren't going to need it. Well, that wasn't followed, and instead waterfall was. We have code that is reliant on abandoned design patterns and things that we now consider to be anti-patterns. So these are some of the downsides of legacy code, but there are some benefits, too. And I would list these as profit and users. So starting with profit, a legacy application is very often an application that is making somebody some money. And if you're a developer working at a business for the legacy code base, the fact that you're there strongly suggests that somebody is making some money. And you hopefully have users. Users who care, they've invested in your product, and they have a contract expecting you to do a certain thing time and time again. And that contract is very, very special. One thing I know for sure is that developing legacy code is inevitable. And I mean this in two ways. The first way is it's inevitable for you. If you are not working on a legacy code base now, if you stay in Ruby on Rails, that will be part of your career. And it's also inevitable for the applications themselves. I believe that no application is ever truly feature complete. We're going to always be wanting to develop and add features. And the progress is going to continue. When that happens, we hopefully have tests. In the application I was working on, we did, luckily. And we had coverage and design that still made sense to us a year down the road. But what happens if we don't? Well, now we're talking about something a lot worse. And that is untested legacy code. If you're going to continue developing a Ruby on Rails app that doesn't have tests, you're going to have to retroactively find a way to add tests. Or you're going to break features and you're going to negate that contract between the application and the user. There are three types of tests most of us are familiar with, unit test, API test, and user interface test. Unit test, test individual functions and classes. API test, test the way that different parts of the application talk to each other and to external parties. And user interface tests, also known as integration test or feature test, test behavior from a high level. So if we needed to start from scratch, testing an untested legacy code base. Are these three types of tests enough? Well, they each have their own individual shortcomings. For unit and API tests, there could be thousands of functions and endpoints. And you have to know which ones are actually being used or you're going to waste your time running a lot of tests. For user interface tests, we have to know what a user actually does on the site. Figuring out which types of tests to write and what order is hard and pretty subjective and each type of test has its own unique blind spots. So I have a metaphor that I'd like to introduce now that I'm going to be using throughout my talk. And that is taking a watermelon and throwing it into a fan, a big fan that can chop up the watermelon and splattering it onto a wall. Let me explain. So we start with a complex input. That is the watermelon and the metaphor. In this case, that's a production database connected to the CMS. That large production database. We take the watermelon and we throw it as fast as we can into the fan. And the fan can chop up the watermelon. Following along the metaphor, the fan here is that Ruby function with all the SQL and then that splatters the watermelon onto the wall. And that is our complicated output, our 5000 plus line CSV file. Now there's a feature of this type of system that's interesting. Changes to the fan are really hard to detect. So if I take a watermelon and I throw it through the fan today and then I take another one and I throw it through tomorrow. If I examine the two splatters on the wall, it's very difficult to tell if the fan changed at all. But detecting changes to the fan are the only thing that the stakeholders really care about. They want to know that we can guarantee consistent output time and time again. Which leads me to a question. Are any of the traditional tests, unit tests, API tests and user interface tests really equipped to cover this feature? Well, the closest is a unit test. But the isolation of a test database is never going to come close to the complexity of the production database or the watermelon. The closest thing, yeah, so, but we have to test. And the reason we must test is because we want to keep adding features while we also must preserve behavior. This is a problem. And so what are we to do? I have a solution and it's something I've built in production called the gold master test. My name is Jake Worth and I'm a developer at Hash Rocket in Chicago. This talk will be 38 minutes total and 61 slides. And this is not a Rails talk, it is a general programming talk. Here's my agenda. I'll start off by defining a gold master test. Then I'll talk about writing the test. And finally I will discuss working with the test. Part one, defining the gold master test. So to define this test, I want to talk about a test that is similar to a gold master test and then use that definition to hammer out the definition for the gold master test. The seeds of this idea come from a book that came about in around 2005 called Working Effectively with Legacy Code by Michael C. Feathers. In the preface to this book, Feathers defines legacy code as code without tests. And that perfectly fits our working definition of untested legacy code. He sums up a key idea in the book with the following quote. In nearly every legacy system, what the system does is more important than what it's supposed to do. So the behavior of the legacy system isn't right or wrong. And those terms don't really have a meaning in a sense. It simply is what it is, it does what it does, and that is a contract with the user. This comes from a sub-chapter in the book about a type of test called a characterization test, and here's that definition. A characterization test is a test that characterizes the actual behavior of the code. Once again, it isn't right or wrong. It simply does what it does, and that is the contract the users have come to expect. In order to write a test like this, Feathers introduces a process, an unnamed process, which I'm calling the characterization test process. Here it is. Step one, use a piece of code in a test harness. Step two, write an assertion that you know will fail. Step three, let the failure tell you what the behavior is. And step four, change the test so that it expects the behavior the code produces. Here's what such a test might look like. So we start off, we say, expect something to equal two. We run the test one time and it fails. It says I expected two and I got one. Then we change the test to say expect something to equal one. Run it again and it passes. Has anyone ever written a test this way? Okay. In any other context, this is a very lazy way to write a test because you're just avoiding all the upfront work of trying to figure out what the code does. But if you accept the premise that all that matters is what the legacy code does, then this actually makes perfect sense. Feathers goes further with a heuristic to explain when such a test is applicable. And I've abridged it to fit it on the slide. So here we are, the heuristic for writing characterization tests. Step one, write test where you will make changes. Write as many cases as you feel you need. Step two, look at the specific things you're going to change and attempt to write tests for those. And step three, write additional tests on a case by case basis. So if this is a characterization test, here's how it differs from a goal master test. The characterization test focuses on areas where you will make changes, as you can see in the first bullet. It cares about everything on the micro level. It cares about the specific things that you're going to change from the second bullet. Feathers says that these are not black box tests. We can actually, the black box test being those tests where you make assertions about the dimensions of the black box, but you can't open it and see what's inside. So he says that a characterization test is not a black box test. Now this is all the opposite of a goal master test. A goal master test focuses on the entire application as a whole. It only cares about the macro level, not the micro level.  With all that in mind, here is my definition of a goal master test. A goal master test is a regression test for complex, untested systems that asserts a consistent macro level behavior. The image on the right is one of the Voyager golden records, which was launched into space in 1977 to show the galaxy, the sounds we had produced up to that point on Earth. So let me break down my definition a little here. A regression test. We have features that we like and we don't want them to go away. So we're writing a test that tries to prevent that. It is for complex, untested systems that asserts a consistent macro level behavior. Consistent macro level behavior for me means application works in the broadest possible sense and we want it to continue to work in the broadest possible sense. As I said, this definition is mine and that's because a lot of ideas in computer software, it seems like this came from many different places at once and it's hard to find one canonical definition, but this is what I'm going with. So let's look at a sample workflow of a goal master test. The first run is kind of boring. On step one, we restore a production database into our test database. That's the watermelon. In step two, we run the goal master test that chops up all the data, like the fan. In step three, we capture the output, which is the splatter on the wall. And in step four, we ignore the output. So that's all that happens on the first run. And you have basically set up the artifact that you will need for your subsequent run, which is more interesting. Here's that. On the subsequent run, we do the same thing. We restore the production database into the test database. We run the goal master test again. We capture the output. And then we compare that output to the previous output. And if there's a failure, then we get down to step five, which is we have to change the code, or we commit the new gold master as the new standard that we're holding everything to. Failure is going to prompt some sort of decision and if you've written the test correctly, you shouldn't be able to bypass that failure. You have to decide what to do. The ideal application for a goal master test has three things in common. It is mature, it is complex, and we expect minimal change to the output. So it's mature, there's behavior in there that we think is important, but it's not covered sufficiently by a test. It's complex, complex enough that a few unit tests and an integration test on top are not going to be sufficient. And we expect minimal change to the output. There's a contract established with a user that we want to persist. There's some benefits to adding a test like this to your code base. And here they are. First, we get rigorous development standards. This is a very high bar for the developers on your team. You're basically saying nothing in the entire application or a giant wing of the application should change in any way. And if you are using test and running tests and you should be able to add that to your testing cycle where the tests are green, they're green, they're green, and suddenly they're red. And you realize that you've changed something. It will expose surprising behavior. If you have code that is non-deterministic or returns a different result based off of the operating system it's running on, a Goalmaster test is going to catch that much more quickly, I would argue, than a unit test or an integration test. Because of how granular the test actually is. And it's useful for forensic analysis. Because we have a test that covers the whole application, if something breaks we can go back through time using a tool like GetBisect. And we can figure out exactly when it broke. So once again, here's my definition of a Goalmaster test. A Goalmaster test is a regression test for complex, untested systems that asserts a consistent macro level behavior. So now we have a working definition of a Goalmaster test on to writing one. So part two, writing test. We're gonna be looking at a little code now in Ruby, RSpec, and Postgres. But quickly back to the feature. So we have a feature here that has a large production database. It's fed through a complex Postgres function, and it's output into a large CSV file. And this makes this application pretty much the ideal application for our Goalmaster test. When I write a test like this I like to break it into three phases. Preparation, testing, and evaluation. So starting off with our preparation. We start off by, we have to build that watermelon. And the way that this works is we acquire a dump from production. So you get that from your production database server, and you pull it down to your local machine. The very first step is to scrub the database of sensitive information. So you wanna get rid of email addresses, IP addresses, sessions, encrypted information, financial information. This is really, really important because at the end of the step we're gonna check in some or all of that database into version control. So if you don't scrub the data, it's a vulnerability. Very, very important. The way that I recommend doing that is to use a local database, a utility database that you can dump the data in, and then run a scrub script against it. Which will make the process very repeatable. Because this is something you will have to do more than once. So, once we have that scrub data, we need to dump it out as plain text SQL. And on our team we wrote a small rake task just for that export. So here it is, it's called createBB. We name a destination file, which is called gold underscore master.sql. And then we shell out using the pgdump utility. We list our sanitize utility database, that's where the production database is currently stored. We pass it some postgres flags, and then we send it to our destination. Notice the postgres flags is a bit of a hand wave, it's inside those two sideways carrots there. And that is because dumping a production database into a test database is going to take a small amount of data massaging. They're not the same environment, and that's going to differ based on your application. But I will post a link to a GitHub branch at the end of this, which shows an example of some flags that we found useful. So when this is done, we check that plain text SQL into version control. And this is the artifact that starts off the test. So next we move into our preparation, into our test phase. So I like to start with an empty test file, anytime I'm running a test, just to validate the setup. And here's what that empty test file would look like. So I'm describing a class called fan and a function called shred. And I'm saying that it produces a consistent result, and this is how I would start, and it should pass. Stepping into the test, the first thing we have to do is take that production database and dump it into the test database. So here's a way that you could do that. We use application record, connection, execute. We pass it a here doc. We start off by truncating the schema migrations table. And we found that to be a pretty much a guaranteed conflict anytime we try to do this. So we just empty out that table, and then we read our goldmaster.sql into the test database. The result of this is you have a test database that is full of your production data.  So the next thing we do is we perform the transformation, the fan of the metaphor. So we call the function, we call fan.shred. And we return it to a variable called actual. Now, fan.shred is written in such a way that it returns something meaningful, something we can make an assertion about. And in this case it returns that CSV output. So that's something you'll have to decide if you are writing such a test. And we assign it to a variable called actual. And that is what we're going to make our assertions about. So here's my strategy for making those assertions. The test can do two things. On the first run it can generate the goldmaster. And on subsequent runs it can compare the current result to the goldmaster. And this is a literal interpretation of that flowchart I showed earlier where the test can do both things. It can make the goldmaster and then it can compare the goldmaster. I like that because I like the developers who use the test to be able to run it every time without knowing what it is without having knowledge about what a goldmaster test can be. I think it also makes it more easier to generate the goldmaster over time if you ever lose it or decide to change it. So that's a decision that we made.  So now that we have our actual variable it's time to start making some assertions about it. So we list a file called goldunderscoremaster.txt. That is going to be the location for the present and future goldmasters. The first thing we do is we check to see if it exists. If it does not exist then we write our actual to that file. And this is going to work on the first pass because the save will return true. It's kind of a no op in a way. It just made a file for us to use. And that is the end of the first run. So the test passes and all as well. The second pass again is where things get a little more interesting. So our if is not true so we move into our else. And if the goldmaster file exists we read the file. Then we compare the goldmaster to actual. If the goldmaster file does not match the actual then we write to the goldmaster file. And if you've checked in that goldmaster then this adds unstage changes to your version control which you'll have to deal with. And that's a deliberate decision I'll talk about in a second. Finally we make the assertion. If actual does not equal goldmaster then the test fails. And it will fail pretty loudly depending on how you've written the test. This is the entire test file for people watching on the internet in the future. It is 19 lines. Next we move into our evaluation phase. So on a stable system this test should just be passing and passing and passing. And if it fails that is an alarm that you have broken the contract with the user. And like any good regression test it's simply trying to prevent that type of thing from happening. If it does fail the test, the checked in goldmaster is going to be noted by your version control. You have changed that file. So you're gonna have to make a decision. What happens then? Well here's a flow chart to explain. So we start off with a test failure. We look at the failure and we say is it a valid change? Is it a desired change? If it is a valid change then we check in the new goldmaster and we can continue on our way. If it is not a valid change then we need to pause and reevaluate. We need to grab a wrench and open up to fan and figure out what it is that we broke because we have broken the contract with the user. So now that we know what it's like to write a test what is it like to work in a code base that has such a test? Part three, working with the test. So I'd like to look at a sample workflow for a developer who has this test in their suite and that developer is me. And then I would like to explore some advanced applications. But first we'll start off with a real world example. This is, today I learned, available at til.hashrocket.com. It's an open source project that I help maintain at Hash Rocket. And it allows my coworkers to publish 200 word posts or less about things we're working on every day with code samples written and marked down. Now the feed of the site is always listing the newest post on top. And that gives it that constantly refreshing feed like a social media site. And this incentivizes people on my team to always try to generate new content because that's the prime position to be in on the site. So let's say I wanted to write a goal master test for today I learned. First off, does that even make sense? Well, here's a checklist for an ideal application. It needs to be mature. Today I learned is over two years old. So in the world of web development that's not really new anymore. And I feel that it is close enough to mature for our purposes. It needs to be complex. Beneath the veneer of today I learned the basically one page that anyone looks at there's a pretty complicated user interface that allows people to write posts in a way that we like a lot. And beneath the somewhat simple web application you have Rails, you have Ruby, you have the entire technology stack and that is a very complicated system. So we will say that yes, today I learned is complex. And finally, we expect minimal change to output. This is very true for me. I don't, as I said, nothing is truly feature complete but people have come to the site for a couple of years and my coworkers use it on a daily basis. They expect it to do certain things and I would be upset if that were to break. So here's my assertion. Here's my assertion. The homepage, given the same data, should not change without us knowing why. And if you check out Hash Rockets GitHub under the HRTIL repository, there's a branch called Goldmaster Demo where the test that I show is currently available to check out. So there's an example test in the repo to look at. So if this is my assertion, if I wanna say the homepage shouldn't change without us knowing why, how would I go about writing a test that does that? Well, first we have to prepare. We have to get the production database dump. We have to scrub it with a sense of information. We have to dump it as plain text SQL and we have to check in the SQL. This is the scrub script that I wrote for this test. It's called sanitized underscore production.sql and it touches three tables in the database, developers, awesome sessions, and posts. Developers are obviously our users, so I go through username, email, Twitter handle, admin, and Slack name and I set them to somewhat innocuous values that are still unique for each developer. There's nothing in that table that's really sensitive but I feel it's the best practice to just be scrubbing stuff as much as you can because in a client project, this probably would have sensitive information. We use a gem called author for our sessions management. That is both irrelevant and I don't wanna check it into an open source project so I'm gonna delete everything from there. And then finally, I delete from the posts where the ID is greater than 200 and this is just data massaging. We have like 1300 posts. I don't wanna dump all those into the test database. I only wanna dump 200 in and that is a compromise that I'm making. I'm choosing a faster test and I'm giving up having a perfectly accurate representation of the production database. But I know this application very well and I know that nothing in the application cares particularly if there's more than 50 posts which is the pagination breakpoint on pages that are paginated. So as far as today I learned as concerned, 200 posts is about the same as 1200 posts. So to write this test, we're going to take almost the exact same path from the test that I showed before except the thing that we capture has to be a little bit different. So we start off restoring the data. You don't have to read this because it's similar to my previous slide. We dumped that production data into the test database. So we have the watermelon. Next, we visit the root path. We use the Kappa-Bara method to visit the root path which is aliased to the post path and following Rails convention that is the post controller index action. And this kicks off a very complex chain of events that ends with the browser having today I learned available to look at. So once we've done that, we need to make an assertion about what comes back. And we use page.html, another Kappa-Bara method to assign the entire HTML for the webpage to a variable called page underscore HTML. Once this is done, we work through a similar type of conditional. On the first test run, we can generate the goal master. And on subsequent test runs, we can compare that to previous test runs. Here is that test file. Once again, it's on GitHub under the HRTIL repo. If any HTML changes at all on the page, in any way, this test is going to fail. And I recently worked on a project where I had to come back and work underneath a test suite that had a test like this that I had written. And to my surprise, it was actually a really great experience. The test caught things when it should have caught them and allowed me to develop when I wanted to develop. So that was very reassuring. So let's take a look at a example workflow of a developer working with this type of test. So this is a video of myself working in Tmux a couple of weeks ago. It's just like live coding, except there's no way I can make a mistake. Okay, so a quick orientation. In the upper left, we have the terminal. In the lower left, I'm running the watch command and I'm watching LSAL, which shows all of the files in the spec fixtures directory. So every two seconds, that's gonna update if there's a new file. Right now, the only thing in there is goldmaster.sql, but we would expect it to be a goldmaster.text after the first test run that becomes a goldmaster. And in the right, we have the test. So the first thing we do is to run the test. And if this works, the test should pass because save returns true or write returns true and it will put a new file in that directory called goldmaster.text. Okay, so there it is. So that passed on the first run. And if we run it again and again, if our code is deterministic on any machine that we run this on, it should continue to pass and that will give us that nice virtuous development cycle that we have when we're working in a test harness. So the test should pass in the second run and the goldmaster.text should not change because it doesn't need to change. At this point, we wanna check in the goldmaster. This is an artifact that we will be using for every subsequent test run. So we'll check in that file. Nice short commit message. Okay, so I wanna try to change behavior that was gonna cause this test to break. And there's lots of ways that we could do that. We could change the template, we could change some of the data, we could change many different things. But for me, I think an interesting thing to change would be to change the controller action. So this is the post controller index action. This is the thing that actually creates the homepage. And if you look online, 25, we assign an instance variable, posts. We get our posts with some stuff that's eager loaded. We limit it by a scope called published. And then in line 28, we order the posts by published at. That is the thing that puts the newest posts at the top of the page. And if we were to change that, the goldmaster test should definitely break because all those posts are now in a different order. The titles, the developer names, there's no way that this should pass a goldmaster test. So let's imagine an enterprising young developer comes into the team and says, I think we should order these by likes. The most liked post is much more interesting than the newest post. Well, this should cause the goldmaster test to fail. Fail loudly, and it does. Now, the output isn't great is comparing two large HTML files. You can do a lot of things to make that better. But the conclusion is that the goldmaster test failed. Now, an obvious question is, the goldmaster test failed, other tests should fail too. This is a test with 107 examples. It was developed TDD, so we have cucumber integration tests and RSpec unit test. And surely other tests should fail with such a significant change. So let's test that theory out by running all the other tests. And we'll reset the goldmaster so that it's the way that was on a previous test run. So we're gonna run cucumber and rake which starts off with RSpec, so that covers all of our tests. And fast forward, because it was on a slower machine. Okay, so we had 107 test examples run. Only one test failed. The goldmaster test. And as I mentioned, this was an application that according to code coverage gems had somewhere between 95 to 100% test coverage. Something that we tried aggressively to test from the beginning, and we put a lot of trust in our test suite. And yet, only the goldmaster test failed. All of the other tests said, good job, ship it. So it matters to the goldmaster test. A more important question though is does this actually matter to a user? Well, here's the today I learned site with that change. The poster seeing at the top was published on July 15th, 2015. So somebody who comes to this site today with such a change would think that nobody has published to our site in over two years. This is just the most liked post, not the most recent post. I think it was written before we had the syntax highlighting. So somebody who comes here and sees this is gonna have a really confusing experience visiting today I learned. And only the goldmaster test caught that. This example is a little bit contrived, but I hope it gives you a sense of what a goldmaster test could look like in practice. And this test is not without challenges. It requires maintenance.  And that's why I would advocate for automating that process as much as you possibly can. It's an investment like any test and you need to put in the time to make it work. It could be slower, but as I demonstrated, you can optimize the data in a way that makes sense. And I think that some people might say it implies correctness. If you're coming and seeing this test, you might think what it's doing is right, but that's an opportunity to talk with your team about what a goldmaster test is because that's not what it is. It's simply saying this is its behavior. I have some future plans. I'm working on a test for today I learned that takes a screenshot of the page on the first test run and a screenshot on the second test run using Caper Bearer Saved Screenshot Method. I'm not the first person to try to write a test like this, but it's been a fun experience. And then compares the two images using image magic, the compare function. And this covers a problem with my example. What happens if the CSS changes? The test is not gonna catch that. It will only catch the HTML. Here's what such an image would look like. So here's today I learned failing on a subsequent test run. And the stuff that is different is in green. The thing that I changed here was I removed a Google font that was included and was shown on every site. And so since the browser didn't have the Google font to use, it tried to use whatever font it thought was best and that changed the way that the header looks and almost every part of the post. So that's a small, tiny little change that someone could make accidentally, but with this type of test, you would catch it. So to wrap up, if you have a mature, complex, and stable application, consider goldmaster testing. It can simulate a much larger test suite if you don't have one to start with. And from my experience, just writing the test is going to tell you some surprising things about your code. And if I could go for a slightly broader conclusion, I would say that applications of the future are going to require creative testing strategies. Many, many Rails applications are in the situation that we've talked about today. Becoming legacy applications with no test suite or partial test suite, and development has to go forward on those. There are new frameworks and ideas also coming along that are continuing to challenge the boundaries of what a test can be. That's what I came here to RailsConf to talk about, and I would love to talk more with people who share that interest. Before I go, I'd like to say thank you. Thank you to RailsConf, to Hash Rocket, to Brian Dunn, Noel Rappen, Sandy Metz, and Jennifer Hart at the University of Chicago. And thank you for coming.


I'm just tired. I'm tired of taking tests and not getting the results I want. I'm tired of missing 50-50 questions and I'm just a terrible test taker. If you've said any of those things guys about taking exams then I promise you I totally understand because I used to be in your shoes. When I started medical school I was a C student at best and I was sucking on all my tests. But after using the tips that I'm going to be giving you in this video I transitioned to an A student and I was able to do it with a lot less stress and often a lot less time. So if you're interested in learning how you can get those results stay tuned after the Centro. Alright guys what is going on? Luxury of an MD journey helping you succeed on your medical journey with less stress. If you're new to this channel the whole mission is to help students through weekly video tips learn how to get in this mentality of thriving on their medical journey and not just surviving. So if you want to learn how to do that first of all make sure you give this video a like and then hit that subscribe button. But let's get into this video which is how do you become a better test taker? Which is do you take what tips and motivations do I have and finally how can you learn even more? So let's get to tip number one which is a process that I've used to take my exams to get to the right answer more often and also avoid some of the common traps that the test makers set out for students. And this approach is my question answer STEM method. A lot of you guys may heard something similar but let me let you know how you can use it in college and as a medical student. The typical approach especially in med school is to read the very long question which usually has like a patient vignette finally it's the question and then read all the answer choices and still be clueless on where you should be headed and what the right answer is instead we're going to flip it on his head. We're going to start by reading the question first. So usually the question may be what's the diagnosis? How do you manage it? What imaging test do you do? But often you know you don't want to read a large paragraph and have the question end up being what is two plus two? You can answer that without the information given before. So basically that's what we're going to do. We're going to start with the question and get an idea of what direction are we expected to think about. And then we're going to look at what our options are. You know, if the question is what is the diagnosis? Well, we want to know what diagnosis are the potential or possibilities and you're going to go through each and every one.  If the answer choices are things like cancer, things that you may be thinking about like weight loss, person may have new pain, they may be a smoker depending on the cancer. If it's something like heart failure, the person may have difficulty breathing, they may have swelling. There's different evidence that you know would be attributable to each answer choice. So now you know what the question is, what your options are, and you know what pieces of detail and evidence you would need for that answer to be right. Now go look for that evidence, go back to the stem, and see if you can find it. If you think your patient has heart failure or that could be a potential, look for those clues. Look for the swelling, look for the difficulty breathing, or the patient that's non-compliant with medication. Because if you start seeing those things and you'll understand, okay, this question is going to be pointing to the heart failure answer. Now guys, the reason that this works so well is for one, it's quicker. If you can read the question and gets the answer without having to read the long paragraph of the vignette, then you save some time and you're able to spend more time on the more difficult ones. And two, you also avoid the traps that the test makers set out for you. And the reason is because the typical way the student reads is that they're going to be reading the paragraph and they're going to see evidence for the heart failure, but they may also see some trap pieces of detail that may also point to maybe cancer. So by the time they get to the point of trying to answer it, half of them is thinking cancer, half of them is thinking heart failure, and they're not really sure which pieces of evidence matter. But if you instead don't start with the paragraph, you can avoid these traps and focus on just finding a proof to the answers you already know are your options. So try this question step method out and let me know what you think. And if you are using it already, comment down below and be like, that's the method I use, and it works pretty effectively. When I transitioned from the method that I was originally using, which is the typical test taking strategy to this one guys, my grades is shot up by a whole grade point average. And then I'm going to go ahead and give you some more tips later on this video to explain how to even boost your performance even more. So tip number two guys is a mindset shift. You need to get away from the typical high achieving pre-med type rate personalities which look at questions as potential to do worse on the exam. If you have a heart test, every single question is going to seem like another step closer to failing it.  But instead, flip it on its head and look at every question as an opportunity to gain more points instead of losing them. It's essentially the same thing, but when you're in the second mindset, you're looking at everything as an opportunity and you can get through the test with more confidence because here's what happens. You look at each question one at a time. If you feel like you know it, then perfect. It's an opportunity for you to gain points and you feel good about yourself. But if you get to those questions that you're going to that are going to trip you up, it's going to give you a hard time, then you can get to this point where you just shrug and say, okay, well, at best case scenario, I'm going to guess and I get it right. Worst case, you know, I missed it like I probably was going to anyways. And you continue to focus on the questions that you are earning, the questions that you feel more comfortable about. Because by the end of the exam, you're probably going to do well on a majority of the questions you felt pretty good about. So you're going to claim those points. You're going to probably get some of those questions you guessed about that you weren't really sure. And you're going to feel more confident at the very end. And when you're more confident, each and every question becomes a little bit easier in your head. So get away from this mentality of questions being a way to lose points instead look at them as an opportunity to gain points. You have mindset shifts of I either know it, if I don't, you know, there's no big deal. I'm going to work on the next one and try to earn those points instead. That really makes a huge difference. And finally guys, tip number three, which I think is huge is you have to have a system to work on your weak points. Think about the last few days before an exam. What stresses you out the most? It's not the topics you know really well. It's the topics that you know you're pouring in, but you also spend very little time in. Thus, it's going to be the most likely thing that if it shows up on the test, you are going to freak out and have an anxiety attack. You know, these are the topics that I've been confusing you from day one and you've been pushing into the side, pushing into the side. And now you're a couple of days away from the test and you don't have enough time to review all of those topics. So instead you need to have a system to review these weak points from the very start. Now a couple of videos that I do make, I do include a method called a review container. Now go ahead and link a video explaining how that works. But it's a great method that helps you do justice, so just create a system to work on your weak points from day one. So if you want to learn how the review container works, make sure you take out the link in the description. But regardless of what you choose, whether it's review container or something totally different, have a system from the day you go to lecture to identify the topics that are going to give you a tough time and somehow work on them a little bit daily to the point where when test comes around, you have less and less of these topics that are going to give you difficult time on the exam. So guys, those were the three tips that basically helped transform my performance on my exam. So make sure you use those three tips. Now quickly I want to explain where you can go to next. So as I mentioned, check out the review container if you want to learn how to have a system or work on your weaknesses. That'll be linked down in the description. And you'll also have four other study methods that myself and other medical students have found to be effective and usually work quicker. So again, that'll be linked to the description. Two, if you want to see how I would study as a first year from start to finish, comment an entire video about that. Also, you can find out YouTube below. And finally, if you want to learn how some of my students are taking my tips to completely transform their studying in just three short weeks and spending less time while getting some of the best results that they possibly can, you're probably going to be interested in checking out my level up your studying course, which I'll link down below. But basically it's a three week system that teaches you how to identify what you're doing wrong, what you should be doing instead, and then finally how to craft your perfect study system so you can be studying less, studying better, and getting some of the best results possible. So again, that'll be linked to the description for anyone interested. But regardless, hopefully you guys found this video helpful and now can feel it have more of ease when you're taking exams in college or in medical school. If you found this video helpful, guys, first of all, make sure you give it a like, comment down below with anything you've learned or any questions you guys have, and obviously make sure you hit that subscribe button. Help me get to my impossible goal of 25,000 subscribers. Hopefully you guys will join me on my journey and hopefully you found this video helpful. But I'm gonna stop babbling like I always do. I'll see you guys in the next one. Take care, my friends.


Righty, I got a construction update for you guys today So we went and flew the drone as Canada's Wonderland is ramping up its construction projects And I have a lot to discuss today some of the things I've held out on I'm gonna have to insert them at the end in this video. Actually, it's so funny I just remembered now, but as you can see moose horn falls electrical and plumbing has moved along really nicely Front gate looks like they've hardly done any work, but there's been a lot of electrical And infrastructure work on that inner path. So again a lot going on even though it doesn't look like it Based off of what I've seen in actual person It looks like the security scanners are going to be directly under Leviathan So there's a major section Underneath Leviathan that has a lot of electrical work laid down Almost as if it was gonna be like security posts So what I'm guessing happened is Wonderland tested those new security scanners that were a lot more quick And efficient and then now they're gonna actually utilize them as you can see in front of the Canada's Wonderland store The foundation has been poured and is covered in the orange tarp So that is an extension to the front gate store that they are working on a dumpster has shown Up outside of the Wonder Mountain and in the rumored launched wing coaster area In a second, you'll actually see a work truck pick up some of the kind of like caution Wood sign there and move it inside the mountain So definitely keeping attention to this area from what I understand all that is taking place under that orange tarp Actually isn't related to the actual coaster It is infrastructure work. So I did hear that but outside of that There are still clear signs that this area is Moving forward again, I'm still hearing January will be the start date I am hearing a newer rumor about this wing coaster. That's really interesting So I'm gonna keep my ears open to that rumor and we'll see how that goes One thing I wanted to point out before I get back into talking about the bat At Canada's Wonderland is I've noticed that there is some weird work going on in the Yukon striker Tundra twister area. So I do know that winterfest is experiencing a huge draw And we aren't even in the busy period yet So we are about to be in the busy period yet And it's funny because this weekend coming is warm and all that I've noticed that Tundra twister hasn't been wrapped yet So I'm gonna keep an eye on that I do not think they're gonna open it But it is really hard to ignore that they haven't wrapped the seats on this ride All the other closed rides have been wrapped or winterized in some sort of format and Tundra twister hasn't so I will keep an eye on it Wonderland has shown in the past that if needed if there's a huge draw of guests They'll open up an area to house more guests and you know, Tundra twister was a winterfest ride So they might open it and just if there if there is gonna be that huge draw I will say based off of last weekend There is not a need to open it if that's gonna be the crowd other paths weren't extremely packed So we'll have to see all right. So over at the bat. We have some really cool work going on So the chain and I think it's called the chain dog Correct me down below and give you enthusiasts. I'm sure you will that right there has been removed off of the bat And from what I understand a new chain is arriving or this chain is being shipped out And some work is gonna be done on the bat. We'll have to see what that is but yeah, I'm kind of excited because It seems like Wonderland's getting a lot of money poured into it again So I'm really excited to see what the park looks like at the beginning of next season because if you remember the beginning of this season It was a shocker But yeah, as you can see here, I wanted to show you guys in detail the front gate work up close Alright, so that's it for today. If you guys have any questions comment down below and I'll try and answer them to The best of my ability. Thanks so much for watching guys. Have a good one. Bye


Welcome to this deeper dive into Relation Extraction. Relation Extraction is a text mining task. If you haven't already, I strongly recommend that you go watch my introduction to the core concept of biomedical text mining before proceeding. Relation Extraction is all about getting relations from text and it builds on top of named entity recognition, which I described in the previous presentation. There are several ways to extract relations, one being co-mentioning, another being rule-based systems. You can do machine learning and nowadays people are very commonly using deep learning. I'll go over all of these before briefly covering typical use cases of relation extraction. Co-mentioning builds on the simple idea that if entities are mentioned together, it likely implies some association between them. Of course, if two entities are just mentioned together once in the entire literature, that's not very reliable. For that reason, we rely on counting that way trusting more if two entities are mentioned together often. We count in a way where we take into account distance that way putting more weight on entities that are mentioned for example in the same sentence, as opposed to in different sentences in the same paragraph or far apart within the same paper. Then we normalize for the frequency, that is, we look at how often they are co-mentioned compared to what you would expect by random chance. This is to correct for overstudied entities such as the gene TP53 or the disease cancer. As these appear very often in the literature and can therefore also at random have quite many co-mentions. The main advantage of co-mentioning is that it's a fast system and it builds a consensus view of the literature. For that reason, it is surprisingly powerful. Especially when you consider that it completely ignores the context, it doesn't look at any of the other words in the sentences but the entities. For this reason, of course, it's not able to extract the specific relation type. If you have two genes mentioned together in the sentence, you can say that they likely have some association, but by co-mentioning alone, you cannot say which type. To do that, you can build a rule-based system. These rely on having a natural language parser understand the grammatical structure of the sentence. Afterwards, you can use manually crafted rules to match patterns in text and that way pull out associations. If we look at an example sentence, the expression of the cytochrome genes SIG-1 and SIG-7 is controlled by Hab-1. The sentence is passed into smaller fragments like SIG-1 and SIG-7. Then on top of that, the cytochrome genes SIG-1 and SIG-7. Then the expression of the cytochrome genes SIG-1 and SIG-7. Finally, Hab-1 is connected to that via a verb. That way, the system can automatically extract that Hab-1 controls the expression of SIG-1 and Hab-1 controls the expression of SIG-7. A major advantage of rule-based systems is that it doesn't require any training data because you're making the rules manually. It's relatively fast and what comes out of it is interpretable since whatever is extracted comes directly from the rules that you wrote. And it can be hard to beat. The reason is that it has very high precision if the rules are well crafted. Its main downside being that it has only moderate recall. Another disadvantage is that it only looks at intra-sentence. That's part of the reason why it can only get moderate recall and that many rules are needed to get good recall. Also, it's worth keeping in mind that since you're crafting the rules, the system is only ever going to be as good as you are. If you're not good at crafting rules, you're not going to be able to make a good rule-based system. The major alternative is machine learning and this has been tried for many years. The idea is that you select a corpus of text, you manually annotate relations in it, you mask the entity names so that the system cannot see which genes are proteins, for example, we're talking about, then somehow vectorize the sentences, for example, using a back-of-words approach or more recently using word embedding. Having done all of that, you can apply machine learning. That is, you do cross-validation training on parts of the documents and do testing on a held-out test set of documents that were not used for training. These systems can get much better recall than rule-based systems. However, it generally comes at the price of considerably worse precision. Also, a big part of the reason for this is that the syntax is lost. Using a back-of-word approaches, even though you look at the other words in the sentences, you're not taking into account their order. Also, language is complex, which means that for a machine learning method to learn the many ways that we can phrase a certain type of relation requires a very large annotated corpus, which is obviously expensive to make. Deep learning addresses many of these problems. Especially people nowadays using transformer models, which are able to handle the encoding of sentences of variable length. And also, they use pre-trained models, which has a lot of benefits. This allows you to handle the complexity because you deal with the language before dealing with a specific application. The way this is done is through so-called self-supervised learning. Imagine that you have a huge, unlabeled corpus of text, and you mask, for example, 15% of the words. You now use this very large dataset to train a model to predict the masked words. That way, the model learns language. A very popular example of this is the bird model from Google, which was trained on a corpus of 3.3 billion words from Wikipedia and the Google Books corpus. This allowed the model to learn, essentially, the English language. BioBird was then created by a group in Korea who used another 18 billion words from PubMed Abstracts and PMC Open Access articles, and that allowed the model to further learn biomedical English. We thus now have a model that understands not just English, but biomedical English, and we just need to tune it for the specific task at hand, which could be, for example, to pull out physical approaching interactions from text. Since it only needs to learn the specific task, you can get away with using a much smaller annotated corpus, which is a huge advantage, and still get state-of-the-art performance. The main disadvantage of using deep learning nowadays is that it is very compute-intensive, so you need access to supercomputers to be able to do this at a large scale. So what can we use relation extraction for? The only real use case is to take a large corpus of text, like the biomedical literature, and turn it into structured data. We can then use this structured data to populate a database or a knowledge graph, whichever you prefer to call it. A good example of that is the string database of protein associations and interactions. It relies on text mining in two different ways. It first uses co-mentioning to pull out functional associations between proteins, since whenever two proteins are mentioned a lot together in the literature, they're likely to work together somehow. It then, on top of that, uses deep learning to pull out specific interaction types, such as physical-protein interactions. However, this approach is completely generic. I've used it previously to work on drug-target associations, pulling out disease-gene associations, pulling out associations between diseases and organisms, and at the moment we're working on pulling out disease-lifestyle associations. So it's very broadly applicable. That's all I wanted to say about relation extraction. Thanks for your attention, and if you want to hear more about how these methods are used in databases, take a look at this presentation.


Hello and welcome to NewsClick. We have with us our editor-in-chief, Rabir Purkaista, who has also been member of various committees of Department of Electronics. And we are going to discuss with him the recent controversy regarding EVMs. So, my first question to you is about the electronic voting machines and the controversy regarding them. How serious are these doubts? You know, let us put it this way, every electronic voting machine in the world is theoretically possible to hack. You can change the program by either software or by replacing the hardware. Indian electronic voting machines are essentially hardware program. It means that whatever the software is has been burnt into the machine itself in terms of chips, E-Proms, whatever we want to call them. So, that if they have to be changed, the programming has to be changed, you have to replace the hardware itself. So, that is one difference between the Indian electronic voting machines which are really in some sense calculators or like calculators, then any other voting machines in the world where they have tended to be either based on operating systems of some kind or they are basically also IP connected. IP connected means they are connected to the internet in some way or the other. Both these having an operating system or having internet connectivity means it is possible to hack them in externally. So, the Indian voting machines in that sense cannot be hacked without actually changing the hardware itself. Now, theoretically again, it is possible to change the hardware. For sure, of course, you can make something which looks exactly the same, have one to one matching of the pins if you have the machine. So, you can design it so that you can change the chips and then there are two things. One is the program itself has changed. So, this is now the hardware is behaving differently than what it was to behave and it is also possible theoretically to add something to it by which from outside you can actually change what is happening inside. These are all theoretically possible. The real issue is, is it possible to do it if we take the voting machine and the procedures and the fact the political parties, the election agents are all involved in the process. So, we do not have to see the electronic voting machine in isolation, but you have to see a part of the overall system in which they are human beings. The only way this is possible according to me is if both the political parties and the election commission work together in order to hack the machines, which means the opposition political parties or at least their agents have to consent in order for such a hacking to succeed. So, many countries still use paper ballots because they have concerns about electronic voting machines. How different is the mechanism of Indian EVMs? Let us put it this way. Electronic voting machines in most countries were based on as I said earlier an operating system and or were connected to the internet directly. Both these are open to hacking in different ways. Let us take for instance what the operating system issue is. We now know that the CIA has back doors or has been able to penetrate all the operating systems including Linux, which we thought were relatively more secure. Wikileaks latest disclosures also show that even the Android operating system or Linux, which is the operating system which is relatively with hot hack proof has also been hacked and CIA is able to access all of them. Therefore, it is possible to subvert whatever protection you build over the operating system and directly change certain things because you have access to the operating system itself. So, that is the core of the machine. The reason that most of the countries in the world went for these systems is that they do not want to invest in trying to build a dedicated system just for elections. Most of them are either smaller, they did not have the infrastructure, they did not want to do it, whatever may be the reason. So, therefore, they use an existing hardware and try to build an EVM around it making it relatively much more insecure because these machines are therefore known, the software is known, at least the operating system there is known and therefore they are much relatively much more easy to hack. The argument about the Indian EVMs have been that though it is much more difficult to hack it in this way, by changing the hardware it is easier to hack because there is no protection at that level, which is correct and I do not disagree with that. Regarding paper trim, of course, paper ballots also can be similarly hacked, you can change the ballot itself that you can rig the stamping of the ballots. So, no system by themselves are foolproof. What you really have is the human beings which have to be taken to consideration with the system put together whether that system can or cannot be hacked. So, the argument why others did not use the Indian kind of EVMs is also because the cost of doing it for them would be much higher. In India, we had the Electronics Corporation of India Limited, ECIL, we had Bharat Electronics Limited, Defense Undertaking, Public Sector, which invested in building this capability and supplying as we said 1.3 million of them and in India the cost of such machines are not very high. So, therefore, it was easier for us to do it. It would not be easy for others to duplicate it because they do not have that infrastructure and the cost for them for doing it any other way would be relatively higher. So, that is one of the issues why they did not go the Indian route and why their machines therefore were relatively less secure. The last point is that if you look at what we have done, it is interesting to see that political parties which have lost, which have included the BGP earlier have complained about some of them have complained about EVMs not being secure. Subramaniam Swami went up to the Supreme Court to say EVMs are not secure and so on. So, now some additional features have been added which will really come into operation in 2019. They are only available only in sample systems at the moment only a sprinkling of them have been put into operation. What is called a VVPAT? There is a voter verification unit which has been added with the EVM by which there you can see whom you have voted. There is a paper that comes out which is behind the glass and that goes into a box into a pouch which is sealed subsequently by the returning officer as well as the other people signing on it. So, that there is in case of a challenge it can be verified with actually the paper ballots. So, can you briefly tell us about the process how EVMs are distributed to different constituency and is it possible in this process that they can be tampered with or they can be had? Well, that's the whole issue that you know suppose I change the program by changing the hardware itself by making it some similar hardware making it look the same when I change it. The question that happens is I do not know which constituency it will go to. So, I also have to therefore, either know the constituency or after having tampered with it ensure that it goes to the constituency I want because in every constituency the 1, 2, 3, 4s do not belong to the same parties depending on the kind of names that they have they could be in different positions. So, because the number is what is hardware program not the party therefore, it's a number which I have to know per constituency. So, election commission calls for a whole bunch of people to be involved with it political parties primarily who are involved in a one first randomization which is to work out which EVM will go where? This is done in front of the political parties and there is a randomization process there is an identification which will go where after which those machines go to those constituencies. So, it is very difficult to decide a priority that this machine will go to this constituency and that machine will go to that constituency. This is the first level of protection that exists then the second part of it is the election the returning the basically the polling agents of the parties who are there they all have signed into it. The second level of a process that takes place where each booth allocation in a constituency is also randomized. So, that means that the connivance at the level of the machine and the polling offices becomes a little more difficult because you do not know which machine will goes to which polling booth. So, that's the second level of randomization that's carried out again the presence of political parties. The third thing is really that if you want to do this that you want to change after the election has been done then you really have to subvert the polling agents of the political parties as well as accounting agents of the political parties because they will check the seals are intact the seals have been broken and so on. So, those are going to be also difficult to do. My last question is how can these evians be improved? How can we improve their mechanism and since the Supreme Court has asked EC to keep a paper trail of evians as well. So, do you think that's necessary? Well, I will say that question finally is what's the credibility of the election process and that's much more important and whether it really can or cannot be hacked. If the people believe there is a possibility of it being hacked by all means a paper trail can be provided and the cost of it is 20,000 per machine. But don't forget this has to be amortized over a number of elections. So, if you take 15 years as a life of a say a VVPAT as it is being has been named which keeps the paper trail then that's on a high cost if it says sees five elections in India the same machine is used for state assembly elections it's used for parliament elections it's also being used for local government elections. So, the number of election cycle that the machine sees is quite high. So, I think that's amortized over an election is adding say 23,000 rupees per election to the cost of keeping a paper trail. As I said given the sanctity of the electoral process which must really be maintained I think not a very high cost to pay. Can it be improved? Yes, it can be improved in terms of making it more easy making the cost lower making the functioning of the machine simpler and so on for the voter. So, the real issue is how can it be made simpler for the voter. There are all kinds of talks about how to introduce biometrics into the system and so on which I believe will only complicate the process and will defeat the purpose of the elections because it will actually make the process of giving the vote more difficult. Some people may not have fingerprints and they will say added scanners I think that's all the way to go. The whatever has been the paper system when the part of it is put under the electronics the rest of the system remains as is I think is relatively more credible as an election system rather than complicated by adding more electronics to the system. So, I think the system can be improved sure but the improvements have to be incremental and should not violate the fundamental way the EVMs have been designed and the electoral process has been designed because without that we lose the credibility of the elections. Thank you so much.


The What Sneak Show is sponsored by Lombard Hobbies. Your value hobby shop for over 40 years of modelers helping modelers. Big inventory, value pricing, fast shipping, and great service. And by Bachman Trains. Now that's the way to run a railroad. Check out their website at bachmentrains.com and thank you for helping us support the best hobby in the world. This is What Sneak for December 2022. I'm your host Ken Patterson and this month we do have a good show in that. Jennifer Kirk stops by and shares with us some footage of some amazing ride on trains in the UK in five inch gauge and seven and a half inch gauge. It's a really good segment this month on the show. Dan Michiel comes by the studio and shares with us their new DCC system from TCS. Larry Harrington also shares with us the brand new Easy Command DCC system that's been greatly upgraded and improved. We also look at some brand new models from K-R Models, a beautiful GT3 locomotive and a shea during a photo shoot that I did out here on the property. We've got some amazing drone footage from our drone pilot Dan Scheidel in that he exposé some of his best work through the years in this month's video and it's absolutely awesome to see his segment modeling ideas from above. Also be sure to check out the What Sneak this week video podcast that we shoot down here in the studio every Saturday night, keeping you updated on what's new in the hobby with special guests, new products and a lot of exciting stuff every week in this, the best hobby in the world. And so with that, let's continue on with this December 2022 What Sneak. I'm Jenny Kirk and today I'm gonna be talking to you about model railroads in larger gauges. And when I say larger gauges, I mean something like this. And this is truly amazing. It's five inch gauge and we've also got seven a quarter inch gauge here. Now you might be familiar with some of these if you've seen some great locations such as Train Mountain. And here in the UK, we do have some similar venues and I'm in the County of North Yorkshire at a place called Gilling where they've got a club that runs those large scale railroads. And we're here to take a good look at just how much fun can be had with these super large scales. Now you might be thinking that your yard isn't big enough to accommodate something like this. And this is where clubs and venues like Train Mountain are absolutely brilliant. Because in these gauges, they're small enough that you can put them into the trunk of your truck and take them to these locations and have a great day out. And at the end of that day, you can pack them up and take them home. So it really is the best of all worlds. So come with me and let's take a great look at large scale railroading. Large scale model railroading doesn't have to be just about the prime movers. There's plenty of scope too for the freight cars that run on the track. And you can see here, there's a whole assortment of different freight cars. All of these are UK outline, but it gives you a sense of just what can be achieved in these larger scales. And there's so much fun to be had just switching the cars on these tracks as well as just going for a run on the main line and just watching the scenery go by at high speed. I should be some lucky. Ha, ha, ha, ha. Like it was the big, big, big odd, right? It was every good day, that's what we had. Pick up a van there, it's not there. Come back, pick up a van. Only because we have a spare. Oh, right. So if you find a one, we need that. Yeah, it's the first one. Oh, is it? No, it's the second one. Film crew. It's in, it's in. Come on. We're here at the yard area and there is so many great wagons on show. And it just shows the amount of really great quality workmanship that's gone into all of these. From the great Eastern Railway brake fan through all of these private owner coal wagons with the great wealth of colors and also the different designs too. Further along, we've got the lime wagons, the three plank wagons, different styles of brake vans, the stannier brake van, some machine well wagons, press flow cement and some low fits as well. Such a variety of rolling stock that you can do in this scale. And each one of these is a great project. If you want to tackle these, they are available, some of these as kits. And it's something that you can put on your windowsill when not in use. And it's an absolute work of art. Really great day here today. And it just shows what these larger scale railroads can really give back. We've seen trains racing on the main line at high speed. And we even got a ride round on them. And we also saw some switching in the yard too. And it just shows there's so much on offer here. It really is a great day out and a great way of taking your hobby up to a larger scale. But until next time, thanks for watching. Take care. Bye for now. For this segment of What's Neat, I'm with Dan Michio from TCS, that's train control systems out in beautiful Philadelphia. And today he's gonna give us some tips and tricks and show us that brand new DCC system that's come out. And what is it called, Dan? What are you gonna do today? So what we're talking about today is we're talking about the internal roster settings for your locomotives in the CS105. That's our command station. Nice. It's a five amp command station, first generation. So it's CS command station, first generation, that's 105 five amps. Nice. Yeah. So what we're talking about is some of the options and settings that you have available to you in the CS105 for the locomotives that you run on your railroad. The CS105 contains an internal roster which allows you to save a bunch of different details and information on the system about your locomotives. And today we're gonna give you some demonstrations on what those options are and how to configure them. So behind me here, I have these RSD 15 alligator locomotives that if you'll remember from an earlier segment of What's Neat, my health can set up with TCS wild sound decoders. So we're gonna take these same engines and we're gonna be using these for a couple of demonstrations in a series of videos that are gonna give you the tips and tricks that you really should know about the CS105. So the very first thing that we wanna demonstrate with the system is how to set up more detailed information about these locomotives, such as what they are. You can give them a name and also we're gonna be eventually going into a segment on consisting. So the very first thing that we're gonna demonstrate to you is the settings that you have available on the UWT 100. I'll be using this for demonstration purposes, but you can set up these configuration options not only with the UWT 100 or the UWT 50. You can also configure these settings through JMRI if you have the CS105 connected to a computer. So to get started, I have a locomotive selected here, 9810. That's the very first unit up here. And by going into the menu, which is this button down here and navigating down to option eight, which is settings, I can then go to option three, which is the roster settings. Now I had already loaded this one in before, but if you're selecting a brand new address that's never been addressed before or you've never changed the settings for recently, it would take about five seconds to load in all of the data here. So you can see we have the name as an option. We could add a description about the locomotive. For example, we could give it a information about the decoder. We could say what type of locomotive it is. Below that, we have speed step mode where you can change the speed steps between either 28 or 128 speed steps. This function will be discussed in a future video on how the behavior of function zero behaves. And five for functions gives you an option to name your functions for your locomotive. You may find this familiar if you use jam or I where you have information that will display as to what each function is. So if you push a button, it would display on the throttle or in the function help as to what that does. And again, we'll be talking about that in a future video. We also have the option to delete the entry from the roster if you get rid of your locomotive and you have no use for it anymore. So going back up to the top, we'll start with giving the train a name. So instead of just having a DCC address 9810 in this case, we could give this locomotive a name. We could call it Jerry or Tom or we could call it something more akin to what the actual locomotive is. So I could call it RSD15 Santa Fe number 9810 for example. And that's what I'll do. So to save the time, we're gonna make a quick cut here until that's all entered in and then we'll come right back. Now through the magic of video editing, we have our name entered in for the locomotive. So like I said, RSD15 Santa Fe number 9810. If I'm happy with that, I can push the save button and now we return back here to the menu where I now have other options. If I escape out of the menu again and reselect that locomotive 9810. And so now you can see that we have the name of the locomotive RSD15 Santa Fe number 9810 selected. And that is how you add a name to your locomotive in the roster settings for the CS105. For this segment of What's Neat, I haven't done this in a long time in that I only do a few photo shoots a year, it seems like outdoors in the last few years. But I'm shooting some amazing models from a company called krmodels.net. And what these are, this is the first model that Keith Reville has introduced to the US market. His company has created this beautiful two truck shea locomotive, which I am doing some outdoor photography with in the past couple of days. This model runs like a dream, it's got full sound and it's just a very beautiful two truck shea. I photographed this outside in a really nice photo shoot. Let me show you how the photo came out as I shot this model from both sides, stacking the scenery and using the mountainous and the pine trees in the background for a really nice conceptual photograph of what this model would look like running on your layout. The other model that I'm shooting today is really unusual. This is a GT3. This model ran in the UK. And this is an absolutely amazing model in that it looks like a steam engine, but in fact, it's a turbine. This is powered by what sounds like a jet locomotive, a jet engine when it starts up and it starts running down your layout. It's got full sound in it. Both of these models come with low sound. I also shot this GT3 or this GT3 outside. Let me show you with you the photograph that I got from that. This model looks absolutely exquisite in real sunlight. And again, this thing runs smooth. It runs like a dream. And so this was just something that I wanted to share with you as I do these photo shoots of these models over the past couple of days. I thought they were very interesting. Jeff Schultz suggested that I share these models with the viewers of what's neat because again, they're fascinating models from krmodels.net. Check out their website. There's a lot of amazing locomotives that Keith is producing right now for the market, for us in this, the best hobby in the world. So with that, that is this quick segment for What's Neat. For this segment of What's Neat, I've got Larry Harrington from beautiful Philadelphia, Pennsylvania, from Bachman Industries. And Larry, you're gonna talk about something really new and exciting. And that's the brand new Bachman Easy Command DCC system that you guys have just upgraded and changed. Yeah, that's correct. Can we, 2005, we came out with the original Easy Command. Since then we've made, I don't know, tens of thousands, maybe a hundred thousands of units included as a separate sale item. We've also sold locomotives paired up with it. And any of our sound sets that we've sold in the last few years have included the Easy Command in it as well. The whole objective is to get the model railroad or start it in DCC. And when we did it back in 2005, DCC was pretty new to a lot of people and very complicated. And so we made the system as we call it Easy Command. So it's simple to operate. This was the original Easy Command unit that we had. Yes. I'm sure you see these all over the place. And we've upgraded the newer version. So this is the Easy Command Plus. It still looks very similar. It has a lot of neat new features that I'll go over. And just to get, we've gone into the 21st century here so that we could, like I said, when DCC first started, it basically was just to control more than one locomotive on the track. There wasn't a whole lot of sound systems out there. But now, as you know, there are so many features on these locomotives, lighting features, sound features. You need to be able to control all of those. And the original Easy Command only had a couple of function buttons. So the new version allows you to support all 28 versions, all of 28 of the function buttons. So right now, I'm in showing you how basically we have the function key still on the unit like it used to be, but it has like three pages we call them. So you press it once and you're in the first page, which would be function zero through function nine. Okay. No light turns green. And then you do it a second time and you're in page two, which will be function 19 through, I mean function 10, excuse me, through. Hold that up about two inches higher. There you go, we can see it. Okay, I can see myself better on it. You think I know how to do this by now. But anyway, you press it the third time and you're in your third page. So you can get all 28, it turns green. So it has a little color code on the top of the unit there that tells you which version it is, first, second, or third page. Very nice. Another neat feature you might notice that it has a, let me, I have a locomotive on the track here down. So I have to watch what I'm doing. Let me change it to a different address. So address two, there's nothing on that address. So we have a little speed indicator now, as you see the, Oh, nice. So you can, this is 128 speed steps now as well. So you can finally tune the speed. And the one other difference on this is that the original one had a knob that would just go like 315 degrees and it would stop. This one, you can keep going around and around and around and around until you get to the speed that you want to be and you can back off as well. And then as you can see, the indicator is going up and down. Yes. And it remembers that. So if you get to a different locomotive, like number one, you see now it went down to zero because there's locomotive one is at rest right now. So you can control multiple locomotives up to, we've set this originally like the originally easy command so they can control one analog locomotive on address zero. And then you can do one through eight with full control of your locomotive for DCC with all the like all function keys and all that. And function nine, I mean, excuse me, address nine is reserved for turnouts. But if you don't have any turnouts on your lab, you can also use function nine to control an additional locomotive as well. Very cool. I'm sure many of your viewers are familiar with the easy command back and take it through its paces here as well with a couple of locomotives. I can show you what it can do. Also, one other feature that we added to this was the original, it still has the emergency stop, which when you press the emergency stop, that cuts all power to your layout and shuts down everything. Okay. The new version, in addition to that emergency stop has an E stop for your locomotive. So if you're running a locomotive and you see all that was going astray and I have to stop it, all you have to do is simply press down on the button and that stops just that locomotive. So the rest of your locomotives, if you're running with other people in a session, you're not affecting their locomotives as well as yours. So whatever the active locomotive is that controls the E stop on that. Okay. This is backwardly compatible to the previous accessories that we had for the easy command. We had an easy command companion, which you could plug up the three additional ones in with patch panels and have all the people operating, their locomotives, the only limitation is there that only has the function buttons that were supported on the easy command companion. So this is the master brains that controls all the functions and it has, like I said, full control with all function keys for the locomotives. So I can show you a few things what it can do. So I'm going to show you how to control the locomotives. I have two locomotives on the track down here. Okay. So down my, can you see the tracks there now? Yes, I can. Okay, so first thing I want to show you is that you can do turnouts on address number nine. I can, can you see the points on the crossover where? The crossover closest to the tracks, we don't see the points exactly. Just a little bit, is a way to turn the camera a little bit towards the points. There you go. Good job. All right. And here we go. We're going to turn the. Nice. So I'm controlling that with the easy command on function number three. You can do one through eight for the functions that when you program, that's a different time and space to show you that there's a command, there's a video on our website that shows you how to program on our YouTube channel how to do the easy command switches. Very cool. But that just, you know, shows you can control the switches.  They all go FA1, FA2, excuse me. That's on address three. Okay. I'm going to show you as the controller lights up on three. When I go in the function mode, you see the three flashes, that's indicating on the locomotive address number here, controlling, but any of the illuminated keys are the functions that are active. And you notice I have number eight because I've muted the locomotives before we started this interview. So if I turn that off now, now you get the sounds of the FA1, FA2. Okay. Then I can actually start up the locomotive. This is the SD30 that I'm controlling right now. So start up, go over to the FA1 and get that pulled out. Wow. As you can see, I've controlled all the functions, all the sounds. I'll turn those off now so we can talk again. No, that's very cool. So basically with our last couple of locomotives that we've made the ACS64 and the charger, they've had so many sound functions on them and lighting functions that were used just about all of the 28 function buttons to control something or other, turning lights on, turning sounds on. And we ran out of that basically the way to do it on the easy command. We've incorporated some special programming on those particular decoders so that you could page by pressing function eight on the easy command, but you don't need to do that anymore. You can just go directly to the function that you want to control on the easy command plus. So this, like I said, is back really compatible with the other accessories. It's a great way to get started. And then going forward, our sound sets will start to include this instead of the easy command plus instead of the previous version of the easy command. So you're getting a really good value there. No, way to go. It's a great system. It's well thought out. The way you've changed things is amazing. Yeah, we kept it very familiar looking too. So if you're used to the old one, it'll only take a few minutes to get used to this. That's awesome, Larry. Well, that's perfect for Christmas sales. That's something to think about for getting on. They're in stock now, so go visit your favorite dealer and pick one up. That is awesome, Larry. Well, I want to thank you very much for helping produce this segment of What's Neat. It's always interesting, the products that you feature on this show. I appreciate it so much. We all love it. No problem, Ken. I'm glad to be here. All right, Larry, with that, that is this segment for What's Neat. Thanks. All of the products seen on this episode of What's Neat are available from Lombard Hobbies in Lombard, Illinois. Or order online at LombardHobby.com. Bachman trains. Now that's the way to run a railroad. Check out their website at BachmanTrains.com.


Sadhguru, what is a creative mind? Oh, how big an answer do you want? As big as you want it. See, the English word mind doesn't say anything because it's just one generic word which does not describe different dimensions of what the mind is. Mind is not just one something sitting here and doing something, okay? There is really no such thing as mind. In the yogic culture there is no mind. There is a physical body, there is a mental body because what you're calling as mind right now is a certain combination of memory and intelligence. There is memory in your body, more memory in your body than you can imagine.   You don't remember a thing consciously but your body remembers one-hundred percent. How ten generations ago your grandmother was, your body still remembers.  It's not forgotten and it's not going to forget. Your mind is not capable of this kind of memory. Your body has a trillion times more memory than your so-called brain. This whole shift towards the brain and intellectual process is a European malice. They gave too much significance to thought. This has happened because they lived under a subjugated society, religiously subjugated society where you're not supposed to think anything except what's written in some book, otherwise you're dead. They lived like this for a long time because of this, when they got little freedom to think and manage to live, they started celebrating their thought too much. Let's understand the context of thought. You can only think from the data that you already have gathered. That means you can never think anything new. You can recycle it, you can rehash it, you can produce permutations and combinations of it but you cannot think something absolutely new. It is not in the nature of the thought to come up with something new. It can only recycle the past.  So thought need not be celebrated like this. That's why in this culture thought has never been given so much significance. What you think is your psychological drama. We don't think much about that because it's your drama. Your drama is important for you, somebody else's drama is important for them. Everybody thinks their drama is the most important drama in the universe. This is everybody's experience because they're so identified with their own psychological drama. This psychological drama should not determine the nature of your life because this is just a small happening compared to the life process. Life is a much deeper intelligence than intellect. We can look at… the yogic system looks at the mind as sixteen parts. Those sixteen parts are further broken and they're taken up to eighty-four thousand parts. But now if I talk about eighty-four thousand already there's a segment which says no. So I will make it four. I'm taking away eighty, okay? I'm being fired to you. Only four. Four fundamental parts. One is the intellect which we have in modern world, in today's world, we are unnecessarily giving too much significance to intellect and we will pay an enormous price for this. You will come to a place where you'll know everything but you'll know nothing of life significance. Really. Today you will see this happening to children. For the first time this generation you see, ten, eleven-year-old or twelve-year-old children, they look bored. When you were ten, eleven you did not know what is boredom. It was not possible to stew, exciting, to be alive and looking around. You will see ten, twelve-year-old children all looking bored because they've seen the cosmos through their phone screen. They know it all and especially in the western countries you will see this happening at eight, ten. They're really bored. You'll see in the school buses they're all sitting around. Bored because by the time you were twelve, you already had one love affair. You know what is a break. You know how to… all this recover from that. You've tasted alcohol. You've seen this. Probably you've gone into all kinds of physical things and you know the cosmos. What more? By the time you're fifteen, there's really no purpose for you to exist for many of them. You should not be surprised. If this culture continues, I'm not saying this is a prediction, it is something that I see beginning to happen. In another fifty or hundred years time, if twenty-five to fifty percent of the people commit suicide, you should not be surprised because life needs some exuberance. If too much information happens to you without experience, that exuberance will be gone and a sense of false sense of knowing becomes so strong in you. This is the danger of intellect because intellect wants to… intellect wants to dissect everything. Intellect is like a scalpel. The sharper it is, the better it is. It wants to dissect and know. Dissection works with some things, not with all aspects of life. If you want to know the poor frog, you know, you remember? The poor frog that you crucified and cut and great knowledge you acquired from all that torture is unbelievable. How much knowledge you know? For the torture that that frog went through, how much knowledge you have acquired is quite unbelievable. All that you got to know. Now you got interest, suddenly you got interested.  Please get yourself a sharp knife. Without the dissection, you may know everything about her liver, kidney, heart, but you won't have a mother left, that's all. So life cannot be known by breaking it up. You can know physical things by breaking it up. You cannot know life by breaking it into pieces. But this is the nature of the intellect. The whole modern science has evolved from human intellect because it's produced technological benefits. You can't argue against it because people, you know, they think they're scientists, they know nothing about science. They're just enjoying their iPhone. They think they're scientists because they can do this. No, technology is fine, it's brought much comfort and convenience, but it will not bring life to us. So intellect is like this, intellect will be useful only depending upon what it is identified with and what is held, what holds this, how steadily. So the next dimension of the mind, the first one is called as buddhi, which is the intellect. The second one is called as ahankara. Ahankara does not mean ego, this, that, it means the identity. Whatever you identified with, you intellect functions only around that. Simple, if you just identify with a nation, if you say I'm an Indian, everything Indian looks beautiful. If you cross the border and you say you're something else, all that looks beautiful. So whatever you identified with, it's only with that the intellect functions. So ahankara is the identity. How consciously and how steadily your ahankara has been created will determine the effectiveness of your intellect. Just because it's sharp, it does not mean it'll be effective because sharp intellect or a sharp knife can cause any amount of damage to you.  That's all that's happening. Human suffering is just this, you don't know how to hold this intellect in your hand properly. Every day you're cutting yourself. All suffering is on self-help because your own mind causing this to you all the time.  If you had the mind of an earthworm, you would be quite peaceful. Yes? You're trying to do it in so many ways to reduce the sharpness of the intellect by drink, by drug, by overeating, by doing all kinds of things somehow to take away the sharpness because the damn thing hurts. It hurts not because that's its nature, it hurts because you do not know how to hold it. The next dimension of the mind is called as manas, which is a huge volume of memory. It is not here or there, entire body carries memory. So mano maya kosha, this is called a huge sack of memory. This memory is in various stacks, we're not going to all these details considering some people have clearly decided to clear no. They don't want to have a mind, I'm sorry, they don't want to know anything about the mind. So the fourth dimension of the mind is called as chitta. Chitta means it's pure intelligence. It is unsullied by memory. It has no trace of any kind of memory, it's just pure intelligence. If you touch this, then you have access to what you're referring to as the source of creation because all kinds of things might have been fed to you, God is this, God is love, God is compassion, God is kind, whatever, whatever. They come, stand on the edge of this stage, say all the prayer you want to say and fall. Let me see whether compassion happens to you or a cracked bone happens to you. I would like to check, all right? All these things have been made up because whatever somebody is deprived of, they will attribute that quality to their idea of God. Your ideas of God have come only because you do not know what, how this whole creation happened. Because you don't have an answer, you made it up.  If somebody asks, he has ten hands, so he does lot of things, not like you, whatever. It's all right for children. But essentially because you do not know how creation happened, you are coming up with explanations. So that which is the source of creation, don't believe what I say, what anybody says. Pay attention to one piece of creation, just take a flower, pay attention to this, pay an attention to a leaf or an atom or an ant. All you will see is phenomenal intelligence beyond anything you can imagine, yes?  But this culture has said this to you in many ways. They told you, Chidakasha, Chidambara and so many things. To tell you, if you touch your chit, the whole existence becomes yours. Everything that's worth knowing is right here because you have access to the source of creation. So these are the four types of your, four dimensions of your mind. Unfortunately, the modern education thinks by just feeding information and keeping the intellect reasonably sharp, everything is going to happen now. You will rip this planet apart looking for well-being. You may lose the planet or you may manage to go to another planet and start your work again there. But well-being will not happen. If well-being has to happen, you have to dig a little deeper into this one, otherwise now.