Hi. Yes, I'm Eli. I am a developer advocate at Anvil and I love talking about Python. So this talk today is about how Python handles objects in memory and we're going to be talking about what pointers are and where you'll see them in your code, what the idea of a Python object is and why it matters and how the Python in particular see Python can tell when you are done using an object that it has in memory and what it does when that happens. So what is a pointer? Well, here are some pointers. This is a bit of C code. And here we've got, you can see it sort of saying this is a void and a pointer and that is saying that this is a pointer to an object that the type is not specified. You've got an int and therefore the pointer has to be a pointer to an integer or a char and it has to be a pointer to a character. And this is because in C it's very strongly typed. Obviously in Python we've got duck typing. So pointers function a little bit differently than they do in C and you don't actually need to know any C at all to ask for anything that's going on in this talk. But the reason that I call them pointers is because that's what they're called in C. So a pointer is basically an object in the namespace that corresponds to an object in memory. So when you name a variable something, that name is a pointer. So for example, I instantiate an instance of my class and I call it my class instance and that name is a pointer to that object in memory. And through that name, you can access and manipulate that object in memory. So where we see them in our code, a list is actually a pointer. What lists is we're going to use a lot of lists in the examples that I'm going to go through because the way that a list functions in Python is it's actually a wrapper around some pointers. So the name if you've got an A and you've said A is some list with some objects in it. A points to the list object in memory and this object has all of your list methods in it. So like append and get item, which is when you get an item from the list by indexing it. And then it also has pointers to all of the list contents. So when you have a list, it automatically has pointers within it if it has any contents. And so because of that, we're going to be using lists in quite a lot of the examples to see how pointers behave. So one behavior that you might often see and can often trip a lot of beginners up when they start using Python is something called pointer aliasing. And this is the phenomenon when you change one variable and another one changes and you didn't intend to do that. And we're going to see an example of that happening here. I have got a list. I've got my list A and it has some strings in it, my cool list. We've defined it and we've got the interpreter to print it back out to us. And I want to make a copy of this and make some changes. So I'm going to set B equals A. And now I want B to be my awesome list, not my cool list. So I just change the variable, the value of the second item in this list. And I set that to be awesome instead of cool. And so we get the interpreter to print us out our list B and we can see that it's changed. Fabulous. This is what we expect. But let's see what happens when we print out A. A has also changed. And the reason this is is because when we set B equals to A, we didn't actually make a copy of that list object. We just made a new pointer to it. And so when we access that list object through the point of B, it's the same list object that A points at. So we're actually changing the same object that's just got two different names. So what if we didn't want to do that? Well, you could use the copy method of a list and I'm going to make a different copy. And instead of just setting it equal to A, I'm going to make it be equal to A copy. And now I want this one to be my amazing list instead of my awesome list. And if we do exactly the same thing again, we just changed the value of the second list of the object in the list. And we can see that that has happened as we expect in our new list. We can see that it didn't change A. This is the behavior that we wanted. This is how you get the behavior of making a copy of a list without changing the original. And this is all well and good. But the reason that this works is because when we actually changed awesome to amazing, we simply replaced the string. Strings aren't mutable in Python. So what happened here was that within that list object, we got rid of the awesome pointer and replaced it with an amazing pointer. But what if we have pointers inside our pointers? What if we have a list that has a list inside it? So that's exactly what we're going to do here. We've got a list A. And you can see there are double square brackets here, meaning that this is a list with one item in it. And that item is itself a list with two objects, Alex and Beth. So we're going to do exactly the same thing again. We're going to say B is equal to A copy. And so this is the behavior where we're not going to change the original list object. But now what we're going to do is we're not going to replace that first object. We're going to mutate it because the object inside our list, the first item, is itself a list and it's mutable. And so we're going to change that object in place and we're going to add Charlie to the list inside our list. And you can see that this is exactly how we expect it when we access B naught again, the first object in our copied list. But it also has changed the list within A. So just copy isn't enough if you've got more than one layer of nested pointers. So what if it's pointers all the way down? What if I wanted to make a real copy of my list within a list and have it not change the original object? Well, you can do something called deep copy. There is a copy module in Python and it's got this method called deep copy. And what this does is it copies pointers all the way down. So we're going to try again. We're going to make another list and we're going to use deep copy to copy our list within a list. And now we're going to try and append Dan to our list of names and it works exactly as we expect in our new list. And when we check A again, we can see that it didn't append Dan. And this is the behavior that you want if you want to completely copy a list that has multiple layers of nested pointers and not mutate the original. And I've got some diagrams to explain exactly what's going on here because it's a little bit abstract. So when we have copy, when we have equals, if I set B equals A, here's what's happening. I have A, I have its original object in memory and the strings that were pointed to the strings or lists that were pointed to by that original list. So in this case that we just looked at that list, that object that is being pointed to is another list. So if B equals A, you can see it just points at the original object. And then when you mutate the original object, you'll mutate it when it's asked, it will be that change will be reflected under the original name as well. If we do copy, what we're doing is we're making a new list object with its own set of append methods and get item methods and all of that stuff. But the things it points to underneath are still the same. So this is why when we did A copy and we mutated that list, you're still mutating that same orange object. And that means that when you access it through A, those changes will be reflected there because you've got another layer of pointers. But so that's what happens when you make copy. And then finally, this is what happens when you do deep copy. It actually recreates everything all the way down and only showed two layers of pointers. But no matter how many layers you have things pointing to things pointing to things, deep copy will create an entirely new instance of all of those things in memory. And so I can do whatever I like to be now. It will never affect A. So that's the difference between all of these different ways of making copies of objects in Python and depending on the situation, you may want one of these behaviors, not the other, it might not matter. And if you are really memory constrained, if you're working in a situation where you don't have a lot of spare memory, while deep copy gives you a completely independent set of objects, you might not have enough memory to do that. So you might decide that it's better to actually have them point at the same thing and just be really careful about the changes that you make. So that's how that's some pointer A listing and how to avoid unwanted behaviors with it. So we're also going to see an instance of tuples behaving badly, some unexpected behavior in Python owing to the way that it handles pointers and mutability. So tuple A, it's like a list, but it's immutable, which means that when you instantiate it, when you give it the objects that are in that tuple, those things cannot change. So let's say we've got a tuple A, its first element must point at the same object during the lifetime of A, that pointer cannot change. But the thing that it points to could be mutable, like a list. So what if we had a tuple that had a list inside it? And you've got orange, I've got the round brackets there are orange to just highlight that this is a tuple, not a list. And so we've got, yeah, we've got this tuple, it's got a list inside it, we print out that element, it's a list. Now, if I want to mutate that object in place, I can do that if I want to, because I'm not changing what the thing points to, I'm changing what the things pointers point to. So I can mutate this object in place, I haven't changed where that pointer points, just what it points at. So that's all fine. But what if there's another way to do appending to a list, right? You can use the plus equals operator. But this gives us an error. And after a little bit of thought, this makes total sense, right? You can't assign to objects in a tuple, you can't do a naught equals something when it's when it's a tuple, because tuples are immutable, you cannot change them once they have been instantiated. So that's totally fine. Actually thinking about it, this is what we expect. Except if I now get the interpreter to print me out the value of a naught, we can see that that five is actually there. Even though it threw us an error, it's still done the thing we wanted it to do. That's a bit weird, right? And here's why. The plus equals operator first mutates in place just like we did with append, and then does an assignment of that new list to that value in the tuple. And mutation is fine, we can do that no problem. But assignment we can't do if it's a tuple. So the interpreter gets, it throws an error even though it's done the thing that we wanted because it did the thing that we wanted and then tried to do something that it was illegal. So a bit of unintended or unexpected behavior in Python when you're trying to assign to tuples there. Right. I talked about that tuples have to be, they're immutable for the lifetime of that object. Like so long as our tuple exists, oh sorry, sorry, scratch all that. Going back to making copies of things, how can we know when two objects are really the same? So we did a thing where we did B equals A and then we did C equals A copy. Are these the same? In what ways are they the same? You can find out the ID of an object in Python, there's a built-in method called the ID. And this is a function that will give you a unique value for every X in memory. The ID of it is unique and it is constant for the lifetime of that object. So once that object doesn't exist anymore, that ID that it used to have is freed up and potentially could be used for another object later. So what does this mean in terms of equality? So many Python implementations uses the object's address in memory as its ID, but not all. So for example, C Python uses the memory address. Physically where is this object stored in memory? Or I guess depending on how many levels of virtualization you want, but it uses the memory address of the object as its unique constant ID. But Sculpt, which is a Python to JavaScript compiler, actually just generates some caches a random number. So you cannot necessarily rely on the address in memory being equal to the ID. We're mostly going to be focusing on C Python during this talk and a lot of people primarily use C Python, so it's useful to know that, but it's also useful to bear in mind that it's not universal. So we have a list again. And I've called the ID function on it to get a big long number. Now, if you do program and C at all, you might be more familiar with this if it were in hex, because C normally prints out its pointers, the value of its pointers in hex. Or in C, pointers are the address of the object in memory. So that's kind of the connection between the ID and pointers. So we can see that the ID of A is just this big long number. And if I say B is equal to A and I print out their IDs, you can see that they're the same. And this is because B and A are both pointing at the same list object in memory. They are both pointing. They both refer to the same object. But if we do a copy, you can see that those two IDs are now different. C is actually a different list object than A, even though they point at the same things underneath. So when can we tell if two objects are actually the same? Well, there are a couple of different ways of defining equality in Python. So we're going to have the same setup again where we've got a list and we set one to be equals and one to be a copy. And we're going to look at some truth conditions about their equality. So A is double equals to B. That's true. And A is B is also true. But A is double equal to C is true, but A is C is not true. So what's the difference here? You might expect that these two comparators are actually doing the same thing, but they're not. And here's what's going on under the hood. Is uses the ID. So saying A is B is directly equivalent to saying that their two IDs are the same. So and the double equals comparator uses the double underscore equals method. Double underscore methods are also called Dunder methods or magic methods. I'm going to be calling them Dunder methods for the rest of this talk. So double equals uses Dunder equals as its method for defining whether or not it is true. So what is this Dunder method? Well, you might already be familiar with quite a few Dunder methods such as Dunder str, which determines what happens when the str built in gets called on an object. Dunder wrapper, which is does a very similar thing, but in different contexts, and of course, in it. So this is a method, the double underscore equals method defines the behavior of the double equals operator when it's applied to instances of the class that that method is defined on. So we can write our own if we like. I've written a class here and I've defined an equals method on it, a Dunder equals method on it. And all I've done is I've said return self is other. So we're actually just delegating to the other kind of equality that is. This is saying that one is double equals to the other if its IDs are the same. This is actually the default method. This is the default behavior for any user defined class. If you don't define a Dunder equals method yourself, this is what's going on under the hood. But we could also define something completely different. I've got one, I'm defining a class here that it has a name so we can tell our instances apart. And for its Dunder equals method, I've just said return true like indiscriminately return true no matter what's going on. And you might think, okay, like, I'm sure you can do that. Let's see some of the behavior that comes up with this class. So I've got two instances of this class. I've got one named A and one named B. Their names are different because one has named A and one has named B. They've got different attributes on them. But when I compare them using the double equals equality comparator, it returns true because it uses that Dunder method and we told that Dunder method to return true no matter what. Obviously, this isn't a great equality method. So let's see what happens if we do the opposite thing. What if we set it to always return false? So I've got a class here that's doing just that indiscriminately whenever this equals method is called, it will return false. And you might think that's great. Well, no class will ever be equal to a different class. That's what we want except for you get the behavior that A is not equal to itself. Because even when you're comparing two objects that are literally the same object, you're still using, you're still calling that Dunder equals method under the hood. And we told that to always return false. So you end up with a situation where A is not equal to itself. So as with all Dunder methods, with great power comes great responsibility to not do silly things with them. Otherwise, you can end up with silly behavior. So we talked about object lifetimes earlier and the idea is particularly relevant to this because it is only guaranteed to be unique and constant for the lifetime of an object. And the lifetime of an object refers to the length of time that that object exists in memory for Python, in Python's working memory. So what happens when an object is about to be removed from memory? It has another magic method, another Dunder method, DunderDell. And this is a method that is called when an object is about to be removed from memory. It doesn't actually do the removing, but it is like the method that gets called right before. And because it's a Dunder method, you can write your own if you like. I've got a class here that I've defined and we've given it name as well just like with the other one so that we can tell it apart from different instances that we're going to be using in examples. And in my DELL method, all I've done is I've said I want it to print out that it's about to be deleted. I want it to tell me that it's about to be wiped from memory. And we're going to use this to see some of the behavior of Cpython in particular when it is removing objects from memory. So Python frees memory in two ways. The first is reference counting and what references are pointers. So for each object, Python keeps track of how many pointers there are to it. So for example, when we had that list and we said A is our list and then we said B equals to A. Now we have two pointers to that same list of objects. That's two references. So once an object has no more references to it, there's no way to reach it. Nothing can get at it because there's no pointers pointing to that object in memory. Python goes, oh, we don't need this anymore and gets rid of it. There is another way to free memory in Python and that is the garbage collection or garbage collector. Implementation of this varies between implementations in Python. We will be looking at Cpythons later. And garbage collection handles the situations when reference counting isn't sufficient and we will see an example of that in just a moment. So let's see some reference counting in action. I've got Dave. He's an instance of that class that tells you when it's about to be deleted and I've deleted him. And as we can see, that Dell method was called because the output has printed out what we told from the Dell method. It's told us that Dave is about to be deleted. So we can see that we made this object. We have a pointer to him, Dave. And once we remove that pointer from the namespace, the object gets wiped from memory because there's no more references to it. So we can see an instance of this where we have two pointers to the same object. We have Alice and then we make another pointer to the same object, also Alice. And now if we delete the first Alice pointer, we can see that nothing gets printed out. That object hasn't had its Dell method called, otherwise we would see that print deleting Alice. We have to delete the second pointer too. But once we delete the second pointer, also Alice, you can see that the reference count has now dropped to zero and Alice has been wiped from memory. So what happens if you have objects that all refer to each other? So let's say, well, I think it's better if I just show you an example, essentially. Let's have, oh well, okay, how on? In order to understand what's going to go on here, we need to understand what's going on in our namespace. What pointers do we have in our namespace? So the way that we can actually see this is you can call this built-in function called globals.  And when we call it at the moment, we can see that my class is, we've got my Dell class available to us, essentially. I can call this, it's been defined in the namespace. And you can see is my class in globals? Yes, that is true. And the way that we're going to be seeing if something exists in the namespace at the moment, if there's a pointer to an object in the namespace is by doing this truth condition, like is this thing in our globals? Because that dot dot dot at the top of the slide there is actually there's a whole bunch of stuff that gets printed out when you do globals, which is why I've truncated the output here. Okay, so, psychic references are when you have objects that all pointed each other. And we're going to see an example of this. So we've got two instances of this class that I've instantiated, that's class that I've defined, that has a name and tells you when it's about to be deleted. We've got Jane and Bob. They are arbitrary Python objects, which means we can set arbitrary attributes on them. So I'm going to make them pointed each other. Bob has a friend and that's Jane. And Jane and Bob is also Jane's friend. So if we now look at for Jane in globals and Bob in globals, we can see that they both exist. They're both pointers that we have access to in the namespace. Now, if we delete Jane and Bob, we can see that they're not in the globals, they're not in the namespace anymore. But after deleting Jane and Bob, we didn't see that printout of saying that they were being deleted. And this is because even though the pointers from the outside Jane and Bob have gone, those references have gone, they each contain a reference to each other. And that means that the reference count for both of those objects has not fallen to zero. They have now become what is called a cyclic isolate. They form a cycle of objects all pointing in each other, a very small cycle, cycle of two, smallest you can have. And they are isolated because there are no pointers in the namespace that can now access those objects in memory. So reference counting isn't sufficient. Because if reference counting was all we had, those two objects would last in memory forever until you closed the interpreter. And if you had lots of such situations occurring, you could very quickly run out of memory. This is where garbage collection comes in. So we're going to be looking at CPython's garbage collector. And CPython's garbage collector is specifically designed to tackle the problem when you have cyclic isolates. And the way that it functions is it detects the cyclic isolates. And I'll talk a little bit about how it does that. It will call their finalizers, which is another word for Dunder Dell. And if all goes well at that point, it will break all the cyclic references. What it does is it goes to Jane, and it says Bob is no longer Jane's friend. And now we have no pointers to Jane. So Jane can be deleted. And once Jane is deleted, there's no pointers to Bob either. So in that way, it basically destroys the structure of the cyclic isolate, and then reference counting comes and mops up everything else. And we will see an example of that little asterisk where not all goes well when the finalizers are called. So the garbage collection module in CPython, you can import it. You can look at it. And the way that it works is it keeps track of objects that can have pointers in them.  However, lists are tracked by the garbage collector because they can point at things. Instances of user-created classes are always tracked by the garbage collector because they are arbitrary Python objects and then can arbitrarily point at whatever you like. So the garbage collector uses a traversal method to access all the pointers of an object. Every object in Python has a list of all the things that point at it. And you can actually look at this method in Python. I went and looked at how it's defined in C, and it's really interesting. But you can call it from Python with this GCGetReference method. So let's say we have a list, and it has some strings in it. And all the things that that list points at, you can see what this list points at by calling this method on it. And this is the way by which the garbage collector detects cyclic isolates, because by this method it can find situations where things form a cycle, things eventually get point back to where they started, and that they're not pointed to by anything outside of that cycle. So we're going to set up a cyclic isolate again. We're going to do exactly what we did before. We've got Jane and Bob, they're friends, and then we remove the external pointers from the namespace. And we're actually going to look at some diagrams to see what's happening here. So here is us instantiating those two objects. We've got Jane and we've got Bob. And then we make them point at each other. Then we delete both the external pointers. And now you can see it's a cyclic isolate. There's nothing around it. That's why there's no links to it from the namespace, but they do point at each other. So this is quite a nice way of visualizing the cyclic isolate. So what we can do in order to resolve the situation is we can just force the garbage collector to do its thing. So we import the garbage collector, and we call it's collect method. And you can see that it's printed out the output from the Dell method, which have now been called because the objects are about to be removed from memory. And it gives us a number, and that number is the number of objects that have been removed. You might think it would only be two because we've got Jane and Bob, but their names, the string names for them are also being deleted when they're deleted. So it's actually four. So now we're going to look at what happens if that step where all of the finalizers are called actually ruins something in the garbage collection process. So it is possible for a finalizer to make a cyclic isolate not isolated anymore. It's possible for a finalizer to create a pointer from outside the isolate into it. And therefore it's no longer a cyclic isolate and the garbage collector shouldn't really get rid of it because you might actually be wanting it still. So we're going to do that. We're going to instantiate a new class. We're going to define a new class called my bad Dell class. Still got a name. And what the Dell method does before printing that it's about to be delete the object, it sets a new global variable. It sets a new, it creates a new object in the global namespace. What was, what we can inspect by looking at that global function. And we're going to call it person. And we're going to set the object in question that's about to be deleted. We're going to set it equal to that. We're going to make that pointer, that person pointer point at it from outside the cyclic isolate. So what happens when we do the same thing we did before? We set up that cyclic isolate just as we did before, seen the slide before.  And what it does is it calls those finalizers, but it doesn't actually delete anything. And you can see that because it's printed out zero. It didn't delete Jane and Bob and their names. But it did print, it did run the finalizers. And it's worth noting here that Bob is the one that was run second. And we're just going to look into globals. And we can see that when we check globals, that person object is actually there now. That person object was created by Jane and Bob's finalizers. They're done to Dell methods. And so now we have it in our real namespace. So let's inspect this person object. We can see that the person's name is Bob. And this is because Bob's finalizer was the second one to be called. So that is Bob is the one who was most recently set, person most recently pointed at Bob. And we can see that person has a friend and that friend's name is Jane. So both person, which is Bob and the person's friend, which is Jane, those two objects are still alive in memory. They have been kept alive by this external pointer. Now, what do we do in this situation? We've got this cyclic isolate and we couldn't delete it with the garbage collector. What's going on? So here's what we did. I'm sorry for the interruption. I'm sorry for the interruption. We only have a couple of minutes left. And there's not. Yeah, no, I'm really close to wrapping up. Sure, thank you. Yeah, we're on the last three slides. Okay, here's what happened. We have the cyclic isolate, but when the Dell method of Bob was called, it created a new pointer from outside that cyclic isolate. And at this point, the garbage collector realizes this and goes, abort, abort mission. I will not delete these things. But there is a way out of this. And we're just checking here that Jane, the pointers that we had before, the pointers that we had to use to access are not in the globals anymore. We've deleted those. What we can do, of course, is we can delete that external pointer and run the garbage collection method again. And the key thing here is that an object's finalizer, it's done to now method, will only ever be called once. So we do not get into a repeating cycle where we have a cyclic isolate that keeps getting new pointers made to outside the namespace. Once a person has been created once by one of those finalizers, that person pointer can never be created again. So you see that it prints this out for, it deleted the objects, but it didn't run their finalizers again because we didn't get that deleting Jane, deleting Bob print out. And so this is some unusual behavior with the garbage collection and how it handles things and why pointers are important to understand how Python haunts its objects in memory. And I really am done now. This has been pointers in my Python. I've been Eli Holdness. And thank you very much for having me. Thank you, Eli. We have a couple of questions if you would like to take. Yes, of course. So the first one is Python garbage collection has been a mystery for me. So many pointers and so much memory cleanup is required. How can we control it? Well, one thing you can do is just fire up your favorite interpreter and hopefully see Python. I'm not sure how the garbage collection module is implemented in other implementations of Python, but import GC and go to the documentation, have a look at what the methods are, play around with them. All of the code that I showed you in these slides and the slides will be available as well, you should be able to just do in your favorite interpreter and sort of see it in action. I am a real nerd about this stuff, so I love going through reading all the documentation. I actually looked at a lot of the Cpython implementation for like PyObj, which is the sort of generic object implementation in Python. Yeah, the documentation is really, really good for this stuff. And if you're interested, I would really encourage you to check it out. But also you can just import GC and have a play around with it and see what you can find. And if you find any really weird behaviors, do a call for us to talk about it. Sure, thank you. The next question is, what are some of the methods which are used apart from reference counting for garbage collection? Sorry, can you say that again? What are some of the methods which are used apart from reference counting for garbage collection? So I'm not, I don't actually know. I mean, so the garbage collector is specifically for the situations when reference counting isn't sufficient. And if I remember correctly, I think there is noise about in 3.10 or 3.11, Python is going to move to, is going to drop reference counting as a method for memory management. But I actually don't know. I know that other languages do other really clever things.  For example, C, you are responsible for freeing all the memory that you use.  Yeah, I really only know about Python in this case, I'm afraid. And Python is reference counting and then the garbage collector.


My shiny bachelor's degree holds a secret. Graduating from college isn't impressive. It's embarrassingly easy. Because I'm smart, but because the standards are so low.  And after talking to hundreds of other students and professors, I don't think my experience was unique. Here's my story. I went to Alfred University in upstate New York. It's your standard small liberal arts school. My degree was in political science. So lest you think this story is unique to Alfred, since graduating my job has given me the opportunity to speak with tons of other students and professors from around the country and the vast majority of students have shared similar stories. The first four semesters of my college life, I didn't really care about my grades. I started college young and it never really occurred to me that I should try to get A's. My goal was just to pass classes without working too hard. But when junior year started, I had a girlfriend at the time who was a dedicated student and she was getting all straight A's. That seemed like a good idea, so I too committed myself to getting A's in every class. At the time I thought I was entering a new realm filled with academic elite. I expected intellectual camaraderie with students and rigorous debates with professors. Ideas would be passionately challenged and defended. It was a romantic vision. And it was horribly wrong. Instead I found a realm of lazy students and disinterested professors. My peers were far more interested in partying than ideas. And their vision of academic success was to allot the maximum amount of time to socializing while still passing class. And they accomplished this by mastering the fine art of academic regurgitation. What is academic regurgitation, you ask? What's simple, write whatever the professor wants to hear and how he wants to hear it. You don't have to ideologically agree with the professor, rather there's a standard format for communicating that you've done the homework and read the assignments. It doesn't really matter if you understand the material, nor does it take much intellectual effort. Of course, communicating that you've done the homework is quite different from actually doing the homework. It wasn't long before I too became a master regurgitant. With a few exceptions, there was no reason to put serious effort into academic work if you were already getting high marks. The vast majority of students who didn't even bother regurgitating did no assigned work at all, so we usually ended up going over old material every day. This punished any student who actually did the assignments beforehand. So rather than sit through a lecture that repeated everything we were supposed to read, I'd usually skim over the assignments before class, picking out the key ideas which I thought would come up. That way I could raise my hand and answer questions and act like I did the homework thoroughly. I practice this skill so often that I eventually could parse through several dozen pages of material in a matter of minutes. Now that sounds impressive, it's only because I understood it as more of a science than an art. All those stimulating conversations that I had hoped for never materialized. The intellectual challenge and debate with my peers was non-existent. I knew the quality of my work, my effort declined, but my grade didn't show it. I even got in trouble with the Alfred administration, later completely exonerated, which is a ridiculous story for another time. My romantic vision of academia died, and it only took about a semester. I spent a semester in Washington DC at American University and I remember taking this Russian history class. The teacher couldn't resist incorporating Michelle Foucault into her classes. I can still hear her Brooklyn accent talking about power structures, or as she put it, power structures. So what does an A-seeking student do when asked to write every week about Russian history? Channel Foucault, of course, and incorporate vague, abstract connections into your writing. And she ate it up. It was a running joke to see how much nonsense and fluff I could get away with and still receive full credit. I got an A in that class. And what did I learn? That couldn't tell you. Something about Russian culture being ambivalent towards authoritarianism. Or how about the class on meditation and relaxation? The professors didn't want to stress anyone out over their grades because that would be too ironic. So they ended up giving everybody an A. It didn't really matter if you showed up, though I did. But because you were practically guaranteed of getting an A from the start, students were literally permitted to fall asleep in class. They were certainly relaxed while they were unconscious. Or what about my English class called fiction into film? Liberal arts education insists that you get a wide range of different classes, and it was the same story in each. Lazy, uninterested students being taught by dispassionate professors. In that class, we would read a book and then watch the corresponding film adaptation. Then naturally, as college students, we would write. Our assignments usually required us to create abstract interpretations of the material, and students were eager to write about all the sexual overtones and everything. Any whimsical interpretation went completely unchallenged, because after all, literary interpretation is subjective. If a student feels like Snow White is actually about sadomasochism, well who's the professor to disagree? There was no critical thinking, nothing but regurgitating the plotline so that the professor knew we read the book. Then writing some fluffy nonsense about grandiose interpretations and personal feelings. And that exercise was supposed to strengthen my college education. As if creating some wild meta-narrative and writing down my feelings were an employable skill. Of course, I enjoyed reading many of these books, they were really good, but I don't need to pay tens of thousands of dollars to a university for good book recommendations. And if I didn't need a university to recommend books, I certainly didn't need them to teach me all of the deep insights from mandatory PE class. I spent thousands of dollars learning the rules of golf and then smacking some golf balls into a field three times a week. Not only did it cost thousands, but I got academic credit for it. As in, that work counted towards my illustrious bachelor's degree. Though it might sound silly, I was actually getting a bit discouraged to get these good grades with the amount of work that I was putting into college. It just seemed wrong. It only makes sense in one scenario. I must have been graded in relation to my peers. With only a handful of exceptions, every student was uninterested in learning. They were focused on socializing and partying. And Alfred has no reputation of being a party school, quite the opposite. While I was a lazy student, compared to my peers, I was a bookworm. No class contained more than a fraction of interested students and professors had to teach to the middle. And of course the middle, by any absolute metric, was scraping the bottom. My fellow students put a tiny amount of work into their educations and yet many of them received respectable grades. I remember being perplexed by my professors telling me that I was a good writer. Then I read some of my peers' writing. It was abysmal, horrible, terrible, shockingly bad. Not just grammatically, but in terms of coherence. Conceptual word salad was the norm interspersed with big words. So by contrast, I understood why professors would look at my mediocre writing as excellent. Of course, being in the political science department, our classes weren't graced by a large number of athletes. Any class that was heavily populated by school athletes was in an even sorrier situation. Alfred had a reasonably good sports team for being such a small school and you could tell the administration wanted to keep them around. You could also tell that their expertise was running into each other at high velocity. Now let me be clear, there is nothing wrong with sports at all. But when an institution of higher learning conflates academic merit with athletic merit, there's a problem. I knew students who graduated without being able to write or think past a middle school level. They masqueraded as educated students because they were wonderfully capable athletes, which made the administration a lot of money. With such illustrious peers, group projects were a catch-22. Either I would have to do everybody else's work to get a good grade, or I would end up trusting my peers to do their job and get a bad grade because they were all but guaranteed to half-ass their work. Now I must give credit where credit is due. I probably had three good classes in which I learned a lot and I felt like the classes were positive. One was in class on logic, the other two were about political theory. But three classes over the span of four years isn't exactly worth the time or the money. By far, the most valuable experience I had in college was meeting my wife. We met in the last semester and I would endure another hundred years in school if I knew that I would end up marrying such a wonderful person. Now none of this, as scathing as it might sound, has even mentioned the actual quality of what was taught. It would be impossible to quantify the amount of nonsense and error that I was taught over those four years. The content was biased and wrong. For example, anytime we were talking about economics in our class, nobody, not even the professor, had a clue what they were talking about. I don't say this out of hubris. The one economics professor on campus did not have a basic understanding of economic principles and he has a PhD, so I can't entirely blame the students given that their professors have such a lack of understanding. So I was often that guy in class, frequently raising my hand to challenge and correct my professors and peers. So needless to say, I wasn't exactly the class darling. Students had no trouble dismissing my arguments by virtue of the fact that I disagreed with the professor. They were used to treating their statements of opinion as reasoned argument. Rarely did students have any open-minded debate with each other. They were too busy nodding in agreement about how smart they were and how much they agreed with the professor. So in short, I must confess to all of my future employers and readers, my college education was a joke. My degree means a little more than I am patient enough to find a way to live through four years of educational farce. And the really perverted thing is this, my degree has likely helped me land a job. Liberal arts education might be worthless in terms of accuracy or the use value of the curriculum, but unfortunately it still means something to future employers. I just hope they don't read this post. Thank you for watching.


So it is my daughter's fourth birthday. Say hi Ember We are on vacation in North Carolina.  It's it's super tux racer or at least tux racer And it is the same game that my daughter plays at home, but in an arcade form With right and left paddles, so we're gonna give this a try sure it is a game that We could play for free at home anytime we want but the fact that it's in arcade to see free software like this Being used to commercial use in a scenario like this is just great So let's go ahead and play a little bit We just played tux racer and we swallowed lots of fish and we got lots of tickets all that playing at home has paid off So it cost me a dollar to play a game I play free at home, but I don't get tickets at home


Good job, good problem solving. Hey, Quinn, you can see what Jacob wants. Excellent, keep going. You're writing, let Miles. Why don't you let Miles fill the 10 frame? Excellent. Okay, who's filling? Who's filling? Okay, if she's writing, you're filling. Excellent job. Beautiful job filling those 10 frames with red. Now, Bianca, tell your partner how many. Did you just roll? Okay, so you need to roll. And then tell Miles how many goes under. Six. All right, now. How many counters did you put? Good. So now you're adding some to the size. Read it for me. Ten plus six. Good. I did you count it. What did you do to count it? Did you count it the long way or did you count it the short way? You're going to show me. You're going to show me. I know. Good job. I know it was 16 too. I'm going to have to count.


So I've done Defender here in Latvia 2015 and 2016 when the battalion came over as a composite unit from all the different batteries we all came together formed our battery work together to provide accurate and timely support for the exercise both both times are excellent experience with our NATO partners I mean to teach them coach them on how to call for fire and you know fire commands all the all the different aspects of fuel or artillery that they would potentially need to call on us for supporting the exercise which is where we'll be supporting maneuver commanders right with with accurate and timely fires two seven four eight six two seven three six four five five whether that be smoke whether that be um you know illumination so they can see whether that be a sheet to support their exercise because they've identified enemy position um we will we will be prepared to provide it it's good for for us and the soldiers here because they got experience working with our NATO partners as well


The following is a presentation of TFNN, the morning market kickoff with your host Tommy O'Brien. Good morning everybody, I'm Tommy O'Brien, coming to you live from TFNN, 9.06 a.m. Tuesday morning. We got 24 minutes to go until the start of trading. We have markets in positive territory. All the market's trading lower into the lows last night, but since about 3 a.m. Eastern time, you've caught quite a bit. You had the S&P's down there at about 43.20. How about adding about 40 S&P points to that price level? We're positive by 8 points, so you're about 32 points in the red overnight. That price point was at about 9 o'clock. We were at that price point at about 3 o'clock in the morning. Things accelerate higher. We're positive coming into the open right now. NASDAQ 100, you were down at a price point overnight. You're talking about a low of 14,586. You're approaching 200 points to the upside from there. You got the Dow, positive by 41 points. The Dow had been approaching 34,100, made it to 34,125, so the Dow's caught a bit to the tune of 300 points off the overnight lows, and the Russell was in volatility. Down to 21.95, you've gained more than a percent. From the bottom there, you're up at 22.18 right now in the Russell. Gotta jump to Bitcoin. Quite the acceleration to higher prices. We saw a price of 58,355 yesterday. We're just off that mark at 57,705 in the price of Bitcoin. Why not? Let's jump over to Ethereum as well. Since the cryptos are rocking, Ethereum makes it up to 3,700 on Friday. We're trading at 3,455. Crude contract back under $80, a little bit of an acceleration this morning, 745. You were above 81 bucks. Look at this drop off right now, 79.50. I wonder if this has to do with, we just got a little IMF update in terms of pairing their estimates for growth. Maybe that's hitting the oil market 79.54 down from 80.20, down from 81 bucks in the 7 o'clock hour this morning. Natural gas. Continuing to slide a bit, check out this natural gas contract on a daily. You're up to 646. What's that? Almost a week ago. We're currently trading at 522 right now. We're down at about 2% in natural gas. Gold catching a little bit of a bid up about 6 bucks this morning. Gold trading at 17.62. You see the volatility on gold even in the last hour. We jumped to notes and bonds right now. We're getting a little bit of a higher price and lower yield. You have the 10-year right now trading positive 7 ticks. We're sitting right at about 1.6% the yield on the 10-year. You got the 30 or up 24 ticks, a little bit of a reversal of the action we had yesterday. We'll jump over to the volatility index with the VIX right now, trading at 1,945. Over in Europe, you've got markets in negative territory. The DAX is down 4.10%, FTSE is down 4.10% as well. Cat Carole down about 4.10% as well. Over in Asia, negative as well. Nike down almost a percent. Shanghai down 1.2% and Hangsang down 1.4%. All the major indexes in China and Korea falling at least 1% as oil prices continue to rise with the headline, but getting a little bit of a reversal in the last hour or so on that crude price. Let's jump back to crude because continuing to drop worth $79.59. As I said, we were just sitting at above 81 bucks coming into the 8 o'clock AM hour. All right. Jumping around what we have going on, we'll jump to that IMF as they cut the global growth forecast, citing supply disruptions and the pandemic is how they put it, excuse me. So there's the headline out this morning just as I was coming onto the program. IMF cuts its global growth forecast, citing supply disruptions. We'll be talking to Kevin Hinks coming up after this break on their program Fast Market yesterday. They were talking a little bit. New and Eastern time every day, folks. They were talking a little bit. Kevin was talking about sometimes there are themes. Many times there are themes coming through an earnings season. What's the theme going to be as we start this earnings season off tomorrow really with the banks? J.P. Morgan, what's the theme going to be one of the themes possible? Kevin thinks we're going to talk to him about its supply disruptions and you're seeing it already with the IMF cutting it. Now it's a 0.1% cut. They expect the global GDP to grow by 5.9% this year, 5.9%. That's only 0.1 percentage points lower than its July estimate. For the next year, the IMF has kept its global growth production at 4.9%, so you trim it from 6 to 5.9. You keep next year's at 4.9 for all the gloom and doom out there. It doesn't seem to be that big of a cut, nonetheless, you have crude trading lower. You have markets actually taking up 43.62 in the US markets, that is at least. As I said, Europe in negative territory right now, Asia down almost a percent right now coming into trading. All right, let's jump around to other headlines I have up here. Why not? Let's jump over to Bank of America. Warning, the Fed won't rush to stock markets rescue this time. Interesting article out there this morning over on Bloomberg talking about the US Federal Reserve may not be so eager to rescue the stock market this time around and quoting two Bank of America strategists. You start pulling that free Kool-Aid away. The Fed may be less willing to so easily deviate from tapering plants and talk the market back up as during the last cycle. As reasons for their skepticism, they cite equity valuations and returns accelerating to extremes and increasingly real risk of inflation over shooting. You start seeing and we're seeing it already with the jobs number under 200,000, a slow clawback, maybe the market figure out that inflation is here, maybe supply shortages, right, wages increasing, causing earnings to decrease. That's going to hurt valuations of companies could send the stock market lower at a time when the Fed plans on tapering. But after six consecutive quarters of gains that have been driven by generous monetary and fiscal support momentum has been fading for the US and European equities in recent weeks, S&P down almost 4% from its record high reach last month, surging inflation, tapering fears, energy crisis, slowdown concerns. We just got an IMF cut and we're coming into an earning season that we could see some real problems with supply shortages and with rising costs in a big way FedEx last month really a wake up call as FedEx let's jump over because I talked about this stock a little bit yesterday and look at it.  Now pulling back the full run from the COVID lows, we'll call it. Now this is really May that started to accelerate. You're back at 219 since this thing gets anywhere near 186. That would be a great buy for FedEx. And you're talking about a solid 15% down from where you're at right now. But man, you just traded down an even $100 from the 319 high we had recently. You pull up UPS. UPS shares down from 219 to 181, kind of back to an area of support here that had been an area of resistance in the end of the year. Now what they were also talking about on Fast Market yesterday was a great conversation to Home Depot versus Lowes. They brought in like folio and they were just talking about the two of these companies. They were talking about trends. They were talking about trends in retail, whether self renovations, redoing your own home projects versus contractors, contractors up in terms of people using contractors. Maybe they kind of exhausted everything they could do at home over the last year and a half. They've now reached the jobs that they're just not up to, or maybe they have enough equity in their house where they're just willing to pay for a contractor to up the deal there. Home Depot, pretty close to the highs when you look at it. Low shares right up against that level as well as housing prices persist in a big way. Getting it 208, highs at 215, Home Depot just a few bucks off that price level as well. All right, as we come into 9.15 this morning, we get the S&P is continuing to catch a bit near the pre-market session highs right now. We're up 10 points at 43.61. As I said, we had market lows last night of 43.28. So you're talking about a solid 42 points off the lows of last evening. NASDAQ, 14,763. Stay tuned, folks. When we come back, we'll be talking to Kevin Hinks from TD Ameritrade Network Fast Market. We'll be right back. Everything in the universe is governed by the Fibonacci sequence. This mathematical principle is responsible for everything from the most aesthetically pleasing artwork to patterns in the stock market. To stay on top of stock patterns you can take advantage of, sign up for the Fibonacci 24-7 newsletter at tfnn.com. When you subscribe, you'll get a weekly report from Veteran Day Trader Larry Pezzavento on stocks you need to pay attention to, and you can trust Larry's analysis. After all, he's got 45 years' experience as a day trader. Larry will also provide daily charts, videos, and data on the key markets that he's tracking. Expect notifications from Larry on market movement you need to act on at any time. 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. Welcome to the Fibonacci 24-7 Newsletter today, tfnn.com, 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 TAS Profile Scanner is the premier market-profile-based scanner. Powered by its acclaimed TAS 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.  Level the playing field with the TAS 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 in 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.00 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. Welcome back, folks. We are the S&P, is positive by 9 points, trading at 43.60. We have a VIX right now, right under 20, jumping over to the volatility index, 19.41. We were approaching 21 last night when you had the market near session, pre-market session lows at about 3 a.m. Eastern time. Now, you take a look at this S&P. They don't look like the huge moves that they actually are because of the moves that we've had.  You're at 42.80. You climb up 140 S&P points to 44.20. You then trade down 100 S&P points to 43.20. We've got a bit of about 40. Evens from where we were yesterday, folks. You trade from a price level highs yesterday, about 10 a.m. 44.07. You trade down, yeah, 87 points almost to last night. We have a 40-point bounce. We have moves in both directions going in this market, folks. Let's jump over to our man, Kevin Hicks. Every trading day, folks, noon Eastern time. Fast market. Kevin Hicks, Tom White on the TD Ameritrade Network, walking you through the day's market action, setting up hypothetical trades in this market, talking about defined risk, talking about coming into earnings. Kevin, what are we looking for? I heard you yesterday. What's going to be the theme? Sometimes there's themes. We're looking for themes in this earnings season, kicking it off. What are we looking for for a theme this season, Kevin? Well, I think the theme for this earnings season is going to be the cops. It's going to be several things. It's going to be that the original problem will be cops till last year. That will make earnings not as sexy as they were in quarters past. But after that, it'll be labor shortage. It'll be supply chain. And that'll be the theme. That'll be the drum that the CEOs are pounding when they're doing their conference calls. And that any problems with their earnings per share or revenue will all be brought back to supply chain and logistics and labor shortages and inability to get workers in at some of these places. Tommy. I put you on the spot a little bit. It's a million dollar question, but I love the show you guys were doing yesterday and just the way you were talking about, we're coming into the season. Banks have one expectation, probably pretty lofty expectations with the way they've traded recently with what we've happened and with yields. But then you get into further in the season. And I think we're all kind of aware and we'll see how it plays out that we have some real headwinds in terms of just like you brought up, man, supply chains, wages. We have an IMF cut this morning, pretty marginal cut of 0.1%. And they keep next year's number in there. But a cut nonetheless, talking about the same fact as you're talking about. I also love when you were talking about Home Depot and Lowe's, Kevin, if those that didn't check out the program yesterday, could you give them a little bit take because I pulled up both companies. Remarkable how close they both are to the highs right now, Kevin. Home Depot and Lowe's, you guys had a great segment yesterday talking about professional versus kind of the retail Home Depot versus Lowe's. Can you talk a little bit about what you guys were talking about yesterday on the show? What we did with Home Depot and Lowe's yesterday was really compared to two and why even though Lowe's has done a great job of closing the gap with Home Depot, Home Depot used to be the clear leader in this space, even though, you know, those two were battling it out. Home Depot was clearly the winner. But their Home Depot and how they have embraced professional contractors and having their own entry and exit for them and how they've embraced that part of you know, being that hardware store for the local community and how what they've done, even though full disclosure, Marvin Ellison, the CEO of Lowe's is a Home Depot alumni. So he's doing a great job at replicating and you see the charts on both stocks that we put up on the screen. They are identical even though they traded different prices. So these are two companies doing very similar things, both doing extremely well. Home Depot doing slightly better just because they're bigger and better and you know, they've been doing this a little bit longer. And so they're clearly the leader in this industry. But Lowe's is certainly a worthy competitor to them as they work through this, you know, Lowe's focusing on more of the retail Home Depot, a more complete package of retail and professional labor. Tommy. I think it was cool how you laid out and I forget whether it was you or Tom, but just talking about you know, people in that industry in particular, the professional side of things that Home Depot has a nice advantage in. And some of the trends like Folio was talking about you guys were saying maybe contractors are more in maybe over the last year and a half, Kevin, it just makes sense in my own head that people have kind of exhausted what you might be able to do from home and maybe now you're transitioning to maybe you need a little help on a contractor side, maybe you have enough equity in your house at this point that you don't mind putting a little bit of capital back into it.  It really has to be worth it, right? Because it takes a lot of effort.  It was just a cool conversation as you guys brought that home. And I think it was Tom that mentioned maybe the tougher one is saying where both of these stocks end up year end versus where one or two of them, because both of them trading so well. We have rising yields. We got a real estate market staying strong though. We'll move from yesterday to today. We got bank earnings starting next tomorrow really with JP Morgan as they line things up. What are you guys going to be talking about on the program coming up at 12 today, Kevin? Well, of course, we're talking about JP Morgan in the first segment. And then we look at Delta Airlines, also has earnings in the second segment. Like folio, we'll talk about the airlines and we'll cover Delta Airlines. And then we'll look at Airbnb. They just got upgraded. We're going to take a look at them as vacation season is getting underway here, Tommy. As the weather gets cold in the Midwest, you know what we're thinking? Get out of here and get in South, Tommy. You know what's crazy, Kevin? I think I remember you guys talking Airbnb all the way back two months ago for their earnings. I think you guys had a bullish trade on some point, man. It kind of put it on my radar a little bit. No real trade, but this thing's been on quite a little tear from 130 up to 166 in Delta. The airline's always interesting. I was talking to my dad, I think it was yesterday, just saying, you know, the airlines, the cruise ships, you know, when is kind of the Max Payne situation going to end? And then of course we got a weekend like we just got with Southwest. They're not out of the woods just yet, it just seems. Well, Kevin, man, we appreciate the conversation. As always, we look forward to the show today at 12. We'll be watching. Thanks for having me on, Tommy. Have a great day. You too, Kevin. Take care. Folks, check it out. Every trading day, 12 noon Eastern time, fast market. Kevin Hicks, Tom White, they do an outstanding show and we're coming into the most wonderful time of the year, earning season. So check it out. 12 noon Eastern time. All right, markets, as we got about four minutes to go until the opening bell, right near pre-market session eyes, we get the S&P up about 11 points. The NASDAQ right now up 62. All the markets well off the lows we had last night. We jumped to Crude 8080. Look at this volatility in that crew contract. You want some volatility in both directions, folks. Crude just traded from 8115 down to 7950. So what are you talking about? Yeah, we're talking about a buck 65. And now we're up more than a dollar in both directions. Watch out. All right, folks, stay tuned. We'll be coming back. We'll take a quick break. We'll be coming back for the opening bell. We'll check out what's moving today. We'll be right back in three minutes. Stay tuned. and ideas. Join the den and surround yourself with these sharpest minds in the trading world. Subscribers to the Tigers then are also the first to have their questions answered live on air and can privately chat with our TFN and host 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 Tigers then risk free with our 30 day money back guarantee and become part of the TFN and trading community TFN and 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 TFN and Tiger TV and get expert investing advice to give you the power to control your financial future. Go to TFN.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. TFN also features trading services with a 30 day money back guarantee for new subscribers as well as TFN and Tiger then trading room, trading software and educational webinars for all trading levels. And make sure you check out Tiger TV for free on TFN.com or TFN channel for live financial content from 8 30 a.m. to 4 p.m. Eastern on market days.  TFN educating investors. TFN is excited about our new software charting program, the art of timing the trade charts in collaboration with Tom O'Brien and using his best selling book, the art of timing the trade, your ultimate trading mastery system. David White has programmed an outstanding piece of software that will complement any trader's methodology. Using this first of its kind program, the art of timing the trade charts allows you to scan thousands of stocks for Fibonacci formation setups including guardleafs, ABCs, butterflies and much more. The art of timing the trade charts is designed to help you when scouring the markets for stocks just beginning to form the trading patterns that many investors spend days, weeks or even months searching to find. And right now we're offering licenses available at only $79 a month. We are so confident that you're going to love this new charting software that will even give you a 30 day unconditional money back guarantee. Don't miss out on this incredible new piece of software. Get your copy of the art of timing the trade charts today by visiting TFN.com. Welcome back folks. Well, we just had a bear market in crude for the better part of one hour where we traded from $81 down to $79.60 and just like that, we're back above $81 from Markable Research and she put it on a minute chart. I mean, look at this thing. From 9 o'clock this morning, it's a straight shot upward to the tune of a buck 50 to the upside from 9.09. It's only 9.30 folks in the last 21 minutes, crude up a buck 50. You're right back to where we were pre-market in crude. Markets open. S&P is giving back a few points of the gains right now. You have the S&P is positive by seven NASDAQ positive by 49. The Dow positive by about 12. All the markets may be sliding slightly to the red as we open Bitcoin holding steady at 57,655 right now. We covered crude checking out gold contract right now gold up $5 at 1760 gold quite the day Friday. We kind of just been chopping around where yesterday's action was in that gold contract and we jumped to notes and bonds as the market opens. We got the 10 year negative by four ticks, excuse me, positive by four ticks during 1.30, 31. All right, jumping around to what else we got going on. Southwest, we'll see what comes about in terms of where the real reality in terms of what happened here. Interesting though, how many flights they send through Florida was the one thing I wanted to bring up. Yeah, 950 flights canceled Saturday 1500 on Sunday. Where is my Florida statistic 50% of their flights touch Florida, which here it is the Dallas based carrier particularly hard hit because as much as 50% of its daily lines of flight or where the plane travels from the start of the day to the end touch Florida Southwest, big fans of the Sunshine State, I guess. Bad weather and traffic interruption in the area left Southwest with zero arrivals and departures in some cities for a time Friday. And the problem here is that once they're backed up, it's going to take some time to sort this out. You have pilots saying this has nothing to do with no work. Maybe staff shortages contributing to say the least I'd say, but nonetheless, let's pull up Southwest shares. LUV is their symbol. And down to 5075 last night, you're basically flat this morning with a positive market on the open. Let's check out some of the fang stocks as we open up the market. Amazon shares right now up about a 10% Microsoft shares down a 10% Apple shares down 10% as well. We jumped to Tesla always trading higher Tesla was just above 800 bucks right now you're up $6 up 810% at 798 Elon Musk now the richest man in the world. 220 billion something like that. Bezos is at 190. A big portion of that. The biggest portion obviously being in Tesla, but a big portion of Elon's wealth coming now from SpaceX with 100 billion market cap valuation. So interesting how that plays out. All right. Just give me one second. Excuse me. Okay. All right, let's jump down some of the other stocks are moving. Let's see where we go into the list. Here we go. Glaxo Smith Klein, they're on the positive after Bloomberg reported that the $54 billion consumer product unit is attracting bio interest from private equity firms. The market always likes when you sell off a portion of your assets for straight cash to the tune of 54 billion bucks. I would say it is far advanced with plans to separate the consumer business. Airbnb as Kevin was talking about they'll be talking about a little Airbnb coming up at noon Eastern time upgraded Airbnb to outperform from market performance saying the streets underestimating 2022 booking growth and that the increase in alternative lodging will be a permanent part of travel landscape Airbnb up in the positive. That'd be interesting as they have that conversation on fast market. Talk about adding to that up 4.6% back it up on the daily as I had said quite a run back from the 130 price point on July 19th when we get to a low of one 130 31 and we're trading right now at 174 84 and this is the part that I really try and wrap my head around in terms of the fundamental nature of where we go in this economy. We're really close to getting over this up folks we got vaccines coming from 5 year olds to 11 year olds right. You know I encourage everybody if you're not vaccinated to go out there and get vaccinated for yourself for the people around you what is going to happen because it's unfortunate because I have kids at home that don't have that option to get vaccinated. So I get frustrated when people say it's a personal choice because they don't have that choice right now once every child has that choice to get vaccinated. It is then going to be basically open season completely if I didn't have small kids around my house that aren't vaccinated. I would basically be living worry free because I'm vaccinated right the problem with not getting vaccinated there are people around that don't have that choice yet especially kids 11 and under once that comes which it is coming folks you're going to have 5 to 11 year olds coming down on the next month probably and then you're going to have kids probably 2 to 5 at some point many months after that as they make sure that they go over those studies as well. Being extra careful for the young kids which would make sense that they would be last studying that point being we are very close to those fears all subsiding at least locally in terms of domestically and hopefully in the next 6 to 12 months after we get over that whole hump domestically vaccines make it across the globe on a scale of travel stocks have been so hurt you're seeing every and be as we continue to talk up 5.1% right now. I mean cruises are going to become a thing again the term COVID cruise which I completely agree with right now I ain't going on any COVID cruise is just yet folks because the risk there especially with unvaccinated kids I wouldn't do it okay but even myself I don't want to get on a cruise but then there's an outbreak and I get stuck on that thing or something or I just don't want to be in a cruise where you're isolated with people and there's an outbreak to that degree don't want to do it yet need to see a little bit of an improvement which is why most people would say the same thing probably which is why cruises are well off where you've been but the next year or so that is going to turn the corner and once it does get me on a plane get me on a beach get me on a cruise get me in an Airbnb send me to the Caribbean send me to the slopes in Denver and so I think you're going to see that type of a resurgence later and you're seeing that type of resurgence in Airbnb and the world has changed when you talk about travel with a family myself I'm sure many of you are familiar going to a home I mean last October I think it was I was in in Airbnb now these are before vaccines we're expecting a child so I want to be extra careful coming in October of 2020 want to go away before the birth of our son in February so what do we do we went to an Airbnb we went to an Airbnb in a cabin in Tennessee but it was a beautiful experience you got a nice cabin a nice home anyway at a pretty affordable price the one thing that does really get out of hand there is the fees which is why you have the company a company like Airbnb once they collect all those fees they're talking about a valuation of 110 billion dollars that's the only thing to be careful on some of these equities you say yeah this thing is going to be a great equity of course they are but the market already knows they're going to be a great equity which is why they're valuing valuing valuing it at 110 billion dollar market cap let's jump around to some of those other airlines now we'll put it back to a daily for the last year there's a Airbnb off their double bottom there's a nice double bottom there Boeing shares I've talked about many times skipping around the bottom line of that channel line that it's been in from the lows it had on covid we check out delta airlines right now delta even from this last acceleration in september you pulled back to almost a 50 percent deltas up three tenths percent today let's look at jet blue domestically jet blue I mean look at these runs right you're right back to the 618 jet blue that might be a nice entry there you chopped around here back towards the end of 2020 the beginning of this year maybe up to 22 bucks almost you've chopped around at this 15 dollar and 11 cent price point yet again uh not a bad entry not a bad entry potentially you take a look at the three-year weekly of jet blue well off the highs this year and well off the highs that we came into covid last year as well stay tuned folks we'll be coming back are you in the market 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> or email us at tiger at tfnn.com that's<PHONE_NUMBER> 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 david delivers his weekly newsletters every friday with updates throughout the week you can get the technology insider at tfnn.com for only $37.50 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 will the s&p 500 continue to climb for bold trades on us large cap stocks in either direction trade spxl spu u or spxs directions daily s&p 500 bull and bear leveraged etfs direction leveraged etfs an investor should carefully consider a fund's investment objective risks charges and expenses before investing a fund's prospectus and summary prospectus contain this and other information about direction shares to obtain a fund's prospectus and summary prospectus call<PHONE_NUMBER> or visit direction investments dot com a fund's prospectus and 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 for 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 then hit watch tiger tv that's tfnn.com then hit watch tiger tv welcome back folks we get all the markets in positive territory right now speaking of positive territory check out the chart i got signet jeweler's up right now uh signet raising their outlook for the second time in recent history this chart my goodness you commit to covet as things blast up to 30 bucks early in 2020 you commit to covet it just under 30 bucks trade out down to five dollars uh not sure how the world thought that we weren't going to buy diamonds anymore but they have almost all the jewelry shops in the malls when you hear these names folks whether it's zales uh let's jump back to the story consumers are splurging on diamonds signet jeweler's just hiked its full year outlook yet again so they have k jeweler's shame on me not remembered k uh zales and jarrod got it jarrod also hiked the outlook um so they buy they're buying diamonds direct for almost a half billion dollars in cash signet which owns those chains also raise their outlook for the fiscal third quarter and for the year it's the second time they raised that outlook just in recent weeks uh big number there yeah and in a bid to reach younger shoppers an inch closer hitting annual revenue goal of nine billion dollars not a bad number when you talk about annual annual revenue they see third quarter revenue ranging between 1.42 and 1.45 how about up from 1.26 to 1.31 that's a massive upgrade on a percentage basis um you know they they might have been at 1.26 now the upper portions 1.45 that's almost an extra what 190 million extra in revenue over 90 days big time numbers uh for the year you're looking at revenue 7.04 to 7.19 an upgrade from the high sixes they had earlier remains on track to shutter more than 100 locations this year and open 100 primarily under its banter by piercing pagoda banner not familiar uh nonetheless quite a chart for signet you're up 1.1 percent today extending that but the market actually just turned on a dime just like that look at that sell-off s and p is now negative by two right now you get the tech stocks pulling back just get back a hundred points uh in about the last 10 minutes or so you get the dow trade and lower as well russell only index currently still in the green all right jumping around some of the equities the uh the other equities they're going to move in today we talked about signet nike they were higher let's see how they're trading they got an upgrade after goldman initiated coverage use me with a buy rating setting a healthy industry backdrop as well as strong growth initiatives by the athletic footwear and apparel maker now nike was dealing with some big problems there for supply on their last earnings still up 1.1 percent but they just gave back some of those gains you take a look at the daily and spent quite a slide for nike shares from 174 down to a little about 144 you get back 30 bucks just like that and really dropping off on those last earnings when they talk about having problems this market a little bit of weakness here to say the least fast and all out with their numbers uh matched estimates quarterly earnings 42 cents a share revenue in line continued to experience inflation related to materials and transportation costs are we seeing the beginning of a theme in earnings potentially fast and all up nine tenths percent right now but giving back some of those gains on on the open up to 53 57 we talked about southwest so they cancelled 10 percent of their plans yesterday uh cited bad weather in florida staffing issues for the higher level of cancellations they hope to normalize things by wednesday mgm got an upgrade to outperform from new neutral at credits west swiss which sets a price target for the resort's operator stock at 33 bucks a share let's see we're at right now now mgm it's interesting these companies uh there you go papa 6.2 percent what's going on here mgm uh outperform which set a price target why are they outperforming with 33 bucks do i have the right stock up here i should do if it's straight into 47 all right maybe they got a typo in here um credit swiss feels mgm has not been given enough credit by the market for its ongoing transfer of information if you've watched nfl football uh at all you've probably seen the ads for bet mgm i mean the betting world just is going to change things in a dramatic fashion disney's gonna license espn that's part of the reason why i like disney the sports uh aspect of what they cover i mean they almost don't have a monopoly on sports coverage imagine the espn you know sports book that you can bet on i imagine that's gonna have quite a draw in a big way jumping over to the next story tesla sold just over 56 000 vehicles made in charna during september the largest monthly total since it started production in shanghai two years ago they're up a bit square seems like they're always getting upgrades to overweight from neutral uh sites valuation strong growth prospects and a disruptive business model yeah these square paypal they are just through the roof man up 1.2 percent you check out this chart on a weekly you have a high of 289 so man you've clawed back some of this we have quite a consolidation going on you could see you got a consolidation between about 200 and 280 on this equity you're trading up today on that upgrade and moderna uh they are up 1 percent ahead of thursday's fda panel meeting now the company's application for booster shots you might have moderna and johnson and johnson boosters coming down the line uh shortly as well all right what else we got going on how about lg they're gonna have to pay almost two billion dollars to general motors uh over the bolt ev battery fires lg's agreed to reimburse gm up to 1.9 billion to recall the chevy bolt evs due to fire risk caused by faulty batteries provided by the south korean supplier i mean that's a big number but you've seen it they've been in the press recently um it's a tough deal uh these you know tesla has had to weigh it many times in terms of getting the press of these battery fires and uh unfortunately folks electric vehicles are coming down the line and these fires are a problem that are going to persist those electric batteries they go on fire you're not putting them out anytime soon maybe a little advance the technology for some safety there but that's going to be a problem and you're seeing it for lg i mean two billion dollars quite a price tag speaking of commodities aluminum notching a new 13-year high as supply fears predominate aluminum climbed to a fresh 13-year high as fields over supply curves outweighed concern that a deepening energy crisis would hurt growth the light may weight metal has surged as the global economic recovery boost demand will electricity crisis in asia and europe threatens to crimp supply commodities they were posted in the chart of the crb i guess i man jimmy in the den earlier just quite a run you want to talk about inflation he made a great point that's all you got to talk about folks commodities and you know if you ever hear politicians it was real invoke with president trump talking about you know wanting a weak dollar folks you can't always want a weak dollar because it allows you to compete internationally because what it all comes back to is commodities we're seeing it right now if if you have a trash currency and you live in an environment where commodities are through the roof you are going to pay up the nose in a big way because we all pay for goods i mean there's that there's been a transformation in the country when you look at near the world in terms of how currencies are used and you want a weak currency but in the long run a strong dollar a strong currency is what you need because it all comes down to goods and the goods get bought with your own dollar even if we're pushing it abroad you're just seeing it commodity so keep that in mind when you see an environment like this where we just see commodity prices through the roof i mean crude staying above 81 bucks 81 13 made it up to 82 this morning but quite a run and we get markets in negative prices we're coming in a bank earnings tomorrow jp morgan they'll be talking about that on fast market as well a little bit of a give back this week to start things off you see on a weekly basis last week we make a high 171 51 you give back six bucks just like that look at this two-day run yesterday we're up at 171 this morning we're 164 coming into their numbers tomorrow it pulled off the analyze tab not that big of a move three dollars and 21 cents priced into their numbers for earnings stay tuned folks we'll be coming back to finish up the show be right back 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 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 in 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 or $1,000 per 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 you want to make 1000 per year on 100,000 invested a 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> 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 welcome back folks just like that we got all the markets back in the green s and p's up by three we got a little bit of volatility in both directions as we come into earnings kicking things off tomorrow a great time for a webinar from our man basil Chapman basil coming up next to 10 o'clock with the tiger technicians hour he is going to be doing a webinar folks he's going to be talking about it coming up at 10 o'clock he'll tell you all about it coming up next hour but I encourage you to check it out what to prepare for into the year's end and what sectors to focus on basil will be in there with 90 minutes for subscribers to the opening call one week from today folks Tuesday october 19th four o'clock right after my dad's program from three till four basil with it will be in there with his opening call subscribers for 90 minutes that will be archived if you can't attend it if you've never been to one of basil's webinars before I encourage you to check it out also new subscribers get a 30 day money back guarantee so you got nothing to risk you get a month of his newsletter all right you get access to all the archive webinars he's done he's got like seven eight nine webinars that you gain access to right away as a subscriber you gain access to the webinar going on a week from today 90 minutes of course that's archived as well and going into that what basil says is you know you click this you can head on over to the newsletter you can sign up folks whether it's for a month for 149 six months for 695 that's 22% off or you can save 33% of the year if you're thinking about staying on I encourage you to check out the six months still comes with a 30 day money back guarantee so if you're thinking about staying on you can add the savings in there but what basil talks about here is send the questions into them basilchapman at tfnn.com if you're a subscriber out there you got special things you want to take a look at maybe you're wondering about the year end you have questions for basil to take a look at in this 90 minute webinar sign up send him the email he will talk about him during that webinar as his subscribers contribute to the content of that webinar going on a week from today folks check it out in the front page of tfnn for the open and call basilchapman coming up next all right folks we got markets how about flat nasdaq flat to the tick 14700 s and p's positive by four Russell catching a bid Russell now up 17 points eight tenths percent in the positive stay tuned folks we got our man Basil Chapman he's coming up next with the tiger technician tower fast market excuse me Larry Pezzamento at 11 fast market at 12 Steve Rhodes at one o'clock Dave White at two o'clock and Tom O'Brien my dad from three two four thanks so much for starting your day with me folks stay tuned basil's up next we'll be right back