cycles. Yes, it's time for cycles updates for once. Yeah, no, no, not everything is easy. So this update actually comes from a mini code quest that happened last week when Lucas Stockner was here. This developer folks has like a million patches about all kinds of parts of Lender, including UDIM support, which is coming very soon. And this patch that was added to improve the ambient occlusion node. So if you remember ambient occlusion from this ancient software, Blender 2.7, it was very basic. And when you add a new node, search ambient occlusion, it was, I mean, I think it doesn't get any simpler than this. It's a color input, shader output. So the ambient occlusion node now in cycles, we can, let's see it here. So I have this nice pillar from the movie Open Movie Spring. And if we add a new ambient occlusion first on the list, we'll see that it's much, much more feature complete. Now you can output color. You can also output a float value, like it's just a regular value. You can set the quality of it. You can invert it. You can set it to ignore other objects and color and distance and everything really. So let's see how would it work directly from color to base color. Not much has changed. But the cool thing is that you can add a color ramp. You can mess with it. So you can make it, I mean, occlusion intensifies. And since it's a color ramp, we can just change the color. You can add like weathering. So let's make it like it was actually, or maybe some greenish, you know, like there's some vegetation growing in there. And you can also change the distance, of course, just to make it a bit more, more is just only affect a certain distance from the cavity itself. And in this case, it has the only local option enabled, which if I disable it, we don't notice anything. But the moment you add a new object, for example, to the scene, in this case, I added a plane, what we see here is with the without the option only local, it will be affected by the ammunition will be affected by other objects. But if you click on it, it will be disabled, which is awesome, because then you make it ignore other objects and in one mess with your ammunition occlusion itself, you can also invert it, which is a nice little effect here, because it's basically instead of doing concave, convex or the other way around. And you can control the samples as well, because this is an expensive note. It's the way it's expensive in the sense that it's not it takes some time to compute the same as the bevel shader. So be careful when you use it, don't abuse it, or even better, just set up all your all your configuration here, because it's really powerful. It allows you to not only do color round, but you can just mix. Well, it's a node, right? So you can add textures, you can mix all kinds of things. But in yeah, the end of the render, it's gonna make it a bit a bit more slower than the rest of the of the note. So recommend it to just bake it.  So that way you have it a bit more, a bit faster, that's recommended anyway. But if it's a one off render, you just leave it rendering. And yeah, it's pretty, pretty awesome. You also get the ambient occlusion here, you can see it, you can see the effect if you put it in like constant, you can clearly see when you move around the values, you can see the samples there is like eight samples. But if you put it to two samples, then you see x one, two, four, and then you can see all the samples. So if you put it a bit more, it's gonna be you can add the more samples you have is gonna be the more precise, of course. So in this case, it's 127. But as you can see, it's much more precise. So that is it for this update, just a quick and sweet update on the new node for a new node, it's an update on a new node on a new node, the node on for cycles in EV, EV also has a mean occlusion, but it will be all these values you will ignore for now. But maybe we can get this, I don't even know, we should ask Clemore. But exciting that cycles is getting some love, there is more news more updates on what have changed in cycles in this mini code quest at code that blender.org. So that is it for today. I'll see you again tomorrow. Bye


Hi everyone I'm Leah and I'm Sam and we're from the Amartis Trio and we're here today to introduce to you one of our favorite new features on the Handler Library app. It's the two-page view which allows you to see two pages at once just like in your traditional score. And to make this two-page view even better the Handler Library offer an amazing feature called stave spacing. Stave spacing allows you to customize the layout of the score to your preferences. You can adjust the margins or you can adjust the spacing between the staves allowing you to bring into view a couple of bars rest that will allow you to execute that next page turn. Go check out these amazing features in the Handler Library.


Now, Governor Babaji de Sao Oulu has disclosed that 1,449 infrastructure projects have been commissioned in 1,036 schools in legal state. Sao Oulu made this known as the closing ceremony and dinner of the 61st Independence Anniversary of President's National Inter-Basic School Debate Championship. It was held at ADME Bayer Auditorium in Lausa, Ikeja on Thursday. Blast of Africa's legal state correspondent, Lav Ikukui Edokun, has the details. Though even finals of the Arno National Debate competition saw four states competing for the first and second runners-up, Quara and Cassina states competed for the first and second positions, while Imol and Lagos states competed for the third and fourth positions. The first runner-up spoke for and against introduction of single treasury accounts. The second runner-up spoke for and against sporting activities for girls at early stage of their education. At the end of the competition, Quara state emerged winner. Cassina, Lagos and Imol states were awarded with the second, third and fourth positions respectively. It has been a great pleasure to participate in this kind of competition because it requires a lot of skills and even though we do not, even though we took the second place, still we have tried. It is said that champions are people who can recover when they fall. So I believe that with time we are going to improve and come out to the better position. Governor Babaji de Sao Oulu was represented by the Commissioner for Education, Mrs. Folashadi Ade Fisayo. He told the audience how much progress has been recorded in the educational sector since he assumed office. The administration has delivered over one thousand four hundred and forty nine schools with a structural project. In most recently, at the provision of hostel facilities and block of classrooms at the State Model College, Obokutan, Okoribu, and the construction of a new junior secondary school, Eleanor. The trophy is not all there is for Kwera State as a winner. They will also represent Nigeria at the next international competition. I'm Lagos. Love you. Kuku Uyiduku. For Plus TV, Africa.


Hello everyone. Welcome to this course, namely NumPy for Data Science. Data Science is one of the hottest fields of the year 2020 and this field is expected to grow exponentially in the coming years. If you want to become a data scientist, it is very important that you are very well aware of the language used in this field, namely Python and the library is used, which comes integrated with the Python language. So moving on, there are many, many libraries in Python that are used in this field, such as matplotlib, tensorflow, numpy, pandas. If you want to become a successful data scientist, it is very important that you have a good knowledge of how to use these libraries so that you can play well with the data. Because right now, data is the king. If you know how to use the data, you can very well turn the tide. So we would be learning about NumPy library in this course. Now about me, my name is Suraj and I would be your course instructor. I am a Mernstag web developer, open source contributor. I also write tech blogs at hash node and dev. So if you want, you can have a look at them. Apart from that, I am also machine learning enthusiast and I have a knowledge of algorithms, tools and libraries used in Python programming language. So the question rises, what exactly is data science? A data scientist's job is to convert raw data into a valuable one using different tools, algorithms and libraries. And everyone knows how to extract the right data that is valuable and useful for a company's business. This can shoot the business of the company 10 x times. Hence, this field is one of the most demanded fields. If you look 10 years back, this field was not much in talks, but right now it is in talks. The reason being we have data. We have years of data right now. And all you need is the skill to extract the valuable information which can be used for the growth of a company or a business. Moving on, what exactly is NumPy? NumPy is a Python library. But what is the use of this library? So this library is basically used for scientific computing. This library contains powerful multidimensional array objects. Now it is important to know what exactly is an array. In simple words, array is a data structure that stores or contains group of elements. And this package gives you powerful multidimensional array objects, which can be used for various tasks. Now those tasks would include mathematical operations, manipulations, sorting, various other operations. It even gives you the liberty of using linear algebra functions and Fourier transformations. The list goes on. So you can understand how useful this library is. Now the tools required to use this library, there are two tools that you can use for using this NumPy library. The first being Google collab online tool. This is the link. Don't worry about the links. I will be providing these links in the course resources page. Okay, so you can right now just follow me. You can follow this link. And as you can see, we have reached the collab page. And now you can open a workspace or we call it here as notebook. You can name your notebook as practice and open your new notebook. As you can see, you have opened your notebook. And here you can run all the codes which I would be explaining throughout the course. And you can very well executed here. For example, I type this command, this symbol means run the cell. If you click on the symbol, it will start executing this part of code. This is an online web based Python notebook that you have accessed. Okay, now to add a code, you can click on this button and you can add another piece of code. And so on. You can run every part of the cell by clicking on this button.  There are various options that you can discover over here. You can have a look of all of them and very well use the online tool if you wish to. Otherwise, we can even learn how to use the offline tool to run Python programs in which we would be using the NumPy package. Moving on. The second tool being Jupyter notebook. Now this is an offline tool. You need to download this notebook from the link that I would be sharing over here. And you need to install this notebook. And once you have installed this notebook, you can run the Python programs commands and use the NumPy package over there and follow the course. Don't worry, I would be providing you with a link. And as you can see, I have opened the web page. You can download this package. Click on the download button. And you can choose whether you want Windows or macOS and download this installer. Now I have already downloaded this and you can check over here and click here and install this setup. Click on next. I agree. Just me next. And you can choose your directory and move on. It may take some time to install this package. But once you have installed it, you can move on. I've already installed this package on my PC. You can very well install it and jump to the course. I hope you have successfully installed the package and now we would be jumping directly into the course. I would be covering everything related to NumPy. I would be explaining everything from the grass root level. So see you in the next module. Welcome to this module. I hope you could install Anaconda easily and played around the software. Let's jump into one of the components that Anaconda software provides us namely Jupyter notebook. We would be using this tool to run our Python programs, which would be having NumPy library. As you can see, we have opened Jupyter notebook. We can now create a new notebook and run our Python programs over here with Jupyter notebook running. Now we can create a new Python notebook and run our programs in it. Click on the new button, choose Python 3 notebook. As you can see, this setup is very similar to the ones which we saw on the Google collab page. You can use either Jupyter notebook Google collab throughout this course. You'll be getting the same output. You don't have to worry about it. Now moving on, we would be starting with the very basics. As you know, NumPy is a Python library, which provides us multi-dimensional array objects. And with the help of these array objects, you can perform various mathematical operations. They may be logical, or it may be related to sorting or shape manipulation or etc. So now let's first import the NumPy package. Before using the NumPy library, we must first import it to our code, isn't it? Because if you do not import it, how will we use it? So to import this package, you need to write a simple one line command, namely import numpy as nb. You can rename this variable. You can name it anyway, you can name it as NumPy package or anything. But for simplicity, we usually use np. Now to run this code, you can either click on run. The moment you run it, you can see that the library is imported. Or you can use shift plus enter on your keyboard. Now, as you know, array is a simple data structure which contains objects. We'll first create a simple array and then convert it to NumPy array. Since you know NumPy provides a multi-dimensional array object, we can convert our arrays to a NumPy array and perform all the computations we need. Or instead, we can create our own NumPy array in the beginning and perform the computations. So first we'll create a simple array and we'll convert it to NumPy array in this module. So moving on, let me create a one-dimensional array, one-dimensional array. A two-dimensional array would be called as a matrix. You might be very well aware of that. Now, let me name my array as MyArray. And let me put some numbers, 12, 34, 43, 14, 51, 66. Now, if you want to print all the numbers that are present in this array, you can name the array My underscore array and press Shift Enter or the Run cell. I'll be pressing Shift Enter as it's easy. As you can see, we have printed the output. We have printed every number that was stored in this MyArray. Now, moving on, our main task in this module is to convert our simple array to a NumPy array. We can do that very easily using np.array and we will be putting the name of our array My underscore array. Check this. Since we imported the NumPy package as np, we are using the np package over here. If you give a different name to it, you'll be using a different name over here. Now, numpy.array means convert this array into a numpy array, and we are passing the array name. That is My underscore array. Now, let's run this cell. This array has been converted into a NumPy array. Now, see the difference. When I print MyArray, which is a simple array, our array of numbers that was stored in this array gets printed. But the moment it is converted to a NumPy array, you can see that there is a word added over here that is array, and then we get the entire list of numbers which were in our array. Now, you see this is an object. We have converted our simple array into a NumPy array. Similarly, this goes same for two dimensional array. Similarly, for two dimensional array. Let me name my two dimensional arrays My2DArray. It's easier to understand, isn't it? Now, let me fill in some elements in this, say 12, 34, and you can put in any numbers, 43, 14, and then say 51, whatever, 15, 66. Now, let me print this array My underscore 2D array. Now, our array has got printed over here. Now, I'll be converting this 2D array into a NumPy array. You very well know how to convert it. Let me show you once again NumPy array converting my 2D array. So you can see we have converted our 2D array that is a matrix into a NumPy array. So that's all in this module, we have seen through how to convert a simple array into a NumPy array. Now, in the next module, we will be discussing how to create a NumPy array, how to generate a NumPy array. In this one, we created a simple array and we converted it into a NumPy array. In the next one, we would be generating a NumPy array directly. So, see you in the next module. Welcome to this module. Now, here we will be discussing how to generate our NumPy arrays. Now, the first way of generating a NumPy array, say I want to generate a NumPy array, which is holding consecutive numbers. I will be using a range function. The function name is a range. I would be using this function to do that. First, let me write built-in methods to generate NumPy arrays. Now, since we are generating NumPy arrays directly, we would be using the NP keyword as we imported earlier. Now, NumPy array, a range. In this range function, I would be giving the lower limit and the upper limit of the range of values that I want to print. Say 0 to 10. Now, this function would be printing values from 0 to n minus 1, that is 9. It would be printing value from 0 to 9. If I consider the same function and say I put 0 to 20, it would be giving us the values from 0 to 19. I hope this part is clear and I hope you are following along with me. Now, for example, I want to print values. Now, for example, I want to print values that are not consecutive, but are having equal difference. In that case, I would be passing three parameters to this range function. That is, NP.arrange say 0 to 10 with a difference of 2. Every time the number increases. So, as you can see, we have printed a list of even numbers using the NumPy.arrange function providing three parameters. Basically, the first parameter is the start, the second parameter is the end and the third parameter is the step value. Now, we have discussed the first way of generating a NumPy array using a range function. The second way is using the line space function. This is the function line space. Now, the line space function prints a set of numbers that are equally spaced in an interval. Let us see NP.line space. Even this takes in three parameters for example, 0 to 10 and the third parameter would be the total numbers you want to print in this given interval. Those numbers would be equally spaced. For example, say I want to print 10 numbers. I will be running this code. Now, you can see there are 10 numbers over here. All of them are equally spaced. When we use this function, you can see after 0, it skips two values, goes to 2, then again it jumps to 4, then it jumps to 6. But in this case, it is generating 10 values in the third parameter. Here, the third parameter is used as a step value. But here, the third parameter is the total number of numbers in this interval. I hope you are not confused. Moving on, the third way of generating a NumPy array is NP.Zeros. Now, what this function would do is, this would generate an array of zeros. Now, it takes one or two parameters. When it takes one parameter, it would generate a 1D array. When it takes two parameters, it would generate a 2D array. For example, I put 8. This would be producing an array which would be having 8 numbers and all of them are zeros. Small error. Oh, there's a spelling mistake. Run this. As you can see, we have generated an array which is having 8 zeros. Similarly, it's complement that is NP.Once. This would generate an array which contains only once. And the array would obviously be a NumPy array. Running this, as you can see, we have generated an array which is consisting of 8 ones. Similarly, if I want to generate a 2D array of zeros, that is NP.Zeros, I would pass in the dimension of the array. That is, for example, I want a 3 cross 4 array which would be having 3 rows and 4 columns. And running this cell, you can see I have generated a 3 cross 4 2D array or we can say it has a matrix. Similarly, it applies for, similarly, it applies for the case of NP.Once. Now, moving on, say I want to generate an identity matrix. What is an identity matrix? Identity matrix is a matrix where all the diagonal elements are 1 and rest of the element are 0. I'll be using NP.I function, NP.I function. And the parameter that NP.I function would take is the total number of diagonal elements. Suppose I want 5 diagonal elements, then I'll put in 5 as the parameter and I'll run this cell. As you can see, 1, 2, 3, 4, 5. There are 5 ones in the diagonal of this identity matrix used to generate identity matrix. Now, going on, the next function is random function. With this function, you can generate random list of numbers. Now, to generate a random array using the random function, we'll type NP.random.rand. And here we would pass the dimension of the matrix. For example, I want a 4 cross 5 matrix. As you can see, it gives me a 4 cross 5 dimension matrix. You can even generate a 1D array with this. I have considered an example where I generated 2D array or namely a matrix. Suppose I want a 1D array, 1D array of random numbers. Then I'll pass only 1 parameter to generate a 2D array. I'll pass 2 parameters. So, I hope this is clear. Now, another way of generating an array or a matrix using the numpy package is using the random function. Now, this function returns normalized values. That is, NP.random.rand. And suppose I want an array which is having 4 numbers, it would be generating an array which is consisting of normalized values. For those who don't know what exactly normalization is, in simple words, a normal distribution is a distribution where the mean is 0 and the standard deviation is 1. Now, these numbers are part of standard normal distribution graph. Standard normal distribution graph is a bell-shaped curve. It's a bell-shaped curve. Now, the specialty of this graph is it allows us to make comparisons across infinitely many normal distributions that can possibly exist. A normal distribution has a mean of 0 and a standard deviation of 1. So, these values are actually the values that are generated from that bell-shaped graph. It gives out normalized values. Now, moving on, similarly, you can generate a 2D matrix using the random function. Now, if you want to generate a random integer function, then simple, we'll be using a randint function. NP.random.randint function. And now, for example, I want to generate 10 numbers from a range of 1 to 20. 1 to 20, I want to generate 10 numbers. I've given 3 parameters as you can see. Now, with this function, we would be getting 10 numbers from the given interval. Since it's a random function, if you run it, these values would change. Suppose I run it again, you can see the values are changing. Similar is the case with this. The values would be changing every time you run this cell. That is what random function does. Now, rand gives you values from 0 to 1.  And all those values are random. They would be changing every time you run the cell. With this, we have completed this module. And in the next module, I would be discussing different methods that are used in NumPy arrays. Remember, in the first module, we discussed how to convert a normal array into a NumPy array. In the second module, we discussed how to generate a NumPy array directly. In the third module, we are going to discuss the different methods that we can use in the NumPy array. So, I hope this module is clear. And see you in the next module. Hello, everyone. Welcome to this module. In this module, we would be discussing the different methods associated with NumPy arrays, as well as the different array operations and mathematical functions that can be performed on a NumPy array. So, moving on, let us consider a NumPy array. And I would be filling that array with different integers or in other words, random integers. And I would be storing it in a variable named array. Let us see that. Let me consider 20 random integer values from 0 to 100. And let me run this cell and check. So, yeah, in this array, we are storing 20 random integer values that vary between the given intervals 0 to 100. Now, the first method that we are going to talk about is shape. Now, the shape method gives the dimension of the array. If you consider a 3 cross 2 matrix, then the shape of the 3 cross 2 matrix would be 3 comma 2. Similarly, for a 4 cross 1 matrix, it would be 4 comma 1. It would give you the dimension of the matrix for array. So, to find the shape of this array, we'll use the shape function. And you can see this is the shape of the given array. Now, for example, I want to change the dimension of this array. Or in other words, I want to reshape it. I want to change the dimension, then I would use the reshape function. For example, array reshape. And now I would be putting in the dimensions in which I want to reshape the given array. Now, the important point to note over here is, if there are, for example, if you consider a 1D array and there are 20 elements, then you can reshape that into a 4 cross 5 matrix or a 5 cross 4 matrix or a 10 cross 2 matrix or a 2 cross 10. Basically, the product of the dimension should be equal to the number of elements present in the matrix. Now, say if I want to reshape this array in 4 cross 5 matrix, then you can see I have converted this 1D array into a 4 cross 5 matrix. And obviously, this is a numpy 2D array. Similarly, if I try to reshape it in 10 comma 2 of dimension 10 comma 2, then you can see I can reshape it in this dimension. But now, for example, I want to reshape it in say 11 comma 3, then you can see this wouldn't be possible. You cannot reshape an array of size 20 into the shape 11 comma 3. Even the product of 11 and 3 would be 33, which wouldn't be equal to 20. Now, moving on, if you want to transpose this array, then you can simply add dot t function. For example, array, say I reshape this array in 4 comma 5 of dimension 4 comma 5 and I want to transpose this. I will simply add dot t. t stands for transpose of the matrix. So, when I run this cell, you can see the entire array has been transposed. Now, let me delete this, say, cut it, cut it. You can see the difference 4 comma 5 matrix and the transposed 4 comma 5 matrix. You can see what is the difference. Now, moving on to different array operations or mathematical functions that you can perform in your numpy array. Consider an array and say it stores a limit in the range 1 to 10. Let me run this cell. So, I forgot to put in a range 1 to 10. So, you can see that this is the array using the arrange function. And suppose my first function would be multiplication or namely the method. If I want to multiply each and every element of the array from itself and simply multiply the array with itself. In other words, this would give us the second power of every element. So, you can see 1 square, 1, 2 square, 4, 3 square, 9. Similarly, if I multiply it again, you see it would give you the cube of all the elements that were present in the numpy array. Now, similarly, you can divide, add or subtract from the array. Say array minus 4. Now, moving on, we can similarly divide or add and so on. Now, if you want to rise the element to a power, to a given power, for example, 4th power or 5th power, then you have to use two star symbols. For example, array double star 4th. This would raise each and every element present in the array to its 4th power. So, you can see each and every element has been raised to the 4th power. Hello, everyone. Welcome to the new module. In this module, we would be discussing some more functions that are associated with numpy. I hope you have been enjoying the course all along and solving the quizzes that I have given and learning out of it. So, moving on, let me create a new array. For example, array equal to numpy.arrange and giving it a range from 1 to 10. Running the cell, let me print the array and now the array has been printed. Now, let me consider a case where I have to find the square root of all the numbers that are present in the array. In that case, I would be using the square root function that is given by the numpy library. So, to find the square root, I will be using np.sqrt where sqrt stands for square root and I will pass array as the parameter array and I will print this. So, now you can see in the result, we have got the square root value of each and every number that was present in the array. 3 square equals 9 and similarly, 1 square equals 1. So, moving on to the next function, the next function is the max function. Now, we have this array which has numbers from 1 to 9. If I want to find the maximum number that is present in the array, now, it is obvious that in this case, the maximum number would be 9. But if say I had a huge array which has got multiple numbers, in that case, if I want to find the maximum value of a number, I would be using the max function and that would be written as np.max and again, this would be taking one parameter that would be the array that I have created. And let me run this cell. The maximum value is 9. If I consider an array having random integers that is array equal to np.random.randint and if I am specifying the range from say 1 to 100 with 30 random integers running this cell, I am running and printing the array. So, I have got a set of random integers, 30 random integers from the given range. If I want to find the maximum number from this, I will use np.max and pass array as the parameter. And now, you can see 97 is the maximum number that is present in this array having random integers. So, moving on. If we can find maximum number in an array, isn't it obvious that there would be a minimum function? So, I will be using np.min and I will pass array as the parameter and I will run this. So, the minimum value is 4. Our next function would be the rmax function. When I use the max function, it returns me the value of the maximum element present in the array. If I want to find the index of the maximum number that is present in the array, then I would be using rmax function. So, np.rmax and I will pass array as the parameter. And you can see the index of the maximum number, index of the maximum number is 4. Fourth index. So, if you have a look at the array, this is 0, first, second, third and fourth index. So, our maximum number is present in the fourth index. If I want to find the index of the minimum number, in that case I will be using rmin np.rmin and I will pass array as the parameter and I will run this, the first one that is 0 and first index. I hope this part is clear and we would be discussing some more functions. So, now the functions that would be discussing would be more oriented to mathematics. For example, finding sine or log or cos of a given number. So, moving on, we will first discuss about the log function. Now, consider I want to find the log value of each and every element that is present in my array. Okay, for that I would be simply using log function that is np.log and I will pass array as the parameter and I will run this. Now, you can see this would be giving me the log value of each and every number that is present in the array over here. Similarly, if I want to find the sine value of each and every number that is present in our numpy array, I will simply use the sine function that is np.sine and I will pass array as the parameter and I will run this. So, as you can see, I have got the sine value of each and every number that was present in the array. Similarly, you have got cos function, tan function. Okay, like np.cos and I will pass array. You get the cos value. If I put tan, you get the tan value. So, you can see that we can find the trigometric ratios of each and every number using numpy. Moving on, let me consider a 2D matrix now say array equal to np.random. I will fill in random normalized values in this two dimensional matrix. So, I will be putting a random n where n stands for normalization and let me say, let me make a 3 cross 4 matrix and I will print this. So, this is my matrix. Well, I will rename it as matrix. So, we have a 3 cross 4 matrix that is filled with values that are normalized. Now, if I want to round off all the elements that are present in this matrix to say a second decimal place up to two decimals or if I want to round this off up to three decimals, in that case, I can simply use round function. So, what I mean is np.round function and my first parameter would be the array or the matrix that I have created that is matrix and the second parameter would be the decimals up to which I want to round each and every number that is present in the matrix or array. I will be putting decimals equal to say I want to round this up to three decimal places. I will put three as the value and I will run this. So, you can see I have rounded the values that were present in this array up to three decimal places. So, now finally, if I want to find the data type of the matrix or one dimensional array, in that case, I would be using d-type function. Say, if I want to find the data type of this matrix, I will write matrix dot d-type. This will give me the data type of the entire matrix and I will run this function. So, it is float 64 which means I have got decimal values over here and decimal values are called float values in programming. So, I hope this part is clear and if you have any doubt, you can re-watch the entire video and practice and you can solve the questions that would be given as an assignment to you and it's okay to make mistakes because even when I was a beginner, I made a lot of mistakes and if you make any mistakes, learn from them, implement it and keep revising. Okay, until then, see you in the next module. Hello everyone, welcome to this module. Here we would be discussing indexing and comparison of NumPy arrays. So, starting on, let me consider an array which would contain elements from the range 1 to 10 that is np.arrange from 1 to 10 and let me run this cell. Now, as you can see, our array stores elements from 1 to 10 inclusive of 1 and exclusive of 10. Okay, now, suppose I want to show the element at fourth index of this NumPy array. In that case, I would write the fourth index. I would use the square brackets and put in four as my index number and this would show me this would show me the element present in the fourth index. Okay, you see, element in the fourth index is 5, 0, 1, 2, 3, 4. Fourth index element is 5. Moving on, if I want to show elements present in different indexes. Okay, in that case, I will be putting multiple index values. So, array, double brackets and I will be putting index values. For example, I want to see the element that is present in 0 index, fifth index and eighth index. I will be running this cell and you can see it returns me the value of numbers that are present in the respective indexes. Note that when I am putting in multiple indexes, then I am using two square brackets. Okay, be careful regarding that. Now, for example, I want to show elements from a range of indexes. Okay, then you need to use array. Suppose from 0 to fifth index, I want the values from 0 to fifth index present in the array. Then I will use this format and I will run this cell. It prints out all the integers that are present from 0 to fifth index. Okay, now moving on. Now see, I want to replace the values present in the indexes. Okay, in that case, say I want to replace the value present in the second index with four. Okay, and I run this cell and now I print the array. What would happen? I have replaced value present in the second index. Initially, what was the value present in the second index? 0, 1, 2, 3. The value was three. I have replaced that value with four. Okay, I hope this part is clear. Now, for example, I want to replace values from a range of indexes. Okay, in that case, similar to what we discussed over here, I would be using the same format here, that is array. Say from three to seven, I want to replace. In this case, I had print out the values that were present in the index. Now I would be replacing the element that are present in a range of indexes from here. Okay, in that case, suppose I want to replace all those elements with, say, this number and I run this cell and I print it. Now you can see I have replaced the following indexes with the numbers that I had in. Consider a two-dimensional matrix. That is, say I give it a name as array 2D and fill it with a range of elements starting from, say, 1 to 20. I want elements from 1 to 20. So I would be giving the following range 1 to 21. Since 21 would not be included. And let me reshape this into four cross five matrix. Okay, a range. And let me print the array 2D. So this is my following array that I have printed. Now, for example, when I considered the case of a one-dimensional array and if I had to show the elements from a given indexes, I use the following format. That is, I gave the index range from zero column to the index I wanted to show. If I consider that case, if I want to show elements in a 2D array, then I can use a similar format. But here, the case would be slightly different. It would take in two values, one for the row and other for the column. Say I take array 2D and I want to show all elements. I want to select all elements from the row. And I want to select the fourth and second column from the given 2D array. Then in that case, I would be giving 2,4 as an input. Okay, this indicates I have selected everything from the row. And this specifically indicates the row. And this specifically indicates the column number. Okay, and let me run this cell. It gives me the second and fourth column, including all the rows. This is first row, second row, third row, fourth row. And second column, fourth column. Zero, one, two, three, four. Second column and fourth column. And say, if I put in the row value as 1,2 and run this cell, comma 2, and I run this cell. So, you can see it would give me the specific value at the index specified over here. Now moving on to selection of different values in array and obviously copying the number array. So, first let me talk about selection. Let me consider a 1D array, a 1D number array, NP.arrange, which contains elements from 1 to 10, which means it will be having nine elements. Let me run this cell. So, this is my one-dimensional array. Now consider, if I want all the values that are less than 5, that means array less than 5. If I run this, it returns a Boolean value. When I put in this argument, okay. Now, if I want specified number instead of a Boolean value, then I will substitute the same thing in the array. I would be substituting this part into the index of the array. That is array of array less than 5, I would be substituting this value in the index part and I will run this cell. Now this would give me a list of numbers that are less than 5. If I put in less than or equal to 5, then it would return me 1,2,3,4,5. As you can see, now the last part of this model that I would be discussing is the copy function. Now say I replace the number presented at the third index with the following number, okay. And I run this cell and I print the array. You can see the number gets replaced. But the problem here is, suppose I wanted the original array, okay. Though I have replaced that specific element, I want array in my original form, in the earlier or previous form. Now it is not possible over here. So I can use the copy function to copy the elements of my predefined array. Now if I redefine this array, say array equal to np.arrange with 1,10 and I print the array. Now if I want to make any changes in the array, then it is always good to have a copy of the current version of the array. And then if you want to make any changes, you can make any changes in the given array, okay. But your original form would be preserved. For that, you can use the copy function. Say array underscore copy, underscore copy equal to array dot copy function, okay. And if I run this cell, if I run array underscore copy, you can see array underscore copy would be storing my original array. Now if I want to make any changes in this array, suppose the third index, I change it to this number. And I print the array. You can see this is the change array. Since I've already saved a copied version in the array underscore copy, I can successfully hold, I can have an earlier version of my array. So with this, we have completed this module. And in the next module, I would be discussing about the input, output operations. Until then, keep practicing. And if you have any doubts, you can rewatch the video. And let me see you in the next module. Hello, everyone. Welcome to the final module of this course, where I would be discussing about input and output operations in NumPy. And starting on, first, let me change my directory to the desktop. I'll be using cd command desktop. This would change my directory, working directory, into the desktop directory. Okay, and I'll run this cell. Now my directory has been changed to the desktop one. Okay. Now what exactly is input and output operations? For example, I have an array, and I want to save that array into a format in my local PC. Okay, in the hard disk. Okay, so there are different formats, I can save my array in binary format, or I can save my array in a text format, or I can save my array in a zip format. Okay, there are different formats to save your NumPy array. Similarly, once you have saved that array, you can even load that array. You can load that array, which was earlier saved in text form or binary form. Okay, so I will be discussing a few saving formats and leave the rest to your own discovery. Okay, so moving on, let me make an array that I have to save array to save. And let me give an arrange, arrange of 10. Okay, let me run this array. You can see I have stored numbers from one to nine. Now moving on, suppose I want to save this array in binary format. Okay, I want to save the array in binary format. In that case, I would be simply using np.save, np.save. Okay, and it will take two arguments. The first argument would be the file name that I have saved. And the second argument would be the array that I have saved. So let me rename the file as array underscore saved binary. Since it's saved in binary format, I'm considering that. Okay, and which array do I want to save the array to save? And now let me run this. Now, if you check my desktop, okay, the array has been saved in binary format. Point to be noted here is the extension, the extension of the file would be .npy. Okay, now say I want to run this with notepad, for example. So you can see binary file, it would be opening my binary file of this format. Okay, now the reason why this file is saved in desktop is I changed my directory to desktop earlier. Okay, otherwise the file would have been saved in the previous directory where I was working. Okay, so moving on, if I want to load that binary file that I have saved just now, I'll be using np.load function np.load. Okay, and I will be in I will be passing the first parameter as the file with which that was saved. The file name, okay, array underscore saved underscore binary. Okay, and the most important part over here is you need to put the extension as well, which was .npy and I run the command. I can see I'm loading the array that was saved just now over here. Okay, now the second way to save your array is as a text file, you can save your array as a text file. Okay, for example, I name the array as array to save. And let me initialize the array as np.range and with having 10 numbers. Now I want to save the array in a text file. Okay, for that case, I will be using np.save text, save txt. Here txt stands for text. And the first argument would be the name of the file, which would be saved in the text format, which let me name it as array underscore saved in say text format. And I would be including the file extension as well. And the second argument would be the name of the array that was array to save that I re initialized just here. Okay, and if you want, you can even place a delimiter. Okay, as a comma. Now, what exactly is a delimiter? Okay, delimiter is is used to separate is used to separate the values. Okay, and let me save this. Okay. And now I have saved that file if I go to my desktop and check over here, which is array underscore saved txt. And if I open this, you can see my array has been stored in the text format. Okay, so similar way, if I want to save my file in a zip format, I will be using dot save z function. Okay, there are different formats in which you can save your array. And if you want, you can reload it and use it when required. Okay, I'll leave that part to your own research. And and with this, we have completed our final module. I hope whatever we discuss over here, it has been clear. And if not, you can rewatch the whole video. I'll be sharing this to my notebook. Until then, I would suggest you to keep practicing, keep discovering and don't let the curiosity in you. Bye. Okay. So hello, everyone. First of all, I would like to congratulate each and every learner of this course. I hope you found this course very interesting. And you enjoyed your time learning this course. Learning NumPy is your first step on your own journey of becoming a data scientist. There are many libraries that come with Python, such as Matplotlib, TensorFlow, Pandas, Keras. So don't stop here. Libraries like TensorFlow, which is used in making machine learning models, Scikit-learn, which is used for data analysis, OpenCV, which is used in the field of computer vision. If you enjoyed learning this library, then as you move on, you're going to enjoy double or triple times of this. So don't let the curiosity in you die. There may be times where you might feel that you should just leave this and just go back to your old ways. But please, do not do that. That is the time when you put in your maximum effort, and it may not take a month or two to become a data scientist. It takes years to become an experienced and a professional data scientist. But that hunger of learning more would surely reduce your time reaching your goal. And please feel free to share your progress with me.  And if you have any suggestions or any constructive comments related to this course, or if you want, or if you want courses that are related to the field of data science, then you can surely reach me from the resources section that I have provided in this course. And lastly, I would say, don't stop here, keep on learning, and remember, it's very normal to commit mistakes. Because if you do not commit any mistakes, then there wouldn't be any learning. So be proud if you make any mistakes and also rectify them, learn from them and try not to commit those again with such mentality, motive and perception, you will surely move ahead and become a successful data scientist. Until then, take care and keep moving forward.


All right, recording now. Okay. Thanks. Thanks. All right. Take two. This is the hyper ledger technical steering committee meeting Everybody is welcome to attend and participate in this meeting so long as you abide by the antitrust policy that you'll see in the agenda and our community code of conduct that Requires everybody to be respectful of the other contributions from the other participants here Uh, we've got a manageable agenda today. There's a few announcements we want to get through and then two or three More meaty discussion topics the primary one is aries And then we'll we'll see about getting to a grid that was posted a little bit late So I want to make sure that people had a chance to read it before we open that for questions Uh, we'll probably hit, uh, Salona's topic before that All right. So, uh, first things first on the announcements. Congratulations to the hyper ledger transact proposal That has passed email votes Over the the intervening days between our last meeting I think that the sponsors on that are ready to be Patient as there's a number of things going through hyper ledger staff that People are loaded on to Things that happen when a project proposal comes through So I think there's plenty of patience there to work with Uh, as we get that new project underway One of the things that I am finding very helpful, uh, as I've come back into the swing of things after having some time off is the wiki Uh, I think going through the aries proposal in particular for me and seeing that we do inline comments on that and and seeing a whole lot more structure and Rigor to the the meetings that we have across all of the the working groups and projects and seeing Consistently posted agendas and minutes. I think it's working out really well for the community So I wanted to take a moment and thank the team that put that wiki together Which is at least Salona and rye. I believe Tracy before she moved on to other work and Dave And I'm sure there's other people that that contributed that that uh, I don't want to leave anybody's name out But wanted to say thank you to everybody who who made this tool A good help for the the projects Thanks to the team Great, and I think Salona said she's going to take us through a few more features that not everybody might be widely familiar with A little later in the meeting Uh Next up there. We've got the reminder that the cicd committee is is ongoing. We're trying to move as rapidly As possible there. We'll still get into a good outcome for all the projects So please contact Dave huesby if you uh Need to be in that committee and you are not yet aware of it And then Salona if you want to take the next two announcements Yes, thank you. So um contributors summit update, uh We tried a lot of different things to try to figure out how to do japan. We looked at surrounding areas We looked at a lot of different aspects And i'm just not able to find anything within budget um Or within location So, um, we need to start Regrouping in regards to what that's going to look like. I've got several other proposals um One of the things that we've been doing is doing committees on different things where in the end Our team kind of has to get the work done instead of a work group And so if anyone would like to do a contributor summit committee with me where you help me Find things like locations and uh stuff of that nature and make suggestions on the layout and things of that Things along those lines. Please let me know so that I can gear you into some weekly meetings that we have I'm planning for that um We do have some Interesting things that are looking like in uh, september for either Vancouver or russia or bermuda So, um, it's it's out there and we're i want to get a plan sooner rather than later. Um Also looks like that will be doing a If you've just joined the call, please make sure that you are muted So your background noise isn't disrupting the meeting. Thank you Um, and uh, we are also going to be doing a boot camp in brazil Uh, karen's on the phone call. She's talked to a bunch of different Um participants in brazil that are interested. We've thrown up an informal wiki space and we're planning out our session leaders now If you have any contacts in brazil Um, especially for any of the project leads so that we can Make sure that all the projects are represented Please contact me so I can put you on The the major so the brazil project is available. It's just not linked to so I can share the link with you And then I do have a private page On the session leaders because we are putting in like contact info and phone numbers and emails and things of that nature. So i'm not going to make that public but it's you know Public private I guess and that anyone who wants to get on there and help plan and add contacts and do stuff like that Um, I can share that with you if you've got some people down there That um, you want to make sure it get incorporated early in the process and that's looking like the end of june So was there anything that you wanted to say karen? Hi, everyone. Um, no, I just wanted to reiterate selona's call for anyone who's interested in helping out Being a mentor or being a session leader Yeah, one One of the things that we're doing that's a little different here is we know that not all the projects can send people down To brazil for this food boot camp But you can mentor people and I believe silas and I we talked about that Um, where you can kind of basically train somebody up to lead a session And we're even talking about training some people up who are you know, um Multi-lingual and can speak, you know, both english and Portuguese so that they can actually lead some sessions in portuguese as well Just like we did with china and chinese so That'd be great. And can you remind us the full picture of boot camps for the year? Are we doing two of these three of these? We're going to try to do three um, but uh three three that hyper ledger pays for But we're actually doing a lot more than that. So we've already done the one in hong kong and then there was the indy one That was the bc gov and then we are doing, um Two at def con and def con china by Which is which we are not actually running, but we're working with them It's a guy that's super experienced. He's been doing villages at def con for like 15 years So I have no questions about his capabilities of running this and then, um We're also doing one in denver during denver startup week And then we're going to be doing one other that we will Be supporting more of the budget for and i'm not exactly sure when that's going to be yet But it'll be in the fall Okay, and so for the ones that hyper ledger isn't funding, uh, it's still taking some staff time to do some facilitation Yes, it's not it's not nearly as the same amount of heavy lift as the other ones are in that we don't Go for complete representation of projects And so a lot of them end up being specialized like the ones at def con are probably going to be more, um versa in focus um, and then the one at Denver is going to be more indian focus But there's a few other projects who also said that they wanted to participate So it's less it's more about the ones that hyper ledger does is focused on getting content together that the others can use so, um, it becomes less of a heavy lift because it's not about having All the maintainers attending and all the maintainers having to make sure they get their content ready and things of that nature It's about reusing the content that's created at the other ones Okay, great. Um heart that might be a good fyi for the next, uh, ursa meeting is to Give the heads up on the def con one Sure, I assume dave huesby is in the loop on this Yep him give that, uh He can dave can you update that at the next ursa meeting? Yeah Awesome. Thanks a lot great All right. Thanks, alona All right, we're going to move on into the areas proposal discussion now I hope everybody has had an opportunity to take a look at the proposal that is posted to the wiki There's a checklist on the bottom and I know this is uh new for everybody that checklist is meant to indicate that you have had A chance to read through the proposal. It does not indicate that you are voting in favor of it It's just intended as a tracking mechanism. So we know that we're ready to have a discussion So i'm hoping that it's been read through by everybody at this point And uh, it's just uh that people haven't necessarily marked That they have read it Thank you for the gesturing on the screen uh As I mentioned a little bit ago, I think it's great that we can we can actually Highlight text in there and then you can do inline comments just like what we would have done through google docs Uh, and I think that's a good way to get a lot of questions answered offline So i'm gonna turn things over to um to nathan at this point to Refresh everybody on on the proposal and walk through any open comments so, uh The inline comments have worked very well. Um, we tried to get back to those as quickly as we could as they came in Most of them were just clarification questions around specific language in the document I think a couple of the points of clarification to talk to with everyone is that uh, yes It is kind of a client tool suite or a End of but also in some ways a framework as well because it provides Bunch of library code that's consumed then in other Other systems so for example this project wouldn't be producing an ios or an android app But it is producing all the framework code necessary to build such an app Um by including that framework code inside of whatever ios or android app you were using for your mobile and uh It is where we are also targeting more than one chain than just indy Here at iow this week There's been a lot of discussion about the overlap on how messaging between wallets or different agents work One to another and a lot of consensus on the approach that's been taken and incubated already at indy that's moving into this area's project And that's one of the main reasons why this is moving into its own project and not staying inside of indy is to make sure that that project and that Maintainership is friendly and neutral regarding the different blockchains that we'll be supporting and that framework will be usable for those different products that are happening all over the marketplace right now and if you look in the The sponsors section of the document you'll notice that there's folks from all over the community that have signed up to sponsor We have obviously troi that works already with the fabric team that's looking to do some interesting things with the project but also several different folks who are building mobile apps for wallets or enterprise apps for enterprise data management and data sharing And all of the folks that are listed here are actually already active in the project Most of them already have code commits or are active in the calls and contributions to the architecture documentation and elsewhere so It's a pretty good group that's already working on this And uh, I hope that if you don't have a question in line that hasn't been addressed to your satisfaction You can ask go ahead and ask that now this is chris so um It's not a wallet It's got a lot of attributes of a wallet It's really I mean the way that it's described and then again, maybe i'm reading this wrong, but the way that it's described it sounds almost like part of one's stk and um I don't understand how you're going to do that if unless you're going to have flavors of this and just about every language you can conceive well, uh It's actually written in rust and it's compilable down to sea And yeah, i'm getting a little bit tired of that because i mean come on. That's just not It really isn't all that realistic So, uh, we've been shipping code on top of this inside of indy for some time so You know, I know that that's a different approach than some of the other platforms have taken But we certainly had certainly had a lot of success with it with what we've been doing so far And what's the breath of language? What's not realistic? You currently what's the breath of language the part you currently have in your clients? or indy um, is it just rostar or So the main code is all in rust and that makes it so that we can expose the functionality in all the different languages We have really strong wrappers for dot net java ios android uh python and no j s and then there are also wrappers and php ruby And uh, I think there's two or go is Those are the I would call say tier two wrappers. They're they're not updated as frequently as the others But they are active and people are using production systems So so you have demonstrated that you're capable of putting Yeah, multiple language wrappers are every language this on the list here is already Has maintainers within the incubated code in indy Okay, because i'm i in general I completely agree with chris that just because it's rust does not mean that it's easy to put something Something else around it in order to build Yeah, and I don't know that I have any objection to that opinion one way or the other um other than This is what we're doing in practice now and it seems to be working so I have an objection about it, but I'll take it offline with you guys Um Yeah, I think the next level up of abstraction from that is the The apis that you would have to call through in order to do the the resolving with different types of blockchains So you'd want to be able to Call into the fabric api In ethereum api sawtooth api and so forth So could you talk about the ability to do that with with this future project versus Uh the commitments to build that out Yeah, um, and this is actually the area where we expect a lot of new development to occur within this project It's one of the main scope changes versus We have the peer dead resolver, um, which uses the local wallet for doing all of its key management And that code um has Forced us to do a refactor on how we we get things off of the verifiable data registry for the identity key the key management and And so forth um to where it has an abstraction layer that can then have other systems plug in um The first systems that I expect will be targeting here are the resolver that the various one folks want to contribute Their interface is more of a rest-based interface. So it should be a very simple implementation um, and then there are there's one for the ethr did method um that uses ipfs for resolving uh the did document And then there are a couple others that are will be based off of the code That's already been implemented over at the centralized identity foundation Where we're going to be popping the code out of the docker container based system that they're using over there And moving it down into the rust code. Um, so that it can be part of the native platform Inside the system. So we know we have Code that we can use as a reference to add this the code base for the resolvers that already exist over there at diff I have a tentative commitment from marcus sabadella who maintains the universal resolver over there to help Be the maintainer over this interface here inside of the aries project And so we're hoping that moving the ones that are inside of the diff code base over to be natively supported inside of this project we straightforward process and then I'm all I'm very hopeful that With troyes help and some of the help of the folks that are involved in how fabric has been doing its identity support that we can Add some did identity model work For transactions that occur inside of fabric I don't know what the timeline for those will be obviously how many of those we support and how quickly we support them will depend a lot on what sort of Investment we get from those Parts of the community. Obviously if you look at the diagram we call out that we expect the resolvers themselves to live inside of the projects Um, and then the resolver interface is what lives in the areas layer So resolvers that appear client to client will live inside of areas as code base And then the resolvers that are for other chains I expect they'll either live inside of the the project itself india is a good example here or that they'll live inside of of like a hyperlager labs project or Summer repository for just doing decentralized identifier type identity use case. It's on top of that chain and and so should we interpret that meaning then that the the kind of Schemas that that code is meant to go do um Gets and sets on is it should be sort of centered around the identifier types of schemas That's correct So the idea is that it follows the decentralized identifier standard in terms of how it handles its It's key management and then for verifiable credentials exchange that we're following the pattern that's set up in the w3c verifiable credential spec So nobody should be thinking of this then as sort of a general purpose Clients to go out and talk to all blockchains for all matters sort of the the raison d'etre for for this project is to provide um, a lot of standardized ways to go out and get identity styles of schemas from a variety of different blockchains So that is the main focus though if you go look at the the call out of scope Our expectation is that you'll have a simple client that just can sign and submit transactions to a blockchain So you could use it for that type of an application We also expect that we would then from that base class build the verifiable data registries interface That will handle dids and did documents and Things like schema definitions credential definitions the things we use for verifiable credentials And then the third type of interface we expect to have as a payment interface That will allow for transferring things like tokenized assets as part of verifiable credentials exchange Though that would also be usable in a standalone way to say I just want to transfer some bitcoin from address a to address b So as long as you had the base transaction resolver And then a payment resolver you could transfer something like a crypto asset using this project But like you said dan our our main focus is this idea of verifiable credentials or verified data exchange between edge edge clients Hi, this is Silas. Um, I have a sort of understanding related question. Is this Entirely meant to be driven by I know it typically An indie wallet is working as a user agent some of the scope with the peer-to-peer messaging and possibly the Transfer between different blockchains. It sounds like it could sort of be used machine to machine or used As a library in a node or something So we think of the the client layer is it could represent a person an organization or a thing So we don't make a clear distinction on whether this Wallet is a which type of entity this wallet is representing So it is accurate to say that it can be used for that The other thing that it's clear to us that is in the long term This is not the short-term goal of the project But in the long term you end up having more than one Machine that represents a particular user organization For example, I might have my phone and my laptop and my cloud server And as I have to do synchronization between the wallet contents between those different Compute units I end up building that essentially an ordering and a gossip protocol And some form of consensus to say which changes I should accept in which I should reject So you do end up with some of the base building blocks for doing kind of node to node types of things for the indie project We do expect that in the the long run We may consider rebuilding the the node code on top of the agent code And we can start considering the the ledger state as aesthetically the shared wallet amongst all validators and then You end up with Agents that are used to build ledgers as opposed to ledgers that are there to support agents But we're not really sure how that will play out. That's just a thought of what could be possible once this gets to a full You know active stable release Okay, interesting The other question I had was about the I think you said that with some interest in Implementing web or send open id connect, but you don't have enough maintainer interest or something. What would it take to Yeah, so since I wrote that um, we've had a lot of discussions with a company out of Iowa called id ramp Um, and they actually have gone ahead and built um, sso integration using verifiable credentials Um, so I expect that they're going to be upgrading their proof of concept to use the agent framework that's written in C sharp and Contributing back some of the code that allows that interfacing to work Um to the project so We're seeing actually some good activity on that now I haven't signed them up as a maintainer or gotten them to sponsor on this project list yet But they're really excited to to participate Thanks Just like to finish rounding out some of the thoughts about the cross project or at least cross blockchain Applications so for the the kind of code that would reside in another Infrastructure another blockchain project. What kind of code would that be? What would that look like? Um, so it would need to be uh an implementation that sits behind the interface Um, the expectation is we're going to do um, kind of a shared object or a library load call In order to invoke that interface So whatever you did to implement the resolver interface would have to compile down to something that was uh sea callable There's lots of different ways to do that Um It the ideal way to do it is if you wrote it in rust Then we could call it in natively and we could help preserve some of the type trait guarantees across that boundary but There are certainly more options than that depending on what Your blockchain likes to do for that sort of thing So somebody would then grab some library code from aries some library code from Say fabric Uh, and then have a little mini integration project to create a client that's able to make use of the aries functionality In interacting with a fabric That's right So I think this is an interesting project for sure. I I you know I still struggle with the With the more general question about how we manage the different projects within hyper ledger It's clear that historically we've been Creating this project with hope that they will be used by different projects and kind of you know, wishful thinking type of thing and I still wonder or question whether this is the right approach and You know, my question finally is Does this really need to be you know externalized from indy or should it not in a way prove itself first and You know live within indy The everything can be done. So it's isolated from the rest of indy and be Exposed to the projects integration with other projects can happen and then if it really ends up working with different projects We can say okay now this thing is much bigger than what indy does with it It is worth externalizing it and I mean for that matter We have at least one case where it is already like this We have integration of the burrow evm with sawtooth and fabric and we haven't externalized The burrow evm out of burrow for that matter Maybe we will at some point. I don't know and so You know and please don't take it personally. It's not specific to this project Just it just raised that same question again And you know, yeah Well, and I think this is an important question. We always need to ask with a new project We've had in the past where we've had projects that really struggled to maintain sufficient Maintainership and sufficient integration into the projects that they have dependencies with For that very reason In particular for the areas project We've gotten to the point where the areas calls have grown to have more than 30 or 40 regular participants in their calls Which would right now are called the indy agent working group call And so the management of this code base relative to the management of the indy code base has become rather difficult Because there's enough going on on both sides of the fence that the coordination between the two has become Become harder and that's one of the reasons why we Thought that adding this new project proposal would be very helpful And the other we're hearing from folks who want to do the collaborative contributions of other code is They have this impression that indy is only about the ledger Um, and they have a hard time distinguishing whether they're trying to pick up the project to build their own blockchain Or if they're trying to pick up the project to do Um this type of key management and information exchange And we think this clarifies the scope of what the end users are trying to accomplish In a way that helps us attract more of those sorts of contributors And also remove some of the barriers from the people who said well, I want to contribute some code But I wasn't sure if this was the right place So I mean if I just heard you correctly and maybe I misheard you You just said that it's getting difficult to manage coordination between Essentially the agent and the rest of indy Making a separate project is going to improve that um what I mean by that is uh There's a different set of features that have to land in order on the the What would be the areas side of the project than what there is on the indy side of the project The type of work that's going on inside of indy is related to the consensus algorithm And the type work that's coming on here is mostly related to what we call message families support And peer-to-peer protocols in terms of jason specifications to those different types of protocols and so the the The quantity of information being discussed in terms of standards track inside of this part of the project Is squeezing out a lot of the discussions that need to happen in terms of the ledger and what's going on for The you know like batch ordering integrity and things like that on the ledger side And so splitting them off into their own meetings allow them to both have sufficient time discussed the the active development work Okay, but to be fair, I mean you don't need to have two different projects to have different meetings I mean the fabric community has different projects going on and they don't all meet at the same time Independently of what happens with this project, you could decide to have two calls a week or whatever it takes to No objection there where I think we're up to about six or seven Across the whole indy community. Okay, that makes sense actually I do think that you know one point you raised which I think is that it is the you know The communication aspect. I think the you know externalizing a project like this Definitely, you know strong send a strong message That you know about the scope and the dependence that is actually at least mentors perceived, you know That you don't have when things are still tied together at least in name if nothing else So that's definitely to me the biggest argument to externalize some of these projects the the downside is what we've seen before when you know We we kind of take a bet on how we things Should play out and they don't always do and You know and then we still end up with things like we have Where we have project that on paper is supposed to be independent, but in practice or not Which I think is not ideal I agree with that sentiment and that's one of the things um we'll work really closely with the maintainers of both on to recruit and keep the the commitment of areas to be cross ledger And like I say, it's one of the discussions. We've had a lot of here at IAW this week in mountain view, california Is there several other verifiable data registries and applications that need this type of Library code, but that are not either a traditional blockchain the way we would think of them a hyper ledger Or are not something that would participate directly in the in the the node side or the verifiable data registry on that side of the system Thanks I don't think this would need to block moving forward with with the proposal written as is but Maybe give some additional thought to whether the repo structuring for this would Facilitate blockchain code from from the various blockchains that people are interested in supporting So not that we necessarily need to obligate this project team with implementing those integration points But I think that if There's a way to house all that code together It seems like you'd get better uptake than than having Maybe a two or three Point integration where somebody has to pull in aries code Themselves and sawtooth code themselves and then whatever sort of client they're they're making I like that feedback especially for some of the projects that are not doing You know apache to license dco approvals and things like that in the repositories giving them a home inside of this project Could help them with that process The thing that we wanted to call out in the project proposal is that projects don't have to do that The architecture doesn't require it So we want to make sure that we're friendly to the other options as well But I think that's a a good point so You know, I'm I'm I'm still smarting from the whole composer sort of situation where you know, I think we went in with I think the best of intentions and nothing happened when it comes to Seating it on other projects and there was some expectation that um, you know that the composer team was going to do that and I'm I'm still struggling. I mean, you know, I see Troy for fabric and I don't know if we have anybody from burrow on here. I don't know that I see anybody Yeah And then, uh, you know from roja I don't know if I see anybody. I don't see any familiar names. Anyway um, I I'm I'm still struggling with You know the point that that our know is on which is, you know Why not just do this inside indy and then if it starts getting used maybe that's the time to start considering that it's a separate thing Um, so we are kind of already at that point We've been doing this in indy for some time and the folks that you're likely to see that are doing other blockchain based resolvers Are not the familiar faces that you're used to inside of hyper ledger Um, there are folks that right now feel like they can't contribute directly to indy because they would be materially supporting the indy ledger Um, but they're now to the point in their development where they need to pick up the decentralized management parts of the infrastructure and the agent to agent messaging pieces in the infrastructure And there's broad consensus on the way that those protocols are being built And there's a lot of agreement around how those rfcs have come together inside of the indy hyper repository But because they see that indy hyper repository is centered on the indy ledger in particular They've hesitated to participate in that process and By moving it over into the aries project and having a different moniker and branding for it Those folks seem to be much more willing to participate in the conversation here at hyper ledger and join in what's going on What's what's the current state in? In integration with ethereum would that be for resolvers? Or or how would that work? Yeah, that would be for resolvers. Um, the uport built a resolver that was specifically for the uport tidd method And they've since done a lot of work to rewrite that as the ethr method on top of Of ethereum and it This is one of the reasons why resolvers can be rather complicated because you can't store the entirety of the did document on side inside of that those some of those ledgers instead they use A hash that's on the ledger for the proof of existence And then point to some external storage and then they have to resolve or reference the hashes between those systems in order to construct A did document that they can return to you that you can then verify or validate And so the expectation is that those resolvers will be able to fit underneath this interface With both bitcoin and ethereum you usually have to run a full node in order to do the full validation There's some work at trying to figure out how to make a a thin node do similar validation with less trust guarantees. Um, so It's unclear which of those Implementations of the resolver would will fit over on this side But I expect that we'll be able to write a thin client resolver that would go into this code base Okay, it sounds like questions are winding down TSC members do we feel like we're ready for moving into a voting phase here? Or does anyone feel like They have outstanding questions that that still need resolution Um, I will say just as a as a general comment this discussion has been extremely helpful in understanding why this needs to be a separate and distinct project We don't really have a way of capturing that in the proposals Although it's becoming more and more critical to the discussions we're having So we might want to think about how to capture that ahead of time Um in the future as well that being said i'm real comfortable with this And nathan and I have talked several times about how to incorporate some of this work into our so I I I'm comfortable So mic you want me to add a question to the forum? Um We can talk about this awful. We can talk about this offline But I but the the last three proposals that have come up the critical part of the discussion has been um Something about how it relates to and why it is a distinct project So I I definitely think this should be a part of the forum. Yes So ping me on chat and uh, yeah, I will in there Okay All right, we're not hearing any uh further questions or objections into moving into a vote Why don't we go ahead and take a roll vote here? Salona, do you want to run through the roster? Sure. Um, first of all, did we want to do the whole Someone ask for a vote and someone second? I propose we vote on I propose we vote on the proposal All right, I'm trying to get to my little checklist and it's not letting me get to my little checklist Um, so you want me to go through each member instead of us doing the eyes and a's and abstaining Is that what you're saying Dan? Yeah, we can do it either way. It doesn't really matter. Uh, if There's some lack of clarity on on doing all in favor and oppose Uh, you do it individually. I think just clearer to do it individually Since it is a conference call I don't have Sorry, I don't have my my rye here So, um The bottom of the proposal. Yeah, that that's where I'm at. That's why I scroll down too. So our note Yes, with the with the hesitation that I already expressed and by the way, I would add a comment if I may interject You know, I think I would feel more comfortable going forward with this kind of projects if we were a bit more Agile in recognizing when things don't work out and need to be taken back So maybe that's good for thoughts some Uh, uh, are you are you? Yeah Yeah, I heard you the proposal. Um, but I I think maybe Maybe we can make the decision later Like maybe next week because I think there's a lot of discussions on this proposal and Uh, still still some open questions Yeah, I I didn't I'm very reluctant. So this is Silas to to sort delay it and part of that is I only only got a chance to myself to look at this I've been away so so earlier today I'm almost sure that I I would like to support the proposal. I really wouldn't mind another week to understand some of the bits and uh, more fully I'm happy to retract my vote in support of delaying by a week I don't think I'll change my position, but Well, and that's my question. I mean if it's about understanding the technical Details of the project. I'm certainly happy to work with folks on that. Um, procedurally here, um I'm really eager to get to where we have a project that has some approval Um, in particular, we're here at IAW right now We have the last day of the conference ahead of us and an approval would really help me in terms of recruiting more maintainers I'm here at IAW and so excuse me and we're actually doing some did work. Um, so Yeah All right Um, that's good enough for me then Uh, all right. So I lost track of was it by while were you requesting that we We defer this for a week until your comments are resolved Yeah, I I think so Okay, well feel free to speak up a little uh earlier next time when we ask for that comment specifically um Okay, um Ben Has been on I don't know. I'm looking right now. I don't see him as being on So he's not here chris I have um similar reservations that I expressed earlier, but I'll I'll say yes I I I tend to agree though that I think um, you know, we need to maybe do a little bit of a Think about you know, just how we manage these And just what is the criteria for becoming the top level? I'm You know again I We we've got a ton of stuff that's still an incubation and And we keep, you know, churning out new incubations and I'm just not sure we're really sustaining the everything correctly. So So that that kind of sounded like yes, but no It no it sounds like a yes, but I really think that we ought to have a really You know, I I think we should have a good discussion about Just how we intend to manage all these projects and how we intend in particular To start getting a little bit more synergy across these projects Because we keep coming forward with oh, we'll do this and it'll land on top of this that and the other thing And it never happens. So just to be concrete about this. Solona. Can we add something into the backlog for future topics that is specifically a topic about how we manage the strategy for Retiring incubation projects that are inactive and how we manage sub projects And I don't know if this is I don't know if Chris you want to take ownership of this, but I will help you if you want Preparations for the discussion or if you just want to have it as an open discussion Yeah, I I have an email that I want to send about about this too. So Okay, that's great. I think we've we've had some Backlog item on that and and we do need to have some prepared agenda item. So it's not a free forum discussion at that time However, we are in the middle of a vote. So I'm just saying the reluctant yes I mean, I like the idea the project don't get me wrong But I also, you know, would like to have a better clue on How we we deal with things when they don't work out the way they Okay. So the way that we're going to run through the rest of the vote, uh, everybody's had an opportunity to comment and Second opportunities and third opportunities to make comments So I'd like to just run through the the rest of the roster here and get everybody's yay or nay votes And then we can proceed into other agenda items You know, you're juggling a few things there. Solona. You ready to move forward with Yeah, so I'm trying to um take some notes So it sounds like, uh We're at you dan Yep, uh, yes in favor of the proposal Uh heart Yes Um kelly Yes Uh mark Yay Rick Yes Let me guess, Nathan And silas Yes, but no just yes Sorry, you made me snort. All right. Thanks guys. Uh, I got the votes it passes All right, congratulations to the aries proposal Thank you everybody and, uh Um, I look forward to the discussion on how we manage life cycle of projects I think that's it. That's a very important point Yes Um, so do we want to do wikis or let's let's get great in there or or I guess grid did post late. Um Yeah, I'd rather go ahead and give you Uh, the remaining time here to talk about the wiki and the processes Okay, cool. So, um with some of the wiki it was brought to my attention that there were some changes that not everyone was aware of That we had gone and implemented. Um, we went through and took full Advantage of all the new features that exist in confluence one thing for y'all to note about doing this confluence aspect is that Because we are open source Basically all the bells and whistles that exist on confluence. We can normally get for free and so, um Always ask if you sit there and know about something that's new and interesting that you would like to have And my team can sit there and we can see about getting it implemented or not And so one of the ones that I've been highlighting a lot to people is the fact that we do have You know the collaborative editing which can handle up to 12 people on a page at the same time Which is basically kind of like the google docs where everyone can be in there editing all at the same time And you'll sit there and you'll see it if you click on edit and up here You'll watch a bunch of different names starting to Pop up and you can all get in there together and edit and so it ends up being really useful The other thing that I'd really like to highlight For you know, all of the nerds on here is this button right here Be careful. It's the in-source editor But if you go in and look at it, you can sit there and get down to What's basically html javascript? and you know Program away for anything that you need to get in there and fix or Do something special or things of those of that nature Sometimes I notice the code will get a little wonky and I can just go in there and do it by hand and get it all straightened out Now I can't see my button So that's pretty darn handy and a power user move The other thing is is on these editors you have macros And on these macros, there's a lot of really good interesting things in there Probably the biggest one for a lot of you guys is the fact that we do have the glyphi diagrams Which means y'all can edit diagrams together Which you really don't actually have that functionality in any of the google documentation So I highly recommend going in there and Trying that out You can also do basomic wireframes for your project leads Where if you do want to sit there and have wireframes some of the stuff out You can also do that collaboratively Where you can insert it and then other people can help edit it Which I think is a huge win that you also don't get in a google doc Um, and then there's a bunch of other macros that you've probably actually noticed on some of the Spaces that I've created for some of the projects and some of the work groups and sigs In that you can do things like there is the stuff for doing the notes There's the checkbox lists that we're using for if someone's read anything Um Very important. There's the I like cheese macro Um, there are the children's display, which is basically automatically shows The children pages that exist under different pieces. So there's a lot of stuff that's there Um, so I think you'll find that there's actually more stuff that you can do here than you can get done in google Um, it's just a little bit obtuse sometimes to find it It's not you it's it um And then what I've done for all the projects is I've done something that's called spaces Which basically means you have a fair amount of autonomy On these spaces where you don't have to worry about naming collisions anymore You don't have to worry about any of that and if you need I can create special permissions for those spaces too Um, so that like for example right now the san paolo bootcamp space is not viewable to people who don't have lf id's Because we haven't published it yet And so it's not very findable and we've done that on purpose to help with you know, those events getting launched We've created individuals projects, of course for all of the All independent spaces for all of the projects So you can really get in there and do a lot of stuff and in fact right now I'm signing a contract with a contractor to do github to jira to confluence integrations And the very first one we're going to be working on this fabric Because they've already got their stuff ready and so they can more easily publish All of their planning documentations within confluence to the greater public So the people can sit there and see all the different diverse projects that they're working on um And then just in regards to the tsc itself Um under projects, we've now got the project life cycle And the proposals and on the proposals You have the ability to create the form and that's the form that i'm talking about changing and adding those extra fields to and you often Tell me all about that and easily suggest it We have the project updates And so once again, it has the form to fill out and as you can see the people that have already been doing this one This one links to the old ones But that's how you can get to you know grids new Um project update and normally we explain that in an email We also make it We've also done similar things for the special interest groups so that they can propose new groups And the working groups Can also um go through that proposal process And then they also have the tsc updates forms as well So i've tried to make everything a little bit easier for everyone so that they can actually see Where everything is when it's coming what the things are on the forms and get everything done more easily Once um the new groups and some of these other things happen It triggers some stuff and it triggers some stuff from my team and the marketing team and these are the um checklists And so what we've done and this is also some of the readiness stuff that Dave huesby is working on so that we can actually go through and start doing Checklists for when things get triggered like so for example with aries um If you notice on this checklist, it's things that my team has to do lf it has to do and marketing npr and so we go through A different we go through this process to Make sure that everything gets taken care of when something is launched and nothing's forgotten And it's public and everyone can track it and see what everyone's doing. So Yeah, we've worked really hard on trying to codify all of this. We do the same thing for a new working group special interest groups major releases Things of that nature so you can kind of get a little bit into Um, what it is that we're all working on Are there any questions? I would certainly like to hear more about the possibilities with project integration At the next call if if we have time in the next agenda, which I think we probably will We are at the end of the time here. So we'll not be able to dig into that further Yeah, it depends on how fast I get with the contractor because I'm hoping that the contractor will already done So we're actually drinking our own kool-aid Or we're eating our own dog food or drinking our own wine. I don't know whichever one you want With the the contractor themselves is actually going to be putting she's going to be putting all of her code in github She's going to be setting up a jara project She's going to have a page on the wiki and she's going to show how that all connects together Both in the code and it as an example working example And we're actually going to be paying her that way where every single time she completes the jara user story That's the statement of work And so that way we can do this very granularly and other projects as they did do the different specifications can easily Reuse what she's done. All right. Thank you. Salona. We're out of time today. Thanks for everybody's participation and continue to Continue any other further discussion in chat and on the mail lists. Thank you Thank you. Thanks all