Hey, I hope I'm audible. So we know it's the last day of the conference, and everyone has a lot to think about. You're pretty saturated, but we're hoping we can give you a little bit more, right? So we're going to be talking about Project Carvel today. But before we jump into that, a little bit about ourselves. So my name's Somyk. I work at team.tanzu.com. And I mainly work with developer experience tooling. And a part of my job is to maintain the project we're going to be talking about today, Carvel. And I'm here with my colleague. And hi, I'm Daniel, as you can tell by my name, and probably not my accent. I'm from here. I work in the Tanzu team and the Spring team. I do Java for a living. Don't judge me. And here are our socials. Feel free to reach out if you have questions, if you have feedback. We love to engage. Is the font size all right for the people in the back of the room? Yeah? All right. A little bit more? This? Cool. All right. All right. So Carvel. So I guess we can really hop real quick to the website maybe. So Carvel started off as a set of composable single purpose tools. And they come together to help you manage your applications and ship them to your end user. I guess the key words here are reliable, single purpose, and composable. And when we say reliable, we mean that the tools are idempotent. Like they're very repeatable in nature. And if you scroll down a bit, we'll be taking a look at the tools you're talking about today. So we'll mainly be talking about the first five tools you see here, and not the experimental ones. So to sort of, I guess, the best way to explore the tools is to get your hands dirty. And that's exactly what we'll be doing. So maybe we can hop back to the terminal. All right. Let's get rolling. So what do we start with? Right. So we'll be starting off with YTT. YTT stands for Yarmil Templating Tool. And that's exactly what it does. It templates Yarmil. But what sort of sets YTT aside is that YTT understands Yarmil as a data structure, which means that you can shape Yarmil in unique ways. And everything that goes into YTT is valid Yarmil. And everything that comes out of it is valid Yarmil. So maybe you could take a quick look. Like, do we have some configuration to play on? So I want to point out that any Yarmil that's valid is OK for YTT, right? So if I do this, I can pass it into YTT. And it works. It doesn't have to be Kubernetes resources. So if you want to template your GitHub actions, your config for, I don't know what, you can use YTT for that. And so we already have some basis for a Kubernetes config, because this is KubeCon, right? So fairly straightforward, normal config, service deployment. And so we can use YTT and experiment on that. So I'm going to open a second terminal here on the right. And once I change any of these files, I'm going to run a command. And the command is going to be clear on my terminal and then run YTT on all the files in this directory and then pass them into YQ to have some coloring, right? So here I have my file. And if I go into the config here, I change the port to foobar, capital, updates on the right. OK, so we have infra to work with YTT. What should we do? All right, so how we supply YTT instructions is that we use sort of special commands. And let's start off with a variable, maybe. Let's see what it looks like to sort of replace a value with a variable now. So let's do a node port. And I'm going to compute it dynamically, right? So here I'm writing YTT code that's executed. And then I can use the output of that code in the program. And it changes the value here. So now that we have a variable place, maybe we could try out a function. So I see that we're using labels multiple places. So let's sort of put together a function that supplies those labels and sort of de-duplicate our YAML directory. So we could write a function in YTT that looks like this. And it could be any function that actually looks like a function. But the reason why we use a function and not a variable is because with functions, we can do this. I can take the YAML directly. And this being valid YAML, it can be returned by the function. So I can use it here, labels, right? And then I guess simple app, right? Simple app. So I have labels here, labels. And then I think I have some more here, labels. So of course, nothing changes. If I change my label here, some label, it gets updated in all the places. I think this is like a good place to show how YTT is virtually incapable of producing invalid YAML, right? So maybe if you try to mess up the indentation, it actually just blows up. Right, this is not valid YAML. If I save, it's going to tell me, well, you're trying to do something that's not allowed here. It's not a map. It has a value. So I'm happy with this. And I get feedback immediately. I don't have to wait until I try to apply it to the cluster for it to blow up. YTT already tells me this is wrong. So let's try something more fun, right? So we have a list of ports over here. How about we try to sort of create a for loop and loop over them, loop over a few values? Right, so we have node ports. And I could do ports manually like this. I can also do say, oh, my port is going to be 30,000 plus I for I in range, I don't know, four, right? Something like that. It explodes because the node port doesn't exist anymore. And for node port in node ports, right? And I have to end my for loop here. So now I have node ports like this that come from this list, this weird list. Yep. And so this is where you might notice that this looks a lot like Python. That's mainly because YTT accepts instructions in Starlark, which is like a dialect of Python, right? OK, so we have done some funky stuff now. But we do need our users to be able to sort of supply some values when they're consuming a configuration, right? So let's look at what accepting values while the configuration is being consumed looks like. Right, so for using values that comes from outside or data that comes from outside, there's a YTT module. Think of it as a library. And so I'm going to load this data module, it's called data. And then from here, I can reference it, data of values. And then I can ask for, say, a channel that should come, that should be supplied to the program. So of course, it doesn't work because nothing is supplying channel here. So I could run the same command with YTTF dot, and then data value channel equals KubeCon, for example. And then in that case, it gets templated in from a CLI flag. So I guess this works just fine if you have one value, but more often than not, you'll have a set of values. So you can sort of supply a file with your values in it so that you can replace, you can supply multiple values at the same time. Right, so in this directory, we have a file called data values dot YAML. It could be called anything. And in here, I can supply the channel. So channel is going to be, I don't know, testing. And so to YTT, this is just a YAML file. So if I want to turn it into a thing that provides data values, I can annotate it and saying, this is data values. And so now this has passed from here. We could be passing the node ports, I don't know, 1, 2, and 3. And it's in the config. So in here, the node ports could be data dot values dot node ports. And so now my node ports come from this data value file.  You don't want them to know what YTT is most of the time. So you can actually use another flag, which doesn't require the annotation. So I'm going to copy this data values file, put it one level up so it's not included by default. And I change it. So we set values in here. I'm going to do node ports. It's just one channel is production. And so what we say is our users don't really have to know the details of how to work with YTT to just supply a value file. So we do this, and we can do YTTF dash. And then data values file, it comes from this YAML file, which is a normal YAML file. And so now we have our production channel and our port being templated in. So let's do something interesting. Let's change up the values file and maybe turn the port into a string. And I think that'll work right now. Right. So if I do this, and I change this to a string, then I have node ports with the wrong type here. And users might try stuff like this, and you don't want them to be able to do that. So YTT has a concept of value schema where you can sort of restrict what values a user can supply. Right. So I have my value schema prepared already, so I don't have to type it. But it's, again, it's a normal YAML file. It has a special comment saying, this is the schema. And it requires a channel that is empty, a node ports, which is an array of integers, and then a namespace. And if I save this, then YTT complains. It tells me, well, on line six in your data values YAML, you're supplying a string. And it doesn't match the expected type, which is integer, which you find here in this value schema line four. And you can actually go fancier with your validations. You can have length checks in place. You can even have a lambda function, which takes the value and sort of verifies it in certain ways. Right. Yeah. And so maybe one thing we haven't shown, this is happening in comments. So if I disable the YTT coloring, this is just YAML comments. With YTT, I can still do comments. This is a comment comment, right, as you do need that. So I guess we're at the stage where we have like a way of shaping our YAML configuration. But what YTT also helps you do is that it sort of helps you apply overlays to large chunks of YAML files, right? So you can sort of shape your YAML using some functions. Right. So in here in this directory, there's also an overlays file, overlays. And so we can tell it, change me this file, change it, evolve it. And the way we do this is very similar to what you would be doing with Customize, right? We are applying an overlay. And we tell YTT, find all the nodes, the YAML nodes, that match anything. And then for these, I want you to change the API version to V1, Sonic 1, the best Kubernetes version, as you all know. So if I do this, YTT will complain to me and try and help me. It says, well, we know. By default, I expect one node when you do match. But you supplied two. There was a service and a deployment. So if I do this, my deployment is now a V1, Sonic 1 deployment and V1, Sonic 1 service. And since this is a bit too broad, I want to scope it down and maybe do that just for the, let's say, for the service. So we're going to only take a subset of the resources. And I want a subset of type kind and change the service. Service, right? Save that. So now the deployment is back to the boring apps V1 API version, but the service is still V1, Sonic 1. And you can go crazy with any programming you want to happen in here. So for example, if I take this to here and I make that into a variable, so service is this. So match by service. And then I could say, well, you know what? Anything that's not a service, I don't really care about it. So here, take me the opposite of service, so not operation. Everything that is not a service, I want you to overlay or remove it. Remove. There we go. So now I only have a service because the other deployment has been removed. And I guess it works the same way if you don't have overlay to move because it just replaces those bits with an empty arm of the file. And you could, in theory, also patch on resources. And what's cool is these bits interact with each other. So you can use functions. You can use loops. And you can also have data values being fed into your templates. So in a way, it's much more powerful than customized because you could write functions that read the existing data and then change it, patch a config that is inside a config map or what have you. So I guess you can do a quick recap. Yeah, so quick recap. YTT is our YAML templating tool. It's YAML aware. All the programming happens in comments. And you can work with any YAML. Very useful. And it's a good substitute for either Helm or Customize or both, and you can combine them. You can do a Helm template if you have Helm charts. And then you want to apply overlays. But Customize is not powerful enough. Well, you can apply overlays with YTT. Or on the other hand, if you can craft your config with YTT and apply your existing Customize tools to it, if you want. I guess what's worth calling out is that you don't need to uproot your existing workflows to start using YTT. You can start using it as an additional layer. So now that we have a way of dealing with a configuration, I guess what comes next is how do we deploy it to the cluster? Oh, before we deploy it. Yes, there's one cool thing that we haven't shown. Oh, yeah. So we're doing fun stuff in the terminal. But if you just want to try out YTT, do go to the Carvel website to slash YTT. For those in the back, we can take a look at that. YTT, Carvel, YTT. And then down here, you have a playground, which basically does what I'm doing in my terminal. So it has many examples if you want to learn how to use a for loop or a function. And then you can change in here, and this is premier. And this is does yam. And as you may notice, it changes here on the right. And if I change the port to the wrong type, hello. I got the output from YTT. Sorry, you were saying deploying this. Yes, my bad. OK, so now the tool that Carvel uses to deploy and manage resources on top of the cluster is called CAP. And how CAP essentially works is that it manages resources as a group on the cluster. And so CAP already knows how certain resources behave. And you can also use annotations to sort of tell CAP to define relationships between custom resources. So I guess our config has changed a bit. So we made a more interesting config more than just a deployment config map. So if I run this with YTT, I get ingresses, services, config maps. And at the end, because we're a bit cheeky, we put the namespace in which everything is deployed at the end. I think that's fortunate because we can just use kubectl now to see how things would look different if we use kubectl instead, right? Right. So you know that with kubectl, if you're doing this, you should define your resources in an order that makes sense, not the namespace at the end. So if I try to do this, it says, well, the namespace is created, but everything else fails because the namespace got created after we tried to create the other resources. So kubectl is not really friendly with us here. So the alternative is using CAP. So in here, I'm going to zoom in again, we can do CAP deploy. And then we give our app a name. We're going to call it coupon. It uses the file from standard in. And then I'm going to say, don't wait for my confirmation dash dash yes. And so in here, we have the output. So CAP is telling us everything that's going to be deployed. So I'm going to be creating a namespace for you, a deployment, services, ingress, config map, and everything. So when CAP exits at this point, you show that all of your pods have spun up. The sort of weights for your deployment would reach the desired state. Right. So it does many things. It starts by applying things in an order that makes sense and that do not depend on how they're defined in the file. So you can see it starts with creating the namespace. Once the namespace is created, it will create the config map because the deployment wants the config map to be there. And then once the priority resources are created, then we're going to create the deployment. And then as Somic said, we just don't create it and let you write your own weight rules. We know what a successful deployment looks like. So we can weight on it and we can read the status. And so you can see it takes a few seconds to, or it's actually really fast, it takes three seconds to reconcile. And so once CAP tells me this has succeeded, it means my app is actually ready. And I can look at it once it's deployed. So CAP inspects the app that's called KubeCon. We called it. So in here, we have all the resources that we created. We can see it as a tree. And of course, we can list all the CAP apps that are in the cluster. So here's our KubeCon app, but we also have some infrastructure that I created for this talk. So I installed a controller, an ingress controller, and so on as CAP applications. So you called out that the config map was created before the deployment, right? And I guess that's an example of how you can control certain behavior with annotations. So if you take a look at our configuration, we tell CAP that the config map is a version resource. So CAP already knows that config maps might be referred in deployments. So if we update this config map now, what's going to happen is CAP is going to create a new version of the config map and ensure that the deployment is updated as well. So the deployment will be spinning up new pods, which reflect the new config. So we do the same thing. We template the config with YTC. We re-apply the same CAP deploy. So it's going to update our CAP app. And I'm also passing the flag to tell it, give me the diff of what you're doing here. So first, when we look at it, it gives me a nice diff. It tells you, oh, well, here on your output of YTT on line 2, I changed the text from English to French. But then it also tells me, A, your deployment was using a version 1 of the config map. I'm creating a version 2 of your config map. And then I'm changing the deployment to use the new version. So that means my config map is created first, and then my deployment rolls out. And I don't have to re-roll it out manually. CAP does that for me. And of course, it has custom. You can do powerful custom rules yourself or ordering. So if you have a bunch of custom resources, you can define groups of resources and sort of tell CAP how their order amongst each other. And so I can delete as well. So quick recap. CAP is kubectl, but it's friendly towards users. So if you're hacking on your cluster and you're deploying without getups, using CAP is nice, because you can find what you've deployed. You don't need to keep track of the files. It has weighting built in. And it has powerful rules for ordering. So you can manage your own dependencies if things are not eventually consistent. You say I want this first, and then that, and then if this succeeds, give me that. So I guess we're at a point where we have a way of managing our configuration and we know how to deploy things, right?  So I guess where we're going to start off is images. So more often than not, your configuration is going to reference images. And what you want to be sure about is that the image you were referring to while putting your configuration together is the same one that's being referred to when your user's consuming your configuration. And the only good way of doing this is using Sharsom references, because we're not really sure if someone at Hasheqa pushed another version of HTTP echo yesterday with the tag, right? So for doing this, we have a tool called Cable. And what Cable does is it sort of helps you lock down onto immutable references. So let's take a look at what that looks like. K build, KBLD. Great. So we can take image from the standard in. It reads our file. And then by some black magic, it turns this image into its Shav reference and gives me some annotations on the deployment. So how does that work? How does the? So Cable essentially just looks for the image key. And you know what? Your configuration might actually be using a key like container image at times. And you can configure Cable to be aware of that. So if you just provide any YAML with those keys in it, Cable is going to be able to resolve it, which means you can, in theory, use Cable with other platforms as well. And if you write your custom resources and they use image, it's fine. You don't have to teach K-Build how to do that. OK, and so you don't want. So what you want to do, however, is sort of generate a lock of sorts so that when your users are consuming your configuration, they have a reference as to which images were used when you were putting together your configuration. So one thing we could do is version this. Run K-Build and version this specific version. But then we kind of lose what was the tag we used. And so instead, we're going to generate a lock file out. And then we're going to put it in the right place. And then we'll go into image package later on, images.yaml, right? So if I run this, same thing, but now I have an extra file in image package images.yaml. And that tells me, well, I found. And what you passed me, I found HTTP echo 1.0. And it resolved to this. And now, when I distribute my config, I can distribute my config, my files with the tag in them, and then my image package file with it. And if K-Build consumes it, it's immediate, right? I don't have to talk to Docker Hub to know how to resolve this into a shell. This is essentially what a user will be doing while consuming your configuration. OK, so now we show that our images are what they're supposed to be, but we still have a configuration, right? What you want to be able to do is bundle your configuration into an artifact, maybe an OCI artifact, so that you can test it, sign it, and sort of ship it in the nice little box. And that's what image package does for us. Right, so instead of doing GitOps and pushing this to Git, we can make immutable artifacts that we're going to be keeping here with image package. So we do image package, image package, push into a bundle. A bundle is a target OCI image. I'm going to push it to my local registry, 5,000, KubeCon, Carvel, and then the tag will be demo, right? And then take all the files that are in the current directory. So it pushes these files. So now if I take this artifact reference, this one, if my mouse works, it doesn't work. I'll retype it. So in here I have an empty directory. I can do image package pull, the bundle that's called localhost, 5,000, KubeCon, Carvel, and I think the tag was demo. And the output put me the output in the let's call it the out directory. So in my out directory here, I have the files that are where my local file systems are in this other directory. So I think we should take a quick look at the output that was just outputted. So image package calls out that one or more images were not found in the same registry, right? So what happens is so image package also has this copy functionality where you can ask image package to copy a bundle. And when you do that, it sort of ensures that all of the images that were referenced in the log file are also moved over to the new registry, right? So Carvel demo. And I'm going to pretend I'm going to reach another repository, so to repo. It's actually the same one, but it has an alias on my machine, 5,000, and then KubeCon Carvel. I don't supply the tag. The tag will be inferred by the tag of the previous artifact. So it copies things over. And it finds that in my image log file, I had HTTP echo. So I have two images, the bundle that has my config and HTTP echo. It downloads HTTP echo and then copies it to this other repository. And so now, if we pull the relocated bundle, so if I do pull bundle, call demo, and then two, or output, sorry, and we're going to call that relocated. Re-co-cated, relocated. There we go. So over here, image package sort of calls out that it could find every image referred in the same project, right? And I think it will be clearer if we take a look at the log file. It's in relocated. Relocated slash dot image package. So the HTTP echo image is now on the same registry as the bundle itself. It's even in the same repository, right? Yeah. It's not referred by a tag, but it's referred by its shell. Yes. So if someone applies Kbuild to the config with this image package log, it means they can use the image that are hosted in the same repo as the image package bundle itself, which is very useful when you're doing, you know, you have air gap environments, or you have a registry that you own and you want to be sure that the images come from there and not from the internet. So image package copy helps you with this. This is how we distribute the Tanzu application platform. Our customers, they copy or bundle and will pull, I don't know, 60, 80 images and copy them to their platform. So for bundling, two things. Kbuild, to take an image reference and make it immutable by using a shell and produce a log file so it can be repeated. And then image package for managing configuration. So bundling configuration and do OCI ops or registry ops, whatever you want to call it. And then relocate bundles across repositories. And it can even be recursive, right? An image package bundle can reference another bundle. And so image package is smart enough to copy everything your entire dependency tree from one registry to another. So now that we have a way of sort of putting everything we want to ship into a nice little box, I guess this is when we start talking about CAP controller. So CAP controller surfaces certain APIs on your cluster. And this is widely divided into two parts, I guess. So the first bit is the app CR itself. So we have like a nice flow for obtaining the desired cluster state, right? So we fetch our configuration using image package. Then we templated using YTT and Cable. And then we deployed using CAP. So what the app CR allows you to do is it allows you to put these steps in like a declarative form. And that's essentially how you define your application. Right. So classic GitOps are the target. Where do I want to deploy my things? Either another cluster or the same cluster with a different service account that's scoped. Where I fetch my config from? So you can fetch it from an image package bundle, but also from Git or from a Helm chart repository if I want. And then how do we change it? How do we modify it? So we run YTT, but we can run Helm template. We can use kbuild to pin images and how we deploy them. Well, it's called CAP controller, so we deploy it with CAP. Yeah. And in the template section, you can really see the composability bit because, as we mentioned earlier, like if you're already using Helm template and want to use YTT after it, you can actually order those steps similarly, even in the app definition. Right. OK. Maybe we could take a look at the application that we just put together, but as an app CR? Right. So I pre-packaged this bundle just in case the demo went wrong, but apparently, that's all right. So we have an app.yaml here. It's an app CR. And it's going to get its config from an image package bundle. And then it's going to apply the YTT templating on the image, taking everything that's under the config directory. And I want to supply, as a user, I want to supply my own data values. There are many ways to supply data values. One of them is create a secret in my cluster, use that secret. I can also use a file that comes from, I don't know, Git repository, another image package bundle or something. Then we also apply kbuild to resolve HTTP echo to the relocated version of HTTP echo that lives into this kind registry. And then we deploy with cap. So let's deploy. Speaking of deploying with cap, I think I've deleted the KubeCon app. Yes. So we can cap deploy. And the file is called app.yaml, right? And I have to give this an app name, of course, app. This is going to be KubeCon app CR. So cap tells me I'm going to deploy this app CR, the secret that goes with it, and then the permissions are back that goes with it, so that when this deployment happens, cap controller doesn't use its very powerful cluster admin service account. It uses this scoped service account. And so this app can only create resources that a user with this service account would be able to do. So let's do this. And then, well, this reconciles into an app. It reconciles fast. And in the end, we have some pods that get deployed, I guess, somewhere demo namespace here, right? So if we do a cap LSA right now, I think we'll be able to see that what the apps here did at the end of the day is it created a cap app. Right. So I have to zoom out a little bit, unfortunately. But here, we created a simple app.app. Oops. Zoom out, zoom out. There we go. So now I can cap delete the app that's called kubecon app CR. So one of the drawbacks of this, and I know that because I'm an app developer, I write Java. I don't write YAML for a living, is that I have to be kind of very intimate with how it works, right? And what's this image package thing? What's a bundle? What's YTT, et cetera?  So that's why we started to talk about the second part of the APIs that cap controller surfaces. And those are the packaging APIs. The packaging APIs allow, let's say, a cluster admin kind of factor to add, make certain information available on the cluster about different versions of apps. And as someone who's consuming that cluster, you can use those APIs to install a specific version of an app that's been shipped. So what we're going to do is we're going to sort of change and look at what it looks like for someone who's using a cluster to install certain apps on it, right? Right, so we're using the key control command line. And we can say, well, package available. Oh, it's in it. It's a different namespace, I think. Install. So I put everything in a different namespace. So key control package available. List, right? And here, as a developer, I'm not interacting. I'm not doing YAML. I'm just using my CLI. And it tells me, well, you have this Carvel demo that you can install or a certain manager. All right, I would like to install Carvel demo. How does that work? Get, so key control package available, get the package that's called Carvel.garnier.wf, right? It tells me, well, it's a KubeCon Carvel demo app. It does this, it does that. There's one version. OK, cool. Can you tell me more about this? Well, for version, say, version 01, 100, we can tell it, well, this is fine, but what's the values schema for that? And so here's what I need to configure my Carvel app. I need to provide a channel. I need to provide a list of domains. I need to provide a namespace. This is string. It has a default. It doesn't have a default. It has some open API schema that tells me what I should do with this. So I prepared a values file in here, in values.yaml. And so I can key control package install. The package is called Carvel.garnier.wf. The version is 100, and then I'm going to give it an install name, so KubeCon package install. And then a values file that is values.yaml, right? And the output shows you that when you do this, what essentially happens is the fetch template deploys steps. It fetches the image package bundle. It templates it with YTT and Cable. And at the end, it's deploying things using CAP. So you can see the same diff that we saw earlier in the demo. And so this is a developer-friendly workflow. But of course, under the hood, what it's really doing is creating custom resources on the cluster. So we have packaging resources, package repository, when I do K control package available list, it's going to look up the packages. When I do K control package install, it's going to do a package install. So it's still GitOps-friendly if I want. And if I'm a developer, I don't care about YAML. I can use this K control CLI like this. That's sort of nice, because as and when a usage of Carvel matures, you can sort of move to having a more GitOps-y workflow to manage all of your infrastructure. Right. OK, we're almost at time before we close this out. There's a demo for the repository for this demo is on the internet on the left. And then on the right-hand side, feedback for us. Take 20 seconds, give us a comment so we can know what we can do better. And of course, join our Slack channel on the Kubernetes Slack, which is Carvel. And reach out on Twitter if you want, and reach out to us after the session. Thank you very much. Thank you. I think we have one minute for one question. Is there one question? One. Yes. Hi, thanks for the talk. A quick question about YTT. If I want to do composable stuff where I develop stuff in YTT and why I want my developers to use it, I cannot use any remote sources, versions, stuff like that. The composition happens later in the chain. Is that my understanding correct? Yeah. So that's actually a good question. So we actually skipped over a tool called Vendor. And what Vendor allows you to do is that you can fetch any files for that matter from multiple different sources. So I've seen folks at some organizations do this, where they use Vendor as a package manager for YTT. So you can define some star-lock modules and repeatable YTT that your developers can then use using Vendor. So a Vendor.yaml file essentially becomes something like a Go mode, where you can log on to certain versions of YTT packages that you're using, right? Right. Is that?  And that's it. All right. Thank you very much. Have a good weekend.


And from news outside Africa, Ukrainian President Vladimir Zelensky said on Sunday, March 20 that Israel will have to leave what the choice it makes on whether to help protect Ukraine against a Russian invasion. He was addressing the necessary video link and he tried to draw comparisons between the Russian offensive and the final solution. The plan by Nazi Germany to exterminate a beggar pardoned Jews, Zelensky questioned Israel's reluctance to sell the Iran-domed defense system to Ukraine. Russia denies targeting civilians in what it calls its special military operation in Ukraine.


Hi everybody, I'm Jen and welcome to another opensource.com weekly top 5. We have the full article on the website every Friday as well as the new video on our YouTube channel. Alright, let's hop right in. At number 5, we have a new author to the site, Sebastian Hahn, a senior cloud architect at Red Hat, and he shows readers how to use Docker to run SEPH. SEPH is a fully open source, object store, network block device, and file system. At number 4, we take a look at the Linux game OpenTTD. Reviewer Jason Baker says it has a somewhat steep learning curve and he shows readers how to get started playing it with screenshots of his new world. Leave him a comment if you end up giving it a try. At number 3, Mike Parks of Greenshoe Garage writes that some open hardware companies and platforms have gained widespread adoration and adoption, while others have not. He cites four key reasons for why the good ones succeed, reasonable price point, easy to understand licensing, nurturing of a vocal and enthusiastic community, and finally the passion of the developer. Read more about each of these in the article. At number 2, Ozcon, one of the biggest open source conferences out there, wrapped up today. Our writer on the scene was Nicole Engard this week and she began writing her articles about some talks at the conference with our readers on Thursday. She started with a summary of James Pierce's talk about the real reason Facebook does open source. You can read more of her stories and more stories like this on our site with our Ozcon series. Finally at number 1, Jay LaCroix shares his Linux story with us this week in an article titled How I Finally Got Permission to Use My Own Computer. The headline says it all as Jay tells us what led him to weaning himself off windows and going full Linux. You can read more stories like this in our series called My Linux Story. That's it for the top five everybody. Thanks so much for joining me. I'll see you next time.


The following is a presentation of TFNN, the Tiger Technician Hour with your host, Basil Chapman, call now, toll-free at 1-877-927-6648. Good morning, everyone, Basil Chapman here on this beautiful bright lovely day here in the Boston area. We're looking at the Dow down 45, Monday the 8th of May, getting well into that month, had a pretty spectacular move on Wednesday, on Friday. Look at this. This is, you remember the techniques that I was using, let me just go right here, straight to it, and I'll do this with the nine-period moving average. Look, the Dow is down 40 at 30,632. And one of the things we were looking at is that nine-period moving average turning negative, it took a long time. What I looked for was an M-shaped pattern, but that M-shaped pattern did exactly what we wanted, and the Dow fell sharply and had a spectacular runner on Friday. But you see that it's still S at the nine-period, it's still under the 14, which means that there's still overhead resistance. But wait a minute. Look at the S&P using the same technique, simple technique. One day negative, and the next thing we know crosses positive, the nine-period moving average, but it doesn't do that very often. And if it does do that, I'm just scrolling back here, look how many times I've done that. Not very often, we went through this on Friday, right there, it's the same characteristic that I was looking for where we did not continue down, still we turned up. And you can just go back, I'm scrolling to the daily chart, the big thick gray line is the closing price of the S&P, low and behold, not even there, I'm trying to find it. So I've got to be really careful, the only time it's done it to the downside was way back in January of 2020, right there, January 2022, 11th of January, it went from a short, a very quick short to a very quick buy, and then a very quick turn down to pink, and then it continued on its way down. So it's a process, it's always a process, and in this particular instance what we are looking at is, the QQQ didn't even get that far, it didn't even cross negative, it is still holding positively, and you can see it had a one day reversal and then went right back to L, meaning long, but I'm beginning to see signs of some deterioration, and it's become so selective, although in a sense Friday turned into a fairly broad rally, it was a broad rally against the backdrop of being led by spectacular move of, look at meta, Facebook, look at that huge move up, and it got the 9 period moving average to deflect higher without going pink back around the end of April, it's still green, but you can see the prices starting to wear down, if you're looking at a Microsoft, same thing, very good move, it went one day green to red, so to pink, and then back to L green, so I'm looking at this as a process, what I said to subscribers, I would not be surprised if we are looking at a rectangle formation, and a rectangle formation will give us a very good clue this week to say, and this we've got in the Dow, which is a rectangle between the 34,000, 5,600 area, and the 33,000, I'd even go as far as to say 32,500, so it's stuck within this range, and you can keep doing that for a little while as everything gets repaired, now wait a minute, let's just go to gold and look at the same technique now, gold has a spiral to the upside with a leg D in the Chapman Methodology, D is where other things can happen, it's a leg F in the weekly chart, it's a leg, a brand new leg, great leg A in the monthly chart, but here's the issue, then if you look at this, look at the higher highs in gold, it's made higher highs, and that's very impressive, now look at this, if I draw in a resistance line, Chapman Wave, inside track, repellent zone, in the gold, you're right here, you're right here in the resistance area, so I'm looking at this and I'm saying, all right, I'm trying to put the package together for my subscribers to my opening call, we'll still call on from the October lows and the down, the three times longer, we've had a trading position, we've had a trading position, the short side and the S&P, the day after the high was made, we took profits on Friday, this is going to be very interesting, you remember that, I like to look at inside track repellent zones, so let's just use this as a template, so here's gold, and remember what we're looking at is, within the inside track repellent and propellent zones, there is a rising wedge narrowing, and we saw that, I drew it very distinctly in the S&P, look there it is in the daily, look this is the same chart, it has higher highs that keep hitting a resistance level, higher lows that keep hitting a support level, look at the dow, it's the same thing, here we go, look at this, there's that rising pennant flag, it's a tapering pennant flag, pulls back and gets hit right there at the resistance area, so I'm trying to put charts together and I'm saying wait a minute, if the financials had a really strong session on Friday, pulling back some today, was that a one-off, was KRE, the XLF up 6 cents at 32.39, in this Chapman Wave falling x formation, lower highs and much lower lows, but wait a minute, I spoke about this on KRE, this is S&P Regional Banking ETF, I'm pulling charts, I'm going to come right back to those charts, and we're looking at, I'll look at gold once more, but there was a potential for a Chapman Wave price of volume climax on Friday, so on Thursday, and the the requisite pop above the gap down high, the following session, and a close above it, that was important, it's in a sector that's been under duress, under extreme duress, is this really the low in the KRE, that's going to say for 28 days, it's not going to take out the 34.52, lower 4 on the 4th of May, well I prefer technically to see three gaps, three big candles down with two big gaps, we got one gap, so this has got part of the requisite, this other thing I haven't really back tested enough charts to say really should be three big big candles with two gaps to the downside with the volume climax low, that spirals to the upside immediately, so all I can say is just I'm going empirically on my knowledge that I have so far, but I haven't done a statistical count, so what I can say is I'm watching this closely because if the regional banks can finally find some support, there's a chance that the GDX and gold, maybe even silver, really holds well because of other factors, other big economic factors, but as a financial crisis that part of it could be eased for a little while before the next big bank crisis, I don't know this is the way I'm looking at it, so now let's go back to the charts, so I looked at gold and I said this rising wedge formation and it's a narrowing wedge, it says very simply that if gold takes out 1973 support in the next week and a half on a closing basis, it's kind of done for this phase, just for this phase, and that would be that perhaps going to see the financials in this effort a pretty well-deserved recovery phase for at least a little bit, three to five weeks maybe, I'll be back in a moment, down's down, 55 S&B's down. If you're looking for potential trading setups in the stock market, then Rocket Equities and Options Report is a newsletter you should try. Tommy O'Brien delivers options and equity trades when the markets present them using a combination of fundamentals and technicals. Sign up for Rocket Equities and Options Report today with a 30-day money-back guarantee so you have nothing to risk. For all the details and to start your subscription today, visit the front page of TFNN.com. TFNN Educating Investors. You might think that if you want to be successful at trading in the stock market, you're going to need a crystal ball. After all, it's impossible to predict the future, right? Like any endeavor in life, before you decide it's impossible, get some advice from the experts. You might find that it's not so impossible after all. For daily market overviews that give you direction on the key indices, selective stocks, and commodities, subscribe to the opening call newsletter at TFNN.com. The opening call newsletter is written by Basil Chapman, creator of the trading methodology known as the Chapman Wave. The Chapman Wave up-down sequence gives you an edge in identifying price turns, finding the peaks and valleys in stock prices.  First-time subscribers also get a 30-day money-back guarantee. If you're not satisfied, let us know and you'll get a full refund within 30 days of signing up. TFNN.com Educating Investors. Everything in the universe is governed by the Fibonacci sequence. This mathematical principle is responsible for everything from the most aesthetically pleasing artwork to patterns in the stock market. To stay on top of stock patterns you can take advantage of, sign up for the Fibonacci 24-7 newsletter at TFNN.com. When you subscribe, you'll get a weekly report from Veteran Day Trader Larry Pesavento on stocks you need to pay attention to, and you can trust Larry's analysis. After all, he's got 45 years experience as a day trader. Larry will also provide daily charts, videos, and data on the key markets that he's tracking. Expect notifications from Larry on market movement you need to act on at any time. First-time subscribers also get a 30-day money-back guarantee. If you're not satisfied, let us know and you'll get a full refund within 30 days of signing up. Subscribe to the Fibonacci 24-7 newsletter today. TFNN.com Educating Investors. TFNN has launched the Tiger's Inn. Hosted at Discord, TFNN has been educating traders for more than 20 years, with live programming hosted by a variety of professional traders during market hours. The Tiger's Inn. Available to all Tigers and Tigresses for just $1 for the year. There's no catch or added costs when you join our community of traders. Sign up today and become a part of this educational community of traders. Just visit the front page of TFNN.com. Oh, toll-free at 1-877-927-6648. Internationally at<PHONE_NUMBER>. Hi, folks. So, we're back and talking patterns. The rectangle pattern means you can stay in this rectangle. It's a large rectangle that's becoming a narrow one in the down the weekly chart. You can stay in this range a lot longer than your patients looking at the S&P. I'm watching this very closely because if the nine-period moving average, if you get it to flip back to negative, you'd have to see the S&P below 4,000 and 80, probably 75. That'll probably turn it back to negative. And I would not be surprised if this would be what we're seeing is a rotation, a testing of the strength that we saw to see whether or not the flip to the upside on Friday has sustainability because normally you would get at least a good part, if not 30 percent, maybe even 50 percent of the last hour and a half's rally on, in this case, on Friday. You'd give back some of that. I still see some buying, but it's tentative buying now today. If we gapped up and right now the Dow was up 230, the S&P was up about 58 or 60 points, I'd say, you know what? That was a very significant turn, at least for the very short term. Right now I think it's an effort. The market is vulnerable at this particular point to sudden news stories that come out, that impact, and then you get covering on the short side or you get buying on the short side, more shorting. So at this particular point, here's the pattern where we went to the rising wedge, this is the narrowing wedge formation, pennant, and what happened was we went under it, now we're back in it. Look at the S&P, look at the Dow. The Dow went under it and now is being repelled at exactly the point that was the form of support, now it's resistance. Now I want you to just do this IWM. It had tried a rally, now it's down 70 cents and 177, now it's so interesting. The iShares, the Russell 2000, I mentioned this in my video for subscribers, my Aolong video, this is besides the webinar that I did, but my Aolong video on Saturday as an overview, I mentioned that I had just a slew, in fact I didn't even remember seeing as many, when the oil service stocks were moving, I saw this, but I had 1, 2, 3, 4, 5, 7, 8, 9, 10, 11. About 23 very low-price stocks, streamers, underneath $10, flashed over the last couple of days. Hey, I mean that's really, I mean here's one, I think I mentioned it the other day, Alec, this is Alec Tor Therapeutics for neurodegenerative diseases, it's spectacular, and you wouldn't expect on that that it would still go even higher. Look at this, it popped today from Friday's 740s to today's $7.51 cents, it hit 7.71. So a lot of these things, and they're telling me that money is trying to find its way into areas that have the potential, like the micro biotech stocks, some of them really took a clobbering over the last couple of weeks, now trying to come back, but it's really interesting. So all right, enough with that, what I wanted to do is go back to the story, just say, look in the GDX, the GDX is up 7 cents right now, 3547, when you've had this kind of a move and you've made the cup formation, what I like to do is to assess the vertical technicals, when it makes the left side high, the cup formation, and then the right side high, and all it says is if the technicals are weaker, you can pull back, it doesn't say, oh my god, now you're going to crash, it just says, watch out for a pullback, if you take out the trough, the cup low, you can go a lot lower, and from a move like this, you can actually go quite a bit lower if you close below that, but if you're holding steady, you can go from a cup formation to a double U formation, that's how the letter W comes from, it's two Us stuck together, it's funny that I mentioned that, because it took me forever to actually realize that that's what a W was, I'm sure somewhere I'd be told, but I just said W, but now I say W and I'm thinking, ah, two Us, and that's what we're looking at, the chances of a little bifocals there, you've got your cup, you've got your second cup, we'll see if that's going to hold, but it is holding extremely well, if you look at Silver SI, Silver did the same thing, it didn't take out the left, I think it did by a fraction, let me just double check, it might have done it by a couple of pennies, so the high that was made on the 14th of April, this is the continuous contract, at 26.44 had a high less than a month later of 20, yeah that's a 24.40, if I can read the John thing, 43, by pennies it failed to take that out, so you've got yourself a little potential cup formation or a failure pattern, unless it starts to trade, if Silver, there's a continuous contract, actually starts to trade at 26.68 in that area, 26.68 and touches 27.15 this week, I will be very impressed and say, you know what, that weekly chart with all the technicals, the stochastic study at 85%, the MACD good, the 9 period over the 14, you're just saying that for the month of April, this month of May, there's a really good chance for the first time that Silver continuous contract in the monthly chart is going to hold above the inside track repellent zone, it went above it last month, but it didn't hold, it closed just on the line and now it's holding above it, so this is a very important moment in just on a purely technical basis, the other aspect I wanted to talk about is the dollar is holding steady, it's really stuck in a sideways trading band, it's not a very particularly strong weekly pattern or monthly pattern, it looks like it wants to go even lower, but if the dollar trading at 101.14 down 8 ticks right now is able to get to the 101, it doesn't have to close, it just has to touch 101.68, 101.72 and all of a sudden you've got yourself a pattern that says the MACD could deflect higher, the stochastic which is very weak at 30%, on balance volume is still very weak, it has a chance to repair some damage and modestly move up, I don't see a big move into the 103s, not at this particular point, it might change in another couple of days, but those signs aren't there yet, but it can hold steady and holding steady is quite good, but the trouble is look at the euro, the euro is trading just walking the nine-period moving average, slips under the 14, uses that as a spring board and then closes over and over and over again above the green line, it's trading at 1.102, up 0.00105 and this is the weekly chart, the weekly chart is just holding steady at the most recent highs, very good action and the monthly chart as in a leg B, and if you look at the USDJPY, this is the yen, the Japanese yen currency pair, you'll see that it did exactly what we were looking at recently, about a month ago, I drew this in and I said there's a chance that you could get a rally to the 137.91 high of March and it would take until, and I drew in the Chapman Wave Cup formation with the inside wedge target resistance line, the left side, right side price time match to a particular candle, which was not the lower, the trough, it was moved over to the right to a particular candle and it's said by the 2nd of May, it should try for the 137.91 level and what did it do? It went to 137.77 and then turned down, so yes it listed by a fraction but it went right to the door and then turned around and now it's holding the 200-period moving average at 134.93, up 0.09, I'll be right back, down's down, 92. Steve Rhodes started his trading career as a student almost 20 years ago and the student has now become the master. Steve won the prestigious timer of the year award in 2018 and barely missed that mark again in 2019, finishing at number two for the year, an amazing accomplishment. Steve Rhodes is committed to sharing his techniques and knowledge with anyone who wants to learn and he shares his vast amount of trading knowledge every day in his Mastering Probability newsletter. Steve's award-winning newsletter, Mastering Probability, is delivered every trading day with updates throughout the afternoon. Sign up for Steve's market newsletter, Mastering Probability and you'll receive access to seven of Steve's educational webinars absolutely free. At TFNN all our newsletters come with a 30-day money-back guarantee, so you have absolutely nothing to worry about. Visit tfnn.com and try Mastering Probability 30 days risk-free today. TFNN Educating Investors TFNN has just launched their new trading room, the Tiger's Den, hosted at Discord. TFNN has been educating traders for more than 20 years with live programming hosted by a variety of professional traders during market hours and now they are expanding their reach with the Tiger's Den, available to all Tigers and Tigris' for just $1 for the year. There's no catch or added costs when you join our community of traders. In the Tiger's Den, you can look over the shoulders of Tom O'Brien and the other TFNN hosts while they analyze charts during their live Tiger TV programs and join an interactive trading community with hundreds of members exchanging ideas, interact with other Tigers and Tigris' as they share trading ideas, news analysis, and discuss the market action all trading day, even at night and on the weekends. The Tiger's Den Discord is accessible on mobile or tablets as well, so it's always at your reach. To sign up today and become a part of this educational community of traders, just visit the front page of TFNN.com. Sharpening your skills as an investor is like getting better at playing a musical instrument. You have to practice, sure, but you also need excellent instruction from experts. At TFNN, you'll get advice and guidance from the authority and technical market analysis, and it's not just dry, tedious text either. TFNN airs live financial content streamed live on TFNN.com and TFNN's YouTube channel with Tiger TV, live every market day from 8.30 a.m. to 4.00 p.m. Eastern. For free, each host is an experienced trader and gives their take on the market while taking calls and questions live from around the world. From the moment the market opens until the closing bell sounds, Tiger TV has eight different shows with expert hosts to help you make the right moves with your money. Watch online at TFNN.com or on TFNN's YouTube channel and become the investor you were born to be, TFNN, educating investors. So I just, I had someone mention XPEV that they had calls on XPEV, XPEV, XPEV designs and manufacturers, smart EVs. Yeah, so it had a pop today, it's up 34 cents at 1044. Remember, this is the pattern that I always look for, to peak DEOF, if you start to get lower highs and much lower lows, you're making that pattern that I call the dreaded, sorry, the affording X formation. I think it's got a little resistance here. It's holding okay. More importantly, the monthly looks just horrible, the weekly looks terrible and the data is doing very nicely considering that it was at 750 just recently. It popped up to the 1150 area, doji candle to peak D making low lows and low highs. Yeah, I'd just be real careful with this. I don't have to tell you because you use options all the time, GT, but I would just say make sure that it doesn't close suddenly below 10, even 1015. Closes on 1015 is just going to be back in the stock range, but a very short-term pop sets fine. Another question I had was going to look at FXI, FXI. Now, this is going to be interesting because I know that you're basing your XPEV a little bit on the action of the iShares China large cap ETF, which is up 16 cents at 28.82, is playing catch up, had a good session Friday, had a gap up today, of course overseas trading, says a gap up, hit 29.01, now 28.82. I think that this is telling me that it is in play, but it is in play in a smaller range and that the lowercase H successfully held the left side low in the weekly chart. And now I'm looking at a potential H pattern that goes to a lowercase M-shaped formation. So that says, like XPEV, it could also bounce, but it's more, actually, it's a little bit, in a way, it's a little bit better pattern than the XPEV, but I'm just looking at it and say, okay, if you're long, I don't know if you are, but if you're looking at this as a play to the upside, there's the inside track repellent zone, the falling X formation as well, and all I can say is, if FXI trading at 28.81 is able, by Wednesday or even Thursday, without closing under 28.50, if it's able to get to 29.65, just 64 percent above today's high, I would say that's good action. That's suggesting that, yes, there is some buying going on here, but that buying is all within the containment area. Question I had about what was a DXJ, DXJ. Why am I forgetting DXJ is? Oh, I had this all notated once upon a time.  This is the WT, this is the Wisdom Tree, I believe, Japan, oh, isn't that a coincidence, Japan Holdings Equity Fund. So look at this peak, and let me just do this live here. So this is very interesting. This is the monthly chart, peak A, peak B. All I'm doing is counting each successively higher peak, peak D. Now the question is, is this an instant restart? No, it's not. Is this a new high? Hard to tell. It could be within pennies. So the eye of 63.29 in September of last year, or two years ago, 37, and you had 29. Yeah, so that's E and F. Oh, this is really interesting. Oh, thank you for bringing this up. E, F pulls back, pulls back for one month. And then the next month just continues on its ways. If nothing had happened, this is like a related instant restart, but you never get them. D is the only place I talk about Chapman Wave instant restarts. A, B, oh, this is so interesting. Thank you for bringing this to my attention. This is 73.34, 73.29, and there's your leg D, the Chapman Wave methodology. We're always looking for a buy signal to go to at least, go to a buy mode that's going to go to at least four higher peaks. It's after that that anything can happen. So it's already achieved this second buy mode in the monthly chart. Oh, this is so interesting. I'm looking at this now. Now I have to open, I open a chart as much as I can as far back because I want to pick the lowest, most identifiable load. That's when you can do your wave count. So this goes A, B, and I'm going in the weekly chart. There's another A because it's lower than that. But as your starting point, so I'll put an up arrow right here. And it's walking the 9-period moving average, just once for one bar, two bars. It went pink and then went back to green. Oh, this is so fantastic. B right there, and then a little mini A right there. This is the reason why I start from the low bar. Every peak gets counted. And now look what happened. We go C1, C2, and a brand new buy signal right here.  And what is this again? This is the Japan Holding Equity Fund. And I don't know what to have in it. I wouldn't know because I don't follow the Japanese stocks. Well, I'll follow some, but I'll follow them in the context of the US market. Okay, interesting. So now what we've got is I'm just going to join. When I can see lines that I can join, I join them. Look at that. Oh, my goodness. Look at that. Is that not a chat wave inside track? A repellent zone right there? Look at that. Going back to 2021. This is the high that was made late March, early April. And look at this beautiful, look at this. Like that. And then I join. Beautiful bull formation with rising highs and rising lows. Let's get out of the weekly chart and see we are. Thank you so much. That's really good. Now we're going to go to the low to 200-period moving average. March the 13th or so. And then it goes peak A. Oh, this is something worth watching. Now I'm not sure I would get a position in this because it's a slow mover, but it's really moving up with higher highs and higher lows. But what I am interested in and very interested in in fact is that it's telling me that in some some countries, certain sectors are doing extremely well. You cannot rule out that this is a sector rotation and as a sector rotation, it's a sector rotation within countries and yes, Japan. So let me just look at the Nike Nike. This is not Nike. This is Nikai NK. Continuous contract. I haven't updated it for a while. Yeah, look at that. Peak A, peak B, peak C. And then it takes a long. Is that the low? Yep, that's the low. And then it goes under it. Peak A, peak B, peak leg C. Okay. So Japan is doing very nicely. The Nikai is doing very nice. I'm so pleased I saw that. That's really important to know. And I'll be back in a moment, DHHJ, but I didn't actually get any story on the DHHJ what to look at. So we'll be back. We're looking at the DHHJ, Japan holdings. I'll be right back. That was down. The gold report. As a precious metal, gold is still king. It continues to hold the most effective safe haven and hedging properties across the global major trading hubs of the London OTC market, the US futures market, and the Shanghai Gold Exchange. The gold report. Tom O'Brien publishes his weekly gold report every Monday morning for subscribers, consisting of coverage of the XAU, HUI, GDX, the dollar, bonds, the South African RAND, as well as 25 different mining equities with specific buy sell recommendations. The gold report. New subscribers get a 30-day money back guarantee so you have nothing to risk. Subscribe to Tom O'Brien's gold report newsletter now at TFNN.com. CBC. Tom O'Brien founded TFNN over 20 years ago to help educate investors just like you. Tom's Daily Market Newsletter, Market Insights, is published every morning when the market's open to give you the competitive informational edge you need to succeed. These newsletters are packed full of Tom's advanced technical analysis and are geared to deliver comprehensive strategies for a successful portfolio. Get Tom O'Brien's newsletter, Market Insights today, and try all of our products and newsletters 30 days risk-free with our money back guarantee at TFNN.com. TFNN, educating investors. Visit directioninvestments.com-biotech-today. An investor should consider the investment objectives, risks, charges, and expenses of the direction shares carefully before investing. The prospectus and summary prospectus contain this and other information about direction shares. To obtain a prospectus or summary prospectus, please contact direction shares at<PHONE_NUMBER>. The prospectus or summary prospectus should be read carefully before investing. An investment in the funds is subject to risk including the possible loss of principal. The funds are designed to be utilized only by sophisticated investors such as traders and active investors. Distributor, Four Side Fund Services, LLC. Probably an inverse in many ways and we're looking at it going to higher highs, in fact, all-time high. So this is going to be really important. Thank you for bringing to my attention because I'm looking at this and I'm saying if I'm correct in this drawing of the trend line, simple trend line that anybody can draw, you just take a ruler, everyone has that on your trading platform, and you take the outer wicks, the highs, and then you go in about three-sixteenths of an inch or to the body of some of the candles, and that just says that if this closes on a weekly basis, it's a 73-28 down a penny right now. A closing over 70, I'll have to make it higher, 74, 73, and it takes a little while to move a point. So if it closes above, I'm going to be a little bit brazen, I'm going to say let's go further out, 76.10. If it closes above 76.10, I suspect we're looking at a general weaker American market for a while if this is the relationship that I'm looking at right now, but in the meantime, based on the Nikai, also doing very nicely, looks not unsimilar. This is saying that Japan right now is finally seeing a very big, a very long-term consolidation all the way from 2021 back about January, February, and yet we are almost at that same level of 29,000 in the futures, 29,015, just stuck, and I can, I've been seeing this pattern more and more, where overall there's a cut formation, even though they're one or two little pops above the left side high, the pattern itself says, except for one spike to the downside, it's mostly higher lows and higher highs, but then it gets to the strong 30,000. So if the Nikai, together with the DXJ, if the DXJ is trading at 30,170 at any point, in this case I'm going to say at any point can hold there for a week, anytime in May, that would be a really good action. Okay, now let's go back to a couple of things. Question came in about, let me just do this. Yeah, there it is. I'm going to look at, what was the question? I think you had a couple of stocks, some of them are PCT. So PCT, very interesting. This is pure cycle tech, I think we looked at it a couple of times over the last week or so, recycles contaminants into pure polypropylene, and I'd say this is really strong. There's a big rectangle formation in the dating. If it breaks above it, that's going to be very good action. Today it did, it broke above the 200-period moving average. PCT is the symbol, trading at 7.53 up 28 cents right now in leg D, but the MACD is good, the stochastic is at 86%. The on-balance volume is a little overbought, a good little overbought. The 90s way above the 40, and the prices were even above the 200. So far, this is really good action. This is in play, but it looks to me on a very short-term basis. It needs to hold $6.80, $6.80 this week. If there's a pullback below that, that's a problem. If it actually has even an eye blink push into the 7.76 area, another 20 cents above this, it's starting to turn the 200-period moving average of the 7.20s into some kind of a support. Wouldn't that be something? All right, next question came in. So I'm getting my updated email, I believe. I've got some people that I can see quite nicely have sent emails. The last couple of days have been a little fuzzy because Comcast did a whole bunch of things that I had to get updated, and not all of it is as smooth as it was before, but I'm not sure if this is current or not. I'm not sure did Nvidia come out with earnings, or they still to come out with earnings. It's down a dollar at $2.85, had a fabulous rate. Look at this weekly, the Chapman Wave Cup and ladle breakout pattern. Oh, I love this pattern, but it's going from this gap. It's not a full breakout in terms of the larger cup formation. So let me just do this live. I can't do that to make the plumb line the low over there, but I'm going to go to the actual plumb line, which is the low, because we should be able to get right there. And this is the low right here. So I've got to move that one bar in. Now that becomes green, I read, and this becomes green. And it says, Nvidia has an exact price time plumb line low. Oh my, I love this. Isn't this so fascinating? Look at it. There's your plumb line. I made it a little earlier before using a particular candle, but now look at this. There's your plumb line from that low, the low of 108.12 back in October. And the left side high that I chose was the high of March, no April the first, the week of the first, 289.46 comes down to 108. I'd say that's a bit of a pullback here. The all-time high was, in fact, way back in November of 2021, 346.75. Yes, your Chapman Wave inside wedge, target, resistance line, it did that first gap peak beautifully. And now, wait, I should be getting some comments from my Nvidia appraiser. I'll be back to that in a moment. There it is. So that was it. That's your Chapman Wave inside wedge, target, repellent line right there, green. So this is the standard stuff I do all the time, every day, all the different charts if they need and that took us to the week of the 28th of April to get to the left side high of, what did I say it was, 289.46. Let me type that in to 289.46. Left side, right side, price-time match. And what did we go to on Friday? A day late arm, sorry it was a day late, and it went to the exact resistance line, dashed line of 290.38. Oh, less than a dollar away after a year and it's a year, April to April. After a year. Yep, after a year. So isn't that interesting? Now it's getting into the resistance area, but the technicals are still extremely strong and the stochastic is flat. Oh, that's right, our TFN analyst says, time to pump Nvidia. I don't pump anything. I'm telling you right now, I'm just looking at the chart and Nvidia had a really strong rally on Friday and today it's gone, pulled back, but now it's running quite nicely. I have to tell you this is a really good looking chart and it's one of the prime sources of the SMH is holding so well because some of those stocks in the SMH semiconductor index have done terribly. Advanced micro devices went all the way down to the 200-period moving average. Just from the recent month and a half in the 102th area, it pulls back to the 80s and now it's at 90.72. I need to see the SMHs do very well. I need to see the SMHs running and leading the market. Right now they're kind of lagging and sort of following the market. I'll be back in a moment, puzzle chapter. Oh, we've got one mistake to do. There's a lot to talk about when I get back. See you in a moment. Thank you for joining us today with the Tigers Den, available to all Tigers and Tigresses for just $1 for the year. There's no catch or added costs when you join our community of traders. In the Tigers Den, you can look over the shoulders of Tom O'Brien and the other TFNN hosts while they analyze charts during their live Tiger TV programs and join an interactive trading community with hundreds of members exchanging ideas, interact with other Tigers and Tigresses as they share trading ideas, news analysis and discuss the market action all trading day, even at night and on the weekends. The Tigers Den at Discord is accessible on mobile or tablets as well, so it's always at your reach. To sign up today and become a part of this educational community of traders, just visit the front page of TFNN.com. You might think that if you want to be successful at trading in the stock market, you're going to need a crystal ball. After all, it's impossible to predict the future, right? Like any endeavor in life, before you decide it's impossible, get some advice from the experts. You might find that it's not so impossible after all. For daily market overviews that give you direction on the key indices, selective stocks and commodities, subscribe to the opening call newsletter at TFNN.com. The opening call newsletter is written by Basil Chapman, creator of the trading methodology known as the Chapman Wave. The Chapman Wave up-down sequence gives you an edge in identifying price turns, finding the peaks and valleys in stock prices.  First time subscribers also get a 30-day money-back guarantee. If you're not satisfied, let us know and you'll get a full refund within 30 days of signing up. TFNN.com Educating Investors Everything in the universe is governed by the Fibonacci sequence. This mathematical principle is responsible for everything, from the most aesthetically pleasing artwork to patterns in the stock market. To stay on top of stock patterns you can take advantage of, sign up for the Fibonacci 24-7 newsletter at TFNN.com. When you subscribe, you'll get a weekly report from Veteran Day Trader Larry Pesavento on stocks you need to pay attention to, and you can trust Larry's analysis. After all, he's got 45 years experience as a day trader. Larry will also provide daily charts, videos and data on the key markets that he's tracking. Expect notifications from Larry on market movement you need to act on at any time. First time subscribers also get a 30-day money-back guarantee. If you're not satisfied, let us know and you'll get a full refund within 30 days of signing up. Subscribe to the Fibonacci 24-7 newsletter today TFNN.com Educating Investors This segment is brought to you by Think or Swim. For more information, just click the Think or Swim banner on the front page of TFNN.com. Of course we're back, so thank you very much for an explanation. The wisdom to see Japan hedged equity funds seeks to provide exposure to the Japanese equity market while hedging exposure to fluctuations between the US dollar and the yet. Hey, that explains exactly the chart that I'm looking at. Thank you. I was a little confused about some of the aspects, but now I'm not. I'm just typing this in here to help myself. I'll make it smaller sometime later. Look at this. I showed my subscribers this almost for weeks now. I've been looking at this WT. I spoke about this on Thursday and Friday. Wisdom Tree Inc. Exchange traded funds, fixed income, currencies, commodities, making a new recovery high as we speak. That is really important. What I'm looking at. Isn't that interesting? This is telling us about the market and it's looking at this market and saying, oh, what are you getting upset about? I'm making higher highs and mostly higher lows. The monthly chart is starting to improve. We'll look at this again tomorrow and do it in a little bit more detail. What I want you to do now is just to sum up a couple of questions. ASPN, I don't know if I've got time for that. This is real quickly ASPN. Here we go. ASPN something, I bet. Very strong move up. It's trading at $0.760 up $0.17. I would make the support that really needs to hold $0.720, $0.715 if it goes under. That's a problem, shorter term, but it is trying to rally. It's made a leg B. Today could be a peak B. It needs to get to $0.1855 by Wednesday to say this is not going to make one of those quick moves to the upside and then fail, it will continue. A question I got about Tesla. Tesla's moving quite nicely today. It's up $0.7717.83. It almost looks like, it doesn't look very much like the FXI fund that we were looking at a little earlier. This is holding well $0.165 is ready key support the next few days. I like what I'm seeing right now. I think just consolidating off the spectacularly, maybe another day of service consolidation, then if we make higher highs this week, that's very positive.