class we have discussed that what do you mean by optimizations. We broadly classified the optimization in two classes, one is static optimization another is dynamic optimization. Static optimization is concerned with the design variables, concerned with the design variables that are not changed with time and we have discussed what are the techniques are available to solve such type of static optimization problems. Another class is dynamic optimization problems and that it is concerned with the design variable that changes with time and time is becoming a function of this in the problem statement. So, there also we have discussed what are the techniques are there to solve such type of problems. Then we have taken the what is called that a problem statement is given and this problem statement we have translated into a mathematical form. Then we have seen this mathematical form represents a objective function which we are supposed to optimize either minimize or maximize subject to constraints. Constraint may be equality constraint or that inequality constraint or both and in addition to that there is a side constraints are there. With a suitable example, we have explained how to formulate the statement of the problem into a mathematical form. Then graphically also we have represented for simple example, graphical case also we have seen how to represent the optimization problem in graphical form. Then the next is your what is called that multiple optimization problems today we will just talk about the multiple optimization problems, multiple objective optimization. Let us consider a company has received what is called a production order of 400 units and he has to supply within a week and this company has to produce this unit.  So, the company has a two production lines two production lines. Let us call this production line is line a line a another production line is line b this line a the regular working hours the regular working hours in a week regular working hours in a week 35 hours 35 hours. Similarly, here also line b also or let us call 30 hours this 30 hours and line b also regular working hours. Thus this unit can be produced through line a or line b in addition to this that line a produces the produces line a produces 6 units per hour and the per hour operation cost per hour operation cost is rupees 400. In addition to this that over time is available up to 35 hours in line a over time is available available up to 35 hours in a week through line a. So, similarly in line b the produces line b produces 5 units and per hour operation charge per hour operation cost or charge is rupees 550 let us call. And similarly, over time available over time is available through line b over time is available up to 35 hours in a week. Now, what is our problem this is the statement of the problem company has got a production order of 40 units and this company has a two lines are there to produce this unit line a. And it has mentioned that in line a the regular working hours in a week is 35 30 hours line b 30 hours, but in one hour the line a produces 6 units and per hour cost is 400 rupees. And it is also mentioned that over time available in line a up to 35 hours in a week. Similarly, the line b produces 5 units per hour and per hour cost or charge is 550 rupees and over time is also available 35 hours in a week. Now, our main objective of this problem is two folds first we have to minimize the production cost the total production cost for 40 units we have to minimize first this is the objective function. Another objective function is at the same time we have to maximize the what is called regular working hours in a week. So, that is the two objectives we have in our hand. So, it is called multi objective more than one objective is a multi objective optimization problems. And we have a from the statement of the problem we have a different constraints are there. So, now our job is to convert this problem into mathematical form and then solve it. So, our main objective if you say the objective are one production objectives are one minimize the overall cost overall production cost for 400 units that we received order from the the next is we have to maximize at the same time at the same time at the same time maximize cost of maximize sorry maximize the utilization utilization of a regular working hours in a week hours in a week. So, this is the our objective there are two objectives are there minimization something and maximization also simultaneously you have to maximize another functions. So, let us this statement of the problem let us write in mathematical form. So, this problem is we can tell more specifically it is two objective optimization problems. So, let us write all the information in tabular form. So, that we can finally, we can write in mathematical expression form. So, we have a units per hour another is total hours for a week total hours for a week then cost in rupees per unit and units per hour can manufacture through two lines. So, line A we have defined the two lines line A and line B and total hours for a week line A and line B cost or the charge operation charge for per each unit or per unit line A and line B line A line B. So, here is our time whether is a regular time or over time. So, regular time the units of per hour through line A produces six unit through line B five units naturally over time also same units will be produced over time the per hour through line A is six per hour through line B is five units total hours for a week line A is 30 hours line B also same time or hours and over time in both the lines is 35 hours cost per unit through line A is 400 rupees per unit and through line B is 550 when it will go for over time then it is a 500 rupees instead of 400 500 and that is a 600 rupees. So, this table we can we have written from the statement of the problems. So, let us consider our design variables the objective function that is what we will define that is the function of our design variables first X A R this indicates production of units production of units during a regular working hours per week working hours per week through line A that is the unit that means X A R unit is produced during the week through regular hours working hours then X B B stand per line B similarly production of units during the regular working hours through line B per week. Now, X A suffix 0 line through line A during the over time working hours that is the production of units production of units during over time through line A and similarly B line through line B over time production of units during over time through line B in a week. So, this is the design variables we have defined. Now, immediately we can say that what is the cost that is overall cost is for the for manufacturing 40 400 units what will be the total cost will be for the 40 units. So, our problem is minimize the total cost minimize the total cost. So, we know if you see the from the table we know the production unit during the regular working hours through line is A R this number of units through line A is produced or manufactured then per unit cost is 400 rupees. So, 400 multiplied by A R is the total cost through line A during the working hours regular working hours. So, it will be a this total cost minimization total cost is a function of design variables X A R X B R X A 0 over time number of units and X B 0 and which equal to 400 into X A R plus 400 rupees. When you will manufacture the unit through line A during the what is called working hours the cost per unit is through line A is 400 rupees we have a X A R number of units produced through the through line A. Similarly, through line B is X B number of units produced through line B during the working hours regular working hours and the cost of this one is if you see from the table that is given 550. So, 550 into this one plus over time through line A is number of unit produced in through line A during the over time is X A 0 and the cost is your 500 rupees over time through line A. So, it is multiplied by 500 plus number of units produced during and number of units produced through line B during the over time hours is X B 0 and each unit cost is 600 rupees each unit cost is 600 rupees. So, it is a 600. So, this is the total cost. So, this cost we have to minimize that objective function I told you last class is an scalar function and it is a function of design variables our design variables are 4 A R B X B R X A 0 X B 0. So, you have to minimize this cost total cost. So, in addition to this we have a another objective function that is the maximization of regular working hours. So, another objective function is the maximize the utilization of regular working.  In the regular working hours we have produced X A R units and through line A how many we have produced X B R through line B. Then what is the time required to produce that X A R units through line A during the regular hours. So, that is we have seen from the table or from the statement of the problem that 6 units is what is called 6 units is manufactured in 1 hour. So, it will take how many hours is there X A R by 6 plus X B R by 5. So, this is the regular hours through both the lines. So, that time we have to maximize. So, there are two objective functions as there and this objective function one is maximization this maximization another is minimization. So, subject to our constraints then what is the constraints the subject to the following constraint and that constraints we are obtained from the statement of the problem constraints subject to. So, what is this that number of units we have to produce through regular working hours through line A and B as well as number of units we have to produce through over time in line A and line B. So, what is the total units we can write it one that is one conditions that X A R plus X B R plus X A 0 over time number of units produce through line A during the over time hours is X A 0 plus X B 0 is equal to 400 units that is as per from the statement of the problem. Second condition is given constraints are given that if you see the total hours through line A maximum hours in a week is 30 line B 30 and the over time through line A 35 line B is 35. So, we have a this constraint. So, we have a X A R is the number of units produced through line A during the regular working hours. So, how many hours is required then six units is produced in one hour then this much of unit will produced in this much of hours. So, that must be less than equal to 30 hours as per statement of the problems again. So, another things are there that is X B R by 5 also less than equal to 30 X B R is the number of units produced through line B during the working regular working hours and through line B 5 units that time required per hour it can produce 5 units. So, total hours is this much it must be less than 30 as per specific statement of the problem. And also through over time the third X A 0 divided by 6 time is must be less over time must be less than 35 and fourth constraints is X B 0 number of units produced through line B during the over time working hours is X B. Since it is required 5 in one hour through line B 5 units can produced then this unit how many times how many hours is required that we can find out that must be less than equal to 35. So, this is line A through line A line B you can say line A line B line A and line B these are the constraints is given to you in addition to that we have a side constraints are there what is the side constraints all the design variables this design variables X A R X B R X A 0 B 0 is greater than equal to 0 it cannot be negative quantity. So, another side constraints are the side constraints X A R X B R X A 0 A O X B O is all is greater than equal to 0 non negative this is called non negative design variables and this is called side constraints. So, this is the mathematical form these are starting from let us call this is equation number 1 this is equation number 2 and this equation number 2 is a equality constraints. Then you can say equation number 3 4 5 6 all are inequality constraints this all these things are inequality constraints constraints and these are the side constraints. So, this is the mathematical form of mathematical model with 2 objective functions agree. So, it is called multi objective optimization problems. So, we will discuss later how to solve such type of problems. So, we have now come across what is called single objective function multiple objective function in this case. So, next is your classification of optimization. So, if you see this the 2 example we have considered one for single optimization problems from the statement of the problem we have formed the mathematical formulation of optimization problems agree. Then multiple objective optimization problems we have seen and we now we will discuss the classification of optimization problems. So, first is level 1 level 1 is the statement of the problem is given that means general problem. Next is next problem is next level is your cost or objective function classification. So, next level is cost to objective function classification. What is this means whether is a single objective function optimization problem or it is a multiple optimization problems multiple objective optimization problems it is either this is a single objective objective optimization problem or multiple multi objective optimization problem. So, this is classification second level third level is problems classification. So, problem classification means whether it is a unconstrained optimization or it is a constrained optimizations that you have to classify. So, far we have discussed the 2 problems both the problems is constrained optimization it involves inequality constraint and equality constraints. Some problems may be there is no constraints involved in the problem agree. So, we have to maximize or minimize or optimize the function agree which is a function of design variables only agree there is no constraint. So, we have a problem we have to say whether this optimization problem is unconstrained unconstrained or constrained optimization problem level 3. Level 4 is variable classification variable classification means that the design variables what we have considering here the design variables are real or integer or mix of both. So, depending upon it will be called that classification of variable we are dealing with the continuous variables or discrete variables agree that not discrete what is called integer variables or mix of both real and integer variables. So, next is variable classification variable design variable you write design variable design variable classifications that is real variables are real or integer or mixed mixed mix of both real and this when you have to call real variable it is a continuous integer means discrete form. So, this and last level is your level 5 function classification that means function classification is this optimization problem whether it is a linear or non linear optimization problems or convex optimization problems or non convex optimization problems or it is a this problem that optimization problem is differentiable or non differentiable. So, we can do this one if you see the example 1 we have considered that example 1 for designing a can. So, that is a non linear optimization problems because in objective function was non linear and other constraints you can see it that mainly objective function is a non linear functions is there that case whereas, in the what is called the multi objective optimization problems. If you see the carefully the equations see this equation objective function is a linear equation the constraint this is the linear equation then this is equalities all are linear equation. So, this multi objective optimization problem is a linear optimization problems. So, function classification means linear the optimization problems is linear non linear or non linear non linear convex or non convex or differentiable differentiable or non differentiable. So, basically the general problem the problem of optimization can be labeled into 5 one is general problem statement is there from second level is your cost and optimization cost and objective function classification. Third is problem statement problem classification whether it is unconstrained or constant optimization problems. Then fourth is variable classification means whether the design variables are real integer or mix up of both and last level 5 is a function classification whether it is optimization problem is linear non linear convex or non convex or the this objective function all these things are differentiable or non differentiable class if we have can classify. So, this is that what the about the details about the different types of class what is called optimization problems. The before that we drive the conditions for optimal to get the optimal value of the function all these things we must know something about the what is called preliminaries of vector calculus and the quadratic functions what is quadratic function all these things. So, the preliminaries of vector calculus and quadratic function preliminaries of vector calculus and quadratic function most of the optimization problems involve the function of several variables if it is a most of the optimization problem the function of several variables. So, it is necessary to introduce vector calculus. So, what is vector calculus we will see so gradient of a function. Suppose we have a function of a suppose we have a function f of x. Now, this x is I will define as a vector of dimension n cross 1 that means x is a vector this elements of this vectors I denoted by x 1 x 2 x 3 x 4 dot dot x n that is why I have given the dimension is n cross 1. So, this is in more details one can write it is a function of x 1 x 2 dot dot x n which in compact form I can write function of x whose dimension is n cross 1 or you can say where x is equal to x 1 x 2 dot dot x n. So, I am written a dimension of this n cross 1 and here also you can write it n cross 1. So, we have a function that function is a that f is a function of several variables x 1 x 2 dot dot x n. So, you know already how to find out the gradient of that function. So, gradient of function is denoted by symbol f of x this symbol will read as a grad of f x and this grad of f x we have written as f of x. We are finding out the value of this gradient of the function at x is equal to x star some value is given that vector x 1 x 2 value numerical value is given at this point what is the gradient of this function find out gradient of the function is nothing, but a partial derivative of the function with respect to different variables x 1 x 2 dot dot x n. So, this we can write it symbol del f del x divided by del x same thing by written mathematically is like this way x is equal to x star where x star dimension is n cross 1 similarly x n dimension is this. So, you compute this one and that will give you the information of the gradient of this function. So, how do you compute that one. So, I told you just is a partial differentiation of function with respect to x 1 then partial differentiation of the function with respect to x 2 keeping all other variables are fixed. So, this equal to you can say this equal to or gradient of f of x equal to partial differentiation of the function x which is a function x means x 1 x 2 dot dot x n differentiate this with respect to x 1. So, this function you differentiate with respect to x 1 keeping other variables x 2 x 3 dot dot x n constant. So, similarly again you differentiate f of x with respect to second variable x 2 keeping x 1 x 3 dot dot x n remain constant in the function and then differentiate and this way you proceed and find up to x n. So, once you got it this one you put the value of x is equal to x star. So, this indicates gradient of the function which a function that f is a function of x 1 x 2 dot dot x n and compute the gradient of the function at x is equal to x star. So, this you can compute like this way or one can write it this is nothing but this if you see look the x is a vector. So, it other way you can say or you can write x 1 is equal to x 1 star put it in this x 1 x 2 is equal to x 2 star and dot dot x n is equal to x n star. This one can write it like this way will show the transpose form del f of del x 1 del f of del x 2 dot dot del f of del x 1 del f of del x del x 2 dot dot del f of del x del x and this whole transpose transpose of a matrix transpose of a vector this. So, gradient of a gradient of a function which is a scalar if you differentiate with respect to a vector the results is a column vector. So, this I can write into this row vector take the transpose also in this form. So, these are all are computed at the given point all partial derivatives all are computed you can write it here x is equal to x star at the vector. Given point x is equal to x star whose dimension is n cross n. So, gradient of a function function that function is a scalar function is a is nothing but a you do the partial derivative of f with respect to different variables write into a vector form. So, that is the gradient of this one. So, next is if you different if you do that derivative of a gradient of a function once again then you will get a matrix what is it mean if you differentiate a vector with respect to a vector then you will get a matrix. So, before that I just I will take you one example and tell you the how to compute this one example. Calculate the gradient for the function f of x is equal to x is a vector in your case is dimension is 3 cross 1. That means, it has a x 1 x 2 and x 3. So, this function is written x 1 square plus twice x 1 x 2 plus 3 x 2 square plus 4 x 2 square x 1 x 2 x 3 plus x 3 cube. Calculate the gradient of this gradient vector for the function this at x is equal to x dimension is 3 x 1 x 2 x 3 that is why I am written in suffix this and that value is 1 2 0 and I have written is transpose. That means the row vector transpose is become a column vector. So, this you have to so you can find out this gradient of this vector like this way. So, first you find out f of x with respect to x 1 you calculate this expression is twice x 1 if you see the expression that one you have to differentiate this one with respect to x 1 keeping other variables constant. So, if you do this one it will be 2 x 1 2 x 2 plus 4 x 2 x 3.  I told you I repeat once again then when you differentiate partial differential rule with respect to x 2 keeping x 1 and x 3 constant and del f x then del x 3 is equal to 4 x 1 x 2 plus 3 x 3 x 3 square. So, these things I have just written from this functions partial differentiation of the function with respect to x 1 x 2 x 3 and now the gradient of that vectors is nothing but a grad of this function gradients of the function this I have to compute x is equal to x star and this star means that what value x is given. So, this is or you can say x 1 is given what value of this one is given x 1 is equal to x 1 star whose values is 1 x 2 is equal to x 2 star whose values is 2 x 3 is equal to x 3 star whose values is 0.  So, this put x is equal to x star and these values are like this way if you put these values are here 2 x 1 plus 2 x 2 I am writing from this expression del f del x 1 plus 4 x 2 x 3 then del f del x 2 is your 2 x 1 plus 6 x 2 plus 4 x 1 x 3 then from this one del f del x 3 is equal to 4 x 1 x 2 plus 3 x 3 whole square and put this value x is equal to x star and this values you know x 1 is equal to 1 x 2 is equal to x 2 star is 2 and 3. So, these values are nothing but a if you see this one is nothing but a 1 2 0 this if you put these values this this shows the value is 16 6 14 8. So, this is mathematically geometrically what does it mean geometrically it indicates geometrically the gradient of a function the gradient of a function is normal is normal to the tangent plane at the point x is equal to x star. This is the now the second derivative of second derivative of a real valued function how to compute real valued function. So, second derivative of a real value function means the function is given first you derivative that function with respect to x. So, that is called gradient of that function then gradient of that function once again you differentiate with respect to a x and x is a vector. So, first thing we are while we are finding out the gradient of a vector or gradient of a function function that function is a scalar quantity if it is then we will get a vector again what we are doing we are differentiating that vector with respect to a vector then we will get a matrix. So, let us see what we are doing it here. So, the second derivative of real function is denoted by f of x that is and finding out the value x is equal to x star double star by definition I told you first you take the gradient of this function f of x then del of x and then once again you differentiate this with respect to this one with respect to del x. So, this is nothing but a and then you put the value of x is equal to x star where the variables are n cross 1 let us call in general. So, this and this we can write it del square of x del x square the second partial derivative you have to do it and put the value x is equal to x star that is. So, let us see what is done this one del of del x. So, first we have done the differentiation of a gradient of f with respect to x that we know what is this expression. So, I will write it this expression here what is this expression this expression is put the value x is equal to x star del del x as it is I have written then this value I have written this value is what del f del x del x 1 del f del x del x 2 del f del x dot dot dot x n then whole transpose this should be a column vector. So, I can write a draw vector transpose it does not matter this one. So, this thing gradient of the function is this one then you can you will differentiate once again. So, how you do it this is a scalar quantity this you see when you differentiate f with respect to or you will get a scalar quantity again you are differentiating this scalar quantity with respect to vector this again you are differentiating this scalar quantity with respect to vector. So, ultimately you will get a matrix. So, this will become now del square f of x x is equal to x star the matrix will be look like this way del square f of x del 1 square then del square f of x del x 1 del x 2 and dot dot dot you will get del square f of x is equal to del x 1 del x n. Second just you differentiate these things you will get this results del square f of x del x 1 del x 2 actually it will be del x 2 del x 1, but these are two values are same. So, next is del square f del x 1 x 2 square x 2 square dot dot dot del square f del x 2 into del x n differentiate them and in this way if you continue the last row you will be del square x del x this is the del x n x 1 del x n then del square f del x del x 2 del x n and so on last element of this matrix will be del square f del x n square. So, this is a matrix and you have to find out the value of this matrix elements at x is equal to x 1. So, this is called that second derivative of real functions how to find out and if you look this matrix it is a symmetric matrix and that matrix name is called Hessian matrix in short it is called Hessian. So, this is a symmetric matrix. So, in short I can tell you if you differentiate second if you take the second derivative of a real valued function of f of x which is a scalar quantity then the result is a matrix that matrix is a symmetric matrix and each element of this matrix is nothing but a the partial derivative of x second partial derivative of f with respect to x 1 x 1 and x 2 all these things. So, one can compute this one and that matrix is called Hessian matrix simply it is Hessian which is a symmetric matrix this is a symmetric matrix symmetric matrix and you know the definition of symmetric matrix the in general if a is a matrix and elements is a i j a i j is equal to a j i i is not equal to j. So, today I will stop it here and I will continue next class with an example that how to find out the second derivative of a function considering the same example. Thank you.


Engage is an alliance of seven universities in Europe, all specialized in social sciences, with a shared ambition to contribute to the societal issues. The goal of Engage being selected as European University is to bring the collaboration between the partners to a next level, to go beyond, to introduce ways of working together, with practices of models which we do not have at the moment. My role within Engage is that I'm part of one of the work programs. So together with people from the partner institutions, we're developing pilots and exchanging good practices, specifically in the area of talent development. And there's a very strong link between what we're doing there and the program recognition and rewards. The program is a national program within the Netherlands. What we're hoping to achieve is a system change to diversify the career paths for our academic staff. And we're hoping that other European countries will join us in this movement as well. Firstly, Engage will set up a structure which allows for seamless mobility. The possibility for a student to do a course with another partner university without any administrative obstacle. Secondly, we will broaden, together within the Alliance, our educational offerings. Set up a joint summer school. Set up joint courses, joint programs. All based on quality, excellence and the European values. I think the Engage project will bring me the opportunity to follow a course at a different university without having to travel there. You come into an international classroom with students all over Europe and also you meet teachers all over Europe. They bring new visions, new perspectives, but also cultures to the table that you are not familiar with. You will be able to follow a course from a very leading professor in the field without actually having to go to the university where he teaches. So it's very valuable for us as students to learn from these different cultures from people with different backgrounds. And I think connecting with each other with different people from different cultures is very important because you can learn a lot from them. And to go into a discussion with them to learn from their best practices but also they learn from our best practices. Join Engage. Just do it. We have so many opportunities. Also, virtual mobility. Next semester you can take courses at our partner universities. You can exchange knowledge, I think brings your own education to a higher level.


This is a MacBook Pro and this is Cakewalk by BandLab, the best free music production software made for Windows. Hi folks, I'm Mike and I hope you're well. Cakewalk by BandLab is a fully featured digital audio workstation or door and you can use it for music production and incredibly it's free but it's only made for the Windows operating system. Unfortunately for those people who are using the Mac operating system there isn't such a great choice. So I'm often asked if we can get Cakewalk to run on Mac hardware and the answer is yes. And I'm going to show you how to do that in this video. There's no hacks, there's no virtual machines and we're actually going to be using something which is built into the Mac operating system itself. But before we get into that let's talk about the what's and the why's. So the MacBook Pro which I've installed Cakewalk on is this one, the 2015 model with a 15 inch retina display. It's got a 2.8 gigahertz i7 processor, it's got 16 gigabytes of RAM and a whopping one terabyte flash drive, very similar to an SSD drive. So a non-physical drive so it runs nice and quiet and really, really quick. So it's great specs actually to run Cakewalk on and you can pick these up on eBay for around about five to $600. That's really good value and as I say it's got plenty of grunt to actually run Cakewalk. So if you've got one of these sitting around there's definitely no need to go out and buy a new PC laptop or desktop to run Cakewalk. And if you're looking to buy a second hand laptop specifically to run something like Cakewalk then this is a really good option. So I've been really careful not to say that we can run Cakewalk on the Mac operating system. That's still not possible. But what we can do really quickly, really easily and really efficiently is run Windows alongside the Mac operating system on our Mac. And we can use that to host Cakewalk. Now we're actually going to use something which is built into the Mac operating system itself to do that. It's been there for many, many years and it forms the basis of our plan here and it's something called Bootcamp. Let's find out how I went about installing Cakewalk on this MacBook Pro. So I actually started the process in the Mac operating system. So I started up my Mac as normal and once it was open I went to the Safari browser which is there for everybody. Once I opened that I then went to this address which you can see at the top here. I'll put a link for this in the description down below and then I downloaded Windows 10 as an ISO file. I selected that right at the bottom here. That's the only selection for me and I just scrolled down a bit and then clicked on the confirm button. After the screen had refreshed I then went ahead and selected my language which is English. Hit confirm again here to refresh the screen and then I went ahead and I clicked on the 64 bit download. Now here in Safari we can monitor the download progress at the top right hand corner here but I'll spare you the pain of that and we'll fast forward the video to the point where I had it downloaded. Now once it had downloaded I actually went ahead and I quit Safari as I wasn't gonna need that anymore.  I then double clicked on boot camp assistant and then went down and pressed continue. I then went and selected the only selection I could make which was the ISO file I downloaded earlier and then I went ahead and decided on a partition size. Now if you're mainly using this for Windows you may want a small Mac OS partition size like this one or if you're mainly using it for Mac then you may make your Windows partition small. I'd make it at least 200 gigabytes but I actually went ahead and made mine 300 gigabytes which is probably enough for my needs to have cakewalk on this computer with a few plugins, et cetera. I then clicked on install and it went ahead and downloaded some support files that it needs for installation after Windows is installed. This is basically gonna be used to set up the hardware and the drivers needed for things like your webcam and your network, et cetera on your Mac. Now that takes a little while and sometimes you may think it's frozen but it does take a while but I am gonna save you the pain and fast forward to the point where that's done. Now after that's done it's actually gonna automatically restart your Mac, the screen or flicker, et cetera and then when it does restart it's going to go into the regular Windows installation process. Now if you've installed Windows before most of this is gonna seem quite familiar but there are some slight differences which I'm going to point out. So hang in there with me here because you'll want to know about these. So as you can see I went ahead and I selected my language and time settings here. So I'm in Australia, so my time is English, Australian format. I then clicked on next. Now I have a product key for this installation of Windows. If you don't have a product key you can still go ahead and install Windows and it's gonna work. I think there's a watermark once you've installed it and there are some restrictions on updates perhaps but you will be able to test this out and run Cakewalk, et cetera. Now if you don't have a product key the next couple of screens are also gonna be slightly different for you because by entering the product key the system knows which version of Windows I have but if you don't enter one then it doesn't know. So on the next couple of screens you will actually have to select a version to install.  Now I prefer the Pro version but I do believe that Cakewalk is gonna run fine in the home version as well. So anyway, after I went ahead and entered my product key I then went ahead and clicked on the next button. I'll just wait till I've entered that product key. There we go. So I clicked on the next button and then it took me to this next screen here where we're already of course knew which operating system I was using which is Windows 10 Pro so I just clicked on next there to go ahead and install that. I then of course read the license terms and told them that I accepted them and clicked next again. Now it's most important that you do select this boot camp partition to install Windows then click next and you'll find that the installation process at this point is actually quite quick. Now I think on my particular Mac that is because I'm using this one terabyte flash drive which is very similar to an SSD as I said but it's going from that drive to the same drive which I guess is why it's quite a quick installation process. In any case I am going to fast forward to the point where that has been done. So it then went ahead and it restarted my computer again to continue with the setup procedure. Now I selected my country Australia and then we're ahead and clicked yes for that. And then after a moment or two I selected my keyboard layout which is US so clicked on yes for that and I didn't wanna add any second keyboard so I skipped that. Now the next thing I did was I clicked on I don't have internet and that's because the Wi-Fi won't work until a little bit later. I clicked on continue with limited setup and the reason the Wi-Fi isn't working at this point is because the drivers need to be installed a little bit later. We'll do that once we've actually got Windows installed so I wouldn't bother trying to actually use the Wi-Fi and connect to the internet at this point. Now it sort of restarted again and unfortunately I had to go through this sort of loop with this and click on I don't have internet again and then click on continue with limited setup. I don't know why it goes through that loop but it happened every time I went through this process. I then went ahead and inserted my name here and then clicked on next and then I created a password so that I could log into Windows and then once I'd done that again I clicked on next and then I had to confirm that password the usual routine here. Again, I clicked on next and then there was some security questions that I had to answer. This is so I can sort of recover my Windows installation a little bit later on if I want to. So I'll go ahead and fast forward the video through this part. You can of course set up your own security questions. Now there's a whole bunch of privacy settings that they asked you about here. I generally switch everything off here and that's because most of these things in my experience tend to slow down your computer. So yeah, I switched them all off. Maybe you could leave location on but mostly I like to switch it off. I then went ahead and accepted all of my choices there and then I didn't want to use Cortana so I just clicked on not now for that and then it went ahead and it started to finally sort of set up everything that I needed in Windows. So I'm gonna fast forward through this part of the process as well. And once Windows starts up you're gonna see that it's got this rather odd resolution where everything looks huge. Just leave that for the moment because it'll figure out the screen resolution for itself a little bit later on. The one thing that you'll notice it's different to a regular Windows installation is this window has opened up, the boot camp window. This is where it's gonna go ahead and install everything it needs to make all the hardware on this machine work properly. So I went ahead and I clicked on next on that window and then I just accepted the terms and the license agreement, clicked on install. And again, it goes ahead and it installs everything that it's going to need to make all the hardware and everything work on this Mac. So we'll fast forward again through this process. Now during that process it actually did figure out something out about my screen resolutions. Unfortunately, it's kind of set it to the highest resolution which I think is a bit of overkill. This is almost a 4K resolution. I'll adjust that a little bit later on. But in any case, the boot camp installer has finished at this point. So I went ahead and I clicked finish and then it asked me to restart the computer. I clicked yes there to confirm that and it went ahead and restarted Windows. So Windows restart again and that's really all of its installation done but I did wanna make sure I went ahead and set up the Wi-Fi so I can go ahead and download Cakewalk. So I went to the bottom right hand corner for that and then just clicked on that network icon there and then went ahead and selected my Wi-Fi network and inserted the passwords, et cetera. That's gonna be a little bit different depending on what you've got available but I will definitely go ahead and set up your Wi-Fi so you can connect to the internet now. Now with all of that done I wanted to go ahead and actually install Cakewalk. So I'm gonna invite you to go down to whatever web browser you're using. In this case, I clicked on the Microsoft Edge web browser and then go to cakewalksetup.com. This is my own completely free workshop which you can use as a guide to installing Cakewalk. I walk you through how to download it and where to download it and the initial process of setting up the hardware on your computer. Now none of this is particularly exciting but it is very, very necessary. So hopefully if you use this workshop you'll get through it as quickly as possible and then you can start actually making some music. Now you may be finding at the moment that every time you start up your Mac it automatically goes into the Windows operating system but you may wanna get back to your Mac operating system. Well, it's really easy. Just make sure when you're starting up that you hold down the option key while you press the power button and then after a moment or two you'll get this menu which pops up where you can choose between your Mac and your Windows operating system. It's that easy. So how well does it run? Well, the answer is really well. Despite its age, this machine is actually quite powerful and will run some pretty large projects in Cakewalk. The only thing you really have to do is learn how to use it. Now one of the places you may go for help is my Facebook group for Cakewalk by BandLab. Follow the links in the description for that. It's full of really helpful people who are gonna help you out with some of those teething problems. Now the other thing you may wanna do is watch this playlist that I have here on YouTube. This is full of tips and tricks for Cakewalk and runs you through all of the basics.


Kia ora and welcome everybody to my presentation for Drupal Gov 2020 on Archive Central and Next Generation Records Repository. So my name's Jonathan Hunt, I look at Catalyst IT here in Christchurch, New Zealand. The slides to this presentation are available at the URL on the screen via GetLab pages. So for the next 15 minutes I'm going to talk to you about the work that we did for Archive Central. Archive Central is a archiving, a physical archive and a digital archive run by a consortium of nine councils in the central north island of New Zealand. And we used Drupal 8, specifically a distribution called Islandora, which is a digital asset management system to handle their digital archives. So they evaluated both Islandora and Archive and Archive Space and several other solutions and they settled on Islandora as being the best option for their needs and this implementation was in the first handful of Islandora 8 implemented around the world. One of the things that makes it distinctive is that we implemented the records and contexts ontology from the International Council of Archives. This is a brand new conceptual model intended to bring as a data model for archiving with a focus on bringing archives into the linked data world. So as part of that we did some data modeling in Drupal and we also had to do a migration out of the existing system called Kete. We migrated records and then binary files such as still images and documents. And the supporting data around that content including agents, which in this case is primarily organizations. Just a quick word about Catalyst, we're an open source solutions company with significant Drupal expertise and experience and we have offices around the planet. So Archive Central had an existing digital repository based on Kete, which was a Ruby on Rails solution that originated about 10 years ago. However it didn't really catch on and lacked community support. So even though it was open source they really had no roadmap for improvements. So they were looking around for options. Also the Kete system that they're on lacked a responsive theme. So that was one of the things we brought. We contributed and we moved them to Drupal 8. So this is an example screenshot from the Drupal 8 system showing the same content. If I open up that specific object page, which in this case is an aerial photograph, you'll see I'm logged in here, which is why I have the menu bar highlighted. This is an aerial photograph that's been scanned. You can see some metadata around that specific digital object and includes where the physical object is stored. This particular object is being displayed using the OpenSea Dragon viewer, which uses IIIF to pull tiles from the backend server and that gives you a nice smooth interactive zoom where you can zoom in and pan around and see the object. The way it should be seen, one of the things to look behind the scenes here is if I click on media, you'll see the original file and then you'll see a couple of derivatives, in this case a thumbnail image and a service file that have been generated automatically by the island or microservices. Just a very quick introduction to the architecture of island Dora. So island Dora consists of a Drupal 8 distribution and Drupal stores the binaries and metadata in a content repository called Fedora, otherwise known as FC repo. On the other side of that, you've got indexing of the metadata into solar for keyword search and blaze graph for graph search. Island Dora is supported by a range of microservices that do things like derivative generations generating thumbnails or service files, transcoding for video or audio, OCR, FITs which extracts metadata like EXIF from files and any number of other microservices that can fit in and be invoked when you are ingesting new material into the archive. So one of the primary contributions that we brought to this was adopting the brand new records and contexts conceptual model. As I said, this has been generated to bring the archives world into the world of linked data. Records and Context started in around 2016 and they are up to version 0.2 so it's still a work in progress. But what the records and context ontology defines is entities, which in this case could be records or corporate bodies, et cetera, attributes which are the fields that go with those entities and relations between entities. And version 0.2 of the conceptual model has 22 entities, 41 attributes, 78 relations. An example of an overview of the entity hierarchy is shown here with the ones that we have used in archive central highlighted. You can see that we have a record sets which are essentially collections of records and records in turn might be composed of record parts. There's an instantiation that goes with the record and that's the digital component, the digital file is an instantiation, for example a scan of a photograph. Those records and record sets are given context by additional metadata that might describe an agent, an agent's breakdown into persons, families or corporate bodies and corporate bodies would typically be government agencies or commercial companies and so forth. They're further categorized by date and place so one of the significant changes that we made is rather than implementing dates as a class in their own right, we used the out-of-the-box IonDora EDTF format, so that's extended date time format from the library. So just very quickly, the mapping from records in context of Drupal record sets, i.e. a series or a collection is mapped to nodes, records are made up of nodes along with media and files, agents in records and context are mapped to the out-of-the-box IonDora corporate body, family or person and though those entities are defined on the Drupal side as terms within vocab groups. Place maps to the geographical location term that comes out of the box in IonDora 8 sessions which is incoming material for the archives mapped to nodes, we also did some work around containers and locations attracting the actual physical storage in terms of shelves and racks and boxes and so forth, so those were some custom Drupal node entities and along with that we have some other standard content management type components, rights, newsletters, etc. Because all of this is mapped to RDF we have any of the records can be exposed as linked data in this case with, as Jason linked data and you can see here that the type of record it maps to the records and context ontology type of record and it also maps to the Portland common data model type of object. This is an example of the edit page and if I quickly jump to the live instance I can show you the edit page in action, you can see there is an extensive number of fields and we have annotated the labels of these fields with the relevant attribute from the records and context standard, so if anybody, any staff doing data entry, if they have a question about what should go into that field they can actually reference the standard directly using those label annotations. A couple of other things of note, one is the linked agent that uses records and context or Libre of Congress mark-relators which gives you a really extensive vocabulary of around 200 different ways that a person or an agent could be related to a given work so you can have instead of just dub and call, create a contributor publisher the mark-relators gives you things like photographer or interviewer or interviewer and so forth. One of the other features here is these fields with distinct backgrounds, those are private fields so those are visible to staff when they're authenticated but they're not visible to the public. So just a very quick comment about the migration, we had to migrate over 210,000 records including around 7,000 images and 600 PDF documents, we used the Drupal 8 Migrate framework for that of course and it worked well for us. The primary source for the migration was a local snapshot of the Qt MySQL database but we also used a little bit of CSV and some embedded JSON basically to do some preparatory work like setting up some default licensing and rights and a few other terms for example formats and so forth so those were populated using migrations where we just embedded the relevant data directly in the migration using embedded JSON. Obviously as a sequence you need to follow for a given migration in terms of dependencies between data so we migrated users, Qt Ace became groups so one of the things to note about this installation is that the individual councils have been mapped to Drupal 8 groups to give them some access control around their own material and so staff can have rights to edit just the content relevant to a specific council. We migrated some basic pages, licences went to rights, agencies to agents, accessions to accessions and so forth. One of the things to note at the end there, we had trackable items which basically mapped to the locations and containers, we needed an intermediate table for that so we migrated some of the content out of Qt into an intermediate table and then we did a second pass of the migration to actually establish the Drupal entities that we wanted. As is usual for this kind of thing there were some challenges around the data, this is what happens when you have a group of people maintaining content over a long period. Some interesting things were long titles, we had some exceptionally long object titles over 1200 characters which of course makes for some huge URLs if you're using a title token for your URLs and we shunted those off into a distinct full title field which was then allowed archived central staff to manually migrate those entirely after the full migration. There were various values that had been put into fields that meant essentially the same thing so consult archivist, see archivist, refer to archivist, those all mapped and consolidated within the Drupal migration YAML and we used open refine to examine the content that we were working with and to come up with, you know, identify common values to things and the range of values that were in certain fields. We also had to do some processing because of relatively simple off by one errors so in Matheson city archives with or without the capital A for archives by default that would show up as two different terms so we consolidated and merged those and there were various challenges around data modeling for example putting coordinates against a record when ideally coordinates should be on a place term that is associated with record. So just to wrap up Islandora is a next generation repository based on Drupal 8. It's very flexible and can map to almost any metadata in this case we adopted the records and contexts conceptual model which is a very good fit for archiving. We used linked data extensively exposed to JSON-LD and indexed into Blazegraph. We used linked agents and specifically the mark relators to give a rich model for the ways that people can be associated with content. We implemented a responsive theme based on bitstrap 4. I haven't shown you the search API or the search interface but it uses search API including extensive use facets and under the hood one of the microservices is OCR so that lifts the text out of PDFs. We've got group-based access control around individual councils content and we use the AAA viewer for zooming and looking at tiled images and those are served by cantaloupe. So that's a very quick introduction to the archive central project. If you have further questions please email me at j100catalyst.net.nz or catch me at the chattelist booth after this presentation. I hope that was useful to you and I hope you have a great triple go of 2020. I've posted a link to the slides in the discussion forum so if you want to go back to any of those links check out that. I'll also paste in a few examples of content if you want to follow up on what things like photographs and so forth might look like. Thanks a lot Jonathan this was a great presentation. Thanks a great.


I know she had the car butt naked, walking backwards. I know somebody shot me in the toe.  I gotta ask you about something that, you know, I know you in Texas, Megan Thee Stallion was shot in the foot. I've seen this on a movie.  I ain't playin' no more.  I mean, did you? So what's wrong with you? I'm trying to answer you like, with the way that whole thing happened, a lot of people felt like, you know, this was a thing where, I seen a lot of people speak out afterwards. I didn't see people speak out during the process. People didn't know if it happened, if it was real. Yeah. I didn't know if it was real. It sounds so silly to me. I don't know if it's real.   I ain't never shot no more than two. I ain't never shot no more than two. I ain't never shot no more than two.   I know she out the car, butt naked, walking backwards. I know somebody shot me in the toe.  If I bumped my toe on this thing right here. Oh, it hurt. Hurt? N***a, I done bumped my toe in the bed. You might be in that bed.  Say imagine a shot.   Well, I can't deal with this. Then they were at the Kardashians house earlier. I know, in the pool.  Somebody wants to be famous. It seems like they're having a good time, man. I remember that, man. It's like, damn, this is how they, he had two women with him. I'll never forget it. I was like, this is hell. They're doing it. If you got two women with you, pretty as they are, you've got to be held stories like, what happened to three? That's it. She fell off the bed. Yeah, that's a good story. She broke her. She got shot in the toe. And nobody know. I don't know. That was wild, man.


So, this talk will be about quotas which are part of the building allocated if you've been at the talk before. We're talking about this a little bit. Again, if you haven't been to the previous talk, you know me already. If not, I'm Alex. I'm a patching methods committer. I work in methods sphere and as I like to say, my job is to search for right abstractions and make sure methods get better over time as good wine and cognac. So, let's set the goal for this talk. And the goal for this talk is to share some experience that we have about quota, some operational experience, to talk about limitations and future improvement that we are going to do. And I also try not to fall asleep because I'm still a little bit jet lagged. That's my own personal goal for this talk. So, the basement is why quota? Why do we need quota? Why haven't we invested time to implement quota? Even though if you don't know what quota is now for the moment, it's fine. I will touch this later, but first why? So, usually every solution starts with a problem. Well, so we had a problem. So the problem is, suppose we have a methods cluster. So this is the methods cluster. We have four CPUs and four gigabyte of RAM. It doesn't matter what nodes. We have just one big computer, four CPUs, four gigabyte of RAM. There is a methods master and we have two frameworks. One framework is your production application. And one framework is, say, Spark analytics. And as you may guess, Spark may use all resources that it gets. But about this later a little bit. So now we have the time, time is time zero. So that's the situation. Two frameworks, resources are free. The next second, we have allocation interval set to one second. Methods master allocates one CPU, one gigabyte of memory to each of that framework. That's fine. Framework accepts these resources and they start running the task of these resources. Again, at the same time, we're still at time one. At the same time, the rest of the resources by methods master is being allocated fairly, equally to these two frameworks. So our production application gets an offer of one CPU and one gigabyte. And our Spark application gets an offer of one CPU, one gigabyte. So everything is fair, everything's fine. But our production application says, I don't need any resources now. So it declines the offer with a default time out of five seconds. The next time, time two. Methods master thinks, okay, fine. I have free resources in the cluster and these resources are idle. However, I just offer it to another framework that doesn't decline them. So it offers these resources to Spark. And Spark gladly accepts all the offers that methods does. And now we have the situation when the status quo, the production app uses what it wants to use and the Spark uses everything else. Everything is fine. However, in the future, after some time, the first application production needs to scale because it gets more requests. It can happen easily. So what it would like to do this application, it would like to observe an offer from Mesos. But unfortunately, Meso doesn't have any resources to offer. So nothing happens and the framework becomes an unhappy framework. So this is the problem. One of the problems we wanted to address with quota. This problem can result differently. Quote is just one of the solutions. So what quota is? Now we come into what quota is. Quota is the resource guarantee that allows apparatus to reserve some resources. It's expressed via, oh, it's got cut. So there are two links. One is the link to the Meso documentation. You will get access to this slide afterwards and you can click that link. And the second link is the link to the talk by Jörg Schardt and Joris van der Waalten and my colleagues. The talk that they gave at the Mesoscon in Chicago, I believe, last year. So you can also watch the talk. It gives the introduction to quota, to quota feature. It talks about how quota is implemented and how it works. So at the same time, quota provides a REST API for operators, not for frameworks. Quote is only for operators. And that's where REST API allows operators to lay away resources for certain roles. Okay? How it works? It works very easy. A request comes in and we check the capacity, whether there are enough resources in the cluster to satisfy the request. And we proceed this request in the registry. It is necessary for failover. And then we basically exercise the request if we can do it. And everyone is happy. That's the theory. So that's what we expected. After a ship quota, I opened a bottle of my favorite wine. And that's what we expected. People will start using quota. They will come up to the devilish thinking how it works. Unfortunately, it didn't happen. And we were thinking why this didn't happen? Why quota didn't see wide adoption? I know that some people do use quota, but not that many as I wanted to. So there are some limitations. And here are just some of the limitations that quota feature has. Limitations are fine. Almost every feature or every project has limitations. Let's go through those limitations. So first, resources that we laid away for quota, they are not offered to other frameworks. Which means if you say lay away two CPUs in your cluster for future use of that production application, these resources currently will not be offered to anyone else. Which is probably fine. And that's how static reservation works. And that's how dynamic reservation works. But this is a limitation. Another limitation is that quota is on the limit currently, instead of a tuple of guarantee and a limit. Another limitation is that we support just calorie sources. There are no atomic updates. The question is what does it mean? Limit only and not guarantee? Quota can be understood in two different ways. First is limit and the guarantee. The limit means that you say that some entity of framework is not allowed to use more than certain amount of resources. Alternatively, you can say I guarantee that this framework is allowed to use at least these many resources. There are two different things. And sometimes in English language, quota can be referred to one of those of both. Currently, I will talk about this later. We will come back to that second limitation later. But for now, just understand that quota can be understood as a limit and as a guarantee. And probably or intuitively, you may want to specify both. So you may say I have framework and I would like this framework to be able to use at least 10 CPUs but not more than 100. So this is guaranteed plus limit. And there are some other limitations. For example, quota is gameable. I don't go into details. There is no granularity support. Under granularity, I mean that you cannot say that you would like to have, for example, you say 10 CPUs you want to use. You want to reserve as part of the quota. And these 10 CPUs should be five chunks, five pieces, two CPUs each, or vice versa. You just want these two CPUs and one chunk coming from one node. You cannot express this correctly. That's one of the limitations. So what we're thinking about why quota didn't see wide adoption. And we learned some lessons. And these lessons are that of these limitations that I listed and there are more, I just didn't put them here. Two are very important. And these two are the first two. And this is probably the main reason why quota didn't see wide adoption. I still just look into the future. I still think that we'll fix those in the nearest future and we will get that moment that quota will be widely adopted. But that's another story. So first, why haven't we implemented the limitation number A? Or limitation A is because in order to implement over subscription of the ladyway resources. And that's exactly what we need. If you would like to offer resources that we laid away for quota, we need to implement preemption. Because suppose you said that you need two CPUs being laid away for a certain framework, for a certain role. Because currently this production framework doesn't use these two CPUs what you want to do. You would like these two CPUs to be used by someone else, right? Now this someone else uses these resources and at some point of time what we've seen before this production framework says I now want my two CPUs back. So here we come with preemption. So you should have a mechanism how to preempt these resources and reuse them and give them back to the production framework. We don't have this in business now. We currently work on that, but we don't have it. And because we don't have it, we were not technically able to implement that over subscription of ladyway resources in quota. Second, the second limitation is a little bit more interesting I would say. So first, when we were thinking about how we can solve that problem that we were talking before, we said let's introduce a guarantee. So you remember this tuple, limit and guarantee. What we're thinking in the guarantee direction. So let's say our production framework needs a guarantee like this two CPUs and two gigs of map. If you remember that example, we would like to set this guarantee. However, however, there are two different, two different approaches. So if you set a guarantee, what you try to express is you want to protect a production framework by setting the guarantee for production framework. Alternative approach is to limit a greedy framework, which spark is. So if you set a limit, you can limit the amount of resources that a framework can use. The question is, if you have time and engineer resources with just one, what shall it be? A limit or a guarantee? That's the first question we were asking to ourselves. And that's why we decided we decided to conflate those two and implemented something that it acts both as a guarantee as an end limit. So how it works. There are two different types of resources and methods, revocable and non revocable resources. I think I have time to dig into this a little bit. So non revocable resources are the resources that is the default type. And these are resources that we cannot easily take back. Once we offer these resources, resources accept that we cannot take them back. Non revocable is resources that we can take back anytime. So while we implemented just one thinning method, it's called the guarantee. It's technically also acts as a limit. So these resources are guaranteed to your framework. They are laid away, but once you set the quota for that particular role, you're not going to get any non revocable resources beyond that. So sounds like a good thing. However, people often ask me, why don't we have both separate guarantee and separate limit? Why haven't implemented two? Why haven't we implemented a tuple? And the answer to this is, I don't know whether you're familiar with that, but we're going to move in a so-called, how we called it, in a revocable by default world. What's this? Currently the default type of resource is a non revocable resource, which means everything that Mezos offered or everything that Mezos allocated cannot easily take back. And this seems a little bit unfortunate because it complicates the rebalancing operation method because once we, let's say, we did a mistake or we didn't just know in advance what is the fair allocation is and several new frameworks joined the cluster, we can't rebalance that because resources that they offered are non revocable and we can't simply take them back. So what we want to do, we would like to make resources revocable by default. And in this world, technically, we don't really need both guarantee and limit. And that's why we didn't implement that because in the revocable by default world, how quota will look like, you will just set the quota, which means simultaneously the guarantee for non revocable resources. And because you're not getting non revocable resources by default, you actually don't need the limit because the limit is already there. The limit is zero for the revocable resource if you don't set quota. So most probably, that's my guess, we probably won't be doing, we won't be introducing limited guarantee. We will simply wait long enough until we will move into that world and then this limitation will be naturally solved. So next thing, I promise that we talk a little bit about common pitfalls and we share some operational experience. First, very important thing, is we decided to make quota set per role. So, quota is not for framework, it's for role. One of the reasons we do that, because we had the future of roles in mind. Imagine you have a hierarchy of roles. It will most probably come one day. And in that hierarchy, a framework may be attached to multiple roles and it makes more sense to have certain resources attached to the role to denote in the tree of roles to attach to a particular node and add to a framework an entity which leaves outside of the tree. It's very important because roles can be implicit now in Mezos. And if you set, you may set, you technically may set quota for a role that doesn't really exist in the cluster and then if you don't double check, you basically log a lot of resources for some role that doesn't exist. So it's important. If you have multiple roles and multiple frameworks in the same role, again, they share the resource guarantees that the quota gives to you. So if you say, if you set quota per role in different frameworks in that role, all of them will benefit from quota. Second is we don't have atomic updating yet. It will be coming soon, but not yet. And the combination of remove and set is not exactly the same as update because since it's not atomic, after remove, there may be some events happening in the cluster that will render set either impossible or meaningless or whatever. Another pitfall is that setting quota, the act of setting quota may lead to rescinded offers, outstanding offers in your cluster. And most, it's not that easy to calculate upfront which offers and how many offers will be rescinded. Which means if you have frameworks that rely on ordinary resources and they keep the offers for some time that the method gives to that frameworks, you may impact the operation of that frameworks. This is something to keep in mind if you use quota. Next, we've talked about that already, but the resources that are not used as part of the quota are idle. Which is not efficient, but that's something to think about which means you should be very careful about the amount of resources you set as part of the quota. The more you set, the higher the probability that these resources, the more resources will be idle. Next thing is how quota is technically implemented and once we, if you remember that steps of the pipeline of quota processing we'll stop the quota and then we enforce it. And the enforcement happens during the next allocated interval. It doesn't happen, it doesn't happen sometime in the future, it happens right now. So once we start the quota, it's applied immediately. However, it may happen that you're not able to execute quota right now and you have to wait for resources to free. If you remember, we're still in the non-revocable by default world, which means, for example, you have to simply use radio cluster. You set quota for 10 for this particular role. It doesn't mean that eight Mason resources will be free. So you set quota for 10 and two free resources will be allocated immediately after, but for eight you will have to wait. It does mean that what first eight CPUs that will be free will be allocated towards the, will be allocated to the role for which you set that quota, but you don't know when this will happen. Why? Again, because we don't have preemption yet. It will be fixed once we have preemption. So there will be a little bit user option, something like wait for resources to be free or free some resources. What you can do, if you know that you would like this quota to be reserved right now, you should manually free some resources. So you should decide which tasks, which frameworks you would like to kill. And once you kill these tasks, they will be laid away, or allocated straight away as part of the quota. Another thing is there is the, if you probably remember, there is a capacity check that I mentioned before. And the capacity check prevents an operator to block the cluster operations. What I mean under that? If you, for example, have a cluster with 100 CPUs, and then you set quota for 1000 CPUs. Once you set quota for 1000 CPUs and you just have 100, which means it means that all 100 CPUs will be laid away as part of your quota. And even if you will be adding agents to your cluster, all new agents will also be blocked. So there will be no frameworks outside of the role that you set quota for. They will get no resources at all.  So by default you can set quota only from the currently free resources in the cluster. But clearly this doesn't address all the cases because obviously you may know, okay, now I will set quota and I will be adding 10 or 100 new nodes to the cluster right after. So I do know that I will have these three resources right now. I know better. And we all know that one of the worst things that can happen to a software engineer is when he has a feeling that computer does know better, and to prevent that we introduce the force flag. So if you know that that's exactly what you would like to do, you would like to lay away more resources that are currently available in the cluster, you should use the force flag. Another very confusing thing is the difference between quota and dynamic reservations. But two different things that may look similar but are very different. Quota is about quantity and dynamic reservations about identity. Dynamic reservations are attached to a one specific node with all the consequences, which means if you dynamically reserve resources for a particular role or a particular node and as this node goes away, it dies, this role loses this reservation. The reservation is not transferable because it's attached to the node. It's not true in case of quota. In case of quota you say reserve resources somewhere in the cluster and if nodes on which tasks are running that are part of the framework's quota and this node is gone, then you will get another place in the cluster where these resources will be reserved. The difference is that quota can be set only for free resources while dynamic reservations can be set on free resources and also offered resources. Currently quota is for operators only, so frameworks can set quota using framework API. Of course, your framework can be at the same time the operator. I don't know whether it's a good idea, it's a different question, but the framework can use operator API to operate on quotas but it's not available in framework API. The most important thing here is that quota and dynamic reservations behave differently in present failures. So if you start losing nodes with dynamic reservations, you lose dynamic reservations. If you lose a node with quota, you will get these resources somewhere else in the cluster. Some future improvements to the feature will do atomic update very soon to address one of the limitations. We'll introduce quota support for hierarchical roles, once we have hierarchical roles, and we definitely implement oversubscription for quota once we get preemption. That is to address the first limitation and the second limitation that quota is not a tuple, I hope it will be non-existent, so this limitation will go away once we enter the revocable by default world. That's it, if you have any questions, ask them now or later on, you can catch me at the booth. Yes. So the question is, there are two nodes, on one node a container, say container A is running, the other node is fully booked now, so there are no free resources. Now the first node goes away, it fails. The question is how can we make this container A running on the second node? Well, quota is the answer, obviously. So if you think that your container A is a production container and it has priority over other containers or tasks that are running on the second node, you should reserve resources in the cluster for your container. Alternatively, you can also limit other workloads that are running on that second node so that there are free resources on that particular node. And then the framework that you use most probably will reschedule the container if you use something like Aurora or Marathon, they already do that. However, there is one important detail here. If the other node is completely booked and all the workload is running on non-revocable resources, you can simply run your container, you can simply kill a random task there and run your container. It depends how it's fully booked, and that's the point I'm trying to make. If it's booked with revocable resources, we can easily remove them and run your container there, but if there are non-revocable resources there, we cannot simply randomly kill applications because we don't know what SLAs for these applications are on non-revocable resources. And that's why we want to transition to the world of revocable by default so that we have more workloads running on revocable resources so we can do it easier. We may also introduce different tiers of quota and priorities, and if you have priorities for roles somehow, then you may deduce the importance of your workload and, for example, if the priority of your container is higher than the priority of some tasks running on that node, you will be able to kill those tasks and run your container, but currently, if all are non-revocable, they have the same priority and if we cannot randomly kill tasks in order to run your container. So the question is, is there a simple way to reserve 30%, for example, 30% or a certain number of percent of all resources on each node? And the answer is yes, and it's called static reservations. It's not in percentage, it's in absolute numbers, so you can reserve on every node a certain amount of resources for a particular role. It's probably not desirable because it's a static reservation. What else you can do? You can create a dynamic reservation on every node and we were considering introducing dynamic reservation templates, which means once a new node comes in, it automatically, a template is applied and some resources are reserved dynamically, but yes, the answer to your question is static reservation, even though it's probably not desirable. Exactly, you cannot do that and memory is not compressible, either you can't do anything or you have to kill. There is no other way. Currently, yes, if I understood you correctly. So I used quota like three months ago, so I don't know the latest status, but one difficulty which I had using quota is that once I set a quota and then I want to know the status of the quota, I mean, how much has been satisfied now? Then there is no straightforward API. Okay, so the question is, once you set the quota, there is no straightforward API to understand where the quota is satisfied. How much has been satisfied? I set it for ACPUs and how much is currently being satisfied? Six has already gone, two has left. Okay, there is no easy way to understand how much of this quota, how many resources are already used. Well, we were thinking about that and you have to query two endpoints. Okay, the reason why we haven't done that, so actually, some history behind that, I was arguing for giving all this information. I was also arguing to give notifications about when you about to achieve quota or about when quota cannot be met. We decided not to do that for the reason because it's probably not Mezzo's job to give you some notifications.  Another reason why we didn't put it into the same endpoint is because there should be one source of truth. Quota endpoint gives you the status about quotas set and if you would like to get the status and statistics about your tasks, then you should query another endpoint. The problem is that if you get part of this information and deliver it as part of the quota endpoint, then how do you guarantee that in the future this information doesn't go out of sync? Then people will ask, okay, if I hit this quota endpoint, is this part of the tasks running is the same as I get from the tasks running endpoint? So that's why we decided not to put it in the same point. We don't even have to give the list of tasks running when you hit the status of the quota endpoint, but you could say that among 8 CPUs, 6 have been already used and 2 is left, something like that. You don't have to give more granular resource information but just tell the overall. Yeah, it's definitely possible. Because you seem to calculate that every time you schedule it, so it should be easy to simply set it out. Yeah, it's definitely possible. So there are other opinions that people think that it's probably not, it's probably bad ideas because we can give you the feeling that you have 2 CPUs, which are probably now already allocated to someone. It's just the endpoint didn't get updated, but I would encourage we can talk about this later or we can also, we can start a thread on the dev list and come up with this proposal so that other people, not just me, can comment on that. That will probably be the best way, the Apache way. Any other questions?  The question is about do I have a roadmap or a timeline for revocable by default? I think I don't have an exact timeline. I definitely can say that we all want it. It will be very hard to transition because almost all clusters operate now under different assumption. So we were thinking about what is the best way to transition and there are different strategies. For example, you make 80% of the cluster non-revocal by default and next year 70%. So I think it will take some time for this to happen. Most probably we will do a switch, like a master flag, how to treat resource by default. So people who start new clusters and are interested in this feature, they can use it. That's probably the way. And I think it doesn't really make sense to introduce this switch before or until after we finalized preemption and revocability for revocable resources. Once we're done with that, and it's currently been worked on, so once we are sure that all things are worked for clusters with revocable by default switched on, then we introduce the switch. I mean, I could, but I don't want to. Okay, if there are no other questions, I think we're done. Thank you.


The secret press release guide to help businesses get known. Okay, so you're working on getting your business known.  But did you know a single news article, a single news report can explode your business. And in this video, I'm gonna show you how to get those press releases, how to get those articles written about your business and we're starting right now. Hey, don't forget, if you haven't done so already, make sure you hit the subscribe button down there. Smash that subscribe button and hit the thumbs up button. And the most important one, after you've done those two, you gotta do those two first, is ring the bell. Turn on all bell notifications so you're notified each and every time I go live. That bell won't appear until you hit the subscribe button. So if that subscribe button's still red, you need to click it and you'll see the bell, then you can turn on all notifications. Okay, so in this video, you're gonna know how to get famous, I guess.  Okay, so what is a press release anyhow? A press release is basically a statement about your business, talking about something that happens. Now, a lot of times you can send out press releases and just based on the press release, the news outlet will print that, okay? And they'll do that. But sometimes you're gonna have to talk to them. Maybe you're gonna have to be interviewed by them. Maybe they're gonna wanna ask you some questions. Now keep in mind, reporters are always trying to get their stuff read. So they're always on the lookout for something that's interesting, something that emotionally people can connect with, something that's timely to what's going on now. I know when the illness hit, I was contacted by Shark Tank, which was pretty interesting. I never did do the show, but I was contacted by them because we sell survival food and it was a timely thing.  Now, having a press release for your business is just another tool. There's another tool that you could use to grow your brand and become more out there to the public so they can see you and they can see what's going on. So it's a great tool to have. If you haven't done it before, you need to go through this entire video.  Now keep in mind also, a press release lets you control your story. If you don't control your story and somebody can just write a story about your business and they don't have any insight as to your business, that may not be a real good thing. So you wanna be able to control your story and the best way is through a press release. Now let's talk about some of the different types of press releases. The first one is breaking news, okay? So something that's happening right now, a big thing that's going on when the illness struck the world. You know, of course our survival food was in forefront and people wanted to know about that and they were calling me and a lot of conversation about that because that's a breaking news type press release. The next one that I wanna talk about is product launches. Maybe you've got a new product that's coming out. Maybe it's something new to the market. You could do a press release around that. The next one that you may see are mergers and acquisitions. Maybe you're partnering up with somebody. Maybe you've merged with somebody. Maybe you acquired somebody else. That's another great type of press release. The next could be a product update. Maybe you've changed your product. I know we're changing our labels on our canned foods and we're probably gonna do a product update on that one. Maybe it's an event you're having.  You have a new restaurant that's opening up. You have a new hair salon, whatever it is. It's an event that you can invite people over and they can share in that event. And the next one could be rebranding. Maybe you're rebranding stuff. So when we change our labels, we're probably gonna not really rebrand it, but we're gonna relabel it and it's gonna look a little bit different and that's gonna be a big announcement for us. Next thing you could look at is maybe there's executive promotions within your business. Somebody got promoted to a bigger position. Or maybe your company was awarded something. Okay, maybe you won some type of award. I know a couple years ago we had the Clickbank Platinum Award for being a Clickbank Platinum seller. So that was a big thing. We didn't really promote it, but we got that award. That's something we could have done a press release about. Now what I'd like to do is go through the seven steps of writing an effective one. Okay, step by step so you understand what to do. Number one, find a newsworthy angle. So what you wanna do is you wanna come up with something that is gonna be a good headline. Something that's gonna be interesting for people. Something that that reporter can actually latch onto and say, yeah, this is gonna gain people's attention by looking at this headline. And number two, you guessed it, craft a good headline. Okay, craft a good headline. It should pique somebody's interest. It should make them want to read the article, watch the video, whatever it is. Like on YouTube here, I try to do headlines or titles for the videos that's gonna make people wanna click. You have to do the same thing for a news article or a press release. Number three, have an effective subtitle. The subtitle should basically summarize what the actual article's about, what the press release is about. So it should be a short subtitle to that. Number four, before you even start writing that first paragraph, make sure you have the essential information. The name of your company, your address, your email, your Twitter handle, your Facebook page, all those things, make sure that is up front so everybody can see that before the article, before the press release even starts. Number five is provide supporting information. A good thing to do with this is statistics, okay, statistics. I know during the illness, I had an article written about me in my college paper. They also did an article online and it talked about the increase of our sales and the percentage of increases sales and what we were doing. Those, that data, that data that people saw, they saw these huge increases, was really interesting to them and it captures people's attention and it also brings you a lot of credibility. Number six is lead into the next steps, okay? Talk about what they want to see next. Talk about what's gonna be in that press release. Talk about what's gonna be in that article so that they wanna go further and they wanna read more, they wanna watch more of the information that you just provided. And then number seven, you wanna provide a brief boilerplate of your business. A brief boilerplate is basically talking about your business, maybe the history of it, how long it's been around, what they do, who they're associated with, that type of thing. A common practice to put at the bottom of the press release so that we know it ends is three hashtags or a dash, dash, 30, dash, dash, and this signifies that's the end of that particular press release. Now I'd like to put up on the screen now an example of one, this is Bulletproof. It says Bulletproof releases cold brew line of ready to drink Bulletproof Cafe. Now as you can see here, the number one spot is the title and it's a talusized subheading to summarize the news, okay? And then the number two spot there is like I said, the location, where the news is based, the headquarters, that type of thing. And then the number three spot is two to three paragraphs of details, given all the details about it. And if you notice number four spot is those bulleted facts. Number five spot is the company description at the bottom. Number six, obviously we wanna be able to contact them so that's the contact information. And then number seven, the triple hashtags at the very bottom which lets you know that that's all over with, okay? So that is the basis for doing a good press release. Now let's look at when you send this out some of the other best practices you should do. Your press release is either gonna be for immediate release or it's gonna say hold for release until and then it's gonna have a particular date and time. So those are the two things you wanna have at the top of your press release so people understand when this is supposed to come out. Now what I'll do in the description below cause it's kinda hard to take notes off this video is I'll put a template of what that press release should look like and you can just copy that. So you'll see it below where it says template. Just go to that, you can copy that and use that for your company. Now you can just send out your press releases to local papers or national papers or news stations if you want. You can also use a search to try to find by putting in the name of the company, the name of the reporter, do that on Google. But if that doesn't work for you there are some services you can use. You can use hunter.io which will help you search for people's email addresses based on a company. It's a great resource. They have a paid and a free program on there also. Now you can also use a distribution service that will send your press releases out for you. Let's check out some of those real quick. There's PR distribution. You can use e-releases. You can also use news wire. You can use PR web. You can also use PR news wire and you can also use Cision. Okay, all of these companies send your release to journalists based on their specific interests and also publish it on their websites. Each service offers a variety of options and costs can vary greatly ranging from $69 to a few thousand dollars depending on what you wanna spend on your press release.  Now while press releases don't guarantee your success I can tell you by putting them out there on a regular basis having a general cadence to doing this. It gets bloggers, it gets news outlets, it gets brands who are writing about your niche aware of you and right now you may not be that well known. We should probably do that more. We've had a really good year because of the illness because we own a survival food company. However, that's something we should probably concentrate on and get more involved in ourselves. Now I think one thing is true and that's that people get overwhelmed with the amount of stuff they have to do. I know I do, I think just about anybody I know that works online gets overwhelmed because once you learn how to do some of the stuff you realize there's so many things you can do. The problem is getting paralyzed by that by saying hey there's all these things I can do with a press release but I don't know which one to do and I don't know which one's gonna be best so I think I'll do none of them. That's a bad way to go about it. The idea is to do some of it. Do some of all these things if you possibly can. Sure, you wanna get really good at some things. You know, YouTube I put a lot of effort into. I put a lot of videos there. Spent a lot of time on that but it doesn't mean I shouldn't do anything else. It shouldn't be like, you know, it's YouTube or nothing else. I should do some other things out there and that's what I concentrate on doing and that's what you should do. I hope this video has helped you out. Hope you got some good information out of it. If you have any questions and you very well may please put that in the comments section below. I would love to hear your comments. Maybe you've had some experiences with press releases and getting articles written about you. I would love to hear about that. Maybe you've had some successes. We all love to hear your successes. Please put those below. I also have a course below. It's a $97 course, absolutely free. You can get it for free for a limited time so you wanna go ahead and grab that now. There's no credit card required or anything like that. You just click and learn. Thank you so much for watching this video. Don't forget if you haven't subscribed, make sure you subscribe. Don't forget to ring the bell. Turn on all bell notifications so you're notified each and every time I do a live video or I upload one just like this. Thank you so much. Give me a thumbs up if you don't mind and I'll see you in the next video. Hey, thanks for watching my video. Don't forget to subscribe to my channel and click that little bell right here so you can be notified every time I do a new video. Also, click on one of those videos there. Keep watching on my channel.


Hi, I'm Tom Wood, trauma program manager here at Mid-Michigan Medical Center in Midland. And I'm Dr. Tom Veverka. I'm a general surgeon and surgical intensivist. I'm the medical director of the trauma program. We founded our trauma program in 2011 with a goal of providing care to the citizens locally here in Midland and throughout the region. When you looked at what it was like back then, there was no trauma centers to the north up all the way until Traverse City and nothing to the west until Grand Rapids. So trauma care really wasn't available locally. To be a verified trauma center and having it here in Midland, we now provide care to patients not only in Midland but for the entire region. They no longer have to be shipped outside the region to get their care. Mid-Michigan Medical Center has always had the capability of taking care of trauma patients but by becoming verified, we now provide a more organized system of care. We've expanded coverage for interventional radiology, we have additional orthopedic surgery coverage, and we have added a neurosurgeon as well. Studies have shown that patients who are cared for in a verified trauma center have a better chance of survival as well as good functional outcomes. In February, the American College of Surgeons Committee on Trauma visited our facility and verified that we meet the over 200 standards of a verified level 2 trauma center. This means that we meet standards such as timely responses to the patient in the emergency department, presence of specialty surgeons, and presence of a trauma specific ICU. We treat a full spectrum of injuries that might result from a car crash, from a fall, including brain injuries, spinal cord injuries, punctured lungs, broken ribs, ruptured spleens, other abdominal injuries, and vascular injuries. We have a full range of trauma-trained medical and surgical professionals such as emergency physicians, special trauma-trained nurses, trauma surgeons, orthopedic surgeons, neurosurgeons, interventional radiologists, and intensivists. The American College of Surgeons verifies four different levels of facility. Level 1 and 2 centers provide the same clinical capacity for patient care, but a level 1 also does research in trauma care as well. A level 3 will also take care of trauma patients but require a level 2 or 1 referral center for more complex injuries. If you're seriously injured and being cared for by an EMS personnel, you can always request for a safe transport to our facility. If you find yourself injured in an outlying emergency department and require a transfer to a trauma center, you can simply tell your ER physician that you'd like to be transferred here. I'm extremely proud to be part of this highly skilled team of trauma professionals. We are very pleased to bring this level of care to Midland and the surrounding communities.