So my name is Costis, I'm a developer advocate working at CodeFresh. CodeFresh is an enterprise platform for Argo. I'm also a maintainer for ArgoLouds, and I'm actually contributing to documentation, so not that features. So if you wanted to contribute to Argo CD, you don't want to let go long. There are ways to do it, come find me after the talk. I'm also the co-author of the first ever Argo CD slash GitHub certification, which is something different than what was announced in the keynote today, and I'm going to say some things about this in the end. So what are we going to talk about today? So you install the Argo CD, or Flux. It works, it's stable, and then you start using it, and your job is to approve pull requests. So this is a pull request that some of the else had created it, and your job is to look at it and say if you want to approve it or not. So you look at it and you see, okay, it's changing the number of replicas, it looks good, maybe it's Black Friday, and you want to increase the replicas in production, you approve it, you merge it, and nothing happens. And nothing happens because, let's say you're using Customize, you change this file in a Customize overlay, but there was another Customize overlay downstream that had an override in the replicas field, and your change did absolutely nothing. The same thing can happen with Helm values. So this is a scenario we are talking about. You have a structure of Customize overlays, this is your base overlay, and then you have overlays for staging and production, and they have downstream overlays for different regions, or you can imagine the same example with Helm values, and they have hierarchies. So by the time you look at a pull request and you need to approve it, your context is only the overlay or the Helm value for the change, which is not enough, this is not what you want. Ideally, you would like to have the full context, know the whole hierarchy, and know the actual change, because then you can make an informed decision and say, yes, this is the change that I want to approve or not. So this is a problem we are going to talk about today, and I'm going to show four solutions, three wrong ones and the correct one. Especially for Helm users, you also have an extra problem that Helm is using templates. So if your Helm templates are super complex, sometimes you need to approve a change like this, and one of my favorite things is to mentally run Helm in my mind and understand what is going to change, said no one ever. So it's also the same problem or similar problem that ideally you would like to see the full manifest and not the Helm template, because this is what will go to ARGO CD. So let's see the choices, what you can do. The first choice, which is obvious, if you have seen ARGO CD, has the capability to show you a diff. So if there is an out-of-sync resource, either something has changed in Git or in the cluster, ARGO CD can mark it for you, and it tells you exactly what is the resource that changed, and then you can click on it, drill down and see what is the change. And in this case, you are looking at final manifests. So all the overlays are not importantly more, the Helm templates are rendered, you are looking at the final change. This is what you want and it looks good, but it also has some issues. First of all, in order for this to work, you need to disable auto-sync and self-heal, and you shouldn't do this because then you are not truly following GitOps. Both these options should be enabled. So by the time you change something, it's applied right away and you don't see any diff. The other problem is that this happens very late in the process, like ARGO CD is looking at the final manifest that is committed and pushed to the branch that is defined by the application. So this is super late. If you disagree with that change, it's not very difficult to do anything. But on the other hand, it's built into ARGO CD, and there is nothing to set up or create there. So can you use this? Yes, I think you can do it. I would only do it in production environments where many people don't want to have auto-sync enabled. They want an actual human to be able to approve the pull request, and then I would use it only for sanity checking. So I have already done my, let's say, official checks and my official approvals of the pull request, and I'm just having a last set of eyes to do it. But only for last minute, let's say, verification. The other thing you can do, and this is also another good question, how many people have used the diff command in the ARGO CD-CLI? How many people have used the minus-local argument? There, okay, some people. So there is a similar thing to do, a similar capability with the ARGO CD-CLI that allows you to diff the application, like what is in the cluster against local manifest. And again, it has full support for everything that ARGO CD supports. So if you're using Helm, it runs the templates. If you're using Customize, it applies the customizations. So this is how it looks. I run it here and I see some changes. If you ask me, this is one of the features of ARGO CD that is not publicized very well. But it's really important because you can diff against files that are in your laptop, like they are not committed anywhere, they are not on a Git repo. And you can imagine that if we have this, let's say, building block, the next obvious thing to do is to have your CI system run this as a command, as part of the CI process, and then attach the result in the pull request.  So it works. It solves the original problem. You have the full context of everything. Again, it's built into ARGO CD. There's nothing that you need to do there. But it has some issues in regards to security and how it needs access to the ARGO CD cluster. In order for this comparison to work, the CLI needs access to the Kubernetes cluster and the ARGO CD instance. So you need to allow your CI system to have access to your ARGO CD cluster and maybe you don't want to do this. Or maybe you are not even allowed to do this.  So your security people might not be very happy about this and you also need to do some networking setup. So my recommendation is great if you are experimenting locally.  But I wouldn't use it for any production, instars or anything else. So here I have an intermission for Terraform because I think this is really interesting. This problem that we are talking about is not really new. Terraform people have the exact same issue. Normally you don't want to run Terraform Applying. Terraform also has a plan command where it tells you what it's going to do with infrastructure and by default it presents a nice report where you can see, okay, my change is really what I need. So the obvious thing to do again is to take this report and have your CI system run it for you and then attach that report to the pull request. So by the time you look at a Terraform pull request, not only you have the diff in the Terraform files, but also you see what is actually changing in your infrastructure. And this is a very common scenario. There is actually an open source project called Atlantis that you should look if you're not familiar with this but it has exactly that. It attaches Terraform plans to the pull request. So in a way it's similar to the Argos in this CLI workflow that we've seen before. But again, there are some issues here. In order for this to run, Atlantis needs the Terraform CLI, the exact same version that you use, access to the Terraform state. And if you're using Terraform, you know what that means and its implications and access to your cloud provider. In a sense, it needs everything. It has the keys to the kingdom. So, yes, it works, but again your, let's say, security people and networking people might not be very happy about it. And I'm mentioning this because this is something that was already present for Terraform people and it doesn't mean that we need to do the same thing and the same workflow. Maybe there is a better solution in the case of Argos CD. You're pre-rendering the manifest. That's another solution and I'm happy that we have a guy from Intuit here because I love this. So another approach is essentially you pre-render the manifest and save them to an external Git repository. And this is a third Git repository. Remember we said that one of the good Argos CD practices is to have a Git repository for the source code and a Git repository for the manifest. Now we have a third Git repository that has manifest. Argos CD is looking at that second Git repository. Argos CD is only looking at final rendered manifest. It doesn't know about anything else. So the way it works is that you as a developer work on one Git repository that has your, let's say, Helm templates or your customized files and then you need an automated process that renders the manifest when you do a change and commits them to the second Git repository. And here I'm mentioning a second Git repository but some people might prefer a different branch on the Git repository or a different folder. The end result is exactly the same. So this is how it works. One Git repository is the one that humans interact which is at the top and it has my, let's say, original files and then the second Git repository is at the bottom which is the one that Argos CD is looking at and it has only final rendered manifest. And you need to set up an automated way that takes the source, the source manifest and then renders them whenever you do any change. Now this might look simple in theory but in practice it needs also some other stuff. I as a human should only interact with the first Git repo so I'm going to create a pull request there but the diff I want to see if you remember the previous slide is on the final rendered manifest. So I also need a second pull request on the other Git repository. So how do you create this manually or maybe you have your CI system does this for you and then once I approve my pull request if I approve the pull request on the first Git repo I also need the pull request on the other Git repo to be approved or if I reject it. So I'm just saying this that this needs some setup and you need to account of all the scenarios and workflows that come with this approach. But the end result is great. So this is the same example that I've shown in the beginning with Helm. Here I have a diff and because I'm doing it on the second Git repo that has the final rendered manifest I actually see a manifest and not a Helm template. So as a user this is very easy for me to say okay this is what I need and I don't need to run Helm template in my mind. So the problem is solved with this approach. So you could use it. There are some companies that are using it and into it is one of them but for others it solves the original problem. You're looking at a full context especially if you use Helm it's super useful but everything else is a disadvantage. You need to set up this copying slash rendering process. There are more moving parts right now in your deployment process. Your CI system also now becomes a point of failure because if this rendering process doesn't run you cannot deploy it.  And also if you're working in a big company you need to pay attention to onboarding people and to explain what is the process because a very common mistake is that people will commit to the wrong repository. So maybe I'm starting a new position in this company and I go to the ARGO CD instance I look at the applications I look at the repositories that are used and I find the second Git repository the one that has the final rendered manifest but you don't understand that this is not the way I should do changes. So you need to pay some attention there and play some guardrails on what people can do and they cannot do. And if you are using a separate Git repository now you have a double number of Git repositories. You have essentially three for each application the source code, the final rendered manifest and the Helm charts. So it works but if you ask me it's complicated then you need to have let's say a well-disciplined team to make it work. So if you're already using it that's fine but I think there are better solutions for this. So yeah, that's the result. You can use it but make sure that you know what you're doing and you can explain to people what they are doing and what they should not be doing. So we have seen the three let's say approaches that I don't like and this is the one that I personally recommend rendering the manifest on the fly. So here remember I said that we should not look at what Terraform is doing and re-evaluate our stance according to what Kubernetes and ArgosID is doing. One of the problems that we had with ArgosID CLI is that we needed to ask the cluster about the current state and then perform a diff. But if we are following GitOps we already know what is in the cluster. It's the same thing as in the Git repo. So we can cheat here and do a comparison just between Git. So say, see what is the pull request that is coming and this is the proposed change and assume that what is in the cluster is in the main branch or the master branch. So we perform a diff between two Git states to get different branches and not the cluster. So this is how it works. We still have a single Git repository that you can see at the bottom. The developers of DevOps still interact with a single Git repository and whenever I do a change an automated process just renders the manifest on the fly by doing this Git diff between the pull request and the main branch and then attaches the result as a comment. And ArgosID is looking at the exact same Git repository. So it's a single Git repo. The CI system does something but it's not a single point of failure anymore and I get a nice diff. And I integrate that to my pull request process. I'm also going to show an example but in any CI system it's super easy to get the files of the pull request the files that are in the main branch or the target of the pull request and then perform a diff and attach this to the issue. So this is a live example. I'm looking at a pull request and this is a comment on the pull request. And unlike the first example I've shown this comment has final rendered manifest and I can see again exactly what has changed. It's not helmet and blades. It's not customized files. So as an end user I get what I want and the problem is solved. So is it perfect? No, it's not perfect but in my opinion it has many advantages. First of all we're working only with Git. We don't need access to ArgosID anymore or the Kubernetes cluster. We don't need about the topologies. There are no problems with networking. We still use the support that ArgosID is using for helmet customized. There is no confusion over multiple Git repositories and it also works for Flux. So all the previous solutions maybe they were ArgosID specific. This is not so even if you are using Flux you can do the exact same thing but you know what is going to change. So if you move from a company that has ArgosID and go to a company that has Flux you can do it. There are some disadvantages. First of all you need to set up this. Again you need to set up this rendering plus commenting process but as I said your CI system is not now a single point of failure so if your CI system is down you can still deploy but you don't get access to this nice div and specifically with Helm you might miss our corner cases but you see with this div with what actually goes into the cluster. So maybe in some cases it's misleading but I think the advantages outperform the disadvantages. So my recommendation is that this is a very simple process. You should use it. It's scalable and it can be used for both production and testing environments. And as a bonus I also want to mention another scenario. We have been talking about looking at the changes and understanding what will change when you merge a pull request but another important scenario is understanding what will not change so the opposite. So in a previous presentation I was talking about organizing your GitOps repositories and how to model your applications in a Git repo and there were also some other presentations talking about this very same topic. I'm not going to go into this right now but I'm going to talk about a very specific scenario. So this is a folder hierarchy. The purple boxes are folders and the blue boxes are let's say customized overlays or Helm values, whatever you prefer. So on day one somebody comes to you and says we need to have this change in staging. So you make a change in the customized overlay that is in staging. You approve it, you merge it, you apply it and it works. One week later they come to you and they say same change in production.  And then you look at this and you say okay, I have this duplication if you're using customized the obvious thing to say is okay, I'm going to remove this change from the individual overlays and since it's common I will add it to the base overlay one level above or if you're using Helm values maybe you want to move that value one level above. So that final step is mentioned in that article about the GitHub repositories and several people said oh this is too complex I'm not going to do this refactoring because I don't know what will change I don't want to touch too many environments at the same time this is super risky and so on and so on. And when I look at the comments of those people I realize that they didn't have this presentation in mind. So this is the plain diff that the Git provider will show to you and you can see the changes are not really important but you can see a change is removed from two environments and then you add another change in the base overlay. So you look at this change and you say oh this is touching three environments it's super risky I'm not going to do anything forget about it but if you adopt the approach I'm talking about about creating a smart diff this is what you would see So this is my own smart diff that compares the main branch against the pull request I have three environments and you can see it's absolutely empty So I can look at this pull request with my own smart diff ok smart diff plain diff and say ok I can merge this with 100% certainty that nothing will change I will merge this and Argos CD will do absolutely nothing I touched I touched three environments So I did a refactoring and I know that my refactoring is correct there is no risk and if you have this information of course you can do as many refactoring as you want without any fear So I'm saying this is again super important because now with this system I know what will not change not just the changes So think about this scenario as well Now many people ask how do I get this you are at the bottom and there is an example with github actions but you can do the exact same thing with CircleCI, codefresh, Jenkins whatever CI system you use it's not that complex So we have seen five solutions about previewing the changes that will appear in your application first we have the naive gith diff that doesn't have any context so don't use it but we have the CLI diff that argosid is offering this is a great building choice but it's far too late in the process so I wouldn't recommend it we have the CLI local diff which is great for experimentation but if you want to put in a production instance you need to give access to your argosid instance from your CI system which is something that maybe you don't want to do you can pre-render manifest and place them on a second git repo this is a solution that it works it's complex if you ask me and you need to explain to people what is happening behind the scenes and how they should use it and my personal recommendation you render the manifest on the fly and you attach them as a comment on the pull request so some resources the first one is a link to the blog post that has this presentation plus more details the second one is the Atlantis project which if you are a terraform user you should look at if you haven't seen it a certification which is a training not just a certification where you get an argosid instance on your browser and you can work through various scenarios and it also includes the thing I talked about with multiple environments and promotions between environments so in this case there is a scenario where in your browser you get three real Kubernetes clusters plus an argosid instance that controls these Kubernetes clusters and you can do promotions and there is a cost to this certification because of this cloud provider but with this code you get 100% of this price there are maybe less codes than people in the room so that's it we have five minutes for questions you can do a help lookup in Argo you have the values potentially in the application and plugins which can decorate based on the cluster the last thing thank you is exactly that sorry I think I was asking the same question in terms of how do you account for configuration on the application resource with regards to helm or customise in that way but is there version differences as well between what you're running in CI versus what's actually running on the Argo CD server this problem can be solved let's say easily you can query Argo CD and ask what kind of versions it uses one question that you didn't ask is what you do with application sets so if I'm using let's say application sets ideally I would also like to preview what applications are created by application sets so it's not that simple but it's a good let's say starting point of getting into this mentality I will use the GitOps principles and assume that I have something in Git and it's a trade-off if you have something that works 90% of the cases maybe this is enough for you and for 10% you do something else rather than doing something else for 100% of the cases and making your life difficult but if this could be a real setup especially essentially you would need to replicate everything that Argo CD does dynamically for an application including application sets and Helmer Customize or any plug-in that you might have in Argo CD so all these might miss some corner cases at the end Hi, I just want to I'm not sure if this is also a corner case where like so right now for this method you're assuming that it doesn't ever need to connect to the Kubernetes cluster it doesn't ever need to connect to the Argo CD API and so like if that was a resource that got edited by something else basically I think what my developers would say like well I don't have 100% confidence that this diff is going to show me the real what's actually going to happen if when they compare it to tar from plan that they were used to that actually connected to the Amazon API and that gave me real time this is what's going to actually happen but I don't understand here like what's of confidence can I give to my developers that this method would be give will give you a reliable way to say like hey wait about the change the helm chart is going to be there I think that the people that are supposed to approve a Helm request they should have the knowledge in the first place of you know the corner cases and they should be able to say ok for this change the smart if I'm looking is really smart or what I'm looking is not that smart so I won't say that this is something you offer to developers I'm going to say this is something you offer to the people that approve pull request for Kubernetes manifest if in your case they are developers and you assume that they know what they are doing that's fine but if in your case it's only a very small subset of people and they are the experts on the Kubernetes manifest they should also know what they are doing thank you another one there's no API in the Argo API to render the output where you could pass it a call and say I want you to render this for me as far as I know ok thank you because the idea I was thinking is you could just get Argo to render this for some arbitrary PR right ok thank you so for people that don't know him we are lucky enough that we have Michael the Argo CD guy here so if you have any advanced Argo CD questions you can ask him ok any more ok thank you very much


The last topic that we're going to look at in this lecture considers boundary layers with pressure gradient. Now there are different types of pressure gradients that can exist external to the boundary layer and we can have zero pressure gradient which is quite often what is studied for flat plate boundary layer flow but you can also have conditions where there is adverse pressure gradient where the pressure is increasing as the flow moves into it or favorable pressure gradients where the pressure is getting lower and lower and the flow is consequently moving more easily because the pressure is driving it into the flow. So these are the different conditions that we'll be looking at. So what we're going to do we're going to begin looking at the x momentum equation and we'll consider it for the different conditions one where we have adverse so it's difficult for the flow to move into an adverse pressure gradient and favorable it'd be easier for the flow to move in because the pressure gradient would be driving it. So let's take a look at the x momentum equation. So here we have the x momentum equation the terms on the left hand side these are the inertia force terms and then this here is the pressure force term and that's related to the pressure gradient and then finally we have the viscous force terms and so within the fluid element all of these are in balance with one another and what we're going to do we're going to consider the case of looking very close to the wall because that's where the interesting things happen when you have a boundary layer with an adverse pressure gradient. So I mentioned that we're going to look at what's going on very close to the wall and what happens is a fluid particle moving right along the wall has to overcome whatever the pressure gradient might be and so the fluid particle could either be accelerated if we have a favorable pressure gradient or if we have an adverse pressure gradient it's actually being decelerated so in the case of an adverse pressure gradient because that's the one that becomes quite interesting to look at what happens is the fluid itself starts to lose momentum and it starts to slow down it's decelerating and you can actually get to the point where it goes to zero velocity and negative velocity and at that point we achieve what is called separated flow and so the boundary layer separates it's a very bad thing for an airfoil for example because that could lead to stall and and and then loss of lift but for other types of flows flows over cylinders we have separated flow it happens quite often well all the time and bluff body flows so but what we're going to do we're going to look at some of the logic behind what is happening and we're going to use boundary layer equations and boundary layer theory in order to study this and understand it a little better so what we're going to do we're going to consider the case on the wall y equals zero and we know with the no slip no flow condition u and v are equal to zero and I'm also going to say that the u prime v prime term which comes out of the turbulence and the turbulent stress tensor will assume that to be zero as well which it would be the fluctuations on the wall would have to be zero and consequently that term would be zero and looking back to the equation that we used a couple of segments ago when we were looking at the shear stress within the boundary layer you'll recall that we came up with a formulation enabling us to equate the pressure gradient to what was happening in the external flow that's because the boundary layer cannot sustain a pressure gradient normal to the wall and we can also equate that to the shear that is occurring along the wall and so that can be rewritten and so we get these equations here and these apply whether the flow is laminar or turbulent so what we're going to do we're going to look at these relationships and specifically what we will be looking at is we will be examining the first derivative of velocity with respect to y as well as the second derivative of velocity with respect to y and we will be doing this as well as looking at the velocity profile as a function of y and looking at how it changes under different conditions of external pressure gradient so let's take a look at that okay so looking at the equations that we just wrote out for the shear stress for an adverse pressure gradient where we have dp with respect to x greater than zero if we look back at our equations we have a relationship here between dp and dx partial or the derivative of pressure with respect to x and on the left hand side we have the second derivative of velocity with respect to y and so dp by dx is greater than zero as it would be for the the case of an adverse pressure gradient we know that the second derivative of the velocity of you with respect to y has to be positive as well but as we move out towards the outer flow region i'll show you with some plots here in a moment it it needs to become negative at some point and and and so the implication of that is whenever you have the second derivative of a function and if it goes through zero that is an indication of an inflection point and consequently we can make the statement so what that tells us is that when we're dealing with adverse pressure gradients there will be an inflection point at some point at some location above the wall within the flow field and and where that is has implications for what is going on within the valangular so what we're now going to do is we're going to take a look at a number of different velocity profiles for different types of pressure gradients and we'll start off with favorable and then we'll go to zero pressure gradient so what we have here is a case of a favorable pressure gradient where dp by dx is less than zero and this would be a case where we definitely do not have separation and the point of inflection if there is an inflection point it would be within the wall okay so we're now going to move on to the case where the pressure gradient is equal to zero so moving on to the case where we have the scenario of a zero pressure gradient in this case there will be a point of inflection there is no separation so the boundary layer remains attached and the point of inflection is at the wall and we can see that here by looking at the second derivative term we have a second derivative value of zero and consequently that's an indication that we have an inflection point but in this case the inflection point is right at the wall so we've looked at the case of a favorable a zero gradient now let's look at a weak adverse pressure gradient so in this case what is now happening is we have a point of inflection that is above the wall and we can see that the zero crossing with our second derivative is now also above the wall and that is the point where the first derivative of of u with respect to y is at a maximum and and it the second derivative would then be zero at that location and and consequently this is a case where we have no separation but the point of inflection is in the flow now moving on we're going to get to a the next pressure gradient dp by dx which is greater than zero and it's what we will call a critical adverse pressure gradient because what is going to happen the condition right along the wall is going to get to a certain criteria where the shear stress will go to zero and that becomes very significant so i've also drawn out our first and second derivatives of the velocity but the main thing is we can see that at this condition the slope or du by dy at the wall has now gone to zero and and so if we compare it to the previous one we were not at zero we had a finite value so tau wall did not equal to zero however now we have a condition where tau wall is equal to zero because of that and that is what we referred to as being a critical adverse pressure gradient and and that is the case of zero slope at the wall and that would lead to the onset of separated flow or separation and so when the boundary layer gets to this state it is no longer attached and the the the flow enters into potentially unless it can sometimes reattach quite often it does not reattach and then you get full blown separated flow downstream so in the case of an airfoil this would be very very detrimental you would not want to have this very far up far up along the airfoil because that would lead to separated flow install as i mentioned in turbo machinery it can occur and you get rotating stall all kinds of bad effects so the following on let's take a look at an excessive adverse pressure gradient that'll be the last case that we look at so this is a case where dp by dx is greater than zero it is an excessive adverse pressure gradient and this is also a separated flow region and you can even see that we have backflow and consequently the tau wall is less than zero so we have a negative slope at the wall so that is the evolution of the pressure gradient let's go all the way back here so we started with this case here that was no separation things were nice and clean then we went to the point where we have the inflection point right along at the wall and that leads to zero change in slope and that's why this value here is at zero and then we move along and we have the inflection point up above the wall but we still have some shear stress along the wall it's not zero and then as we move along and we get to what we call the critical adverse pressure gradient this is where you have zero shear at the wall and consequently your boundary layer at that point will separate and and then as you go further on you even get backflow where the flow along the wall is not able to overcome the change in pressure and consequently it starts flowing in the opposite direction and that could then lead to massive separation so if you're looking at something like an airfoil and you have the flow so there we have our stagnation point dividing streamline we can have flow coming over the top and we have flow coming over the bottom but what would happen in the boundary layer here you would then get the boundary layer it's starting to form from the front front front and then you get to your separation point and and you get a big massive separation region a lot of recirculation going on in there that would be stall so that that's very bad in the case of an airfoil in the case of a golf ball that's actually maybe not a bad thing because we put dimples in the golf ball and the separation point if there are no dimples in the golf ball it's going to be up here and if you have a laminar boundary layer the separation point will be up on the front but when you put dimples in the golf ball it actually generates a turbulent boundary layer and causes a separation point to move further downstream removing or reducing the drag the form drag due to the wake but in any event the separation point would be right in here and that is one thing that I should say that the golf ball idea brought this to mind and that is the fact that laminar flow is more susceptible to separation than turbulent flow and I should say boundary layer flow so if you have a turbulent boundary layer it would be less susceptible to separation than if you have a laminar boundary layer and the reason is because when you have turbulence you have a lot of large-scale activity and taking place along the wall and consequently the flow right along the wall has more momentum than it would if you just have a laminar flow and that's also why we put dimples in golf balls we put the dimples there in order to cause the flow the boundary layer to transition from laminar to turbulent and the the dimples are basically nucleation sites for instabilities which then lead to transition to the boundary layer and and what that does that causes the separation point to move back further and back here and that causes the drag coefficient to decrease when you have the dimples and the turbulent boundary layer on the golf ball so that's a final point about the boundary layer and how it relates if you have laminar or turbulent and the separation point so that is the boundary layer under adverse or different pressure gradient conditions usually when we study the flat plate it's always studied usually under the zero pressure gradient condition where you have dp by dx is equal to zero you'll sometimes see that assumption being made for flat plate boundary layer flow but just be aware that that is not always the case and when you have different pressure gradients it can have quite significant impact upon the formation of the boundary layer and it can lead to separated flow which really changes the flow regime significantly as you can tell with the separated flow on this airfoil or what's going on behind the golf ball so that is boundary layer flows we've looked at laminar we looked at turbulent we looked at von karmann integral we looked at blazius's solution in the last lecture what we'll be doing is looking at external flows on body so we'll be looking at lift and drag characteristics which we're kind of getting into it here when we're talking about what's going on in a golf ball but anyways that's kind of a transition from laminar or from the boundary layer flows into flows around other objects and bodies which is what we're going to be doing in the last lecture


Let's go to Mark in Colorado. Hey, Mark What's going on brother? Not too much. How you doing? Hey Mark? Great man. I'm doing great. Good. Good. Good. Hey Um, I wanted to see if you guys could look at the coffee contract for me. I've been following the ETF it's called the Joe J. Oh, yes It looks like it's doing ABC down, but I really can't there's not a ton of data on it and doesn't go that far back It looks like that's doing an ABC down to about 30 bucks But it's kind of intriguing and I've been watching it from a Fundamental standpoint because I've been reading a lot of articles on how climate changes Kind of impacting the growers and their ability to to grow a lot of the coffee that people drink Yeah, I read some articles about that recently myself. That's pretty cool. Okay So let's take a look at it. So I see this is a monster ready to be equal c to d. Holy cow So your eight point is 130 dollar 31 First I'm going to do the coffee contract folks. So we're on the the may contract So 131 70 with ballpark this okay, so it's it's a 30 cent a to b Which gets you 79 cents, right?  Let me see if the Joe J. Oh So now if we bring up the ETF This is the ipath coffee Sub-index total return etn Yeah, same setup. Okay. Yeah, so your eight point on this is 47 The beast 36 so 11 bucks That's it. It's a 28, right? Yeah Let me bring this back now Okay, so what I'm gonna do here. So 28 will remember that and would I'm gonna go back to what I'm gonna do folks Go back to the futures, but I'm gonna bring up the KC one the continuous contract so we can really bring this back KC one Okay, so that's it put this on weekly Oh, man, if that's the case, this is gonna be pretty intense Look at this Okay, so Well, I guess what I do Yeah, I want to short it but I'm looking at maybe when when it might be a good time to buy it Yeah, no, I this is what I would do. It's so cool about commodities Is that And you'd be able to find this out pretty easy I think I'd find out like what the production cost of this coffee is do you know what I'm saying Like was the cost to produce it because what happens is that it can go underneath that and stay under that two or three months But the reality is is that if it does that well, you know That's when you normally get a pop now. We go back to 2001. It was at 41 cents A pound so 94 is still pretty big You know, I can see I can see 64 or something Well, what number do we have? We had 80 at 80. Oh, well, 80 can get there. 80 can get there easy mark. We're at 94 That's not a big deal. Uh, in fact Yes, you were at 87 in 2005 It took off at 67 And then went up to three oh six Many Starbucks in these guys should be making a fortune, right? Yeah, sb ux I gotta see this for a second because Well, there's so many people learning the coffee business. I mean, it's like Well, it's the drug business. Yeah, it's good business. Look at that all-time highs. Okay. Yeah, that makes sense If your main product is going down, we know that Starbucks the ingredients cost of goods. Yeah Yeah, it's not even close, right? Yeah And no one's even expecting it to get down either.  No one keeps track of coffee prices right wholesale coffee prices. Anyway, do you know what I mean? Hey, so do you get your skis on? Oh, yeah, I've been on we got a couple feet last last weekend Holy cow a couple feet not not not in not in the front range area We got like four to eight inches in the In the air in like the front range Denver Fort Collins White gold, right? Down to the mountains. Yep. You know, I met I met a guy last night But only moved to Denver six years ago And he's telling me that, you know, I haven't been to Denver in a long time now And he's saying to me you guys have so many cranes downtown. It's insane. Yeah, they're building like crazy. Yeah That's pretty wild. That's You know, yeah, Denver has always been a growth place folks, but uh You know years ago in fact go back to you know 2000 it was a growth place because of the Mining structures more than just real business and that sounds like uh, those high rises are real business now, right? Yeah, there's a lot a lot going on. There's a lot of energy companies, but there's also a lot of A lot of other other companies come in as well. Yeah companies just like that Yeah, the the whole union station area which used to be kind of warehouse district is now And really exploded and what was the place where that whole thing's Where course field is and all that what is that called? What's that? That's called lower downtown or lodo. Okay, union union station is right near there Right, so because that's where we actually started right a lot of that growth, right? Right that helped and then they renovated the old train station And then everything's exploded around that Wild man Yeah, I love it. Yeah. Well, thanks for your time guys. Okay, man. Thanks. Have a great one. Have a safe one


This is stock number 90301A, we are here at Summit Automotive in Fond du Lac, Wisconsin. You're new and used Ram and light duty truck headquarters. Today we are checking out this extremely clean 2019 Ram 1500 crew cab, 6 foot 4 inch short box. This truck has the 5.7 liter V8 Hemi motor, has been fully safety to and inspected by our service shop, has a fresh oil and filter change, all the fluids have been checked and topped off and this truck is 100% ready to go. Delmonico red pearl coat is the color we shoot all of our videos in 1080p, 60 frames per second so if you have HD capabilities on your computer, tablet, or smartphone device, turn them on right now because it is like you are right here looking at the truck with me and definitely your best way to check out the vehicle quality and condition wise before seeing it in person. If you want to check out more photos of this truck in the upper right hand part of your screen is a link to our website to check out all those photos. Comes with the 22 inch painted and polished aluminum rims, no scuffs or scrapes. On that rim has Goodyear Eagle Touring 28545R22 tires and they got a lot of tread left just about all the tread left on those tires. Front fender, no dents, no dings, no scuffs, no scrapes, very nice condition. You get the LED headlamps, LED running lights, and the LED fog lamps. Front bumper is in really nice condition, has the front bumper parking sensors, this one is all loaded up with the adaptive cruise control forward collision warning. Here's your camera for your 360 view camera, I didn't see any dents or dings on the hood and the rest of that front bumper is in really nice condition, very, very nice. Passenger side fender, no dents or dings on that and the passenger side rim is in absolutely perfect condition. That's usually the rim that you got to look for, if for curb rash and stuff, but that one's in really nice shape. As you go down this side of the truck, very, very clean, I didn't see one dent or ding on this truck. That's why we take these HD videos so if you're far away or even if you're close by and just cannot make the trip down but you're still interested in purchasing the truck, you can see the truck, hear the truck, and have confidence in the vehicle that you're looking at before you even get here so that when you do get here there's absolutely no surprises. You can make a smart buying decision from the comfort of your own home. In fact, we offer a Summit Auto Fastpass option in the upper right hand part of your screen and link right to our website where you can apply for financing, get pre-approved, see a payment quote, even appraise a trade off from the comfort of your own home. Frame and underbody is an excellent shape. This truck was locally owned, locally driven, and traded in on a brand new one purchased right from us. Back rim, no scuffs or scrapes. You can see those back tires have just as much, just about as much tread as the front tires, maybe just a hair less. You do get the plastic wheel well liners back here, fender flares are in nice shape, no scuffs or scrapes on them as we come around to the back. Rear bumper, very nice and clean. I didn't see any dents or dings on that. You do get the dual chrome tipped rear exhaust, full towing package which includes a receiver hitch, four pin, and seven pin wiring. This is a power drop down tailgate. I do not have the keys on me, maybe I do, to show you how that works. I do.  You can see it has the cargo management system with the tie down cleats. You have the LED bed lighting, the spraying bed liner, and everything is in really nice clean shape back here. What I like that they did is now you get a button where you can turn these off and on. I've got the cargo lamp on right now so that's why they are on. Tailgate shuts nice and solidly and I like that it's a drop down assist so it's never going to slam on you. That's really nice as well. I didn't see any dents or dings on that tailgate. You do get the LED tail lamps as well and as you go down this side of the truck just as clean as that passenger side. I didn't see any dents, didn't see any dings. It does have the capitalist fuel fill and for full disclosure this back rim is in excellent shape as well. Down the rest of this side of the truck, very nice and clean. It does have the enter and go system so you just have your key. You put it in your pocket. You can see in the reflection there I'm putting the key in my pocket. Doors are locked up there. When I put my hand in the handle, they'll unlock. That's the enter and go system. You've got heated mirrors built in blind spot monitoring.  These mirrors also power fold in and I'll show you that those are working good. I always like showing both sides that they're folding in and out properly. You get the power running boards and those are in excellent shape as well. The limited package gives you the light, kind of a cream colored and then I think that's indigo blue or it's not sure if they call it indigo or titanium. Anyways, both these seats are heated. Both these seats are cool. No rips or tears on them. This truck's never been smoked and you've got the lumbar power driver seat. You get the color match factory all-weather floor mats, the limited floor mats, the power windows, power locks, power mirrors. You've got the nice wood grain trim, kind of that bronze-ish finish, gold to it trim throughout. Power windows, power locks, auto headlamps, tilt telescopic steering wheel. Just a really cool looking interior. As we hop inside the truck here, you can see that this one has 5,165 miles. I'm going to brighten it up here so we can see this better. You've got digital spinometer. You got range to empty. You have your compass, your outside 10th display and the limited instrument cluster is just second to none. Very very cool. Has the heated leather wrapped and wood grain trim steering wheel. Here's your cruise controls. Here's your adaptive cruise controls and here's your gear selector. Information center controls, Bluetooth audio controls and you do get radio controls on the back of the steering wheel. Push button start, 8-speed automatic transmission. Push button four-wheel drive with the high, the auto and the low. You also have your start-stop capabilities which tells me that this one has the 5.7 e-torque on it. This one has the 12-inch 4C radio. You get the factory navigation. You can also do Android Auto and Apple CarPlay capabilities on this truck. This is also where your backup camera and 360 camera shows up. You can see there's your 360 camera, there's your backup camera and look at how nice and clear that backup camera is. Very very cool stuff on this truck. Also down here you have your heated and cooled seats, heated steering wheel, surround view camera, backup camera. You can turn those running boards off or on and I'm going to put it back in park here. AM, FM and Sirius XM radio capabilities plus Bluetooth. You can do all your climate controls here. You can also do the backup camera while the truck's in park. Which is pretty cool.  This one has the Alpine Premium Sound System factory brake controller. Here's your four-corner air suspension stability control, USB AUGS and two USB C's. You get the RAM charger for your cell phone, 115 volt, 400 watt plug-in down there. All-weather floor mat on that side and passenger seat is in excellent shape. As well, you do get the power sunroof with the second-row fixed glass roof, Vista roof. That's really nice. As well, assist and SOS in the mirrors. You can put your tailgate down.  Home lane controls for your garage door security systems and lane systems. We'll take a quick look at the back seats and then we'll check out under the hood. We're running close on time here. The seats are just as clean as the front seats. No rips or tears back here. You do get the power sign rear window with the built-in rear defrost. You got speakers in the ceiling, headliners absolutely perfect latch child safety system. These seats fold up for extra storage. There's a storage bin here that you can fold flat if you want. Here's all your owner's manuals and books and stuff. You get your factory all-weather floor mat back here and two in-floor storage bins with removable bins for easy cleaning. You also get two USBs, two USB C's. These back seats are heated and you get another 115 volt, 150 watt or I'm sorry, 400 watt plug-in. Child safety locks on the back doors and we'll take a quick look under the hood. Running really short on time here. This one has a 5.7 liter V8 Hemi with the e-torque. You know it's got the e-torque. It's got this big electric motor on top. Engine bay is very clean. It's very smooth. This truck has been fully safe to be inspected by our service shop. It has a fresh oil and filter change. All the fluids have been checked and topped off and it's 100% ready to go. See more pictures of this truck? Go to SummitOtter.com. If you want to check out more videos, you can go to YouTube.com slash SummitOtter. Remember to like, subscribe, and share on this video. We really look forward to helping you with this super clean 2019 Ram 1500.


likes and dislikes, like. Like means to enjoy something. Some people might like camping. Others might like to read books or watch movies. Dislike. When you dislike something, you think it is not pleasant or enjoyable. People can dislike the taste of food or dislike doing an activity. Hobby. A hobby is something you like to do in your free time. Some examples of hobbies are gardening, knitting, and painting. Indoors. Indoors means to be inside a building or house. There are many activities that you can do indoors. Playing board games, reading books, or cooking are some of them. Outdoors. Outdoors means to do something outside. Activities that people do outdoors include playing sports, jogging, walking, and flying kites. Swim. Swimming. Swimming is exercise that is done in the water. Many people swim to stay in shape. Hiking. Hiking is an outdoor activity. People who hike like to walk for long distances. Hiking is often done in forests and mountainous areas. Take pictures. When you take pictures, you use a camera to capture an image. People who take pictures as their hobby are called amateur photographers. Sew. Sewing. Sewing is another hobby. When people sew, they make things out of cloth. People can sew by hand, with needle and thread, or by using a sewing machine. Woodworking. Woodworking is a hobby where people make things out of wood. Woodworking includes making furniture, carving, and carpentry to have something in common. People who like the same things have something in common. Music, art, and sports are examples of things that people have in common. To ride bicycles. To ride bicycles means using a bicycle to move from place to place. Many people ride bicycles for exercise. Some people even ride their bicycle to work to stay in shape.


Ond yw'r bwysig mewn wirio'n meddwl i y llifio, nid ar 17 y Cyfrifol yr Undodd Gwldsawn Parkau. Rwy'n gwleidio'r hyn o ffifio ar y llifio yng nghyrchu, ar y cwll iaith i'r tynn ymwysig, ac mae'n 7 tu llunio arfer y gweithio diemdlu hanfodd yn ghaenion gael eu treffordd, ac mae'n rhaid i sicrhau i'r panell bod yra gyflym. Go fyddai'n llyfan eich thrifol ar gyfer y llifio ar gyfer y llifio, 벨fyrdd a sydd i gael cael ddebyg. Maen nhw'n dweud efo'r amser yn y pethau iawn i gwaith dweud. Mae'n dweud yw defnyddio'r hwn yn oed i'w fan hyn ar gyfer roedd. Roedd y dweud efo'r hwn yn gyntaf a ddiddordeb llai chi am ei gyd, gallwn eu gwasanaeth at y妹yr yw. Mae oed yn oed i gyd, ac mae'n ddyn ni wedi gydweud eich wneud i gael gael'i gael ar gweithio ar gyfer llai gwaith i gynnwch. Salthamton, last week, the opening 10-15 minutes, we were very good and after about four or five minutes, we should have had a stone wall penalty, Coleman crosses it, Romeo put his hand out, blocks the cross, the ball changes direction, it's a penalty and VAR have a look at it, the referee goes and has a look at it and between them, they come up with a scenario where Everton don't get a ward of the penalty. Liverpool got the exact same penalty the other night against Leeds, the same, absolutely same penalty and I think it was Michael Oliver just pointed to the spot, didn't even need VAR, didn't mess around, it was a pen and then we've had, we go on and lose that game of course and then today we've had a ridiculous decision. Everybody is up in arms about it and they're not talking about Evertonians, there's people, media people, the pundits, Frank Lampard's done a brilliant interview where he's questioned the integrity almost of the league and of referees which I think is marvellous because the pathetic, all of them, the terrible, the terrible, the VAR is bollocks, the way it's done in this country, fellas wearing the referee kits sat in Stockley Park because it makes them feel like the referee in a game and all that. I mean nonsense and they continually get it wrong. For me, when there's a VAR decision, if you're looking at an image as a football fan, you get shown something, it will take you, if you watch a lot of football, which we all do, it will take you 15 seconds to decide whether that's a penalty or not, all the time. It took them almost two minutes to come up with the reason to not give the penalty today and that to me smacks of something else going on, whether it's to keep the title right, I don't know what, I don't know what it is but it smacks of something else going on. It was a shocking decision and I made off Frank Llanpard's alluded to this, I really am because it's almost like it feels at times like it's wrestling, the wrestling, like it's got a script, that's how it feels because it's nonsense. Things you see those top clubs get and get away with is incredible and then other teams in the division don't get it. It's hard enough playing Man City because they're amazing. So it's so difficult playing against them, when you've got the referee against you as well, it makes you even worse and then he was already, he'd already basically had the city shape on all night. Some of the decisions he gave, the bookings and yeah Phil Fowden going around booting everyone and I love Fowden, he's a fantastic player but just nonsense. Donnie van der Beek gets booked for winning the ball, great tackle, just pathetic all night but to not give that. Why didn't he even go and look at the screen the referee? I've heard him, he's apparently told Frank Llanpard that he was on the wrong side of it, he didn't say, well go and look at the screen then, you absolutely knob. Go and look at the screen, it's just pathetic and it's, who knows how big that penalty decision could be, both ends of the table, who knows. If everything go down by a point, you know, we'd be being robbed and it's not the first time this season, it was a terrible thing and at VAR I was a big backer of it, I thought it'll come in, it'll make the game a bit more honest. They'll be embarrassed to get the stuff to get wrong so it won't and the decisions will be right. It's gone the other way, it's almost like now it gives them the opportunity to shape the result they want even more. And people will go, you're looking at your conspiracy theorist there with this stuff and all that, chant, it's just my opinion but more and more people are on board with it because we're seeing it play out in front of our eyes. It's pathetic, absolutely pathetic but that's what we're playing in at the moment and the whole thing, something mad going on in the Premier League at the moment the way it's all playing out, it's weird. It's the weirdest time that I've ever witnessed English football the way it is now, it's like I said, it's a bit like the rest of them. To second point, just the overall picture really on what's going on and I know a lot of people will be down tonight and rightly so. I think the players, I don't think we could have asked any more from the players, I think the fans were brilliant today. When we went behind, they were brilliant, I think at the end of the game, they were brilliant singing and clapping the players off. I think the players put everything they had into it, obviously losing Dominic Calvert-Loone before the game, there's a big blow. Losing Donnie van der Beech was a big blow with 20 minutes to go, he was having a really good game in that midfield but the players stuck to it, they stuck to the task. I personally feel if we play like that most games, certainly if we play like that at home, we will get the five wins that I think we'll get anyway but I think we'll get them at home comfortably if we play like that and if the fans back it. I think obviously we need Damari Gray fully fit, we need Don back in there as well, Ben Goffrey too. But I think the overall picture is we have got two in three games on hand on team so it doesn't look great and we've got another really tough game next week at Spares. But it will be a little bit of up and down I think until we start putting a couple of wins together and I just feel like the team is playing a bit. Certainly at home, I think the performances are being really good at home but I just feel like there's a together in this day and I think Damari knows what he's doing, the coaching staff and we just need to stick together. And it will be difficult because it is difficult to talk about looking at the league and seeing other teams getting these ults and frustrating. It is what it is at the minute, we just need to worry about ourselves, get through this season, stay up which is an embarrassing thing to have to even say anyway and then we take it from there. But I think overall I think it will be fine. Finally, just very quickly, I think just finish on a positive because why not? It was great to see Abdelhaid-Decorey back today, I thought he had a good game, he was everywhere, he nicked so many balls, it showed us what we've been missing. It's why it's hugely important that Everton get another Abdelhaid-Decorey in the summer, whether he's a roar of ageing of him and France have a lot of these type of players, get him in and mould him and have him in the squad to cover him when he's not there. It's why we absolutely should have bought Ibrahim-Shangari a couple of seasons ago for £8 million, it was a no-brainer. And we need someone like that alongside at times Decorey but certainly on the bench. But I thought he was great today and he'll get better and better and obviously the more coaching he has from Franck Lampard and his coaches he'll improve as well. I think everything will be alright but Decorey will make a big difference to us and it was great to see him back. I thought he put in a really good shift, he'd obviously only just returned to training, the manager was at pains to say he didn't know how long he could do and because it was such a demanding game against City but he did brilliantly. He did really well to finish the game, he'll do him good to get that 90 minutes back under his belt, I'm sure he'll be stiff tomorrow. But it's on now to Boreham Wood and it's a case now of playing that game Thursday and getting that done for a good performance and score four or five goals hopefully against them and really get everyone going ready for that trip to Spades.  But Abdelhaid Decorey being back in the side will make that job easier and we move on from there and we can keep in fit and get Godfrey back in there and get Don back in there, everything will be alright. But the sooner we get those five wins the better, absolutely. Right that's it for me, give the video a thumbs up, subscribe if you haven't if you want more videos, join me on Patreon otherwise have a great weekend if you can. Pick yourself up and enjoy your weekend. See you later.


Hi everyone, Joe for jazby's casebreaks.com coming at you with not a nine box, but an 11 box off-season baseball mixer, random team break number one featuring some triple threads, some cosmic, there's the whole list right there, triple threads, cosmic chrome, et cetera, et cetera, et cetera. A lot of good stuff here. Big thanks to this group for making it happen. Look at Ron going ham on this, getting 15 spots in this one. So thanks everybody for making that happen. There's all 30 teams, no combos, let's go. Let's roll it, randomized names and teams, three times, two and a one. Your names first, one, two, three. We got Ron down to Ron, and then two and a one, three times for the teams. One, two, and three. After three, we got St. Louis down to the Minnesota Twins. All right, Ron, you've got over half the league, you got 16. So you got the Cardinals, Cleveland and the Rockies, Detroit, Padres, Phillies, Brewers, Nationals, Astros, White Sox, Angels, Orioles, Jays, Cubs, Pirates Twins. David, you have the Mariners, Dustin with the Braves, Alex with the Red Sox, Scott with the Royals, SKS with the A's, Jonathan with the Marlins, Brandon with the Giants, Dustin with the Diamondbacks, and the Mets, Matt with the Reds, Cassandra with the Rays, Jonathan with the Yankees, David with the Rangers, and Matt, you have my Dodgers. And then, again, Ron has the rest. It's alphabetized by team. Now, feel free to trade amongst yourselves if you would like. So we're gonna pause the video just for a little bit. When we come back, we'll see if there's any trades, and then we'll have the break. We'll see you on the other side. All right, welcome back to the other side of the trade window, everybody. No deals were done here on a two Tuesday, the 12th in our 11 box off-season baseball mixer. Thanks, everybody, for making this happen. This remains the same, officially printed out. And let's, well, let's get this old sweet spot out of the way first. Now, some of these sweet spot autos, I'm sure you've seen in some of our mixers, can be faded, unfortunately, but there could be some other treasures in here. We'll use this blank card here. We'll slow play some of these. We've got Dodger's picture, Brad Penney. That's right, you know Dodgers for a little bit. That'll be for Matt, and here's Mike Piazza, A's edition. Classic A's edition of Mike Piazza. We've got Sweet Swatch, Scott Rowland. Nice, Cardinals. It's gonna be for Ron. Kind of a goofy look on his face. All right, we've got, ooh, this is pretty cool. Look at that, Roger Clemens. That's not faded right there, that's awesome. 14 out of 22 for the Yankees. That's gonna be for Jonathan. It's gonna go into a 180, or is this a slider box situation here? Perfect, into a 180. 14 out of 22, a piece of wood. It's pretty sweet. Then we have John Knot. Sweet beginnings, autograph. Like that mini helmet that they squeezed in there as well. That's for Ron and the Orioles. And we've got a little relic down here that's gonna be Ricky Weeks.  That is Ron and the Brewers. All right, nice sweet spot, boss. Let's go with, let's go with some cosmic. You can find a planetary pursuit in here, something like that. We've got Lakers at the Dallas Mavericks on the background. Lakers down by four with four minutes, four and a half minutes left in the first quarter. A lot of game to be played. Jackson Hayes getting minutes. This is Lakers first game after their in-season tournament victory. They're gonna raise a banner for it apparently. I guess the title is the title, right? All right, good luck everybody. Corbin Carroll rookie card. Will be for Dustin and the Diamondbacks. Oh, nice, we do have a planetary pursuit. The Sun. Here comes the Sun. That's Julio Rodriguez as well. That's gonna go to David in Seattle. I think of the planetary pursuits, I think the Sun is the most, the more common one, but it's still pretty cool. And nice autograph. Ryan Mountcastle, green speckle auto 25 out of 75. That'll be for Ron and the O's. Josh Young, nice Aqua shimmer to 199. 111 out of 199. That's for the Rangers, David M. Nice rookie card there, world champion. There he is again.  Juan Soto, C.J. Cron. Launch into orbit Ken Griffey Jr. die cut. Tray Ternan Alejandro Kirk. All right, nice. Now let's get into some 2023 prism baseball. Three autographs in here. Lakers zero field goals in the last almost four minutes. We've just finally got a bucket. This is the second unit. We gotta do a little bit better here, guys. Nice play, Hotchman. All right, good luck, everyone. And of course, all card ship here is Prismatic Pete Rose and a purple Paul Carnarico 25 out of 99 for the White Sox. It's gonna go to Ron. Our first autograph is Angel Martinez for the Guardians. Cleveland, this is for you. And then we got a Jason Dominguez to 149 Yankees. That'll be for Jonathan. Got Chipper Jones, red wave, not numbered. Got Jackson Churio, 98 out of 199. It's for Ron in Milwaukee. Harry Ford, Future Stars, and a Spencer Jones autograph, nice. Speaking of Future Stars, Jonathan with the Yankees. Got a Drew Gilbert for Houston, 76 out of 99. That'll be for Ron. Kobe Mayo, Baltimore. That's gonna be for Ron. Got a, what, a purple orange autograph? That's eight out of 99. Purple orange or is it just purple? Either way, there you go, Ron. We got 70 out of 149, Moose, Scoron. Big Moose. It's gonna be for the Yankees. Nicondas Pulsar, those are not numbered. Pudge. Whitey Herzog, 111 out of 199. Manager card for the Cardinals. It's gonna be for Ron. Let's get into some 2021 Tops Chrome Sapphire. Tops Chrome Update Edition Sapphire. Is that Torian Prince with a bucket? Nice assist from Laos and Reeves. All right, we got some rookie combos here. White Mills, Jose Goodie, Jonathan. Oh yeah, this is 2021. There's Jonathan India, rookie card. We've got an autograph, nice. Jose Devers, rookie auto for the fish. Jonathan with Marlins, with the Miami Marlins, that is. Not sure what his progress has been since 2021, but always nice to get an autograph out of here. We got Chris Flexen for the Mariners. That'll be for David M. in Seattle. That's gonna be 16 out of 50. Should we go triple thread? Sure, redemption. Any guesses on that redemption for bragging rights? Ryan Samber, 135 out of 259. Mel Ott, 299. Joey Votto to 125 and Corbin Burns to 199. Over here, we have a long time pop. I think that's what that says. 17 out of 18, Joey Votto. It was on April 7th, 2022 in Atlanta that Joey popped out to the picture for the first time in his career. I do remember this. It was his 8,130th plate appearance. I do remember that. I do remember seeing the highlights or something like that on MLB Network, and I was like, what? Ever? It's kind of crazy to think about it. That's for the Reds, that's for Matt. Behind Mookie is Cabrion Hayes, nice. Jersey and autograph, 84 out of 99. Ron with the Pirates, you got a triple relic? All Orioles, six out 36. Cedric Mullins, Trey Mantini, Ryan Mountcastle. It's for Ron and the Oaks. The redemption, no guesses in the chat, huh? Not even inclined to give away some prize money if someone figured it out, but maybe next time. Triple threads, autograph, single jumbo relic. Congrats to somebody. B, Boston or Baltimore. Oh, Boston. It's Jaren Duran Duran, Hungry Like the Wolf. Alexander with the Red Sox. Her name is Rio and she dances on the sand. All right, let's go Top's Chrome Update Series, Breakers to Light Edition. There should be a couple of autos hiding down here. It should be right there. All right, there's Cody Belanger. Jose Cuas, 15 out of 299. That's for the Royals, for Scott. Nice Riley Green, blue parallel, rookie debut. That's gonna be 66 out of 150. That's for Ron and the Tigers. There's Mason Miller to 399. That's gonna go to Stephen and the A's. All right, and your autos behind Zacknito Youthquake. First one is Oswald Paraza. Nice blue chrome autograph for Jonathan and the Yankees. Did I pass an auto out of the Sapphire? Out of here? Out of where? I don't think I did. Wait, in what product? In here in Sapphire? I don't know, maybe Ron might be lagging behind a little bit. I don't think I passed, in prison? There's only two autos in this, right? I don't think I did. Because the second auto's coming up, which is Joey Weimer. Only two autos in here. And that's for Ron, that's for you and the Brewers. All right, now, let's go inception. All good, Ron. It's all good. I think we have a silver ink auto in there. Here's a Patrick Bailey to 75 and a Volpe. Rookie card for Jonathan and the Yankees. Patrick Bailey, 48 out of 75, will go to Brandon and the Giants. And behind Simeon Woods Richardson is a silver ink autograph von Grissom, 76 out of 99. That will be for Dustin and the Braves. Another Patrick Bailey, green this time. Then we got a Shintaro Fujinami, 27 out of 50. That's gonna go to Ron and the O's. The autograph behind Brandon Crawford is a dual auto, four out of five. Both Mets, Brett Beatty, Francisco Alvarez, that's Dustin and the Mets. Dust in the wind, all we are are dust in the wind. Nice. And out of fives and under, get the train whistle. There we go, all aboard, the big hit express. Woo-hoo. Not a bad dual auto. Brian Bale, Cabrera, Gordon Bale, Beatty. And behind Peter Lanzo is Brian Servin, 188 out of 299 rookie auto for Ron and the Rockies. All right, let's do some 2021. Tops Chrome Black, Pesos Sanchez, George Springer and Trista McKenzie, 22 out of 99 for Cleveland, Ron. And there's that encased autograph. Let's see what we got here. Good luck, everybody. It is Joey Bart, rookie auto. Giants, Brandon Jensen with that one. All right, 11th and final box, 2023 Bowman Chrome Baseball, just three autos in here. Speaking of Bowman, we do have a lot of Bowman Draft on the website, brand new release on a Tuesday. Jaspy's casebreaks.com, check it out. Andrew, what's going on? All right, good luck, everybody. The Nationals, Andrew. Tom Brady was drafted by the Montreal Expos and Expo stuff go to the Nats. All right, there's a Vladimir Restitutio. It's gonna go to Ron and the Rockies. And we got Paul McIntosh. That's gonna be for Jonathan and the Marlins. And we got a Yonder Rivera refractor autograph, 468 out of 499, that's for Ron and the Nationals. And there you go, gang. A nice little mixer in the books. Remember, everyone on this mixer list will also have a chance to win some prizes in our holiday mixer promo. Check out the details of that on Jaspy's casebreaks.com. Quick little recap, we just saw these. Joey Bart, your inception autographs. Jaren Duran, your triple threads. Sapphire, Prism, Cosmic, Sweet Spot. Nice Clemens right there. And of course, that Doolado. Don't forget that, four out of five. That was really cool as well. There you go, gang. I'm Joe for Jaspy's casebreaks.com. That was our 11 box off-season baseball mixer. Look out for more mixers and try to win some stuff when we get all the details on the website, Jaspy'scasebreaks.com. Bye-bye.


Hello, I'm Dr. Steven Pomerance from ProSky and Imaging. We have an orthopedic MRI advanced case review beginning February 27th in Vienna, and we're here today to give you a sneak peek at this exciting educational program, a course where each radiologist will work on their own individual workstation just like you were in your own practice. Let's take a look at a case. We have some MR images of this patient, a coronal T1 fat-emphasized image, we'll scroll it, paired with it is a coronal T2 fat-suppressed image, and then on the far right is a sagittal T2 fat-suppressed image. All three images were acquired in the orthogonal projection, and that's important. Let's take our questions. Which of the following findings are not present? A, diffuse thickening and or synovitic swelling of the carpus. B, scaphoid fracture of the waist. C, scaphoid non-union. D, palmar displacement of the carpus with a lunate dizzy posture in the sagittal projection. E, a vascular acrosis of the proximal pole of the scaphoid. Number two, the scaphoid fracture exhibits A, partial bridging. B bridging. C non-union. D, fibrous malunion. Let's go back to the images. The coronal projection T1 fat-emphasized shows a scaphoid with a large cleavage plane through it. It's through and through. The cortex is interrupted. The water-weighted T2 fat-suppressed image demonstrates high signal intensity in the scaphoid. Let's do a little drawing here so we can demonstrate the proper way to image a scaphoid, which in earnest was not done here optimally. What should have been done is the scaphoid imaged in the coronal projection should have had a sagittal oblique obtained through it. That would have produced a scaphoid that looks something like this from anterior to posterior. Then what should have been done optimally is another oblique could have been and should have been obtained will change our color and angled off of the sagittal oblique to create a short axis compound para-axial oblique. Nevertheless, the images are still diagnostic. We have a fracture through the scaphoid waste, the most common site for fracture, but in the fracture line is an area of high signal intensity that on a T2, not a stir, not a spur, but a T2 fat suppression, is high signal intensity with well-defined cortical margins on either side. That combination, we're going to blow it up a little bit for you, that combination of high signal intensity with cortication on either side is consistent with a non-union. On the other hand, you might say, well, what about a fibrous malunion? In a fibrous malunion, you may see a little bit of bridging or dark tissue that goes from the proximal fragment to the distal fragment. That's not present here. It's all nice and white in the middle and even around the edges if we scroll it. There's no communication between proximal fragment and distal fragment as would occur in a fibrous malunion. Furthermore, in this space in a fibrous malunion, you're less apt to have high signal intensity on a T2 weighted image. Now, as that abnormality continues to demonstrate movement, as the patient moves their wrist and as these two fragments wiggle, you're going to develop something that looks like this, back to our drawing. So here's our scaphoid. Make a nice picture of an egg for you and keep it rather simple. We have our fracture through the waist. We have fluid signal intensity in a non-union through the fracture line right in the middle, depicted in purple corresponding to our white signal. But then we have another finding. That finding is not present on the MR images, but I'm demonstrating with my drawing multiple or innumerable cysts and pseudo cysts, some of which are synovial line, many of which are not on either edge of the non-union. This is a sign. It's a sign that there is instability at the fracture. In other words, the proximal fragment is moving relative to the distal fragment. This is what happens with moderate to long-standing non-unions. We have several other findings. Yes, there is swelling of the wrist. There is capsulo-synovial thickening. Let's mag out a little bit on our water-weighted coronal image. All of this tissue is fluid and capsulo-synovitis. If we look at the T1-weighted image, why shouldn't I say that it's just fluid? Because just simple fluid wouldn't be gray iso-intense to muscle. It would be much lower than muscle. It would have pure water-like signal-intensity content. So the fact that it has a rather complex gray signal on T1 tells you that you're dealing with a protonaceous mixture of fluid and synovial capsular hypertrophy. Oh, we're not done yet. We have another finding. Look at the base of the capitate. It is actually starting to piston down on the lunate. That piston-ing due to micro-movement of the scaphoid and this wiggling between the lunate and the capitate results in sclerosis of the proximal aspect of the capitate. Oh, but we're not done yet. I wish we were. We have to look at the intrinsic, especially when somebody has a fuchs mechanism of fall. Here is the triangular shape, sometimes trapezoid shape, sometimes linearly shaped, scapholunate ligament, which has a dorsal, a middle, and a ventral or volar component. The dorsal component is the strongest. And if we scroll to the ventral side, that's the ventral component of the scapholunate ligament. That's still ventral right there. Now we're in the mid-portion and now we're in the dorsal portion, which is the thickest, widest, and broadest. There it is on the water-weighted image. It is contiguous from the base of the scaphoid to the lunate. It may attach to the bony contour and sometimes to the cartilage itself. In the sagittal projection, let's have a look at the position of the lunate. The lunate is a little bit volar in its position. It looks like it's squishing out a little bit. And the capitate is migrating proximally as it pistons down on the lunate. The lunate is also dorsal facing. This is known as dorsal intercalary segmental instability, or dorsal segmental instability posture. This occurs because the radioscaphal capitate ligament is injured, stretched, or torn. Let's go back to our questions. Question number one, which of the following findings are not present? Well, the answer is E, a vascular necrosis of the proximal pole of the scaphoid. We don't need to inject it. We don't need to do a bone centagram. If we are in a chronic stage, such as we are, by looking at the history, in other words, we're not one or two days out from an injury, where weeks out, the absence of any signal alteration in the proximal pole of the scaphoid is 97% predictive that we do not have a vascular necrosis. And we do not have a vascular necrosis. The other statements are true. There is synovitic swelling of the carpus, as discussed. There is a scaphoid waste fracture. There is scaphoid non-union, and there is palmar or volar displacement of the carpus with a dorsal tilting of the lunate, so-called dissy. Question number two, the scaphoid fracture exhibits, and the answer is non-union. Although we don't yet have a pseudarthrosis with pseudosists, as discussed, we don't have any bridging from one bone to the other. We don't have any partial bridging of any portion of the bone, nor do we have a fibrous malunion, for reasons already mentioned. That concludes our discussion of this case. You're welcome to further scroll it, if you wish. The great thing is that because every participant is going to have their own workstation, you can follow Dr. Pomeranz on his screen while scrolling through the images yourself on the workstation. So I think that makes it a very worthwhile educational experience, and I hope that you can join us in Vienna to learn from Dr. Pomeranz.


What's up guys, my name is Michael and welcome to my YouTube channel today We're gonna do another leech co-challenge or maximum depth of n-ary tree given an n-ary tree find its maximum depth The maximum depth is a number of nodes along the longest path from the root down to the farthest leaf node So in this treat in this case the maximum depth is three because the farthest Down node is five and six could because you as you could see the height of the tree would be one two Wait We hold up Yeah, okay, wait actually it would be three Because we're counting the first one as a first level so one one two three. Okay, so that's the maximum depth Because five and six are the maximum depth of the tree. Okay, so one two three. Okay, what else? That's pretty basic I'll go over the solution right now, and I hope you guys Tried to this on your own essentially if the root is null we return zero Why because the height at? Null in this case like two twos like The children of two is an all right its height is gonna be zero That's just like is it just doesn't there's no height for no node, okay Then I'm gonna create a depth value of one this is just The depth value That I'm gonna get So what I'm gonna do is I'm going to go through every single children of the root and get its max I'm gonna get its max depth. Okay, so I'm gonna go through every children of roots every children of root So for every children of root it's This is every children of root and I'm going to get max depth get each depth of every children of the All its children of root. Okay, that's what I'm doing here Now what do I need to do I need to find the maximum of The root of every single children. Okay, so that's the reason why I created in depth equal one because we know that this The smallest depth possible is one, right? I mean it could be zero, but honestly if it's not null We know the smallest possible depth is one and I'm going to essentially get the max of All the children all the children's depth. Okay, so this that's what this is doing I'm getting the maximum value of all the children of its depth So I'm calling max depth on all the for each child of root And that's going to get me a depth value for each child And and what I'm doing is I'm creating a variable called depth equal to one This is going to be the smallest possible value of possible for a Non-null root It's equal to one and I'm calling max essentially getting the maximum possible depth for every children I'm setting equal to max. So after this for loop I'm basically getting the max max value of each children's depth and depth and it's going to get me the maximum possible value for every child Every children's depth. That's what it's doing like the maximum depth for each child for a child like the maximum positive This is essentially the same thing as setting a variable Finding the largest value in an array because if I'm finding the large value of array I just set the Largest value to be the smallest one right and then I'm going to Update the largest value of the array by setting the maximum of the smallest value and the rest For in each element of the array Calling max on each element of the array in order to get the largest possible Value so it's the same thing Basically, what what I'm doing here. Okay after that. I'm just going to return depth Now there's a key issue you have to think about is that every time I go down For each child right every time I go down. I'm actually going down one more depth. Okay, so Whenever I call max depth Max depth is going to return the depth of whatever The depth of the children right but I have to add one every time because if I'm going down the child the children the children of Three is five and six right? I have to add one to the depth of three Right so in this case the depth of three is two because it's one one three and one and three right is a The because of the starting depth is it has value one right? So the height is going to be like one One two right so then the maximum depth of five is Gonna be one plus the maximum depth of three So it would be one plus two. So that's why five is three Right maximum depth of three. That's why every time I go down a Child I have to add one So that's what this is for plus one. That's on the code Okay, I got expected value Submit it and it got accepted. So that yeah, that's basically how you do this Finding the maximum depth of an nary tree. I hope you guys Understood this raycom subscribe. I'll check you guys later. Peace