how do you stay encouraged when you're posting on social media and you're not getting any responses? You've heard from me and from others that consistency is important. And so you know, yes, if I were consistent on a regular basis posting, I will probably eventually grow enough of an audience where I'll get some responses. But in the beginning, it is obviously can be discouraging if you post three times and you got no comments on any of them or even no likes on any of them. As you can imagine, I've been there because everybody starts, I didn't grow up famous. I didn't start on social media well known already. And so I had to start where many of you are starting. So the way I started, which the way probably a lot of us start is with our own Facebook friends and our Instagram friends, when you first start off, you're probably posting on your Facebook profile or your Instagram profile and you've added some friends and they're probably just encouraging you with a couple of likes. So that's probably, I can imagine that's probably already true for a lot of you. Does anybody here have zero friends on Facebook or Instagram? I don't think that's true. But if, let's say I'm just gonna use, let's say that you have zero friends, maybe you're starting a brand new Facebook account or Instagram account and you don't want your current friends to know about it for whatever reason and you're starting to scratch. Then basically I would go to the very next step of learning how to do Facebook ads and Instagram ads. I made that same experiment back in four years ago now actually I did a whole year where I wanted to experiment with how do I grow an audience without letting anybody know that it's me. So I started a Facebook business page, fan page that had nothing attached to my name and I didn't promote that page to my existing network. I wanted to say if I were only to use ads, could I grow an audience? And the answer was yes. I grew an audience of several hundred loyal readers on a regular basis commenting and liking my posts and they got to know me. Now I didn't continue the thing because I just wanted to run a short-term experiment to see if it was possible. And the answer is absolutely yes. If you learn how to run Facebook ads, Instagram ads you can absolutely build a loyal following of people interested in what you're saying. And then from there you can sell services and events and products that are interesting to them. So the simple answer is are you running ads? Because when I say ads I don't mean people don't know you and you're gonna try to sell them on your services. It doesn't really work that way for most of us. Most of us aren't selling commodities and mass produced items that are easy for random people to buy. We're not selling toilet paper or cereal, okay? Most of us are selling services like healing, counseling, coaching, mentoring. We're selling some kind of like person to person service and random people are not gonna buy it. No matter how good of a copywriter you are, no matter how great your branding is, it's gonna be very difficult for random people to buy your service. So what you need to do is when we run ads, we run it with, I call it the ministry of content. Now you are basically using ad dollars to share helpful useful information out there so that people can say, wow, I don't know this person but what they posted was uplifting or educational, inspiring in some way.  They didn't know you a month ago or three months ago but now they're seeing your ads regularly, your content regularly. They're like, ooh, yeah, now I like this person and I get this all the, of course, I still run Facebook, Instagram ads all the time. And I always constantly get people buying my courses or inquiring with my group coaching because and they, I said, how did you hear? I was like, oh, I saw you Facebook ad or Instagram ad and most of my ads are not buy my course. The most of my ad dollars are spent just here's a piece of the useful content with no call to action. Nothing, no, not even asking them to go to my website, nothing, but they just keep seeing my stuff over time. So that's the simple answer and beyond ads without spending money, collabs is the other way. Collabs are basically you getting together with somebody else who has an audience. Now, why, you know, and then having them interview you, but now I said, why would someone do that? Sometimes you pay them to do it because there are podcasts and YouTube channels and Facebook pages that take payment. But I'm thinking, well, instead of paying someone to do it, you just might as well run ads. Running ads guarantees you the metrics to be able to see are you reaching the right people. So I don't recommend paying for collabs. I recommend running ads first to build a little bit of an audience. And then you can use the fact that you have a hundred followers now or something like that to then collaborate with someone else with somewhere between 50 to 300 followers. Right, let's say something like that. And it's like, hey, I have a hundred followers. You have 150, it's close enough basically. Could we interview each other? And even if only 10 people watch each of our interviews, we don't have a huge audience, but that's 10 more people who wouldn't have found me. And when you do collabs, the audience is much more, it tends to be a higher quality audience than just running ads because ads is like they're seeing you randomly.  So use ads first, number one. And number two, now then go to collabs. Now, most of you already have some audience, right? Like I said, nobody starts with zero friends on Facebook or zero, yeah. So all of you start with like probably 200, a hundred friends to 300 friends on Facebook. You already start with some audience. So you can already start collabs today, right? You don't have to wait. But if you're building up a business page, a fan page, you're trying to get your friends over to your fan page, that's fine. You know, start building an audience with ads there and then you could do collab. So I hope this is helpful and let's continue the conversation from here. So I run three types of ads or ads on three platforms, Facebook, Instagram and LinkedIn. I run all three. And the LinkedIn ad thing is relatively new for me. I'm only like three months seriously into it and I'm really liking it. I see it as a great of a potential, if not greater than Facebook, Instagram ads. So I'm really, but it costs more money. Facebook, Instagrams are much cheaper. Facebook, Instagram ads are two to five times cheaper than LinkedIn ads. Like I said, Facebook, Instagram ads start with 30 a month. You can get somewhere with it. LinkedIn ads, you gotta start with like a hundred a month to start getting somewhere with it. So it's more expensive. However, when should you choose one over the other? Well, with LinkedIn ads, you would choose LinkedIn ads when you're very clear on what professions you're trying to reach. So people with a certain job title or people who are in certain LinkedIn groups, like those are easy to reach on. You can advertise to members of certain LinkedIn groups, meaning you go check out LinkedIn groups, there's thousands of them. And if you see a group with thousands of members, like that is the people in that group are my people, like people I'm trying to reach, then you could use LinkedIn ads to reach that group. That's actually one of the benefits you can't do on Facebook. You can't run ads to reach people within certain Facebook groups. You can run ads to reach Facebook interests, but not groups. Anyway, so I would say professional title or LinkedIn groups, if you're clear on that, then LinkedIn ads could be really beneficial for you.


A few weeks ago, I made a video about creating our very first GTK application using Haskell. And we created this very simple program, or I did, on camera. I created this very simple logout and shutdown menu here that only took about 30 minutes or so on camera to create this very simple program. All it is, it's this seven buttons here, these seven icons that perform various actions such as cancel, which exits out of the program, logout, which logs us out of our window manager, reboot, shutdown, suspend, hibernate, and lock, of course, as a screen locker. And this program, which I called bye-bye, again, we only spent about 30 minutes writing this thing. Let me show you the source code for it. Let me open up Doom Emacs and see if I can find bye-bye. This was the original version of it. Let me zoom way in here. And I tried to keep this program as simple as possible for those that don't know anything about either GTK or about Haskell. So I didn't really do anything complicated. I just showed you some of the standard GI-GTK commands, and the GI-GTK is a library in Haskell for the G object introspection bindings, the GTK bindings for Haskell. And of course, I purposely kept this simple again as a very first example for brand new users, right, for people that don't know any programming at all. But we're going to go a little deeper, because a lot of people that do know a little bit about programming immediately spotted that there's a lot of redundancy here, right? There's a lot of duplicated code. For example, I created all these labels. Do I really need to create these seven labels like this? Couldn't I just use some kind of for loop or a while loop of those familiar with things like bash scripting? Couldn't I, instead of creating each button one at a time with essentially the exact same settings minus the command they execute? Other than that, they're all basically the exact same settings. Couldn't I just write a function to take care of that? And of course I could. I could probably make the code for this program, which isn't a very long program. Again, it's a very simple application, 194 lines, and that's with comments because I wrote this in org mode. So it's about 194 lines. I could probably put it in 50 lines or less by reducing some of the duplicated lines in this program. So I think that's what we're going to do today. But before we get into that, again, assuming that you've been following along and you're kind of a brand new user, we should actually just start with the basics on how to create functions in general using Haskell. So I'm going to break it down in real simple terms. And one of the things I really want to focus on today is how to create recursive functions in Haskell. Because especially with these GTK applications, a lot of input output stuff, which your GTK applications are going to do a lot with input output with IO. Typically you're going to need some kind of looping mechanism for various things, not all the time. Certainly this bye-bye program that I wrote. We don't really need to fool with recursion in it, but many programs you're going to have to use recursion. And because of that, it's best to go ahead and start talking about that now. And for those that are not familiar with that term of recursive function or recursion, recursive function is a function that defines itself in terms of itself. Let me show you what I mean. So let me switch back over to my desktop here and I'm going to create a new file here. I'm going to call it Haskell, recursion.org. I'll make it an org document here and let me zoom in. And I'm going to go ahead and just create a source block here. And of course it needs to be Haskell. So a basic template for recursion would be some function, give it a name. I'll call this one Funk. And then you pass along some parameters. A lot of times with recursion you're working with a list. And typically the format for a list as an argument for a function is x colon x's, where x is the head. That's the very first item and x's is the rest of the list. Of course, these are variables that you could label anything. I could label it y colon y's. Typically though, you do want to keep it in the format of some letter and then colon some letter s because that's very easy to recognize that this is the head and this is the rest of the list, right? This is a and this is the rest of the a's, think of it in those terms. The colon is very important. That's the cons operator. It's basically taking the a value and prepending it to the rest of the a's. So that's why this is the head of the list, colon, and this is of course the tail of the list, the rest of the list. So I'm gonna put this back to x colon x's because that's the most common variables for these kinds of lists. And then I'm going to do equals. And then so a recursive function typically is you're gonna do something with the x value. So I'm not even gonna write legit code. I'm just gonna say, do something with x and you may do some other stuff after that that doesn't involve x or x's. But then eventually what you wanna do is funk x's where you do something to the head of the list and maybe some stuff in between. But eventually you want to call the function again on the rest of the list. And that's how the recursion happens, that's what performs the magic. So you do something to the very first item and then you rerun funk on x's, which is everything but the first item. Which again, the recursion happens and then it runs the function on x's. The rest of the list now without the first two items because you've already run through the first two items, yada, yada, yada. And eventually you will get to an empty list and then of course the loop should stop. Now here's the thing with a recursive function on a list in Haskell. The empty list, when it gets to the empty list, the Haskell compiler is going to have absolutely no idea what to do when it tries to run funk on an empty list because we defined funk as x colon x's. So x is the head of a list that involves x's, right? But an empty list of course doesn't have any of that. So you have to have also funk on an empty list. And then what you wanna do is funk on an empty list. You probably just want that to equal an empty list. So funk on the empty list, this is what is called the base statement. This is once the loop finally gets to a point where it needs to terminate itself, that's the base statement. Until funk gets to the empty list though, it is going to be running this here. So let's show a real world example of creating a function. Let's take the take function here in Haskell. Haskell has a base function called take. What take does is you give it a number, an integer. So you can say take three of some list of items. For example, if I did a range of one to five, take three is going to take the first three in that list of one through five. So it's gonna return one, two, three. And let me open a terminal to show you this, what I'm gonna do, zoom in in this terminal. And I'm gonna do ghci, which is the interactive Haskell compiler. Just to show you this in action, if I do take three on a range of one to five, I get a list of one, two, three because it takes the first three items of that list. It drops off four and five. Now, if we were writing this function ourselves take, how would we write that? Well, I would probably use recursion to actually define take. I don't know what the official definition for take looks like in the Haskell libraries. But I would probably define it in this way here. I would do take in for a number, in is typically used to signify numbers as arguments. But again, you could use anything, you could use I or A, B, C, D, whatever. It takes a list and once again, I'll do the standard x cons x's. And then if I was doing a recursive definition of this, what I would do is in that list, I would take the x, the head of the list. And then I would probably cons it to take and then the function in minus one because when you're involving integers in these arguments, typically the way you want to do the recursion, you could do recursion on the list. You could also do recursion on the numbers themselves because you can either increment or decrement the numbers, which also will cause the loop to go forward until, of course, you give it a base statement of when to terminate that loop. And it needs to run take in minus one on x's, the rest of the list. Now let me actually make that full screen so you can see that line. So can you see what this is going to do? And sometimes it's good to actually write this out in long form. So let's actually do take three on one to five. And what this would do, it's going to take x, which is the head of the list. But first it's going to take one and it's going to cons it to the rest of the list, meaning that's going to be put at the front of the list. And then it's going to run take on n minus one. So since that's three minus one on the rest of the list. Now the rest of the list, we took one out and propended it. So the rest of the list now is two to four. Now take three minus one on the range of two to four. What that's going to do, of course, is take two and prepend it to take two minus one on the new list, which the new list now is simply going to be three and four, the only digits remaining. And then if you want to keep on with the recursion here, of course, then that's going to take three out of the list and cons it to take one minus one. I should wrap that in parentheses there and then to the rest of the list, which is now just four. Now actually, you can already see this would go on to infinity, right? Because we would then get take zero of four and heck, we could even keep going with negative numbers, right? So this would be an infinite loop. We have to stop somewhere. And where do we want to stop? Well really we want to stop where we're at, right? Once we get to take one minus one, which is of course zero, and really we don't want four because this would be the fourth item in the list. And of course take three. We want one, two, three and then stop.  So I'm going to say that take in should always be greater than zero. So it always should be one or more because once you get to zero, then we're getting extra digits that we no longer need and of course we don't want to go into negatives either. So we want to go ahead and define a base statement. So I'm going to say take in and then I'm going to give this wild card character, meaning I don't care about the list. It could be X cons X's. It could be an empty list. It doesn't matter. What we're focused on here mainly is the numeral, the in. And I'm going to do a pipe symbol. So what this is in Haskell, this is called a guard. You can think of this as a condition that has to be met. And the condition of course is that in has to be less than or equal to zero. And if it is, just return an empty list. So once it gets to zero or less, which would be negative numbers, just return an empty list meaning stop this loop. That way, with this guard, this here would reach the base statement and now that would return just an empty list. And now we would simply get one, two, three return, which is exactly what we would expect with take three from a range of one through five. And I can go ahead and tell you from experience anytime you do recursive functions on a list, the Haskell compiler will always complain if you also don't give it a base statement on an empty list. So let's go ahead and take care of that. So we also need take. And then I'm going to do a wild card character for the number. I don't care what the number is because this is about the empty list. When you get to an empty list, just return an empty list. So there is the take function, one of the base functions for Haskell. And you have two base statements. So what happens when n reaches zero or less, we want an empty list. And if you happen to have an empty list, just return an empty list. And otherwise you're going to take in x cons x's and do the recursion, do the loop, until you finally reach one of these statements and then the loop stops. Now the way Haskell works is these are actually three different functions. They're not all one function. Take with these arguments is a function. Take with these arguments is a totally separate function. And then take with this argument is a totally separate function. I mentioned that because if you're learning some of the basics of Haskell, you probably know that Haskell is in a mutable language, wants you to find functions. They can never change and you're probably wondering, well, you did three different takes. No, no, no. We actually did not because take with different arguments technically is a different function. And now that we know how to work a little bit with recursion using list, why don't we do the length command? So the length command is another function. It's a base function in Haskell. So if you do something like the length of a list and I'll do once again, one through five, it will actually return the number of items in the list. It will just return five because that's how many integers are in a list of one through five consecutive numbers that's going to return five. Now how would you define this using recursion? Well, knowing what we know now about lists, I would define it this way. I would do length and then x cons x's and then it's going to equal one plus length on x's. Right? That's really all we need to do. And if I did this out in long form, right, let's go ahead and prove our homework here and then what we're going to do length on one through five is going to equal one plus length of x's, which is now one plus one plus length of x's. So this x's here would have been two through five because we drop the x the head immediately, right? And this length on x's would be three to five and then the recursion keeps on.  Now length on the empty list that is where we should stop the loop and what we're going to do is we're going to say length of the empty list should return a value of zero. So finally one plus one plus one plus one plus zero and then how we get five, right? So that is how that would work so that is exactly how I would define the length function and typically in Haskell you also want to type meaning give a type for your function. So just for clarification a type is basically saying what kind of values the function takes and what kind of values it should return. So in this case length it's going to take a list of a values. Now that I could label that anything but everything in a list are all the same values that's just the way lists work. If you have a list of numbers everything's a number. If you have a list of strings they all have to be strings, right? So I don't really care if they're numbers or if they're strings or if their character is yada yada yada or bull values or whatever it happens to be that they all have to be the same kind of value. So we're going to take a list of a values and what does it return? It returns an integer. So that's a little bit of how recursion works in Haskell. So how are we going to employ this in our program in the bye bye program that we were working with earlier? Let me get back to the source code for bye bye. So looking at the source code here most of the source code involves creating the seven buttons for bye bye. Let me run the program so you guys can see the seven buttons I'm talking about here, right? So that is these blocks here. That's button one, that's button two, button three, four, five, six, seven. And for the most part the code is a lot of duplication. We're creating a button, we're setting the style, all of this stuff is the same. And the only thing that we really, that's different for each button is the action that it does when it's clicked. On button one clicked do this, on button two clicked do this, right? So obviously the actions are different for the cancel button, for the shutdown button, for the reboot button, but I could create a list of actions to work with. And then through recursion have this recursive function create the buttons for us, give it the appropriate label and give it the appropriate action based on a list. And I think that's what I'm going to do. So the way I would attack this I would probably go ahead and just start by creating a function, I'll give it a name, let me create some space here. So I'm going to call this button with image and label because I'm going to have this function create the button, assign it the appropriate label and also assign it the appropriate image for the icon. And what is the type? I'm going to go ahead and specify the type. What I'm going to do is I'm going to take a list of tuples, the tuples are going to involve a string and the other part of the tuple is going to involve a IO action. So what I'm thinking is I'm going to create choices here and it'll be a list of tuples, these comma separated tuples here and what these will be the first part will be a string for example, cancel, right? The cancel button and then the next part will be the command that the cancel button does which in this case the command is GTK widget destroy, let me actually just copy that and then paste that right there and that is the first tuple in the list. The next one would be button two which of course would be logout if I spell it correctly, comma and then the command for logout which in this case I'm going to use call command and then kill all and then the location of the Xmonet x86 underscore 64 dash Linux binary we're just going to kill that program and then I'm just going to keep on with this list of tuples plugging in the appropriate values. So I went ahead and created the rest of this choices list of tuples. So the function that we were creating button with image and label is going to take this list of tuples and where's the first part of the tuple is the string second part is the IO action you know the command that it's going to run and then what is it going to do with that? Well it's going to take all of that and return an IO action because that is what these GTK functions do they create these widgets that do stuff IO stuff so the last part of the type typically on these is almost always going to be IO and the reason I began defining both the list here and the function with let is because I'm actually inside a do block at the very top of this where main equals do and then everything in this program is actually inside this do block. So I did have to define the function using let I had to also define the choices list here also with let now using recursion even though we're only dealing with seven items I don't have to define this as a recursive function but because that was the point of today's video let's actually do this recursively. So since we created that list I'm going to do button with image and label and they take an argument x kinds x's right it takes a list as an argument and then it's going to equal it's going to equal this do block a do block is important anytime you're dealing with IO IO actions within IO have to happen in a certain order in sequential order. Now typically Haskell functions when you define a function in Haskell the order that it does the steps it doesn't matter what it actually does to achieve the desired result typically doesn't matter to you the way Haskell typically works you define a function and you basically tell it the end result hey this is what I want at the end you really don't care how you get there but with IO it's different it's very important that these steps are in the correct order because if you create a widget before another widget and then try to add that widget inside the other widget for example right it's it's not going to work right you have to do things in a specific order and then really at this point some of the steps that I want to take you know I'm just going to copy this I'm going to grab that because for the most part that is actually what we want let me correct the spacing here because if this is not indented right the Haskell compiler is going to complain a lot and then this variable button one I'm just going to name it button I'm not going to label it button one because it doesn't make sense because it's going to label all of these as button one so I'd rather just give it a more generic term button then on button clicked do this will be the action we will eventually specify exactly what that action is going to be in just a second for recursion to take place you know ultimately somewhere along the way we have to restart the loop so we have to rerun button with image and label right because recursion means it's defined using itself so at the very end rerun the function on X's the rest of the list so it's going to take X so X is going to be the first item in the list which is this very first tuple which has two values how do we separate the first value and the second value of a tuple well in Haskell there are two built-in functions you have FST for first and SND for second and when you use those functions on tuples it will give you the first value and SND of course will give you the second value so the first value of the tuple is actually the label so if I rerun the app we actually have two things going on we have seven buttons and then below the seven buttons we have seven labels so this gets us started on creating the buttons let's go ahead and also have this loop take care of creating our labels so label is going to equal GTK dot label new and we have to give it a value I'm gonna give it a value of nothing we are going to set something to that in just a second but for now we're just gonna create label new nothing and then we're gonna set label and then I'm gonna hit enter I'm gonna indent over two spaces and I'm gonna start this block here really this is just a list here of properties I'm gonna set first we're gonna set label then I'm gonna give it colon equals and then what we want the label to equal is the very first part of the tuple which would be FST X I also want to add some markup to it because I would like this to be bolded so really what I want to do is I want to add this bold tag and then I want to concatenate FST X the first part of the tuple so in this case it'll be cancel on the very first one and then of course at the end I need to append a closing bold tag as well one thing I know I'm probably gonna have an issue here is setting the label this needs to be text rather than a string and by default I think the compiler is going to take all of these the first part of the tuple as strings so it's gonna make this whole thing a string but it needs to be converted to data text so I'm gonna do a pack here and I do t dot pack because I imported data dot text in my imports as t actually I haven't even added a data dot text here I probably need to do that so let me go ahead and add that library because there's gonna be several things we're about to define that are gonna need to be defined as text rather than strings and I'm gonna go ahead and import two functions pack and unpack pack will take a string and make it text unpack will do the reverse it will take text and make it a string and of course because I'm doing this with stack what I would need to do is I would need to go into the package dot yaml and in the dependencies I would need to make sure that I had the text package as part of the dependencies for this project so I've already added that one thing I notice is I'm setting an image for the button and I'm setting it to this variable image one because I have seven images created somewhere in this file I think yeah the image are these locations of these ping files I created now the ping files are labeled cancel reboot shut down you know dot ping which is also the word that I was going to actually use as the label themselves so actually what I could do is I could set the image to again the first part of the tuple dot ping right FST X and of course I would have to concatenate dot ping at the end and actually I also have to get my home directory which I already have a variable defined for home I would have to propane the location of my home directory plus the location of this directory we're working in which I should probably just create like a prefix which is the path to this directory our working directory then plus first on X and then plus dot ping which I could actually just create a variable for it and I'll call it suffix so I know this video is already going on rather long what I'm going to do I'm going to speed ahead I'm just actually going to show you the finished product because I got a good enough start here that I think I can show you the finished loop here and you'll be able to understand exactly what I did all right now I worked on this for a little bit and I went ahead and created the prefix and suffix variables so and I already had the home variable I think toward the top the home variable just gets the location of my home directory which is slash home slash dt and what this allows me to do is now setting the image for the icons is the home variable slash home slash dt plus the prefix variable which is the location to this project file plus first of X which is the first part of the X tuple which is going to be this column here right the actual names plus suffix which that variable is dot ping so that takes care of the images and then the tuples themselves we just plug in the various first values so FST X for labels and you notice I have this function here capitalized first X because I noticed that the names of my image files are lowercase which means if I'm using these also as the label names they would also be lowercase but I really wanted these to be capitalized so actually I just created a little function for that if I go toward the top so I created this very simple function this is not a recursive function all it does is capitalized on X cons X is what it does is there's two Haskell functions two upper and two lower two upper capitalizes a character to lower lower cases a character and what it does we're going to take a list because technically a word a string is a list it's a list of characters right and I specified a list of characters and it returns a list of characters so it's taking the very first character X and that's doing a two upper on it and then it's consign that to the rest of the list which we're mapping to lower over the rest of the list map means do this function on every single member of a list so we're lower casing the rest of the list so that was just a quick and easy function that solved my problem for capitalizing the labels and you can see I left some comments here so first we create the GTK image and then the next section here is creating the GTK label and I set the appropriate values for it and then create the GTK button and I set the appropriate values for it and then what happens when the button is clicked so on button clicked do and this should be our action what is the action well this should be sndx right the second part of the tuple were the actions for each button so this column here and then finally we need to place those buttons on the grid because if I rerun this you know these are all part of a grid you can think of it this grid as seven columns by two rows is essentially kind of what this grid is where does everything get placed well what I did to have each button have its own XY coordinates was I created these variables here A and B where A is the length of our choices list minus one and B is going to be the length of the rest of the list so if we start with seven items in the choices list seven minus one is six and then the length of the rest of the list when we start is also six so I take those values and do a minus B I get zero which is the very first coordinate I want is zero but then I want the next coordinate for the column to be one so it runs the loop again a the value of a never changes the length of choices was seven it will always be seven minus one still six right except now the length of X's is five instead of six so now a minus B is one and then the next time it runs through the loop it will be two three so it increments the numbers to where when I do the attach grid for button call for column is going to be a minus B right so the first time it runs the coordinates will be zero zero one one the next time it runs it will be one zero one one the next time it runs to zero one one so this is the zero column this is the one column this two column yada yada yada so that is how I achieve this and finally of course we just need to run this recursive function so button with image and label and then you have to feed it a list because that was part of the definition remember but with image and label takes a list as an argument the list of course is the choices list which was our list of tuples so doing that if I zoom back out how much did I save as far as typing you know the duplicated lines how many did I eliminate by doing that well I still have the old version up let me actually show you the old version as well I still have yet here and let's see some of what we got rid of right so I defined all of these images before I no longer have to do that I define it one time the loop takes care of creating the seven images all these labels this block here no longer have to do that the loop takes care of the seven labels for me I have to do it one time in the loop the loop takes care of the rest creating all of these buttons each one of these blocks for each one of the seven buttons I only have to do this block one time now because the loop takes care of everything else and then attaching the buttons and labels to the grid I no longer have to do that because I created that variable the called variable that gets incremented right so instead of having you know 12 for 14 different things to attach to the grid I'm only attaching the one button and one label but the the values change as the loop runs so that makes this thing I mean a lot shorter right and when I say I cut it by about 75% yeah we did probably remove 75% of the code from the first version to the second one and it still runs exactly the same thing it's actually looks functions and feels exactly the same way is there any real difference other than it's a little bit less lines of code and probably a little easier to read as long as you understand you know how this function works right now that I've kind of run through some of the basics of creating a function in Haskell and how IO works and especially how recursion works you probably could actually figure that out you know now that I've kind of talked you through it and we threw a lot at you today with this right this was much more advanced stuff than that very first video on bye-bye where you know I explain what lists were and what a tuple was how you get the first and second values from a tuple and of course from here you've got the foundation to eventually you know do more substantial apps obviously something like this is very simple but I mean you could get into more complicated stuff I've been working on this welcome application for DTOS which has an auto start tab where I can add or remove auto start programs of color schemes I can do a one-click change of color scheme a one-click change of various default user shells yada yada yada video tutorials this is a grid of various YouTube playlists which is good for documentation for those that are using DTOS I've been working on that I just got kind of a rough outline it's still not nearly ready for prime time I started working on this just a few days ago I was trying to create a little application menu so listing all the applications obviously the icon sizes are all messed up but you get the idea you know I was able to pull out all of your desktop applications and create a little GTK menu kind of like you would see a system menu as part of a panel you know there's a lot you can do pretty much the sky's the limit with what you can do with GTK once you kind of know how all the widgets and all work and from here I think I'm gonna continue exploring this rabbit hole if you want to continue with me stay tuned to the channel and of course once I get into more complicated stuff I'm gonna rely heavily on you guys especially you Haskell pros out there I'm gonna need your help now before I go I need to thank a few special people I need to thank the producers of this episode Dustin Gabe James Matt Maxim Michael Mitchell Paul West why you bald homie Alan Armored Dragon Chuck commander angry die okay Dylan Marsh drummer young Alexander B's origin or polytech realities for less red profit Steven tools Devler and Willie these are my highest tier patrons over on patreon without these guys this episode would not have been possible the show is also brought to you by each and every one of these fine ladies and gentlemen as well all these names you're seeing on the screen right now these are all my supporters over on patreon because I don't have any corporate sponsors I'm just sponsored by you guys the community if you like my work want to see more videos about Linux free and open source software Haskell GTK subscribe to distro tube over on patreon alright guys peace we could create games with Haskell and GTK such as Minesweeper


What's up everyone the number one thing that people always ask me for is live trades live trades live trades And I'm happy to announce that we're gonna start showing more live trades or we're gonna start this one off with a bang So this was a one hundred forty five thousand dollar profit in just one day trading the meme stocks So before I start I'm gonna log into my broker statement to show you how I'm doing for the year so far So the broker that I use is called success trader and the clearing firm that they use is called hilltop securities So I'm gonna log into hilltop's website Gonna go to my account here tennis capital ink Go to gains and losses We're gonna go to realized and Just in this current month It's about a 600,000-dollar profit Let's do your date so year to date you guys can see about 1.3 million dollars on August 30th 2022 and this does not include the one hundred forty five thousand dollar trade So it's closer to about one point five million dollars so far this year in a bear market This is my broker statement. It's not a screenshot. So now that you guys have seen that let's go on to the live trade So before I begin let me explain the setup that I'm gonna be trading here on that bathroom beyond So if you see the daily chart here, you can see that it had its first initial run up, right? This was running up on Ryan Cohen buying the stock and the dub happened when Ryan Cohen and the CFO and all these insiders sold stock There was rumors going around that the company was gonna go bankrupt And what ended up happening is bedbath and beyond released a PR statement of a forward-looking event That says they have some way to avoid bankruptcy. So this is a sell the new setup So what ends up happening is the stock runs up in Anticipation of this PR and the day of the PR or in this case the day before the PR actually comes out The stock tends to fade. So this has already been a three-day run, which is up almost 50% in three days So keep in mind this stock has already made its parabolic move and I'm trading from the short side So I think that long-buy traders are stuck and they're looking for some sort of exit So my plan on this stock is I'm looking for this morning gap up to be rejected The reason why I'm looking for this gap up to be rejected is because I think everyone thinks that the sell the new Setup is gonna happen tomorrow and because everyone thinks it's gonna happen tomorrow Smart money is gonna exit the stock today into the volume and into the gap up So my thesis is the sell the new setup is gonna happen one day earlier Because everyone is expecting it to happen tomorrow So after you have a thesis you must back it up with price action So I want to see price action confirm my thesis and this is a stock that I want to get very Aggressive on because it has a lot of volume So I could trade in and out of hundreds of thousands of shares in minutes if I really want to or in seconds So an opportunity like this doesn't come around too often This is a sell the new setup Which is my second best setup that I trade the first one is the first red day and I was able to catch the entire thing Live on camera. So let's go through it step by step So this is being started at 804 a.m So as you can see I took a small starter position on the stuff and if you notice here the route is MIC So our partnered up broker success trader their commission structure is 0.002 a share But by using the MIC route you get a rebate of point zero zero two five a share So if you subtract that from your commission you get paid this much amount of money per share that you trade by using the MIC route So essentially you're getting to trade for free plus getting money on top of that This is exclusive to success trader clients only. Let's get back to the video So right now I see the stock bouncing pre-market and what this stock likes to do is it likes to bounce pre-market and Then at the open it likes to sell off It likes to get people excited that the stock is going to run pre-market But after trading the stock for so many days and so many weeks. I've learned its personality I know that this stock is going to try to do a run pre-market and then if it fails I'm going to get aggressive on the stock, right? I'm going to get very aggressive because The stock tends to wash out at the open the stock tends to tank at the open And that tank is a trap to go up and depending on how that trap acts Then we'll see what happens What I'm looking forward here is I want to see the stock hold resistance here at 15 20 and start to wash out under 15 If the stock breaks above 15 20 I want to cover partial of my position for a small loss in case it goes to 16 or 17 And if it ends up breaking this 14 90 15 dollar VWAP level, I want to get aggressive on this trade So let's see what happens as you can see I'm adding a little bit to my position as 15 20 is topping out And this stock on top nerve is a stock that I was watching for a bounce to short I didn't really get there. So later on in the video I switch it to a five minute chart on bedbath and beyond so I have a better view of the entire trade So as you can see here, I'm drawing my support lines. I know that if this stock breaks under 14 55 there is pretty much going to be no more support left on the stock until 14 So I just want to give myself a visual representation of what the stock is doing And as you can see I am zooming out to the previous days to see how much room does this stock have to go down? All right, so as of now, I know that 14 is a pretty solid level So that's my target on this stock if it goes under 14 great But my target is around 14 dollars for a stress-free trade on this stock As the stock begins to go in my favor, I get a little bit more aggressive with it Keeping in mind that if this stock breaks above 15 20 I have to cover a piece of my position in case things go wrong If it's a small loss, I can make it back. But if it's a big loss, I'm dead Now the first test of VWAP here looks like it held. So I want to be cautious I want to see what is it going to do next So the stock looks like it's about to reclaim 15 20 Now what I want to do here is I want to take a piece of my position off on a dip in case things go wrong So rather than buying the resistance and rather than covering right at the top. I want to let it test Come back down use that dip to cover and then reassess my position. So let's see what happens here As you can see there, I tried to cover some at 15 25. I couldn't get it Now if you notice the pre-market high of the day is 15 15 So that is my complete emergency exit if that breaks 15 15. I got an e-brake out of there I got to get the heck out of here. But this move right here Oftentimes they might push it above pre-market highs Get everyone excited get everyone to exit get everyone to buy and then bring it right back down Let's see what happens here. So seller showed up at 15 37 I like to see that right there Let me go back So a seller showed up at 15 37 right there 12 000 shares. I want to see that I want to see sellers coming into these pops and selling into them When I see that seller come in I adjust my order to cover a little bit lower Now i'm totally okay covering for a small loss in case the trade goes wrong and adding it right back once it goes in my favor So ideally I don't want to see this thing break 15 50 pre-market because if it does It's going to 16 So I am trying to mitigate my losses. I am trying to manage my risk here just in case Things go wrong If I have a small controlled loss, it is totally okay I do not want a loss to balloon So now you see a big buyer here at 15 30 and some selling at 15 33. So who's gonna win? Looks like the seller's one. So I covered partial of my position 15 uh 15 26 Trying to cover some more on the dip and again if this just dips and tanks I have no problem adding back short and if this pops and pushes I have no problem exiting my position Now I covered some of my position on this dip and I want to see what it does. Look another seller just showed up So here I try to cover a little bit more on the dip just in case So now I'm seeing that it's trying to bounce I draw my line of 15 50 and I give myself a clear area to exit in case I'm wrong What I want to see is I want to see this bounce fail And I want to see this thing break 15 20 and if it does that I'm going to add right back everything that I covered Because at that point it is now a failed bounce Let's see what's gonna do Uh-oh now it's starting to come back down I see it coming back down and now I want to add right back in So whatever I exited maybe even more than that. I want to get back in because now that 15 20 resistance Is now acting as resistance again 15 20 broke and now it's coming right back to be a seller So now I'm adding right back again And same thing as before I want to see 15 and 14 90 break And when that happens, I will get aggressive on the stock Again, I have no problem hitting the bid if it goes in my favor I want to be able to add because right here It just failed that bounce this bounce if correct should have gone to 15 50 and 16 instead There were sellers that showed up on this and because there's sellers showing up on it That gives me confidence. I'm seeing a big buyer here at 1506. I might have to hit him myself. I don't care So let's recap I covered my position for a loss on partial shares if it went higher I would have gotten out the rest instead of failed and I added back and now This entire move that started right here at this candle is about to be given back So this gives me confidence This tells me there are sellers on this stock and my thesis might be right And because my thesis is right. I am okay sizing in I am okay loading in Added some more at 1506 and remember 15 and 14 90 break was my goal was my target I want to see it break support of 14 90 and 15 So I could feel confident. I could get aggressive and let's see what happens In a flash we're at 14 90 At this point I'm trying to add more So my thesis was correct to be shorting here and adding when 14 90 and 15 broke They ended up faking people out thinking. All right. It's going to go higher So took a small loss and I started aggressively adding back as my thesis was being proved again So let's see what it's going to do here. This is me taking a screenshot to mic members to educate them on my trade live 50 000 share bitter 14 88 Let's see what he does Oftentimes if you want to bid that much you don't show your size because someone like me will just jump you So that might be to prop it up. Boom. They hit him and straight down Now i'm getting aggressive again Now I see that the trend is broken and this thing might actually break 14 50 pre market Let's fast forward a bit Now the stock is trying to bounce and what I want to see here is I want to see a fail at vwep I want to see a test test test 14 95 15 and fail And if it keeps testing and keeps failing I will keep adding So the more times it fails the more aggressive I get Again, I want to see it under 14 90s and 15 dollars if it breaks above 15 dollars I will use that same 15 20 line to stop out But if it stays under and it cannot reclaim 15 I am going to keep adding And what was the thesis the thesis is the sell the news setup They're getting everyone excited pre market and then at the open I think they're going to dump it They're going to dump it and then try to rebound it and then if that rebound fails that's going to be the money shot So let's see what happens Still going a little bit lower the bounce failed the bounce failed. So now this gives me confidence I see 1470 support and I see 1450 support if 1470 and 1450 breaks this thing is going to melt down So what I'm seeing here is lower high lower high lower high and fail This is the exact thing that I want to see when I'm trading a stock like this I want to see lower highs. I want to see fails and I want to see a meltdown, right? So right now I'm in 130 000 shares. I'll have about 45 000 and that's that's I'm not trying to trade Just to make 45 000. I know it sounds crazy, but this is a trade that could be a potential six figure winner So I want to be able to lock in profits on dips and recycle those back on pops So let's see what happens here And keep in mind this is before the market opens. So there's still 30 minutes until the market opens a lot can change Remember 1450 was the major support. So it only makes sense. That's hovering around 1450 for a little bit Tries to bounce and now I want to see this bounce fail I don't want to see it go above 15 and as the stock breaks 1450. I want to be able to lock in profits I want to be able to take some off to give myself a cushion to give myself a padding In case this bounces aggressively at the open if this bounces aggressively at the open I want to have a profit cushion to protect myself. So the 1450 line just broke Let's see what happens And I'm not looking at my p&l here. I know it looks sick looking at $65,000 before the market opens But I think that this could turn into a really big winner. So what I'm doing here is I'm trying to trim some of my position I'm trying to exit some of my position for a small win Right So that in case the stock bounces in case it goes crazy at the open I will be able to attack back and this is me taking a screenshot and educating mic members live on this trade I pulled up the five minute chart here to draw more areas of interest to know where to cover It is not a coincidence. I'm using this resistance to cover Resistance turns into support And this is going to be my next cover area around $14. I am using the chart to determine my entries and exits So let's see what happens here guys Trying to cover some more of 1437 didn't really get it Market's going to open up here in five minutes I say hey, I'm just going to add back a little bit on this bounce. No problem And my plan My plan is remember what I mentioned the stock usually pushes pre-market and washes out at the open So if this stock washes out at the open, I want to be able to lock in half of my position So that in case it bounces I have realized profits to pad me and in case it takes more so be it at least I protected myself So the market should be opening up here in three minutes So let me go back and let me show you what I did here So the market's going to open up in 20 seconds. What I'm doing is I'm setting fantasy orders So I'm setting limit orders under the bid in case this stock washes out really fast at the open I have open orders out to cover the position because sometimes these stocks move so fast that if we don't have an order set We might not get it. So the market's going to open up in here one second and let's see if these orders fail So I covered nearly half my position and locked in $41,000 in realized profits with another 40,000 in unrealized profits Now what I want to do here is I want the stock to bounce Ideally towards 15 right because 15 was where it was rejecting before I want this thing to bounce towards 15 and I want to reload everything that I covered So I covered about 70,000 shares on that dip Right Let's see what happens Still trying to cover some more And remember if it tanks, I got no problem adding back. I just want to protect myself So I locked in $47,000. So in case something goes wrong, I have a big padding to offset it Now I'm starting to slowly add back in because I'm seeing that this stock is rejected I'm seeing that the bounce is failing. So I'm starting to scale back in Now this ad was a little bit premature because I thought that it was going to break the low of the date here So I added back a little bit too quickly And that's totally fine because I have some realized profits and I have a plan on the stock I was trying to cover a little bit earlier, but I ended up not being able to fill So stay calm stuck to my plan and my plan told me that if this thing bounces If this thing bounces I am now okay scaling back into the position because the stock does the same pattern every single day The stock is strong pre-market The stock tanks at the open the stock rebounds at the open and then if that rebound fails It is going to unwind So I am slowly starting to scale back into my position not looking at my profits I'm not looking at anything other than the fact that I want this thing to bounce towards $15 I want to bounce towards $15 to get people excited And then I want them to pull the plug on it. So let's see what happens So because I locked in such large profits at the open I am very comfortable and I am very confident That I have room in case things go wrong If you notice $15 is the resistance area here. So what it's going to probably try to do is push towards 15 Get everyone excited And then if they pull the plug at 15, I'm going to get comfortable. I'm going to get confident and I'm going to get aggressive So I ended up washing out to $14.50 And remember $14.50 was the support from before Remember $14.50. So that's going to be a very that's going to be a very big area of interest on the stock, right? So over here, I'm trying to cover some of my position to mitigate my risk and to make sure that I lock in some profits Not sure if I'm going to get it or not But as you can see, I am using the weakness to cover my position I am using the strength to add to my position and I'm just repeating it over and over and over again Now in a perfect scenario what I would like to see is I want to see the stock push above 15 I want to push above 15 to get everyone excited that 16, 17, 18 is coming And then I want them to pull the plug on it. So let's see what happens And again throughout this entire time, I am not looking at my profits I am looking at the chart. I am looking at my plan I am trying to trade the stock not trade my profits And because I locked in such large profits in the open, I'm not panicking. I'm not hesitating. I'm not worried So if you find yourself struggling or you're not able to be patient, it's probably because you haven't locked in any profits So I lock in profits on dips to be able to offset in case things go wrong So remember I want to see a push towards 15 and I want to see this thing slam right back down I want everyone to get excited thinking that 16, 17, 18 is coming And then I want to see a massive death candle or massive rejection or something to give me a signal that hey, I'm right Oftentimes stocks need to heavily heavily push To be able to come back down Now my plan is if this thing starts to break above 15, 20, I'll cut it off and I'll maybe lose a couple thousand dollars That's not really the end of the world for me. This is a potential six-figure trade If I lose 5, 10,000 on a potential six-figure trade, that's fine. Now. Here's the death candle We're seeing that entire push got rejected that entire push So what we want to see next is now we want to see 14 50 support break and take all the way back down to 14. All right So let's see what happens here. This is a death candle in my eyes. This is a signal that the stock is dead Now a full-size position for me would be around 200,000 shares on this stock Now I'm in about 130,000 and I still have enough room to add about 70,000 more But I just want to take it slow for now. I want to take it slow I want to see I see that the stock is starting to play games And because the stock started to play games, I don't want to get too aggressive with it yet I have a pretty big position on I want to see a playthrough. I have locked in profits I don't want to get too aggressive yet Now what we want to see is we want to see this 14 50 level break This 14 40 level break and then we want to see a break down to low of the day So let's see what happens here So what I'm doing here is I'm removing the arrows from my five minute charge So it's a lot cleaner to see but the arrows are still on my one minute chart I just want to be able to see the chart a little bit cleaner So again, 14 50 and 14 40 we want to see that break If that breaks that tells me that this stock is gonna tank 14 50 and then 14 40 We need to see that break because if that breaks everyone that bought at $15 is now underwater Come on 14 40 Now we're at 14 30 So every single person that bought for this ramp is now stuck and underwater This is the exact signal that I want to see And as you see here, I'm going to cover some at 14 37 to lock in some profits in case It decides to bounce one more time to 15 And if it tanks, I have no problem getting back in So using the dip to exit my size Using the dip to give myself padding is what I'm trying to do here So I noticed that the bounce is failing. So I'm trying to add back my position I see that the bottom of that candle was 14 21 So I want to see 14 21 break and I want to see another test of 14 on this stock So as the stock starts to bounce, I'm slowly scaling back into my position I want to scale back in towards 14 40 14 70 and 15 bucks And if it fails, it fails But I want to slowly scale back in because I'm noticing that the bounces are getting less strong So remember 14 21 was the bottom of that candle So I want to see that candle break and I want to see this thing test 14 bucks So slowly scaling back in on bounces. I've locked in $53,000 and realized profits We're not 30,000 waiting. I'm not worried right now. The stock is reading exactly what I thought So it looks like the bounce is failing again This is beautiful. It couldn't even bounce to view app. It's just failing So now this is telling me this stock is really weak Remember 14 21 broke What's next 14 10 is the low of the day. Can it break it? boom Now we're at the low of the day I'm up $53,000 plus another $66,000 waiting to be locked in Now the thing that you guys have to know about trading size is you can't just cover hundreds of thousands of shares at you know 14 10 You have to wait for liquidity spots on the stock whether it be whole dollars and a half dollars and on this stock $14 is a whole dollar mark So I set an order to cover 70 000 shares Which is half of my position at $14 And the reason why I want to do this is because I know that that is the best spot to get liquidity on the stock I need people to slam $14 I need stops to go off to be able to take off my monster position Or else I'm going to be pushing the stock up myself So if trading size Look for key liquidity spots, you know a whole and half dollar marks to exit your position, right? So at this point I ran out of locates So I'm sitting at the bid at $14 to cover half of my position Because that's the spot that's going to give me the most amount of liquidity I need that liquidity to exit. I need people to stop out I need people to slam the bid into my order And that's pretty much the only place that I'll be able to cover a large portion of my size at the same price point So what's going to happen next? Come on 14 The bounce is failing again Come on do it Boom 14. You see I got that instantly 70 000 shares executed in one second It executed in one second because so many people were hitting the bid or stopping out or whatever that I got a huge liquidity zone to cover my shares Now covering more and more on this dip locked in $116,000 in realized profits is still another $30,000 to go So I'm just using this entire dip to cover my position. I'm covering and covering and covering and covering Into the panic as people are panicking on this stock as people are dumping it I am using that as my opportunity to get out and lock in my gains And if you look it's only been 17 minutes until the market opened This trade executed in 17 minutes I'm down to my last 5500 shares and I'm just like screw it. I'm gonna take the money So locked in 143 thousand dollars and I said hey if this stock bounces, maybe I'll take another scalp on it So let's see what happens Starting to bounce So I'm starting to slowly scale back in. I'm not going to use 150 000 shares like last time But hey, I might go up to 10 20 30 000 shares on this bounce Ideally it gets up to 14 15 and 14 17, but who knows Notice the stock bounced over the same support line that I drew That is why I covered there and this is what we teach inside m i c So I got about 10 000 shares on at a 14 25 average I would love to add around 14 50 But hey if this washes out, I'll just take the profits It just All right. Well now it started to pull back. So I'm trying to just take my profits on the dip 14 10 is what I'm sitting not trying to get greedy 15 cents is bad not bad And that's it guys. That's 145 thousand dollars trading in just one day trading the meme stocks and yeah Let me show you what happened to the chart throughout the rest of the day The stock ended up totally collapsing throughout the rest of the day and I got out around 13 90 and 14 And it went as low as 12 bucks. I could have made almost three to 400 000 dollars on this stock But hey, I screwed her up. It's not so bad when you screw up and make hundreds of thousands of dollars So if you enjoyed this live trading video Leave a like on the video and leave a comment on the video And if you want to see more live trades from me Let me know and if you're curious about my strategy and you want to learn how to day trade for yourself All you got to do is go to my investing club.com slash webinar and register for our free mentorship course This is for non MIC members only you're going to see my strategies You're going to see my live trades. You're going to see a lot of my process Revealed to you live and this course is only going to be available for a limited time only So if you like this video If you are curious about trading if you want to get started to trading Watch my free mentorship course online 100 free no strings attached and you'll see some more live trades for me But in the meantime, please subscribe. Please like please leave a comment I'll record some more live trades for you guys soon. Thanks


All right, cyber traders welcome on back and perhaps I should say good morning for all of us on social media Facebook live YouTube Nope, this is not Fausto Puglisi. My name is Josh Levitan. I'm the senior instructor here at cyber trading University Great to see everybody though. Let's get a quick sound check just to begin make sure everybody could hear me loud and clear I should be good to go across both ends right great to see Sharon Joe joining us live inside our trading room There we go. There's all of our regulars all of our full-time students joining us Stefan, Carol, Kevin, Greg, Jean Perfect. All right, cool. So first and foremost, of course, this is not Fausto Puglisi Fausto is on vacation today He's on vacation for the next few days rest of this week and I think going into next But nonetheless, I'll tell you he picked a pretty good day to start his vacation because up until the DCTH trade started to tank There wasn't really a whole lot to talk about so far this morning in pre-market I know there is some news coming out in terms of the ADP employment numbers I know that there is some news regarding the Pfizer bio and tech, you know vaccine 100% efficacy on younger kids You know hey, that's great. That could perhaps move the market, but Going into this morning. We've didn't really we haven't really seen a whole lot happen thus yet So, you know, we'll go from top to bottom in just a moment I do want to just recap some of the stocks that we ended up calling out trading not just from the morning yesterday But also from the afternoon so let's talk about actually probably the stock that we did the best on here the soul trade This was one we caught more from the market open and as you could see this morning in pre-market up another 5 plus percent But you know early on after the market opened it took a little bit, you know Not right away, but ended up make a nice burst breakout right over, you know high the day off 20 10 dollars 20 cents And from that point it was smooth sailing not all these are as easier as you know Smooth to see run up like the soul trade was but hey, you know going into the afternoon We still had our eye on this trade It was holding pretty strong near the highs going into the close and it didn't make the biggest Grandest, you know pop, but it ended up pushing back up pretty nicely going into the close there And for what it's worth right now opening up a bit higher so far in pre-market So I'll tell you we're just gonna put the stock back on our watch list the soul trade Did well on it yesterday morning. It's not trading a whole lot of volume this morning so far You know above what we would look for 65,000 shares But you know, we'll see if it continues in this direction at least after the market opens So alongside the soul trade we ended up doing really well This one took a while to get going the seal stock and this one also making a you know Continued push up this morning at least in pre-market But you know the news that came out on this stock and we talked about this yesterday inside our trader stock workshop But the news that came out on the stock was the same exact news that came out on this trade back from March 12th I Remember this because I took off on March 12th And I ended up missing this huge run up going into the afternoon on this seal trade Well, the news that came out was that some firm ended up providing like a $15 price target on seal Well, that's when it was like what like a $3 stock pretty much back on the 12th So that's what led to that huge run up and well history pretty much repeated itself in terms of the news yesterday morning Unfortunately, this didn't really make a big move not up until the afternoon at least so you're kind of watching the grass grow And this trade for a long while but no going into the afternoon I told you folks I was in this trade during the afternoon meeting from $4 and 60 cents I saw some buying coming into the trade right here Use two spikes of volume. So I gave it a chance and thankfully, you know, it ended up, you know Work out really well heading into the close pushed up steadily up towards five and for what it's worth right now again Like I'd said, you know still pushing up pretty nicely here in pre-market So I don't mind adding the stock to our main watch list as well in hopes of this making a bigger push after the open Right. All right. So alongside the DCTH I'm actually just catching up at the chat board right now. Jeff live inside our trading room saying the arcade DA is popping right now, too So I'll tell you alongside the DCTH the arcade DA was the other one that we more had our eye on at least in pre-market It didn't do a whole lot up until now. But yeah, I mean great call Jeff, you know pushing back up pretty nicely here I had the news on this arcade DA from pre-market. Allow me just to go on Benzinga Pro to copy and paste for all of us in social media Actually not really too too exciting news. I guess it was just earnings based That's all so our KDA biosciences trading higher after they ended up reporting quarter for sales results Yeah, nonetheless, I mean easily enough just like the DCTH and we'll get back to that perhaps in just a moment But the arcade DA will easily just put on our list. I'll go over this full move perhaps here in just a moment I want to talk about one other stock though from yesterday before I officially start scanning So I was just catching up at the chat there live inside our room and yeah for right now This is making a big push the other one that I wanted to talk about Unfortunately, this one's not looking nearly as good today the VTSI we ended up seeing this make-and-ice push going into the afternoon yesterday And we'd called this out going into the afternoon meeting. We were looking for a breakout over that line right off 950 The first time I broke above that line in the afternoon It made a false breakout and we caught this live during the meeting We said hey if this could break higher from or break out again from the 950 level It wouldn't shock us to see a high or high make this move up or make a move up to the next resistance off of 10 So, you know, it's easy to say that's what happened, but this was a super volatile stock So if you didn't get in from that 950 level, I mean I hope you didn't chase and either way if you ended up trying to jump in off the first Breakout from 10 and clearly that's the false breakout again from that point And that's what led to this huge drop off after so I hope nobody got hurt on this trait going into the afternoon What goes up unfortunately can come back down and if that 950 level wasn't going to hold this support This was the likely result after I will say this though Just you know at the same time, you know, we always talk about the profits here live inside our trading room We do talk about the losers, but not everyone wants to kind of talk about them because I mean Hey who the hell wants to talk about a loser, right? It's kind of embarrassing to bring up especially if you took a bigger loss If you jumped into this trade yesterday if you ended up getting hit on a big on a big loss here yesterday on this trade Send me a quick email chat with me on the side. I don't bite and I'm here to help So, you know, hey just as much as we talked about the winners This clearly ended up going the other way a bit after we finished up this meeting So if you ended up taking this trade and got hurt by it, definitely let me know and you know I'll be more than happy to talk to you about it. Just help you out go over the levels in the trade itself Now I've had in mind damn this thing ended up just getting clipped in pre-market or even in the after hours Just kept dropping off and then no ended up opening up a little bit lower in pre-market But I'm not as interested in this trade at this point, of course pretty flat You know, it's down 26% perhaps we could see some sort of you know, DCB, but I'm not gonna hold my breath for it All right, so let's go from top to bottom right now folks Like I said, I wanted to jump back to the arcade DA trade I was gonna start with this as we scan the gainers list But yeah for right now still holding nicely from Jeff's call out when it was popping up towards 340 I Would assume major resistance also to be off the 50 cent levels and whole numbers But definitely over the last five minutes we saw a lot of buying coming in I would assume the buying would come in right off the 333 breakout price here I'll draw a line here definitely was holding well not just from this point But also from earlier in pre-market shortly after eight o'clock. That's a really good level actually really quickly on my main trading Platform that I'm gonna be trading off of this morning because I'm doing the meeting here I normally would be doing this while Fausto is doing the meeting here for you So I'm gonna actually draw this lot of my chart as we speak on my main trading platform And that's a big level of watch that 333 price. All right, so yeah for right now arcade DA definitely gonna You know focus more so on this, you know going into the open All right, so the other one I guess alongside DCTH arcade DA We kind of took our focus off it as it was beginning to pull back here But the TAOP trade so TAOP ended up coming out with news a little bit after 8 o'clock off the 8 o'clock move Keyword NFT so TAOP signs an agreement to acquire majority stake in render lake tech and they launch an NFT division So it's like the hot keyword, right? We talked about this, you know last year with the vaccine stocks Then it was the EV stocks the electric vehicle then it was the Bitcoin stocks, right? And then the pot stocks any time you happen to see like a hot buzzword keyword in a headline It's going to lead to a big move. So, you know, hey just the headline out there TAOP launching an NFT division We ended up seeing an enormous breakout right away from like basically 10 all the way up towards 15 Going into the open easily will easily will watch this We'll look to see if this could find some you know support after 9 30 seems like it's trying to build some support here But it wouldn't shock me if it breaks down lower perhaps towards 12 or lower even Kind of pull back towards these bottoms before a potential squeeze back up. Let's just a loose thought All right, let's keep it going here another NFT stock and we know this from the past. I didn't see the news on this at least from pre-market But the YVR trade so we ended up trading YVR TKAT OCG all these stocks, you know, you could just see back from the last two weeks right here So we'll come back to TKAT. I'm sure we'll go to the OCG if that's moving to looking at the news here for YVR see, you know, this is Company name is leading brands. It doesn't show that here. All right Let's say I Guess they're calling it liquid media group. That's another name for this company YVR. That's pretty interesting So anyway, it's basically to say that YVR says it will create a Multi-token IP platform in a partnership with a company called currency works, which is actually under the ticker It's an O it's an OCT OOTC ticker CWRK But I'm actually just gonna copy and paste the full news snippet here for all of us It's kind of lengthy, but all right So that's the news out at least on this company YVR seems really flat right now And you know, we'll look to see if this can perhaps build some support just like we were saying before with the TAOP trade I'm not going to assume that they're going to move similarly if not exactly the same But you know, if this ends up breaking lower even after the market opens then perhaps from that point Maybe we'll make a bit of a slingshot kind of like a breakdown under and then back over All right. Let's see what else we got here folks I put the CLRO this stock on the pre-market watch list early on once they opened up the trading room It was looking interesting at the time, but afterwards just super flat like very inactive volume totally dropped off You know, I don't know what the news is on this one. It's up 17 plus percent trading two plus million shares You know, it's tradable in that regard, right? But it's not really looking that impressive here over the last hour and a half So I'm sure it could pop. I'll put this on our watch list. It'll kind of be like Near the middle maybe near the bottom at the end of it, but you know, we'll keep this in mind I like the seal trade a lot more. I like the RKDA trade a lot more Like the TAOP trade a lot more All right, let's see what else we got a familiar name at least here the OCGN So I'm gonna recheck Benzinga on this I didn't see news on this from earlier this morning But this stock is a familiar name I guess a healthcare stock that we ended up doing really well on going back into You know pretty much early Feb all throughout March and then you know at that point kind of dropped off You know volatility kind of died off with it. There's no news on this stock I'm looking at here at least from 8 o'clock this morning. There's no, you know headline out on this OCGN We don't need to have a headline in order to trade the stock you'd like to see it at least But nonetheless, you know, we'll keep this in mind trading three plus million shares almost four up 12 plus percent It is shortable so if it craps out the other way then that could be a good opportunity So yeah OCGN. I like this more than the CLRO right now for being honest At least this is a familiar name that we've done pretty much, you know consistently well on here in the past All right, let's just kind of skim through see what else we got. I saw a call out on plug pop I saw F cell moving up pretty nicely early in pre-market. So no surprise with plug. Ooh nice run Yeah, definitely. So this is our call out here. I think it was Wendy that made the comment plug pop Yep, there we go. Good call Wendy. Yeah, I mean nice push All right, we might have a big watch list here We already have like two four six eight stocks on our watch list already 10 All right Well, hey if the market pushes up nicely then you may we might have a lot of stocks that run with it Right F cell kind of at the highs right now I was gonna jump to blink BLNK because that was actually right above plug on the percent gainers list but this one is like Pretty spotty not a whole lot happening on the chart So I like plug this one not as much I guess I like F cell but it's a bit slower, you know If you trade F cell consistently then I'm sure I'm sure you'll have a you know a focus on that personally going into the open All right, ocean power. I kind of skipped over this one OP TT Familiar name just super flat. All right, we'll hop over to the losers list folks If there's anything else that looks good, that's up type it in the chatboard here I'll get back to in just a moment the DCTH though. So I'm gonna jump to Benzinga on this quick because the headline that came out on this it sounded really good You know, it ended up making a pop initially off the news, but man, the street was not happy about this So if I'm not mistaken, actually, I think this might be earnings included So that might be the reason as to why this dropped it looks like before the open DCTH did report earnings So the headline that I had here, I'm gonna copy and paste if I could find it Here we go. All right, so I'm no scientist. All right, but it's to say that DCTH trading higher You know after their drug achieves, you know, 29.2% beating Pre-specified threshold and eye cancer study, you know, so it seems like that sounded like a good headline We ended up seeing a bit of a pop right away and with that well, man, this thing ended up crapping back down really fast after I don't have the earnings results on the Benzinga newsfeed here at least yet but nonetheless ended up making this huge drop off from like And we could say 25 but really really like 17 ish 1750 once it broke lower all the way down towards sub 10 So yeah going into the open this provided a really good dead cat bounce opportunity already I saw like Phil M. I saw Chuck Z. If I'm not mistaken or Chuck C end up picking up like 75 80 cents a pop on this trade off The bounce so congrats so far like I said, we're definitely gonna keep this in mind going into the open It's ready on our watch list, but you know, definitely be careful. It's more of a level four to five stock spritz Really big right now. I'll say it'll probably continue to fluctuate after the market opens Seems pretty flat right now here, too But I would watch out that I would watch out for that 10 support level after the market opens See if it makes another slingshot type of move from there like a break under it then a break right back above it All right, let's see what else we got here on the loser's list bunch of stuff hard to borrow otherwise unless if it's down As much as like DC th. I probably not gonna be as interested in it This NCT Y is down close to DC th here, so I turned over to it, you know dropped off big going into nine o'clock I don't know. I don't know what happened here, but nonetheless if this can provide a bit of a dead cat bounce opportunity For $30 stock, I don't mind slipping this on here at the end More of a level four to five trade, but it's down a lot Perhaps this could provide a good opportunity on the upside there, you know if the shorts cover early RMO This stock is shortable. It's down 17 plus percent spreads looking great on this stock I've never really traded this one in the past Not a familiar name Big drop after the market closed yesterday. I'm gonna assume earnings on this. I'll check Benzinga Pro for this one RMO Benzinga Pro taking its sweet time here. It's that kind of stumbling here trying to load up. Here we go Yeah earnings related looks like they ended up missing the EPS looks like they missed on sales also Obviously huge drop. So for right now, yeah, great short 21,000 share order popping up on the bid as we speak look on the right side at the platform here in blue on the trade station matrix So that's our big support definitely gonna add this to our list RMO cool Usually take a liking to stocks that I've seen, you know on the gainers and losers list before stocks that I've traded with success You know in the past consistently. This is not one of them. So I'm pretty interested in seeing how this opens up I'm not going to be deterred by you know with that in mind I'll look to trade this definitely great volume on the order book tight spread I know that Blackberry had had earnings yesterday afternoon, you know kind of hard to borrow Kind of slow here not a whole lot really happening just yet And that just about does it for myself folks at least across the gainers or losers if there's anything else That's making a big pop or drop right now type in the chat board, please We have one of us here from YouTube, which I'll jump to first calling out surf SURF I saw that on the gainers list early probably skipped over it Yeah, you know what I'll slip this on our list because it's just still tradable I'm hoping that this makes a big pop after the open not gonna guarantee it It seems like it's holding resistance off of $8.40 pretty nicely throughout the pre-market, you know sans one pop and drop It's holding 840 really well. So yeah, good call. I guess I skipped over this I'll put this on our list. This is leading me to save folks. We have a pretty damn big list at this point So let me actually just count. We got two four six eight ten eleven I normally like to max out at 12 I don't like to put 12 stocks on the watch list to begin But if we have to we will and you know, I don't like to go more than that So guess I have room for one more, right? So let's see what else we got ride Yeah, not really much happening there Genius just popped. Ooh, there we go about time Am I gonna be fooled by this again? We ended up trading genius yesterday off the news that came out It had to do with like Stan Lee Marvel Comics some partnership Sounded great and then right before the market opened It ended up making like the same type of play as the DCTH did this morning and just like tanked so Hey, nice pop. I hope there's a lot more to it. I guess I'm gonna add this to our list, too See what also our traders here typing in the chat board. Maybe I kind of just Fixed the list up a little bit here Ken saying the CLRO is picking up a little you know spread tightened up Yeah, it's on our list still it's gonna be at the bottom, but hopefully that makes the move Ken The BW EN Phillips saying worth watching right now. It's just not moving a whole lot here So if it ends up popping after the open then Philip definitely call it out for us X good sideless stock, you know, we trade X not to say every day, but we have more recently Over the last week or so. I mean constant move up over the last three four days But you know, it's one that does trade a lot of volume day to day good spreads If you do well on X consistently then hey, it would be a good idea to personally keep a you know Keep X in mind if not then hey, I would stick with the watch list that we have already in the RMO the RKDA The OCGN perhaps as well and don't forget about plug too. We have a lot to work with you're going into the market open folks All right, so for right now I think that we have a pretty good list 12 stocks a kind of a maxed out list from my own end here for all of us in Social media if you are a morning person and not an afternoon person Then you probably haven't listened to myself do this broadcast if you have any questions on what we're covering here Please send over a quick email right to my personal email address I'll type it in the chat board for all of us in social media that being Josh at C2 trading comm outside of that though If you're interested in learning more feel free to go right down to the link on the banner below Sonnet for the trial to our live trading room. Alright, so for all of us live there right now for all of us live in cyber group Allow me just a quick moment. I'm going to type in tweet the picks out to you folks right now And then outside of that I'll jump back on the mic right as the market opens up here for you All right, I'll talk to you soon. Take care


Today we're going to talk about a very interesting spiked seltzer called hydroponics Hey there njbru22.com here with another low carb keto carnivore type booze review It's on two playlists. I think it's on my cheap wine reviews as well as my low carb keto carnivore channel It's called hydroponics. It's an interesting little seltzer that smells like weed But before I continue and talk about it just for a few minutes You got to understand that I have had hit or miss With this I bought my first pack and the reason I I am filming this vlogs because it smelled so much like a fresh bag of marijuana It was crazy. Everybody's like, what is that smell and the next batch I ordered Was like a dud. It was almost tasted like it went bad And I don't know I'm going to try it a third time And maybe I'll update the in the comments if the third time was also a dud or was it a good thing This is a seltzer from the sweet water brewing company And I had no idea I looked at the can and it was a five five percent alcohol It had a what do you call it? Um, it was low carb. It met our low carb requirements And they have like four flavors so mango lime haze mother berries and black cherry bomb And I had no idea I thought and I know what hydroponics is but that hydroponics isn't just for weeds That you can grow tomatoes hydroponically. I had no idea. I guess I'm naive I don't really do drugs, but here's the the description hydro is a hardened heady Seltzer brewed for the 420 lifestyle Whether it's the pool tailgate or wherever life takes you hydro brings more a more premium craft Liquid to the seltzer game a fresh clean tasting and flavorful 100 calories five percent alcohol it's plant based And uh one gram of sugar one gram of carbs and it's gluten-free. That's the magic buzz phrase They hit a lot of buzz phrases in so like I said, it has no marijuana. No thc. No hemp. It just has terpenes terpenes are What make marijuana smell like marijuana? And and just so you know that some states of california and I think colorado actually have thc infused drinks any 18 year old can buy and get high off of it.  Yeah, man. I don't know. I mean i'm not against it But I think in general if you make it so easily available and legal I think then it's just going to be abused at some point But anyway, I think that this hydroponic seltzer is kind of a hit or miss some people thought it was awful I thought it was perfectly fine and apparently it does have a little bit of a relaxing I had a kind of a really not a feel good buzz But they didn't have a calming effect both times I tried it So I I'm not going to say that was psychosomatic or not But it definitely kind of chilled you out and I don't know why or what they put in it that made it do that Just remember we had hit or miss Flavors so if you buy one and it doesn't smell smell up the room like weed you got a bad batch of them So that's it if you like this video and want to subscribe hit the bell and on all these notification things and I'll see you next video