So I am Max, and I work as a Distinguished Engineer at IBM. And actually, I was one of the people after Google made Knative Public to start contributing to it. Obviously, lots of folks from Red Hat, VMware. I'm sure I'm going to forget some names. But the project has grown, especially the folks that created Chain Guard. Most of them were from Google. And then they created Knative. And I worked on that for about two years, or 2 and 1 half years. And then now I'm working actually on what we call quantum serverless. So it actually uses Knative underneath. But my mission is border to address that. It's actually quantum, open quantum. So we're not going to talk about that now. That was a talk before. That's why I was late. But I'm here with my colleague, David Hadas. And actually, I'll give a lot of credit to David for this talk, not only for putting it together, but also it came from a blog post that he had. So David works in Startup Nation. Anybody knows where that is? You all know Silicon Valley, right? But there is a country called Startup Nation. Yes, I've never been. But I've collaborated with so many people from Israel that it's probably true. It's Startup Nation. So anyway, he's from there. He worked 10 years, I think, trying to build startups. And then you give up and join us. And he's an expert in security. And when he contacted me to help in Knative, he's made a big difference. So he's going to talk about some of the work that he's also doing. But what's interesting about this talk is that it tries to position Knative as the place you should start. So let's get to it. So obviously, when you're talking about cloud computing, in terms of the big picture, it's pretty much what everybody is using. So I'm here because this is cloud native. And people are using cloud computing for all types of problems, solving problems, even quantum, which is what I just came back from, a talk on that. But there is some downside to it. And we wrote a blog post, at least for some aspects of this. So starting from the bottom, for instance, I think yesterday, if you are at the keynote, folks, colleagues from Azure are talking about this, as well as Red Hat, where there is actually a lot of energy that's being consumed by those data centers. And if we keep going in that direction, it's not going to help the problem that we all face. I mean, I don't have to tell you. Hopefully, you're not a climate denier. But if you are, maybe we can talk about it offline. There is quite of issues with the climate right now. So what could we do, for instance, as computer scientists, as people in the community, to make, for instance, those cloud computing centers a little bit more energy efficient? So that's one of the downside. And the demand is going to keep going. So it's not a downside that we're going to have tomorrow. It's a downside today, and it's going to keep going. So one of the things that we believe, and we don't have a proof of it, so it's not something I want you to bet on, but it's an intuition. And it's essentially serverless. So the approach of running software for just the amount of time that you need, just the amount of resources that you need, being very dynamic in how you go. So instead of scaling and trying to predict the scale, you scale based on the demand, it's going to help. Partly because you're using less resources. You're using just the amount of resource that you need. And when you start multiplying this by all the workloads we're all running and the rest of the world, the intuition is that it will help reduce some of the energy pressure that we're putting on cloud. So we wrote this blog post. It's on the IBM cloud on how we believe Knative, for instance, is a good direction in that. And also colleagues have built on this with, for instance, Kepler as a model for you to measure, for instance, the amount of, at least the carbon offset that your computation is doing. So a lot of clouds you're going to see is going to expose this. But that's just one benefit. There's a lot more. So David is going to walk you through the benefits that we've identified of using Knative. Not really instead of Kubernetes, but using Knative as the way to use Kubernetes. And then, of course, because Knative, you can form Knative use Kubernetes. If you need it, you can also use it. So David. Thank you. Can you hear me? Yes. So we'll start with the question that this old dog doesn't know the answer for. Because every person I would ask would give me a different answer, which is, what is serverless? Now there are different concepts about what is serverless. We will define it for this talk. For this talk, we talk about serverless when we talk about a situation when you approach the cloud with your whatever service you want to deploy there without telling the cloud how many resources the cloud needs to associate with that service. So if you take a step back and you give the cloud the decision, how many resources are going to be deployed for your serverless? And of course, it means that the cloud needs to measure that and decide that for you. Then in this case, this is what we will call serverless. And of course, it goes hand in hand with pay as you go. Because if you didn't define how many resources you're going to use, then you need to pay as much as you're actually using. So there used to be these two options for you. You either use microservices and you define exactly how many resources. I want 27 pods of this deployment. How do you get to that number is a good question. But that's what I want. And that's the other option, which is serverless, which says, I have no idea how much I want. It's dynamic. I will let the cloud do that. And that's serverless. But the truth is, it's not really two options. There is a whole range of other options. You may say, OK, I want at least three pods, or at least one pod running all the time, because I want that dynamic service like microservice. It answers every request I have. But then when I need more, then please make sure I have more. And I don't care how many. If I need 300, use 300. And then I may say, OK, I want between 3 and 10. Don't ever use more than 10, because I'm never going to pay for that. So this is a completely dynamic range. And it leaves the question, what is serverless completely irrelevant? And that changes how we see Knative as well. So let us redefine what Knative is. Knative is your way, your automation layer, to deploy native Kubernetes services. And what is a native Kubernetes service? A native Kubernetes service is one that follows the best practices, 12-factor-up. If you are building microservices based on the 12-factor-up methodology, then you are probably good to go with Knative. Serverless, of course, as a result of that, any serverless application that you're building would also, they also comply with 12-factor-up. And they would also be considered a native service. And also, if you're going for the new Knative functions, which is a build system that helps you create new services, then those functions at the end of the day are just container images. And those container images are right there. And those container images are running serverless. So it's a native Kubernetes service. So now we make a distinction between running against Kubernetes. And in that case, we talk to the QB API and do whatever we are used to doing. Or we talk to that automation layer, which does that for us. So it is like a layer that would simplify things, implement the best practices for us, and we have now less complexity as a result. So instead of running all and making sure that we get all the Kubernetes resources right, we essentially have one important resource to manage, which is a service resource. And that's like a new obstruction layer that is added to Kubernetes to allow us to deploy our services. So that reduces our complexity as a result. It reduces how much we need to learn or our team needs to learn in order to deploy, and run, and operate those services. In a way, you can think of Kubernetes as a non-opinionated system. It allows you to do everything, deploy anything you would like, unlike Knative. Knative is very opinionated. It defines, it has embedded in the best practices, and it defines what are the best practices that you should follow. Now that may be a good thing, and that may be a bad thing for in certain situations. So you don't have to use Knative for all your microservices. But for most of your microservices, that will bring you uniformity, that will bring you, as we will see later, more security. It will bring you the ability to operate faster, with your services, and so forth. So this is like, instead of getting all the bits of pieces to create a camera, you get a ready-made camera. You can create great shots with it, but you can't make coffee. So by the way, these are, on the bottom, are examples of how simple it is to deploy a Knative service. It's just a one-liner. But of course, you can use YAML to do that, and you can define everything that a service can have. But that's just if you just try to play with it and create your service very quickly, you can also do that with the CLI. So let's talk a little bit about that auto-scaling that Max also referred to as part of our path for reducing energy. So I want 27 of these, and 17 of these, and six of that. And how did you get to those numbers? Well, I don't know. How do you get to the right number of resources you need? How many pods you need for each microservice? Is that the magical number that you have in your pocket? No, you probably overprovision. You probably just say, 32, that should do it. And if it will not do it, then I'll increase to 48. It's a good number. Why not? Then you overprovision everything, just everything. All your microservices are overprovisioned. And that's a very bad thing for managing your resources, of course, because at the end of the day, they all introduce some overhead, and they all consume energy one way or another. So you really need that magical thing that would follow up dynamically with your load and would decide, now you need 4, now you need 40, and change the number of pods for you. So autoscaling is an essential part, and that's part of what Knative offers you. Now, one more very nice future that we would have for that is, look at that picture that we see over here. We see all those provisioned pods which are not being used. Of course, when you have those pods provisioned, you cannot reduce your energy, and you cannot reduce the number of VMs in your cluster as a result.  This will give you, in the future, as we move forward, to do the scaling of the cluster, dynamically reducing now the number of VMs, keeping some VMs extra for your growth, and then growing those numbers once you start using those extra VMs, always keeping something because it takes time to bring up a VM, let's be honest. So that's another benefit that we have which comes with Knative. The second thing is, OK, we are using microservices. Most of us are developing microservices for Kubernetes. Microservices were designed in this mindset that you take the big problem, you divide it into small problems, and each problem has a very defined API so that you can change the revision of that little piece and continue growing it, developing it iteratively. So to do that, it's very nice to keep all those revisions as images, but you also need the deployment system, the Kubernetes system, or the Knative system to help you do that. Because there are risks in changing revisions, you may want to decide that at the beginning you want to start up with just 1% or then go to 5%, then go to 25% for this new revision, and over time, you're going to trust that revision enough and throw out the older revision and go to the new revision. So revision management is a crucial thing that we all need in Kubernetes, which comes as part of Knative very natively. And we will demo that also later on. And the next thing is my pet topic, which is security. So first of all, the first bullet, Knative community is presently working very actively to add TLS to Knative such that you would not be required to rely on your service mesh for TLS. So you could get, you could either use your service mesh or you could get Knative with TLS without requiring you to deploy service mesh. That's the first thing. Second, we just talked about rolling out new revisions. That help you when you have a patch for security reasons. So it will expedite the entire process of your teams getting new patches to work because it reduces the risk of each new patch. You can deploy the patch and see that everything is OK very quickly and then continue with that patch. So that's another security aspect of Knative. The third aspect, we're going to talk in the next few slides. So I'll leave it for now. But basically, it says, OK, we have all those services deployed and they're all very uniform. Let's use that and do security and monitoring of those uniform services because we already define how they are going to look like as far as best practices. We're going to use that for security. And then the three points on the left side, right side, if you're sitting, then are the whole issue, which is a very known problem in security, which is a configuration problems, configuration drift. Every time you configure a system, even if you got it right the first time, three weeks later, someone changed the configuration. Now, why is it such a great thing to do Knative in that respect? Because most of your configuration are not done by humans anymore. Most of them are done by the automation. So the humans define the service, the automation does all the configuration in Kubernetes for you and set all the configuration right. So even if someone tried to change that, then you have continual repaving and it to be redone to the right configuration. So you don't have to worry anymore from security perspective for configuration drift and so on and misconfigurations. OK, so let's talk about the security use cases that we all face. And the first is that there is a basic assumption and very naive assumptions by all everyone that if you do everything right, then everything should be right. But that's not the reality with cyber. With cyber, even if you do everything right and you follow all the best practices, your microservices are still vulnerable. Well, if you create a microservice, you look at your team and you say, well, they are well trained, but maybe that's so. Maybe they followed all the practices. But then they use all those libraries. And you don't know the people who wrote those libraries. And then those libraries use other libraries and so on and so on and so on. And then it's not only that, you're using development systems. And you don't know all the people who developed those development systems and those extensions that you're using for your development systems.   And all of these need to be perfectly secure, which is unrealistically by evidence, but what we see in actual deployments. So assuming your microservice is safe is a very bad practice. So the right practice for you is always assume your microservices are vulnerable. And that's like the normal situation. You have no idea what the vulnerabilities is, but you know they are vulnerable. So someone may use, may find those vulnerabilities, may use those vulnerabilities. You just have to keep an eye on them. You can't just deploy pods and assume they are safe. You have to keep an eye on them. You have to monitor them all the time. And everything that goes into your pods needs to be monitored. And you have to have those gates which will block anything which may explode your pod. You have to have those gates which will delete any point that you have, which may become misused. And of course, you have all these other use cases where you already know a bunch of CVs, but it takes, on average, two months to fix an average CV. So if that's the case, then you are running with CVs all the time, because you may have more than one. You're running with CVs all the time. And you need a way to deal with that. Maybe you also know about an exploit which is compatible with that CV. So you know exactly what you need to protect from, but you need to have that protection in front of every pod or every service that you have. If you put it at the perimeter, then it only protects against someone who comes through the perimeter. If he's already in, in another pod, somewhere, then maybe he doesn't protect you. So these are the use cases that all of us face all the time. And now let's use the fact that we have a very well-designed system with the microservices to monitor those services. In the old days, when we were using monolithics, then all the requests came to that monolithic entity. And that monolithic entity behaved in all different ways. For that request, it is that. For that request, it is the other thing. And we didn't see everything that's going on inside that monolithic application. But we are using microservices, right? So let's use that. We know that every microservice should have, if it's well-designed, it should have a very clear pattern of the requests coming in. So let's look at what is coming in and make sure that the pattern that we see conforms to what we expect to see. Let's look at the behavior of each and every microservice and see the behavior of that microservice, because after it's just code reacting to a very specific request. So we expect the behavior to be quite the same every time it processes a new request. So that approach, which is security behavior analytics, is implemented as part of a K-native extension called Security Guard, which you can get with your K-native deployment. Security Guard is embedded into the Q-proxy of K-native, which means that you don't have to deploy anything special. It is every request that you have already go through the Q-proxy. Now it's also being monitored. And also, we have the chance of blocking any request, which is off. We also sit very next to your user container. So at the same time, we are able to monitor certain aspects even without privileges. Even without having special privileges, we're able to monitor your user container. For example, any attempt of your user container to start approaching IPs, he's not supposed to approach. And we also have a machine learning component. That's part of K-native, which would learn the pattern. So you don't have to deal and create all those hundreds of rules for your hundreds of services and maintain them all the time. So you have a machine learning that helps you do that. And it creates a certain rule set. And if you have a CVE, you may decide, well, I want to change that rule set because I want to be more strict or I want to make sure that this rule set is fine for me and protect against this CVE and so on. OK, demo just in time. So we'll start by just deploying a K-native Kubernetes. We have the list of services, the list of revisions. And then going to kubectl, we go to get a number of pods. And we will deploy just to demonstrate how we deploy a new service very easily with a CLI. We'll just need to say the name of the service, the image, the environment variables. And we scale it for one at least. So it can be any number, but at least one. And we get the URL already for that service. And we can use it. And we can immediately access it. And it will respond. And we are fine. We deployed a service. So next, let's try to see what happened if we load that service. We will start 4,000 connections against that service. And then we will stop those connections. And we start them again. So we start increasing the load. And as you can see, the number of pods just increase to overcome the new load. And then when we stopped it, the number of pods will adjust. And we will start it again. And it will increase again. So OK, fine. That one works. So next thing is let's deploy a new revision. So the change that I'm going to do in the new revision in a second is I'm just going to change the environment variable, but I could change the image just as well. So we will give that new revision latest is 5, meaning I'm going to give it 5% of the traffic, which means I'm going to keep 95% for the older revision. And you see the number of pods. And the number of pods has changed. I have up there the list of revisions and the 5% and 95%. And the new pod for revision 2 was created. So let's play with it and change that to 50% and see that the system actually works. And yes, it changes the number of pods accordingly. And of course, at the end, I will change it to 100%. So we don't need revision 1 pods anymore. We have revision 2 completely deployed. And we may reach a case where we found after some time that revision 2 is not working as we expected. And we want to go back to revision 1. So as long as we have revision 1 still deployed on our system, on Knative, then all we have to do is tell Knative, OK, please give 100% of the traffic to revision 1. That's all we have to do right now. And the system will adjust. So it's all very nice. Let's go and see the security features, which is my pet project, so not surprising. So we'll start with a simple service. And we're going to use that service. And we assume that already the system was trained with that service, so all the rules are out there. And what we're going to do is start up with just sending out query string or a header that is not supposed to be there. And we are monitoring the log at the bottom. And we see an alert coming up. And if you also notice, we asked Knative to block the requests which are creating the alerts. So these are blocked. But it's not only new keys that are being monitored, but also the values and what's in the value. So it could be that the value is too long, for example, that the system already learned what is expected length of each value. Or it could be the actual content of that value. And I'll stop for a second. And what you see here, for example, is that it's detected that we were using a rounded brackets. And rounded brackets are being used in all sorts of attacks. And if that specific value of that specific service shouldn't have brackets, then let's block it. Let's not let that in. So that's what the system did. And the next thing is let's say that everything went sour. And we actually have an exploitable service. And someone is able to run a remote shell on that. And we will just do an exec as an example. So we will run an exec against our service in a second. And normally, when you have a remote shell, the first thing you're going to do is try to install something on that pod. So we will try to install, in that case, Wget doesn't really matter. And the system detects that there is now a connection to an IP that is not supposed to be addressed from this pod. And there is an alert. And there is a block. I mean, sorry, this pod was deleted, as you can see here. It was deleted by the system. And UPD came to replace it because that's done automatically by Kubernetes once you delete the pod. And the attacker is not very happy because everything that he did until now to get to that point is destroyed. So he needs to start over the attack. And it will just repeat. So he will go elsewhere. OK, so limitations, as we mentioned, it's an opinionated system. So you can't do everything with it. You can't deploy an SQL database with it. It suits your homegrown microservices. So what do you do? How do you handle those situations when you have something to deploy, which is not suitable for Knative? Well, you just use Kubernetes to do that. It's a mix and match. Well, it's a mix and match. You can use your Kubernetes for any service which doesn't fit the pattern and then use Knative for everything which fits the pattern. And normally, your homegrown microservices should fit the pattern. So I'll ask Max to. Yes, so if all of this wasn't enough for you in terms of why you should be using Knative, there's actually another reason. And it's a very important one. And it's the fact that Knative comes built with a eventing infrastructure. And this is important because if you can imagine a lot of your problems or the applications that you're building, they are not just a bunch of microservices. It's also which microservices you need to run, what event is going to trigger a execution of a service, et cetera, et cetera. And when you have to do this, you need it to scale. You need to have your events be, I guess, you need to keep them in a queue. You need to be able to consume them. So you need sanks and sources, et cetera. And the good thing is the designers of Knative, so this is give credit to Matt and the rest of the team now at ChainGuard, they built in Scott. They initially created Knative with an eventing infrastructure, so that comes in. And even better, you can plug in your own. So for instance, at IBM, we plug in MQ, and you can plug in Kafka for an open source version, et cetera. So everything else that David told you, there's also even more. But to summarize and conclude, if you think of different actors in a running system, whether it's Kubernetes or Knative, you can think of the developers, most of us here, operators, probably some of us that are operating the system, and then the users. So what are the benefits as a summary? For operators, it's more secure because you can deploy it with guard and add the rules that you need for the services that you know you're going to operate. You don't have to deal with scaling. It's going to do it for you. It's going to hopefully optimize. And it's going to help you reduce costs and reduce energy. So that's the advantage of operators.  For an end user, it definitely will help you scale nicely, maybe reduce cost. And certainly, it's going to be greener. So if that matters to you, this is something you can mention. And then finally, for developers, it's everything that David mentioned. So using, for instance, the CLI, it's super easy to start training your developers to use Knative. You can do blue-green canary deployment in a breeze. You don't have to deal with the Kubernetes objects underneath because it's doing it for you. You can scale, obviously, a lot better. And you can add a security layer that comes built in. So with that, let me stop and invite David back so we can get your questions. So any questions? I think you may have to yell because, yes. Yeah, go ahead. I don't know if there's a mic. So let's repeat the question. So I think you asked about comparing Dapper with Knative. Familiar with Dapper. Is it another serverless environment for Kubernetes? OK. I see. No, I'm not familiar with it. Yeah, I don't think we're going to make that comparison here. Any other questions? Yes. I'll repeat it. So good. From a developer environment, the guard burnt? Yeah. Into production, like how does that flow? So the question is about the guard rules. And can you put them into CICD, for example? And the answer is yes. Guard learned the rules. They are placed in a CRD object. So you can take that CRD object and you can run it through your CICD. You can read them from the cloud. You can write them to the cloud. You can define to guard whether it needs to continue learning or stop learning, whether it needs to use the learned rules or configured rules. So you have a lot of control there that you can use to do that. Another question, yes? So the question is, how do we detect the misuse bot? This is for the autoscaling? Yeah, so the autoscaling went through a lot of revisions. And the algorithm is pretty complex. But there is a part of the code that's actually monitoring the usage. And it's using that to compute it. Yeah, pretty much. But it's not heavily configurable, but there are some parameters that are exposed. So you can tune it a little bit. The thing that we did really well, I think, in Knative is that we've had a lot of test bed. So whatever you get out of Knative tends to be pretty good in its scales, meaning you could run it for very large systems and it will scale really well. But you can actually tune that, too, if you need.


How will they how will the force depend on the velocity linearly or non-linearly linearly because this is the low Reynolds number regime. Remember the governing equation is now the Stokes equation which is that delta p the pressure gradient is eta Laplacian of v right which is a linear equation and you get a linear force velocity relationship in this regime ok. Once you take this low Reynolds number Reynolds number much much less than 1 then the governing equation is the Stokes equation where the force is going to be linearly related to the velocity. So, what we can do is that we can write down a relation between this force and the velocity and the angular velocity. Let us say something I do not know how it will go what will be the coefficient, but I know it will depend linearly on the velocity. Similarly and of course, any sort of linear velocity is also going to cause a rotation. So, it is going to depend it is going to be some a v plus b omega I do not know what these a's and b's are we will try to sort of find them. Similarly, if you put in a torque n that is going to go as c v plus let us say d omega in this low Reynolds number regime these will be linearly related the forces in the torques will be linearly related to the velocity and angular velocity and I can construct this sort of an equation between them right. So, this is what Purcell did. So, he said that let me write my forces and torques in terms of this matrix a, b, c, d and they relate my velocities and angular velocities to the forces and torques ok. This is what is what Purcell called the propulsion matrix for a bacterium alright. So, what properties would this matrix obey very generally? What these a, b, c and d and so on will be will of course, depend on the body will depend on the shape of the body will depend on the size of the body of this cork screw or whatever swimmer that you have, but very generally can I say something about the structure of this matrix this propulsion matrix p which is a, b, c, d ok. So, what Purcell are let me first tell you the result and then I will just run through the proof quickly. What Purcell said is the following that first he said that if I take if I take two swimmers two very different swimmers now I am not talking about this helical cork screw or anything it could be any arbitrary sort of swimmer that gives rise to net motion. Each of these swimmers are going to be characterized by their own propulsion matrix p 1 and p 2. So, he said that let me assume that if I put these if I connected these two swimmers with this some very thin wire then I can add up these propulsion matrices ok. What does that mean? It means that means a couple of things one is that these swimmers are well separated enough that the flows generated by one of them do not affect the other ok. So, there wells the hydrodynamic flows of one do not impinge upon the flows of the other that is that is one of the assumptions that we are making and we assume the disconnecting wire that I have that has no effect on the flow at all. So, it is a very thin whatever wire that I have it is an idealized case, but whatever we can pursue this and see what it gives us. So, for example, if it was if there was no torque if it was just a velocity then both of these if it was moving with some net velocity the velocity would be the same for both of these right. So, it would have a a 1 of b plus a 2 of b, but this came from one of the propellers this came from the other propeller ok. You will still have a linear relationship between the force and the velocities the coefficient you we are just going to decompose into this propulsion matrix or one plus the propulsion matrix for the other. Again this is an approximation, but so what we argued was that that from very general symmetry arguments this propulsion matrix must necessarily be diagonal sorry must necessarily be symmetric not diagonal forgive me which means that this b must be equal to c ok and these diagonal terms a and b they must necessarily be positive ok. So, very generally what we argued was that this propulsion matrix for any sort of swimmer not necessarily a corkscrew or anything can be written in this form a b b d. So, it is a symmetric matrix with a and d greater than 0. So, I will try to show this. So, that is the result I will try to show all right.  This is going to cause it to move with some velocity right and it is going to cause it to rotate with some angular velocity right that is what we saw. So, then what he says is that let me imagine I apply an external torque as well ok. What torque do I apply? I apply precisely the amount of torque that is necessary to stop this rotation ok which means that after I have applied this force and this torque this propeller is only going to move with a velocity it is not going to rotate ok. In that case what do I have if I look at this this angular velocity becomes 0 right. So, let me say that I have this f 1 is equal to a v 1 and this n 1 the torque that I put is from c v 1 my propulsion matrix reduces to that. Now, because there is no net because there is no net rotation this this this torque is not doing any work which means that the entire work is being done by this force that I am applying right. And so, this external so, in this in a scenario like this this external force f 1 does this does whatever work is necessary in order to move this propeller through with this velocity v 1 ok. Because it this is the only thing that is doing the work it means that this what this means is that this coefficient a this must necessarily be greater than 0 right. Because this is doing some network depending on what distance it is moving and so on with a v 1 times the how much it has moved and because that needs to be positive this a needs to be positive. Similarly, you can imagine this converse scenario where you allow this this propeller to rotate, but you do not allow it to move by by a suitable combination of forces and torques in which case the entire work is going to be done by this torque that you apply which means so, in if I look at the converse case converse case then the entire work is going to be done by the torque which means that this d is going to be 0 sorry d is going to be greater than 0. So, in the reverse case of course, you have this f 2 let us say which is going to be given by some d omega 2 and this n 2 which is going to be given by d omega 2 because I have now constrained it from moving with a velocity by the suitable combination of f 2 and n 2 because it is not moving and only rotating the entire work is going to be done by the torque which means that this d is necessarily greater than 0 ok. So, very generally for this propulsion matrix what per cell showed was that this a and b the diagonal elements these need to be greater than 0 ok. Now, let me forget this. So, I so, I have this case this first case that I considered where I have applied a force in a torque such that I have cancelled the rotation these are my equations of motion alright. So, now, let me imagine that I have this propeller I apply a force no torque I apply only a force such that it leaves with the same velocity v 1 that it was moving in the earlier case ok. In this case with this combination of forces and torques n 1 and f 1 it was moving with some velocity v 1. I now apply a force f 2 let us say such that this propeller is going to move with the same velocity, but it will also of course, is also going to rotate right because I am not applying any torque. I am just applying a force which is exactly what is required to make it move with a velocity v 1. So, what does this mean? So, let me call this omega 2 what does this mean if I write down the equations it means that f 2 is equal to a v 1 plus b omega 2 right and I am not applying any torque which means that n is 0 and this is going to be equal to c v 1 plus d omega 2 right does this make sense hm yes. So, it could be like a corkscrew it could be any object. So, for example, it could be that for cell simple swimmer that I showed it could be any object which manages to swim in the lower Reynolds number environment ok. I do not care what that object is what that object is is going to be encoded in the values of this a b c and d ok. For example, if you were to think of a sphere if you give it a force it is going to move with a velocity which is 6 pi eta r v it is not going to rotate right which means that this a is going to be 6 pi eta r, b is going to be 0 and so on right. Similarly, if you give it a torque it could just rotate it would not move. So, which means c would be 0 and d would be whatever is the appropriate drag because of a torque ok. So, what these elements of the matrix are depends on the exact propeller that you are looking at, but the propeller can be generically anything. So, I am drawing a squiggle which is like a corkscrew, but it need not be a corkscrew yes ok. You got this part right this f 1 part. So, remember I am applying a force ok and a torque on this propeller ok. You just apply a force on it ok and you apply a torque on it ok. Generically that will cause it to move with a velocity and it will cause it to rotate ok, but you balance these forces and torques such that you cancel out the rotation. So, let us see you were just applying a force it would move. So, let us say I think of a corkscrew it would move while moving it would rotate ok. So, then I apply an opposing torque such that it would stop the rotation ok. So, now, once I have applied both of these it only moves forward with a velocity there is no there is no rotation ok. So, that is this setup. So, then once I plug back in that there is no rotation which means omega is 0 I get these two equations f 1 is a b 1 and n 1 is c b 1 yes ok. So, generically I had in mind something which is a simple propeller which has one axis of rotation if it has multiple that is what you are saying right if it can if it has multiple axis of rotation ok. So, if it has multiple axis of rotation you would have actually additional terms over here which would be b prime omega prime and so on. So, about each axis of rotation you would have a corresponding drag coefficient and so on. So, that you would need to influence. So, let us say this is for a swimmer which has one the single axis of rotation well you can if I think of a corkscrew for example, that is easy right. So, that I push it like this it is going to rotate about its long axis. In general if you know the symmetry of the body you can say that around what direction it is going to rotate this video that you are saying. So, what is happening the flagella is rotating yes this is a particular case it need not you can have some value of f and in fact, any value most values of f and n will give you a rotation and a translation. I am choosing a particular value such that you switch off the rotation you only have translation that is always possible. So, in general of course, you will have a velocity and you will have an omega given an arbitrary force and an arbitrary torque. So, this is a thought experiment because I want to argue something generally about what is going to be the structure of this matrix what is going to be a b c and b. So, I choose a value choose this very special value of f 1 and n 1 such that I switch off the rotation. Then the second set the second thought experiment is that I apply only a force no torque such that I get the same velocity as I had in this earlier case the same v 1. But it is of course, going to have a rotation as well because I have not applied this torque which cancelled it out. In general it is I am going to have a rotation as well.  So, now given this I can solve for f 2 in terms of v 1.  So, minus b c by d v 1 right. I just solve these two equations I put it in express the force that I need in terms of this velocity v 1 ok. So, now I can write down the ratios of these two forces f 2 and f 1. So, if I have my f 1 over here. So, let me write f 2 by f 1. So, that is going to be 1 minus b c by a v right I just divide throughout by a v 1 ok. Now, generically can you just think and say which of these forces is going to be greater f 1 or f 2. Remember in this case I apply a force then I apply an opposing torque such that I cancel out the rotation and I get some velocity. In this case I do not have that opposing torque I just have this force and I need to achieve that same velocity that I achieved in the first case. So, in which case would I require less force this one f 1 everybody agrees f 2 I will require less force why exactly right this opposite way here you are applying an opposing torque. So, in order to reach the same velocity you must you must apply a little bit more force right. So, given this setup very generically f 2 must be less than f 1 which means that f 2 by f 1 must be less than 1 sorry not c 1 right which means now that I know that a and d are both positive what it means is that b and c. So, what this implies is that b and c must have the same sign must have same sign. If one of them was positive the other was negative then this would become one plus something which would not work right. So, b and c necessarily has the same sign. So, basically this implies that b c must be greater than equal to 0 which means that b and c must have the same sign ok. Now for the final part of the proof remember what are we trying to prove we are trying to prove that this matrix needs to be symmetric which means that b must be equal to c right. So, that is what Purcell said that one property is this that the diagonal elements are greater than or positive the second property is that this is a symmetric matrix so, that the second thing is what we are trying to show right now that this is symmetric what we have shown is that till now that b and c must have the same sign ok. So, what we do is that we say that we create a propeller by hand which has this propulsion matrix which is non-symmetric ok. So, I create a something a propeller which is characterized by this propulsion matrix p let us say p t which has elements a t, b t, c t, b t some very generic I am I do not care what the precise shape is all I care about is that this is not symmetric which means that b t is not equal to c t. So, then Purcell says is that let me construct a symmetric given this that is one propeller something I do not know given let me construct a symmetric propeller let us say let us call it p of s which has elements a s, b s, c s, b s with a particular. So, this is symmetric so, I should not write c s I should just write a s, b s, b s ok. So, I take a propeller which has the symmetric matrix with this off diagonal term given by b s is equal to minus b t plus c t these are all thought experiments ok. So, I have given me a propeller which is not symmetric I conjure up a propeller which is symmetric and whether strength of these off diagonal terms is related to the strength of these off diagonal terms of this non-symmetric propeller according to this b s is minus b t plus c t by 2 and this is some this is again some propeller. So, this is what you have given me once you have given me that I construct another propeller like this now I put them in sequence. So, I connect these two propellers like I talk with a thin wire ok. So, this is my symmetric propeller this is my non-symmetric propeller that you had given. So, together this will have the propulsion matrix let us call it something the p combined ok which is going to be the sum of these two the symmetric plus the non-symmetric that you will get and let me say this is elements a c, b c, c c and b c right. So, these I can just write. So, a c is just a t plus a s, a s plus a t, b c is this plus this which means b t minus c t by 2 c t by 2 here it is going to be c t minus b t by 2 and here it is going to be d s ok. Again this is an idealized propeller in that I assume this connecting wire few snow forces and torques and so on these propellers are well separated such that hydrodynamic flows of this do not affect that in that sort of a limit I combine this I come get this combined propeller which is these elements ok. So, now, if I take the product of these off diagonal elements b c times c c what do I get? So, if I take the product of these off diagonal elements b c times c c I get what minus b t minus c t whole square by 4 right. It is this term into this term so, minus of something whole square divided by 4 right which is necessarily less than or equal to 0 right because this is a positive definite quantity I have a minus sign in front. However, I have proved well again very generically that the product of these off diagonal elements must be greater than or equal to 0 for a general propeller right which means what is the only option for this b c times c c the only option for this is to that b t is equal to c t right which is consistent. So, this will give you a 0 which is fine with over there which means that very generically you cannot construct a propeller which has b t not equal to c t you are going to run into problems. So, very generically from symmetry arguments without caring about what is the actual shape of the propeller you can show that this off diagonal elements must always be equal to one another which means that this propulsion matrix must very generically be a symmetric matrix ok. Is this clear? You can think about it is it is a little convoluted argument, but it is very powerful argument in that the other alternative is to solve these equations for every shape write down the boundary conditions and so on and then trying to get the equation trying to get out the properties from there. This is true for any arbitrary shape it it is yeah I like it yes the magnitudes are equal ok. So, let me think about that this is r cross f right the torque the c is the same as b this is fine right.  So, this will have if I let me think. So, this is a which is like dimensions of length right 6 pi r this will have dimensions of r square this will also have r square and this will have an r cubed for example, for a sphere it is 6 8 pi eta r cubed yes. So, this will have r cubed b and c will have r square will have r square right. The dimensions do in in fact, come out to be the same yeah I do not have it worked out, but it seems same dimensions yes ok ok. So, that is this part all right. So, we have constructed this general propulsion matrix which has this a b b d form for any generic propeller. Now, let me come back to my come back to my case of E coli right. What do I have for E coli? So, what do I have for E coli? I have this cell body which is connected to a flagellum right which and this flagellum is this corkscrew flagellum which is my propeller in this case ok. For which I have said that this matrix is symmetric I do not still know what is a b and b I will need to work out the mathematics for that for a helical corkscrew or whatever shape you give me, but at least it is symmetric with a and d greater than 0 ok. So, that is the propulsion matrix for this correspondingly I will have a propulsion matrix for this cell body for simplicity let me assume that this cell body is a sphere right. So, what is going to be this propulsion matrix for the cell body? What is going to be a 6 pi eta r what is going to be b and c 0 what is d that you may not remember, but so d is 8 pi eta cubed ok. So, if you work out for a sphere just like you work out 6 pi eta r this is 8 pi eta r. So, here are my two propulsion matrices this is this part is for my flagellum this part is for my cell body ok. So, this the cell body exerts a force on the flagellum right it exerts a torque on the flagellum through this motor which causes this to rotate and the flagella to translate ok. Similarly, by the action in the action this cell body is also going to rotate right in the different direction with some different angular velocity omega, but it is going to move together because these are connected to each other they are going to move together which means that the velocity v is the velocity of the flagella as well as the velocity of the cell body right this whole unit is going to get translated that is my aim right. So, if you the cell body the flagellum motor is applying a torque on this n let us say on this flagella the flagella is going to exert a reverse torque minus n on the cell body which is going to cause it to rotate, but it is going to cause it to rotate in the opposite direction because as long as you are not putting any net torque from outside the total torque must be 0 right. The total force must also be unless you are pushing the bacterium this whole thing is going to move on its own right. There is a motor inside which consumes energy and so on, but you are not going and pushing it. The cell body is exerting a torque on this flagella the torque the flagella has to exert a reverse torque on the cell body right. Similarly, the forces must be equal and opposite if you are applying no external force if you take up right. So, this is not a deformable corkscrew remember. So, this is a helical corkscrew which cannot change its shape ok it can rotate it can move, but it cannot deform. If it is if it can deform then you will have to take into account additional factors. So, this is a rigid corkscrew which can only rotate and translate ok. So, once I have that this propulsion matrix for this whole object this this equal i as a whole or this bacterium as a whole is this propulsion matrix for the flagella plus the propulsion matrix for the cell body. Now, like I was telling you think that if you have no external torques on the system then the torque on the cell must be equal and opposite to the torque on the flagella right. Similarly, the force on the cell must be equal and opposite to the force on the flagella right you are applying no external force you are applying no external torque on this system because you have a torque on the cell the cell body itself is going to rotate like in the picture and it must rotate in a sense which is opposite to the propeller rotation because there are no external torques and it rotates with some angular velocity which I call as capital omega ok. And of course, V is the same so I have these three quantities. So, I have this propeller attached to a cell body this is rotating with some small omega this one is rotating in the reverse direction with some capital omega and they are both moving with some velocity V together ok correct. So, now I can write down the force and the torque equations my propulsion matrix is the sum of these two cell body plus flagella and therefore, I can write down what is the force and torque equations for this whole this is for this whole objects right. So, I put no external force which means that my s is 0 and that is going to be a naught times V. So, 6 pi eta r V plus a b so plus a V plus b omega right this is the force equation. Similarly, I have no external torque which is 0 which means that I have 8 pi eta r cubed capital omega plus b V plus d omega right. Once I have put everything together both the flagellum and the cell body these are my equations for the force balance and the torque balance. So, that is this these are my equations a naught and d naught you know let us say if it is first sphere if it was not a sphere if it is a cylinder or something again you can work out what is the corresponding a naught and the corresponding ok. Now, let us say I have this small omega and a capital omega which means so remember here is my picture of this flagella this bacterial flagella. So, here is my bacterium cell body in here sits my rotary motor to which is attached the flagella right. This motor rotates with some angular velocity let us call it omega motor ok which causes this flagella to rotate with some angular velocity omega that exerts a torque on this which causes this to rotate with capital omega. So, what does that mean for the motor for this motor angular velocity? The motor angular velocity is nothing, but this small omega minus this capital omega this omega m is nothing, but this small omega minus this capital omega right makes sense because the motor is fixed to the cell body right. So, if the cell body is rotating which means the motor is also rotating then the motor is actually turning at this speed at this relative angular velocity omega minus capital omega. So, now, I will try to express well I will just write down the answers, but you can so given these two equations. Now, you can solve for this velocity and so on the efficiency in terms of this motor angular velocity motor motor rotation speed omega m ok. So, I will express everything in terms of this omega m. So, this is the rotation speed of the motor itself ok or So, first thing what we could ask is that what is the linear speed of this bacterium as a function of the rotation speed ok. So, of course, this will involve all this a b a naught b naught a naught d naught and so on, but you can solve these equations this is just algebra you can solve this and you can express the linear speed in terms of the motor rotation speed ok. So, you can solve these equations I will not do it explicitly, but you can check the notes I will upload the notes. So, you can solve for this velocity in terms of what is the angular speed omega m. Again this is true for a generic propeller still not substituted b d and so on this you can do for whatever propeller you design or whatever flagellum you design ok. You could also ask that what is the torque exerted by the motor on the flagellum and again you can solve for n which is going to be some function of v and therefore, some function of omega m ok again by solving these equations. But what I want to focus on is this question that you might think that the bacterium has designed this marvellous system it is designed this marvellous motor which is a very complicated motor to rotate this helical flagella in order for it to propel itself. So, what is the efficiency of this motor ok. So, we can ask what is the propulsive efficiency of this flagella ok and that is the so, that we define as the ratio of this n times omega the torque times the angular velocity and on the numerator is simply the work done if you were to drag this whole thing along if you were to drag this whole body along with a velocity v that is just a naught times that is just the force is a naught v and therefore, the work done is a naught power is a naught v into v. So, a naught v square ok. So, this is and this is the n times omega ok. So, this I will call as the efficiency of the flagella and again I get some expression in terms of this elements of this propulsion matrix. So, now, you can go ahead and put numbers ok. So, how do you how do you calculate this a naught and v naught. So, one way is to actually take this helical body and try to solve for these drag just like you solve for the drag coefficient in a sphere drag force in a sphere or the due to the torque you can solve for this helical body. What Purcell said is that let me not bother. So, let me do a semi phenomenological thing which is that I need to know three things A, A, B and D right. So, what I will do is that I will take this propeller let me rub this out again let me imagine our corkscrew helical propeller. So, you say that this is my propeller I will just drop it into a liquid which has this low Reynolds number that I am interested in and I will observe what is the velocity with which it falls and what is the angular velocity with which it rotates ok. So, this I can measure experimentally. Now, what I can do is that I can take two such propellers and connect them such that they are mirror images of each other ok. And then I drop that composite thing into this liquid then this thing is not going to rotate anymore ok, but it is still going to fall with the velocity. So, I can measure that new velocity v prime. So, I have these three measurements of this angular speed and the velocity in the first case and this velocity in the second case I can use them to solve for these three coefficients A, B and D ok. This is a semi phenomenological approach, but you can imagine doing it for any shaped object is because the mathematics for any sort of realistic propeller shape is going to get extremely complicated. You can do it for a helix for example, using resistive coil theory, but whatever. So, you can just measure it what are these A, Bs and Ds ok. Let us say for a helical propeller. So, this experiment has been done. So, let me see you put in a speed of swimming for this bacterium. So, if you put in the speed of swimming and you put in these numbers A, B and D, what you get is a propulsive efficiency of this motor which is extremely low. You get this motor functions at an efficiency of 1 to 2 percent roughly ok. So, although you have evolution has come up with this beautiful motor, it has not optimized it for efficiency it is actually extremely inefficient. But what Wursel argued is that does the back should the bacteria care and the bacteria does not care because ordinarily it is swimming in a environment which is extremely nutrient rich. So, even if the efficiency is pretty low it is getting the amount of nutrient that it requires to survive and that is that is going to continue to be the case until you reach a limiting concentration of some nanomolars ok. Then it is going to feel the effects of this small efficiency, but as long as you are at concentrations above this, this efficiency does not really clear your role ok. So, I will just show you these experiments oops ok. So, these are experiments where they do this sort of experiment by dropping the propeller into a liquid. So, they find A these are distributions these are actually full distributions of this propulsion matrix elements A, B and D ok. They can calculate what are the mean values of these elements ok. Gift or a given helical propeller let us say and from there you can then plug in these numbers these mean values of A and so on into these expressions for the efficiency. And here you will see so, this is as a function of the length of the bacteria. So, there is a range of lengths for the bacterium. So, for the propeller and as a function of length you can plot the efficiency and you will see that the efficiency hovers around between 1 to 2. So, the mean efficiency is roughly around 1.7 ok. I forget what I think this was the power that I have forgotten what this was. So, this was the mean efficiency that they calculated and this mean efficiency is extremely low it is 1 between 1 and 2 percent. So, what we have done is that we have we have developed a sort of generic theory for writing down propulsion matrices which do not depend on the exact shape of the propeller that you are talking about. Then you can take that particular propeller that you are interested in do an experiment like this in order to find out what are these elements a, b and d. You can then plug them back in these expressions these algebraic expressions which you get by solving these equations these two equations and you can find out what is the efficiency what is the speed and so on and so forth. So, we come next to end with a related sort of aspect. So, what Purcell said is that this low efficiency does not really matter the fact that this epsilon is just 1 to 2 percent. So, what we get for this equal i roughly is efficiencies of 1 to 2 percent. So, what Purcell and others argued is that this low efficiency does not matter because the problem for the equal i is not the fact that it is sitting in a nutrient rich environment is not the fact that it is sitting in a nutrient poor environment. So, it does not really care about the efficiency. The problem for the equal i is the environment itself what does that mean? That means, that because it is in this lower Reynolds number world right as this equal i moves it drags along the surrounding fluid with it right because this is an extremely viscous medium it drags along the surrounding fluid with it this fluid falls away only very slowly right as opposed to if we were swimming we would actually propel ourselves the water that we started off over there would remain over there we would see a new water environment when I have swim some distance. That is not true for an equal i as an equal i swims this environment is going to fall back only very slowly ok. So, it does not an equal i depending on how much it has swamp does not really see a new environment by swimming ok is going to see the same environment because this environment is getting carried along with it because of this very low Reynolds numbers ok. So, what Purcell asked is this related question that let me say that. So, what is the so, what is generally the advantage of swimming or as he calls it stirring the advantage is that you sort of mix up this the medium that you are in ok. So, you get access to new nutrients ok. So, he says that well if we are in this we if we are an equal i bacterium you can sort of estimate how advantageous this stirring is or swimming is going to be as opposed to diffusion what does it mean what does he mean by diffusion. What he means is that this equal i could just sit here right and we have solved and we have solved you know this cell signaling problem. So, if I had some nutrient concentration I know at what rate this nutrients are going to reach this cell surface which is simply my diffusive flux which is 4 pi what is it 4 pi d a c norm right. So, it could just not swim at all and still simply by diffusion it would get a source of nutrients ok. So, when is this swimming going to be advantageous to the equal i as opposed to just sitting there and waiting for nutrients to come to it ok. So, he asked that well what is the time taken to transport stuff stuff being nutrients chemicals whatever you are interested in some distance l by stirring and by stirring again. So, what he means is that if you swim with a velocity v what is the time taken to move a distance l and what is that that is just l by v right you have a distance you have a velocity. So, the time taken to move some distance l is the swimming time or the stirring time which is l by v. Conversely you could ask that what is the time taken to transport stuff the same stuff chemicals whatever over the same distance, but now by diffusion ok. So, what is that typically what is the time scale to cover a distance l l square by d right. So, that is the diffusion time I do not know why ok. So, here is the time that you achieve by swimming here is the time that you achieve by diffusion ok. So, then he asked that when is swimming or stirring going to be an efficient strategy for the bacteria ok. It is going to be an efficient strategy if the swimming time to cover a distance l is much smaller than the time it would take by diffusion for nutrients to come in right. So, what you defined is the stirring number which is this diffusion diffusive time T d divided by this swimming time T s or the stirring time T s and that if you just do it is just l v by d right. So, what he says? So, the idea is that if the swimming time is much smaller than this diffusive time which means that if the stirring number is much much greater than 1 then swimming is an efficient strategy ok. Then you can access new nutrient regions by swimming ok. So, ok. So, now, you can put in put in the numbers for E coli again a typical E coli if you looked at those tracks it swims with a velocity of around 30 microns per second. So, let us say I put in 30 microns per second let us say I am going to swim a distance of a micron that is typically the size of an E coli right. And a typical diffusion coefficient of small molecules is going to be of the order of 10 to the power of minus 5 centimeters square per second. So, if I now put this if I now put this in this stirring number which is l into v into T what is that stirring number going to be of the order of. So, you can just put it you convert everything to microns or whatever you convert everything to a consistent unit and what you see is that given these numbers E coli and E coli swimming with 30 microns per second and if it wants to swim distance which is around a micron which is the length of its own body and this is the diffusion coefficient the stirring number comes out to be 0.03 which is much less than 1 which means that over length scales of microns 1 micron 2 microns 5 microns swimming is not an efficient strategy. If it wants to get new nutrients which are 5 microns away it might as well not swim it might just sit there and wait for things to get there by diffusion provided it is swimming with that 30 microns per second. On the other hand you could ask that well given this 30 microns and this v what is the l that I need to swim in order for it to access a new environment in order for this s to be greater than 1 ok. So, you can now solve for l given that s is of the order of 1 or greater than 1 and ask that what is the distance then E coli needs to swim in order to access see a new environment ok. So, ok. So, this is the same thing that over micron scales a couple of microns swimming achieves nothing you might as well just sit there but you can ask that what distance should one travel before swimming becomes advantageous and. So, you solve for this s greater than equal to 1 and what that comes out to be the distance that you need to swim before you see a new environment comes out to around 30 microns given again the swimming speed and these d's. So, now, if you go back and look at these trajectories that we see in these experiments you will see typically that these. So, this scale bar is 50 microns. So, you will see typically that these runs in this run and tumble motion of bacteria these runs are typically of that order they are tens of microns 30 microns 50 microns and so on. So, what the E coli is doing is that when it is tumbling it is just sitting in one place it is waiting for things to diffuse to it once the nutrients sort of get over it swims a distance and enough distance that it sees a new nutrient region and then again it sits there. So, it again it tumbles and again then once the nutrients over there is over it again swims to a new region. Make sense? That is all I have to say today. So, this is actually a very nice intuitive approach I urge you. So, these are from these papers this life as Lore and Alts number has this idea this is the paper that I flashed in the beginning of the class. The mathematics is worked out in this paper this Purcells 97 paper the efficiency of propulsion by rotating flagellum. So, all these epsilon's and so on the algebra that I did not do well actually Purcell also does not do you need to do that yourself, but at least it is listed out nicely whatever I did in this 97 paper. This is a nice review on bacterial hydrodynamics. So, it is a recent paper as well. So, you might want to read that if you are interested. This 2006 paper this is the experiment which finds out this A B D and so on for this bacterium E coli for this E coli flagellum. So, you can it does it does not do it by dropping it through a liquid it does it using a laser optical trap and holding the sort of bacteria either motionless or rotationless and so on. So, you can go back and look at this paper as to how people actually calculate this A and D's, but once they calculate those A B's and D's then the method use is exactly the same they just plug these A's B's and D's back into Purcell's calculation in order to obtain the efficiencies. And this you can do for whatever organism or bacteria that you are interested. So, that is all that I have.


We're talking a lot about accessibility here and as the age of closed captioning is a part of accessibility. Let's imagine that we're meeting someone who hears for the first time this word accessibility. How would you explain what accessibility is about? It's a tricky one and it's quite a wide word, obviously, accessibility. You are right. But when we talk about captioning, it's basically the ability to understand everything that you have said. The ability to understand your message and to reach to me through that message, obviously, through captioning. Because it's like talking to the wall, basically. You don't want to talk to the wall. You want to have a meaningful conversation. You want to have a meaningful engagement. To have that meaningful engagement, unfortunately, closed captioning is needed. Not unfortunately, but for that person who doesn't understand it. If you want to reach out to this person, you want to have a really engagement. And you want to reach out to as wide as possible audience when yes. Yes, I would agree. You're right. It's actually fortunate because for those filmmakers or broadcasters, they want to reach you with their content, with their message, with their information. And captioning is a tool that allows them to reach you. So it's also a great tool for them.


Welcome folks, this is Tom O'Brien of TFNN, we go five days a week, we go ten hours a day, we go 24 hours a day on the internet at TFNN.com. Always remember folks, whatever you think about, you bring about whatever, you focus on growth. So everyone's having a great day, safe day, making a great night folks, disappeared. Cultivate wisdom, you don't need to accumulate knowledge to become wise. Anyone can become wise. When you become wise, you respect your body, you respect your mind, and you respect your soul. When you become wise, your life is controlled by your heart, not your head. Mock it wise, let's take a look at it out here. We had the DAO industrials down 286, NASDAQ off 122, S&Ps down 37. That's a drop of 1.5% and the NASDAQ 1.3 and the S&Ps and 1.1 in the DAO industrials. We take a look at the, let's go to the DAO first because the bottom line from where we were to where we closed, it's not a big deal. The DAO had hit a low out here 25,328, bottom line like $140 off that low. That being said, guess what, let's go over to the SPI and we take a look at the SPI. This is building cause folks to blow away the B point of an ABC structure on the way down. What we did out here, you go south, you have an expansion of volume. We did 88 million. Now you're coming into 127 million, you didn't hit the B point. We're going to go after it. Why am I saying we're going to go after it? Well, if you go take a look at the SMH has started this thing down. That blew away its B point last week, had price, had volume, all of the above. Took it out and took it out in spades. XLE did it today in a huge way. XLE down $2.13, did 23 million shares, blowing away a B point of 14 million. XLE is heading for this December low, which is the 53 to 57 mark. And right now you are at 61. Now it seems like a lot, but guess what, two weeks ago folks were at 68. And if we go take a look at the oil contract, what you're going to see, this contract just blew apart today in a big way. Down $3.29, over a million contracts traded. And so in three weeks, we're down off $66 to 58. Below, that's going to go after it's 48 to 44. The correlation between the oil market folks and the S&P is about a week. Oil has been leading the market up and down for quite some time and it's about a week, so I expect, I don't expect that to change. Notes and bonds are also related to the aspect that guess what? We have lower rates coming at us, higher price inside the bond structure. In both cases today, they not only took out their highs, they took about with conviction. What conviction is, is wide price spread, accelerated volume. We did almost three million contracts today inside of the 10 year. We blew away the swing point of 124, 31. You're at 125, 01 in the 10 year. And if we get over and take a look at the 30 year, same type of setup inside the 30 year, 30 year, huge volume, 513,000 contracts. You went up a full point plus 12 ticks. The B point that was going after had volume of 471,000 contracts. We did 513. The correlation of course, right now you're at 2.3 on the 10 year. And if we do go look at this 10 year, it's quite clear when we take a look at this technically that it wants to run to two. The reason I'm saying, why it's reasonable right now? Because you blew away the swing point from March. The swing point from March was 2.384. We're at 2.30 right now. Next layer down is 2.01. And hey, it's game down to that level. That's it. And good old King Dala, King Dala failed on price, failed on volume at its high. I've been trying to get up there for a huge amount of time, made it, blasted over it, intraday. And when it blasted over it, folks, you could see that there's no orders. And that blast over might take is that what happens is that when you're an operator in an equity, either highs or lows, they're fishing. And these big funds, they have plenty of money. They can push, push, push. They want to see there any more orders up there. There were no more orders, so that, guess what, sell it away. King Dala got to a price point of $98,260. It was $98085. That's what was going after. Failed, now $94 is game. $94 right down the other side that we were at on the January 10th timeframe. When you do put that together with the aspect of how gold as well as silver took off. And they took off, folks. So silver is the lag in the metals market in a huge way too, not in a small way. Gold got the bid, we'll see whether we can get some follow through on it. Silver still needs a big bid. It rejected lower price. It did catch a bid and what was intriguing in both cases, folks, when you take a look at this, these caught the bid at the open of the pit. And what tends to happen is that gold and silver, they trade really well, there's 24 hours a day excluding when we close tomorrow at 4 o'clock until Sunday night at 6 o'clock because what ends up happening, we're the last ones that are open. Asia and Australia, the first ones that open on Sunday, which is their Monday. Outside of that, the pit trading is important when you see some orders that they can destroy the market or they can bring the market up. What they decided to do out here today is to bring the market higher. And that was before you really got a down draft that monster down draft going. So that was very intriguing in itself of how that played out. We go over to the small caps. The small caps broke its B point, didn't have enough volume. We had big volume come in at the close. You needed 26.9 million. We did 25.5. Bottom line, it's going lower. It broke the consolidation that it has been in since the February timeframe. And I suspect you're going to get lower price tomorrow. We'll get under the 148 area. And as soon as you get underneath the 148 area inside of the IWM, that puts game down to the December 24th lows. A larger case out here, folks.  And we're going to be in this consolidation for quite some time. The top of the consolidation on the S&P is 2900. The bottom of it is 2346. Guess what? That's 22% off the highs. That's the market we're in right now. Some of the other high of Apple, let's go to Apple. Apple's not going to help the NDX100. Apple, down 320 today, trading 179. Apple wants to run down to 142. Big numbers. No two ways about that. Volume, let's see. I believe we got volume expansion also out here. Oh, big time too. You get 920 million. We did 715 yesterday inside the NYSE. We're going to the Composite. And we did 2.2, yeah. See ya. Don't want to be up. Stay right there, folks.  Come right back.


And further on the current economic reality in the country, the Reaver State Tax and Justice Governments in collaboration with our Steamed Partners Stakeholder Democracy Network and all other financial institutions in the state has called on the Reaver State Government to issue and demand for both policy and administrative reforms that will usher in a fairer and more progressive tax region, including rates at local government levels that will facilitate the ease of doing business in the state. The coalition made this known in a press briefing in Port Harcourt, the Reaver State Capital. In his speech, Chairman of the Reaver State Tax Justice Government, Kelei Chi Amici explained that part of the mandate of the organization was to see that the issue of double taxation was eliminated from the state. And representatives from the other civil society organizations also asked the government to regulate tax collections and create a suitable environment for business in the state. The civil society organizations called on the government and all relevant agencies in the state to handle the issue of taxation with fairness.