Hello and welcome to the session. Let us understand the following question today. Prove that the sum of the squares of the sides of a rhombus is equal to the sum of the squares of its diagonals. Now let us first see the figure. Here we have A, B, C, D as a rhombus with O as a center and diagonal intersecting at O. Now let us write the solution. Let the diagonals A, C and B, D of rhombus A, B, C, D intersect each other at O. Now since the diagonals of a rhombus bisect each other at right angles therefore angle A, O, B is equal to angle B, O, C is equal to angle C, O, D is equal to angle D, O, A is equal to 90 degree. And therefore A, O is equal to O, C and B, O is equal to O, D since it is also bisecting the diagonals. So now triangle A, O, B this triangle is a right triangle right angled at therefore by Pythagoras theorem AB square is equal to OA square plus OB square which implies AB square is equal to OA square is half of AC square plus OB square is half of DD square because DA is equal to OC sorry OA is equal to OC and OD is equal to OB. Now it implies AB square is equal to AC square by 4 plus BD square by 4. Now which implies taking 4 on this side we get 4AB square is equal to AC square plus BD square. Let us name this equation as 1. Similarly we can write 4 BC square is equal to AC square plus BD square let it be 2 and 4 CD square is equal to AC square plus BD square let it be 3 and 4 AD square is equal to AC square plus BD square let it be 4.   Now we see that this four gets cancelled with this four so we are left with AD square plus BC square plus CD square plus AD square is equal to AC square plus VD square and this is our desirable which says that sum of the squares of the sides of the rhombus is equal to the sum of the squares of the diagonals. This proved. I hope you understood the question. Bye and have a nice day.


Thanks so much for having me. I was at the entrepreneur summit the same on five years ago, so it feels great to be back. India has become one of the best places to be for entrepreneurs. Our macros are amazing. It gives us a lot of more. It gives us a great canvas to work with. So I think India is the place to be for entrepreneurs. You can see foreign investments coming in as well. So yeah, I think the economy is going to boom and I think right place, right time is going to happen soon. Just keep going. You have a vision and you want to create a product that's never been created before or you want to create a product with a value addition. Keep at it and believe in yourself.


Guys you wanna see something sick? So this remote, right? You're thinking, what can you even do? What can you even do? There's only three buttons. You ready for this? All the wickedness that Mankind can produce We will send onto them Only you Rip and tear Until it is done AHHHHHHHHHH


So, thank you for coming, and it's a great pleasure for me to be back at Trieste Spring School. This is my third time. The first time I came here 11 years ago as a graduate student, and I still remember very nice talks back then. Marcos Narinio was one of the speakers. I remember him talking about topological B-model and integrability, and I really fondly remember that. So, let me start, but let me start very slowly, and let me first give you the overview. So, the title of the talk is Estuarity in 4D N equals 2 theories. Can you read it? I hope you can. Right, so my main question, even bigger than this one, is this. How does a very strongly coupled gauge theory behave? It's a very difficult question, fascinating question, and it has fascinated so many physicists in the last few decades, not just the last few decades, but more than half a century, but it's a very difficult question. So, we'd like to start by starting from a simple example, and first you notice that there are two types of strongly coupled gauge theories in four dimensions. One is, one type is where coupling becomes strong via renormalization group flow down to low energy. Another thing is, another type of strongly coupled theory is that UV coupling constant doesn't run, so UV coupling is a parameter you can choose. You choose, you make it strong, so there are two types. The first type is rather difficult because the system becomes strongly coupled all by itself, so it's very hard to analyze, but in the second case, you can, it's you who are making problem difficult in some sense, right? It's a tunable, controllable situation, so in this case you can start from carefully analyzing the weakly coupled case and slowly making the problem harder. So in the four lectures I'm going to give, this time I'd like to focus on the second type of the theories, and in particular I'm going to impose lots of supersymmetry. So with Susie, this problem is quite tractable, thankfully. So there's a long history of such a study of the strongly coupled behavior of Susie gauge theories. It all started in a paper by Montonen and Olive from 77. So there they studied, well it's not quite true, but in any case, they considered any equals four superion mills. Simone has been talking about scattering amplitudes of this theory, but we consider any equals four superion mills with SUN gauge group. This is clearly, you can compute the beta function, and it's one loop finite. It is believed to be, it's known to be finite to all orders, so this is the second class of theories, and we believe that if you crank up the gauge coupling of this theory, eventually this is mapped to itself. So this is the strong weak coupling duality of any equals four superion mills, and that's called S duality, and this is from 77. The next example found in the literature is by Cyberg and Witten from 94. So this is any equals two. Super symmetric gauge theory with SU2 gauge group with four flavors. Again this is one loop finite, believed to be finite to all orders, and in this influential paper where they introduced the concept of the Cyberg-Witten curve, to begin with they also showed, they gave a convincing evidence that the strongly coupled limit of this particular gauge theory becomes basically the same theory, but with a different flavor charge assignment. So with four flavors, I will explain it in more detail, but with four flavors, this theory has SO8 flavor symmetry, and in the original theory, in the original theory the matter fields is in the vector representation of this SO8, but in the dual theory the matter fields are in different representation, so in the SO8 flavor symmetry, so it's a eight dimensional spinner representation, so that's in 94. So a natural question you ask is that, well, you can find a very similar example to this. Yeah, SO8 symmetry? Pardon? Ah. So this SO8 symmetry, so let me say a bit more carefully, so this jargon any equals four, means that you have four pairs of quark and anti-quark fields, and i is one, two, four, i is one, two, four, so this one, two is the gauge indices, and there are four flavors, but you know that in SU2, doublet and anti-doublet are in fact the same thing, so it's more convenient to write this as SU2 doublet with eight components, and the interaction term in the Lagrangian in fact preserves SO8 rotation of these fields, so that's the standard charge assignment of the original SU2 theory. So what Zeibergen Witten found was that if you crank up the gauge coupling of this theory, eventually you have some dual gauge theory with basically the same gauge group with the same matter content, but the assignment of the SO8 flavor representation needs to be changed, so if you know the Dinkin diagram of the SO8, you have three nodes corresponding to the eight-dimensional vector representation, eight-dimensional spinar representation, eight-dimensional conjugate spinar representation, and it's your choice of assigning the SO8 representation to these eight matter fields, so that's completely up to your choice, but what they found is that if you go to the strongly coupled dual description, you need to simultaneously change the flavor charge assignment, so this will become very important in the third lecture I guess, so I will come back to this. Thank you for the question. So everybody thought this should be generalizable, right? If you know the one loop beta function, you can easily compute that N equals two gauge theory with SCN gauge group with NF equals two N. Gauge theory is also super conformal, I mean the gauge coupling is tunable, and that is a special case where capital N is two, but for quite some time people couldn't understand exactly what happens when you crank up the gauge coupling here. The problem was, just as we can see from his question, this duality in the simplest case involves this accident, some mathematical accident which only exists for SO8, so it's not quite clear how to generalize this concept to this more general case. So the breakthrough came in a paper by Gires Zeiberg in 07 where the SU3 case was treated, so what they found is that SU3 with NF equals six in a very strongly coupled limit is dual two, so it has a weakly coupled description with different gauge group SU2, coupled to just one copy of the matter field, together with some mysterious strongly coupled sector known as Minahan and Mishanski's E6 theory, I will come back to that, but so there's a qualitative difference between these two cases, in this case if you crank up the gauge coupling eventually you find a dual description where everything is weakly coupled, but that is a bit too good to be true in the general case, what Gires Zeiberg noticed in 07 is that in this case if you crank up the gauge coupling you can go to a dual frame where you have weakly coupled SU2 gauge group, but you still have some strongly coupled mysterious matter system coupled to this SU2, and quickly Gaiotto in 09 generalized this to all SUM, yeah general case, so what I'd like to do today and in the four lectures to come is to explain these dualities from very basic point of view, so Gaiotto's great insight is that he gave a very general perspective point of view to understand these dualities in one go, so what he found is that the dualities in, so I didn't have to erase this, but N equals 2 can be understood by compactifying, putting something called 60, N equals 2,0 theory on a Riemann surface, so Riemann surface can be split in various ways and that corresponds to various weakly coupled limits, so that's what he found, and that explains a lot of thing about this mysterious occurrence of strongly coupled matter field in the dual frame, so in this SU3 case we had some strange matter content in the dual side, that's inevitable because I mean this 60 theory itself, so this doesn't have useful Lagrangian so far, Lagrangian description, many people tries, there are some, but it's not useful yet, so if you start from a very strange theory in 60 and compactify that on 40 to 240, you would expect you get something very strange and that's the generic situation, but sometimes even if you start from this strange theory, you get very understandable thing in 40 and that allows us to understand the strongly coupled behavior of the gauge theory better, even in four dimensions. Another line of development started by Davide Gayotto is the following, so let's consider this six-dimensional theory on some four-dimensional manifold times a Rayman surface, that's right, so you need to use various indirect methods to study these things, so sometimes you know that the resulting 4D theory is a Lagrangian theory, sometimes you don't, typically you can compute two point functions of currents and such things, and you need to guess exactly what these 4D theories are, but I will come to concrete examples later, thank you for the question. So let's start from this product space situation and consider computing some partition function of this, and let's name, let's give a name to this object, so let's call this 60 n equals 2, 0 theory, just theory S, 60, so this is a partition function of this S6D theory on this product space time, if the Rayman surface is very very small, you can first compactify along that small Rayman surface and consider this system as a four-dimensional theory, so in that case you have some 4D theory determined by the Rayman surface, and you are considering that theory on X4, so that's one way to analyze, there's another way to analyze the system, so if suppose X4 is smaller than this C2, then you can do the same thing, so you first compactify along X4, then you have some two-dimensional theory determined by this X4, and you consider that theory on a Rayman surface, right? Of course in the general situation these things are all different, you need to take limiting procedures, but suppose you consider a nice, if Z60 is a nice Suzy partition function that doesn't depend on the size, so this is a big assumption of your choice of precise background, but suppose this is the case, in that case and the size doesn't matter, therefore I guess I should use a colored chunk, in this case the three things I just wrote on the blackboard are the same, so this becomes the same because this shouldn't depend on the size of C2, this shouldn't depend either, but because these are the same, we should have some relation of a partition function of some 4D theory on a 4D spacetime and a partition function of some 2D theory on a 2D spacetime, so these days this four-dimensional theory determined by the Rayman surface, there are tons of them because there are tons of Rayman surfaces, you can even add various punctures to it, and these are called class S theories, I don't know who introduced the terminology, it appeared around 2012, no, 2000 already had the name class S theory, oh thank you, okay yeah that's an easy choice, so until now I didn't know what this S stands for, great, great, so that, yeah, alright, by knowing the origin of the name it seems so less mysterious, which is too bad, so apparently this stands for six, alright, such mundane choice anyway, more interesting thing is that if you compactify 6D theory on S4, we now know this is 2D Liouville theory, in general Toda theory, and another famous example is S2D and if you instead consider S3 times S1, you get something called 2D QD form, so before getting further I would like to mention that these equations are amazing to me, usually in physics when we write equations, both sides of the equations are numbers or functions, here in these equations both sides are quantum field theories, so we are now, I mean QFT knowledge of the human beings as a whole has progressed to a certain stage where we can now write down equations between quantum field theories, so I feel good about it, but we need to proceed, so I already said that this is my third time here, when I came here in 2010 or 11 as a lecturer, I talked about this particular equation, so I don't want to repeat that, so this time I'd like to explain to you about this third equation, and in my perspective, in my subjective way of viewing things, this is much more understandable than this one, because this is simpler, tractable, contains lots of information, easily extractable, so I really like this version better, so that's a very general overview of what I'm going to do in the rest of the lectures, and before getting further, let me mention that I kind of have a lecture note for this, it's not exactly the lecture note for this set of four lectures, but a friend of mine forced me to write short introductory notes about these two relations, and that's available as a preliminary draft, so let me just say the URL, so member.ipme.jp, ug.touchcour, and temporary file, and 2d40.pdf, or maybe it was 42d.pdf, I don't remember, you can try either, and you will find a file, so you don't really have to take the notes, but yeah, right, so this is the very general introduction, and since I have a nice blank space here, let me just give you a general contents of lectures, I would start as an appetizer, talking about 2d, qd, from the armills first, I mean we'd like to study 4d gauge theory, but as a toy model 2d gauge theory is a very, very instructive example, and then I move on to the very basic facts about 4dn equals to Lagrangian's, and then I will cover SU2 NA equals 4, and it's super conformal index, so this super conformal index is another name for S3 times S1 partition function, and I will, once I get to the point, I will give some 16 interpretation, and then I will discuss the generalization to general SUN, generalization to SUN, so I'm not sure how far I can go, I'd like to explain various things concretely, so I might not get to this generalization part, but it should be okay, SU2 examples are instructive enough, so any questions up to this point? Yup, so in order for this kind of analysis to work, there should be a way to add the background fields that couples to the theory that preserves some amount of supersymmetry in the total space, that gives you some constraint on the choice of usable 4-manifolds, and people have been classifying possible types of 4-manifolds you can use in this way, so typically easy thing you can do is to take all before either of these things, and you get various complicated things, and even that case is not completely understood. More questions? Alright, so let me start with 2D young males, pardon? So sorry, sorry. S4, I don't think it's a complex manifold, so it's not required. So there are series of works by Zeiber and Festutja and Dormitor SQ, where they discussed exactly which manifolds allow some number of remaining supersymmetries, so you can typically take one of them, plug this in, and do the rest. So I'd like to discuss 2D QD-formed young males, but before getting there, of course we should discuss undeformed 2D young males, right? So let's just discuss 2D young males theory. It's such a simple theory. In 2D, there's no physical propagating degrees of freedom, so let's take G as the gauge group, some non-Abelian V group. So everything I say can be found in a great review of 2D young males, either by Blau Thompson or by Cordes, Ramgulam and Mua, they are cited in my lecture notes. So if you are interested in a very detailed structure of 2D young males, you can find everything there, but let me introduce to you how this thing works. So this is a really simple theory, so if you consider this in a flat space, you don't get much. So instead, let's consider this in a general two-dimensional manifold, in a euclideanized sense, and Lagrangian is, so this is the coupling constant, I could use G, but I cannot use G because I'd like to use generic metric, which is denoted by G, and you have the standard kinetic term, so this is Lagrangian, nothing spectacular, but in 2D something interesting happens. In 2D, the only non-zero component of F mu nu is F01, right?  So if you plug this back in, what you find, what you find is that S is just given by D squared sigma, a DG squared inverse, trace F01 squared. So you see that explicit components of the metric never appear, G mu nu only enters into Lagrangian in this combination. In 2D, giving determinant of G means that if you have a two-dimensional surface and given a very small patch, you can measure its area, because it's given by determinant of G times dx dy, but in 2D Lagrangian, there's no need to specify exactly what is the metric. All you have to do is to specify the area element. So from this, you can see that 2D, young males, only depends on the area. So this is a good thing to know. And this coupling constant can be absorbed into a redefinition of the area and just set in the scale of the area. So from now on, I can just ignore it. So let me just give you a Venn diagram before proceeding. So there are tons of 2D QFT, many of which are very complicated, right? And many of you know there's something called CFDs. So CFDs are some very special QFTs, which depends only on the complex structure of the Riemann surface. So that's a special type of 2D QFT. But we just learned that there is another type of special QFT, which doesn't have a nice name, but we can call it areaFT, where the theory only depends on the area, total area of the surface. And you can have some intersection between the two. If a 2D QFT only depends on complex structure and also only depends on the area, then this is purely topological. So this intersection becomes 2D TQ, topological quantum field theory. But it's important to remember that 2D young males is an area field theory, if that's the word. So how do we solve it? Solving it using path integral is also very instructive, but due to the lack of time, let me just do it in Hamiltonian formulation, which is very instructive again. So the easiest space time is of this form. So it's a cylinder. So let's say this is x0, and this side is x1. This periodicity is L. This length is T. And so this is the time direction. Maybe I should have drawn this vertically. So in any quantum field theory, so this is a constant time slice. Given a constant time slice, you should have a Hilbert space of the system. So what's the Hilbert space of this system of the 2D young males? So classically, what characterizes the gauge field configuration on S1? So what you can do is to pick an origin here and define a group element, which is path ordered exponential from 0 to L of a1 dx1. So this is a nice almost gauge invariant object defined by integrating the gauge field around S1 once. But of course you need to remember that there's a residual gauge symmetry at this origin.  So this is the residual gauge invariance. Therefore, the Hilbert space of states of this theory is given by wave function psi, depending on u, which is invariant under this gauge transformation. So this is the space of wave functions. So such a function is known as a class function on g. What are the class functions? Typical example is the character in some representation r. So this is just trace r, a trace in the representation r of this matrix u. And it's known that chi r for all irrep are spans hs1. So this is a mathematical theorem. In a product can be nicely given by a standard integral over g. So let me just give it to you. So if you have two such things, so you would like to take the inner product and you integrate that over the space of u using the standard heart measure. And this is given by just a delta function of the labels. So it's a very nice orthonormal basis of hs1. So now we know the Hilbert space. What's the Hamiltonian? So I'm using a canonical approach. So we just write down the Hamiltonian. So this is an integral from 0 to L of electric field squared up to some constant. I mean, in 2D there's no magnetic field. You just have f01, which is the electric field. And in quantum theory, this is given by the standard canonical quantization. Electric field is the conjugate momentum to the gauge field. So you get this. So you can really directly act this h on, say, this chi r of u. You can really compute it. So this is trace of r and px and 0 to L and a1 dx1. So we can take a gauge where this a1 is constant along the x1 direction. But this h just hits a twice. And in order to see the process more carefully, I guess we should introduce a joint indices a. So this is a sum of a. And it's better to write it as ta a1a. So this t is the representation matrix in the representation r. So if you hit this u by one variational derivative, you just get one factor of ta. So this is basically trace r and integral 0 to L ta ta dx1. And you have original px0 to L ta a1a dx1. But you know that in a irreducible representation, this is just a value of the quadratic cashmere. So you found that this is equal to L. So there's an integral. So this is L times quadratic cashmere of r times chi r of u. So we know that this representation basis is, in fact, the eigenstates of the Hamiltonian of the 2D young mouse. And the Hamiltonian is given by quadratic cashmere. So we are talking about this situation. But for example, we can further identify this part and this part identify. So you get the torus. You can compute a partition function. And this is given by trace over the Hilbert space of exponential of minus ht. And because we know the Hamiltonian and the basis here, you can very explicitly write as a sum over the irreducible representation of exponential of minus t times h is L times c to r. So this is the partition function on the torus. As I already told you, the partition function only depends on the area. Here we arbitrarily introduced length L and length t in the system. But the final answer depends only on the area, as I already claimed. So now you see that. Next step, let's consider the following geometry. So this is a disk with area a here, disk. So it only has one boundary. And in such a situation, you get, so you still have some Hilbert space associated with the boundary, and you get the wave function determined by doing a path integral of the system with given boundary condition fixed in holonomy to be u. So we'd like to determine this thing, psi a of u. These are called Hartl-Holkin wave functions, originally introduced in the context of cosmology. So the world starts from nothing and pops up, and that uniquely determines some nice wave function. And 2D-Yaml is simple enough so that we can know this creation from the nothing. So this is Hartl-Holkin wave function. How do we determine it? So there's a first nice trick of changing the area. So adjoining a cylinder of psi area a prime gives you a disk with a plus a prime, and we know this cylinder contribution. This is just the action of the Hamiltonian. So this means that psi a prime a plus a prime of u is given by exponential minus area times h. I guess I'm using some wrong normalization of h, but you get the idea, right? So you can easily change the area. Therefore, it suffices to know the zero area wave function. So what's that? The zero area wave function can be understood in a path integral point of view. So we have a very big space time, right? And you have a zero area disk cut out of it. You might not be able to see it, but you get the idea. This is very, very small. You see? Very, very small. Therefore, the homonomy around it, u, needs to be basically one. Therefore, zero area limit of this disk wave function should be just the delta function. But as always, in the case of delta function, this is not square integrable. So natural normalization is not very clear. So let's just put the arbitrary constant alpha. So this is the result. Of course, you can write it in representation basis. So let's say this is given by CR. C is already used too much. FR, chiR, u. Now, how do you know chiR, f of R? All you have to do is to multiply chiR prime u and integrate over u. So on this side, because of the orthogonality, you get just f of R prime.  And this is a dimension of this representation. So you know that this has an expansion of this from alpha, dimension of R times chiR, u. So very explicit. So now we know the discomfort. And finally, let's determine this geometry. Let's consider this geometry. So this is a pants with three holes with area A. So in this case, you have three Hilbert space associated with it. Therefore, this should determine a vector in Hs1 tensor, Hs1 tensor, Hs1. Or equivalently, if you assign three holonomies, u1, u2, and u3, the wave function psi of A, u1, u2, u3. So how do we determine the three boundary wave function? It is, in fact, very easy by using the following trick. So if you have a three boundary pants, you can glue a disc. And I already told you repeatedly that the final result only depends on the area. So this becomes a cylinder. We know the wave function here. We know the wave function here. This is the exponential of the Hamiltonian. Therefore, you can determine this part. I'm not going into the detail, but let me just write down the answer, which is very beautiful. So this psi A of u1, u2, u3 is given by the sum over r of exponential of area times c2r. And you have chi r, u1, chi r, u2, chi r, u3 divided by the dimension of r and times r alpha, which is a normalization constant. So it's a good exercise for you, if you haven't done that, to plug this in to this equation and check the equality, which is a very useful exercise. Now that you have the wave function for the three punctured, three boundary sphere, you can glue that in various ways. You know my drawing is terrible. So you can take one, two, three of these wave functions and glue that one, two, three points to get, say, g-nus-1, surface with three boundaries. You can easily find the wave function by multiplying. So the corresponding wave function is, again, given by a sum over r of a, c2r, of product over the old boundary of chi r of ui divided by dimension of r of 2g-2 plus n, where n is the number of boundary. And I forgot to include this important normalization factor. So this is basically what I plan to tell you today, but let me say a few words about this constant alpha. What is this? So originally, this came from the fact that the disc amplitude when the area is zero is a delta function, which is not square integrable. Therefore, there is no natural normalization and that introduces this. Another way to see that from the path integral point of view is that on a g-nus-g Riemann surface, sorry, g-nus-g surface, if you do a quantum field theory, it's very easy to generate a counter-term of this form. This is defaeromorphism invariant, combination of the metric, and in renormalization, typically every term which is allowed by the symmetry is generated through regularization and renormalization.   Therefore, this multiplies, this multiplies s, I mean, z by exponential of beta times 2 minus 2g. So this has exactly, and if you introduce the boundary, you get a similar factor. So you can understand this as an effect of possible finite renormalization, which is inherent in quantum field theory. I should also mention that we took a very nice basis, chi alpha of u. This is orthogonal in Hs1, right? That's why we get this nice formula, but if I am very stupid, if some strange person might choose a different basis, I mean, how should I say? This choice was possible because we introduced the inner product. This is because inner product was just psi u, psi prime u bar du, right? But if you choose a bit strange inner product, say it's totally possible to choose some strange additional factor in a different inner product, orthonormal, in this case, basis is changed to k u inverse chi r u, right? So I'm just redefining the inner product in a trivial way, but that just introduces some superior factor, but that would introduce some superior factor k of u, or maybe inverse in this convention, in the amplitude for the 2D amulet's partition function. So this alpha is a certain renormalization constant, and this additional ambiguity k is a choice in the inner product, but remember this is independent of r, so this just comes from the inner product. So I have three minutes left. This is undeformed 2D amulet. We need to discuss q-deformed amulet. What is it? So there are many ways to introduce q-deformed amulet, but the most conceptual way is the following. So far, we consider gauge group G to be the standard regroup. You deform it to something called quantum group. So in general dimensions, gauge theory with quantum group as the gauge symmetry is very hard to define. So quantum group is kind of a non-commutative group. I mean, group are non-commutative in general, but what happens is that the entries, matrix entries themselves become non-commutative. So that's the kind of deformation. Let me just give you an idea. So SU2q in 2 by 2 representation has this entries alpha, beta, gamma, delta. So if there's no deformation, the entries themselves are commutative, but after the deformation, you get alpha, beta becomes q, beta, alpha, and alpha, gamma becomes q, gamma, alpha, et cetera, et cetera. So you try to define a 2D amulet in a lattice formulation, say, where all of the link variables are replaced by the quantum group elements instead of regroup elements. You can try to do that in any dimensions, but because of the non-commutativity, you need to specify exactly in which order various link variables appear in the path integral, and that's only doable. I mean, it's known to, at least in two dimensions, how to consistently do that. So that determines a gauge theory where the gauge group is literally the quantum group. You can do, if you know a bit of quantum group theory, you can almost exactly follow what I discussed. The end result is very simple. You just replace this dimension of r into something called quantum dimension. So at this level, all of the change is just, this becomes dim q of r, and when g is SUn, then dim q of r has a very explicit representation, which is chi of r, and you have some diagonal elements and q. So you need n by n matrix, right? So you take a diagonal element. So this is the q-deformed dimensions. So you can check that this becomes standard chi r of 1, which is the dimension. So that's the q-deformation, right? So that's what I wanted to say for this first lecture. Thank you very much.


This paper compares the performance of 11 normalized difference water index, NDWI, models based on advanced land imager, ALA, thematic mapper, TM, and enhanced thematic mapper plus, ETM plus, data in mapping land surface water, LSW, at three different study sites in the Yangtze river basin, China. The contrast method, Otsu method, and confusion matrix were used to evaluate the accuracies of the LSW maps. 5 NDWI models of the ALI sensor have more than an overall accuracy of 91% with a CAPA coefficient of 0.78. The NDWI model calculated from the green, band 4, 0.525 to 0.605 micrometers, and SWR, band 9, 1.550 to 1.750 micrometers, bands of the ALI sensor, namely NDWA49, was shown to have the highest LSW mapping accuracy, more than the other NDWI models. Therefore, the NDWIA49 is the best indicator for LSW mapping of the ALI sensor and can be used for mapping LSW with high accuracy. This article was authored by Binyu Sun, Yuen Miao Guo, Hailei Wang, and others. We are article.tv, links in the description below.


Okay, thanks everyone for joining here. We will show you today how to configure your OpenStack installation using OpenSource component to charge your users. So basically we will talk about gnocchi and clackity. This is the point that we will address today. We will start by a quick presentation of who we are. We are six people here today to explain you to that. We will explain you the infrastructure that you will use. Some use Viki's are being given to you right now. You can keep the use Viki's at the end of the talk. We will describe the various tools that we will use, and of course we will start installing them and configure them. So we will start by configuring gnocchi, then clackity, and then we will use them really to define the pricing policy and to insert some data to see how to do that. And there will be, we hope, some time for questions. Who are we? This is just the alphabetical order. So the first one will be Stéphane Albert from Objectiflib, right here. Raise your hand. This is the PTL and co-fazor of clackity. The second one will be France Bertelou from Objectif2. She's at the end of the room. She's giving away her music right now. Julien Danjrou from Red Hat will be here. This is the PTL of telemetry and also the fazor of gnocchi. Myself, Christophe Sautier, I'm the CEO of Objectiflib and the co-fazor also of clackity. Brice Trinelle, who is right here at the middle of the room, giving a use Viki2, is an open-stack expert from Objectiflib2. And finally, Maximiliano Vinesio from WLU, who's a technical expert for nuclear and clackity and the coupling of those tools. We'll give a talk tomorrow about that. But we'll talk about a bit later. What is on the key you got? The key you just received contains two images. One for using with KVM and one for using with V2Box. Actually, you might be using that also on VMware. It's a CentOS image using many RPMs from RDO. The root chooser is an open-stack. The password for the root chooser is an open-stack. And also, I'm really, really sorry because I'm French and when I built this image, I didn't notice that I did that using a French layer. So my keyboard is Azure T. So you'll have to do a bit some efforts to log in because, as you can notice, there's an A inside open-stack. So you have to find that. Okay, so once you do that, you'll be able to log in and to change the locale to, by instance, load keys in the US. But we'll be here to help you about that. What's on the image? What we thought was not really necessary to install a whole open-stack on the USB key. It would be a huge USB key to use. It would be quite large and quite annoying to launch from your laptops. So we said, okay, what are the key components that we might have? So we have a database already configured. We also have a RabbitMQ on it. We have a MkHD server. And we also have a Keystone, which is installed and bootstrapped. With one user called admin. And the password associated is admin. You also have one tenant called admin2. On the USB keys, you also have all the slides that I'm giving here, right here. So you can follow that on the slides, too, from the USB keys directly. It would be easier to copy-paste. So copy. You'll have to start copying the images that you have on the USB keys because otherwise it would be so slow. Once you're starting your images, please give them at least two gigabytes of RAM because otherwise you'll have some issues. Two things. When you're launching your virtual machine, please do some redirection of ports because it would be so much easier to use your SSH client instead of typing everything using a console. So here is the line to launch using KVM, your image, and to redirect ports, both the SSH ports and the HTTP ports. So the idea for that will be to SSH to your local host on the 10.0.22 port. It will be redirected to your guest image on the SSH port, by instance. If you want to do that on virtual box, you can just click on settings, network settings, and port forwarding, and it will be straight away using the interface. If you have any issues, please raise your hand so that we'll be able to assist you. For instance, if right now you have some issues launching the virtual machine, please raise your hand so that we can help you. Please, France, and all the others, I think we might be helping people. So keep your hands in the air if you have some issues to launch them so that we can help you for that. Okay. There are a few things that we noticed this morning because we did a small rehearsal this morning, of course, at the last time, but since we are just on the various parts of the world, it was easier to do that this morning. So you also have on the USB key a directory named missing parts. So please copy that to your virtual machine using that command line here. So we just copy the word directory on the virtual machine, and we hope it will be enough. We're quite confident. Does anyone still have issues launching the virtual machine? Please raise your hand. There are a few of them. We will give you enough time to do all the manipulations during this end-on. I don't know if some of you have already did these kind of things on previous OpenStack Summit, but usually on various end-on like that, people don't talk all the time to be able to do the various manipulations. After that, you should be able to log in. I will wait a bit before you'll be able to continue this point. Please keep your hand in the air if you have any issues to be connected. I don't know if there has been enough USB key or not, but we did a new in advance the number of people that will be attending this session. So we just brought 40 keys, I think. We thought it might be enough. Apparently it's not the case. Sorry for that. If you just enter right now, please raise your hand so that we might be able to help you and to give you the information and things like that. If you have any issue with the password, I remind you it is OpenStack, but I'm French. I'm using a French keyboard. So you might have to change the A with a Q. Does anyone still have some issues to be connected? Please raise your hand so that I can come to help you. And right now you can just do the virtual box. Okay, so for everyone having troubles with the virtual box, we've got the dialogue here. So you need to set your network type to NAT. And then there is a button on the bottom, which is Port Forwarding. It's in French, but I'm pretty sure it's Port Forwarding in English. And you need to click on this button. And then you can set the rules for the Port Forwarding. So basically, you'll have two rules. One which is 10022 on port 22. Yeah, I don't know if we can zoom in. Is it better now? Is everyone okay or do some people need some help still? Okay, good. I'll come to check. Okay, so apparently we should be okay right now for almost anyone. Okay, so the first thing we will do is that we'll get the right credentials for using our OpenStack, which is clearly just a keystone right now. So on the root directory, you have a small script called admin.sh that you can source. And it will give you the right credentials to use on your OpenStack. So source, do the first command here. And then you are able to manipulate keystone. So that's what we are doing here. We start by creating a project called Service, like all the time. And that's it for the setting up of our infrastructure. So right now, we will start to talk about the various components we are about to use. And Julien is about to talk to you about Cilometer and Newokey. So I guess everyone knows Cilometer by now. It's the OpenStack project we started a few years ago to collect the users in OpenStack in general. So it's being used there to collect data from OpenStack. And we put them into Newokey to have data to build for. Everything in Cilometer now is moved to Newokey for storage. We don't use Cilometer anymore. I mean, it's not the way it's recommended to use because it's just too slow. It's this one. So there's various parts of Cilometer. Now that we've split in several projects, let's leave Cilometer with the API, which is the API server which is less and less used. No, since we don't use it to retrieve the information anymore. The collector is used to receive all the AMQP messages generated by the agents, which collects the information. So there are two types of agents. One during polling, which are central and compute agents. They poll information regularly from Nova, Glantz, Cinder, Natron, whatever. And there's another agent, which is the notification agents which receives notification from various services such as Nova, Natron, et cetera, which sends regular information to feed data into Cilometer like usage of IO, CPU, et cetera. So there are metrics that are used generated by Cilometer, which are, for example, CPU tool for the CPU usage of a VM, the number of bytes or packets read on the network on the disk. Everything is pushed from Cilometer to Onyoki in this setup. Different types of metrics, which are kind of important to know about because they're not being used the same way, for example, when you do billing. Gauge, which are absolute value, like temperature in a room or something. And cumulative and delta, which are counters that keep increased like network IO, for example, which is always being increased and never sometimes go back to zero, but it's not an absolute value. The sample styles are the basis of Cilometer. So everything we do generate in Cilometer is called samples. So we generate samples each time we measure something in Cilometer and we send it to the collector, which then starts it into Onyoki. In a sample you have a lot of information, the dates, the name of the resource that is being matured, the users of projects, some metadata about it, things like that. We hit a few scalability issues a few years ago when designing Cilometer. That's why we started Onyoki. So the API provided by Cilometer until version two, it was very slow because of the way we stored the data. All the samples generated by the Cilometer components were stored as is in either MongoDB or an SQL database. And it was very slow because it was a lot of data. Most samples were regenerating information storing information in duplicate over and over again, which is very handy because it's very detailed. Things like auditing, it's pretty... It gives you great power, but it's a lot of data to store and to retrieve. So when you do requests, for example, on the Cilometer API, it's often pretty slow because the metadata are replicated over and over on all samples and you can't index them because everything is free from but small efforts of open stack components in general, which don't have any kind of schema or metadata of very resources. So it didn't work. So we changed our approach. So we approached Yoki two years ago, which started under what used to be the Cilometer program, which is now called telemetry. That's why you start seeing telemetry everywhere because we know of different projects which is not only Cilometer. So Yoki is one of these projects. The idea behind Yoki is to implement the time series database which is scalable in a position of many time series which are not. So this one is scalable. It can use storage which are scalable such as Swift or CIF to store the data which is known to be scalable. And it's being used by Cilometer as its storage for its samples. So it does pre-aggregation of the data. So when you use Yoki, you say, okay, I'm going to need to store it for months a year and being aggregated in some granularity like I want data to be stored for every hour over a year or every second over a month. Things like that. You define these kind of archive policies in Yoki and it's then being used to compute the data as you feed Yoki with new metrics. So it's way faster to store, to compute. It's way smaller too which are very more efficient to query when you want to retrieve anything from Yoki. It takes very, very little time. There are a few concepts in Yoki that you may want to know about which is the archive policy I just talked about. So that's a number of samples you want to keep for a metrics. So you define a policy saying I want to keep once you've gone granularity over a month, one day granularity over a year, you can specify multiple definitions of that in your archive policy. You can use that one of the archive policies for each metric you want in Yoki. It's going to be used as you feed data into the system. You can split in two parts. So there's a part for the metric storage which is the file system like in this workshop or CIF or Swift if you want more scalable systems. And there's another part which is the indexer which is the index data such as the instances that are being run. Things like that. There's a listing of resources for volumes, instant volumes, networks, etc. All the resources from OpenStack are being indexed in the indexer which is either Postgres, MazeGrid, whatever is supported by OpenStack and which are modeled where they are not freeform anymore. There's a schema with everything you need to know about the resources and all that are described which is very empty to, for example, in general, invoices based on this data. So Cloud Kitty, what's next? So I'll talk quickly about Cloud Kitty or it's working so you'll know it's working when we'll be doing all the configuration. So this is a new project. It was integrated in the BigTent. The first release from the BigTent is in Mitaka. And it's all Python, like every component of OpenStack. And we can integrate data from Cilometer and Yoki. So if you have an old metric pipeline only using Cilometer, we can query Cilometer API. We can query Yoki and get the data from Yoki. And we can store data back in Yoki so you can get data from Yoki, store data in Yoki and do all your calculations in Yoki and have only one API. Yeah. And it's super modular. So every part of Cloud Kitty is basically a driver or module so you can create your own collection driver, storage driver. If you need to integrate with another identity framework, for example, if you don't want to use Keystone you can create your own module and, I don't know, fetch data from a database, for example, to get all the tenants you want to apply rating on. Yeah. And the biggest part of Cloud Kitty is pricing. It's rating and pricing policy so you can add as many modules as you want so if you have some particular rating rules that you want to create a piece of code to apply on the data collected from Yoki, for example, you can create your own module loaded in Cloud Kitty. It's in runtime so you don't need to restart Cloud Kitty, the module will be loaded and you can configure it on the fly and all the configuration is sent back to every processing services so you never have inconsistent data in your pipeline. So all the work we'll do today is on the HashMap module. There is two modules at the moment in Cloud Kitty. It's HashMap and Pyscript.  HashMap is more of a high-level framework so you can create a rating rule and apply the same on your data without writing a single line of Python code. So basically we have a way to model our data so we create group. We can group calculations. So a group is a group of calculation. You want to match some metadata and some volume to some calculation. You create a group. For example, instance of time if you want to do calculation based on instance of time and you place all your rating rule inside and you can do a volume pricing with discounts and it will not interfere with your time calculation. There is a service mapping so the same name as you will find in Kiston, so compute network, etc. So you match a service. For example, we'll see in detail later when we create the rating rule but you want to apply calculation on the compute service of OpenStack. You create a mapping on the compute service and then you can even apply a rating rule based on the volume. So for example, the number of instance of data or you can match some field so it's a field mapping and then you can match the metadata of your instance. So for example, you want to create a rating rule and you want to charge your user based on the instance of time and apply some specific calculation based on the flavor of the instance the user created. So you will create a service mapping on compute on the flavor ID, set the flavor ID and all the calculation will be made based on this. And then you can create a threshold. So threshold, it's the same logic as I said except you can create multiple levels and it's really useful when you want to charge your users for volume for example, or network IO because you want to apply some discount for example let's say if you create a volume that is bigger than 100 gigabytes you get a discount of 5%.  Okay, so we'll start the installation now and we will install a new key first. So you will install a new key and then we will install a cloud kitty on top of this and do all our rating rules. I guess it's not really... So we will first install all the demons of new key. So take care about the command. As you can see there is capital C in the options. You have to use the local cache of your image. So if you don't put the capital C you will fetch all the packages from the internet so it might be a little bit longer. So don't forget to put the capital C. And basically we will be installing the new key API, carbonara and the indexer for SQL alchemy. I don't know, did everyone type the command or copy pasted it in your S6 station? Yeah? I guess I will go on the slide. I will go with all the slide about new key and I will stop later and see if everyone is maybe a little bit late on the configuration. And then we will install the client so it's pretty simple. It's a Python new key client so we can insert data later. We have a small script that will be inserting data in new key because clearly we can wait for one or two hours that we have some instances pushing data in new key. I guess, yeah, we can. So we will insert data using a script. Know that we have all demons and clients. We want to reference them in keystone so every component will see them. So I will go on all the commands and we will wait at the end. So we create a service. So basically we create a metric service. We name it new key because we want to see what's the name of the service giving us metric in case maybe we have different service later. About the output on the bottom you will not have the same. Not the ID at least. But it's an example of what you're supposed to get when you're running the command. You will attach the endpoint to the service. So basically when you do a request on keystone you fetch all the services and you get information for the service and you get the endpoint. So it's entry to your service which you are supposed to make request to. So three endpoints. Same URL. So it's basically the same command. You change the ID. With the ID you get on the first return. So when you create the service you get an ID. You copy your ID and you paste it just after region 1 on the second line. So it's an ID of the new key service. And basically same command three times except you change the type of endpoint. So you have an ID depending on where you're doing the request. So same command. Okay, so it was the endpoint configuration of new key and then you need to create users. So new key when you're interfacing new key with keystone which is not the default configuration. You need to validate the token from the user. So you need to create a new key and then go to keystone and validate your token and validate your authentication in the OpenStack Cloud. So you create a new user in the project service. We create the project on the first slide. It's a project we create and where we put all the service users for every component of OpenStack. And then, yeah, we create a new key user with password, password. And lastly, we have the admin role to new key. So we need to put new key as an admin because we need to validate tokens to keystone. So that's all for the keystone configuration. When you're set with it, we need to store data for our indexing part. So to connect the files with the information. So again, copy paste. You can copy paste the command as you see them. Basically, we're creating a new database, new key, and we are creating a user and giving rights to the new key database so we can set it on new key configuration. And you've got the MySQL root password on the bottom. Again, for the guy that didn't change the layout of the keyboard, if you're in other key, don't forget that A is Q, et cetera. And this is Versa. Just a quick look at the configuration so you're not copy pasting a file without knowing what you're doing. You don't need to put all the line by yourself. You've got the configuration file on the USB key so you can scp it on the machine or if you don't have scp or go in SSH, modify the file and copy paste what you've got in your machine to your remote machine. We're enabling debugging because we might want to see what's going on inside when we are trying to see. Some people might do mistake of configuration and you want to enable debug so you see clearly what's the problem with the configuration. And it will save us time for a connection URL. So you're referencing the configuration you made before on the MySQL database. And yeah, it's what's used for the indexer to relate to file you're creating even if it's Swift on the file back end. Storage. So yeah, as I said, we are using the file back end because we don't want to create a database. I don't think you want to run it on your laptop at the moment. And the base URL. So it's a default configuration. By default you will have driver file and the file base path as you're seeing but we showed it in the slide because you might want to see what's going on inside. Yeah. The Q is A. And last part you need to do is paste. Any in the configuration by default new key is not bound to open stack. So you can use it outside of open stack. So you don't have any authentication by default in your key. What we're doing is enabling the pipelines that will do the authentication in keystone. And then you can talk to new key. So what we're doing here is enabling keystone integration and keystone validation in your key. And updating database. So like every component, when you're using a database, you need to apply some migration to create the tables and do all the upgrades if you have not already existing database. So here we are typing new key to dash. New key dash upgrade and you apply all the database migration. And lastly when you've got your configuration set, your database ready, you can restart the new key service. So you can do some queries on your API and start to store data, et cetera. Does anyone have any question about the new key configuration, maybe? With every component in OpenSack you need to define different endpoints. It already has always been like that. Because sometimes you want to have different IP address and networking. For example, if you want all your admin traffic to be on a separate network, so you can see what's going on on the admin API. And then you've got the public one and the internal basically is enter component and public is for the public communication. But most of the time, all components will query the public API. So the question is do some people use Cloud Kitty on the public API to do some requests? Yeah, sure. You can use Cloud Kitty in your application and we apply a role. So you can't configure Cloud Kitty if you are not an admin, for example. But you can use the storage API, for example. So we've got ways of creating reports and accessing the data stored in Cloud Kitty. So a user might want to get a report of what's the current total for the two months and you've got an API for that. One thing we have, if you're using gnocchi, cilometer or every other driver you can think, you've got a common API. So if you use cilometer and gnocchi at the same time and storing data in Cloud Kitty because we have a storage driver, we have gnocchi and our own custom storage driver, you can use the same API. And it's not depending on the storage driver. For example, when you're using gnocchi and you're using our storage API, basically Cloud Kitty is doing all the requests to the gnocchi API without knowing. So you don't need to learn how to use all the API of open subcomponents, you only learn Cloud Kitty, you configure and talk to you about Cloud Kitty and then we can have a little time to see if everyone is on the same step. So Cloud Kitty, again, we are installing several components, less component than gnocchi. So you have two components in RDO, it's API and processors. So basically API is all the requests from every user and you can configure Cloud Kitty directly from the API. So you configure one time your configuration file and all the configuration of Cloud Kitty is made on the API not on the configuration file and when you're adding a new server in Cloud Kitty, you don't need to do some tricky stuff in the configuration file, all the configuration is sent directly to the Cloud Kitty processors and you can do some calculations. So basically you can set your API process on your front server and have the processor on some big machines, for example, because you need to do a lot of calculation. And then all the calculation is done on the processors. So if a customer wants to... it's not working, right? Okay, plan B. Yeah, so all the calculation and all your data will be on the processors so you can have... if one of your API nodes is corrupted, you won't expose data to the attacker. And every request for calculation, for example, on the API you can request for calculation. If you want to send a request to Cloud Kitty with the instance description and ask for a price and you will get a price of what it should be costing to your user. And it's sent directly with RPC to the processors, the processor is doing the calculation and sending it back to your API node. So no data is handled directly on the API so you can... expose data of other customers if you have some problems on your API node. Okay, so I... Okay. So there is a small part missing. You need to install... So there are the missing parts like Christophe said earlier. You can install it with you but it's not cached on the image so in case we don't have Internet we put it on the USB key. So you need to install the package by hand. But before installing the Cloud Kitty dashboard you need to install the OpenStack dashboard which is Horizon. So you need to type quite the same command except when you're setting the file at the end you need to set OpenStack dashboard. So you have the missing part and you will have Horizon installed and then you can set up Cloud Kitty dashboard which does all the integration in Horizon. So you can configure Cloud Kitty directly in Horizon. Actually it's my fault so I will just fix it. You know sometimes you realize that you have something twice on your script or whatever you want. That's what happened this morning and let's remove it. But once I've removed it I have removed it twice too. So we don't have the installation of Horizon. So you will have to type bit. Yeah, that's what I'm going to do right now. I think it should be better. So before typing the FPM command here you just have to type this. I'm sorry it's not on the slides already but at the end you will see that you have all our email address and just drop me an email and I'll send your negated version of the slide. Is it enough? So it's basically just install the OpenStack dashboard from the cache that we have on the U of Z key. And once you have done that you can install the Cloud Kitty client. Okay, so again as before we need to configure Keystone. So same thing as with Gnocchi. We create Yeah, at this side. We create a new service called Cloud Kitty type rating because we're during ratings so we are applying calculation on data to get more data but with calculation and then we can put it back in the building system and apply VAT to the accounting. Same stuff. I won't stay long on this slide. We are doing the same thing as with Gnocchi except the port is not the same one. It's 8888 which is a problem with other components that are using the same but we will find a way to change it. And then we create a new role so I will expand that. Recreating a role rating because when you want to charge your customers sometimes you have tenants that you don't want to apply rating on. So when we want to mark a tenant or project we want to do rating on it we are applying a rating role for Cloud Kitty in the tenant. So when Cloud Kitty starts we have a tenant feature we call it and it asks Keystone which tenant is the rating role for Cloud Kitty and then Cloud Kitty process all the data of all the tenants having the rating role. So again we need to validate Keystone tokens for the API so creating a Cloud Kitty user and adding Cloud Kitty to the service tenant with the admin right. Same thing as Gnocchi we create a database and add rights for the Cloud Kitty user and now the configuration so more lines than Gnocchi but not that much actually. Again we enable debug but because if you have some troubles we want to see what's going on inside. KS oath is a Keystone oath section so we create only one section with all the Keystone information and we reference it in all the parts needing Keystone information so you don't have two, three or four times the same data in your file. So it's the oath plugin of Keystone so we're using Keystone v3 you can use v2 if you want v3 v2 the tenant feature can use v2 and v3 and we're referencing the data we created before Cloud Kitty user with the password password in the tenant service and then we're referencing the data in the Keystone oath token to validate the token on the API when you want to validate that an user is connected to your OpenStack Cloud and is valid. RebitMQ because we're using RebitMQ to send messages between API and processor and then database because you want to store your data when you're finished and we're storing the configuration, some configuration of Cloud Kitty is stored in the database so all the hash map rating rules that I talked before is stored in the database that's why you don't need to modify a configuration file because we don't want to have a rating rule in the configuration file because if some people form sales or something is want to create rating rules you have an interface in Horizon and you can easily give them access to the Horizon interface and they can create rating rules and you don't want to give access to your service, to your marketing or sales I guess that's why you can create everything on the API and the Horizon interface and everything is distributed on the API nodes and when you're doing a configuration modification on your API it triggers a message that is sent to all the processors so basically the configuration is only loaded when the calculation are done so you don't have inconsistent calculations because your configuration changes between two calculations so no you can't create a resource in your security like I said it's all decomposed in different components so you've got a storage we're using a NUCI hybrid we plan of having a NUCI full support knows that we can create a resource dynamically with the API we can get data from over components in OpenStack create resource in NUCI it wasn't in NUCI so we created some hybrid solution that do referencing of the NUCI resource and then we store all the data that we can store in NUCI in Cloud Kitty so you only have a small footprint because you're not storing all the data all the data is still in NUCI then you've got your collect session so it's where you want to where you set the driver so collector is NUCI so you want to get data from NUCI you can set multiple collectors if you want to if you want to get data from Cilometer and NUCI or if you created your own driver and you want to fetch data for example if you've got some specific information that are related to some customers and you want to apply reaching rules based on what's in Cilometer what's in NUCI and some specific rules you can do it and so for the NUCI collector clearly you need to have access to Kiston to authenticate to NUCI so we are referencing the same authentication as before turn and feature as I said is a way to connect to OpenStack but if you want to run Cloud Kitty outside of OpenStack you can you just create your own turn and feature and then you will not be using Kiston and you can use a database for example to fetch information and so in the Kiston feature we set the host section as before and then we set the version we want to use to query all the data it's log, don't worry about what's in the button when we hold set we can create the database so basically it's Cloud Kitty db sync upgrade all the tables and all the data you need and then it can look a little bit tricky but we need the storage so we have a command that is Cloud Kitty storage init we're doing migration on the database but the idea is what if you're using step or Swift you might not do migration on the database so we init the database for all the configuration and the database for and the storage so it can be different and then you need to have a working Cloud Kitty to do this so maybe I will wait a few minutes if you face when you try to type Cloud Kitty the module list of Cloud Kitty which is the command on the left if you face max we try something just restart the Cloud Kitty API service because sometimes it's not really reloaded correctly after changing everything okay so we are nearly out of time so I will rush through the last slides and explain to you what it's doing sadly we will not be able to create some rating rules so if you want to have any information make sure to bump into me in the summit and ask me questions and we will create a blog post maybe on objectively websites so with updated slides new images with less quirks so you can try it again and again if you have any questions don't hesitate to ask me anything so just about the last slide you will have a nice demo in two minutes because we are out of time someone will show you what they are doing with Cloud Kitty and Yoki in their infrastructures and what you can do with it basically what the last slide where is how to list all the rating modules so Cloud Kitty module list you're listing the rating modules you've got Ashmap No-Op and Biscuits No-Op is a dummy rating modules it just ensures that the data is formatted like it's supposed to be Biscuits enables you to create Python scripts and do a rating in Python and Ashmap you model your rating rules using some kind of objects and you get a rating calculation so I guess the line got eaten during the evaluation you're doing Cloud Kitty module enable Ashmap and you're enabling the Ashmap module but it's not in the slide we'll update it and give it to you later and I guess we we were visiting the information in Cloud Kitty database to be sure that we reprocess all the data and do the calculation based on the data but it will not be the case here so I guess I will leave Max showing you his demo of what he's got in his company and again if you need some information don't hesitate come and ask us we will have a big imagination right now and we will suppose that we have an architecture and we have also an architecture with salameterations that are pushing metrics into both systems and then we will have an horizon to manage our Cloud and we will see what we can do with all these services so this is a little bit different it's our dashboard but it's not very ambitious in the front end and the user experience but it's based in a vanilla dashboard so you will be able to do this in your own dashboard so we will go to the rating part the rules section so that we have here are billing rules that we will be based on from salameter into the gnocchi system so when salameter push data into gnocchi you will have samples but you then have to create some billing rules that are based in business rules so to do that I will disable the rating module to avoid some inconsistencies then I will create a new rule and you have all the metrics that are pushed into your gnocchi system so you have to select one of these metrics and then create a business rule to start to collect that metric and start to create a bill line item so in this case I will select this device right I will select the billing unit in this case is gigabytes and the aggregation function so I will manage the rules I will create the new rule and I will put here the cost so once the rule is created as you can see there you have the cost per the summarize of the amount of gigabytes per hour so that's a business rule so you have to create this business rule like the thresholds or the metadata rules but we will just try with this a flat rule then we are going to show back part and we will generate a new report based on that rules okay we will just create a new report perfect so we have all the metrics again that we push it into the new system and that we used to create this kind of business rule and bill line items so now we will choose this metrics to generate a report a billing report in this case we will use instance that is the metric for instance uptime then we will choose the granularity that it's like the resolution of the metric and the time span that is the time that you will restore the metric in this case seven days and with a granularity of one day so each day you will have a point with the cost of the entire day for seven days the result and then we will group that metrics so in this case we will show the instance uptime from all our cloud but we will divide the report in project ID then flavor ID and then instance ID so we will have three different levels in which we will have the value of each one of the levels you can filter a specific flavor or a specific project if you want so once the report is created you can show the report in this case I have another one created it has more metrics in this case as you can see you have the granularity in this case 30 days it's one month with three months of time span so you can go through the three months and you can see the total cost of that month in this case we are showing March the month of March you have the total cost over there it's $75,000 or in the currency that you want and then you have the partial cost of every one of the projects that you have in your cloud the admin project migration test project all that are different projects that you have and you have the partial cost of every project and then if you split down you can see the partial of the flavors and if you go deeper you will see the partial of the instances because we choose three different aggregation levels then you can go also to the previous month and you can see also the total cost of the month the total cost of every one of the projects and the flavors and the instances at the same time one thing that you can do with this kind of report is to export the report to be imported by for example your billing system or in a pdf format or you can import the report with an excel for example you can export the report and the load and you can import it with some application that supports the CSV format another thing that you can do is to create the creation of charts that are the same of the reports but in a graphic manner so we will create the chart the chart definition it's similar you have to add a name for the chart you have to select the metric in which the chart will be based in this case we will select the disk write bytes so we will select the metric again then you have to choose the granularity and the time span the same that you have chosen in your report then an agro-patient in this case we will select just one level of agro-patients because our graphics are really difficult if you choose more than one level of agro-patients and then we will create the chart so once we have several charts created as we call the dashboards that are collections of these charts so we will create a new dashboard and we can select if the dashboard will be seen by a user or by an administrator for example then we will add a group of charts we will select several of these to have a big dashboard and the dashboard is like it in place so once you select the charts and you add the charts into the dashboard you can scale up, scale down the graphics reorder the graphics in the way you want so you can show things like CPU delta or the cost of all the months in your cloud by flavor project, etc and the graphics are also interactive graphics so you can select and deselect some report or some flavor to have a better vision of what's happening in your cloud so this kind of dashboard are dashboards to show you or to show other departments, maybe commercial departments how the cloud is being used and how they are spending their morning so we will save this and you can have a list of charts several dashboards with different kind of graphics there and another thing that you can do with this is to set a dashboard as a home of the users so every user when they are getting into the cloud can see that dashboard the dashboard that you want that the user see so for example you can show the user how is they spending their money in the cloud how much instance they have how the instance are divided in terms of flavors or projects etc I would just conclude so first of all thanks to everyone here to attend that I can notice we haven't been able to finish but like I said I think almost anyone here just drop me an email to Christophe you have my email on the slides and I'd be really really happy to help you each other to help you one at a time one by one to finish that this week so that I can explain you how to use Cloudkit and and you can right now that you have installed them what you just seen with Maximiliano is the implementation of Cloudkit and Yo-Key and he will be really happy that you joined the talk that he is giving tomorrow at noon so tomorrow at noon he is explaining and Stefan they are explaining together more in detail what they did in NubelU to use Cloudkit and Yo-Key and why they did that to explain you everything like this ok thanks a lot to everyone


Hello and welcome to the session. Today I'll help you with the following question. The question says find and correct the error in the following mathematical statement. Let's move on to the solution. The given statement is a plus 4 multiplied by a plus 2 is equal to a square plus 8. Consider the left hand side of this given statement. That is a plus 4 multiplied by a plus 2. We shall use the distributive law here. According to the distributive law we have a multiplied by b plus c is equal to a multiplied by b plus a multiplied by c. That is the term outside the bracket is multiplied by each and every term inside the bracket. When we apply the distributive law here we get this becomes equal to a plus 4 multiplied by a that is the first term of the second bracket plus multiplied by 2. That is the second term of the second bracket. Also according to the commutative law we have a multiplied by b is equal to b multiplied by a.  Again we will apply the distributive law so this becomes equal to a multiplied by a plus a multiplied by 4 times equal to a so on the right hand side. So this is the error in the session. Have a good day.


they're just seeing their prayers. And let's have a look at the starting lineup for Queens Royal College first. Afan is the man between the uprights. There's King, Lamsey, the midfielder, there's Karuth, the skipper, Mohammed, Nelson, Grandson, Tuckett, Gray, James, Franklin, and the coach. As we heard him earlier, Kenman Jones. Yeah, this is the Queens Royal College that needs points and needs consistency. And there is the Fatima lineup, Fatima with Bailey, Arthurton, Skipper, Jaden, Williams. There's the Gans, Kamacho, Shaves, Collier, Leach, who played left back, is more in the midfield today. Smith, Barrington, Edwards, the goalkeeper, Tristan Edwards, these are tower of strength at the back for Fatima and the coach. They form a trying to make a stand-up. And they have certainly kept the pressure on San Juan North. We'll just have to wait and see what has happened with it. Let's have a look at the highlights here. As there is referee Heinz getting things going. And it sent Crossfield, Bailey scoring the opening goal. That's a good bit of movement. It was played towards Bailey. He controlled it nicely and he banged it into the back of the net. And then the lone goal scored here by Queens Royal College. There was Barrington, not a good clearance because his keeper was down. It was played right down the center. James had an easy task of putting it into an open net. So at that point, game was on. It was one-all. But then the dance show started. The ball came across towards him. He was left open and he just put it into the back of the net to make it two goals to one. And then it wasn't done there because Shaves got into the act. He took on the defenders, went past them. Then the goalkeeper came. He went past the keeper and he slotted it, slotted it into the back of the net. Three goals to one. Fatima leading at that point in time. We went into the second half and it was more of the same. This time Levi Smith bangs it into the back of the net. The ball played square to him from Christian Bailey and he had the simple task of putting it into the back of the net. Four to one. Fatima leading at this point in time. And then came the goal of the match. Bailey played it in field. Look at the movement. Bailey kept his run going. Wronged the keeper superbly and put it into the back of an open net to make it five goals to one. And it wasn't done there. Arthurton sends it across field. The ball played into the guns and all he had to do was to put it into the back of the net, six one. And he wasn't finished there. That was his second goal. And would you believe it? He then took on the defense. It went to Karaya. Karaya squared it back to the guns and he put it into the back of the net to make it seven goals to one. So a comfortable victory in the end as referee Heinz blows her whistle to indicate that the game came to an end with Fatima College easily victorious. Let's have a look at the stats here. As you look at the shots, 13 shots to five, eight shots on target. Of those eight, seven went into the back of the net. Five shots from Queensborough College. Nine shots to five. Sorry, nine fouls to five. Two yellow cards for Fatima. One for QRC, no red cards. Three offsides to Fatima. Then seven corners to six. Four saves from Edwards. Two saves from Affan in the QRC goal. And look at that possession. 63 to 37. And an easy victory in the end of seven to one. Let's go down to the man of the match. Yes, and I am here with the man of the match. None other than Aidan DeGans. Here's your trophy.  Well, it feels very good. I always try to help the team as much as I can and today I will just score in the hat-trick, so I'm very happy for that. Yeah, absolutely. Of course, man of the match is an individual award, but I think everybody here would see that you all are such a great team. How do you all have that team chemistry? The passing, the moves, the goals, what is it all down to? Well, we've all been playing together since form one and during the pre-season. We worked very hard together and even in the camp and stuff, there was a lot of chemistry even before the season started, so yeah. Yeah, it definitely shows on the pitch and of course, coming down to the end of the season as it advances, not to put pressure on you, but you are in our title race. What is the confidence in the camp? Well, we are very confident. We know that once we come out and execute what the coaches want us to execute and play our football, that we will be successful, hopefully, by the end of the season. Definitely, and all the best going forward and all through to Brent Sancho with the coaches. Thank you very much. I'm joined by a head coach of Queensborough College, Kenwin Jones. Kenwin, of course, a disappointing result for you. Your assessment of the 90 minutes? Well, it started quite decent. I think a bit of inconsistency in defending cost of individual mistakes and from there, it was downhill. Well, of course, as the season goes on for you, it's important to get some points on the board. How do you pick the charges up after this result? Well, we have to quickly forget about today. Yes, it was a bit demoralizing, but at the same time, we have to get ready for the game on Saturday. We have to do better defensively as a team and try and cut out some of those mistakes that we've been making. Thank you very much, Kenwin. All the best. No problem.  Your assessment on the 90 minutes plus? First of all, I mean, thankful for the victory. I taught my guys and them, they played well. We talked this before, that, well, our aim is to win the league. And this is how we had what's across. To coach the staff, understand it, the players understand it, and I think they came out and executed beautifully. Well, of course, the matter to match the guns, making forward runs, getting it into the box, something you designed. Of course, because it reminds me of my time when I used to play, but it's something, it's something I always, especially my two attacking midfielders, always liked for them to end up in the pocket. And I think he did that beautifully and he got the three goals, which was good. Well, I know it's still some time left in this season. You must be in that locker room, a feeling that you can walk away with this year's SSFL championship. Well, that is the idea that we will be trying to instill in the young men head. Right? As I said, we won a win the league. And to win the league, we had to win all the games, take one game at a time. And that's how we're going. Thank you very much, Hudson, and all the best.


It really cannot be said enough. Diane Feinstein is absolutely terrible. She is just awful. She should have retired two years ago, but she's still there and she's still showing everyone how terrible she is and she's not just terrible.  He then interacted with Lindsey Graham. They were very close speaking to each other and there were times when his mask fell below his nose, thus exposing Lindsey Graham. And then after that, what does Lindsey Graham do? He goes and hugs 87-year-old Diane Feinstein. Now why would Diane Feinstein allow someone who just exposed themselves to COVID-19 to then expose her knowing that at the age of 87, it would be very dangerous for her to get COVID-19 because she's not very bright. Not very bright. I know that you might think, Mike, you're just being petty, you're just bitter because she was being nice to Amy Coney Barrett, but you've got to understand that Diane Feinstein doesn't have a spine and she will do anything to appease the Republican Party, but it's too far in her career to just outright switch parties. So you know, she plays on their team and she loves the Republican Party.   But the reason why we're talking about her is because in the process of Democrats trying to expose how illegitimate this process is to confirm Amy Coney Barrett rushed her through before an election, she has undermined everything that Democrats were trying to do, destroyed the narrative that Democrats were trying to craft. It's all her fault and there needs to be repercussions for this. She needs to pay for what she did and there are activist groups who are calling on her resignation from the Senate Judiciary Committee. She's in a leadership position and she should no longer have that role. So as Igor Bobik of HuffPost reports, Senator Diane Feinstein showered Lindsey Graham with praise as the confirmation hearings for Supreme Court nominee Amy Coney Barrett wrapped on Thursday with a little drama standing in sharp contrast to the contentious and acrimonious hearings from Justice Brett Kavanaugh that nearly blew up the Senate in 2018. I just want to thank you. This has been one of the best set of hearings I've participated in, Feinstein, the top Democrat on the Senate Judiciary Committee, told Graham, thank you so much for your leadership. She's saying this to Lindsey Graham. The chairman of the Senate Judiciary Committee, who angered Democrats by abandoning his 2016 vow not to confirm a Supreme Court justice in a presidential election year, then embraced Feinstein in a hug. Notably, neither wore a mask. While Feinstein echoed other Democrats and opposing Barrett, the top Democrat on the committee took a more conciliatory tone throughout the hearing, welcoming her warmly as questioning began on Tuesday. It is wonderful to see you here, Feinstein told Barrett. Democrats reacted to the 87-year-old senator's handling of the hearing and her praise of Graham, a top Trump ally, who was on the ballot in November with anger and dismay. Quote, it's very hard to watch a colleague in decline. That this is occurring publicly is even harder said one Democratic senator who spoke on the condition of anonymity. I'd like to know who said that. Brian Fallon, founder and executive director of Demand Justice, a progressive judicial advocacy group that urged Democrats to play hardball during the hearings went further by calling for Feinstein's removal from the Senate Judiciary Committee. Quote, she has undercut Democrats' position at every step of this process from undermining calls for filibuster and court reform straight through to thanking Republicans for the most egregious partisan power grab in the modern history of the Supreme Court, Fallon said in a statement. And I am very, very thankful that this group is calling for her to resign because if Democrats take back the Senate, she's in a position to become the chair of the Senate Judiciary Committee. No, that cannot happen. That cannot happen. Now, I want to share a little bit more from the statement that we demand justice put out because it is really blunt. And I love it. They say, quote, it's time for Senator Feinstein to step down from her leadership position on the Senate Judiciary Committee. If she won't, her colleagues need to intervene. Yes, so I love that, but I'll take it even further. She needs to resign. She should have resigned two years ago, but we don't need you to wait until 2024 to resign. Just resign right now because you are in bed with the enemy.  You have been the most egregious, the most egregious. And honestly, I get even more pissed off at Diane Feinstein when I think about a couple of years ago, she literally yelled at children who begged her to take action on climate change only to then show up to this sham confirmation hearings and praise Amy Coney Barrett and ask to be introduced to her children. Judge, it's wonderful to see you here. Also with the family that I have been observing, they sit still, quiet, you've done a very good job. I have eyes in the back of my head so they know I'm watching. I was wondering if you might introduce us to them. Sure.  This is a terrible human being. And at this point, with that egregious display that we saw from her, I wouldn't be surprised if she straight up voted to confirm Amy Coney Barrett. I wouldn't be surprised.  She is worse than most Democrats. So would it be that surprising for her to confirm Amy Coney Barrett in spite of the fact that, I mean, we see out in the open how there's this giant multi-million dollar dark web of money as explained beautifully by Sheldon White House being spent at the behest of this tyrannical opposition party who is hell-bent on radicalizing our entire judicial system. I mean, she is assisting them in this process. She is the enemy. So I mean, it can't be said enough. Diane Feinstein is absolutely terrible.