How many of you are developing Java applications? Not many. OK, not many. And I guess most of you are familiar with ECS and SQS. I see people nodding, so OK. Just a little bit of context, so I know what to cover. Cool. So I'll start. Thank you very much for coming. My name is Daniela. And today I'm going to talk about how to scale applications on Kubernetes and EKS. I work for a company called Learn Kubernetes. And I sometimes write Java as well, probably the wrong kind of Java. So why the wrong kind of Java, and why am I here to talk about scaling web apps? Well, because we all have something in common, right? Whenever you're writing JavaScript, wherever you're writing .NET, we're all trying to build applications that can scale, right? And they are robust. So take, for example, the app store, right? So you can imagine that every year, a lot of people, all at the same time, they try to go on the website and they want to buy an iPhone, right? So if you were to profile the traffic for that website in that particular time, you probably realize that there is a peak when people want to buy the iPhone and then it's going to slowly go down, right? Like this. So how do you actually engineer applications that can sustain such a load, right, without falling over? So if I were to do that, the first idea I would have is we need a website, so I'm going to build that. And I probably also need something which is going to process the transactions, right? So credit cards or whatever order we're going to put through this website. Easy enough, right? We know how to do that. So what we have, we can build a REST API, which is going to collect all the transactions. And then we can build a number of clients. Those clients could be things like a website or different mobile devices, right? So you could use your phone to buy items, and all of them are connected to this REST API. Now imagine that you're building this website and you need to handle all of these transactions, all of these traffic. Then what you probably want to do is just plan for it, right? So what you want to do is think about your user and say, well, we need a front end. We need a back end. But actually, just one event, just when the instance of a back end or an instance of a front end is not enough, right? What we need is a little bit more than that. We probably need like four back ends. And to distribute the traffic, what we need is a load balancer. And we probably need to do the same for the front end as well, right? So this is nothing new, right? We do this all the time. We create load balancers. We create more instances. And we distribute the traffic. We know that what we build can scale. Then if you're serious about your infrastructure, then before going live, you usually do also performance testing, right? So you just go and stress the infrastructure and see how your application behaves. So in this particular case, I took the example of one front end, one back end, and I tried to stress my application to see how many requests per second it could handle. And then through a series of iterations, I found out that the front end can handle 1,000 requests per second. So 1,000 people can go on the website and use it, and everything is still fine. And then if I go to the back end, the back end actually can process just 250 transactions per second, right? So you could think about there is a ratio between 1 to 4. So whereas the front end can handle 1,000 requests, I would need four back ends to support that kind of load. So that's my setup, right? So I'm ready from that day when everyone goes and buys my iPhone. Let's see what happens, right? It's that day, and I see that the traffic is going up. We've got four back ends, four front ends. Everything looks good until it doesn't. But we get so much traffic that the front end can cope just well with what you've got there. But the back ends, they're starting to fall over, right? They're falling over as more traffic is coming through. Remember, we have a 1 to 4 ratio, so we're putting too much stress on the back end at the moment. And even more back ends are going and dropping connections because there is just too much load. So what do you do? What do we do? Just leave it like that? Maybe not, right? Well, we can just log in into AWS. We go into console, and we say we need four more back ends. We're just scaling our infrastructure to cope with the extra requests. And that's great, right? So we are basically distributing the loads amongst these eight instances, and everything is back to normal, is it? By the time that you scale your infrastructure, then the traffic on your website just doubled, OK? So it took you some time to get these instances up and running, but actually it was too late. The traffic was too much that now this is the situation, not just the back ends, but also the front ends are struggling with requests that is coming through. And what happens is you see back ends going up and down, starting to go up and down. And because a back end goes down, and maybe it's restarted, then the load is distributed on the other server, and everything is cascading down.  It's a sad story, isn't it? But perhaps, you know, I'm making stuff up. Perhaps no one does this. You know how to do it, right? You won't make the same mistakes as I did. Well, it turns out that even if you are Amazon, you could make that mistake. So you're probably familiar with Alibaba, the single day, where they have these massive sales. And then what Amazon did was basically saying, well, we can do that too. We call it Prime Day, and we put everything on sale. And that's what it did last year. And then this is what happened. So they put everything up and running, and then there was a lot of merchandise and sales, and eventually the website went down. So it crashed under the load of people trying to buy items, which is the same scenario we just described earlier. But why is that, right? Well, it turns out that post-mortem, they basically suggested that they didn't have enough service to actually handle the traffic that was coming through in their infrastructure, which is a little bit ironic. And they had to manually add service to cope with the traffic it was going through, which makes me wonder. It's not just about me as a small developer. It's also a problem which other companies, like big companies, could have. Now, this particular scenario was a little bit more complicated, as they had a very unique scalability issue with Oracle. But it gives you an idea on what kind of challenges you're facing when you're building this sort of applications. So my question to you is, is that anything we could do to actually avoid some of the problems that we described earlier? And then what I'm trying to find out is can I actually solve the problem of scaling? So we saw that we had to manually log in inside this Amazon console and scale the number of backends because we couldn't cope. So is there an way I can do it automatically? Well, we know that auto-scaling groups, we can set rules on how to automatically increase numbers. So that sounds easy enough. But the other challenge that we face is that when we talked about these frontend and backend, there was some ratio, right? We discussed about a ratio of one to four. So that basically means that, let's say for a reason, we have more traffic on the front end and we need to scale the front end, then scaling the front end is not enough. To cope with that front end traffic, we need to pair four more backends, right? So the ratio needs to be constant all the time and basically synchronizing two tiers of my infrastructure. But let's say that now you find a better way to write your code, you have a more performant Java application and then you know that you only need one, two backends for every front end that is there. And you need to go back in your infrastructure and just change the number from growing from 12, you change it to six. So you always need to keep them in sync, which isn't great, right? So the other things which is something that I like to do, if I could, if you think about processing these transactions, what happens is the transaction goes through, it goes to the front end and then it's processing the back end. So you can imagine a credit card, processing a credit card payment. But if the back end is unavailable, what happens is we process the transaction, we take credit card, but then it stays there, right? It's lost. What I'd rather do is to actually pile up all these requests for payment, right? And then process them later. So what if I could actually add a queue into my system, right? And the way I could do that is that instead of just sending the messages directly into my back end, I'm just gonna start piling them up. And when the back end is ready, then the back end can consume from this queue, you can imagine SQS, right? And then just consume the items and process these transactions. And then the idea is quite convenient, right? So if you think about it, it scales independently. I could have four front ends, all pushing messages, all pushing transactions into the queue and only one back end, very, very slowly, processing the transaction one at a time. What I could have four and four? What I could have one and four? So it's much better for me because I don't need to keep the ration, the one to four or one to two ration that we were discussing earlier, right? So these two pieces of infrastructure are now decoupled. The other interesting thing is that this gives me the benefit of just queuing up stuff. So if there is no one else on the other side, I can still save the request for payment and I can process that later. So what about, so we talked about handling failures, we talked about this messaging, what about the automatic scaling? So you're probably familiar with Amazon ECS, which is a good example of MISOS. But I think a new container in this space is Kubernetes. So why Kubernetes is not, why not ECS? Well, the reason is quite simple. So with ECS, unfortunately, you'll get a little bit of a black box, right? You know how it works, but if there is a bug or if there is something, you need to get in touch with Amazon and they hone the secret, right? They need to go and do the change. Whereas with Kubernetes, you can look at the code, you can change it, you can propose new features and add them in. The other reason is Kubernetes is multi-cloud, which basically means you can install it on AWS, you can move it to Azure, but more importantly, you can have the same setup on-prem as well. So you can have the same setup on both and just migrate the workloads from on-prem into the cloud. And then it's designed to scale. So any component of Kubernetes could fail and the process could still operate. So that's what we have. So a recap, so we can scale independently. We can handle value, so we can collect this credit card and then process them later. And then we know how to alter scale. So we know we can use ECS, we can use Kubernetes, but we perhaps we're interested in exploring this Kubernetes new stuff. Sounds like a plan. What if you're doing it? So this could go horribly wrong, but I'm actually going to try and do it now. Okay, so what we're going to do, hopefully you're going to, yeah, hopefully it's going to work. So what we're going to do, first of all, we need to build an application, right? So what we're going to build, I don't have the app store, so I've got a much simpler store where you can buy items, okay? That's it. And then what I have, so you can go and buy items as many as you want. And then I've got another section of the website where you can process transactions. To make it super, super easy, what I'm doing, every transaction, every transaction takes about five seconds to be processed. Okay? So if you've got three jobs pending, that means three transactions you need to process, that means 15 seconds on a single node. Let's have a look. So this is the application I'm using Spring Boot, but you can imagine you can do the same with any other programming language. And hopefully I just made a mistake. So first of all, so we said we discussed about a queue, so I need to start a queue. So I'm starting a queue, and then hopefully, okay. So what I have is, I basically build the application, so I'm gonna demonstrate it to you now. And then what it is, is just the very first part of this application, right? Where I can buy items. So I launch the queue, I have a frontend application, I can buy items, and I can buy some of them. So 10, maybe more 10. What happens now is I don't have the system that process the transactions, right? The all of these requests are just piling up inside a queue. What I can do next, no, the reason why I was fiddling with the variable is because I'm a little bit lazy, so the application works as a backend and as a frontend, and I've just got a toggle to change how it works. Okay, so I'm gonna toggle both on and just restart it. Actually, let's do just a backend. False. Let's see what happens. You see that the 20 items that we bought are now displayed on the screen, and then if I refresh, then this system is actually processing them five seconds at a time. And then I can go back to the console and hopefully you can see that the items have been processed here, right? So they are appearing as we speak. So that's the application. So if you are into Spring Boot, so this is your Spring Boot application, but all this is doing is just basically, every time you submit, we send some messages and then what we're doing is there is something called JMS. So we're just using JMS to interface with the queue. And then if I scroll down, you can see this is the line which is actually taking five seconds to process the item. So it's a very, very simple application where we're just taking messages off the queue, waiting for five seconds and then moving on. Very, very simple. So going back to our plan. So we built the application, we know how it works, now we want to deploy it. Now the interesting thing about Kubernetes is that it doesn't know how to deploy Java applications. Okay, it doesn't know to deploy any application at all. It only knows how to deploy containers. So containers are basically, the way you think about containers is you just think about your dependencies or the JVM, a number of files, and everything you've got inside your app, it actually gets packaged into a single bundle and that bundle is called a container. So that container is language-independent, so you don't need to teach Kubernetes how to run Java, you just need to package your application right to be run by Kubernetes. And then the way we do that is fairly simple. We have a recipe to build this container and that recipe basically just describes what kind of packages we need to install to make it work. So that's called the Dockerfile and that's what we use to actually build the container. Once we describe the steps, then we can execute them. So I'm gonna stop this. We just Docker build and this is gonna build the container. So now I'm not gonna do it because it's gonna take a little bit of time but you get the idea. So once we have the container, what do we do? Are we finally ready to deploy to Kubernetes? I hope so, otherwise this talk is never gonna end, right? Well, it turns out, yes, you need to deploy to Kubernetes. So what we do is we have, we need to deploy the front end and the back end and we need to route traffic to them so we know we need load balancers and we also know that we need a queue. So we're gonna create the queue, we're gonna create the front end and the back end, we're gonna connect it together and then what we're gonna do, we're also gonna set an auto scaling group on the back end. Now in Kubernetes, we like to call things with different names, okay? So load balancer is too easy. We call them services. The application, we don't call them applications because that would be just too obvious. So we call them parts. And then the auto scaling groups is actually called horizontal part auto scaling. And this is what we do. So I prepared most of the So what I have, so originally I had an EKS cluster which is basically Kubernetes on Amazon, okay? So Amazon offers Kubernetes as a managed service. Originally I had a cluster with on Amazon but there are a few interesting things about exposing services and just running the auto scaler. So I'm just at the moment and I didn't know if I had the internet. So at the moment I'm running everything locally. I've got a cluster running locally. And that cluster is running on something called Minikube. And then what I could do, I can use a command called kubectl to interact with the cluster. And this is telling me, yes, everything is okay. What I have next is, so when I want to deploy something into Kubernetes, what I do, I basically describe what the end results should be. Okay, I don't say deploy this. I just say at the end of a deployment it should look like this. Now, you go and do it. I don't want to do it myself. So what we have here is a description. Now, it may look like a lot of stuff, but you only need to remember actually a couple of lines. This one, just saying, I want to deploy a queue. This is a queue you should deploy. Done. And this one, sorry, this one, which is the port exposed by the load balancer. So if you're familiar with ECS, this is exactly the same thing you will see in ECS as well. And then once I've got those, I can just do a kubectl. So kubectl is the command that sends these descriptions to the server. So I can do kubectl create-aq-q. And that sends the command. You can see that returns immediately. Then the cluster will eventually have the application up and running. Okay, so that's just a queue. So let's deploy something else. Let's deploy a frontend. Let's see. So the frontend is very, very similar. Again, you can see a lot of stuff here, but the only line we're interested in is this one, which is saying the image that we want to deploy, right? And then we are setting the same environment variables that I was fiddling in earlier on. And that's it. And the other one is just the port that we want to expose this one. That's it. Everything else is a little bit of a boilerplate. So I've got this file. I can just send it to the cluster like this. Okay, I can check if the application was deployed. You can see down there, there is a frontend, right? Now, I want to see that though, right? I know it's there, but I want to see the website. So I can use a convenient command called minicube-service-frontend. And I've got the browser here. So this is my application deployed inside the cluster, inside kube-natives. And I can buy items. Are these items processed? No, right? We don't have a backend yet. So how does the backend work? Well, similar stuff. So the backend looks very much like the frontend, right? So it's a very similar way. So we said that we're interested about this line and then we're interested about this other one. And this is basically what kind of image I want to use to run the application and where do I want to expose it? So I'm going to do the same and deploy this application as well. Let's clear that. Just spell it. Sorry. Ah, that should be it. Done. There we go. So you can see I've got a lot of messages in the queue, right? It takes a little bit of time, but it's eventually processing them. And I can go back and add more and add more. And I can see them, you know, a lot of them. So do you want to wait for 300 items to be processed? Probably not, right? So what can we do? So we discussed earlier on that we could just, you know, log in into AWS console and change the number of instances and job done. So we could do the same, right? We have a number here, which basically defines how many copies of the backend we want. We could say three and then apply that. Oh, and then if I do get, you can see that it's running three copies of the backend. So if I go back, it should take, it should be a lot quicker, right? It's three times quicker than it was before. This is a very good improvement, right? But we discussed how, you know, minorly changing things could not be the best strategy to actually fix things. So what we can do, Kubernetes has got something which is like the AWS auto-scaler, but just for applications. And it's called the horizontal pod auto-scaler. And if I can see where, there we go. So the horizontal pod auto-scaler, what it's basically saying is which application should scale, right? Which kind of application should scale? So in this particular case, I'm saying, I want to scale the backend. You're saying, what's the minimum number? What's the max? Okay. And then you're saying a metric. In this particular case, you could scale your application based on things like CPU or memory, but I'm not really interested about CPU and memory. I'm more interested about how filled up is my queue? Is there a lot of stuff in my queue? So what I, and that's the goal, but how do I expose that number? Where do we get that number from? So that, so what we have here, I've got an added basically URL in my application where the only thing I do is basically expose the total number of items in the queue. And I expose that as something like called slash metrics, which is a Prometheus sort of standard for exposing those metrics. Then what I did in my cluster, I installed Prometheus, which is basically just a monitoring tool and time series database. So what is basically doing just, every 10 seconds is going and checking that number and then storing it. So later on, I can do query on it. And what kind of query I want to do? I want to make sure that the number is always below 10. If it is more than 10, I want to grow the number of backends I've got. Okay, so the combination of exposing the number and having the auto-scaler pointing at it, then it's gonna make automatically scaling happen. So let's see if it works. Hopefully it does. So I can create the HPA, the horizontal port auto-scaler in the same way I created everything else. And then at the moment it's saying un-node because it's just collecting the metrics. And hopefully it's gonna give us some reasonable number. So you can see there, target's 262. That's the number of messages currently in the queue. And then you see the number of replicas is three, which is what we had at the beginning. What's the number now, right? Kubernetes has realized that there is, we passed this threshold of 10 messages in the queue. So it's scaling out. How can we check that? So Kubernetes has got another command called describe. And then describe has got two parts. So the first part is called conditions and the other one is events. So you can see the event is basically saying, hey, successful rescale, I noticed that we passed this threshold, so I scaled to six. And then the next line reads, we are still over 10, so I'm gonna grow again the number of backends. So we've got number 10. So if I check the number of application up and running, you'll see I've got 10, effectively 10 application consuming messages from this queue. What will happen next is that, eventually we're gonna finish this, to process all of this transaction from the queue, Kubernetes will realize that the number is below 10, it's gonna start draining nodes and applications. So we've got like, in the same way you have the auto-scaler on things like ECS, then we've got this auto-scaler for applications where we can point to specific metrics within the application itself. Cool. So I deployed everything locally. But you can imagine that in the same commands, the same sort of specifications that I showed you today, then you can lift and shift that and get it into ECS, which is Amazon managed Kubernetes service. And generally, the way it works for EKS is that Amazon provides you with three EC2 instances in different AZs, and then there is an ALB on top, and that ALB is just managing the request which is coming through the API. And then inside of each of these nodes, you've got something called SCD, which is the Kubernetes database, which is just synchronizing and then keeping everything up to date. So that's why if you looked into Kubernetes and you probably realized there are things like GKE, so Google Kubernetes Engine, and then AKS, so Azure Kubernetes Service, you probably realized that these two are free, but Amazon is actually charging you 20 cents per hour. The reason being you've got three EC2 instances, one ALB, and these things cost money, whereas Google and Azure, they actually use shared infrastructure to give you these masternodes. So that's basically the reason why for them. So this is expensive, whereas for Azure and Google, it's actually marginal costs for them. So that's basically all I wanted to say. To say there are a couple of lessons learned, at least for me. The interesting thing that we did today is basically we had, well, we had one node, but you can imagine we're having three nodes, and what we did is we basically started with an application, we scaled manually to three, and then what we did, we basically triggered the auto-scaler. So that eventually what it could do is it could fill up all of the spaces inside your servers. So I don't want to be back to the same problem we had before. So it turns out that you can combine the horizontal port auto-scaler with something like the auto-scaling groups in AWS. So when you have all of your nodes, EC2 nodes filling up, what you can do, you can trigger the auto-scaler and just get more nodes, and continue scaling up with the horizontal port auto-scaler. So generally in Kubernetes, we've got like three types of auto-scaling, so we've got vertical auto-scaling, the horizontal auto-scaling, and this is the cluster auto-scaling. The other interesting things, I don't know if you've probably realized, but if you look at Kubernetes, what Kubernetes does is basically deploying containers. And in containers, you can think about containers as blocks. And then, you know, applications have a memory and CPU constraints. So some are more CPU intensive, some are more memory intensive. You can think about, you know, blocking in Tetris.  But the interesting thing is, it's gonna try and pack these containers as closely as possible. The last, and I'm done, I promise it's the last two slides. So the other interesting reason why I really like Kubernetes at least as a developer is that, in reality, all the commands you see me typing on the screen, they're actually basically just API calls to the Kubernetes master node. And then you could think of that, you could write your own kubectl and do more crazy thing than just deploying stuff. That's it. Question one, about Tetris thing, we actually use Kubernetes extensively, we also place this thing. Have you tried somehow to manually or customize this thing to be able to keep Kubernetes completely Tetris more or less correct? I think, so the short answer is yes. A slightly longer answer is, depends what kind of application you are building. Usually Kubernetes can only measure these blocks if you provide limits. So you need, so you saw earlier that we had like a description of what the deployment should look like, but there is a section which I didn't have which basically defines how much memory and how much CPU that process can use. And then Kubernetes will look at those and then it's gonna play Tetris with those numbers. Now what happens if you don't provide the numbers for limits and request? Then Kubernetes look at the blocks and it looks very, very thin. It's basically a dot. So it's gonna place it inside the first node and then the second one goes in the first node and eventually it's basically gonna say, well, these blocks are weightless, right? It's gonna keep filling even if there is no space on the node. So it's really, really important. When you design your autoscaler, you also design the request and the limits and you test your application. That's why usually you combine a vertical portal to a scalar with the horizontal portal to a scalar. So what is gonna happen is you're gonna start with very little memory. Your application is gonna grow vertically and then when that is actually okay and that's enough memory for your application, then that's when it goes horizontally. Question about the previous metric that you were exposing. So the HPA that is set for space upon the number of metrics, right? How do you expose them that are coming to metric? So that's like a fairly big topic. So Kubernetes comes with some built-in metrics. Then we have got something called the metric server which expose things such as CPU and memory and space on the nodes and stuff like that. And then on top of that, you can have what's called a custom metric server which is what I installed. And that custom metric server is basically able to ingest metrics which are not just Kubernetes metrics, but any metrics that you want to expose. So the combination of two, these two basically gives you what you want. So in my case, I didn't really care about CPU or memory or nodes. So I basically installed these custom metrics, made sure that it scraped all of the metrics from my apps and then used those metrics from there. So the short answer is you should install the custom metric server. So that was probably in like the Kube system? No, it doesn't come by default. So if you're using EKS, it doesn't come by default. You need to store yourself. If you're using AKS, so Azure, I'm not trying to make a, it comes by default. Thank you. Thanks.


Hi there, this is Krishanaraj from Bytescout and in this video we will be going to learn about how we can offers get our JavaScript code. Well, as a programmer, let's say we have developed one website which catering to our client needs perfectly. However, there are many security threats out there like everyday hackers creating a malicious program to gain unauthorized access to our application or devices. And many times our software code itself provides the entry point for the attackers. So now what exactly the offfuscation is? Well, the offfuscation is one of the security techniques to guard against the application hacking. As per the Wikipedia, offfuscation is an act of process of modifying source code so that it is much harder to read and understand for a hacker. Almost all the code can be reverse engineered with enough skill, time and effort. So to prevent it, programmers may offfuscate code to prevent temporary or deter reverse engineering. There are some technique which is used to offfuscate most scripts like offfuscating the format of the code and next is adding extra lines of the code into the main code. Another one is substituting variable names in the code and the last one is offfuscating the code itself. Now let's understand each of these. So what do you mean by offfuscating the format of the code? Well, it means it removes all the nice line breaks and indentation that makes our code readable. So let's say if you have this type of code then after offfuscating of formatting you are left with this type of large ugly piece of code. Alright and the next is adding extra line of code into the main code. So in this case we need to insert some extra code into our script that does nothing. This is just to confusing an analyst. So if you have this type of code then the final code would be looked like this. Well, while one or two extra lines of code won't do much but imagine what happens when you have hundreds of these lines within your code. It quickly becomes difficult in determining which code is valid and which is not doing anything. Okay and the another one is substituting variable names. So as a programmer first thing we learned was give a meaningful variable name in the code but this methodology does the exact opposite. It changes your meaningful variable name to some meaningless words. So when you look at the example here it's easy to figure out what the variable on the left hand side is doing and what is the meaning of it. But once a variable substitution is applied it becomes much more difficult to figure out what the variable is used for. Alright and the last one we are going to talk about is off-fuscitating the code. So in this case it is nothing but a process of modifying the source code so that it is much harder to read and understand. Now if you see this example we have two lines of code one is setting the product name with the value gun and the another one is setting its price to 50. So now when the off-fuscation is applied to them it would become this. Now if we see this carefully then you can see that from the first line it splits out the first letter of the gun and conkinate it to a blank character which is really adding nothing to it and then it appends of hex 70 plus 5 which is the value for the letter U and then it conkinates to a character N so this whole line just creates the word gun but in a way that's difficult to parse by an analyst. So both of these lines are an example of data off-fuscation. Alright now in the next video we will perform a demo of how you can off-fuscate your js file step by step by using an open source JavaScript off-fuscator tool. So stay tuned with us.


Hey, what's good y'all should boy down from the down show in France or we're back from the kpop reaction So today I am doing it see want to be dance practice. So I'm checking this out I can see where it's gonna be ready to go. I'm already looking to support to something dope already to keep 100 with you So let's go and get into this if you enjoyed this video, please send me a list of videos So watch like I said before as promised I wanted to make sure that I'm acknowledging the women in the kpop world as well So if you have more bands for me to check out, please do me a favor leave it in the comments And I'm definitely watching up for performance videos dance practices and music videos for sure. All right, let's get into it three two one You have the volume, right? Okay Okay Way to play with yeah lines lines lines lines Or the result saying that not only just your lines, but the nice angles with the poses with the arms If you go back Check it out Look at the arms. Look at the lines and the angles that they hit watch clean Clean look at that. You see that Boom boom boom. Yeah, boom boom boom. Yeah, yeah Playing with their lines Yep, come on Again, you see you don't talk about playing with the lines and the shakes of their arms Okay, yo, okay So again, I Don't know a lot about it. See, you know what I mean when I watch these videos they are coming from like a raw response Only so the fact that already that if you pay attention to the choreography Which I need to turn the caption or if it lets me it's unavailable dang But what I wanted to do was basically pay attention to like what band uses what some bands got crazy Footwork some bands got a great balance and some bands are very groovy and smooth And you got some bands that got great formation shapes and lines Boom. So here we are Clean already even when you pause it in 34 seconds. They already got they clean. They're very very clean Like they have lines of their bodies. So, you know saying they turn a timing is great That's a crazy sb. Okay Way to change it up the energy nice so precise Yes Let's go See the one thing is for sure is this there's different textures now Everybody's gonna be super super fast now everybody's gonna be like wild and crazy Some some artists got very clean choreography. There's times like when I watch us your videos It's not the same texture every single time when you watch Michael Jackson videos It's not the same texture same thing with Janet same thing with Beyonce. They can all change up their texture Boom is he's coming with a very clean level changes and shapes and lines That's the first thing I'm paying attention to so you can't just hurry up and compare them to somebody else You got to just pay attention and I don't know a lot I'm still learning about the k-pop world, but watching them dance They plan with a lot of lines and shapes could look at there like look at the lines. Okay, you got three artists in a bag knees bent Two in the front bull lines is clear if I'm lying, please tell me Exactly great job But you know they got spirits and bulging the wacky because them arm placements that they set up that big key change I like that. Who made this beat? Yeah Let's go No, no, no Like they lying game. It's crazy. Yeah You see where they powers that dot dot dot dot. Let's go Huh the reason why I'm doing like it's like because again Knowing your strength of your band and if you're a dance group knowing the strength of your group You don't I don't watch I don't watch them and feel like I'm watching another band I feel like I'm just watching them Like I'm just watching them. I don't feel like I'm watching BTS I feel like I'm watching none of these other male groups I feel like I'm really just watching them in their own style of how they hit and move with their music It's a lot of control and what I mean my control is there's nothing sloppy There's no it's like nobody's kicking higher than another person. It's just clean Giving credit where it's due They're so clean. That's it's so rich. It's ridiculous how like their arms is really be Pin it and writing out what they want to say. That's crazy. I expect nothing less Let's go Again, even when they pick up their pace on these speed lines shapes poses bow. Come on man. Listen listen Let's go Again, what did I just say playing with their lines and shakes and poses? Tap tap. Let's go. I wish I could listen to the words. They took the caption off I wanted I wanted this this like read what they were saying Shout out to the choreographer or the choreographers and directors Let's go. Hey, you know, that's another thing about them being clean their outfits, too They put everything instead. It's a whole presentation Even in a dance practice Again again stage ready Stage ready tour ready I mean that choreography is stage tour ready What more do you need to do only thing you need to do is get behind the camera and do what you need to do to make sure This looks magical, but in that word for it's good My favorite part about this band and about this group bucket about this k-pop group is It's the fact that it was like you think you see them playing with their power Like you go my straight kids and you kind of see what makes them stand out And the more and more I'm learning about these bands you can see like all your strengths right off the back when I started seeing the Choreography from the very beginning of this you want to be dance practice was they had clean lines and shapes There was nothing off Now if you knit picking, okay, yeah, whatever, but overall if you sat back and just watch this it was clean as hell Like it was clean. It was very very clean. I love that. I love that Yeah, so I already knew with the music video. I'm probably gonna be when I watch it It's gonna be clean. It's gonna be nice and great fashion. What do you expect? Women's fashion is crazy So shout out to this band for real if you all enjoy this, I will watch more Please just let me know. Okay, but in that I thank y'all for the question me want to watch this I'm gonna continue to watch more, but you gotta let me know other than that. I have a beautiful night. Peace


My cancer was detected in 2013, it was left breast, completely cured, treated and then in the month of September 2020 or so, I developed secondaries in my pelvic bone which was detected by this hospital.


Income Tax 2021-2022 Tax Software Earned Income Tax Credit, the EIC with one qualifying child. Get ready to get refunds to the max, diving into Income Tax 2021-2022. Listener Tax Software, you don't need Tax Software to follow along, but you might want to have access to the forms and schedules, which you can find on the IRS website, irs.gov, irs.gov, starting point. It's going to be the single filer, Adam Smith living in Beverly Hills, 90210. We've got one dependent, which will be a qualifying child for the purposes of the calculation of the child tax credit. We're focused here on the child tax credit and with one dependent and prior presentations. We talked about it with zero dependence, and then we'll go on to two and three or more in future presentations, hopefully. So, we have starting out the W-2 income, the 19-5-49, that's an unusual number. We'll explain it in a second here. We've got the 12,550 for the standard deduction, bringing the taxable income to the 6999. If we follow them to page two, the tax is calculated at the 698 by the software for the federal income tax, and then we have our credits down below. Now note, we have two things that will typically be playing kind of together here down below with regards to the credits. One's going to be our focus this time, the earned income credit, and the other is a focus that we looked at in prior presentations. That's going to be the child tax credit. So, the dependent child often will be a component of these two major credits, both of which have a large, if not complete, refundable portion to it, meaning that it could take your tax liability basically below zero. So, in this case, even though we only had a tax of the 698, we basically are ending up with a refund of the 6,590. That's not really a refund in this case because it represents money that we're receiving, not refunded to us. It's more like a benefit program. That's in essence what it means to be in this refundable credit area. Now note that we have the credit at the 3,618. The question people often have is if, well, if I have one child, then do I get to take the earned income tax credit? That's typically what will be answered on IRS websites. But then you really want to know where you're going to maximize the earned income tax credit. So, for example, we can think of it as a curve. We're thinking of it as a curve with one child. We'll look at single versus married. But if you have the one child, then if you go over these thresholds for AGI, you lose the credit. The maximum of the credit is the 3,618. That's the maximum credit. So that's the peak of the curve when we're talking about one dependent child or one qualifying child. So now we're at the peak right here. You can find that by looking at the IRS, the 1040 instructions. I'm looking at the tables for the earned income tax credit. And if I look first at the non-married individuals and say, well, where can we max this thing out? It's somewhere between the 10,600 all the way down. Or as my income goes up through the threshold of the 19,550 or 19,549. So we're at the upper threshold, the upper peak of income threshold. If we go up above this amount, then it'll start to go back down. So you can have anywhere with your income between your income anywhere between with the one dependent anywhere between that 19,549. And if I bring my income down all the way down to the threshold of the 10,600, I'll still have that maximum credit. So if I brought my income down from 19,549 to let's say, what did I say it was the 10,600, the 10,600. So now I've got 10,600, I'm still maximizing the credit calculation at the 3,618. Now, if I go below that amount, I'm going to start to lose the credit will start to go down. And you can see that with the table here. So that's where the peak of the credit is if I start going below that earned income of let's say 8000 earned income, then the credit here is going down. If I say it's going to be 7000 earned income, then we have it going down. If I say it is at, let's say 3000 earned income, then the credit is going down. If I say we have 2000 earned income, the credit is going down. And obviously, if I don't have any earned income, let's say it was $100 of earned income, then you get a very little amount of the credit. If you had no earned income, we would be at zero. If we bring it back up, we bring it back up to the lower threshold of the 10,600. That's the max, we got the 10,600. So now it's back up to the max, the 3,118. If single, that max extends all the way down as we saw to the peak. We're at the peak. We stay at the peak all the way through the 19,549, I believe. So we can go 19,549, and we're still at the peak maximizing out the credit. And then if we go above that, we're going to say, okay, what if I was at 20,000? Then the credit is going back down because it maxed out at the 3,618. If I go to 22,000, the credit is now going back down because we're over the income threshold. If I go to 23, let's say 25,000, and we can go up as high as 42 before we lose the credit entirely. So if I bring it up then to 2029,000, then credit's going down. If I go up then to 20, let's say 35,000, 35,000, credit is going down. If I go up to 37,000, then credit going down fairly substantially. If I go to 40,000, 40,000, still getting it, but it's pretty slow, pretty low. And if I go up above 42,200, then I lose the credit. That's the maximum if I'm single with the one qualifying child. So that's the general idea of it. Now, the couple other things that you can take into consideration is if your income was lower than the threshold, let's say it was like 500 or 5,000, therefore you'd have a lower calculation of the tax, and your prior year income was higher, 2019, for example, jumping over to that item. Then that's two years back, I could say, well, what if this income was higher? Then I would say, okay, if I had the, let's say 15,000 here, or what was the end of my threshold, it was down to the 19, so 19,000 somewhere in that area, so let's just say 16,000. Then I would be calculating based on the 16,000, I'm maxing out the credit because I'm using the prior 2019, not prior year, but 2019 number in order to do the calculation. So let's bring it back down. If you had combat pay, you'd have to break that out separately there. And then you might also have a situation where you have someone who has combat pay. If they have combat pay, then say they only made 5,000 here, and then they had combat pay. That's usually going to be shown in box 12 with a Q of the W2. And so if I said they had another amount, let's say, let's say 7,000 in combat pay, then if I don't elect to include it in EIC, what will happen is the income will still only be 5,000 because they got paid in combat pay, which they don't have to pay taxes on is the general idea. But you might want to include it for the purposes of the earned income tax credit because it would be better. So I could go back on over and say include the combat pay, and that would then increase the calculation, bringing us up to the max, even though my income is only 5,000 for federal income tax purposes. That's the other kind of thing that's a little bit tricky. I'm going to remove that for now. Get rid of the combat pay for now.  So I'm back to the 5,000. Now, if we were married, if they were married, I could say, okay, let's say they got married. Where are the thresholds? And so now we've got married. And we're still saying that there's only one qualifying child. So two people got married. Now, first of all, let's first go back to the maximum. So if I go back to the max, which was around, let's say the max was at the 19, the 19, 5, 4, 9, 19, 5, 4, 9. So I'm going to say wages, 19, 5, 4, 9. So now you've got the maximum credit of the 3,618. Now, let's say they got married. Let's say Adam got married to someone who doesn't have a child, a qualifying child. Then if their income was over the threshold for married filing joint, then you'd lose the credit entirely. And notice the threshold isn't double for the single. It would be, it's only at 48. So if it goes up a few more thousand dollars, you actually kind of lose the credit. So you could, so let's imagine that happens. Let's imagine they got married. So they get married. Adam and Eve got married. And then the other spouse here, let's say that they earn, they earn 28, 559. So that would take us over the 48, 108 threshold. So if that was the case then you would say, okay, they got married. They still got the one qualifying child and they wouldn't have anything for the EIC because they would be over the threshold. So you got two people over the threshold due to the income level there. So again, in that instance, if they were filing separate, you would have at least one of them that would be getting the credit for the, that would be maxed out at the 3618. If they get married, then you might lose it. So you could see there could be possibly a disinceptive for marriage in this case. The second one wouldn't have not been receiving an EIC because they're over the threshold if there was no children involved in that case. Now if the other one was single and they didn't have any children and their income was like 11,550, they would be getting a credit of 1502. So let's say their income was 11,550, 11,550. Now you're at the 3199 and that would give you, you'd be getting the credit of 2,722 is what we're calculated here as opposed to if they were, if they were separate, you would think that one would be getting 1502 plus the 3618 or 5120 because you would think if they filed separate, one would be getting the maximum with no children of 1502. The other one would be getting the maximum of 3618. So it's possible that again the marriage could actually be disincentive in that case possibly. And we'll talk about two dependents later but let's just imagine now they got married Adam and Eve, they were in the exact same situation. They were both maxing out the credit at the 3618 and they both had a qualifying child. They got married so now they've got two qualifying children married filing joint and their income is now at the 3998 because they were both maxing out the credit at the 19549, which is the upper threshold for it to max out the credit as a single, single filer to max out the credit as a single filer as we saw here. And so they would be maxing that out and then if I go to page two then, so now they get the credit of the 315, 3,115, which again you would think if they didn't get married in that instance, they would both be maxing out the credit at 3618 times two for the two single filers. So you can see there's a significant kind of difference which could be a negative difference when getting married with the credit as far as I can catch. So that's something just to keep in mind because it can be kind of a shocker possibly. Okay, so now let's just get a feel for the curve. If you're married with one qualifying child, how can you maximize the credit out? Well, you can go as low as still the amount of the 10,006. So if our income was as low, if I go back on over here, I'm just going to put income in one of the two 10,006. Then if I go back on over, the credit is maxed at the 3618 and then we can go as high before it starts going back down again. We can go as high all the way over to the green area to the 25,500, 25,500, 25,500, 25,500, and then go back on over. It went down a little bit. It's 25,000, 25,499, 25,499. So there's the peak and then if you go beyond that, it starts to go back down. So then I'm going to say if income goes to 28,000, the threshold is going back down. And if we then go back down to 2025, or let's say I was going up 32,000, 32,000, then it starts to go down. If we bring it up to 37,000, then it's going down. And then if I bring it up to 40, let's say 42,000, then it's going down. And if I bring it up to 45,000, then it's going down. And if it goes over the 48,200, about we lose the credit entirely going the other way. If we bring it back down to the upper threshold to maximize it, that was the 25,499, 25,499, then we still get the max credit. We then bring it down all the way down to the bottom. It flattens out. And so you're still at the max and you can bring the income all the way down to the 10,600. So 10,600, 10,6 and we're still good. If I go below that, like if I go to 8,000 married filing joint where it goes down, if I go to 5,000, then it goes down. If I go to 3,000, then it goes down. If I go to 1,000, then it goes down. And if I don't have any earned income, then I lose it, right? So that's going to be the basic kind of idea of the curve that you want to kind of have in your mind with regards to marital status and the number of children. In the following presentations, we'll take a look at two qualifying children and then three or more.


Hey, this is Brett, and this 2018 Chevy Camaro ZL1 is stock number 13079Z. I am here at Summit Automotive in Fond du Lac, Wisconsin, you're new and use sports car headquarters. This 2018 Chevy Camaro has the 6.2 liter supercharged V8 engine. It's paired up with the 10-speed automatic transmission, puts out 650 horsepower, and this car has been fully-safetyed and inspected by our service shop, has a fresh oil and filter change, has all the fluids have been checked and tapped off, and this car is 100% ready to go. I'm going to go all the way around inside, start it up, take a look under the hood as well in this video. Red hot is the color, and I shoot all my videos in 4K, so if you have HD capabilities on your computer, tablet, smartphone, or television, I highly recommend turning them on right now because it is your best way to check out the quality, condition, options, and cleanliness of the vehicle before seeing it in person. If you like the video and how I do things here at Summit Automotive, consider clicking the subscribe button on my YouTube channel, the lower right hand part of the screen, and then click the bell notifications and you'll get updates every time I do the videos of our new news inventory here at Summit Auto. This one comes with the 20-inch painted alloy rims. It has the ZL1 Brembo brakes on here. In the front, we have Michelin Pilot Sport tires. These are 285 30 ZR20s, and these tires have a really good amount of tread left. I know you can't really see that on the inside, but I would say probably 80, 90% of the tread left on those tires. In the front, front fender is in excellent condition. I didn't see any major dents or dings on there. Here it does have the HID headlamps, the LED running lights, and the LED fog lamps. The front bumper and lower valance are in very nice condition. I didn't see any major dents, dings, cracks, or scuffs on that lower valance, and the front bumper much of the same, very nice condition. The hood is in great shape on this car. I didn't see any dents. I didn't see any dings on there, and it does have the heat extraction hood. Other side front fender is in great shape as well. No major dents or dings on there, and the passenger side rim. I didn't see any major scuffs or scrapes, and those rims are in really nice condition. Now, as you go down this side of this 2018 Chevy Camaro ZL1, take note of how clean the body is, how reflective and mirror-like that paint is. I take these HD videos so if you are far away, or even if you're close by and you just cannot make the trip down, but you're still interested in purchasing the car, you can see the car, hear the car, and have confidence in the vehicle that you're looking at before you even get here. So when you do get here, there's absolutely no surprises, and you can make a smart and informed buying decision from wherever you're at. And if this video helps you make that buying decision, let your salesmen know that you saw the video that it was helpful and that Brett sent you. On the back, we have 30530 ZR20s, so a little bit wider tires in the back, and those tires I would say have right around half the tread left on them. I didn't see any scuffs or scrapes on that back rim. This does have the capitalist feel-fill. You get the LED tail lamps back here, the backup parking sensors, and the quad-tipped dual rear exhaust. Rear bumper is in very nice shape. I didn't see any major dents or dings on the trunk lid. And speaking of the trunk, we'll go inside here. Very nice and clean. Under here is your tire inflator kit, as well as your RPO codes. So feel free to pause it and take a look at those to make sure that you're getting all the options that you're looking for on this car. If you're an RPO code person, back storage area is nice and clean, and that trunk lid shuts nice and solidly. Coming around to the driver's side, just as clean as that passenger's side, I didn't see any major dents or dings over here. Looks pretty good. And for full disclosure, this back rim is in very nice condition as well. On the rest of this side of the car, the doors look really good. Does have blind spot monitoring, heated mirrors inside. The ZL1 package gives you the recarrow suede and leather seats. Both of these front seats are heated and cool. You get the ZL1 badge, the recarrow badge on there as well. The back seats are just as clean as the front seats, notice you get the red seat belts throughout. And this one does have a wireless cell phone charge pad right there as well. You get the Camaro plate right there, factory floor mats, heads up display, memory driver's seat, power windows, power locks, and power mirrors, and it does have the Bose sound. And you can see the ambient lighting on there as well. We'll hop inside, check out the miles, the radio, and everything that this car has to offer on the interior. So I think I have to start the vehicle to get the miles on here. So we'll start that up. ZL1s are always just extremely loud at start up. You get the nice digital instrument cluster there, 12,690 miles on this car. You do get the digital speedometer and it's all very nice and clean. Then you get the suede-wrapped steering wheel, flat bottom on there, cruise controls, and radio controls on the left as well as your heated steering wheel control paddle shifters with that 10-speed automatic transmission. It does have the heads up display. Let me turn the lights off for a second so you can see that. That's a pretty neat deal. And then on the right you get Bluetooth information center controls and audio controls. This one has the Chevy MyLink system. You get the factory navigation system there, which you can see is working nicely. You also get a projection manager. You can project your cell phone to the screen via Android Auto or Apple CarPlay. You get AM, FM, and SiriusXM radio capabilities on here. This is also where your backup camera shows up.  Your 10-speed automatic transmission. Stability control. You have your different driving modes here, snow, ice, track, and sport and tour. You can select. Notice the ambient lighting on the doors. That's pretty sweet. You get the suede-wrapped dash, passenger side format and seat are in excellent conditions. Smells very clean inside this car. I don't think it's ever been smoked in. The headliner is in great shape. You do get the power sunroof, map lights, home link buttons for your garage door security systems, and lighting systems on star and SOS buttons in the rearview mirror. We'll take a quick look at all the lights and we'll check out that exhaust a little bit and then we'll take a look under the hood. So after they've been running for a minute, they're not quite as loud. It runs nice and smoothly. I would personally like to thank you for checking out the video today and hopefully from this HD video, you will have been able to verify the quality condition options and cleanliness of this Camaro all the way around inside and out. There are those HID headlamps, the LED running lights and the LED fog lamps. They are all working nicely and very bright. Under the hood, we have a 6.2 liter LT4 V8 engine. 650 horsepower engine bay is very clean, runs very smooth, shocks are doing a nice job holding that hood up. And once again, this car has been fully safety and inspected by our service shop, has a fresh oil and filter change, all the fluids have been checked and topped off. And this car is 100% ready to go. There is your emission sticker. And I would highly recommend this car from a quality and condition standpoint. And to see more pictures of this car or one of our other 450 new and used cars, trucks, SUVs, minivans, Wranglers, halftones, 3 quarter-tons, one-tons, Camaros, Corvettes, Challenges, Chargers, Mustangs, GT500s, you name it, we've got to go to that website right there at SummitAuto.com, full pictures and descriptions of every single vehicle from two locations all at SummitAuto.com. And if you'd like to check out more HD videos, you can go to youtube.com.com or summit auto. Remember to like, subscribe, and share on this video and all the videos that you see there. Click the bell notifications, you'll get updates on the videos I do each and every day here at Summit Automotive. In fact, in a second, you'll see a link to subscribe to my YouTube channel on the upper left, a link to more Camaro videos I've done in the upper right, a link to this vehicle on our website in the lower left, and a link to one of our latest YouTube videos in the lower right. Click those, check us out. And we're super excited to help you with this Ultra Clean 2018 Chevy Camaro ZL1 in red hot clear coat. Thanks again for checking out the video. Remember to like, subscribe, and share on my YouTube channel. I really appreciate it. Thanks again.


Okay, so the bed forms that we get vary with the flow speed. So at low, relatively low, flow speed, fast enough to transport sand for example, we tend to get ripples, which we've been talking about here. So ripples are relatively small, and basically the wavelength at the distance from crust to crust is often 50 centimeters or less. They also don't grow very high, if they're pretty closely spaced those slopes can't get very steep. And so usually the height is less than a few centimeters. So we'll say the height is less than four centimeters here. So as the flow speed increases, the tops of the ripples tend to get eroded off very easily and the distance that grinds saltate gets large enough that it can be 50 centimeters or more. And so you end up with a change in the geometry. So as the flow goes up, we can say that the ripple crusts erode and the saltation length is greater than say 50 centimeters for many grains, not all of them. It depends a lot on the grain size. But what happens then is that the ripples flatten out and you tend to get much larger bit forms that reflect that longer saltation length and you get dunes. So these are subacreous dunes, separate from windblown dunes, but they tend to be, they have a very similar geometry to ripples, but they tend to be much larger. So one of the interesting things is because of the interaction of the sediment and the fluid dynamics, there's not a gradation in size between these ripples, have a maximum of 50 centimeters for the wavelength, but dunes have a minimum of about 80 centimeters in wavelength. And they can actually be meters or even tens of meters in some cases. So there's a distinct jump in size when the ripples start washing out because the flow speed gets too high and you form dunes. So then when you get to a high flow speed, the dune crusts start eroding away and that tends to flatten out the dunes and the grains are just moving downstream so fast that they're not really quite saltating anymore. There's not very much upward motion and you end up with flat bed, you lose your bed forms here and you end up with planar lamination, we usually call it upper planar lamination and that's because it's at the high flow speed. So one of the really nice things about this is that as flow speed changes, we get different bed forms that gives us different cross lamination, cross stratification and planar lamination in the rocks and so we can use the geometry of the layers in the rocks to tell us about flow speed. So that works in addition to the grain size variations with flow speed and so we have two indicators that really help us a lot to interpret the flow from sedimentary deposits and in sedimentary rocks. Thanks for watching.