Hey there, YouTube. My name is Lee Brandt. I work for Okta. Today we're going to talk about naming conventions. Now, I started my career many years ago, about 96, 97. Started off doing a little bit of Coalfusion, then quickly moved into the Microsoft space with active server pages, using Visual Interdev, if you remember those things. And back in those days, it wasn't uncommon to work for a company that used a naming convention called Hungarian Notation. Now, Hungarian Notation had been around for a while. One of the guys who was the chief architect at Microsoft had recommended it to anybody doing Microsoft stuff. And if you're not familiar with Hungarian Notation, it was a naming convention that semantically named variables to tell you what the type was. So, for instance, if you had a variable name, first name, it was usually STR first name. In the lower case, STR, and then first name. And it kind of bled into everything. So, if it was a variable that was meant to hold an object, it started with OBJ. If it was a variable meant to hold a long, it started with an L. And it bled over into database programming where tables would be called TBL and stored procedures would start with SPC or SPR. So, it kind of fell into everything. And somewhere around, I guess, the early mid-2000s, people started recommending against it. And mostly it had to do, I think, with the fact that IDs were becoming easy. They would give you the variables type on demand easily. It would just show you immediately that this is an integer variable. This is a string variable and that sort of thing. So, there wasn't really a lot of need for the extra typing. And so, it didn't really provide any more value. But one of the things that stuck around from Hungarian notation was the interface naming convention of starting the interface with the letter I. So, instead of just having an interface, it would be I interface, whatever the name is. And it's really the last wooby of Hungarian notation, the last thing that got held onto. And Microsoft still does it in the .NET framework. The interfaces are all prefixed with I. And it's pretty common. But with the advances in code editors like Visual Studio Code and Visual Studio themselves, we really don't need them anymore. But you might think, what's the harm? So, really for senior level devs, there really isn't any harm. We know it's just a naming convention. And any naming convention, as long as you've, as someone who is a consultant for most of my career, when I come into a new organization, I just figure out what their naming convention was. And I would just follow it. There's no reason not to. It's one of those things that, as a consultant, it's one of those fights that's just not worth fighting. There are plenty of other things that organizations might be doing poorly that focusing on the naming conventions of their variables is just not worth the fight. But for junior developers, and one of the things that I've noticed, I've also done a lot of training since about, oh, 2006, 2007, I've been doing a lot of training with developers. And one of the things that I noticed is that that naming convention has a tendency to provide a barrier between junior developers or maybe developers that are new to a statically typed language as to what the real power of interfaces is. I distinctly remember training a team, and so I put together this example, and I said, okay, so here's the first part of this example. I want you guys to finish this example, and I want you to use the interfaces and this kind of interface driven development that we're talking about. And one of the people came back to me with their next feature, and it was good when I looked at the solution, when I looked at the code base and the file names, they were good. They had an I-person repository and a person repository just as an example. So when I dug into the code, though, the I-person repository had no code in it whatsoever. Now, the person repository still implemented the I-person repository, but since the I-person repository had no code in it, it really didn't do anything. And it's all well and good to tell young developers that interfaces are just contracts. They are contracts that will be fulfilled by some implementer somewhere in the future, and that's great. But for me, especially when I first started, I kind of got the concept, but I didn't really understand the value, and especially when you see a lot of code bases where there is a one-to-one relationship. So I've got an I-person repository and I've got a person repository, and a lot of junior developers, especially .NET developers, their only exposure to interfaces was the I-disposable interface.  People weren't writing a lot of interfaces because they didn't understand the power of them, or at least I wasn't. So when I first started to understand the value of interfaces, I started doing this one-to-one thing. So it wasn't I-person repository and a person repository, and then I would put all the methods like create, read, update, and delete in my I-person repository interface, and then I'd put the implementation in the person repository class. And I never really understood why I was doing what I was doing. I never understood that this was a contract and that I needed to fulfill that contract with a person repository, but I still wasn't properly coding to abstraction, so the abstraction was a wasted abstraction on me. And when I did, there was only one thing that ever implemented the I-person repository interface, and that was the person repository interface. So a lot of the meaning was lost on me, and when I finally got it, I don't remember what exactly flipped the switch for me, but when I finally got it, it came in the guise of having a second implementation for something. And all of a sudden when I started teaching other developers, I would still say, here's the I-person repository, and here's the person repository. The I-person repository is a contract that the person repository must fill, and that's all great and wonderful. But once you start using something like a dependency injection framework back before it was built into the .NET framework, we were using things like NINJECT and Autofac and things like that that were injecting those dependencies for us. Then it started to become clearer, and I think one of the things that really gets it for junior developers, when I came across a blog post that was talking about removing the I-person interface, and if I remember correctly, it was by Jean-Paul Boudu who I followed a lot back then, and I was like, okay, well, I'm not really sure I see what's going on here, what the point is, but I'll give it a shot. And so my next small project that I was doing just for myself personally, I forced myself not to call my interfaces I-person repository, for example. And what happened was when I was forced to drop the I, my interface then became person repository, which means that now I had to find a separate name for the implementation. Now I could have put it in another namespace and it would have been okay, but it would have still become problematic when I'm using it because I just put the imports and the using statements at the top, but down below I would still be calling it person repository and I would have to fully qualify it in order to talk about a lot of typing. So I had to find a different name for the implementation class, and so I would call it seekor repository, right, or in memory person repository, whatever. Now, all of a sudden, when I'm doing that, it becomes clear to me why an interface exists and why the implementation exists because I'm injecting those interfaces and the interfaces are being used in place of those concrete classes because all that we're being told in, let's say a controller, for instance, because that's where you use it a lot. So I have a person controller that gets an I person repository injected into it, or in this case, a person repository interface injected into it. The dependency injection framework says, hey, whenever somebody asks for a person repository interface, give them the SQL person repository class. Now, I use it inside the controller as if it's just a person repository without any notion given to how it's implemented. Think of a telephone interface. So when I'm on a regular telephone and I've got those 12 buttons, right, I know how to use them. So when they put together cell phones, did they really have to give us 12 buttons? No, they could have given us anything, but the interface we were already familiar with, but the implementation behind the scenes is quite different, right? But we don't care. We just push our 10 buttons that we do for a phone number, seven if you're calling locally, right? And we don't care how the implementation happens between the touch of our finger and the registering of that number. And once I was able to kind of make this clear to junior developers, all of a sudden, I saw lights going on with junior developers. As soon as I said you cannot use I in your interface names, they immediately started, OK, well, here's my person repository. Man, what am I going to call my implementation class? Well, what is it doing? Well, it's saving it to the database, to the SQL database, right? Sure. Well, why not call it SQL person repository? Oh, OK. But what about something else? Yes, what about something else? Like an in-memory person repository.  You see that light go on with interfaces and their implementations. And I think that that's one of the things that for me made me kind of passionate about getting rid of the I in interfaces was once I see that light go on because they were forced to drop the I from interface. And again, for senior developers, it doesn't make any difference. At the end of the day, if you've got this huge code base that uses I in interfaces, there's no reason to go back and rename everything. That would be horrific, right? But dropping the I from interfaces forces you to find a meaningful name for the implementation classes. Now I have seen, this is another kind of anti-pattern, and it's pervasive in Java, and I think the reason is because a while ago Java dropped the I from interfaces. Java developers haven't used it in a few years now. So what I saw in Java instead was they'd have a person repository, and then they'd have a person repository IMPL for implementation. So they had the person repository interface and the person repository IMPL implementation, which still doesn't help people who are trying to understand interfaces and are trying to understand how these statically typed languages work. That doesn't help them either because you still end up with almost a one-to-one relationship, which is fine if you only have one implementation trying to loosely couple, trying to pull two pieces apart from each other so they're not so tightly coupled to each other, I get having a one-to-one relationship. But the real power is in the fact that if you need to change that implementation, it's easier to do because I just write a new class that implements the interface in a new way and tell the dependency injection container that whenever somebody asks for this I person repository now or this person repository now, give them the in-memory person repository. Now, this has been super helpful in real-world scenarios. So I was doing some work for a large organization, a banking organization, so there's a lot of bureaucracy and a lot of security that goes in, there's a lot of layers there. So we needed a database. The problem was the database team was really small and they serviced like 15 or 20 different software development teams. But because of certain compliance issues, we couldn't create our own databases. We had to go through the DBAs to get a database created for us. So it took them about a month and a half because of their backlog to get a database stood up. Obviously everyone who's a developer is thinking, why would it take them a month and a half? It was just because of the backlog because they had so many things to do ahead of our request that we had to wait. Now, we could have stood around and tried to write some classes and tried to come up with a little framework of classes that we were going to use and that's all great and tried to avoid the database. But instead, we went about our business as if nothing was different, as if nothing had changed and we just used interfaces and an in-memory repository. So anytime you needed to save an order or save a transaction, we would just send it to the transaction repository interface and the in-memory transaction repository would handle it. Now, none of this is the fault of I in interfaces. They still could have been called I Transaction Repository and Transaction Repository or in-memory Transaction Repository. The I doesn't stop you from giving it a good meaningful name. But I think that the I does keep people younger developers, junior developers, people just starting out or people who just moved from another language that doesn't have interfaces. It keeps them from understanding the real power of interfaces. And people who are unfamiliar with your code base automatically understand calling it I Person Repository and Person Repository doesn't tell anybody reading the code base about what's going on inside that Person Repository class. They still have to open up the implementation to find out what's going on. But at least the name SQL Person Repository gives you some information about the class that it's saving it to a SQL database somewhere. Now, SQL is pretty pervasive, so it could be PostResql or MySQL or Oracle or SQL Server. It doesn't really tell you much more, but you know that this Person Repository is actually saving it to a SQL database or saving and retrieving from a SQL database. That helps. And having them injected into like controllers, for instance, when I'm using the Person Repository interface, I'm using it as I would any other thing, like any other concrete class, which is the way you should think about it. Now, some of the common objections I get are like, I like being able to tell immediately by looking at the name of the class that it's an interface. For me, that doesn't really hold up just because you should be using it like a concrete class anyway, right? The I-Person Repository that's injected into your Person Controller should be used as if it were the implementation anyway. You're just calling methods on it, and it's handling, however it's handling it, whether that's saving it to a SQL database, saving it to an in-memory collection somewhere, saving it to an XML file, saving it to a JSON file. I don't care. All I care about is I call the PersonRepository.save and pass it a person and it saves it for me, and I can retrieve that one again, right? So liking being able to tell that it's an interface in advance just by looking at the class name, I think it's okay, but again, it goes back to the objection that I get with that generally is more from senior developers where the I is just a naming convention, and that's fine, whatever your naming convention, again, not a fight worth having. The second objection I get, specifically from .NET developers, is that the .NET framework uses I for interfaces everywhere. And sure, the code base has been around since the late 90s. I remember messing around with some of the first betas in 99. So of course those, that was when Hungarian notation was pervasive. And not that it means anything. They had a large code base and they didn't want to go back and refactor, but they didn't drop the I's from interfaces, and so people still follow that guidance from Microsoft. And that's fine. Again, that's completely fine. I'm just saying that it may keep younger developers, and people coming from other dynamic languages from understanding the true power of an interface in a statically typed language. So, the other one that I get a lot is don't all statically typed languages use I for an interface. Like I said, Java stopped doing it a while ago. I work in a Java shop and I ask some of the Java guys, do guys still use I in interfaces? And they're like, no, that was a few years ago. We stopped doing that. So, but I think where the IMPL thing came from, where people would name it, Person Repository and Person Repository IMPL, I think that came from the people who didn't want to let go of the I in interfaces. So they just switched the naming convention over to the implementation so they could tell that this was actually an implementation. And it's not terrible. It's just, it doesn't really provide any value. IMPL only tells you that it implements Person Repository. That's fine. But calling it SQL Person Repository or XML Person Repository would at least give you a little bit more information about how it's implemented so people know what to expect when they open the file. The other objection that I get and I just got it recently because I talk about this a lot with other more seasoned developers is I like being able to find the interfaces in my code base. In my list of files, I like being able to find those interfaces because they're all right there starting with I. And that's great. But it doesn't really... There's other ways to achieve that without giving up the helpfulness of calling it Person Repository and SQL Person Repository and XML Person Repository. You can namespace it. Just namespace all your interfaces into a namespace called Interfaces or Abstractions. Something like that. Now you can find all your interfaces or in a namespace called Abstractions. And the good thing about namespaces everybody's probably got into one of those projects that has 500 or one of the solutions that has 500 projects in it, right? So, I tend to lean on the more simpler side. Start with, especially if I'm doing greenfield development. I mean, if I'm coming into a brownfield development, I usually don't mess with their conventions unless it's causing problems, causing strife, even if I don't agree with their conventions, I just follow them. It's easier to follow them than to make that fight. Especially when I know I'm going to have to fight something that may be more difficult later but it's more important. So, I start on a project with everything in one project. And I just namespace things at boundaries. So, in .NET, just namespacing it means just creating a folder. Now I've got a new namespace. But, and Visual Studio and VS Code will help you out with namespacing based on where you create the file at. You create it in the controllers folder. It's going to be prefixed with the .controllers namespace, right? So, that's a good way to change out those boundaries and having them in another namespace immediately means that I can break them out into another project fairly easily by creating a new project with that namespace and deleting that folder and I'm done, right? So, namespacing your interfaces can give you the same benefit as naming them all with I. One of the things that becomes a problem is you end up with a bunch of I interfaces. And especially if you've already namespaced them and you have them prefixed with I, now you have I's and you have to go with the second letter to find the one you're looking for, right? So, I'm not sure that naming files starting with I will help you find them better, but so the question that I get a lot is okay, so you're telling me I should go back and I've got a codebase that's 10 years old and I should go back and rename all my interfaces without an I or rename all the implementations no, I'm not saying that at all. One of the things that I'm suggesting you do is with smaller projects going forward just try it out or even in your personal projects and especially when you're training junior developers you're training people who are changing from a dynamically type language and have never used interfaces before JavaScript developers are finally getting this with a little bit of the TypeScript interfaces but people coming from Python or another language that's dynamically typed might not understand what interfaces are actually buying them and they may just see it as a bunch of extra typing so forcing them to not use the I and interfaces in a small project can help that light go on for them and help them understand how interfaces work and what their real power is what the power of that abstraction really is being able to switch out different implementations easily I think is super, super helpful and this is going to take time I don't expect that everybody on the internet is going to go, oh, Lee's right we should get rid of the I interfaces first of all I fully expect lots of vitriol in the comments I expect people to call me stupid I expect people to tell me I don't know what I'm doing I expect people to tell me that I'm a really crappy programmer that's totally fine I've been doing this for a long time I've had lots of happy clients I've had lots of happy coworkers that I've worked with and I've taught a lot of junior developers along the way that I did see the light go on when I forced them to write a small project even if we were using the I naming convention for interfaces in our main project I would force them to write a small project on their own where they couldn't use I as an interface especially if I saw that they were struggling with understanding how the interface and the implementation are kind of connected together so that's really what I'm trying to say is for junior developers and for people coming into a statically type language from a dynamically type language let's start by showing them a statically type language with interfaces that don't start with I and I think that the light will go on a lot quicker for them on why interfaces are important and why you should use them as an abstraction layer to decouple layers from each other so in the end the real question is what do you think is there some benefit to the I interface that I'm not seeing again I've been teaching this since about 2005-2006 so I feel like I've come up against just about every objection you can have but I'm always willing to learn always willing to hear somebody else's opinion if you have an opinion that's like you have to use the I interface because of this or that benefit you get is great but it's not as good as this benefit I get from using an I interface naming convention please, please tell me about it I'd love to hear about it leave it in the comments below don't forget to subscribe to the channel and hit the little bell so you get notifications when we've got new content coming up we're making lots and lots more of these videos as well as instructional videos and some of these opinion videos that are going to cause the internet to go aflame I think but go ahead and leave your comments below subscribe and hit the bell notification and we'll see you next time


The Trader's Edge with Steve Rhodes toll free at 1-877-927-6648 or internationally at<PHONE_NUMBER>. The Trader's Edge. Now, Steve Rhodes. From TFNN, welcome to the May 15th, the wonderful Wednesday edition of today's Trader's Edge show. I'm your host, Steve. Perseverance Rhodes, who absolutely knows that each of us should always be pioneers of our future versus prisoners of our past. Hope everyone out there is having a great day. How about we have an extraordinary one? Yeah, let's have an extraordinary day. And of course, the easiest way to do that, it's to always remember that life is happening for us, not to us. That's right. We knew that make that one little two-by-four shift means we can find the gift in every set of circumstance that life is going to toss at us. Today, you and I, we're going to go check on the circumstance of these markets. We're going to go figure out with the bulls and the bears what those buyers and sellers are communicating to you and I just passed one o'clock in the afternoon. I want you to know that I'm absolutely grateful for your presence here, but most importantly, I'm here to serve you. So feel free to pick up that phone. You can dial in right now at<PHONE_NUMBER> if you can't dial in. We've got you covered. Just send me an email. Steve at TFNN.com. Inside that subject heading, please put a radio show question. Of course, our Tigers Den, any ping will do. So let's go ahead and get this show started on wonderful Wednesday. Of course, this is Tiger Financial News Network. I'm Steve Rhodes. Welcome to less show right now. All indices, well, I take that back. All indices with the exception of the transports are in the green. The Dow is up a half a percent. The S&P up six-tenths, the NDX 100 up one and two-tenths. Russell 2000 basically flat up a buck 30. The transports are down 250, so we're going to call that a flat market out here. You've got gold trading up $2 bucks, $12.98, 30, Silver's flat, and Light's Recruit is up quarter. To the upside, lead in the charts, it's Google, $40, trading out $11.65, the trade desk up nine, AM docks, limited up six, Mon, God to be, something like that. That's up about six bucks. To the downside, it's Tran Digim Group, $17.03 and a half percent. Children's place down seven and a half, Agilent Technologies up nine, Signature Bank down six. So certainly things to look at. Of course, I want to look at what you want to look at. Only one question before I go to that's an individual stock. Let's just take a look and answer the question. Hey, why did the market bottom and when it did this morning sound like a good idea out there? Okay. All we have to do is come over to, sorry about that, is come over to our short term timeframe chart.  This is going to be a clean version of it. Not that the other ones aren't clean, but they just have more tools and indicators on them. We don't need more tools and indicators. If we take a look at, now, why did the Dow Equity Futures contract at two o'clock yesterday afternoon? We got off the air. Why did it top? Well, there were two reasons. See this green horizontal line out there? That is a resistance line. It's established by that TD setup nine count. You will see that price was hitting right at resistance bar number eight. What's bar number eight tell us?  Well, no matter what timeframe it is you are looking at, you see that the hair should be standing up. Now it should stand up more so if you're coming into resistance. You did get bar number nine at two thirty. The market went ahead and pulled back, pulled back to where, by the way, the red line is support. The green line is resistance. Now this morning, just get to get to the point, Steve, on a 30 minute basis, exactly at ten o'clock you got to wear bar number nine. And what's transpired so far? Well, price was able to move right through that once you get that bar number nine, it sets up your next resistance level. That was at the price point out here of the exact number was twenty five five sixty seven. Price sliced through that at eleven thirty this morning. There's price was moving into that area. There is no other than it being resistance and it is resistance. It was resistance. That resistance failed. But no, no, what we'll call topping signal at that stage, still no topping signal. Still none. But yet price has found resistance. This level, we got to take this all the way back here. This is that was a breakdown level that takes you back to May 13th and that's at seven thirty in the morning. That's where price is struggling. If price can close above that, I didn't give you the price today. I should give it to you twenty five six seventy two. That's the number to be watching. But we'll see over the course of the next. This could be bar number seven. I don't know if it will be or won't. Then you'd have bar number eight at I could complete at two o'clock today. Jesus did that yesterday too. Anyways, we can't do the bar counting until we actually get to bar number nine. But there's some possibility here. Now, that's what happened inside of the Dow out there in the case of the NQ. It did not form a nine count this morning. Instead, what price was doing right there at the same time that the Dow equity futures contract, just a 30 minute basis chart that we're looking at 30 minute time frame chart right here. This was actually nine thirty this morning. I did the NQ bottom at nine thirty. Well, prices came down, tested support. You could see you had doble ghee support out here. Take a look where price and essence has stopped. Why did price stop in its tracks out there? Because this is where the breakdown area was. It's not where the gap is. Most people would think that that's where it was. Not that the gap is not important, but that is not where the breakdown began. The breakdown began right here. This is at one thirty in the morning. One thirty in the morning. That's right on May the 13th. That price level 75, 24, 50. That will be a key level to be watching today. Look, we could go through the ES and the Russell 2000. I'll just leave those for you to go through. If you're an intraday trader and you're not using this tool, this set of tools, you've got to ask yourself the following question. Why? Well, if it's because you're not sure how to use that tool, then just go subscribe to Mastering Probability. There's a one hour workshop that's in the archive section for subscribers to the newsletter. And just simply learn it. Learn it. Use it. Use it for whatever time frame it is that you are using out there. Any wonder that on a quarterly basis that Apple top where it did as it formed that TD set up nine count? The answer, my friend, is no, not really a surprise. Just simply by taking a look at it. Okay, so we've got that. Let's go start to jump over to the question that came in because if you write in, I want to answer that question. The first one coming from Keith M. Keith M writes in, hey, Steve, I'm long RIO. That is, let's go take a look at that ticker symbol out here. That is Rio Tento. That's versus REO. That's why I had to pause there because, you know, you say RIO, I'm thinking REO. Obviously, that wasn't it. But getting impatient, long and impatient, especially after Target raised yesterday. Also, your thoughts on SPX going into Friday. So, okay. So look, I don't know when you say after Target raised. I don't know who raised the target. But let's just take a look at Rio Tento. Here's what we know before we go to the break. And then we'll come back. We'll finish this off. On a daily perspective, you don't like what you see. What do you see? You see price running in resistance at the bottom of that profile. $58.97 is a number. Price must close above. The daily chart is saying that it could be more downside movement to wear. $55.57. That's the bottom of that weekly profile. You're in between a brand-new monthly profile right now. Support could be $57.68. I've watched that $57.68 like a hawk. Otherwise, it's $55.57. Next up, we'll go further take a look at RIO on my little chart. The Taz Profile Scanner is the most revolutionary piece of trading software that you will ever try. Wouldn't you like to approach the markets with confidence? As you begin your trading day, it's likely that you'll be faced with lots of decisions. In order to make the best decision, the first thing you'll need is a strategy that will help you minimize your risks. Whether we're in a bull or bear market, a good strategy is to have the tools needed to help you scan and analyze the markets before you trade. The Taz Profile Scanner instantly scans and filters over 2,500 global financial markets such as stocks, ETFs, commodity futures, and forex. Headed by Steve Dahl, president of Taz Market Profile, the Taz Profile Scanner understands that in today's technological world, the use of top-flight software applications, automated trading algorithms, and technical analysis expertise is essential to successful trading in today's market. Whether you're looking at the trade matrix, the ETF heat grid, the market breadth, the landscape charts, or the many other features of the Taz Profile Scanner, this is a piece of software that will revolutionize how you look at the markets and set up your trades. The team at Taz has even put together a 12-part video series to walk you through every aspect of the Taz Profile Scanner, which you can find directly on the Taz Order page at tfnn.com. Sign up now for only $97 a month with a risk-free 30-day trial so you have nothing to lose and everything to gain. See for yourself how you can harness the full power of the Taz Profile Scanner by visiting the front page of tfnn.com today, and you'll find the Taz Profile Scanner under the Services section. Remember, with a 30-day money-back guarantee, you have nothing to lose. Don't let another day pass you by without trying out this amazing piece of software that will revolutionize how you look at the market and how you place trades. Sign up today. TSNN has launched our brand-new website. You can still visit us at the same tfnn.com URL, but when you do, you'll see a new and improved homepage with a much simpler navigation, whether you're watching Tiger TV live in high definition or just accessing your newsletter subscriptions. We even have new pricing in six months and yearly options. Check out the new tfnn.com now and experience all the upgrades. tfnn.com, educating investors. Call now toll-free at 1-877-927-6648 internationally at<PHONE_NUMBER>. Welcome back, folks. We're taking a look at Rio Tinto for Keith out here. So, Keith, here's the deal right now. And I know you're impatient. You're long. I don't know where you're long from. But when we take a look at Rio Tinto, we know that it was below the daily profile. We also know that, for example, yesterday and last week, when Rio Tinto moved tire where it ran into resistance was Stevie's Green Line out here. That Green Line right now is priced at about $58.67. You're trading at $58.27 as we speak. So, if you want to be less patient, you want to see price close over Stevie's Green Line. In lieu of that, you do have support. We just took a look at the TD Setup 9 count. We looked at the resistance and the support lines. It works this way for all instruments. For the daily profile here, that says that your real level of support that you would want to be watching, that formed on the low of March 26 out there. That's where the real breakout inside Rio Tinto began. And that breakout level is at $56.64. So, I would say as long as price remains above $56.64, if that was the number I just gave you, I think that it was, then you're probably okay. Now, there is another level just below that. And so, that would be your final level of support out here. That's from February 15. That low is $55.88. Do I see a pattern here that says that Rio Tinto is about to move higher? The answer is I do not. You do not either. It's below Stevie's green line. It's below the bottom of the daily profile out there. But that doesn't mean that support won't get broken or will get broken. It just means that support to the downside, those are the levels. Those two red lines are the areas that you want to watch. Short of that, then you're looking at those targets that we took a look at earlier. That was the weekly. That might actually get you down towards that level, which is $55.57. And $53.95 on the monthly timeframe chart. With this new profile, by the way, that formed for you back on May 6, tells you that the trend changed to the downside out there. So, Keith, thanks for writing in. Oh, you asked the question, what are my thoughts going into Friday in the S&P 500? We're in a trader's market. I'm just going to make it really simple. We're in a trader's market. To me, that means what you need to be doing is looking at the short-term timeframe charts out here. So specifically, we had looked at the NQ and the YM. If you're wondering, why did price stop where it did this morning? It's a little bit harder to read. That's why I took out those other charts earlier. It was with the eight count of that TD set up a nine count pattern. And now it's actually, it's easier here, prices into resistance. So we took a look at resistance inside the other equity futures contract. You want to see how resistance works here. Take a look at those two green lines. 28, 58, 50 is the next level. Now, what I don't have, we just know the price at resistance out here. I don't really have anything that is bearish, so to speak. But hey, it's at resistance. We could begin to see some type of retracement out here. If you can get a close on a 30-minute base, that's all you would need above 28, 58, 50. Then I say the S&P 500 can move higher out here. So we do have a higher low that occurred this morning. We do have a slightly higher high versus yesterday.  But we're really in a trader's market. We saw that yesterday. We see that this morning. So I would be paying attention to these patterns. If you're trying to trade them, you're asking about Friday. So that means you're really, to me, not a long-term trader out there. I'd watch 28, 58 like a hawk because it's also the bottom of the weekly profile out there. And then Mr. Z says the account to the downside, or is this to the upside? It's another peak G. Let me see here. I don't have a peak G. Mr. Z, I only have level A. And then to the downside, it was F that I had out there. But maybe we're using two different sets of swing points out there. Sorry about that. Or maybe we were talking about something from yesterday. But yesterday was we had that nine count. Remember, you were on the air and you were saying, what price would you go long or good short?  But I said, you cannot discount. I think I said that the mere fact that we're right at resistance. And at two o'clock, we were making that eighth bar out there, that top. And that's what actually sent things lower. And then to watch this red line overnight, which in fact, that is where price hit earlier this morning. That was about eight o'clock this morning. Failed and went on and produced that nine count bottom inside the ES on the 30 minute basis. Now, these patterns will eventually start failing perhaps on the 30 minute basis. Start working better on a different time frame. But right now they're working for all of the equity futures contracts about as good as you can get out there. So Keith, I would say pay attention to the 30 minute timeframe for the ES. If you are trying to navigate what it's going to do or likely to do come this Friday. No other questions that I see out here. So come on, folks, help me out. Help me, Rhonda, right? And the reason is because when you do help me out, then that way at first it makes it easier. The show goes by quicker and then I'm giving you specific information that you want. All right, so they don't have that. What do we really pay attention to? What are we focused on? What am I focused on? I'm focused on Goldilocks. Why am I focused on Goldilocks right now? Well, the two hour timeframe is going to complete the current candle session out here. And the current candle session says, well, potentially be careful. Now, why is it saying be careful? Well, because we actually had price moving higher due on less relative energy at 9 a.m. this morning. And the current bar that we're in, it is a bearish reversal candle. It is what's referred to as a dark cloud cover. Now, it's not the strongest of the bearish reversal candles, but it's not the weakest either. And it is a reversal candle and prices below Stevie's Greenland. Now, the push lower this morning was a test of support of 1295-50. That is going to be a key area. If you see price close below that, the signal from the five hour timeframe chart is that the trend has changed. You can see the high that was formed yesterday. There was no profile. There was not a profile at that shooting star, but still that's even a bearish reversal signal. We could draw an A to B equal CD pattern in here and probably get pretty close to it. That's neither here nor there. The more important pattern is one that is taking place or took place or began taking place at 9 o'clock. This morning. So be careful. What are you watching for 1295-50? Close below that on a two hour timeframe. That would be to 2 p.m. That would be at 5 p.m. That would be at 11 p.m. That would be four in the morning. We have new profiles and so forth that form there. The dark cloud cover and this pattern is nothing more right now because there's no level of support that has been broken. That's the bottom of the box you and I are taking a look at is the kind of pattern that says, take your umbrella because it could start pouring. Could start pouring. Support has to be broken. That's at the 1295-50 level. Watching that really like a hawk. What's the one hour timeframe chart here telling us about Goldilocks? Well, we had that topping pattern here back yesterday. So you could see there it is on the shorter term timeframe giving you that rose momentum indicator top. Is it worth paying attention to? Was it also a dark cloud cover candle? When did things start romping and rolling to the downside? Well, as soon as price broke through support, the bottom of the 60-minute profile, that was at the time period of about $2,300. And then price proceeded to move lower out there. So really important day to be watching Goldilocks. Yeah, it's up about $40. So what? The question is, is it going to pull back and is it going to break support at 1295-50 and then break the backs of the bulls? Possible. I'll be right back. Which is how to time the markets. I'm Steve Rhodes, author of Mastering Probability, and for the last 12 months, Timer Digest has been tracking my newsletter signals which have earned me the ranking as their number one market timer in the nation for the S&P 500 for the last 12, 6, and 3 months. Timer Digest also ranks me as the number one market timer for Gold as well. The fact is, markets can be timed. And I'll teach you the exact set of tools that I use that has transformed me into one of the best at what I do. I'm Steve Rhodes, author of Mastering Probability today by clicking on the newsletter tab on the homepage of TFNN.com and get immediate access to workshops where I take you step by step how to use an extraordinary set of tools as well as provide great market calls too. Sign up today. I'm Steve Rhodes, author of Mastering Probability, and for the last 12 months, Timer Digest has been tracking my newsletter signals which have earned me the ranking as their number one market timer in the nation for the last 12, 6, and 3 months. I'll be right back. He delivers every morning. Then visit the front page of TFNN and you'll find the path of least resistance under Trading Newsletters. For all the details and to start your 30-day free trial today, log on to TFNN.com now. TFNN is excited about our new software charting program, the Art of Timing the Trade Chart. In collaboration with Tom O'Brien and using his best-selling book, The Art of Timing the Trade, Your Ultimate Trading Mastery System, David White has programmed an outstanding piece of software that will complement any trader's methodology. Using this first-of-its-kind program, The Art of Timing the Trade Charts allows you to scan thousands of stocks for Fibonacci formation setups, including guardleafs, ABCs, butterflies, and much more. The Art of Timing the Trade Charts is designed to help you when scouring the markets for stocks just beginning to form the trading patterns that many investors spend days, weeks, or even months searching to find. And right now we're offering licenses available at only $79 a month. We are so confident that you're going to love this new charting software that will even give you a 30-day unconditional money-back guarantee. Don't miss out on this incredible new piece of software. Get your copy of The Art of Timing the Trade Charts today by visiting TFNN.com. Welcome back, folks. So Alex writes in and says, Hi, Steve, seasonal question. Mass seasonal answer, then. What kind of seasoning do you like, Alex? It would be my favorite seasoning. It really depends. The problem with garlic, who doesn't like garlic? The problem with garlic is you end up tasting it all night and then kissing somebody and they didn't have garlic. It could be kind of nasty, you know what I mean? But seasonal. So what kind of season? What would be a good season out there? Ginger. Ginger is a great.  I have a shot of ginger every morning. Talk about waking you up. Try that one. All right. Let's get to the seasonal question out here. And Alex writes in, Is there going to be a summer rally to new eyes? As if I have a crystal ball out there. Now, what Alex is asking you folks, he's asking this, because you see what Alex knows, you know, many of us know that there is a seasonal cycle to the markets out here. What I do is I kind of use these dates as guidelines. Look for patterns to occur around these dates to assist us with understanding what the market is doing. What Alex knows is that from a seasonal perspective, that price typically moves lower into the end of June and then makes a little summertime rally that lasts for about four weeks. It's pretty much a four week deal. Just like the high that occurs in May to June is about a four to five week move. And then we get something that's longer. We typically get the move from July-ish down into October. And so then you're looking at a two and a half month type cycle, something along those lines. Are we going to get that? The answer, Alex, is first, I need to see what happens as the market moves lower into the end of June. And so I would ask everybody out there right now in listening land and everybody raise your hand. Those folks that think that the market is going to move lower between now and the end of June, raise your right hand. Everybody, come on, raise your hand. I can't, I can see, okay. I see a lot of people not doing anything. Ruby says yes. And those folks that believe that that's not going to happen and instead forget Stevo's cycles out there, not that it's my cycle, I just went ahead and translated the work out there. Think that the market is not going to move lower and is going to move higher from here that we made a bottom. How many people believe that? Raise your hand. I don't know what the exact answer is. I can show you both could be correct out here. Peter says no. Hey, Peter's on Ruby's side. I got that. But here could be a reason why you could see the markets. Have they made a significant bottom out here? Isn't that really the question? And here's the answer. We don't know. It's very possible. I'm not trying to play the middle of the road here out here. What I'm just simply trying to say is that you can't ignore the nine count pattern. Are you? Now, you can't ignore it either out there. If we take a look at the Dow equity futures contract, the only one at this stage here to complete the A to B equal CD or Gartley buy pattern and Alex and Jose and Ruby and Peter and Z and everybody. If we're just simply going to cherry pick when we're going to accept Gartley buy patterns and not, then we're probably going to get into a lot of trouble by doing that. Every Gartley buy pattern or any pattern that we take a look at always works. But here you had a one to over two A to B equal CD to the downside. You get to set up bar number nine. Is there really, is it a mystery, is it not mystery meat or anything? Is it really a mystery that in fact we saw the bounce that we did yesterday? No, it is not. Now, here's one of the likely outcomes with regard to this. I'm joining the A to B equal CD to the downside. If we, oops, I didn't mean to do that. I'm going to do this.  You already know this in your mind and take a look at the move off of December 24th. Here's our first A to B equal CD to the downside. It's a Gartley pattern because it was just a small retracement from the low in December out there. And Price also ran into a level of support that blue line. That was the hammer candle out there. That was previously where there was a bottom as well as a TD set up nine count out there. I'm going to go ahead, wow, I was going to try to get rid of it. Maybe it won't let me get rid of it. Let me try. There we go. It's deleted. What else is it, Peter, that you see here? Because, Peter, Ruby, you answer, what is it you see on this chart? What is it? You already wrote that in there. O-U-L. What did you mean, Ruby? What did you mean? What did you mean about the oscillator and change line right now? What is it that you see on this chart that makes you think something, that that's something for us to pay attention to? Now, I know Ruby's typing and or is sending me a message, and I know the reason why she said that.  A line stolen from my cousin Vinny. But one of my favorite lines out there may be yours too. And she's right. And what is it? So on top of, on top of the fact that the Dow Equity Futures contract made this bottoming, two bottoming patterns out here, the green line turned red. And what Ruby knows about that is that that tells us that the price oscillator, the difference between two exponential moving averages, 19 to 39 was at zero. And when it's at zero, what does it tell us? It tells us that what we're about to experience over the next many days, how many days I don't know, is we should see that line and price catch up to each other. And it won't be Alex, Peter, Ruby, Jose, Z, Stevo. It's not until we see the test there whether we know whether this Dow pattern was a significant bottoming pattern because the countertrend rally should continue to occur until that test takes place. And if that test takes place and if we see price deflect down below that red line, then Alex, the likelihood of price moving lower into the end of June, everybody should be raising their hands at that stage. And if price is able to close above that, well, this could be a significant bottom. Price could get up to Stevie's, not my green line. This is actually the TD set up green line out there, which happens to be the high from the trading session of May Day out there. May 1st, when we take a look at the Dow Equity Futures contract out here. So we have to take things one bar at a time, one day at a time out there. I do believe, and there was something that I shared with subscribers this morning, that what's going to happen is if that test does occur, my crystal ball says that would be where the countertrend rally ends and price moves lower from there. But we're going to simply have to wait it out and see what occurs out there. So Alex, you're asking about the move into July. I need to wait to see what the patterns are going into the end of June out there. And then I can better answer that question. So I hope that helps everybody out there. And Ruby, thank you for raising your hand, pointing out that oscillator and change on it because you knew what it was that was going to come next once that bar, once that line turned from red to green. Alex, thanks for writing in. Let's go to Robert B. Robert B writes in and says, hey, Steve, hey, Robert, how likely is that the S&P will revisit the bottom of its consolidation, the December 2018 lows? Well, kind of a similar response, kind of a segue, I guess, into what we just spoke about, right? The first thing is paying attention to this first test inside the Dow. I think that's the one that's going to be most important to you and I. And if price moves lower from there, then let's see where price gets to in June. It is an absolute possibility. We'll show you why when we come back from this break. Steve Rhodes with TFNN. If you're in the CD market and looking for a secure investment, the Tiger First Mortgage Program may work for you. The security for these first mortgages are building lots in the tax opportunity zone in St. Petersburg, Florida. The Tax Act of 2018 set up tax-free zones across the country where you can build and hold for 10 years and pay no tax on the profits, which makes these lots valuable. The investment is anywhere from $30,000 to $75,000. The interest paid is 7% yearly paid on a monthly basis. According to bankrate.com, the best rate for a four-year CD in the country as of February 20th is 3.1%. A $50,000 investment at a normal four-year CD rate of 3.1% would give you income of $1,550 per year, or $6,200 over the four-year period. That same $50,000 investment in the Tiger First Mortgage Program would give you $3,500 per year, or $14,000 over the four years. What should you prefer? $6,200 or $14,000 of interest on your investment. If you would like more information about the Tiger First Mortgage Program, you can call me at<PHONE_NUMBER>. That's<PHONE_NUMBER>. If you haven't checked out the newsletters page of TFNN.com, what are you waiting for? All of the TFNN newsletters are informative, up-to-date, affordable, and a must-have for every trader looking to gain a competitive informational edge in today's markets. TFNN newsletters cover every aspect of the markets to offer you the very latest in market news. Plus, new subscribers get to test drive our newsletters risk-free for 30 days. From all aspects of the markets, including stocks, bonds, metals, commodities, and tech, there's a newsletter to fit your needs exclusively from TFNN. Stay informed each day you trade and get the competitive edge that will help you stay ahead of the game. Visit our newsletters page by going to TFNN.com and click the newsletters button near the top of the page. TFNN.com Educating Investors Biotech is booming, but for how long? Whether you think the Biotech bull has room to run or has run its course, trade L-A-B-U or L-A-B-D. Directions daily S&P Biotech three times bull and bear ETFs. Visit Direction Investments.com slash Biotech today. An investor should consider the investment objectives, risks, charges, and expenses of the direction shares carefully before investing. The prospectus and summary prospectus contain this and other information about direction shares. To obtain a prospectus or summary prospectus, please contact Direction Shares at<PHONE_NUMBER>. The prospectus or summary prospectus should be read carefully before investing. An investment in the funds is subject to risk including the possible loss of principal. The funds are designed to be utilized only by sophisticated investors such as traders and active investors. Distributor, Four Side Fund Services, LLC. Don't forget, you can listen to TFNN live on your mobile device 24 hours per day. Go to TFNN.com and hit watch Tiger TV. That's TFNN.com and hit watch Tiger TV for the latest market information. Thank you so much for joining us. We'll be back, folks. Robert, when I take a look at this, these are four monthly charts out here for the four primary indices that we might trade here by ETFs and so forth. The Dow is in the upper left. S&P upper right, Nasdaq 100. Lower left, Russell 2000 in the lower right. So what do we know here? So Robert, you mentioned the consolidation for the S&P 500. The only indices that I have that's truly in a consolidation and clearly defined highs out there that have been tested and lows. Whereas inside the S&P 500, I'd really have to stretch to draw in that consolidation pattern. I don't like having to stretch and to force a pattern out here. That doesn't mean that the S&P 500 had a little slight false break to the upside out there. And really, for me, the S&P would not have broken out until it would have broken above its little rising trend line. In September in 2018 as well. But at this stage, what we know is that it's traded above the high and the low. So you've got a key reversal session out here. Good enough signal. Month's not over. But pretty good enough signal that price wants to pull back longer term over time. But the Dow itself clearly in a consolidation pattern. Price got up to the consolidation backed off right from there. And so pulling back to the bottom of that look at the Russell 2000, the lower right-hand side. You can see that that is stuck based on a swing point from four months ago, 1602. So clearly that's not doing anything. It's just moving sideways by the way. So when I say it's not doing anything out here. And the NDX 100, the nice break that it had key reversal, what looks like key reversal session potentially this month as well. And back below the highs from back in, when was that October? October. So we're at 7756. So that says, okay, seasonal cycle. Maybe we get this countertrend rally up to Stevie's green line and then we go from there. Here's where I think you start paying attention to what the message of the S&P 500 is. And this is the monthly timeframe chart with its horizontal trading ranges out here. And when we take a look at that really good, well-defined tops and bottoms that have contained price, if you look at the 2009 bottom in that 675 level out there. Folks, can you believe this? I still get emails almost daily.  Okay. I don't see that happening today or tomorrow. All right. So we're a little bit safe there. But here's what I want us to pay attention to. And that is at the first level of support that really needs to break Robert in order for price to continue to pull back. And that's going to be this 2818 level out here. You can see the price in this month and pull back and test that level. It's a rebounded off of that just slightly so we're 2852. But if we do see a close, yeah, it is a 6666 is definitely a magical number for some adults. I suggested that this individual maybe get a different hobby out there. But that's neither here nor there. They here is watch 2818 Robert, if we see a close below that on a monthly basis, then what I would say is price would pull back or is likely to pull back to 2604 out there. That's the next horizontal trading range on a monthly basis, even though we've got this like, hey, it couldn't break through the highs out there. The price is really done is pulled back to test support. But if it does close underneath that first level, second level then opens up and you got that little rising trend line off of the lows from back here in 2016 to the low out here in 2018. And that may be where price would be headed on any kind of further pullback. Is there some kind of major significant pullback going on? It all depends on how somebody measures it. Are we in a bear market? For God's sake, really, folks, we've got confirmed A to B equal CD patterns that are going to take price higher. We're in an unfavorable seasonal cycle and so maybe we've got a pullback that's going on. Are we in a bear market? I mean, I heard gunlack on there or saw something from him whenever it was calling that we're in a bear market. We're in a consolidating market, especially if we just simply take a look at the Dow out there. So Robert, that's what my eye sees. I haven't seen anything like this before on these lines. This is just something that's automated as a set of tools to help you and I out. And really we have to take the information one day at a time. I don't know if the S&P 500 is going back to 666. I just know that one day at a time, if that's your thought process right now and that's how you're trading, you're not being present in the market. And it's really all about being present. And our role, yours and mine, is simply to be able to take the information that we need to use to change, to use that information to then be able to interpret the market correctly out there. That's really what it is that we all here at TFNN try to do, not try to do, we do it on a daily basis. So let's see what Timmy has to write in. Tim, I'm sorry, I didn't mean to say Timmy, but I like Stevie, so it's pretty easy for me to go down that row. But Tim writes and says, Steve, you had a very fine low risk call yesterday. Do you see a similar risk price shorting the spy today? Or has that horse already run out of the barn due to the breakdown of the VIX? So yesterday's call, Tim was super easy. It just was super easy. I didn't know what the outcome was going to be, but it was super easy. And it was super easy just simply because, hey, just using this nine count pattern, knowing that price was coming right in that resistance line at two o'clock. And so we had a topping signal at resistance. I don't have a, I have resistance. I just don't have the topping signal. And therefore to go short right here is a, I get it. I understand it. I just think it's dangerous because I don't have a topping pattern. Now that's not to say that our man Z corrected me and said, well, wait a minute, wait a minute, there is, we can get to peak G out here. And so that's a beautiful thing. And he just said, well, just go use that low swing point where that rose went to indicator bottom formed out there. And so that looks like this here, Tim, as we take a look at the chart and you can see that a little high that we got out here recently got to wave number seven. Now the good news here is with regard to, let's say directionally where the market is headed to, what our man Z knows inside the den is we're going to use that G out there. And I'm assuming that he went short, he's going to give it just a little bit of room above the high of that candle session because if price takes that out, he also knows that that's a recycle pattern. For me what I would be doing is just simply starting that letter count right back down here and that was a low from this morning and that says we're only in wave number one letter number A out there. So I do not have at 149 any kind of low risk trade. Every trade is risky and when you say low risk it was just simply hey is there any kind of pattern that's forming a supportive resistance to give us an idea as to where price is headed and the answer my friend is no. Now if we take a look at this as well, let's do it if you take a look at another thing that was going on this morning inside the ES mini was price was testing the bottom of a brand new daily profile out there that low is 2813 we only got down to 2815 good enough for us especially with other patterns that were forming out here so we can see with regard to the ES mini you're asking about the spy prices at that resistance level of the bottom of the weekly profile 2858 if price closes over that it closes over resistance here it closes over Stevie's resistance on the 30 minute time frame chart and price heads to 2869 is it that easy it's never that easy that's what we would be looking at the answer my friend I do not have a low risk trade at 150 in the afternoon we'll be right back since 1984 Basil Chapman has been using the Chapman wave methodology to advise traders of his expert market opinion well originally hand drawing charts from the late 1970s into the 1980s Basil noticed that prices under most circumstances virtually always had a certain number of legs to the upside before declining sharply later Basil found that computer software which included the standard market technical indicators enhanced the degree of accuracy and calling price turns as well as market trend calls thus was born the Chapman wave sequence using the Chapman wave methodology along with other indicators Basil Chapman advises his subscribers of his expert market opinion each market day with his opening call newsletter right now you can get a two week free trial to the opening call Basil's daily trading newsletter by visiting the front page of our website at tfnn.com cancel at any time during that trial and pay absolutely nothing get your two week free trial to Basil's newsletter the opening call today by visiting tfnn.com no matter what kind of trader you are 2018 is a great time to try out a subscription to Tom O'Brien's gold report whether you just plan on diversifying your portfolio with some exposure to gold and gold mining equities or you're a gold bull that sees a great time to sign up for the Gold Report Tom O'Brien publishes his Gold Report every Monday morning before the market opens and covers a variety of topics including gold silver platinum copper the XAU and HUI the dollar bonds South African rand as well as more than 20 of the most actively traded mining equities start your 2018 off with a bag and sign up for the Gold Report today the Gold Report is a long term newsletter that focuses on building real wealth through the management of a successful portfolio of gold stocks for all the details and to start your subscription right now visit the front page of tfnn.com and you'll find the Gold Report under investment newsletters you know what's cool taking something that's good for you something specifically formulated to help with weight loss better sleep stress reduction and the need to detox Nicar hunter and gatherer ancestors found all their food sources today our food sources no longer contain the vitamins minerals and nutrients our bodies need to stay healthy and strong that's why we need primal edge daily nutrition it includes a special blend of ionic soil based vitamins minerals fatty and amino acids and an easy to use liquid form primal edge is powered by highly concentrated folic and humic acids nature's preferred delivery system they've been called miracle molecules because like sunlight air and water life they ensure we receive all the nutrition we need to be healthy and thrive we take it every morning primal edge formulated and approved by nico and page of living a primal lifestyle buy it today for just eighty nine dollars click on the primal edge banner on the front page of tfnn.com this is David White stay tuned because coming up next is the power trading hour right here on tfnn.com Thanks for joining us here on our great this is David White and I'll get you a little bit of Hailer Marshall up two points team you know maybe what you should because I know you're looking for trade type information or hey what's the market doing next kind of thing why everybody's really looking at that I would say because the end DX 100. Is the leader to the upside right now the question is what can we level. Again, where the entire breakdown began, where it really began. Now granted, it's a gap to the downside that was Sunday evening, but the real breakdown began from a pattern persistent standpoint right here at 1.30 in the morning. And that high out there that we're taking, look at that was on the 13th, by the way. That was at 75, 24, 50. And we're at 75, 23, 50. We can see how price is running into that resistance line. I would say if you see a 30 minute close above that, because there's no other pattern that is present right now. And we may see that in the next five minutes. That'll tell you that the index 100 is not only strong, it's stronger. And it is headed higher. Now headed higher to where on a 30 minute basis out there, if we just stick with that chart, we could draw in an A to B equal CD pattern. That pattern would look something like this. That's coming off of this bottom out here on a 30 minute basis. That's that road's momentum indicator bottom up to that. Why is this thing grabbing everything? Oh my goodness. Got two indicators going at once. So here's what you can see right now. You're at the 1 to 1 A to B equal CD level of that pattern. Plus you're at Stevie's resistance level. You break through that, Timmy. And price is headed to 75, 69. We're at 75, 26. And if the NASDAQ can bust through resistance, it can lead all of the other markets higher. So I hope that answers your question even more better than we did before we went to that break. Thanks so much for being here. Thanks for all the questions, folks. Always good to be here, but stay tuned because my favorite polar bear, David White, is up next. Tom O'Brien, three to five. I'll be back with you tomorrow on terrific Thursday. Have a wonderful Wednesday.


If you've been following along in recent episodes of Code Club, you know that I've been looking at different ways of visualizing data that was published by ipsos about a year or so ago, looking at people's willingness to receive the COVID-19 vaccine. We had survey data from people in August and October of 2020 asking them whether or not they'd be willing to receive the COVID-19 vaccine when it became available. ipsos in these two surveys at least looked at 15 different countries. So here we are a year later. I've been vaccinated. Have you? Hope so. Well, the question now is we have the data from say October of 2020 saying, you know, who would be willing to get vaccinated? And again, here we are a year later in October of 2021. I'm moving into November of 2021 thinking, you know, well, how many people actually got vaccinated in all these countries? So that's what I want to do. I want to build a figure where on the x axis, we can put people's willingness to receive the COVID-19 vaccine from back in 2020. And on the y axis, I want to put the actual percent of people who have been vaccinated in these 15 different countries. We're not going to do that in today's episode, because there's a few steps that I want to show you along the way that will allow us to explore more of kind of the nitty gritty details of working in a tidy verse package called dplyr. We've been using it as we go through building out these different visuals, but I want to kind of take some time and talk about some of the bigger functions and some of the cool things that I really value about dplyr that yeah, we could do it in one episode, but then we'd lose all this great opportunity to learn more about dplyr. So that's what I'm going to do in the next few episodes is go through and show you how we can use dplyr to take data from one source, combine it with another source to tell a news story. To create those data on the y axis, I need to know how many people have received the vaccine in these different countries. So something that I could do is I could come to Google and I could say something like how many people have been vaccinated in, let's say Australia. So we've got the number here for Australia, for India, United States and Brazil. We could repeat the searches kind of hunting around for the different rates for the 15 different countries in our survey. This gets painful. Why does this get painful? Well, you're doing a lot of manual work here, right? And you know, I'm just going to first shadow that might be a month before we finally make that figure. And over that month, well, the numbers might change, right? So then we're going to have to repeat all this to get updated numbers. And perhaps the numbers won't change a whole lot. But if it's something like the early days of the COVID pandemic where the numbers were changing really rapidly, I wouldn't want to have to do a lot of searches to try to find the actual rate or the actual numbers in these different countries. I would like it to be much more automated, or at least to have the data all in one location. Another concern is the reliability of the data. Where are these data coming from? Do we trust them? This is being offered up by Google. And so I'm reasonably confident that this is like reasonable data. But you know, there's a link here called about this data. So this opens up a page from Google that tells us something about the vaccine statistics data, and, you know, some caveats to be aware of with the data. But we all know that, you know, data that's posted online might be old, might be a couple months out of date. It might be current. We don't know, right? And so that's a challenge when we're grabbing data off of a website, we would like to trust Google in something like this. But at the same time, you know, you never know. Another challenge is that if not all of the countries are represented in a single search, then we might be mixing and matching different methods. And so it'd be nice to get all of our data from one location, because I don't want to get a certain percentage of vaccination or definition of what it means to be fully vaccinated or partially vaccinated from one website versus another website. So some background reading I was doing, I know that in some places they consider people that have had the virus to already be partially vaccinated, whereas other places don't count those people at all, you have to actually get a jab to be counted as at least partially vaccinated. And then what does that mean to be fully vaccinated, right? So again, we would like to get all of our data from one place. And so kind of doing this hodgepodge of Google searches to pull together our 15 country data set, it's probably not an ideal approach. One thing I notice about the output of the Google search that is intriguing to me is that this visual down here for Australia showing the total number of people that are vaccinated over time says that this came from our world and data. Now, our world and data is a website that I've learned about mainly during the COVID pandemic as being a place to get really large international data sets about interesting questions, including COVID and COVID vaccination rates. So I know that our world and data is a reliable source to get information about COVID based on reliable sources, other people I trust out there in the community and where they're getting their data from that, you know, I hear our world and data mentioned a lot in a positive way, right? This is this is reliable data that I'm confident to use for my analysis. So as I scan down through here, I see a really nice dashboard that's going to give me a lot of useful information. I think from this dashboard, I see that 63% of Australians are fully vaccinated against the virus. Another 11% are partially vaccinated. And a total of 74% are at least partially vaccinated against COVID-19. Again, I could kind of scroll down here and see how they're defining different things and how they define things like partial or fully vaccinated. So that's great. I think this will be a great resource to get the percentage of people by country that are currently vaccinated against COVID and that we also see the date here the October 28, 21, right? And so I could come down and look at some of the other countries that I have. And actually, I don't have to search through, I could type it in here, I could do United States. And we now see United States relative to Australia, 57% of people in the US are fully vaccinated, 9% are partially right. And so we could keep doing this for all 15 of the countries in our data set. So this this is improving things, right? We have a single source that we trust for getting the data. We have so we have consistent definitions. It's reliable. We kind of know the provenance of where the data are coming from. All of the countries are surveyed here. And you know, we can get all 15 of the countries so we could then map those over. But at the same time, it does get to be painful to have to update. So if I want to update this in a month, what am I going to have to do? Well, I'm going to have to go back through here and again do the search. So while I might not be doing 15 or however many Google searches, I do have to do 15 different searches for the countries here in their COVID-19 data explorer. So there are certainly research questions where this is the approach that we have to take. We're just kind of stuck, right? There isn't a way to get data directly out of the database at the website, right?  What would you do with those numbers? Well, one idea would be that we could come into our studio. And we've already got this August, October 2020 CSV file. Let's go ahead and view it. And so again, this is our comma separated values file. And right off the bat, I'm reminded that I actually downloaded this file from the Ipsos website, because we have these kind of funky column names that one of the first steps that we did when reading it in was to change the column names, right? And so I could add a fourth column, which would be say actual October 2020. And then I could go ahead and add in a fourth column for all of these countries. That's not so ideal. One of the practices that I really try to preach to people, and especially in my lab, is what we want the raw data to stay raw, that if I download this file from Ipsos, I'm getting the raw data. And I want to leave it that way, right? Those ugly column headings and everything. If I then have other data, right, that I'm getting say from our world and data from kind of pulling them manually out of their website, I probably want to go in and create another CSV file. Okay, we could go ahead and do a text file. And I'll go ahead and save this, perhaps as OWID, our world and data dot CSV, right? And so then we could say country and rate, right? And so we can say Australia. And what was the rate here? So let's go ahead and use at least partially. So we'll say 74. And then United States. And then we'll say 66. And you can already see as I'm typing, how error prone I am, right? I'm introducing typos that I'm thankfully catching. I don't really trust my ability to get the actual 66, right? And but regardless, we could keep doing this for all 15, and maybe double or triple checking things. Also here, we're only looking at two columns, right, the country name and the rate, that's relatively simple, as we're perhaps increase the number of columns, one of the challenges becomes linking rate with the column for rate with the data for rate, as these country names get longer, you know, that 66 is no longer under rate, kind of like the 74 is under the rate for Australia. So that becomes challenging. So one thing that you might think about doing is firing up Excel in doing it in Excel. So again, in Excel, I could do country and rate. And then again, because I got these nice gridded tables, I could easily type in Australia, United States. And then I could put in the rates, which again, we're 74 and 66, right? And so now everything's lined up and nice to work with, I could then use a function from the read Excel package that comes with a tidy verse called read Excel, to go ahead and then read this in to my RStudio session. We've done this before a lot with clinical metadata, where perhaps we have lots of sequence data on a bunch of patients. And the clinical data is coming to us from a collaborator who stores everything in Excel workbook. Then I can easily read in data from the Excel workbook. And variably, there's always some funky things out what people have typed in that we then have to clean up. But this is always a good strategy. If we can't get the data directly out of the website, like we were able to with that original ipsos data, I want to go back to the our world and data website though, because I noticed a tab down here at the bottom that says download, that's always something that alerts me like, Oh, good things are here, because we might actually get the real data, kind of like we did from that ipsos website. And so wow, there's a nice shiny blue button here saying download a CSV containing all the data used in this visualization. So that causes me a little bit of pause. Because I don't want just the data from these two countries, I want all the data. So I'm going to do is I'm going to go ahead and download this and see how big it is and see if it's got other countries in there than Australia and the United States and perhaps more time points, because perhaps it's all the data, not just all the data in the visualization, I went ahead and put the downloaded file into my vaccination attitudes directory. I see it's 33 megabytes. So it's clearly more than just the data for those two countries. I'm going to go ahead and open that and view it here in our studio. It's too large, unfortunately, because it was too big to open in our studio, I went ahead and opened it here in Excel. And you can see right off the bat, there's data here for Afghanistan. There's a lot more data than just for the Australia and the United States. And if we scroll down, we see that there's data here from Zimbabwe. So we've got a whole total of about 127,000 rows in the data frame. And I don't know how many columns there are. There's a lot, right? There's through BM. So they went through all the single letters, they went through a through a through AZ and then BA through BM. That's probably something like 70 different variables. There's a lot of different data in here, far more than the data that was present in in that visualization. So this is awesome. We can now read this in to our studio and use that to kind of help filter and select down the data that we want to join in with our Ipsos data. I'll go ahead and create a new R script. And I'm going to call this comparison figure dot R. And as we always do, I'll go ahead and load the tidy verse package with the library function. Make sure we've got all those goodies loaded. And with the tidy verse comes a package called read R. And so read R has reader functions in it that work really nicely and better than the read functions that come in base R. And so what we can do is we could do read underscore CSV, because we have a comma separated values file. If you look at the last three characters in the file name that we downloaded, they were CSV. And then in the parentheses, we could put quotes. And then we could put OW ID, COVID data. And what one of the nice things about working in our studio is that I can start typing the name of the file, and then I can hit tab, and it'll auto complete it for me. I'm going to go ahead and call this OID as a variable name. And it's a big file. It's got again 127,000 rows, 65 columns, but we've got it read in. And I can always down here go OID to see the first 10 rows, or you can always do view, capital V view, OID. Actually, I think the lowercase V works also, this opens up a spreadsheet view of the data frame. It's read only, you can't edit it. You can also get here by coming over to your environment and double clicking on OID. And that will then again launch the spreadsheet view of the data. I just want to see if view OID in lowercase the lowercase V view works as well. So great, I'm going to go ahead and close this. And I'm going to go ahead and close my OID CSV file, because I don't need that because we're going to get it directly from OID. So I'm going to go ahead and delete that OID CSV, and get rid of that. We are now ready to march ahead with this data analysis. And so that's really cool. One thing I'm thinking about though, is that this is a really big file, right? It's 33.3 megabytes. I can probably store it in GitHub, but it's big, right? And the other thing is that I think they're putting out new data every week, or maybe even every day. And so this file is getting updated regularly. And so while it's nice that all the data is in one file, I can go back to that website and click the button to redownload it. I might be kind of losing track of my different versions of the file. And, you know, it's just perhaps not as convenient as getting the data directly from the website. And so you might be thinking, well, what are you talking about? How do you do that? Well, one of the really cool things about the read functions in R is that, yes, you can give it the actual file name of the file that's on my computer. But you can also give it the URL, the address on the web, to get that file, which is really cool. This is something we weren't able to do with the Ipsos data, because the Ipsos data was in a file that was hidden behind a bunch of, you know, messy JavaScript. But I think we can do that here. So coming back to the OID dashboard, if I put my cursor over this beautiful blue download button, I look in the bottom left corner, and I see that there's an actual URL there. And so if I've got an actual URL, I can use that as the argument to my read CSV function to download it without having to physically download the file. I'm going to do that. So we're going to copy link address, and then I'm going to replace this file that's on my hard drive with the URL. And so now if I look at this, we see that it's downloading it and reads it in magically, right? And I can go ahead now and delete this OID COVID data CSV file. I don't need that. Yes, I want to get rid of that. And again, I can load the OID data frame without having to actually download the data, download the data under my hard drive, right? So we're still downloading it, as you saw, kind of in the output from read CSV, but this file does not exist on my computer. And so that's kind of cool, right? And what that means that I could run this script every day, every week, every month, and see how my figure is changing over time, which is pretty cool, right? One of the downsides of this, of course, is that we are dependent on the folks at OID. If our world and data goes belly up, or if there's some network outage, then we don't have access to the data, right? So there's a bit of a trade-off between actually having a physical copy of the data on your computer, versus the flexibility to be able to run this without having to worry about downloading an updated copy. I can run this. And as long as the website is up to date, and it's they've been paying their bills, I should be able to get this data into my R session. There's another trade-off here besides kind of the expectation that the data will always be available. And that is the speed of your internet, right? And so it took a couple seconds for me to read in from read CSV, because it was going in getting the data and reading it in, versus downloading the data, which you do once perhaps, and then reading it in, right? So it's still not instant to read in from the physical file, because it's pretty big. But, you know, there's trade-offs, right? And so I like this for the reasons I've mentioned. You might have a slower internet connection and just say, you know, I don't want to have to run this command over and over again. I'm going to download the file once physically, and then re-read it in with read CSV. And if I need to get an updated version a month, that's fine. I'll go ahead and download it and roll with it. Make sure that you're subscribed to the channel so that you know when that next episode comes out. I do want to spend a few episodes here talking more about dplyr, and I think you'll get a lot out of it. And I'm really excited to see what our final figure looks like when we compare what people said they would do in 2020 to what they actually did in 21. Keep practicing with these concepts, and we'll see you next time for another episode of Code Club.


Tom's gonna take a peek down this shaft yet another dangerous mission. Yeah, just got to get under the cobweb So I don't want to go flying down there. That's not even loose. Well, there's a ladder I cleared all the loose stuff out most of the rocks that I could and All these old timbers and other stuff that was in there So it's too dusty down to go down there, but I couldn't even see down there with my spotlight, but Maybe sometime later we can go down that ladder to 650 foot shaft Levels every hundred feet and a hundred and thirty foot winds at the end. Good morning. Good morning We're digging Diggin rocks. I just reportedly noticed a wall back and How it is curiosity gets the best of you, I don't know, but it does So we're digging and we will let you know what we find give me an hour Here's the start of the hole With the portal. Well, we got the portal opened up a little bit Because Julie Pretty low right here I told you Thing you had your helmet on I already bumped mine without my helmet on before I got it on You gotta get out of your way Okay, that's looking behind us. We Came over a couple parts that were back filled and we're headed this way All right, let's go check it out. See what we have here. Loly This heads over towards a big shaft I'm not sure it goes there though. It's got some loads of backfill on the floor That's for sure This is a gold mine Now let's kind of jumble up up here in a treble ahead I feel air from somewhere. No, maybe Is that plugged? What's this do? Well, we've reached kind of a pinch point here. Julie's gonna volunteer To crawl up there and look There's also a little overpass or something going down here and I feel air moving through here What do you see?  Really? So after I crawled through that little area there, this is what I came across to see There's a bit of a pass down there It grows across this way, but it looks like it's all backfilled so I'm not gonna go this way Here's some of the vein So here's a little bit of a goblin wall And then it goes straight up There's a bit of a quartz vein here. I guess that's what they're following Tom's gonna do a little rock climbing Maybe Trying to I'm getting a little old for this kind of stuff There's a little area up there that we want to peek at Well, that's just sitting there Yeah Don't hold on to that I forgot about this wall. Didn't do anything Okay So I just climbed up this little spot here It goes up about another 15 feet and ends Looks like they were following The stuff on this right side here And then it just pinches down. You can see how it pinches down up there


See, this year my plan for the NFL draft was to only do updates on the Ravens, especially with everything that the Ravens done had going on in the past 24 hours. It's been very, very crazy. But the Steelers, this was literally the one receiver that I asked for. This is literally the one receiver that I wanted Ravens to get because he just got that dog in him. And I wanted the Ravens to get him way before the whole Hollywood thing even went down because I wanted just to add him to the offense to really try to help take the offense over the top. This dude is nasty. This dude got attitude. This dude just brings this like fierceness to your team. And I just really wanted the Ravens to get. And then another thing on top of that, he is a fighter. The guy what got hurt in the spring and he could have been like, all right, you know what? I'm done, game over. That's my season, it's a wrap. And nobody would have second guessed him. Nobody would have questioned him. Everybody been, oh yeah, oh yeah. He got hurt in the spring. He's done season ending injury. But he said, nope. No, I ain't going out like that. Oh no, I'm coming back. Y'all gonna see me soon. And he came back and he came back and contributed. He didn't just come back and be a cheerleader on the side. No, he came back and like actually contributed. So why, who wouldn't want that on this squad? And me being a Ravens fan, I was like, man, all right. A lot of people writing him off. They saying he got character issues and all this and all that.  I'm thinking, okay, Ravens at 45. I'm thinking, oh, that's a little risky. Especially when there was a run on receivers early on in the draft. Shout out to Drake. Drake went in his $100,000 on Drake London. When he picked him to be the first receiver taken. And once Drake London was taken, that's when everybody thought, oh, give me the receiver. Give me that receiver. Give me that receiver. But I just, I was thinking, all right. Is he gonna be in the first round? Okay, even if he don't get in the first round. All right, cool. Second round, I'm like, oh, Ravens sitting at 45. They may have to trade up to get them. Cause I don't know what's the receivers. You know how it goes. Once people start picking receivers, somebody else pick a receiver, somebody else pick a receiver and they can start flying off quick. But then at 45 came around. I'm like, okay. He, wow, this, the receiver that I wanted two years in a row. Cause last year I won the Rashad Bateman. Got him. Amazing. And then this year I won the George Bateman. I'm like, oh, it's happening. This is going down. We sitting at 45. We gonna get them. Especially since we just, the last move that we made, it was trading away Hollywood. That was the last thing we did at receiver. We traded away our number one receiver last year. Okay. 45. Oh yeah. We about to get him. We about to get him. No, we got David Ajabo. Okay. He coming off of Kelly's injury. Okay. Hopefully he recovers 100% from that. We'll see how it goes. But then I'm thinking, okay. Okay. They didn't take pickings. Okay. Well, you got a lot of fourth round picks. You could package some of those up, trade back up in the second round and, but no, the Pittsburgh Steelers. The Pittsburgh Steelers decided they wanted to be the Pittsburgh Steelers and take a receiver. And see, that's the thing is that with Pittsburgh Steelers, you know, like he's going to be fantastic. You just know it. You, you know, he is going to be developed at an amazing, in an amazing way, at an amazing rate. And you know, he is going to be a great player for Pittsburgh because again, that is something that's what they do. They developed receivers left and right with the Steelers. And now you got one that high quality receiver drafted in the second round. They just got a, we'll see what happens with the quarterback that they drafted with. Pick it, pick it, pick it. We'll see what happens with him, but this probably going to be Mitch Trebisky receiver. But man, that is, that's annoying. Oh, hold up. They got pick it and pick ins. I just, I just got that. Oh, okay. Okay. Wordplay with the names and whatnot, but I don't like it because I wanted him to be a raven. But I will certainly be able to get reminded of that at least twice a year since more Raven's going to get to see him. And he'll have what Chase Claypool over there, Deontay, Deontay will have Miles Boykin who the Ravens released and the Steelers picked them up. We'll see what happens with him. Cause the Steelers, again, they still, they know what to do with receivers, man. They know what to do with some receivers, but yeah, man. So that's that, the one receiver that I wanted, just the one receiver that I wanted. And that's that. He's gone now. Okay. Vent session over. Congrats Steelers, congrats to George Pickens. Wish he could have been taken just a couple of spots earlier by a different AFC North team, but it is what it is. Wish you well, my friend. We out.


This is a think-tech commentary about the odd way some people celebrate the 4th of July. Thanks for your consideration of the views expressed in this commentary. Happy 4th of July to all of us, and especially the magas. They claim to be patriots, but in fact they are just the opposite. They wrap themselves in the flag, hoping we will think that they are patriotic. But they are not patriotic at all.  Were they patriotic in denying the election? Were they patriotic in supporting the insurrection? Were they patriotic in calling for the reversal of our rights and protections? This is the flag that came out of the revolution. The flag that won the Civil War as well as World War I and World War II. This is the flag for which so many Americans have fought and died to protect us. Who exactly would disrespect war heroes then deck themselves with the flag, as if that would excuse them? And who would undermine our government and institutions, then claim to be a patriot? Who would subvert the rights of minorities, then claim to be a patriot? Who would sabotage our right to vote and to equal protection, education and opportunity, then claim to be a patriot? To abuse the flag this way is shameless, and we should see through it, especially on July 4. In fact, and we all know it, the flag and patriotism has lost all meaning for the magas. Thanks to them, the country is profoundly divided, and in open decline. It's time for them to look sincerely into their hearts, stop deceiving themselves, and become patriots again. To them, we say please remember the fourth while we still have a country. If they don't, what we have now may not last very much longer. Now, on the fourth, it's time for all of us, especially the magas, to care about the country again. Please. Thanks for your consideration of the views expressed in this ThinkTech commentary. And thanks for watching ThinkTech Hawaii. Aloha.