The Southern and Middle Belt Leaders Forum has described the governor of Delta State, Senator Dr Ifanyo Kowa, as a traitor for accepting his nomination as vice-presidential candidate to Artiqua Pubaca in the forthcoming 2023 general elections. The group said that Kowa was among the governors who agreed that power should be rotated to the southern part of the country, based on the principle of fairness, justice and equity, that accepting to be the running mate of the Northern candidate was unfortunate. Ifanyo Kowa in a joint statement said, Kowa was jeopardising the political future of the people from the southern parts of the country. We are joining us to discuss this. Odozi Mawdozi is a former president of Ohanezindibu F-City Chapter and Aladotum Hassan is the global president of the Yoruba Council worldwide. Thank you so much, Mr Hassan, for joining us. Well, the pleasure to join the program. Great. Aladotum. Great. Let's start by this position from Ifanyo Fere, of course, Mawdozi is going to speak on Ohanezindibu's position. Why is Okoa being seen as a traitor, even though it's been clearly stated that he was part of those who asked for power to be rotated to the south? We also see that most of these southern candidates did not necessarily make the cut, except for the candidate of the All-Progressive Congress and, of course, Governor Pitabi of the Labour Party. Well, I'm also forced at religious past that the elders of the Bala and the Mithismeg by Ifanyo Fere and Aladotum Hassan, who in their wisdom feel the need to see the south in terms of due recognition when it comes to the political rotation of the president. But be that as it may, the Ifanyo Fere and Aladotum is not a caveat against the fundamental rights of other political interests, considering the, the, the, the, the, the politics and all the processes that led to the emergence of presidential candidates and vice presidential candidates of the PDP and that of all other political parties in the same way. To Rose from the Yoruba Council worldwide, we don't feel slighted by the fact that who are, is elected by the party. And I don't see him as a traitor. My own capacity I don't see him as a traitor. He has only played during, into the, through the rules and the interests of the party. There are a lot of south-eastern candidates as the vice of the electorate. But it delegates elected those that if you, there are the ISB there when it comes to the money or when it comes to the political interest or the political permutation. So for any reason whatsoever, if you are not a party, an active player in that political party, you can, you don't have the right of challenging them except to go and pick up the card of their party. Then you can now begin to express your right. So be that as it may, even at that end, if the demand for vice presidents from the PDP should not even be something that to be negotiated upon, if PDP were to have been given, because initially they had wanted to stone the party's interest to the region. Later they opened it, later they stormed it to the north part. And it is also going to upset the, the, the, the balance structure of the ongoing government which is probably not a region. We cannot solve the region for ATS, and another ATS again, but another man, it's not possible. So PDP would have played a trick or game rather than writing it on a koa. A koa has nothing in this interest. Just as the PDP did the same thing, it would have fallen on the, on the Senate president who had allowed the, the National German National issues in that, in question. But be that as we believe, let's not overheat the policy. The koas are the fundamental rights. They let him play by the rules. It's partly from the ego. It's partly from the doubt. And just like we had Jonathan. I want to come in, I want to come in quickly. I want to come in quickly. Okay. You made very interesting point about the fact that a koa is just being a party man. Just for, just as you made reference to the elders of the authentic group, I'm guessing that also you have members of authentic or people from the Southwest and the South South and the Southeast in the PDP, as you also have them in the APC and every other political party. And I'm just curious, if they had pulled their weight, if they had done the groundwork, would, would a certain candidate not have emerged or again, like we always say politics is a game of numbers. So why be grudge and a koa when within the party, those who are from the zone did not necessarily do their homework. I'm just asking. No, no, no, let us take it from this party. The best bet of the Eastern candidate or Eastern after us would have been Peter will be of the, from the PDP if he had not become to the liberal party. The, the orange, the campaign of Peter will be of spectrum of the execution of the elder or some other interest within the, the enclave of the PDP. Yes, we have the files, I am filed. We have another accurate, accurate that contested that are from the Eastern zone. For being that at his meals, the elders of our secondary have the opportunity to look at another candidate from another political party from the Eastern zone. It is their will, it is their interest. We are not competing that with them. We are not running conflict with the elder as a group within the Southwest region. From our own region and our own organization, we believe that power should be retained in Southwest. We have a diverse opinion and that does not make us a threat to the elders. We are only believing the whole from the party, from the ruling party that's more structural, political advantage for us to lean on where it is very possible to achieve power with little or less effort than going to a total political party whose region is not produced in the incumbent president. We cannot support on that basis. We also have the whole reason. We do not make us a threat or so. Just as you have rightly said, the core interest is the interest of the PDP. It is not the interest of PDP on how they can change in the South East, South South and South West, North Central and North West. So it's a political space that is open for all. Nigeria's have opportunity to vote freely. But for us from Europe and land, we cannot have our own zone and throw in a way just like the Eastern people are protecting their own zone. It is not about ethnicity, it is about competency and competitive advantage. From the South West, we have a candidate that will hold the entire nation from a strategy but not personally. We have the way with Alex Lewis. We have the way the structure. We have done it before and we believe giving him the opportunity, seeing his own long life and vision as well. Let him also have the opportunity to vote. Within four years, if you perform excellently well, who will tell his face and if he does not vote, who will protest the streets. But can Nigeria afford another, you know, full start or rather another, you know, let's try our luck to see if this person does right and hoping that the person does right. Can we afford that for another four years, looking at where we are as a country in every wise. Again, I want to take you back to what you said, that if Peter Albi was still in the PDP, he would have been a better candidate. But if Peter Albi stayed within the People's Democratic Party as against those who run, as against the person who emerges as a flag wearer, would he have even stood a chance in the first instance? And looking at where he is now, doesn't he stand the best of chance? Yes, I'm with you. Did you hear my question? Yeah, you know, for me, I do believe that we cannot be, because when PDP appear, if you are not a card carry member of that political party. I am not a card carry member of APB. We only believe that of the Internet. I have always been a member of the PDP and I am for Senate under PDP. We have a choice beyond the political party I belong. It is not a matter of political party, it's a matter of interest. You can vote for out of assembly that you have interest in. I don't vote for the government. Engineers are now wilder now. We're not just going to be voting blanketly. But it's better we vote for the opposite end and the capacity to staff. So, for us, it's a matter of not over-eating the policy and not having too much ethnic coloration. Okay. And I don't want people to misquote us that for us to put in a strategy but not for us to be predicated on ethnic coloration. No. But at the same time. But you just sounded that way. That's a need for balancing. You just sounded that way more like, well, we in the Southwest would vote for this person and give this person a chance. And those in the South are doing the same for their brother, which makes this election, you know, have a lot of question marks. But just hold that thought. We'll take a quick break. And when we come back, we'll conclude on this conversation. Stay with us. It's still plus politics and we are speaking on the issue of the deputizing of the former vice president of Nigeria who is now the candidate for the People's Democratic Party's presidential ticket. And of course, O'Hanei Zendibu and Fenniferri have referred to Governor Okowa as a traitor for accepting to play a second fiddle while we're being joined right now by Odozi Hsu, is the former president of O'Hanei Zendibu FCT chapter and we still have been talking with O'Lado Tunghassen who is of the Yoruba Council worldwide. Odozi, it's interesting that a certain group of the Igbo extraction had at some point reached out to Governor O'Hanei Okowa, appreciating him for being the running mate of former vice president Atikua Bubaka for the PDP ticket and then here we are calling him a traitor and I'm wondering why is Governor Okowa referred to as a traitor in this regard? Odozi, can you hear me? I'm hearing you from the other OK go ahead First of all, let me say something The group that congratulated Governor Okowa were not the mainstream O'Hanei Zendibu group however, there is a Laguna and the Laguna is this there was a wrong congratulatory meeting by the National Public for this secretary of the and that was followed immediately by the outright reprimand of the Southern and Middle-Bird leaders which Edwin Clark and Paayo Adebanjo are leading. And this is a result of the second meeting that was followed in 2017 aimed at making sure that in 2020, 2023 an evil man comes out as the president of Nigeria. If you remember, in 2019 he failed Southern and Middle-Bird leaders' forum only on second meeting gave their support to Al-Haji at Tuku-Azubaka and that support, they made it clear that in 2023 the next president of Nigeria will be from the south and that was an original agreement that the evil extraction, the evil of the south will produce the president of Nigeria from 2023. Surprisingly, we should recall also that Dr. Korwa as the governor of Delta State convened and hosted the meetings of the Southern governors right there in this capital, as well as where they came out with a communique that demanded that the presidency of Nigeria must come from the south and the south in 2023. How come that suddenly Dr. Korwa is celebrating his being chosen as a vice to Al-Haji at Tuku-Azubaka for the presidency of the pre-election? Mr. Waduzia, I want to ask a question. You and I watched the whole country watched while the presidential primaries of the People's Democratic Party took place where were the people of the Southern and the Middle Belt during that primaries? We saw those candidates from that region fall out on that primary and then of course the emerging candidates which was the vice president was the man with the highest votes. Where were the votes of these people who were pushing for a Southern candidate? Let me tell you something. Both of the south cannot produce the president if the votes cannot be without the votes of the other side. Now the Southern and Middle Belt leaders are not politicians. They are male bearers and opinion-moulders. The political actors in the game were the governors. Can you ask Mr. Korwa where the votes of the leadership went? He failed to produce the Southern solidarity. If we had used the votes which he converged for vice-presidential, to converge for the president of the idea coming from the south, we would not be where we are today. Rather, he chose to play second to no. That would be an issue supporting a peaceful background with the aim that at the end of the day he would be chosen as the vice-president. I would not call him a traitor. Because he made his choice. But that choice is for the choice of his people. That choice is selfish. And it also makes us... Because we are laughable, with the excellent people after I find your Korwa coming up after he's been selected as the vice-president candidate to now save his people and nobody can count him out. Act by government. I am from Delta, I am from Anilma, I am from Delta City. Precisely, I am from Ambo. For the past eight years, has he paid the one million Naira and every state governor of the seven of Mahanese state paid into the capacity of Mahanese? So this is an Anilma issue as opposed to him standing by the wishes of the south, the east or the south west? No, no, no. I am referring to what... He said he's Anilma and nobody can deny him from that. Well, as he's been saying, if your family member has you been doing your duty and obligations to that family and his society, so let us not come to that and not tell us about that issue. Because if you read, can you read the matters after that is done? Back to the matter of the... In one sentence, because we're out of time. Okay? Maybe tomorrow we'll discuss it. But the truth is that Bukowa has not done well. Okay. By refusing to support his work or himself, to present himself for the position. Okay. And as he fell back to take a crumb of vice president, the southern part of Nigeria is very low. All right. And I am happy that for the first time the middle bells and the manority of the north are joining the southern part of Nigeria to say a big no. Okay. Well, I want to say thank you gentlemen because we are out of time. What does he does? He is the former president of Wuhan is indeed will FCC chapter and a lot of Hassan is the global president Europe Council worldwide. Thank you so much gentlemen for speaking with us. But time is up. Thank you. Well, that says on the show tonight. It's been plus politics tomorrow. We'll return at 7 p.m. to talk for development on the biggest political issues across the country. I'm Mary Anna Concey tomorrow.


can you guys all hear me? All working? Okay. So yeah, my name's Tom. Uh, I'm gonna talk to you today about writing an auto-reloader in Python. So I've broken the talk down into four sections. We're gonna talk about what an auto-reloader is. We're gonna talk about Django's implementation. We're gonna talk about how I rebuilt it. I'm gonna talk about the aftermath of how, uh, what happened after I rebuilt it. Sounds good? So firstly, what is an auto-reloader? Like all good programmers, I googled this and nothing came up, which surprised me. There was no definition of an auto-reloader, although it's a common development term. So I wrote this definition, which sounds sufficiently technical and vague. So it's a component in a larger system that detects and applies changes to source code without developer interaction. So raise your hands here if you use an auto-reloader in your day to day life, in some kind of framework. So yeah, pretty much everyone, right? Raise your hands if you could write one or you know in detail how it works. So nnnn, okay, one and a half people. So this is why I find them interesting. They're really common. Every developer or most developers use them. They're a critical part of frameworks like Django. If the auto-reloader doesn't work, as we'll find out later, it's kind of a big deal. Even though they're not a production thing, they're not really well understood and they're really language specific. An auto-reloader in Python is very different from an auto-reloader in JavaScript. So as an example of an auto-reloader, a really simple one would be automatically refreshing a browser tab every time you change a HTML file or a JavaScript file. That's an auto-reloader. So a special case of an auto-reloader is a hot reloader. And this is the holy grail of auto-reloaders because they're really fast and really efficient. So it reloads the changes to your code without restarting the system. So a really simple example of this is changing the style sheet on the web page. This is kind of hot reloading. The browser can take the changes to the style sheet and it can apply the new styles to the page without refreshing the tab. You can hot reload CSS. And these are impossible to write in safely in Python in the general case. And I'll tell you why. And a special shout out to Erlang where you hot reload code while deploying. That's how you deploy code in Erlang. You hot reload it in production. I wouldn't stress doing that in Python. So you might say, Tom, Python has reload. Isn't that a hot reloader? Isn't this implementation? Hot reloading a module? So reload does nothing but re-import the module. All it does is you give it a module and it just re-imports it. So yes, this is technically hot reloading a single module. But you need a lot more before this is a hot reloader. I don't know how well that translates into other languages in English. But what I mean is reloading a single module is very different than hot reloading an entire system or components within an entire system. And the reason for this is dependencies are the enemy of a hot reloader. And Python modules have lots interdependencies. So all hot reloaders are one thing in common. They all leverage language or framework features that manage dependencies between things. So in Erlang, the example, everything uses message passing.  The messages, there's no dependencies between things. The dependency is message passing, which is quite easy to, it's quite a nice interface to hot reload on. CSS, it's not really a programming language. So you can just take it down, remove the style sheet from the page and add a new one and the browser takes care of the rest. React.js has a hot reloader and it leverages how React components work themselves. So React is all about removing components from a page and adding them again and having React take care of laying out the page for you or rendering the HTML. So hot reloading a component in React is just deleting the component and adding a new one, which is really quite nice in React. It's how it works. So imagine that you could write a hot reloader in Python. So it's a little bit wordy.  So you have a function, a module, your module.py. From another module, import some function. So you have a reference to that function in your module. You then replace the code in some function with some new code. So you've rewritten it, you fixed a bug or something. After your hot reloader kicks in, what does your module dot some function reference? If it references the old code, then your hot reloader hasn't worked properly. So it's not right. Okay. So you could go through and find all modules or all references, all places that reference the some function function. You could then hot reload those as well and you could cascade all the modules that reference the module that references that one. And you can go through the whole tree of objects. This is, it just sounds complicated. It sounds really complicated. And it's really impossible to do in the general case. For any given Python program, it's impossible to do that safely. So for limited smaller cases, it may work. For example, Ipython has a hot reloader that works in a lot of cases. But it works, it leverages how Ipython is just a shell. So you don't hot reload an entire program. You kind of hot reload parts of the repel that you're using. And similarly, if you have a single reference to something, then you can hot reload that safely. You can use reload. If you have one reference to one module, you can call reload and you can replace the reference. That's hot reloading. That works. But to do it in the general case, you will end up with bugs. And what's worse than having an auto reloader that doesn't work is an auto reloader that you can't trust. So if you end up with some bugs in development, hard to track down ones, you're missing something's not right, and it's because the hot reloader hasn't worked properly, that's a terrible development experience.  So how do we reload code in Python? We turn it off and on again. We restart the process on every code change over and over again. So this is kind of like refreshing the browser window every time you make a change to a JavaScript file. You lose all the state in the process, so you lose any connections that are open, et cetera, and it starts again from fresh. This ensures that the system or the program is right. It works pretty much. Rather than a hot reloader where you might have some kind of bugs or you can't reload code properly. So this is how Django, the Django auto reloader works.  The child process actually runs Django. So it runs the entire framework, it imports all your modules and does all the stuff that you want it to do. And it watches for any file changes. When a change is detected, it exits with exit code three. And the parent Django process restarts it. If it exits with another code, it's an unexpected error and it terminates or it shows you a message that's useful. So it's quite a simple loop. You have a process that's kind of a supervisor and it will restart the child process when it exits. And this is the most common and the simplest form of an auto reloader. So a little bit of the history of the Django auto reloader. The first commit was in 2005. No major changes until 2013 when iNotify support was added. KQ support was added in 2013 and it was removed one month later, which is never a good sign. I'll talk about what iNotify and KQ are later on. But the point here is Django code is definitely is usually very high quality and there's lots of emphasis on testing and readability. The auto reloader start to me is definitely an old and crafty part of Django. The code was very different and purely because it was something that wasn't well understood. It kind of worked, don't touch it, leave it alone. The code was definitely not idiomatic and it was very hard to extend and it was a pend-only code, right? Everyone's seen this, you kind of just chuck features on, etc. You bolt it on and you hope it works. So there were some new features that we wanted to add to the auto reloader that just wouldn't have worked with the current implementation. So we needed to rewrite it. So there's something so far. An auto reloader is a common development tool. Hot reloaders are really hard to write in Python. Python auto reloaders restart the process on code changes and the Django auto reloader was old and hard to extend. Okay? So to the fun part we're going to rebuild the auto reloader. So I like breaking things down into sections. So there's three or four steps. First one is we need to find files to monitor. We can't reload on code changes if we don't know what code we're changing or we need to watch for. We need to wait for the changes and we need to trigger a reload. We need to make it testable, of course, especially if you're refactoring an old implementation. And bonus points make it efficient.  Cool. So finally files to monitor. Everyone here knows this modules. It contains all the modules that are currently loaded by Python. Python has quite a few modules. So just running a Hello World on Ipy. Ipy has 642 modules loaded. Python itself, just importing sys and printing the LEN sys modules has 42 modules loaded. So there's quite a few modules. And sometimes things that are not modules end up in sys modules. Sys modules is effectively a dictionary and it can be modified by arbitrary Python code.  For example, the typing .io isn't a module, even though it's in sys modules. It's a class. And this was actually a bug in the Django autoreloaded implementation. I naively assumed that things in sys modules are modules, which isn't true. And Python imports are really dynamic as well. It's one of the most flexible and best parts of Python. You can import from DIT files. You can import from PyC files. You can write arbitrary loaders in Python to do random things on imports. So this guy here wrote a 60-liner code. He wrote a importer that imports code directly from GitHub. So you can do from github underscore com dot whoever dot username import project and it will import that code, download the code from GitHub, install it or make it available to Python and it's there. Don't do this in production, but there's a lot of magic that can go into imports. They're not as simple as a file in the file system and a module in memory. The more common use cases for these kind of loaders are PyTest. PyTest rewrites the bytecode of your test files. So it changes the assert keywords that you use into a function call that PyTest can do things with. Scython as well which is a library for letting you write C extension modules in a nicer syntax than C. It can compile the module on import which is quite handy in development I guess. So yeah, there isn't always a mapping between a module and a actual unique file or you could have two modules with the same file, etc. So what can you do? What can you if someone wants to import code directly from GitHub in development? You can't really do anything. The point here is the imports are very dynamic and not all changes can be detected. So we can try our best to detect them. This is a really simple implementation of something to list all the files that are installed or modules that are loaded. So which module has a spec attribute and that module, that object has an origin which is the path to the location which can be a zip file, etc. All of these co-samples are really simplistic. So the actual implementation in Django is over 40 lines long. It wouldn't fit. It actually was going to include a slide with it on, but it just didn't work. It was too big. But this is conceptually what you want to do. We want to iterate over CIS modules and we want to return a list of all of the file paths we want to monitor. Pretty simple. So we found the files we want to monitor. We want to watch for changes and trigger a reload. So all file systems report the last modification time of a file. So there's a function OS stat. You can give it a file path and it returns a structure. One of the fields on the structure is the M time which is the last modification time of the file. And we can use this to detect changes to a file. And the important thing to know here is that the last modification time is pretty abstract. It can mean different things on different platforms and operating systems. So file systems can be weird. HFS which was the default file system on macOS before the latest version had a one second time resolution. So there was no nanoseconds. In the previous slide, that's the timestamp including nanoseconds. HFS would just be to the second. Windows has 100 millisecond intervals. So files may appear in the future. Linux, it depends on your hardware clock. So the current time in the Linux kernel is cached in memory and it's updated by some kind of clock every 10 milliseconds normally. Python does a great job about abstracting operating system specifics away. But you really can't escape from the realities of the file system that you're running on. A case in point, macOS has a case in sensitive file system by default which isn't something that you can abstract away. So there could be different system calls or different ways that you find the last modification time of a file on different platforms. Python can abstract that away. What the actual modification time means, you can't abstract away. Network file systems can be even weirder. And they mess things up completely. OS stat is generally really fast. Except if it's on a network file system, that could require a network access. So if you're for some reason developing a system on a network file system and that network file system lives on the other side of the world for whatever reason you want to do that, the stat could have a huge latency. Clocks might be able to sync as well. If you have two developers working on it, one clock might be completely wrong, one clock might be right. So you end up with the one developer writing a file, the other developer reads the file, all the other two reloaded kicks in and the files, the times are different, the times are one year in the future, one year in the past. And the time can be set by anything. It doesn't, you can change the last modification time of a file arbitrarily. It doesn't mean that the file has been modified. And the M time not changing doesn't mean the file hasn't been modified. So the reason we use this despite all these limitations is it's really easy to implement, it's generally efficient unless you're running on a really weird network file system and it's a pretty good cross-platform support. So here's a really simple implementation of an auto-reloader or that uses stat. So we have a function called watch files. We have a dictionary that maps the file paths that we've seen to end the modification time as reported by the file system. We have a wild true loop and we go through and iterate through each of the files returned from the previous function that we wrote. We call our stat on the path and we get the modification time and we get the previous modification time. And if they differ then we exit with exit code three. Otherwise we sleep for one second. Okay? So really simple. Obviously there's a lot more to this. If the file doesn't exist, if it's been deleted, et cetera, et cetera, this is again is a simplistic implementation. So we found file simulator. We can watch for, wait for changes. So how do we make it testable? So when I was researching this talk I went through and looked at a bunch of other projects that used an autoreloader. It surprised me, there were not many tests for autoreloaders in the wider ecosystem. So the tornado project has two, flask has three and pyramid has six. Most of these are high level integration tests. They're like spawn a process, touch a file, assert that the process exits with exit code three. The point here is not to shame these projects into saying, oh it sucks they don't have any tests. The point here is that it's a hard thing to test usually. Obviously these autoreloaders work very well and more tests doesn't always mean that it works, but it's a hard thing to test. And the reason is, is an autoreloader is generally an infinite loop that runs in threads and relies on a big ball of Excel state which is the file system. And each of these things is hard to test by themselves. But they're even harder when you combine them together. So how do you make things testable? And this isn't some crazy idea that I've had, it's just to use generators. So if we make our autoreloader implementation a generator, the only modification we do is add a parameter telling the function how long to sleep for, and we yield after each iteration of the loop. And it lets you write slightly better tests. So this is a simple test. We create a reloader, creates the generator, we call next on it which ticks, so it has one tick of the loop, then it hits the yield and it returns to this test. We fiddle with a file somehow, we mutate the state of the disk, then we call next again, and it should exit with exit code three. So this is, we have a way to pause the autoreloader essentially. And it allows us to make changes to the file system and then resume it. So you can extend this test to work with symbolic links, permission errors, files being intermittently available, et cetera, et cetera. So we've made it a little bit more testable. And how do we make it efficient? Surprisingly there are two slow parts to the autoreloader in Django. The first one is iterating the modules, which surprised me. And the second one is checking for file system modifications. On an SSD checking for the file system modifications on OS app is really quite fast. Iterating the modules every second was the slowest part, especially you have a really large Django app with maybe 5,000 modules loaded. So how do we make it efficient? We can just use LRU cache. So we have a function, the one we wrote before, get files to watch. We call another function with the frozen set of all of the modules that we have currently loaded. That function, the sys modules files, takes the modules and it has an LRU cache on it. And it returns the same implementation that we had before. So in reality, like sys modules can change but after an app is booted, it doesn't really change that much. You might import something in a function so it can mutate but in the happy path it doesn't. So you can just cache the results of all of this. And you can skip all the processing of checking if it's a zip file, resolving the sim links, etc. It can all just be cached into a single list and returned without needing to iterate through them. In the Django implementation on this MacBook with a solid state drive, it took up 30% of the time of the each auto-related tick which was quite a lot of time. So can we skip the standard library? Raise your hands here. Has anyone during a debugging experience or process edited a system library file, standard library file? Okay, so it happens but not very many people. Maybe a specific type of developer would. In the general case, no one really does that. The average developer won't need to. So it would be quite good if we could just skip watching them. We could just skip all of the system packages, all of the standard library. We don't need to re-watch them. They don't really change. This is actually a lot harder than it sounds because how do we know where the standard library is? I googled it. I got to a Stack Overflow answer and I was like, okay, good. This is going to be simple. There were 20 answers and each of them were different which is never a good thing. So the first one was this, get site packages. That's cool. It's not available in a virtual environment. So that's no good. We can call this function. That works but it returns a single path. Some Linux distributions have more than one site packages directory. So I went to IRC and I asked and I was like, okay, I feel like I'm pretty experienced with Python. I've never needed to do this before. Why is it so hard? Am I missing something? Someone linked me to a project. I think it was related to coverage and I couldn't find the code snippet for this but it used five or six different ways to try and detect the standard library and it fell back to checking whether site packages is in the path of the file. So at this point it boils down to risk versus reward. It might not be safe to do this in all cases. What happens if your project is called site packages for whatever reason? And if you make a mistake then it's going to frustrate users. The autoreloader won't work in all cases and that's just not a nice place to be in. And no other autoreloader I could find does this. So other games could be huge. You could reduce the number of packages or modules you're searching for by 70, 80%. It's not safe to do in the general case but it doesn't get done. But what you can do is use file system notifications. So calling stat repeatedly is kind of wasteful.  Are we nearly there yet? There yet. It'd be nice if the operating system can tell you or the operating system can tell you when a file is modified. So you say tell me when this file was modified and then you just wait and the operating system will tell you. So each platform has different ways of handling this. Watchdog is a Python library and it implements five different ways and is 3,000 lines of code and they're all file system notifications on operating systems are directory based. Whereas we care about files which makes it a little bit harder because you get notifications for any file in a directory which has changed and you need to filter them out and make sure that it's only files you care about. Notifiers are also potentially expensive. They're generally designed for longer term monitoring.  In our flow, we're going to create and destroy them quickly. Every time a Python process shuts down, Django restarts it, it has to create a new watch thing with a kernel and it's going to use more resources than it should. So this is the actual feature that we wanted to add to the Django Water Reloader. It was using a system called Watchman from Facebook. So Watchman is a demon that runs on your machine and it handles all of the icky differences between platforms for you. You register watches with it. It does the right thing and it returns changes to you over a socket. And it handles git changes, which is one of the reasons you want to add Watchman in the first place. If you change, if you check out a new branch in git, you're going to have hundreds of notifications flying at your process, selling everything's been changed. But with this, it will wait until all of the checkout has finished and then it will send one single bulk update telling you that the process is finished. Otherwise, what might happen is your process receives one file has been changed, mid checkout, it's going to restart and it's going to be in an inconsistent state if the checkout is still happening after the Django process has restarted. And the demon can be shared with our projects. So if you have like a JavaScript project that also uses Watchman, quite a few of them do, they can share the watches and generally make it more efficient. So this is how we do it in pseudo code with Watchman. We connect to some kind of Watchman server. We tell it what files to watch. And in the wild true loop, we just tell it to wait. This waits on a socket for a message from the Watchman demon and if there are any changes, we exit with exit code three. And this way, we don't write any platform-specific code and we don't have any issues regarding weird OSX versions that don't use a particular library or something like that. Cool. So we've made it efficient as well. So the aftermath, the code was much more modern and it's easy to extend. It was faster and it can use Watchman if available. There were 72 tests. This is in Django and it's no longer a dark corner of Django. I might be a little bit biased in saying that seeing as I wrote it but it was certainly in my opinion a little bit better. So it's all good. I'm a genius. Work first time. Test for green, ship it, et cetera. Everyone's happy. Not quite. These are all issues from the Django ticket tracker after we released the inversion 2.2, the new auto-reloader. There were quite a few of them, unfortunately. So more tests doesn't always mean that it works. So this is my favorite issue and the issue is it doesn't work on Windows essentially without using Watchman. So it doesn't work intermittently. So this is, I want to highlight this because this is a great example of how you can make what seems to be a really simple optimization that makes sense and have it completely backfire in a way that you don't know why. So in the Django implementation that I discussed before, we might not be watching, we might be watching for a file that doesn't exist yet. Django, some files, Python files in Django, if they are there, that's a change. So for example, the models.py, if you were to create a directory with a models.py and add that file, the stat reloader would, the first tick, the first time it detects the file is there, it doesn't pick that up as a modification because it's the first time it's seen it. Only the second modification where it can compare the modification time of the previous time to the current time does it reload. So I was like, okay, that's a corner case, need to fix that. So we store the last time of a loop and if the previous M time is none, which means that we haven't seen this before and the modification time of the file is greater than the time of the last loop, then we reload, okay? This doesn't work on Windows 25% of the time and I could never work out why. So you would restart, the process would restart and it just wouldn't work but then you would restart it manually and it would work and in all other platforms it worked fine. If you know Windows and you want to tell me why this is, please, because it keeps you up at night and I don't know. But the point here is you get all kinds of strange behavior across different operating systems, across different disks, different configurations and simple optimizations can bite you. So keep it simple if you're writing your own and keep it really simple. In conclusion, don't write your own auto-reloader. Use this library. This is the library from Pylons called HAPPA and this is a fantastic library. In the abstract of this talk you may have seen, I was gonna present a library that I wrote myself that took all of this knowledge and distilled it into a library. This is that library that someone else has written, probably better than I could. So check it out if you are writing your own framework and you want to add an auto-reloader, it's really good. Cool. I'd just like to thank Onfido who's the company I work for. They're paying for me to come here and give this talk. We are in the business of identity verification. It's a really interesting problem space from the theoretical, like what is an identity. To the more interesting, how do you handle millions of identity checks as fast as possible with as little fraud as possible? So if you're interested in any of this, Onfido specifically, come talk to me afterwards, send me an email or check our careers page. Any questions? We have time for a couple of questions here and Matthew, if you're closer to me. So does your auto-reloader handle it properly if editors do weird stuff when saving files, like creating a copy first and then renaming? Can you save it again? I'm sorry. Like many editors nowadays do like save-saving, so it doesn't overwrite the file but rather create a new one and then replace it. So Watchman handles that for you quite nicely as well. So it looks at common patterns where you create a separate file and then you do an atomic move. The stat-reloader handles that as well because it doesn't watch for the new file, the .new file, which is then moved. So as far as it knows, the individual path has been changed but not the other one. Okay, thank you. Hi. If restarting the process isn't really an option, let's say you have plugins for an application and you can still kind of control how the code in the plugin looks because you're defining the API, would you say reloading without restarting is possible or just don't? So the exclusion to a hot-reloader is a plugin system where you have a single reference to that plugin or you control the plugin and you can safely, or you know that you can safely delete the reference and re-import it. It doesn't always work if you have, for example, a C module, extension module that that plugin relies on. It might have some initialization code, you can't really safely hot-reload those at all. So it depends. You can write a hot-reloader in some specific cases. A plugin one in general, a pure Python plugin one is definitely one of those but it's safer if you find into weird issues to just restart the process. So a good implementation might be both. If you can detect a change, if you can somehow diff the changes and work out what needs to be updated, you could hot-reload simple changes and then fall back to a restart if needed. Thank you. Cool. All right. One super quick question. There you go. I tried Watchman years ago when it just came out. Is the API better now or easier to use? The API is better-ish but it's still a little bit harder than I would have liked to use. The simplistic code that I showed where you register a file is nothing like you need to do. You need to work out, it's directory-based, so you need to work out the set of files, which common directories do you want to watch, minimizing the amount of directories that you do watch. It doesn't take care of any of that for you but in general it's quite nice. I mean, the simplistic case, you say watch this and you just get notifications on a socket and it provides utilities for filtering out specific files, regular expressions on the files, et cetera, in a way that's quite cross-platform and takes a lot of code off you. But it's definitely more complicated than I would have liked. All right, let's thank Tom again. Thank you very much.


The following is a presentation of TFNN 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 Good afternoon folks, welcome to the December 15th the wonderful Wednesday edition of today's Trader's Edge show I'm your host Stevie 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. Hey, let's make sure we have an extraordinary one of the easiest way to do that It's to always remember that life is happening for us not to us That's right when you and I make that one little two-by-four ship Well means we can find the gift in every set of circumstance that life is gonna toss at us now today You and I we're gonna go check on the circumstance of these markets We'll go figure out what those bulls and 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 I'm absolutely grateful for your presence here But more important than that and that's this during this next hour I'm here to serve you so feel free to pick up that phone. You can dial on an<PHONE_NUMBER> if you can't dial in We've got you covered there, too Go ahead seven email send it to Steve at tfn.com and inside the subject dating Please put radio show question of course in our Tigers then well any and every 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 We got most of the US indices trading to the downside the only one that is not as a transports The Dow is off 12 the S&P is down eight the Nasdaq 101 12 Russell's down 17 Semis off 19 trannies are up 41. You've got gold down six bucks silver off 36 pennies lights We crew down 14 cents natural gas up nine pennies trying to put in a bottom there by the deep point possibly by day's end Lead the charge dollar wise the upside you got CMC materials up 44 bucks 30% Eli Lilly 23 bucks nearly 10% O'Reilly automotive $18 nearly 3% tandem diabetes care up 13 bucks That's 10% and in select corporation up nearly 13 or 5% to the downside We've got Amazon of 65 bucks Shopify 53 Bang, I don't know how you pronounce that one down 45 B Pam systems down 32 googles off 28 So plenty to look at but first we're going to go out to Martinez, California and speak with brent brent. Thanks for calling Thanks for holding. How are you doing today? I'm doing great. Steve. How are you? Excellent. Thanks much for asking and I believe we're going to take a look at merc MRK is a ticker symbol out here So let's get that up on the screen and tell me how I can best help you I am long this with some call options the 70 to 50 and If you look at the chart, at least in my mind, it's a there's a very obvious Maybe you can see the to the upside starting from back in September that completed Pretty much right on you know the target and then the same type of pattern coming down That completed, you know kind of here at the beginning of December Yes, and so that's where I bought in and then I just you know just making some sort of a move here and Just one of your thoughts on your area to be watching attention to that side Sure. Okay. So first on the daily time frame You're inside a daily profile and the resistance level is what it appears to be targeting and that's 75 70 So that would be a level you'd like to see price close above at least for two consecutive sessions If we get that then we would slide over into the weekly profile It's a relatively wide profile and that would suggest to move up to 83 19 But before price does that the battle ground would be at 77 65 That's the top of the monthly so your battle grounds right now from a profile standpoint or 75 70 Above that is 77 65 and then if you could clear that you'd be off to 83 19 before I pull over my daily White background chart any questions about these charts or these profile levels No, that's great. That's what I was looking for Perfect, okay So on the daily time frame Brett mentioned the a to b equal cd to the downside pattern It also formed a td9 count bottom It did that at the breakout support level of 71 86 Today what you like is that price is above that red oscillator and change line So nothing additional to add here because it just then suggests Brent those levels that we looked at So 75 70 and the daily the monthly and then the then the weekly time frame So everything you've got a nice bottom pattern out here everything looks good And just a matter of how price still deals with those battleground areas All right, that's fantastic. You know, I appreciate that. There's always You provided what I was looking for so I appreciate that and Yeah, you have yourself a great day and a great week, okay Okay, thanks. That was Brent in Martinez, California. That ticker symbol there was uh, merc now yesterday I did a very poor job of getting to everybody's request out there So my apology for that But all that meant was that you have to just wait an extra day So now I don't have the names of who was asking for what I just know the symbols out here So I want to go ahead and get to those then we'll go to the markets out here So one was to take a look at FedEx. So as we look at FedEx fdx is the ticker symbol right now It's trading back inside. It's a daily profile been inside there now basically for the last three trading sessions So your support area is 233 49 237 55 and resistance is 241 61 now Price is also pulling back the test support on the weekly level. That's the top of the weekly profile So the level to be watching here is 238 54 if price were to close below that then that brings out the 237 55 the 233 49 area Again, that's just simply from a profile standpoint as we pull over the white background chart and we take a look at it for its daily time frame We can see that price is below its red oscillator and changed on now That just changed colors yesterday And if price remains below that level that level by the way is 241 89 that suggests lower price So that would say okay, we're likely going to go target the bottom of that profile 233 49 What FedEx does have it had a td9 count top that stopped the move higher on November 15 Which then formed a td9 count bottom that stopped the move lower on december the 11th out here No pattern other than just simply take a look at the task market profiles the oscillator and change line to get a feel for price Is likely headed But in this case here again a rejection or close below that red oscillator and change line would suggest lower price For federal express weekly time frame chart. It has a td9 count bottom as well We talked about our price was testing that key level of support That was the top of its profile old resistance can become new support So not much else that I could provide to you with regard to federal express Thanks for waiting an extra day whoever did that the next question I knew this this one did come from hector and the fuel injectors that was to take a look at nvidia My guess is that eddie and bokeh would like to look at nvidia as well Here's what we know price is trading below and has been trading below for the last three trading sessions at the bottom Of its daily profile that was at 293 85 that suggests lower price as we take a look at the Weekly profile though. It says hey hold your horses stevo And the hold your horses is price is traded back to the bottom of its profile So the key level there to be watching is 275 79 so eddie Hector patty Watch 275 79 if there's a closed load on a weekly basis that suggests that nvidia should head lower So the question is head lower to where well as we open up the daily time frame chart Well, we can see the head lower would be to the 242 82 level that is this td9 breakout area And a close below this hammer candle from the trading session of december 6 that low is 280 38 That would then generate an a to b equal cd downside pattern. So nvidia looks like it's got Some work to do but what might save it is the bottom of that weekly profile So the key level to be watching there 275 79 we get back to this break We'll go take a look at marvell and fiser to wrap things up steve rhodes with tfnn. We'll be right back Steve rhodes started his trading career as a student almost 20 years ago And the student has now become the master steve won the prestigious timer of the year award in 2018 And barely missed that mark again in 2019 finishing at number two for the year an amazing accomplishment Steve rhodes is committed to sharing his techniques and knowledge with anyone who wants to learn And he shares his vast amount of trading knowledge every day in his mastering probability newsletter Steve's award-winning newsletter mastering probability is delivered every trading day with updates throughout the afternoon Sign up for steve's market newsletter mastering probability, and you'll receive access to seven of steve's educational webinars Absolutely free at tfnn all our newsletters come with a 30 day money back guarantee So you have absolutely nothing to worry about visit tfnn.com and try mastering probability 30 days risk free today tfnn educating investors What's separating you from the most successful men and women on wall street? That's right Information having all the information gives us the perspective we need to place the right trades at the right time The task profile scanner is the premier market profile based scanner Powered by its acclaimed task proprietary algorithms This feature rich scanner instantly filters over 2,500 plus global financial markets such as stocks ETFs commodities futures and forex This powerful suite of tools leverages instant trade filtering and strategy formulation to show you emerging trades Before they happen for a limited time you can save $100 off your first month by using the promo code upgrade And you still get a 30 day money back guarantee So you have nothing to risk Level the playing field with the task profile scanner which you can find under the services tab at tfnn.com Sign up today Sharpening your skills as an investor is like getting better at playing a musical instrument You have to practice sure, but you also need excellent instruction from experts at tfnn You'll get advice and guidance from the authority and technical market analysis And it's not just dry tedious text either tfnn airs live financial content streamed live on tfnn.com and tfnn's youtube channel with tiger tv live every market day from 8 30 a.m To 4 p.m. Eastern for free each host is an experienced trader and gives their take on the market while taking calls and questions Live from around the world from the moment the market opens until the closing bell sounds tiger tv has eight different shows with expert Hosts to help you make the right moves with your money Watch online at tfnn.com or on tfnn's youtube channel and become the investor you were born to be tfnn educating investors Call now toll free at 1-877-927-6648 internationally at<PHONE_NUMBER> Welcome back. We'll take a look at marvell technology mrvl t mrvl is the ticker symbol out here and what we can see Right now is that price to just consolidate with inside its daily profile It's above the weekly and above the monthly but the weekly chart is the one that's really kind of controlling things right now As we open up the white background charts what we'll see on a weekly basis a td9 count top It's got an a to b equal cd pattern most certainly we don't the week is not over It's only wednesday but at this stage here. You could also be confirming a sell the t-point if we get that bearish reversal candle at the present time And as a bearish dark cloud cover, but it's hard to call weekly candle Based on wednesday's wednesday's action, but this does suggest that price should move back to test the oscillator and change line That's in the 78 56 level So when we take a look at price trading with inside the profiles on a daily basis the bottom of that profile is 79 12 the top of the weekly is 76 12 So at this stage here, uh, and we'll go take a look at the daily chart It would appear that marvell's going to pull back in the 76 to 78 Type area out there on a daily basis. We don't have a topping signal I don't even have a sell the d-point pattern because I don't have that bearish reversal candle But what we do have is price being below the green oscillator and change line So the momentum has waned and that's why I say that is more like more likely than not the weekly chart that is controlled And with regard to marvell it suggests a further retracement out there The next question was or the next instrument to take a look at was fiser I believe that was for mike who sent me an email or mark who sent me an email Or if it's not then at least we're covering this for mark and whoever put in that request yesterday So with regard to fiser here, we're looking at the daily time frame What we have is uh, no sign of a top Uh, you do have a triggered roadsman to indicator signal but that needs a bearish reversal candle So the daily time frame for fiser looks like it wants to continue to move higher as we take a look at the weekly chart out here The only thing that I've got on a weekly basis is what? A potential for wave number seven. Where's that count? Okay, so all the way back there, but that needs a lower high next week Um to confirm that pattern, but it looks bullish price above the top of its weekly profile Um, it looks to me like fiser wants to continue to move higher out there So the request I believe or the question was your thoughts on analysis See this is a continuation of a of a trend of the upside I do at this stage here at least with regard to the daily and the weekly Every indication is that fiser wants to continue to move higher So, uh, thanks for writing in mark if that was you from yesterday Sorry that I was not able to get to that question Uh, we've got some questions that have come inside the tiger's den One coming from mike. Uh, mike k wanted to take a look at the gdx Gold and the silver. So let's take a look at the gdx here. The gdx right now is pulling back into a prior swing point Let's take a look at that prior swing point and its volume that swing point was from the trading session of September 29 2021 the volume there was 34 million shares. We're 13 million right now We're basically almost four hours into trading. So we know that volume here is light But if it closes inside that swing point, which means below 2941 But above 2883 it would suggest even though you're coming in with lighter volume You could get back there and test that level But with regard to sellers the sellers were more sellers around in september september 29 to be specific than there are Today prices below the bottom of that profile. So that's not a good sign out there That's what the daily time frame chart is communicating to us at the same time prices also So as price moving back into the daily swing point with lighter volume The weekly shows that prices test in the bottom that weekly profile now that weekly profile level is 29 30 Price right now is at 29 19. So be curious to see if this holds coming into the Coming into the end of the week out here Let's take a look at the white background charts for the gdx. Give me a moment just to get those produced and pulled over Should be here momentarily and what price is doing as we pull this back prices testing a td9 breakout level that td9 breakout level is 29 17 No bottoming signals negated its bottoming signals out here most recently and And most certainly today negated the Well, it didn't get to the td9 count bottom a while back So right now all you've got is price pulling back on the gdx on a daily base point back into a price swing point With lighter volume and right into a breakout level on the daily basis 29 17 and right into a support level on the weekly basis The bottom of that profile. You also wanted to take a look at gold So as we go take a look at goldilocks out here, we'll switch over and do what? Let's take a look at this set of charts here. Why on this set of charts here What we know is well first what I can share with you is december 2nd Was a td9 count bottom that low out there is 17 62 29 until price takes that out Will that bottom signal get negated on a weekly basis prices point back to test the bottom of support That's at 17 61 our low so far today has been 17 64 10 So you've got the gdx mic pulling back into support with light volume Pulling back on the daily basis pulling back into a weekly level of sport the bottom of his profile So to his gold are these areas going to hold they may support hasn't been broken What happens if they get broken good question? I would say it opens up that door for 16 83 That would be the march 8 swing point out there. You also asked to take a look at silver Now silver does not look as good as goldilocks out here. Let's go take a look at those silver charts here silver And then go that's gold and silver. What's okay? We'll take a look at this silver and then us dollar index Out here so silver right now is trading below The bottom of its bowler structured weekly profile, but it killers It doesn't matter what it's doing at wednesday at 124 in the afternoon It really matters. What is it doing at four o'clock on sunday? I've sat on friday out here So right now, but prices point back into a swing point. So let's do this here. Let's do a take a look at the slv Give me a moment to pull that up on our screen. Let's get to the three time frame chart Just to understand the volume as it pulls back into that swing point. So That prior swing point is back here from september 29th as well The volume there mic was 56 million. We're at 20 million as we speak right now So very much like uh, the gld or gold Pulling back into or the gdx pulling back into a swing point with lighter volume But it hasn't tested the bottom at swing point the bottom there would be 1983 So a test of 1983 a rejection meaning a close above 1983 Unless in 56 million shares would be a bottom signal for the slvi. I assume a bottom signal for silver as well So that's what we have with regard to gold silver and the gdx We'll see if there's fireworks at the 2 o'clock 233 o'clock time frame out there After the fed releases its statement as well as the interview process Out there as well. So hope that helps you out. Mike. Thanks so much for writing in There was another request inside the tiger stand. I believe that was take a look at the roll blocks out here rblx is the ticker symbol. So let's get that rolling out here rblx Let me get that going on my other chart. So roll blocks trading below The bottom of its daily and weekly profiles out here. So let's pull the daily back So it's trading right back into where a big huge gap with wide price spread That was on the trading day of november the 9th. It really began the prior trading session November 8th, but november 9th this thing moved higher with 93 million shares and pulling back into that area with 28 million shares so far, but let's pull over the other charts See if there's any kind of signals is any kind of bottom signal on a daily basis The answer is no, there is not so we see the a to b equal cd to the downside And we see a breakout level of 74 10 So at this stage of the game it would appear that roll blocks is heading towards that 74 10 Level out there. That's what the daily time frame chart show now We're not really going to get much with regard to the weekly because it has been trading long enough So let's go back to that black background chart I'll draw in the a to b equal cd pattern the swing point which had 15 million shares You're already passed with 28 million shares. So roll blocks has a confirmed a to b equal cd to the downside We'll get that up here on the screen momentarily And you'll see what those price projections are the first one being 86 60 the next one 78 43. I'll be right back Are you having fun trading the markets but having trouble finding like-minded individuals to discuss your trading and investment ideas with Become an apex predator in the trading markets and join the tiger's den trading room only at tfnn.com The tiger's den is an exclusive trading room where successful traders from around the world come to exchange trades and ideas Join the den and surround yourself with the sharpest minds in the trading world Subscribers to the tiger's den are also the first to have their questions answered live on air And can privately chat with our tfnn hosts live during their shows Interact with other tigers and tigers as they share trading ideas news analysis and discuss the market action all trading day Subscribe to the tiger's den risk-free with our 30-day money back guarantee and become part of the tfnn trading community tfnn educating investors You could be making money off the stock market and if you're already making money off the stock market You could be making a lot more Check out tfnn and tiger tv and get expert investing advice to give you the power to control your financial future Go to tfnn.com and find the newsletter for you Whether you're into trading gold metals futures currencies or options You'll get advice and analysis to help you seriously get ahead tfnn also features trading services with a 30-day money back guarantee for new subscribers As well as tfnn's tiger den trading room trading software and educational webinars for all trading levels And make sure you check out tiger tv for free on tfnn.com or tfnn's youtube channel for live Financial content from 8 30 a.m. To 4 p.m. Eastern on market days Stop watching on the sidelines while other people get rich and become the investor. You were born to be tfnn educating investors tfnn is excited about our new software charting program the art of timing the trade charts In collaboration with tom o'ryan 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 art lease abc's 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 This segment is brought to you by think or swim for more information Just click the think or swim banner on the front page of tfnn.com The only remaining open question that we have between yesterday and today is what's going on inside of natural gas So we'd love to hear from you. You can give us a call at 877-927-664 You can always send me an email do it quickly steve at tfnn.com and put please put radio show question Inside that subject head and of course Our tigers and I'll take any and every ping out there. So with regard to natural gas. We got the january contract up on our screen And it does look like today is going to generate a bullish engulfing candle down the bullish engulfing candle here Would confirm a couple of different a to b equal cd down patterns to the downside out there. However Uh, we can see that price is also testing its red oscillator and changeline We saw a nice move higher about two days ago price ran into resistance That was the bottom of the gap that's at four dollars and four cents out there So strong resistance area and it also ran into resistance at the red oscillator and changeline So I would wait for price to close above at least the oscillator and changeline That currently is printing right now as we speak at three dollars and 86 3.8 69 That's a january contract that we're taking a look at and if price can close above that then maybe You've got a bottom signal here What you would need to also see though in the coming sessions It's certainly a close above four dollars and four cents If you get that then you at least have a bottom from the standpoint of at least a countertrend rally That could or should take price up to the top of the profile the daily profile That's about four dollars and 57 cents. So it does look like you may get that bullish engulfing candle You have that at 131 in the afternoon. You had that at 7 30 this eight o'clock this morning out there. So that hasn't changed But what has changed is price is tested and so far it's rejected that red oscillator and changeline So it really kind of gives you even with the bullish reversal candle gives you more of a neutral signal than anything else closing Above that oscillator change line. That would be the next slide positive. So let me just check here. No other request Yeah, no other request out here So that's just going to give us time until we do get a request Just kind of surf around the markets and try to see if we can figure out if there's any tells out here with regard to What the markets intend to do Once Fed Powell releases his statement. So how are we going to do that? Well, let's just come back here and take a look at the four equity future contracts. This is where we start So as I mentioned During maybe it was the as we came on the air or maybe it was during the update I can't remember when but here's what we do now if we take a look at the es And you can go take a look at the spy If we take a look at the es mini price yesterday got back and tested the swing point The top of the swing point was 45 99 tested and rejected if you go take a look at the spy You'll see it did the same thing and it did it on lighter volume So tom is a coin at expression. I owe him a dollar already I'm going to be $2 now because it says if you can't bust them to the downside price will try to bust them to the upside So that's the message from the es mini in the case of the end queue Which has been fairly weak out here prices pulled back yesterday and today testing the bottom of its daily profile 15 7 23 So a key level of support has held In the case of the dow equity future contract prices testing That center of its bearish structured profile the center is at 35 4 13. We're trained at 35 407 now Let me go over and open this up here momentarily and we'll just slide the chart over What the dow is also doing it's at tinkering with its oscillator and changeline which recently changed color So yesterday was a oops Yesterday was a test and rejection of that right now. We're just trading right near it or right on it So to speak another rejection of this would suggest we move higher move higher to where well 35 900 inside the dow Is going to be your key resistance level that is the td9 breakdown level That's what I would expect that price would head to if it in fact moves higher So in the es mini it's pretty clear at least pretty clear to steve at this stage here The message of the markets was it didn't have the volume to push through that swing point yesterday And maybe that and we've been at support here in the nq hasn't busted through that Support really in the dow is all the way down at the 34 230 area, but it's testing a another key area right now That's that oscillator and changeline. So that takes us over to the russell 2000 the weaker of the four instruments out here And prices back to support and support is the bottom of its bullish structured weekly profile 21 39 Now if we get a close below that 21 39 on friday That's going to suggest inside the russell 2000 that we have a change in trend right now prices just pulled back to support There's also another level of support at 21 52. That's the bottom of its daily profile But it's the weekly right now that is being tested So what do we do from here? So in each case We're back at important levels of support and when we get to those important levels of support You know how I like to operate it, which is what are the intraday time frame signals generating for us? What are they suggesting out here? Do we see any signs of a bottom? So to do that we go take a look at our eight panel chart out here So momentarily we'll have those up on the screen. That's going to be eight little squares white backgrounds out here The es mini is what we're starting with and yet for left you've got the monthly and on the bottom right You've got the three out 300 minute chart. Let's start with the 300 minute chart the five hour chart You have a confirmed Gartley by pattern that happened yesterday with the piercing candle It took place at five o'clock in the evening if we take a look at the yes mini on the 240 minute chart We have a TD nine count bottom the 120 minute chart It still has a by the d-point a confirmed Gartley by pattern We take a look at the 60 minute chart the yes mini has a TD nine count bottom If we take a look at the 30 minute chart, we have a TD nine count and roadsman Diminicator bottom of the still in place out here So the es mini tested and rejected a key a swing point yesterday Did it on lighter volume and each of these charts 30 60 120 to 40 and five hour chart have bottom patterns out there So you tell me Is there a tell here with regard to the es mini and how it should or could or would likely respond to fed paul's Uh release out here I think it is You know, it's I can I can guarantee you one thing the es mini is sending a signal to you and I It is doing everything in its power to try to form a bottom doesn't mean that it will But boy, we have all the signals here inside the es mini that that's what it's trying to do Now the nq has traded back to the bottom of its daily profile So what are its signals generating for you and I this has been, you know, arguably weaker than the es mini So what is it telling us? Well, we have the same eight panel charts out here Why the 30 minute chart is black? I don't know, but here's what we do know Let's start again from the five hour time frame chart bottom right confirmed by the d-point bull sash candle versus a piercing candle still in play 240 minute td nine count bottom the 120 minute chart by the d-point gartley by pattern the 60 minute chart still has a valid td nine count pattern in place trying to generate a roadsman to Mindicator bottom as well and we've got a td nine count and a roadsman to Mindicator bottom on the 30 minute chart So we've got the nq and the es that are clearly signaling to you and I their intention Whether or not they're able to do that Um before we come into the release of the fed we're looking for signals from these charts And they're not telling us that what they want to do is fall apart. It doesn't mean that they can't It just tells us that both the es mini and the nq are doing everything in their power to form Or try to form some type of button now This does not mean that we go take out the all-time highs out there We could but that's not necessarily what it means. It could just mean we're in some type of a consolidation Some type of sideways consolidation out here, but my goodness the nq and the es mini I'm just I'm narrating the chart for you. You tell me. What do you think these charts are communicating to us Well, of course, we don't need to stop there and we won't stop there We'll go take a look at the russell 2000. We'll go take a look at the dow two But what are the charts for the russell 2000 times now? I don't know this. I haven't looked at it I've been gone for for an hour. So if we take a look at again starting over on the right hand side The russell 2000 a five-hour time frame chart. We got no bottom at all out here Zero zilch a 240 minute. We got nothing the 120 minute chart is trying to right now as we speak try to Confirm a roadsman to indicator bottom The 60 minute has already confirmed a roadsman to indicator bottom The 30 minute does not have a confirmed roadsman to indicator bottom But it's trying to the daily is actually trying to confirm a roadsman to indicator bottom But it has the ticket for buying or selling real estate in the bay area Including the surrounding st. Petersburg tampa and clear water markets tiger real estate LLC is a firm that has extensive experience in the tampa bay area Whether you're looking to sell your current property for maximum value Or you're in the market for a second home or investment property Tiger realty has the experience across all areas of real estate in the tampa bay area to help buyers and sellers make the most informed decisions Across all price levels from the price You should be paying per square foot in certain up and coming areas to the type of cash flow investment properties are capable of creating Tiger real estate can help you make the best decision when it comes to all areas of the market Before you make one of the biggest decisions of your financial future call tiger real estate LLC today at<PHONE_NUMBER>2 Or email us at tiger at tfnn.com that's<PHONE_NUMBER>2 call us today The technology around us is changing every day with so much happening It can seem impossible to keep up with all the information David white's investment newsletter the technology insider is designed to give you all the information you need to understand the technology that shapes today's markets and tomorrow's future David white has made his living staying on the cutting edge of technology His weekly newsletter will give you specific recommendations for value tech stocks As well as entry prices target prices and stops to set for each trade Dave delivers his weekly newsletters every friday with updates throughout the week You can get the technology insider at tfnn.com for only 37 dollars and 50 cents Sign up for david's newsletter the technology insider and get an inside look at everything the technology sector has to offer Try it risk-free today with our 30-day money back guarantee tfnn 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 la bu Or la bd Directions daily s and 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 eight six six four seven six seven five two three 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 Folks i just got too excited and i wasn't paying attention to that clock and uh, i think for a second day in a row Uh got thrown a flag was off sides there. Uh, so we were talking about the russell 2000 and the russell 2000 daily time frame Still has its td9 count bottom in place. We've got a couple of the intraday time periods that have confirmed bottoming signals Out here.  So let's finish this off by at least taking a look at dow equity future contracts as well So we're already talked about how in the daily base. That's panel number three up here from the top on the uh, Three from the uh, three from the left is testing that green oscillator and changeline. So what do we know about the 30 minute time frame chart? Well on the 30 minute time frame chart I don't have a real clear signal out here. I don't have a a confirmed bottom Pattern or not, but if we take a look at the 60 minute chart Really the same thing not a confirmed bottom signal nor do I have that in the 120 nor do I have it on the 240 Nor do I have it on the five hour chart So the least compelling chart is the one that is the strongest right now What I say the strongest one that hasn't had the least retracement Um For the for the most part out here So now what the dow does have it still has that daily td9 count bottom and if price regain Regains that green oscillator and change line out here. It doesn't really need to form these bottom signals on the intraday time frame charts It's the ones that we're pushing those other levels of support out there. Um, such as the bottom of their profiles like the uh, Russell and the nq and then the uh, espini, which was testing a key swing point that it rejected out there So if you're asking me, which I think you are whoever you are Is there some kind of tell as to how the equity market is going to go? Tell as to how the equity markets May respond to Powell's notes I can tell you that the way that the charts are communicating to us is that we should see a market that ends up moving higher Now how much higher? You know that that I don't know. I'm not expecting anything significant But what I would be watching for that answer would be should the market move higher would be 35,900 level And that's in the ym. That's a td9 breakdown area that level as we can see a couple of days ago That's where price made its way up to found that area as resistance and closed back below It's so that's going to be the real key level to be watching out there So hope that helps you out with regard to the potential tells of the market and soon enough We will see at least by day's end We will see whether or not these charts were correct and what they were communicating to both you and I So what other piece? Well, I do have a request that has come in It looks like two requests. So let's get to those here. I don't want to fall behind like I did yesterday This one coming in from Nancy and Nancy wants to take a look at apple. So Nancy's question is Steve could you give your take on apple, please? Yeah, I can't so let me do this here We got to change screens. Give me a moment to do this Otherwise, mr. Bill is going to bop me upside the head with a two by four and today I really don't feel like getting that bop so to speak Not that really any day. I feel like getting that bop, but you know today I don't really need that so as we take a look at apple I know about apple here. Nancy is that it formed a td9 count top and it did that a couple of days ago and it made that high I know that because I remember checking it out for somebody So now we've got a new profile that is formed out here prices trading with incited So the support level to be watched. I know you've got a valid top That was the td9 count on december the 13th. We'll take a look at the apple I believe that was a bar following bar number nine So support that you're going to watch is 170 93 now on a weekly base I've got an a to b equal cd to the upside no bears reversal candle yet And even if price gets down to 170 93 that might Get to a piercing candle, but might not actually it would be a close below that that would then signal lower price So let's pull over the white background chart. Let's just confirm what stevie said here and boom. Wala We can see the td9 count top now what price is also doing Nancy It's testing that oscillator and change line so very similar to the ym So you got a valid top for price holding a key level of support right now the signal to us and apple is neutral If price closes below that green oscillator and change line that it says 170 93 and below that Then the answer you could see move back to 157 80 That is where apple's most recent td9 breakout level is at here on the weekly time frame Far number nine likely to form this week. That would suggest to move back to the 163 90 So you got 163 90 173 and 157 80 those are the magic numbers to be watching inside of apple But the first the most important one will be that 170 93 level So I hope that that helps you out and Nancy. Thanks so much for writing in Uh, the next question coming in from jeff jeff writes in and says, uh, steve The federal reserve appears that it's going to begin raising interest rates So I had to take a quick swig there Aren't you concerned that that's going to create a a crash scenario for the equity markets? So that's a great question out there And jeff I would I would ask this question even though you can't answer it But I'm going to ask it I'm going to ask that to everybody else that's listening My question to you is Right now with regard to Where is it that you have more trust you have more trust Putting your money into a company like apple. Okay, nancy was calling about apple Would you have more confidence in putting your money inside of apple or some type of debt instrument? Which one do you have more confidence in government or business another way to frame that question? I would suggest to you that the consensus around the globe is that they have more confidence in business Companies corporations then they do government And so the cool thing here jeff is that if we go back in time we take a look at other time periods Where we had that same shift where people distrusted government and trusted corporations out there In those periods when we've seen interest rates interest rates rise that was always good for the stock market It's the opposite It's the opposite of that and what you're insinuating if you have more confidence in government Then you do in business So I would just simply throw the question back to you. Where do you have more confidence now? That's not to say we don't have knee-jerk reactions. We always get knee-jerk reaction But if you're asking me bigger picture If we are in a environment of rising rates, is that going to be is that what's going to be bad for the stock market? My answer would be absolutely positively. No that that's not would call That's it certainly wouldn't cause a crash and that would not necessarily If you if you listen to me over the last couple of days out here I'm a bit concerned and that concern is and this has nothing to do with rising rates out there My concern is that we may have a significant top that's in place Based upon what I look at on the yearly charts based upon and the highs very well may be in Out here So our interest rate is going to be the thing that are going to croak the market Only if you have more confidence in government and I find it hard to find folks that actually say Yeah, I trust the government more than I do corporations out there So that that's my take. I hope that that helps to answer that question Okay, so no other questions that I see at the moment There was something inside the tiger's den Dan I did not get my sense of taste Back of course, many people would tell you that I had no taste to begin with So it's very limited and smell It kind of like it's a beautiful thing. I have absolutely No smell, you know, the easy way to test the smell thing at least has been for me Is to um, it's to light a match, right?  I mean, it's it's an indistinguishable smell So I tried that a couple of days ago just to see if I had any of those smell senses back and the answer was No, I did not so bummer there. I suppose it is what it is Um, yes, saving a lot of not buying air fresheners. Good point there jim. It is too bad. It is what it is So anyways, uh, we'll get back to this break here. I think there was a request to take a look at dvn Uh, and we'll do that for snp steve roge with tfnn. We'll be right back Sharpening north skills as an investor is like getting better at playing a musical instrument You have to practice sure, but you also need excellent instruction from experts at tfnn You'll get advice and guidance from the authority and technical market analysis And it's not just dry tedious text either tfnn airs live financial content streamed live on tfnn.com and tfnn's youtube channel with tiger tv Live every market day from 8 30 a.m. To 4 p.m. Eastern for free Each host is an experienced trader and gives their take on the market while taking calls and questions live from around the world From the moment the market opens until the closing bell sounds tiger tv has eight different shows with expert hosts To help you make the right moves with your money Watch online at tfnn.com or on tfnn's youtube channel and become the investor you were born to be tfnn educating investors You might think that if you want to be successful at trading in the stock market You're going to need a crystal ball after all it's impossible to predict the future, right? Like any endeavor in life before you decide it's impossible get some advice from the experts You might find that it's not so impossible after all for daily market Overviews that give you direction on the key indices selective stocks and commodities Subscribe to the opening call newsletter at tfnn.com The opening call newsletter is written by basal chapman creator of the trading methodology known as the chapman wave The chapman wave up down sequence gives you an edge in identifying price turns finding the peaks and valleys and stock prices Get the opening call newsletter by basal chapman in your inbox every day First time subscribers also get a 30 day money back guarantee If you're not satisfied let us know and you'll get a full refund within 30 days of signing up tfnn.com educating investors Are you looking for a secured investment which pays you on a monthly basis? The target first mortgage program may be the program for you The best rate on a five-year cd in the country right now according to bankrate.com is paying 1 per year A $1,000 per a $100,000 invested the target first mortgage program pays 7 per year paid monthly on secured high value buildable properties in st. Petersburg, florida The investment is for four years paying 7 per year or $7,000 per $100,000 invested Your investment is secured by high value real estate in st. Petersburg, florida Your investment can be anywhere from 100,000 to 500,000 Do you want to make 1,000 per year on 100,000 invested or 7,000 per year on a secured tiger first mortgage? The tiger first mortgage program may be just the program for you The tiger first mortgage program pays 7 per year paid monthly for more information You can call<PHONE_NUMBER>. That's<PHONE_NUMBER> Don't forget you can listen to tfnn live on your mobile device 24 hours per day Go to tfnn.com then hit watch tiger tv That's tfnn.com then hit watch tiger tv Folks, so we're taking a look at Devin Energy. Tiger symbol there is db and what we can see here like a couple of the other charts that we looked at is prices pulling back and testing the bottom of its weekly profile So the key level there s&p is going to be 3827 if you get a close below 3827 That likely suggests lower price now lower prices to where well if we look at the daily time frame chart Price is trading below the bottom of its daily profile. It's got a roadsman to indicator top It could take us all the way down to the 29 21 level at least that is where price broke out from So that becomes an area to watch as we look at the weekly time frame chart. We populate hit Its breakout level is 2446. So the bottom of that weekly profile For Devin energy and by the way, this week is going to confirm or appears that it will confirm A roadsman to indicator top so that level of support of 3827 is a very key level can hold But if it fails boy, that's telling you that Devin energy wants to head lower The other request out here was to take a look at fang fang is the ticker symbol And that is what that is diamond back energy. So diamond back energy right now is trading into support That's the bottom of its daily profile. That's a 101 97 last time we were down here at 2.9 million shares You're already at 2.2 million shares. So it's pushing into this with more energy. Let's pull over the Diamond back energy white background chart. See what other signals we have out here Really not much. So I would say a close below the swing point from December the second that low was 99 52 that could set off and move down to 81 61 That is the td9 breakout level for the daily time frame on a weekly base. So we take a look at diamond back It's got a td9 count top a roadsman to indicator top that suggests move to 9402 That's the top of its daily profile. So fang looks like it wants to continue to move lower the confirmation of that I would say would be a close below 99 52. So snp. I hope that helps you out Thanks much for your patience and writing in folks. The fireworks should begin in about four minutes or so And we've got a great director of fireworks. That's david white with the power trading hour tomo bryan He'll take us on home and I'll be back with you tomorrow on terrific thursday. So have a wonderful wednesday folks Thanks much for joining us. We'll see you again soon