Thank you very much, Prof. Kara, for those wonderful words. I'm here to deliver a keynote on institutional issues and governance issues as they affect the water sector in developing countries, especially in Africa. Now, the situation on the water supply, I think you all know, 2.1 billion people lack access, so it's a very, very big problem. And therefore, the topic we are covering today is very, very pertinent. Now, looking at the issues that the water sector, especially in developing countries, face, you can see there are so many and I want to go through them. One of the things we face, especially in developing countries, is unfocused and disoriented regulatory system. We in Africa, especially, we have this habit of copying systems from developed countries and just planting them in our countries. We don't understand them and we end up getting into problems. The institutional arrangements that don't shield utilities from political capture are also an issue and, of course, this is caused by the mere fact that water is a problem. So, every politician who is elected once water for the next election and if you don't have the correct institutional arrangements, then that becomes a problem already. Then the other issue is the issue of institutional arrangements that don't allow payment of incentives. I know in national water, as I would show you in Uganda, we pay incentives, but by working through, working with other utilities in Africa, we found out that it is very, very difficult to pay incentives even when they are being embedded in contracts. When they are earned, paying them becomes a real issue. Then we also have the issue of lack of operational autonomy. Operational autonomy and even where you have it, the issue of oversight. Utilities don't have strong M&E departments, strong M&E units to oversee operations in those branches where they have given autonomy. The other issue is overlying on donors. Most of the African utilities, they don't think, they don't open their eyes to anything else, they want money from donors, donors, donors. It is the song of the day. Without looking at the internal resources, can't you leverage investment resources from being efficient, from making money, using your money, and then the donor money comes to augment what you are doing. The other issue is duplication of roles. We have so many institutions in Africa doing the same thing and that is the wastage of resources, as you know. Now, coming back to Uganda, there are a few facts about Uganda as a country. It has about 42 million. It is the 34th ranked country in terms of population and its growth rate is 3.2. I think it is, it excels in producing people. 3.2% growth rate, its GDP is about 5% and the water coverage is not so bad, but it is also not good. The urban water coverage is about 71%. The rural water coverage within the distance of 1,000 meters is about 70. On this urban water coverage, 70% of it is under national water and sewage cooperation. About national water, the company which I am the CEO of, it is a public-owned utility. I understand my people that we are publicly owned but we operate like a private sector. Meaning that we look at customers, we look at costs, we look at everything that a private company does. Our mandate as a company is to provide water and sewage services to all the urban centers of Uganda where the minister has given us authority to do so. And our vision is to be the leading customer service-oriented utility in the world. That gives us momentum, it gives us impetus to try to do well. And we have a mission which has issues of quality, issues of customer care, issues of sustainability. Before I go into some of the other issues, I want to show you how the performance of national water has been evolving over time. As you can see, the number of towns where the cooperation operates now has grown from 24, about 7 years ago to now about 240 towns. So the jurisdiction, the operational jurisdiction of national water has dramatically increased. And I think this was the subject of this presentation. The coverage is about 78% having gone up from 75%. And most importantly is the issue of operating surplus. Very few institutions on the water institution on the African continent make positive operating margins. You can see 1998 national water was operating a deficit operation about 7 years ago, it was about 30 and now we are talking of 112 Uganda shirings. Which means that the capacity of the organization to finance its own investment has drastically gone up. Now coming to the challenges of expanding water and sanitation services to secondary towns, remember I've told you we've moved in the last five years from 24 towns to 240 towns. The challenges we have faced as the cooperation is the issue of non-cost recovery tariff. When you go to these towns, you need money for investments. So if you have a tariff which is not cost recovery, then you have an issue of investment, of how you finance your investment. The low economies of scale, the towns we have gone to, some of them have low economies of scale and therefore they are more costly to operate. The pressure to increase coverage, sometimes with no matching financial budgets. Politicians want us to go into those towns and deliver services without money. So that has been one of the challenges. In adequate staff capacities, because when you expand drastically, then you have an issue of staff to run those towns. So we have had to catch up, to adapt and train our staff very fast. Both the technicians and the managers to catch up with these challenges. Institutional conflicts. When you are given these towns, the institution where these towns are coming from has a problem with you. So we have had to also jag around with some of those challenges. One of the lessons we have learnt is that with a very good institutional arrangement, national water has a very good legislative arrangement that shields it from political pressure. The board is deciding on and therefore the minister cannot come. The minister cannot rebeg for something to be done, but he cannot direct because the law does not allow him. If the minister asks me, can you do this? I will tell him put it in writing and he will not do it. He will not do it. So the best thing he can do is to discuss with me, is to discuss with the board in order for things to be done. So you don't have the right institutional arrangement, you are in problems. The minister cannot say increase the tariff. It is my board who must see that the tariffs can be increased and proposed to him. So he cannot direct that reduce, that increase like that. The other lesson we have learnt is collective leadership. You want to run these institutions very well, efficiently. Please involve everybody. Involve the board, involve your managers, involve the staff so that you are all owning up whatever you are doing. The other one is individual and team accountability. I have gone to some countries where it is very very difficult to hold anybody accountable because they have a strong union.   So as you can clearly see, these people are signing individual performance agreements and the agreements have targets, they have obligations, they have incentives so that when you perform, you get paid more. If you don't perform, you get penalized. Just here, we are accounting to the public. We are telling the public what we are you supposed to achieve, what have you achieved and you give them opportunity to also ask you. And in most cases when we are doing this, the minister is also sitting there. So if you have not been doing your work very well, you are put to shame for not doing your work well. Then the momentum to serve everyone, you must have that momentum. Some of us in national water we believe the best return of the shareholders money is actually the social return. How many people have you served and this is the brief of the board, this is the brief of management. We don't believe in people carrying water on the heads because the head is for thinking. The head was never created to carry water. So this brief is with so many people in national water and so everybody every day wants to see additional connections done for the people of Uganda. Another lesson we have learnt is to balance between centralized and decentralized systems. It is not one or the other. It is how do you balance? And normally the factors which determine especially on sewage is the topography. If you don't have a topography that allows sewage to flow by gravity from one point to another, then you may have to go for decentralized systems. The other one is the economies of scale. Does it help you to have one head office and several branches? The other one of course is the other support services you are using, how they are distributed. So at the end of the day we have learnt that it is good to balance between centralized and decentralized systems. Maintaining the economic principles you must charge the right tariffs. In Uganda we have the indexation formula. Our tariff is continuously regulated according to the foreign exchange changes the inflation. If the power tariff increases our tariff is automatically adjusted so that it is protected against erosion. We are also very very careful with our costs. We keep our costs down and we also keep efficiency up so that we can leverage investments for more extensions. We are using technology, IT. You can see the technological things we have invented. We have invented our own building system. I have told our people please don't buy a building system from anywhere because those people who are selling you the building system are people like you. You cannot go and study and then when you come here you specialize in buying from people. You study, use your knowledge. Come and use your knowledge. So all these solutions the e-payment system was developed by us. So our people pay through mobile money they pay through e-payments through the banks. We have also created an e-inventory system e-protoamment system e-payroll system and so on and so forth. The only thing we do when we are proliferating this technology we make sure that technology is not a solution. New technology is not a solution in itself. It must be, it must come at the right time. It must come evolutionary, not revolutionary. You don't just come and jump in with the new technology because people must buy in the new technology. So we have been very very careful how we work on the mindset of our people to make sure that they buy this technology and they are able to work with this technology. The other issue is the role of smart staff engagement. You don't engage your people, you are just wasting time. There is no organization that is better than its people. For us that's very very important. So most of the time we are engaging. You can see here I was talking to staff encouraging them telling them how their careers are going to grow when the organization grows. The staff must know that when the organization gains they also gain and that can only be done through continuous engagement. The other issue is employee buying through incentive mechanism. We have one of the most complicated incentive formula. You can see it there. That formula is used to calculate incentives for staff every month. You perform, you can see it is a factor of the cash operating margin, working ratio, non-revenue water. We have Mr. Non-revenue Water here. Then we have the water sales. So these you achieve them, you get incentives. Any slight movement in these parameters, you get incentives. And these parameters are continuously changing. If we find that we are now doing very well in the working ratio we will drop it and introduce another one. Where we need to drive performance. The other one is putting emphasis on career growth. As I said, you cannot run an institution without showing the people that you care for their career growth. The people you see there are people who are graduating. Even those who didn't go to school. We have looked at how they can be trained, how they can be skilled so that they can repair these pipes with the knowledge, with the current knowledge. Not only the knowledge but the current knowledge. Then emphasizing external stakeholder engagement. We like working with external people, the politicians, the civil society, the religious people. It is very, very important for us to work with religious people because you go to church. If a religious person in Uganda people respect, they like churches, they are not like many places. They like churches. You find when people have finished praying, they allow you to talk, the people will absorb the message. They believe the message has been delivered by God. So it is very, very good to work with people, to work with churches, to work with mosques so that information can flow. I want to conclude by saying that do your little bit of good where you are. It's those little bits of good put together that overwhelm the world. You do little, in national order we have done little by little and we think we are moving. We are not yet there but we are moving. So I want to thank you very much for listening to me. I want to thank IWA for welcoming me to come and share with you these lessons and thank you very much once again for listening.


Anyway, let me just try it out side by side. No worries. Same? Yeah. So just put it under your chin somewhere. Yeah. It goes in your pocket. Yeah. Do you want to give it a try? Yeah. Can you guys hear me? Yeah. OK. Yeah. All right. And I just... OK. Everyone, let's welcome Ravi Shankar. Yeah. With the Thin Arbiter from Lesterfest. All right. Thank you guys. Yeah. So my name is Ravi Shankar. I'm a senior software engineer with Red Hat. I've been working with Lesterfest for about seven years, mostly on the replication component. But I've also worked on other areas of Lester, like the CLI, the Gluster Demon, and the POSIX translators. So anyway, so this talk is mainly about Thin Arbiter for Lesterfest replication. So the agenda for today is... I'll spend the first few minutes on the first three bullet points where I talk about what the Glusterfest architecture is and how it achieves replication using the automatic file replication or AFR translator. And then we will discuss how quorum logic is important in preventing split brains when you're writing two files from multiple clients. Once we have an idea of these three things, then we can actually go to the topic which is Thin Arbiter for Glusterfest replication. All right. So this is the architecture of Gluster. So on the right-hand side, you see many green boxes. They are all servers, server 1 to server n. Each of the servers host a Glusterfest process which is composed of many translators like it starts from the server and down with POSIX. So all of these servers are connected together to form a trusted storage pool and this is what the volume is compressed off. And on the right-hand side, you have the client which is basically accessing the volume via different mechanisms like Fuse or NFS, Ganesha or there's also a libgfapi binding where you can write your own application using those bindings to access the volume. So most of the logic in Glusterfest is done by translators. So each translator has a specific job. The replication translator sits here on the client side and it has many children. So depending on the replication factor, each client talks to the respective bricks and it does the replication. So the synchronous replication in Gluster is mainly client driven, meaning the client connects to all the bricks and the updates are sent synchronously to all the servers and we wait back for the responses from all the servers before sending back the response to the application. So it follows a strong consistency model unlike your application where the consistency is eventual. Here the moment you do the right because we propagate it to all the servers, you get the rights immediately on the disk and the rights follow a transaction model because you also have multiple clients accessing the same file and you need to have a transaction to prevent, you know, stale data or like partial rise going from one client to one brick and the other client to the other brick. The reads are served from one of the replicas and the slowest brick also dominates the right for performance because we are binding the rights to all the bricks. So there's also a feature of self-healing where when an update from a client does not go on all the bricks, the self-heal damage keeps track of what files need healed and when the brick comes back up, it automatically does the healing. So to that effect, you have CLI commands to monitor the status of the pending heels and you also have commands to resolve split-brains in case of replica 2. So I was telling you that the right follows the transaction model. So there are basically five steps for a right when a client does a right. The first is the lock. So lock is when the client takes the lock on all the participating replicas. You need to do this because there are multiple clients accessing the same file and while doing the right, you need a lock to prevent out-of-order rights. So once you get the lock, then you do something called the pre-op. It's basically a set-exactor call that's done over the wire. So you mark an exciter on the file saying, hey, I'm about to do the right. Let's mark something called a dirty bit. So then after that, you do the actual right operation and if the right is successful, you remove the dirty bit and then you clear the data bit and if the right transaction fails on some of the bricks, then the good bricks will actually mark another extended attribute on the bad bricks saying that there is something pending and so that when the brick comes back online, it can start healing. And then finally we do the unlock. So the reads are very simple. It's just basically serve the read from one of the good bricks. So AFR uses extended attributes to know which is good and which is bad brick. So reads all are always ensured that you always serve from the good brick. So which brick does the read get served from? That's configurable. You have various policies. So the default policy which is used is the hash of the GFID of the file. So that means that even though there are multiple clients, if they are accessing the same file, they will go to the same brick. But you can also load balance it using other strategies like mixing the hash of the GFID and the client PID. The client PID is unique to each client. So you can distribute the reads too. So the self-heal demon, I was telling you was the responsibility of the self-heal demon to ensure that the mist writes are actually healed on to the bricks when they come down, when they come up. So the self-heal demon runs on every node of the cluster and it heals both data, meridata and entries that were missed when one of the bricks were down. So there are two ways to do the heal. One is to crawl the entire file system.  So what AFR does is it maintains the list of failures in a special directory called Indices.GlusterFaceIndicesFolder. So whenever a write transaction fails on some of the bricks, the good bricks record these GFIDs inside this.GlusterFaceFolder and when the bricks come back up, the self-heal demon crawls this folder and it just gets the list of files that needs to be healed and then it does the heal. So the self-heal demon does the healing under the presence of locks because clients can also be writing to the same file when the healing is going on. So you will have to take locks from the client's exclusion from the client IO. So the traditional way of replicating had been earlier replica 2 but the problem as you guys might already know is that replica 2 is prone to split-brains. So there can be two types of split-brains. Split-brains in time and space. Split-brain in time is when the write from the same client succeeds on one brick and fails on the other and the next write succeeds on the opposite brick. Brick 1 success, brick 2 failure. Here the write on the brick 1 failed and brick 2 succeeded. So when the bricks, both bricks come back up the client doesn't know which is a good copy and you cannot resolve it. The other one is split-brain in space where clients can partially see the bricks. So there are two clients say client 1 and client 2. Each of them can see only one brick and you still allow the write because there is no concept of quorum in replica 2. So you can end up in a split-brain in that state also. So how do you avoid split-brains? You have to have a notion of quorum which means that you need to go at least for replica 3 or basically odd number of replicas. So the general thing is that for a 2n plus 1 replica you can at least you can at most tolerate failure of n nodes. So that means if you have a replica 3 you can tolerate failure of one node which is going down. So the thing to note here is that just because you have replica 3 nodes online you cannot say that you are always guaranteed to server read. So there is a problem that if the only good brick which had witnessed all the writes goes down then you still have to fail the I.O. So let's just look at that with a diagram. So here you have client which is trying to write to all the 3 bricks. The first write did not succeed on the third brick and the second write did not succeed on brick 2. So now we have brick 1 which has witnessed all the writes. So when the third write comes even though the client is connected to brick 2 and 3 we cannot allow the write because the only good brick which witnessed all the writes previously that is brick 1 is down. So that's one of the things in any replication system. So even if you have quantum number of bricks if the good bricks are down then you cannot still serve the needs. So you guys must have already used or known about arbiter feature also. So arbiter was also a type of replica 2 plus the third brick is used as arbiter where it stores only the name space. It doesn't store the contents of the file so they are all 0 byte files. So I was telling that AFR uses extended attributes to figure out which brick is good and which brick is bad right. So in case of replica 2 because there are only 2 copies you cannot store the X-haters you don't have 3 copies of the X-haters. So the arbiter kind of overcomes that problem by storing the file name so only the name space is captured and you store the X-haters on those respective files. So now since we have 3 copies of the metadata information we can prevent going up in a spibrin state. So this was the arbiter. So why did we go with the thin arbiter? So let's see what the thin arbiter is. So thin arbiter is essentially a replica 2 volume plus a lightweight thin arbiter process. So if you look at the normal arbiter it's actually a full blown process in the sense that there is one arbiter for every replicate sub volume and it stores all the files of that particular volume. But thin arbiter is not like that. It is actually lying outside the trusted storage pool which means that it's not a part of the cluster at all. So you can host this in a cloud environment somewhere where the management demon of cluster D is not running at all. So the node is not here but it's not running and it's not managed by cluster D. So if you look at the volume information you will still see that it is depicted as a 1 cross 2 which is a replica 2 volume but you will also see an extra line called it's a thin arbiter. So that's how you will identify that the volume is a thin arbiter volume. So thin arbiter can be the advantage of thin arbiter is that you can host multiple replica 2 volumes with the same thin arbiter node. So you have if you look at the diagram you see that there are different trusted storage pools. You have TSP 1, TSP 2 and they host different volumes. Some of them are thin arbiter volumes. Some of them are normal volumes and they all use the same thin arbiter which can be hosted separately in the cloud. So all the clients which are in the respective which belong which access the respective volumes also talk to the thin arbiter. So one caveat here is that we must use volume names which are unique across the different trusted storage pools. So the reason is because the thin arbiter has some id file which we will see in the next slide. So that uses the name of the volume to identify which replica belongs to. So if you have the same volume name across multiple trusted storage pools then the thin arbiter id file uniqueness is lost. So that's why as long as the volume names are unique you can use the same thin arbiter for multiple storage pools. So what exactly is the thin arbiter process? So it is essentially a lightweight brick process. So you have all the standard translators which you see in the glossary surface brick process like starting from protocol server and ending with the POSIX. But you also have one additional translator called the thin arbiter here which is sitting just above POSIX. So I was telling you that the thin arbiter contains only one file and that file is used for quorum to determine which brick is good and which brick is bad. So the only operations that come on the thin arbiter are first creating the id file which happens only once during the life cycle of a volume and then the actual set exciter calls which AFR uses to track which brick is good and bad. So any other op which comes on this has to be like barriered. So that's the job of the thin arbiter translator. So it allows only the create and the exciter op to go through anything else would be barriered. And the other thing is that the thin arbiter I was telling you that you can run thin arbiter process on a node which does not have GlusterD. So if you know GlusterD, GlusterD is a management daemon which is used for spawning all the brick processes, the cell field daemons and all that. So if you restart a node it is GlusterD which ensures that the brick process comes back up. So without GlusterD how does it actually work? So if you have mounted a Gluster volume you know the way the mount logic works is when you issue the command mount minus t blah blah blah the server name and the volume name. The client initially talks to GlusterD and gets the information about the wall file and then connects to each of the bricks using a particular port number. But when because thin arbiter node we are not hosting any GlusterD brick process. We are not hosting any GlusterD process. We need to hard code a port number. So we currently use 24007 because that's the port of the GlusterD. So because GlusterD is not running when you mount the volume the client will directly connect to this port. If you want to change it to some other port there are volume options available you can configure it using a different port. So let's look at how thin arbiter works for writes and reads. So let's assume that the application is writing something on file 1 and you have brick 1, brick 2 and thin arbiter and let's say the write failed on the second brick and succeeded on the first brick. So what AFR does is before sending back the application it marks on the first brick that there is some pending operation on the second brick. So it essentially marks that brick 2 is bad. So that information is marked both on the first brick and also on the thin arbiter. So after marking that it also stores in memory that which brick is good and which brick is bad. The reason why it does is because thin arbiter does not need to be in the 5 millisecond latency limit which is therefore very difficult to process. So in order to not contact thin arbiter for every file operation you try to maintain in memory the information about the bad brick. So the client says that in memory that brick 2 is bad and then it responds with success to the application. Now when the write 2 comes on the same file as long as the write succeeds on the previously known good copy it is a success to the application. So if you look at the diagram from here write 2 comes on file 1 and it succeeds on the second brick but I am sorry it succeeds on the first brick but fails on the second brick. So because we already know from the previous write that brick 1 is the good copy and brick 2 is bad we can return success to the application without actually contacting the thin arbiter. So that is how it is not actually participating in the IO path. So let us see what happens when a write comes and it fails on the opposite replica. So write 3 comes on the same file and this time it fails on the first brick but succeeds on the second brick. Now because we know that this can if you allow this as success we can end up in a speed brain state. So we do not return success and we actually fail the fob. So this is the essence of thin arbiter. So to summarize like how the write fails on both the data bricks then you can obviously say that the write fails. If the write fails on one brick and if it is already a known bad brick then you can return success to the application but if the write fails on the brick which is already good then you will have to fail the application. Alright so let us look at how reads work. So yeah so let us look at each case. So in the case when the client so when we have this state let us say that we already are in a state where the brick 1 is marking the brick 2 as bad. So brick 1 is good brick 2 is bad and the client is connected to both the bricks. In this case we do not have to query the thin arbiter because the FR excaters on both the bricks already tell us which brick is good and which brick is bad so you do not have to actually contact the thin arbiter to know whether your results that you interpret from the are valid or not. You can trust them and you can serve the read. The only problem or the only reason you need to contact thin arbiter is when before that let us go to the second case. So case 2 is when we have the client connected to the good brick and it is disconnected from the bad brick here. So if this good brick already blames the second one with an excatre then we can be sure that you do not have to contact the thin arbiter node because the excatre state is node and the excatre here already is blaming this guy so you can directly allow the reach to go through. But let us say the client is connected only to this brick which is bad and not the first one which is good. So if this guy does not blame anybody we cannot blindly state that you know I will serve the read from this because this does not contain any excatres sorry this does not contain any excatres you will have to query the thin arbiter. So that is the case where the client actually has to query the thin arbiter and if the thin arbiter does not blame the brick which is connected to then you can serve the read otherwise you will not be able to. So to summarize what we discussed in the previous slide if both the data bricks are up then you serve the read from a good copy both can be good. If one of them is down then you will have to query the brick which is down I am sorry which is up and if it is a brick which is down then you can surely serve it but otherwise you will have to contact the thin arbiter and get the information from the thin arbiter to see which is good and which is bad. Okay so the next two slides are a bit of an implementation detail yeah so I was telling you that the client maintains in memory which brick is good and which brick is bad right. So the cell field demand actually also heals the files when the bricks come up. So how does the client invalidate in memory information when the cell field demand heals the file. So for that it makes use of up calls. So the locks translator in Glusterface provides this notion of an up call for locks. So when there is a conflicting lock from another client the locks translator will send a notification to the one which is currently holding the lock and it is up to that client to you know release it so that the conflicting client can take the lock. So and there is also so locks translator also supports taking lock on the same file from the same client on multiple domains. So for example client one can take a lock on file one say from offset 0 to 10 on domain 1 it will be granted. If it is trying to get the lock on the same file using a different domain it will still be granted. So the locks translator has this distinction feature of domains wherein if the offset and the range of a lock on a given file is same but the domain is different you will allow the locks to go through. So AFR actually uses these two features to invalidate the in-memory information so we will see how that works. So when the first failure happens while writing from a client during the post-off phase AFR takes two locks one in the notify domain another one in the modify domain then it marks on the thin arbiter saying that this brick is good and this brick is bad after doing the marking it releases only one lock which is in the modify domain. So the notify domain lock still resides in the thin arbiter. So for every client that is connected to the thin arbiter you have a bunch of notify domain locks which are residing in the brick process. So how is that used is what we will see. So when the self-heal demon starts to heal the files in the volume it will attempt to take both the notify and the modify locks and because of the lock contention feature available in locks translator it will send an upcall notification back to the to the client. So if there are ongoing writes in the client it will complete the writes and then release the notify lock so then the self-heal demon can actually get the lock and it will proceed with healing the file. So the thing to note is that if IO fails during the heal the client will again mark on the bad brick saying that it basically invalidates in-memory information. So this is how locks translators upcall infrastructure and multiple domain locks are used for maintaining the in-memory information. So installation and usage is pretty simple. So on the thin arbiter node you will have to install the server RPMs and you will have to run a script to start the thin arbiter process. Once you have that done then you can develop and create normal volumes which are replica too and use the syntax call cluster volume create. I will show this in a demo. So if you are using it in a standalone mode you can use this method. If you are using containers and if you are using a provision for containers there is something called kadalu.io which is also provides support for theta arbiter recently you can try that out. So the things to do that are there is you don't we currently do not have a bad brick and remove brick CLI. So if you have used cluster volumes if you want to replace a brick or convert existing replica to or replica 3 to theta arbiter volumes it is currently not possible. So those are the things that we need to work on. So the reads also I was telling that so the writes have in-memory information on which brick is good and which brick is bad but the reads do not have that information. So every time it queries the thin arbiter to get the information. So that is why we need to work on to optimize the information about using the in-memory information about the bricks and you also have to fix bugs if you guys try it out and report bugs we will be happy to fix them. So I will just show you a demo now I have recorded it already I will just play it out. So we have I hope the font is visible so we have 4 VMs here like 1, 2, 3 and 4 Ravi 1 and Ravi 2 and Ravi 3 I am going to use for hosting the thin arbiter process and the 4th machine would be the client. So let's first start with installing the thin arbiter on VM 3. So you have to run the script call setup thin arbiter.sh and you have to run it with the minus s flag so it will basically ask you the brick path and you enter where you want the brick to be hosted you say brick ta and then the thin arbiter has been started so if you check whether the process is running you can see it and I was telling you that there is no cluster D on the thin arbiter node which means that the process management has to be done automatically by system D. So we have integrated this with system D so that even when the thin arbiter node gets rebooted or the process crashes it will automatically start it. So the unit file takes care of that so let's try to kill the process and see you can see that it is again spawned again with a different PID you don't really need cluster D on this node. So having started the thin arbiter let us try to create replica 2 volume using the first two VMs so I will just export some environment variables with the IP addresses of the VMs and then I am going to create a thin arbiter volume so the syntax is cluster volume create, wall name replica 2, thin arbiter 1 and then you give the list of bricks which form the data bricks of the volume and in the end you mention the thin arbiter. So VM3 is a thin arbiter here so we say VM3 Bricks Brick TA and that's it. So we will start the volume. So now let's see on the second node whether the bricks are up and running it is so now we are good to actually mount the volume and start doing IO on it. So we will go to the node 4 now. So before mounting the volume let me just show you the ID file so if you look at the thin arbiter it is currently empty there is nothing here so I was telling you that the ID file is created when you first mount the volume so if you go issue the mount command and then come back and check here there is this ID file which is created it is a 0 byte file and this ID file is used for capturing the good and bad brick information for all the files in this replica sub volume so if you do write to a file you see that the file contents are getting replicated to both the bricks of both data bricks so let's kill one second data brick and try to write something so the write is successful and you are also able to read it because now this is the only bad brick so if you now look at the extended attributes on the thin arbiter if you do a get a fatter and see you will see that it contains certain extended attributes which blame the client one client one is a second brick so client zero is first and client one is second so because we killed the bricks in vm2 it is saying that there is a pending data heal on the second brick so the thin arbiter essentially captures this information the client also has it in memory that now the second brick is bad and I should not allow any writes which might fail on the first brick so let's kill the first brick and see what happens so now we are going to kill the brick which is good and we will bring the second vm back up so now you see that the first brick which witnessed the write was skilled and now the second brick is up but even now when you try to access the client you will see that the clients fail both reads and writes so LS reader fails with input output error and writes also fail with input output error so because the only brick is down we are not allowing the writes anymore so if we bring the brick back up so we will restart luster d on the first node so that the brick comes back up now the self-healed would have automatically healed the file by now and you can see that the file is again accessible from the mount yeah and if you look at the thin arbiter before that let's look at the contents of the file from both bricks yeah so the contents of the file is also the same on both bricks and if you do a get a factor now and look at the external attribute that AFR maintains it it's now reset it to all zeros so earlier it was like blaming the second brick now because the self-heal is happened it's reset it and now you can continue with the IOS issue yeah so that's pretty much it guys have any questions alright then thank you yeah I am just going to put the 15 minutes it's okay the talks are fast you have the byte lines okay it's the video and the slides are to the box so if you're standing in front of the screen you will not be recording okay um I am still doing the I think let's skip for now if I need it I will put it on target by then yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes yes What do you use? If you check the system out? So the arrow next to it? Okay. I think there might be an option. So the arrow next to it? Yeah. And we have both the arrow and the stress. Okay. Okay. Yeah. Go back to yours. What does that say? Nitric. Oh, we have time. It makes it easier for you. Okay. Yeah. Okay. Okay. Okay. Okay. Okay. Okay. Okay. Okay. Okay. Oh. You have to wait until the time. Yeah. So it's a lot of 15 minutes. Yeah. So you want to have the mic already? I think I'll skip it. Okay. Because you have? Yeah, exactly. So the mic's mostly for the recording. Even if you speak long enough, the room might understand. Thank you. Thank you. Thank you.


Okay, so we are getting recorded. Alright, so yesterday. We started talking about. Sorry, it looks like I need to stop my video because again my computer's overheating sorry about that. Okay, so. Yeah yesterday we started talking about modular hypercalors. And so let me remember and the, let me remind you a little bit what we were doing. So we said we want to we want to study the modular spaces of these hypercalors that we've been studying right, and I gave you a couple of definitions. The definition of Taishmuller space. If we have a differentiable manifold X, then we, the Taishmuller space is by definition, the quotient of the set of all complex structures on X modular and equivalence relation down here. The definition of the equivalence relation is that two complex structures are equivalent, if and only if there exists a diffeomorphism pulling one back to the other. And such that there's an extra condition we want that diffeomorphism to be isotopic or homotopic to the identity. And then the, the marginalized space of complex structures was very, very, very similar. The only difference was that we changed the equivalence relation will remove the condition that the diffeomorphism be isotopic to the identity which is that there exists a diffeomorphism that pulls back one complex structure to the other. All right, so that's what we had. And then, we said, well, these two are related. That's a relatively simple relation relation between two. If we call diff of X the group of diffeomorphism of X and if zero of X it's connected component of the identity. And then the group of the group of the group of components of the diff of X is this quotient diff X by diff zero of X, which I called the G yesterday. And the relation between the the modular space of complex structures and the type of space of X is that complex X is types of X, modular, the action of G. There's an action of G on types and then you take the quotient you get comp. All right. So, we had this and what we said also was that, well, a priority I mean if we want to study to understand you know various complex structures on X, we should be interested in this comp of X. But the problem is that it usually doesn't look very nice for instance it's not house dwarf. It's not going to be singular, you know, sometimes badly, but Tash of X is actually much much nicer, which is why then we that's the one we we study most of the time in practice. So, in practice actually we usually work with small opens, open sets of this type of X. Okay. So these these small open sets will describe small deformations of complex structures on X. Okay, so now let's talk about deformations a little bit. So I'm going to first just define what the deformation is so first of all let's define what a family of complex manifolds is so that we just we're just all on the same page right. A family of complex manifolds for us you know in this in this series of lectures is a smooth proper morphism of complex spaces I'm not asking that baby, they they themselves you know this curly X and then the base s. I'm not asking them to be manifolds but I am asking the fibers to be manifolds. So, the morphism itself has to be smooth and proper so that that means that the fibers have to be compact complex manifolds. Alright so that's what we mean by a family. And then, now let me say what I mean by a deformation. That's, this is another, the continuation of the definition if you if you like, or I will just write that as it right as another definition. So a deformation of. Now I'm going to write it as a pair X, I X is the differentiable manifold, and then I is a complex structure on the on the differential man on the differentiable manifold right. And then X is a family. So curly X to us and I'm going to define to denote the projection map by PI of complex manifolds compact complex manifold sorry with the data of a point. S zero in S an isomorphism between the fiber, pi inverse of S zero, which we will denote let me let me give that a name so I will call that X zero. So this is by definition the fiber over little s zero of our map PI. So this is an isomorphism between this guy and X. Now what we mean here this is an isomorphism of complex manifolds, where I end out X with this complex structure. I. All right so this is a deformation. And then we, we will say that a deformation is universal for any deformation for any other deformation really right. To S prime and let me call this one PI prime. There exists a unique morphism fee from S prime to S such that. fee of S prime zero is S zero and X prime to S prime is the pullback of X to S by a fee. In other words, we have a commutative diagram. Like this. So, another commutative diagram sorry Cartesian diagram. So we have S here, and we put X on top of it that's PI. Here I will put fee S prime. And here I have X prime so I want this diagram to be a pullback diagram right. And of course because this was defined via a universal property. What we have is that the universal deformation is unique up to unique isomorphism. And we usually denoted. So that the top I will denote it the same way but the base I will call death of X right the basis is kind of special. So we will just call it death of X. So we have a Cornish's theorem. So because of this theorem of Cornish. These universal deformations are called Cornish families actually. So what does Cornish's theorem say it says that suppose that Xi is a compact complex manifold. So that's the top of X, Tx equal to zero. So here, you know up to now we were thinking of X mostly as a differentiable manifold and Tx was a differentiable tangent bundle here Tx is the holomorphic tangent bundle, tangent bundle. So H0 of Tx is zero what I mean is that there are no holomorphic vector fields on X. So the condition means H0 of X, the X equal to zero means that there does not exist the global holomorphic vector fields. So suppose that X satisfies this condition that it does not have any global holomorphic vector fields. Then, is there a question, then a universal deformation with with that complex structure I exists. And this is another nice property. It is universal for all of its fibers. So as I said then you know this this space then X going to death of X of sometimes people call it the Cornish the Cornish family of X. And there is another nice theorem which is going to be very relevant for us.  Okay, so I will explain what that means but let me first give you the title so on a trap are obstructed miss K trivial Kelly manifolds. So, so suppose. So we have this. So again suppose just like before that Xi is a compact complex manifold. And let's assume you know that we are in Korean in Korean issues situation which is that H0 of X Tx is is zero. And then so then let, then we have this universal deformation right. The Cornish family. So these are our assumptions. And what we're going to assume also that we were going to assume that this work we're taking a germ of the definition. Okay, so we assume that therefore X is very small. So it's just a very small open set. A very small open set around the special point little s zero whose fiber is our manifold X right. So, so this. So then what we say usually is that this extra depth of X is a germ of a deformation. So, so then another thing that can issue tells us is that for in such a case right for T in depth of X close to close to the point little s zero right. So here's my map pie again so pie inverse of a zero remember this is X with the complex structure by we have the following. We have that the tangent space at T to the space depth of X, can be identified with H1 of X, T, X, sorry, X sub T, and then T of X sub T. Okay, so again, so what am I doing here I have. I have my my deformation right X over depth of X. I'm taking a point here, right. Then I have the fiber, which is, you know, one of my deformations of big X and what I'm saying is that if I look at the tangent space at T to my to my base space depth of X, that can be canonically identified with H1 of X, T, with values in the whole more of a tangent bundle of X, T. Okay, so this is, this is a standard fact from deformation theory. And so then and then we have obstructions we have things that we call obstructions right so the obstructions, I'm not going to get too much into the obstructions but let me just give you the intuitive idea about the obstructions. The obstructions to deformations and these these obstructions exist to various orders so you can have obstructions that order. I guess that depends on your convention exactly whether you start at one or at two, but you know that the order kind of goes to infinity so so the obstructions give you local analytic equations. So the tangent space to depth of X in a neighborhood of zero in H1 of X, TX. Okay, so when I said that the tangent space to depth of X was H1 of X to TXT, what do you get from that you get that in particular, the tangent space at, at the point can be identified with H1 of X, TX, right. So we have that. And so in some sense so what we're doing here we're thinking of. So depth of X is an analytic is a complex analytic space right so its tangent space as a complex analytic space could be could be quite big right that depends on how singular depth of X is at the point s zero. So what we're saying is that this tangent space can be canonically identified with H1 of X, TX, and then we are sort of because we have a very small neighborhood, you know we have a very small depth of X, we can sort of think of depth of X as sitting inside its own tangent space right which we often can do with with complex manifolds right if you take a small or complex analytic spaces rather. If you take a small neighborhood of the point, you can always think of that as sitting inside inside its own tangent space. So if you think of this depth of X as sitting inside its own tangent spaces inside H1 of X, TX. Then you have these things called obstructions, which will give you local analytic analytic equations for depth of X in a neighborhood of zero in H1 of X, TX. Okay, so then we say that we say that the deformations are unobstructed, if the obstructions are zero. And what that means then is that a neighborhood, a small open set of depth X can be identified with a neighborhood of zero. In H1 of X, TX. So, um, so this would this would be a particularly nice situation right because this means that the base of your current issues deformation is just an oh you know and it's just an open ball right it's just enabled of zero in this vector space right so it's just an open ball so the community family is particularly nice looking right locally. So, this is so now it's a theorem of Tian Todorov and Bogomolov, which says that the deformations of K trivial manifolds X are unobstructed. But me what this means basically is that if your manifold is Calabria or if it's hypercaler, then it's, then it's unobstructed so in particular, if X is hypercaler, then it's deformations are unobstructed. Any questions so far anyone.  I'm not, I'm sorry that I'm not being very careful with my attributions you know I'm citing results of other people in the lectures but I'll try to be more careful with it in the in the notes you know that will be published in the proceedings so I'll try to get also put in all the references and also. But it's a little bit difficult to do you know in the lectures anyway. Okay, so I was going to talk about that. Right so some some other nice nice nice results here. So other nice results. So if X is caler, then so is any small deformation. So this is again very useful for us right. This tells us that you know if if X is princess hypercaler not only are the deformations are obstructed but they're also caler. And in fact, and we have more so if a, again we have more that applies to us if X is caler and K trivial, meaning the canonical class the canonical bundle is trivial right. The deformations of X are also caler and K trivial. And then we have a little bit more actually even if X is holomorphic symplectic, meaning hypercaler basically. Actually, sorry, I take that back when I just when I say holomorphic symplectic. I suppose strictly speaking. That does not include. Did I include caler in the definition of holomorphic symplectic. Now I'm not sure if I did or not. I guess that's really a choice that one would make. I think maybe I didn't. And I don't think you'd need it strictly speaking we don't need to be strictly speaking assume that it is. Yeah, no I think maybe I did include. Okay, never mind, but let's just assume that it is caler for simplicity it makes things simpler. So, alright so if X is holomorphic symplectic, and that for us includes caler we put that here. Then small deformations X are also holomorphic symplectic. So basically if X is hypercaler also small deformations are also hypercaler. And furthermore you actually even have a little bit more so if X is irreducible holomorphic symplectic, then all fibers, so not just small deformations all fibers of any definition this is a stronger result of X are irreducible homomorphic symplectic. This is particularly nice for us right if we want to study deformations of holomorphic symplectic manifolds, then it tells us that if we take one deformation then all the fibers will also be irreducible holomorphic symplectic right so that's, that's kind of nice. And the key, the key to really understanding the deformation, the deformations of holomorphic symplectic manifolds is to actually is the period period domain right so the key to understanding the deformations is the period domain. Sorry, Professor, I have a question. Yes, please. But in the definition of irreducible holomorphic symplectic, do we include the caler. Yes, yes. But we said previously that small deformations of caler manifolds are caler so why couldn't this happen when our manifold is a, I mean, why all the fibers stay caler when X is irreducible holomorphic symplectic. Well, okay, that's because the irreducible homomorphic symplectic is a stronger condition so it will it will force. That's a priori only small deformations are going to be caler but but when you when you when you impose irreducible homomorphic symplectic you have a much stronger conditions and then it forces all the fibers to actually be caler irreducible homomorphic symplectic right. Okay, so, okay, okay. Yeah, so it is some. Okay, maybe it's a non trivial result. It's not. I will give you the references you know in the in the published version of the notes. Yeah. Okay, thank you. It is it is an entrepreneurial thing. Okay, okay, so the key it's so the key to understand the deformations is the period domain, and I'm. Yeah, sorry about that. I mean I guess I put. I'm not sure I can give you any more insight on that. Anyway, okay so. So how do we how do we use the period domain the thing is that what we're going to see, you know, in a few minutes is that we will construct this this this thing that we call the period domain and then small open sets of the period domain will be isomorphic to the deformation space of X. So, but the period domain is something that we understand a lot better. So that will tell you that will tell us quite a bit about definitions of X. And how do we make the period domain. A period domain, usually, you know you use the carmology of the variety to make a period domain for it right. So in the case of these hypercalamide faults. We will make the period domain by using the second carmology. And as I said, you know, yesterday. So, a lot of things about a hypercalamide fault are controlled by second homology now, unfortunately not exactly everything, but a lot of things. So, um, so this, this had so let me say that this has to do with, with the second homology, the second homology. H2 of X Z. And usually, you know when you take the carmology you need a polarization, right. So we need a polarization to to define the period domain. And that that is what people call the Boville-Bogomolo form. So now let me let me explain what the Boville-Bogomolo form is. So now I'm going to assume that X is is irreducible holomorphic symplectic. And for us this will be the same as irreducible hypercalam of dimension two n of complex dimension to choose a generator so choose a generator of H2 of X. So a holomorphic so a holomorphic two form a non-degenerative holomorphic two form on X, right. Such that when you take the integral of Sigma Sigma bar to the end on X you get one so this is just the you know just a normalization condition. You can't satisfy this you just multiply it by some by some complex number and it will satisfy this equation right so it's just just a normalize things. So how do you define, I'm going to just drop the definition of the Boville-Bogomolo form, the way that people came up with it. So this is something that you know for a K3 surface actually agrees with the intersection form on H2 of the K3 surface and the same for a complex torus of dimension two, it will agree with the intersection form on H2 of the complex torus of dimension two. So it's a generalization of the intersection form in dimension two. And it's also the way that people came up with it is that they computed some examples you know this of these Hilbert schemes of points. In fact, more specifically well maybe I'll say something about that later. Let me first give you the definition and then I'll explain more a little bit about where it came from so for alpha in H2 of XC right so we can perform we will define qx of alpha. So there are two ways of writing it down. This is one, this is the first way, integral over X of alpha squared sigma sigma bar to the n minus one plus one minus n times the integral of sigma to the n minus one sigma bar to the n times alpha and then integral over X of sigma n sigma bar to the n minus one times alpha one. Okay, and you can show that this is equal to if you write alpha equals lambda sigma plus beta plus mu sigma bar. Well now I'm doing the hard to become position right so I'm writing H2 of XC as H2 zero plus H11 plus H02 so here my beta is in H11 right and then the sigma of course is in H2 zero right this is this is H2 zero and sigma bar generates H02 then this qx actually has a nicer shape I mean you can write it as lambda mu plus n over two and then the integral of beta squared sigma sigma bar to the n minus one. Okay so it doesn't have such a terrible terrible shape right but it has a very nice property so Boville showed there exists a natural number dx in n such that if I take alpha to the 2n and I integrate that on X then this is equal to dx times qx of alpha to the power n. So in particular this is this gives you a little bit of insight about what this qx is if if I take the real positive root the real positive n through this integer dx then I can define a new quadratic form qx tilde by multiplying qx by rx and you can see that if you do this then you can absorb the rx into the nth power right this guy is then an nth root of the nth power cup product on H2 products and so then in particular this also shows what I was saying then in particular if you're if n is equal to one then you just have that if you have a surface right then what do you get you get that so rx will just be n minus one then integral over x of alpha squared is equal to qx sorry you get that this is dx qx of alpha squared right I think I mixed it up no no no no sorry sorry there's no square that that's just that's just the one right so it's going to be dx qx of alpha right okay so you see that then yeah so then dx is equal to rx in this case right and then your your qx tilde is the is just the intersection for right so qx tilde is just intersection and as I said the way that people came up with this right so people came up with this interestingly this was discovered via the example of the form of variety of lines of a cubic four fold so how does that work it's a kind of a nice picture so if you have a cubic four fold so if let's say t is a cubic four fold then so so t here will be inside p5 right it's a cubic hyper surface of dimension four and then I can I can call f the variety of lines in in t then people showed that this guy is irreducible homomorphic synthetic and it's not just Kailer it's actually projected right so we have this and then what you have is that the and people showed that you have an isomorphism between and I don't know which way is the best way of writing it I don't I don't think it really matters you have an average of the isomorphism which I would call AJ the fourth homology of t and the second homology of f and then the way that people got this book will go more form what what T is a four fold so this middle homology this has an intersection form and then via this average of the isomorphism you get the book will go more form here so this is basically how this thing was discovered so once they once they got this then it wasn't so hard to actually produce this in all dimensions you know just kind of look at the structure of H2 of a homomorphic synthetic manifold and then of an irreducible homomorphic manifold and then write down this you know this quadratic form basically you know with with the formula that we had it wasn't it wasn't too hard to figure out from there so kind of a nice nice nice picture okay so now there are some some properties of the quadratic form I will talk about the properties of the qx still there right this is after I rescale this so that it becomes an end through the end power cop product right um do I have to stop oh no I still have until 1055 I mean until yeah oh it's 1055 for me but yeah okay seven minutes right yes okay so some properties of this quadratic form this this quadratic form you can prove it it's not that difficult it's not divisible it is not degenerate and over the reals it has signature three and B2-3 if I if you restrict it to H2 of XR it is integer value on H2 of XZ right um I should write that down as well so it's integer value I should I should have said that first right sorry on H2 of XZ and you have a little bit more qx of sigma remember sigma is a generator of H2 of omega 2x right qx of sigma is 0 and sorry qx tilde of sigma is 0 actually for this it doesn't matter whether I write qx or qx tilde because I'm just talking about them being 0 right or neither for this one it's being positive okay and for t close to 0 in the core issue space of X you actually have a little bit more you have that qx of sigma t is also 0 and qx of sigma t plus sigma t bar is also positive what I'm doing here if I'm very close remember the depth of X is basically a small complex ball and if you're on this small complex ball you can trivialize you know the H2 right you can basically identify H2 of all the fibers with the central fiber X with H2 of X and then you can you can you know you can evaluate your quadratic form on H2 of any of the nearby fibers of the family right so that's what I'm doing here so I can I can apply the quadratic form to elements of H2 of xt for any fiber xt of my family alright so you have this so now this allows us to define the local period domain so definition the local period domain alright so what is this so I will first define qx as the set of alphas in H2 of X such that qx of alpha is 0 and qx of alpha plus alpha bar is positive and this guy is contained in qx bar which is by definition the set of alphas such that qx alpha is 0 and this one is inside the projectivization of H2 of XC okay so this is this is the local period domain this qx isn't is a real analytic open subset of a quadric this which is qx bar a complex quadric inside this projective space ph2 of XC right so that's our local period domain and so because of this property that we had up here right that qx of t is 0 and qx of sigma t is 0 and qx of sigma t plus sigma t bar is positive we can define the local what we call the local period map right and where does it go it's um it's it I will denote it px and it goes from depth of X into this period domain qx what does it do well it will take a point t and it will send it to the class of sigma t where sigma t is a generator of H2 of omega 2 of XT right so this is this is our local period map okay and then you have some nice properties so the local period map is just sending you a defamation space into the period domain which is a real analytic open subset of a complex quadric right okay and we have some properties of this local period map so what do we know that this period map px is holomorphic because sigma t varies holomorphically with t because it's a section it's a section of H2 of omega omega XT right omega 2 of XT right um and we have local Torelli which says that px is a local isomorphism and what that really means is basically that the differential of px at 0 is an isomorphism because then you can always just restrict the domain the domain of px to get to get an actual isomorphism all right and I will stop now for the five minute break thank you should I stop the share screen


Here we are in Burnaby, British Columbia, the Domler Mercedes-Benz facility that will be manufacturing fuel cells for all of the Mercedes-Benz vehicles around the world. You know it's 50 jobs, 50 jobs is significant but I think that 50 could grow exponentially not in years to come but in months to come in terms of this new industry. BC already represents a significant portion of the hydrogen fuel cell business. We do 78 percent of the research, we have about 22 percent of the manufacturing capacity and some people will estimate that within four years this will be an eight and a half billion dollar industry. BC has outcompeted Stuttgart, Germany, they've outcompeted Ontario, Detroit and California. We're the proud home to the Mercedes-Benz manufacturing facility for hydrogen fuel cells. First of all I have to thank, thank you, British Columbia and local administration to support us in this intensity. Otherwise it would not be possible to show up in such a short time with such a facility and this is a starting point to make some more progress to go for this commercialization. The success of fuel cell in the future in the automotive sector is going to depend mainly on two factors. One of them is to get our cost structure down and that is exactly what we're doing here in Vancouver and the other one is the infrastructure meaning hydrogen refueling station and in that aspect British Columbia is doing an excellent job with the programs they've put in place since the Olympics here in Vancouver in Whistler and with the expansion that they have announced in their infrastructure going forward in the next two years. So we're very excited about today and what this facility means for the future of Mercedes-Benz.


Hi everyone, Joe for Jaspy's CaseBreaks.com coming at you with a one-pack break of 2020 Panini Prism Draftpicks football, one-pack break number nine. So 23 spots, one spot gets you three teams from this list below. And at the end of the break, we'll re-randomize the original 23 names. And the top four will get spots in that NT football full-case, random team break, which is coming up in a separate video after this. Big thanks to these folks right here. So let's triple you up to three. There's all the universities right here. Let's roll it and randomize it. Nine times, four and a five. Five, six, and a ninth and final time. John down to Chris, nine times for the teams, and ninth and final time. After nine times, we've got the Florida Gators down to the Cowboys. All right. So I'm just going to show you the teams and your names sort of as is. And then I'll alphabetize by your first names. All right. So Anthony, there are your teams right there. Anthony P, Anthony R, Danny. Let me make this a little bit bigger. Danny, Frank, Jared, Joe, John, Jonathan, Josh, Chris, Kurt, Mike, Rolando, and Scott. There you go. Now, I don't think there's going to be any trades, but let's rip open this box here and we'll see which pack we're going to do. All right. So there's pack number one, pack number two, pack number three, pack number four, and pack number five. All right.  I like that red one right there. And then one, two, three, four, five. If I roll a six, we'll just roll again. It's one first pack. We'll save these for next time. All right. So no trades. So that list remains the same. Actually, let me alphabetize this by team so I can see who gets what. All right. Good luck, everybody. Just one autograph per pack. So let's see who gets the auto. Could be a nice one. Tom Brady Silver. And it's going to be J.K. Dobbins. There's your Gross Matos 299 and J.K. Dobbins 11 out of 149 from the Ohio State University. Who's got Ohio State? Ohio State Buckeyes the X-Line. There you go, Josh. There you go. And the other two cards right here. And this one goes to Penn State, of course. This will go to the X-Line as well. The numbered card. Who's going to get that Silver Tom Brady? Michigan? Wolverines. That'll be for John DeNene. There you go, John. John D with that. All right. Now, the whole point of this, of course, the primary point of this is to see who's going to win those spots in NT. So we're giving away... How many spots are we giving away here? Top four names. So I think we're... Oh, you know what? I apologize, folks. I think we need to do one more prism pack. And then we're in breaks. Sorry. I had that written down on my show notes. Forgot about that. But we'll get there. We'll get it done. All right. Let's roll it. Let's randomize it. Five into five. Ten the hard way. Top four after ten. All right. Nine and... I said ten, right? Yep. Tenth and final time. Good luck, everybody. Next up is going to be Jonathan, John, Rolando, and Chris. So congrats to the top four right here. Put a little rooftop symbol next to your name and we'll put... What symbol everybody? We'll put PD-9, prism draft nine next to your name so you know where you got these spots. Congrats again. Thanks everyone for giving it a shot. We're going to do one more pack and then we're in Breaksville. So if you didn't get one this time, just try one more time. You might get an NT spot. If you asked me, it's casebreaks.com. I'll see you next time. Bye.


Hi, I'm Varun Dubey and I'm head of blockchain at Lab45ipro. There's a lot of research going around sustainability because given that blockchain has many nodes and it's stored the same amount of data in every node, right? But yes, I think there is a lot of research happening on pruning the consensus mechanisms to make it faster and less CPU hungry. For example, if you see proof of stake, which has recently Ethereum has moved on, I think these kind of things will make them more and more sustainable. Look at Hydra Hashgraph, the whole Hashgraph algorithm is very sustainable in nature. So yeah, there is a lot of research happening as we speak across multiple protocols. And I think with this whole green focus everywhere, every protocol is working on making it less and less taxing on the compute and the storage across the world.


तुम को तुम लेदिए शर्व ना? ने? ने जाए है! भ्त35 सान कराईत staring सानतूwarz नाननुल कई वंदगा लक्तात भईऔन पातू completamente तमगा laki दे जार पुर्थ भो भादर दे लीत दे िे from बाम स्कन racks तुरी साILL बोब लिक भीटियी work लाक वीू आते हैंं ... तो उस्क ने क का से village But 10,00,000. And our videos are about saving cows. And all the videos are about cutting cows. So I want you to share our videos on WhatsApp. That we are equally used.  Who has brought this, aunty? I don't know. I don't know what to sell. You won't go down, right? Okay. No, you have to eat this. No, no, it's okay. You can eat this, it's an accident. It's also an accident because I saw its legs today. What's the problem? People are going to kill them. Take care of the cows. Come on, throw it away. Come on, throw it away. Come on, throw it away. Throw it away. This was not so much. Who tied this?  Don't check the door. People's misbehavior is not less. What is this? There is only one MLG. After that, there was a third MLG file. Then why did I have to file a third MLG? Why did I have to do it? I said that there is a doctor sitting here. I asked him. I asked him what kind of a doctor it is. I said that I don't have a leg.  You don't do any treatment. You know what he says. I said that I am an NGO. I said that I am an NGO. What kind of NGO is this? What kind of NGO is this? On the way back? Okay. Listen to me once. I have kept a few of them. They are yours. You keep them. I don't know why I have to sit in a NGO. I don't like love at all. My father said that there is money in agriculture. In animal husbandry. Now, our new NGO is joining us. They have a story. They said that they are in animal husbandry. They are Pashu Premi. To save them, I am trying to help them. So that they can come forward. I have tried to kill them first. So that they can come with us. I want them to sit like this. But I can guarantee you that after 10-15 years, a lot of them will sit like this. Because a lot of children message us. We are going to the vet. We are going to the vet. Who is this dog? This is Karshanko Ayurvedic. He said that he has an importability. But we are doing a check. This is for the ticks. You have lost your ear. Yes. You have lost it. You must be in pain. Yes, I am in pain. I am going to break it. This is for the beggars. Hey, hey, hey. Did you hear that? This is my fault. No, brother, it's my fault. No, no, no. It's my fault. No one is doing anything to you. You have done so much. This is a mess. Manu, no one is doing anything. Just a minute. Just a minute. Listen to me. The boy. The doctor is not a TVT. Nothing is there. Nothing is there. Only ears are there. Stop it. Actually, after 2-3 days, he will calm down himself. Yes. Sometimes, some dogs are like this. Sometimes, you will handle them alone. Sometimes, you will see a lot of people. You will be worried. Sister, she just taught her TVT. Is there any injury to this dog? No, sister. Okay, stop it. Take it out. Okay, keep it. Leave it. It's very small. Sister. Yes. It's very small. You can take one shot of it and come back. When we went first, we took one shot of it. One shot of it. One dose will also be fulfilled. We were already treating these kings. So, they had got an injection of Vin Christine. With which, its tumor became very small. Now, after one more dose, when it will be completely finished, we will release it. By the way, we only do sterilizations for females. But because this TVT is sacred in its area, after rain, we will sterilize it as well. So that, it won't catch any TVT again. Chomu, you have an example in front of you. That it took so much effort to catch it. And now, we have put it to eat for four days. And now, you see how friendly it has become. Now, you can go inside. Child. Sister, can you see its bone from inside? Yes. And its leg is also bent. It's getting late. Child. Its ear is also cut. Brother, how much pain did you get in that age? Best, best, good. So, were there maggots too? Yes. First of all, they were not there. Because the wound that was there. We have cleared all the maggots, right, Vita? Today, its first treatment is going on. How are the maggots cured, Kunal? Okay. Today, we will clear all the maggots. Today, we will clear all the maggots. After that, after two to three days, we will start clearing the maggots. After that, the infection will be cleared. The antibiotic will go on for a long time in the infection. After that, the support will go on. Because there is an infection, there is no damage. After that, we will see, how much is the tendency to have a fracture. After the infection is cleared. Until then, the fracture will not be healed. So, it's still getting bent. So, what are we going to do now? We are going to do this. We woke up, kids. We woke up again, kids. Are you releasing Meera too today? Yes, we are taking Meera to the hospital. We have to release her too. She is also a needle. She has a lot of serious management. When she came, the blood loss was also very low. But slowly, with regular dressing, with antibiotics, her wound. The part is a little soft. But now, if we apply the paste of zinc oxide, then she will not have any bleeding or soft portion. And she will be healed in time. Let's go. Let's go. Hey, Meera. We have brought the bell. Which bell? It's inside the soft part. Okay. Is this in your Danotu? Yes. Do you have any hair? No, no. I don't have any. I don't have any hair.  There are wounds on her back. Yes. Look, she has got a lot of love. I was waiting for her. Yesterday also she came for her. But yesterday she was in the field. Did anyone close the door here? No, no. This is the best. Okay. Come, let's go. Where are you taking her? No, no, no. Don't come on the way. She has got a lot of pain. Yes, a lot of pain. How did she get pain, brother? I don't know. What is the rest of her? We don't have a place here. There is no caution. So, we will shift her to the hospital. And the medicine has been poured. The basic cleaning is done in the morning. Now, when the maggots die, after that, we will start the regular antibiotic pain killer room recipe. We can't do anything. For example, I am in a jail cell. So, I am in a hopeless room. I can't do anything. But, we have always some options. We can drink water, eat food, go to a health center. We can serve an egg guy. We can adopt first aid seats. We can do a lot of small things. When we do these small things, the result comes in front of us. So, hope comes. That's why, I hope, even after seeing so much, I will die. And when you are with a young blood. No, seriously.  You didn't tell me. People who take all these lakhs, if they are working on a T.I. survey, then, that's it. We can drink water.


Everybody forced here ripping 20 22 tops dynasty baseball hobby 5 box number 46 Left side serial numbers. We'll do the random right now and we'll get to the case. Good luck everybody Go seven times four and three first in the names one two three four five six and seven Alvin asked on a Viviana and number seven times One two three four five Six seven five down to ten Alvin five John a six Ezekiel eight Joey a seven John a nine to Viviana one ammo three Eric R4 Joey a two Viviana 10 There are the results for you Let's do it Cut off deceased person. It's a ghost White socks hat You'll wait him and as three of ten on the patch auto three spot is MOD all right Let's see some better hits now Brandon Marsh on their rookie patch auto eight of ten It's all the angels hat could be huge still very nice Brandon Mars. He's been doing really well So this is wins at the Phillies eight of ten eight spot is Ezekiel You've traded Right around the trade that last year actually Nice marsh, I don't think Eric normally watch but Eric are if you're if you're watching right now There's a there's a buyer on your uh, you restart it That's what I figured what it would Anybody emails just tell them that the drip upload will be like yeah, I'll have to check it there unfortunately Nine of ten cc sabat the Apache auto Nine is John a there you go John my cc three color patch auto call it 3c could have done without the sarcastic laugh All right, here we go redemption Tennessee auto jumbo patch card Buster posey, so there's not a parallel on this. This is random to everybody. It's not a one-of-one. It's random to everybody I'll double check and make sure that isn't But I usually would say like gold one-of-one or something or not one of all but I say gold. All right last one Is Spencer Torgelson on the rookie two-color patch auto eight of ten eight spot is Eekiel There we go. Congrats on those To him for Ezekiel. All right, let me make sure that this isn't a one-of-one I don't think it is the one-of-one parallel is gold. So yeah, not a one-of-one So random to everybody again. It's always been the rule. All right. Good luck everybody Dynasty auto jumbo patch card buster posey nine times whoever's up top gets it One two three four five six seven eight and nine Joey a there you go Joey Congrats That'll do it. Thanks again everybody on to some hockey