السلام عليكم ورحمة الله وبركاته اسم الله الرحنان الرحيم الحمد لله رب العالمين والصلاة والسلام على نبي الرحمة والهدى محمد الأمين وعلى آله وصحب إجمعين one of the first points is determine what you want to change we go can hear about change, what do you want to change I spoke about change in spirituality but the truth is we need to change many other things sometimes and here we are in universities and we speak into an audience of forces here I think it's relevant for me to say even in your studies what do you want to do why are you here, what do you want to achieve, remain focused and work hard to achieve it your parents or someone somewhere down the line is paying in our slam they say big bucks for you to be here or why it's a fact some people work day and night to have their sons and daughters in far off prestigious universities and they having fun there is it fair so we need to know what needs to be changed admit it, write it down, ponder and this is why we have something known as meditation in the sharia some people take it very far and some people ignore it totally I have a balanced approach and what we say is every day consider your deeds we used to say حسيبو أنفسكم طبلا أنتو حسابو وزينوها خبلا أنتو زنو take account of your deeds before they will be taken account of for you and what is going to take account of your deeds then naturally when you are at university if you do not take account of how you are spending your time in the university count the day of exams and what happens we start sweating you know we are all nighters do you know what an all nighter is you don't study and enjoy your life suddenly when exams come we are popping in the building we are having a red ball the red ball doesn't do anything the ball being in there is synthetic that's what makes it a lot to be honest if it was not synthetic we would be saying something else but even with that synthetic touring the problem we have is it no longer has an effect I know young boys here I can see their faces they probably have 12 and since you my shower sorry no offense I am also a shower so the reality is we need to know that that is not good enough we need to take account of our deeds and we need to also weigh our deeds before they will be weighed for us and then we are passed why is this the case if you take account of your own deeds there is always room for improvement and you will be able to to keep away or keep a big regret but when when something is taken account of for you sometimes it might be too late and this is why we say my brothers and sisters very importantly if you would like to learn knowledge if you would like to know if you would like to increase your knowledge you need to quit sin be conscious of Allah Allah will ensure that you know your knowledge will increase you know الشافعي رحمة الله عليه his name was محمد ابن ادريس الشافعي the great Imam of jurisprudence he complained once to one of his mentors known as رحمه الله and he says I complained to ابن الجراح about my memory and شافعي had a powerful memory trust me he had a powerful memory and he is still complaining about someone like myself and yourselves perhaps our memories are weak you know we we can't even memorize a phone number to save our lives may Allah سبحانه و تعالى help us I think it was the case a few years back when we could do that but technology has made us lazy so شافعي with that powerful memory he still complains and he says I complained to ابن الجراح regarding my the memory and he guided me saying quit sin be far away from sin anything sinful stay away from it because knowledge is the Nur that Allah grants those and it does not come together with a person who is sinning may Allah سبحانه و تعالى protect us really and this is why we mentioned yesterday and we are repeating it today one of the best gifts of Allah upon us after our Iman and so on is the fact that we have an opportunity to turn to Allah to make amends we have an opportunity to turn to Allah سبحانه و تعالى to wipe out the bad we've done in the past very easy you admit you regret you ask Allah's forgiveness and you promise not to do it again and it's wiped out that's the promise that Allah سبحانه و تعالى has made but if you have usurped the right of a fellow Muslim or a fellow human being then you need to seek forgiveness from them as well that's the fifth condition when you have wronged a fellow human so if there is a sin committed between you and Allah سبحانه و تعالى for conditions we've made but if you've added an individual say I stole someone's money I can't just say ya Allah I stole these million this million but I ask you to forgive me I won't do it again I regret and I repent and you're still going to enjoy that million and the brothers asking you for the million you need to return it or you need to tell him please forgive me and if he says okay then it's fine if he says no then you've got a problem because you will either sort the matter out in this world or on the day of judgment Allah will choose how the justice will be served so all this we would only know if we took a moment to learn it is reported that when you forget something you say Allah سبحانه و تعالى opens your doors you remember Allah Allah will remind you so when we forget something it is from shaitan when you forget something good is from shaitan so this is why we should constantly try and remember that which is good how to increase your memory cut out everything unnecessary from your life we're not talking of sin sin here is supposed to be out anyway but we're talking of unnecessary some people have a habit of sitting and chit chatting late at night following morning they can't remember how many raka'at in fajr but there's only two they can't remember why because your mind has rewinded all night the beautiful stories you had all night and you're standing now in salah and you just you can't remember too much in your head take out some of that this is why نبي صلى الله عليه وسلم says one of the signs of a good Muslim is that he leaves that which does not concern him it doesn't concern me throw it out today we are at an age where we are bothered about everybody else's life and this is a problem whole sale nobody can say I'm not guilty when we hear a juicy rumor Mashallah it's like we squeezing the lemon الله أكبر مِالله سبحانه وتعالى غرانت us goodness really we need to be bothered about our own lives cut out unnecessary riffraff and see how your memory improves مِالله أفن out those my beloved brothers and sisters it's great to be talking to you and as you know we all have examinations in life different types of examinations and each one has to try very hard as you know in a setup where there is a school or a university at the end of every semester trimester or term you would have some examinations in order to qualify you to get to the next level and as you progress in life the examinations become more and more difficult and you would know that without working we don't achieve we know the common saying من جده وجده whoever works very hard will definitely see the fruit of that particular working so just like we have people who fail because they did not work hard or they did not understand that the examination would become more and more difficult as time passes we also have an issue with the Dean where as we progress in life we will have more and more tests and they become more and more difficult until we meet with Allah سبحانه وتعالى and this is why the Prophet صلى الله عليه وسلم was told وعبد ربك حتى يأتيك اليقين worship your rub until death overtakes you worship your rub until the end right up to the end keep on worshipping continue do not stop do not pause do not lose hope in fact progress and become stronger and stronger if you take a look at some of the other verses of the Quran الله سبحانه وتعالى makes mention of فا إذا فرغ تفنصب وإلا ربك فرغ you know what Muhammad صلى الله عليه وسلم delivering the message it was not easy and it was difficult he faced so many challenges he continued and he prayed 23 whole years of نبوة and Allah سبحانه وتعالى says when you have سبحان الله سبحان الله you know the achievement that Allah سبحانه وتعالى granted him Allah سبحانه وتعالى will grant each person achievement according to his will obviously but also connected to the effort that that particular person makes if we were to give up suddenly we would never be able to achieve his will obviously we would never be able to achieve even Jannah imagine a person who reads Salah for 70 years and suddenly the last year just before they die they give up their Salah they throw in the blanket and say that's it such a person has been mentioned in the hadith of رسول الله صلى الله عليه وسلم where a person could be worshiping Allah for so many years and right at the end they turn so they are cast into hellfire and a person could be disobedient for so many years and right at the end they worship الله سبحانه وتعالى and turn back to him so they will be from amongst those who go to paradise so it's important for us to know that to give up you don't know how close you are to the end imagine a person digging a tunnel for example and right when they are near the end they suddenly give up thinking that you know what I don't know how long this is going to carry on for had they carried on for a minute longer they would have broken through so with us we need to continue fulfill your Salah progress develop don't think for a moment that life is going to become any easier the only thing that will happen is with the development of the link with Allah سبحانه وتعالى we become more content we understand the nature of the world we understand the nature of the tests of Allah سبحانه وتعالى so we enjoy going through them in the sense that we are content we are happy with the decree of Allah سبحانه وتعالى so my brothers and sisters not only do I say I work hard to achieve here in the dunya and may Allah bless you and grant you success in these examinations but even in the Akhira we ask Allah to bless you to open your doors to prepare for the Akhira it's not an easy task but with the hope in the mercy of Allah سبحانه وتعالى things will be made easy and at the same time with the constant preparation without giving up hope never ever giving up never say no never just throwing the towel by the will of Allah we will achieve and we will achieve great height وصل الله وسلم وبارك على نبينا محمد


Anti-terror measures will be stopped if a weapon is laid down by Armenians in Karabakh. Ilham Aliyev, US Secretary of State Antony Blinken made a phone call to President of the Republic of Azerbaijan Ilham Aliyev. During the telephone conversation, the sides exchanged views on the current situation in the Karabakh region of Azerbaijan. The head of Azerbaijan pointed out that the intelligence sabotage groups of the Armenian armed forces in the Karabakh region of Azerbaijan had planted mines for the purpose of terrorism, as a result of which civilians and police officers were killed and the units of the Azerbaijan army were subjected to fire from mortars and small arms of various calibres. President Ilham Aliyev stressed that these actions, including the so-called presidential elections in the Karabakh region of Azerbaijan on September 9th, were a continuation of deliberate provocations against the sovereignty of Azerbaijan by Armenia and the so-called separatist institution established and supported by it. The president of Azerbaijan said in order to prevent such provocation and inciting actions, Azerbaijan had to launch local anti-terror measures in the region. The head of state emphasized that during the anti-terror measures, civilian population and infrastructure facilities are not being targeted. Only legitimate military targets are incapacitated. The head of state mentioned that representatives of the Armenian residents living in the Karabakh region of Azerbaijan had been invited to a dialogue several times by the presidential administration of Azerbaijan to discuss reintegration issues, but they refused. However, they were invited to a dialogue again when the local anti-terror measures continued. The head of state said that anti-terror measures will be stopped if the weapon is laid down and disarmed. U.S. Secretary of State Anthony Blinken expressed concern about the situation, called for a ceasefire and said that the United States supports direct dialogue between Baku and representatives of the Armenian residents living in the Karabakh region.


So, two things, which we all always start the meeting with, but before that, let me wish everybody a happy 2024. And I think 2024 is going to unjam the enterprise blockchain space. We are going to have a hyperledger.nyc meetup in person sometime this year, April. So, in-person meetup is going to start here again in New York City, the capital of world finance, as I like to call it. Now, the victor is clear, especially after Brexit. The second point is that we want to be very inclusive here and people can disagree with whatever is being said, but without being disagreeable, which is the most important thing. Be polite, even when you're, you know, dissenting or disagreeing. The third thing is that we follow the antitrust policies of the Hyperledger Foundation. So, please respect that wherever you are, because the antitrust policy law is different in different scales. And with that, I hand over this call to Ashish. Of course, Ashish will answer questions towards the end and we can engage in discussion. I had already talked with him about certain things and hopefully he'll address them. And that's that. Thank you, Ashish. Please take over. Thank you, Ipin. First of all, thanks everyone. And thanks to this SIG for giving us this opportunity. Of course, we had a discussion earlier as well. And thanks, Ipin, once again to invite me back over here to talk about the progress. So, the progress has been quite multi-fold since then and especially I'm here under the banner of blue finance, which is essentially something which we did. So, as you already know, some of us were there in that SIG where we presented word. So, world was under both the brand name. But world was focused on, it is a private world still is a private blockchain and blue finance is a DeFi layer on top of that private blockchain. So, as Ipin was saying that 2024 is going to be the year where enterprise blockchain is going to be to emerge at a very strong footing. So, we are seeing signs of that, though we believe that the way it may adopt may be different from how the progression has happened. So, looking at that, that world was moving towards traditional finance and decentralized finance being two different streams. And we saw that early last to last year, we saw that early, early green shoots on how the convergence of these two may be happening or may be possible. We saw JP Morgan coming and doing some transactions on polygon network. We saw that again, project Gaussian in the Singapore where a lot of banks have started working with some of the DeFi players. So, looking at that, what we realize that there may be moved towards, towards much of these two different streams of traditional finance and decentralized finance. And in the last two years, of course, that has been proven quite right. So, many participants have come who have brought, who have brought traditional finance securities or many traditional finance institutions, like JP Morgan, I mentioned CT Nomura. Today Nomura is actually just today we came to know that Nomura is launching a L2 platform of its own using polygon CDK. And then Society Journal and others have been twinkering with DeFi. And with that perspective, we started building a DeFi vertical of WURL. So WURL is essentially a commodity tokenization platform in the private blockchain space. We added a DeFi layer on top of that group finance, so we kept the two separate brands. And today that makes us one of the few players who have actually at the production stage we remain one, but there are others who are coming up with the same or philosophies with the same thesis. So, so as we all know that tokenization we have been most of us who have worked in enterprise blockchain. We have been talking about we have been working on tokenization in the last several years. And for last seven, eight years people have worked on tokenization with an asset tokenization, deposit tokenization, bond tokenization, etc. But the cool part about 2023 was rather that this was the year when instead of things moved out of pilot stages. So while pilots had been going on for so long, we started seeing real transaction volume taking place. So today Onyx does around couple of billions of dollars of transaction every day. A few in the month of November, JP Morgan said that they will be creating their own L1 platform. And also we have seen that number of them have been moving towards L2. So this is the year in 2023 where we saw that actually tokenization came out of the shadows and finally started moving into the production stage on both traditional finance and D5 space. And it became the buzzword, even the likes of Swift. So Swift, of course, everybody has been predicting this. But in 2023 market Citibank started its own prediction, etc. And even the traditional finance giants like Swift, you all know about that they started working with D5. So that has been the thesis we started working a couple of years back as well. Of course, our asset class was very much specific. Like typically we have seen that when we talk about asset tokenization, equity bonds, t-bills, they have been and of course real estate have been at the forefront. Verl and Bru had children at the other hand to work with commodities and mind you, not gold but agriculture commodities. So essentially that is what we have been doing. And we have been developing layers of, we have been building the entire stack and we have been building layers of that stack. So the first effort started with of course commodity tokenization. And then we adopted a policy of asset tokenization and the assets are stored with third party custodians. Then on top of that tokenized asset-backed lending, which we have, I mean, maybe very surprising to many, but we have been doing tokenized asset-backed lending. We've tried five banks in India for less, more than two years, almost three years now. A couple of months back, a tokenized commodity exchange and when I'm saying commodity, these are all agri-commodities. Then we also launched DeFi in last, in 2023, April, which is blue finance. And that is the stack which we have built today. Now we are of course expanding it further. We are working on taking the solution to an import or export using tokenization. And of course, which has been something, supply chain tokenization has been paying under work for a lot of time. But our approach has been a bit different. Our approach has been to start with asset tokenization and build slowly the stack on top of that. So that is something global commodity finance is what our core focus will be. And of course, in that a lot of infrastructure building is also required, which we have been doing or we will be doing over a period of time. For example, when we started working and we needed Oracle data, we started working with IOTs. And what we realized that the cost of IOT was quite high and we had to leave that path. But now once again, we are launching that under a deep in structure means decentralized infrastructure on physical infrastructure on blockchain. So we will be adding that over a period of time as well. So this is the stack which we have been building for the commodity market. The first commodity stack was of course agriculture commodities, but in future other commodities will also come over here. Excuse me. Are you advancing the slides or is it still on the first slide? No, I'm advancing the slide. Oh, I don't see the slides advancing. Maybe there's something. Oh, I'm so sorry. Oops. That's that's a huge huge. Oh, I went on slide number four in this meanwhile. Wait a second. It's. Am I change? Are we changing? Yes. So let me just then I will take 30 seconds. So this was the first slide we talked about that tokenization is finally moving out of the. Out of the pilots and POC and come has come actually in 2023 we saw that already happening. A lot of work happened on the men that levels. Also onto the private blockchains. When more shift we saw happening and which in my opinion will be a bit. Different will be different from how we have seen that. So we saw enterprise blockchain we saw public blockchain. But in my opinion, over a period of time we will move towards a world where these two will be and that is something even be so is doing with hyper major that perhaps we may have may move towards a world where the transactions happen on specific chains. Like Apollo is saying elements or it may happen or not to like no more is developing. And those will be supported by the security of a large album for example, Ethereum or Solana instead of the previous model where we will the price blockchain and then we are adding defy in my opinion slowly the things will change so that is one thing we have been seeing. Secondly, I was talking about this light what is happening in the tokenization market. Third, this was the slide I was talking about that we have built a stack on the commodity sector. So we started with tokenization as the base stack added to add file landing on top of that added decentralized finance on top of that. And just last to last month we have also started a tokenize commodity trade platform or tokenize commodity exchange. So these are physical commodities, no derivatives over here so no securities. And of course our idea is to take it to a global. So this is where I was. And so the core idea when we started talking about tokenization of commodities was several, I mean there were several factors, which we saw that we can solve by if we bring the commodities on the same and I have been into the commodity sector for like more than 10-15 years even before I started into blockchain at least 10 years. So that experience was why I chose commodities instead of equity or real estate. So the first thing is that commodity markets, especially the physical commodity markets are highly fragmented. And the reason being is that physical commodity markets, unlike pure financial assets, whether those are equities or crypto digital assets require consumption. And that plus they require logistics, they require top commodities from one part of the world to another part of the world. And that creates friction into the process but also it creates very highly fragmented markets because there are a lot of intermediaries into the chain. So if we can remove few intermediaries then of course we are in a position to remove some of the problems of fragmentation. And that was one aspect why we started working on commodities. And the second part is commodities markets have a product called commodity finance, which is essentially inventory financing. So commodity cycles are in such a way that everybody in the supply chain ends up holding a lot and a lot of commodities. It means your lot of money is locked into a lot of working capital is locked into that inventory. So commodity finance is a way to solve that inventory problem that liquidity is provided by giving loan against inventory. And that's a global product commodity finance is $250 billion product across emerging markets across European markets, anywhere you see commodities you will see commodity finance. And we have seen and we have seen in many markets that this market is prone to high level of thoughts, whether the frauds happen in India, China, South East Asia, Singapore, these are some of the examples, Latin America means almost at every point, every bank of the globe has suffered in commodity finance. And as a result, many banks actually have pulled out of this and hedge funds are currently the real players into this market. So that was second thing that how do I we create a commodity finance market, which is less far from because the fraud was largely double spend problem multiple at I mean all these whether you see NSEL, Chindao, in long, all of these are about multiple lending against the same collateral. Only access world fraud was different in the sense that access world is a Glencore subsidiary Glencore is a well known name in the commodity markets. So in physical commodities and access world was just a duplicate fraud a duplication of deposit receipts. But other than that, most of it has been about multiple lending. So we thought that blockchain will be able to solve that. So we created a product that goods, I mean the product was already there goods are stored in bonded warehouses inventory stored in bonded warehouses loan is given against that we brought that on chain. So we brought the commodity on chain, and we brought the commodity finance on chain. So that was the core idea how do you reduce fragmentation. And secondly, how do you reduce trucks. Today, we are one of the large blockchain platforms in asset tokenization space of course in India we are number one. We have already tokenized approximately see this number has gone to almost $700 million now. In terms of asset tokenization, we have a network of 1500 custodian warehouses. We have already served and I'm talking about retail customers here, approximately 20,000 participants, starting from the level of farmers to the level of intermediary traders to also processing mills and commodity processing and so on. And we are working one of the few institutions across the globe to work with traditional finance institutions on asset tokenized asset lending. So we are working with few of the names in India. We are also working with the government sector, and that has been going on over there. So this was our journey started on the private blockchain under the umbrella of and it is still going on under the umbrella of brand name of world. We added group finance on top of that. And when we added group finance on top of that what it did that it allows the liquidity to flow in either from traditional finance banks, or from a decentralized finance protocol, depending upon where the liquidity is cheaper. Three years back, DeFi was cheaper and traditional finance was actually costly. Now, traditional finance in India is cheaper actually speaking after the rate hike in the US market. So how the system works, very simple. These are commodity owners. They can be like very small farmers. We have given loans of less than $100 as well to farmers. And they can be large traders as well. They can be institutional traders as well. Or they can be institutional mills as well. They have commodity as inventory. They bring this inventory to a bonded warehouse. Why bonded warehouse means this is third party warehouse. This is not in control of the borrower. These are the warehouses on our blockchain network. And there the goods are deposited. They're verified, verified both using technology. So we have brought, as I said, we started building with IoT, but we have machine learning solutions deployed here. Plus, there is a physical verification agency as well. And the price of the commodity is determined using price or accounts. So based on all this data we create commodity non-fungible tokens. Which go into the platform. And then that can be used as a collateral. Against which both of our traditional finance banks or the DeFi lenders, both of them can lend. DeFi allows us access to the global market. TradFi allows us access to the regulated Indian market. But of course, this same model can be taken to any part of the world. And the same model can be used for purpose of lending by people across the globe as well. This is tech architecture, essentially the same thing shown in a different language because the part is about TradFi and DeFi. So how we have done that. So the one which you see on the left hand side, this side, this is our private blockchain, which we have created on Quorum. So Quorum was our choice at that point of time. So these are the same borrowers or depositors. They bring their goods to the assets or custodians. There are banks, there are asset verification agencies, all of them write data on our private blockchain. That is where the permission blockchain. That is where the assets are essentially tokenized and created. If these are banks as a lender, then the entire transaction gets closed over here. There is nothing which goes on to the public blockchain. But if DeFi is a lender, means someone is lending from a DeFi protocol. So we have created a bridge between the permission blockchain and we are here on Polygon. So between Polygon and the permission blockchain, we have created a bridge. The bridge sends NFTs or the collateral to the Polygon network and takes the liquidity from Polygon network to be given back to the borrowers on to the check. So for the interface level, we have interface over here, typically web applications, also mobile application. And here it's a pure mobile-based interface. But whatever the interface at the end of the day, the core idea is that the assets are minted on a permission blockchain. And later on, if there is a need of DeFi intervention, then they move towards the DeFi protocol. This is the same thing which we did, essentially we have already talked about. So what I will do, sorry. And the core idea here was, so of course there are other DeFi products for protocols who are doing, who are doing RWA financing. How we differentiated ourselves over here is that typically, all the DeFi protocols require a fintech. They work with fintechs, they work with third party, and thereby the benefits of decentralization actually stops working. So for example, a DeFi protocol will give loan, because when they are doing RWA, not when they are doing decentralization. But if they are doing RWA, they will give loan to a fintech. Say for example, in Indonesia, the fintech will acquire customers will give loan over there and take the money back from the borrowers as part of collection and pass it back to the DeFi protocol. Another platform, at the other hand, there is no third party in between. As you saw that everything is, I mean of course there are players, but all of them are connected through smart contract. So the money doesn't goes to world or money doesn't goes to third party fintech. Everything remains on chain. Each part of the transaction remains on chain. So the borrower directly dips into the pool and takes money from there by providing their assets. So there is no third party coming in between. So end to end integration has got that benefit. And that means that we have been able to also create some sort of social impact over here. So I will take a pause over here and if there are questions, I can answer that now. Or I can, if there are specific areas on which you would like me to focus, I can bring that into discussion away. Don't hesitate guys. Please ask questions. Of course, it has to be Jim first. Right. Thanks, so yeah, that my big thing on the DeFi and the traditional banks is they usually have very, very different rules and regulations that they have to comply with. So my guess is, and this, I need your help to understand it better, but I'm guessing your platform has to accommodate those differences in regulations. In a sense, so if I'm borrowing money, if it's coming from one of the DeFi things I have a different set of I assume rules and regulations. They're going to apply versus me borrowing from some commercial bank or the equivalent of that in India. Does that make sense. 100%. So actually speaking, DeFi regulations have yet to be framed in many parts of the world, right, even the USA has not regulations and is rather saying that the existing regulations apply. And in some countries like Japan, Singapore, etc, have already created a framework. India is one of the countries which has decided that they will only go for regulating the assets, except for a few things. Only after G20 adopts the regulations. So that way, we have no regulation we have a regulatory arbitrage over here. But you are pretty much right Jim said that when it is a bank lending, we have to comply with every regulation related to the banking sector. And that's how we built the solution. That is why the initial solution was built on permissioned blockchain. It used quorum where private transactions was possible. I mean, that was before I put in the broad private transactions and we built it through the solution from that perspective. So as of today, we are in a position to follow the regulations related to banking sector, even if we are into the DeFi because the core was built using those regulations in mind. All right, so then the other thing that in the US, if we're doing the same thing you're doing and had to comply with regulations, one of the challenges here and I don't know if it matters in India or not, don't know is here. If I were operating in this network as a participant and I wanted to borrow money for whatever I'm selling or buying in this ecosystem. If I'm doing that in the US, the banks that I would be borrowing getting my loan from would be required to support AML sanctions, a real time on me. So, if I'm a legitimate borrower last year, and all of a sudden, the federal government now puts a sanction on me as of today. The bank has to say, oh, I can't give you any more money, among other things that they'd have to take as an action because the sanctions are real time. Do you have to deal with sanctions at all? So, India now applies AML regulations on any crypto participant, including exchanges, including DeFi protocols, so we have to follow that as well. All right, so every participant in the DeFi side then is a known entity legally to you, which is good. Exactly. We don't work without KYCs. Right. Excellent. Thanks. Yeah, it's not pure DeFi that says that it's not anonymous, it's not censorship resistant. But the core idea of DeFi for us is that how do we pull global liquidity into a global south? So for example, if Jim wants to give loan to a farmer in India, he can use our protocol to do that using stable coins. Excellent. Money. Yeah. Great presentation. Can you, I missed the part about the cash movement. How does this cash work through the system, both on your private network as well as when you work with your DeFi side. So that's where the problem area is still is. And so where that is where once part remains, it still remains on traditional financial side. So how we do that just allow me a second. So if the cash movement, if it is a banking transaction, okay, so as we saw that the banking transaction happens entirely on the permission blockchain. But one part which is not on the blockchain as of today is cash movement. Because we have to use react for this purpose. So, so what we have done that we have connected our platform to the banks core banking system. Because there is a cash movement that gets registered on to the blockchain, but real cash movement in the traffic landing doesn't happen on to the blockchain. So we actually speaking, India has launched a CBDC. We participated and we went to the finals we did not win the finals by the way, with the same proposition that Indian CBDC should be used on our protocol for lending to farmers. We placed the fiat currency and we bring the CBDC so that this entire transactions happens on blockchain. So, so that is one part which still remains as of outside of the blockchain. But once the CBDC comes and once some of the banks we are working with are permitted to use CBDC for that purpose, we will be able to use that. Coming to the DeFi side. On the DeFi side we use on-ramp off-ramp solutions. How the cash movement happens on the DeFi side. So on DeFi you have two players, one is the borrower and one is this liquidity providers. So say for example, James sitting in the US and here a farmer in India. So how it happens that the liquidity provided provide stable coin liquidity into the group pool. And in the group pool when they provide liquidity, the stable coins come into group pool. We convert that stable coins into, first of all, we convert them into dollar and then we convert that dollar into Indian rupee and give Indian rupee to the borrowers. Of course, we have that exposure as well. When the money is returned because we give only six months loan, we don't give high duration loans. So after six months, when the money is returned, that feed currency we receive back from the borrowers. We convert that into stable coins and we send it back to the liquidity providers. I hope I was able to make it. That's great, thanks. Sure, thank you Manik. By the way, if anybody goes back in history to the development of the Federal Reserve and the subsidiaries, you can say that it was due to the seasonal nature of agricultural commodities in America. Back in the 19th century, America was a very powerful agricultural nation. Well, it still is, but the financing ebb and flow is what created the Federal Reserve. So financing of agricultural commodities is a basic feature of finance. In fact, it might even be the foundational feature of how money and finance started. So in a sense, you are striking at the base of the system. I have one question for you, which is, I noticed that you are on a two to four percent, you know, fee structure is two to four percent, but others are point four and point five only because are they only because they are only dealing with the part of the system. Or, you know, how do you justify, because there is a lot of focus being given to the fee structures, especially for example, the Bitcoin ETF coming up. And could you comment on that? Sure. So we've been there are two parts. When I said two to four percent, actually speaking, we are still cheaper than others because when you have a fintech in between that fintech takes 10%. So while the DeFi protocol only has this point four point five percent, the fintech which is working in between which is taking money from here keeps us spread of up approximately eight to 10%. Happens in India as well. In India, fintechs borrow at 15 and lend at around 24 to 50%. We are the other hand, the total cost starting from end to end is two to four percent. So it means that we have been actually able to cut it down significantly and still keeping that on our books. So in case of other DeFi protocol, it gets divided between the books of the DeFi versus books of the fintech. Here it accrues on our platform. Second part, the on-ramp off-ramp solution itself takes away approximately 1.5 to 2% out of this business. So as a result, we are not actually, I would say that enriching ourselves a lot by exploiting the borrowers. We have actually reduced the fee significantly into the ecosystem. Today, the rate of lending for me in India to the farmer segment is 9% per annum. That is just 1% above the mortgage rate in the USA. So we have been actually able to, and that is actually speaking, microfinance in India is in the range of approximately 24 to 26%. We are at 9%. So we have been able to reduce the cost using this entire structure. Despite the fact that a lot of that money accrues on our platform, significant portion also goes towards the cost, but it accrues on the platform. So that's the benefit that our revenue goes up comparatively. Said that we have cut down the cost of lending for the borrowers by 50% to 70% as compared to microfinance or even traditional lending ecosystems. The only reason I brought it up was because it gives a, this slide was not meant to be here. This is this unfortunately I opened a deck which is an investor they are not a product. So that's where this came up. Okay. You know, there are those other questions which I had posed to you, which we will go into especially now. One of the things is the volatility, meaning when you're maintaining your treasury in multiple types of instruments, let us say Ethereum. Let us say Indian rupee, dollars, the volatility of each one of these moving independently of each other would also affect your treasury, so to say. So the treasury management becomes a very important part of this exercise. I wonder whether you could comment on that at all. Sure. I fully agree with you. So as a result of what happens that we are only dealing two currencies. We deal in, I mean, we're dealing stable coins, dollars back, so only USD and secondly, right now at the native and I mean the native currency which is India. If we go outside of India, there will be another native currency. So we are very much because when I jumped into commodity markets at the same time simultaneously. I came into currency markets and have been working into currency and I was in 2008 when currencies went like especially emerging currencies went a while. Some of you would be there in during the 97 crisis as well, I was still in college then. But what I'm trying to say that we have been very much focused. We don't take the liquidity in terms of digital assets means no Bitcoin, Ethereum, nothing like that, only stable coins. That allows us to manage the volatility comparatively between only one currency pair which is USD INR. When we go to other countries, it will be USD, maybe since if we go to Indonesia, it will be USD Rupiah and so on. So, so that is where our focus will be how do we manage the currency risk only for one pair of the currency instead of having so many pairs. And second part is that we hedge the entire exposure. So that is because we are dealing with small borrowers who typically don't have any idea how the hedging happens and secondly, many of them don't know that the liquidity is coming from a dollar pool. So for them it's the converted INR. So they don't even know that they have to hedge that so we take the hedging position on their behalf. So trading management is certainly very important for us and we are focusing upon and that's why we have kept the exposure highly reduced at this moment. Thank you. Anybody else, any questions. Hi, I had just a, oh sorry, quick operational question I think you can answer pretty fast on that screen that's up right now in the architecture. So, if I'm a liquid liquidity provider, there's this web mobile app. Our wallets involved, is there a hot or cold wall involved to transfer from PI to the crypto? Yeah, so there is a wallet.  So we have created it for both crypto net is a non crypto net is if you are a non crypto native UK, but that that is only for Indian Indian people, they can give us INR directly. So we accept INR here in India as well. Otherwise, if you are from outside of India, you will have to give us a stable coin through your wallet. Okay. So the moment you open the mobile app or you open the web app, it will first thing it will ask you is to connect your wallet. Okay. And then because what we also happens, we also give, because these are 100 other over collateralized loans. So we also give the collateral, we also bring the collateral charge creation in the name of the same wallet, and also we transfer the interest in the same wallet. So wallet connection is required for that all that purpose. Okay. So part of yield also comes in blue tokens. So so for example, if we have to provide it today, so it will be approximately say 8% on dollars. So if we add yield plus 10% blue token it, that is where the D5 benefits start coming in that the yield is not green from the lending activity but the yield is also coming from being part of the ecosystem and in the form of a token as well. And where is blue traded. So it's not yet listed but we are working on listing it by a month of effort. So right now the private market for blue finance tokens but not yet publicly listed money. Maybe, maybe we're going to take it offline. A bit more technical question about the, about the whole core of infrastructure. Maybe can I reach out to you later. Sure money anytime. Yeah, maybe if you can share with me or email I'll reach out to you. At this time I have to also say that money is going to make another presentation here, where he is going to link the entire, you know, his his thought process are a system oriented. And so he his product is going to link both the payment side into the picture and also when you're talking about other financial. Like equities and other things. Then you need some kind of, you know, clearing exchanges. A lot of financial market infrastructure, which is actually being worked on today by people like LSEG and the Euro clear people, and mostly on. Some of them are on corda some of them are on other other blockchains. Anyway, we just want to want to clarify I mean the focus will be on on more on on privacy, privacy on the chains using zero knowledge proofs, and how we are implementing for enterprise, enterprise alleges. This is just the first step is kind. Yes, because that's essential for all implementing all of these things like order books or any kind of cap tables. Any payment payment payment is payment. Yeah, you need privacy and that's fundamentally to be a solid. Yeah, so even if you're focusing on that that is in in pursuit of creating the global infrastructure for, you know, trading of what we we can call it RWA for for lack of a better term, but they are all different kinds of RWA. You know, there are D materialist RWA like shares and stocks, and there are actual physical RWA like commodities in real estate. So, when we have this veil of the market laid over the whole thing. Then we have more interoperation between all of these commodity types and payment types. Anyway, go ahead. She's sorry to hold forth on certain. That's a great idea. So, I mean, the thought process as money mentioned that privacy using zero knowledge proof and all, because if we want traditional finance to come on to, or if we want to measure of traditional finance and deep end finance. But then certainly we will require these services we will require. And as we are seeing that the ETF is coming up and people are saying hey it is all against decentralization that you require custodian and all but without them we are not going to move anywhere. So those things will be certainly required and people are building that and I would love to discuss money how because I have said my own thought process on should we build something on those lines. And this also as a supply chain trade finance solution would you. Over a period of time yes, over a period of time that's that's what we are actually taking a solution to that. Our focus market is commodities. So whatever happens in the commodity business we would like to be part of that over a period of time. So right now what we are doing is inventory finance. We are providing the inventory we are taking the inventory in the warehouses. What did warehouses giving no one against that, but that's a very on market sort of a structure. And then we have just started the tokenized commodity exchange so the third step which is coming up is of course the supply chain finance. And over a period of time, of course the idea is that how do we use tokenize tokens transfer as a as a tool of import export and if we are doing that. How do we bring import export supply chain financing so all that is part of evolving stack for us. So, if you have more material otherwise we can continue this discussion, or you can go ahead and do. I will then maybe I mean that the discussion was there but maybe I will just take this slide small one and the core idea of why we use blockchain was this one that how do we, how do we solve the multiple landing or other type of fraud problems also one question always happens that what about the commodity physical controls because you are saying that hey, you know, I have these assets and these assets are in the control of the warehouse how do we ensure that. So, so for that we have certainly built certain machine learning solutions. We have put data from many places, we are also working with one of the largest warehousing, we are in the process of working it is on will take a lot of time, but the largest a lot of time in the terms of procurement process of the government. But largely, we will be working in a such a fit fashion that how do we use intelligent machines to have a to have a control on the movement, and also notification of the movement of the goods. So we are working on that pilot is going on and hopefully in next few months it will convert into a full place large project. So that that's because physical thing remains a challenge, especially in commodity space, also given that in India, especially or in other parts of the world also in some parts of the world like in the US you have a storage in large silos. So the value stored in a particular silo is very high, and you can deploy a lot of costly technology solutions. But here in India we do is storage in a 50 kg bag, a 50 kg B bag of weight is approximately $20. How do you put something in that $20 bag and how do you monitor back. So that remains a challenge we will be so working on solving that. And the second part was that we have been able to reduce the cost, we have been able to create a centralized lending process for the lenders and so on. So that is where we use technology to solve some of the problems, and some of the problems are being tried to be sought over a period of time. We are seeing that a deep in infrastructure network of IoT solutions, intelligent cameras and so on to come over here. And we will also see that we are also planning as I discussed earlier that how do we merge all of that over a global trade platform. So, so that's all I believe for me to say but I would love to have further discussion if there are any questions or any specific part with the people would like me to talk. One of the things that comes up is whether you know what to what to do about default. That's one. The second is what is to be done about deterioration of physical commodity. That is, you know, what happens if the rain or, you know, any kind of insects or rodents attack the product. Third, of course, is that you are obviously not going to lend against commodities that are extremely fragile or extremely volatile. So, those are the three things regarding that, including, you know, liquidation in terms of default would would be great to talk about that. Did he disappear. Looks like he did.  Are you guys hearing what she's saying or Jeff. No, I don't see him either. He does look like he's gone as a participant. Yeah. So maybe, and you can pick it up from here. Well, I mean, you know, these are the questions that I asked him to address. He comes again, he's coming back in. Beautiful. I am so sorry I just got disconnected for a couple of minutes. Yes. So the question arose. I mean, I asked three specific questions, dealing with the physical commodity. One is default.  Third is of course, the, the, how things are getting liquidated. Okay, so yeah, so I can take one by one. So in case of default default and liquidation will be like, right. So, so what happens in case of a default that if it is, of course, stratify bank we don't need to worry much about how do we, how do we work on the default, because it's when the defy is there then we take care of the default process and the liquidation process on behalf of the liquidity providers. So one intervention we have to do. However, the good part about this asset classes commodity is highly liquid asset class. So it's not real estate. So you have an asset class which is highly liquid, which can be sold in almost any part of the world. And of course you can sell online. We have our own trade platform where it can be sold. But even if it is to be sold physically we can even sell it in a small village or maybe rural markets small, small urban centers as well. So we actually speaking last two and a half years of giving loan, we have zero default we have zero case of for liquidation. Of course, the track record will not be maintained forever. But we are ready for that eventuality actually speaking that was the core idea of providing the exchange as well that one idea of exchange is by trading people are essentially selling goods, and we are recovering our income and the interest from that sale proceeds itself. So that helps us in collection and we can use any day to sell online that commodity. Secondly, we can sell offline as well. So those parts are there we have physical infrastructure warehouses are there, which are manned by people and those people are actually in a position to set it in the market as well. So coming to maintenance. So in maintenance terms, there are several aspects one each and every penny of the commodity on our platform is insured. So actually speaking because we work with a lot of government sector, total insurance at any given point of time on our platform because of the government's own insurance policies and all. Just a few months back it was approximately, it was approximately, I would say that 100 million. Yeah, approximately, sorry, a billion dollars, because they have a stock which isn't which is tokenized, but they also have other government to take insurance for that. So approximately less than a billion dollars but approximately $900 million of insurance was there approximately six months back. So every penny is insured that's one against any sort of physical problems that may happen, plus any sort of implied fiduciary fraud is also covered in those insurance policies. The third part is maintenance, how do we ensure because insurance will not cover poor maintenance. So for that process what we do that the maintenance records. So there is a 15 days every 15 days there is a fumigation process and there are other processes in the warehouses which are to be carried out. So, so again those records of those processes have been carried out or not. It's also available on the blockchain itself. So for every warehouse when they do those activities they put a record here on the blockchain and that is available for verification by the Sounds great. I, unfortunately we are running out of time. So, if anybody else has any last questions. Now is the time to ask, or you can contact a sheesh on his email. Thank you Ashish for showing up and being so forthcoming about all your, your platform. And I think this is the place where RWA will start with a physical foundation. Yeah, great, great solution well thought out and you know want to see more of this as it evolves, and you, you are starting at the right place so I think, in a sense the roadmap you have forward sort of makes a lot of sense logically. At a point you'll integrate other standards and so on as you hit what I call different areas of what I call supply chain but for now you've really had a very very solid start well thought out so thank you for that. So we've been thanks. Thanks a lot. Thanks everyone for listening so patiently and joining us, especially quite early morning in some parts of the world. And thanks, the Hyperledger Foundation for giving us this stage. We would love to talk about RWA in future and hopefully, whenever you are doing the physical event we've been I will be there in New York to attend that. Yes, we are going to have it, probably in April sometime we don't know, but it's going to be run by Jamil, who has got one of the Jamil shake he's got one of the biggest networks of people. I think his hyperledger meetup has got 40,000 people. So we are talking about numbers that, you know, that are beyond what we are capable of in hyperledger physics, you know, in hyperledger but it's going to be physical. And he is planning a multi day event or even a single day event. And hopefully, some of these products will feature in that. Thanks a lot. And goodbye and good night. Thank you. Thanks everyone. Looking for hopefully we will connect soon with him. See you. Bye bye.


about how to make awesome command line apps with Ruby. I've heard a little bit about that before. So briefly, like I said, I'm Dave Kaufman, Dave Tron, 5,000 on Twitter. So I am currently an engineer at Living Social, and even though Living Social is a pretty big company, we still work in small teams. And if you've worked at a startup or work on small teams, you know that being able to write a command line app is very useful and you find yourself doing it a lot. So that's what this is about. Also, I'm writing this awesome book right here which you should totally buy right now. Use all of the internet to buy this book right now. It's okay. But I promise I will only show this one more time. Still working? Yeah, there we go. Okay, so slightly more history. I started off with Commodore 64, which is certainly a command line interface. Yes. Then in college, I did C and I had a computer where the cursor keys didn't work in VI. So I learned that HJKL, like really good. And so now when I have to leave HJKL, it really angers me. So that's why I love doing stuff on the command line because it's all right there. Of course I did Perl, and then I used this hot new language called Java for a while, and there was no IDEs at the time, so I wrote Java and VIM, and if I have to write Java now, I still do it in VIM and on the command line, and then started using Ruby. So that's what this is about. And just to be clear, right, there's no IDEs in there. I do not like them. I like it on the command line. I like glueing my tools together and all that details. Okay, so obviously I care about command line apps because I was born and bred and have no choice and that's just how I am. But the rest of you maybe didn't have that upbringing. So why should you care? So I'll demonstrate this with a tail that I've lived out many times and probably you have as well. So you're working on something. There's some sort of emergency that you must fix.  So you make your little one-off script. You SSH through the gateway to production and you're making your script that's gonna save you today. You run it with, you know, you didn't know time to think of the command line since it's actually just run it and get it done. Done, all right.   Say, I didn't save the day. I just automated a couple things, you know, done. So that's all finding good.  Now, it is six months later and some ops guy comes up and he's like, hey man, you remember that script you read that one time? And of course you kind of maybe remember because it's been a while. So he says, there's a huge bug in it that you have to fix. I noticed your name is on version control and of course I don't wanna have to fix it right. I'm in the middle of doing something. Oh, and it's gonna have to parse XML. So you gotta add some new features to it while you're in, so this exact thing has happened to me at least twice, right? So you say, right, let's do it. Let's fix this thing. And so you run it and you get a random error that makes no sense. Maybe you gave yourself a help statement. You know, that would have been nice of you. No, you didn't do that. Maybe dash dash help, right? That's a pretty reasonable way to ask for help. Okay, that probably didn't do what you wanted it to do. But maybe you were in some alternate universe where you're like on Windows, right? And so you try that, no, of course that's no help. So to hang your head in shame and edit the source and figure out what's going on.  Because you're gonna have to write command line apps, right? Like there's no way to avoid it. You're gonna have to write them eventually. And they have a tendency to become somebody else's job. Someone else will be running your command line app unbeknownst to you and says, your name is on it, you're gonna have to fix it or add features to it when something is going wrong and it might not be the time that's most convenient to you. Right? And I'm not saying like save the whales. I'm saying future you, be, you know, help yourself later on. Future you would have appreciated a better help statement or a couple of statements in that script to be a little better. Also as we're pointing out, the note how to use a command line unlocks this infinite way of gluing systems together and makes you a better developer. So there is that too. And I guess that's also selfish because you can make one money be a little better. Okay, so what I'm saying is that even your one-off scripts, you should make them awesome. Right? Because those scripts is one-off. They have a tendency to live forever and you wanna be kind to future you. And fortunately for us, Ruby makes it really easy to make awesome command line scripts that are just as easy and fast to write as a Vash script. It's not better. So what do I mean by awesome? So an awesome app acts like it's a first-class app. It plays well with others and it is helpful. So we'll talk about what those mean. It's a first-class. Oh, there we go, okay. So a first-class app is not, you can't make one by just installing some gem or applying some technique. It's a kind of attitude that you have to have, right? So your first attitude is it's not a script. It's an application. So you should treat it the same as you would treat any other application. Don't hack it together. Don't treat it as this chore that you have to get through. Treat it as a real application that you have to write and do like you would any other. So how do you do that, right? Like I said, it's not some gem. It's a series of decisions you make before you start.   You're gonna distribute it through some real distribution system. And all this stuff is really easy. You know, you're deciding to care about this application the same as you would your real application. And of course, if you decide this ahead of time, that's the best time to decide these things and it's actually not that hard to do it. So number two, aspect of an app that is awesome. Playing well with others. So I would say an app that plays well with others or command line up embodies the Unix way, which is this. Expect the output of every program to become the input to another as yet unknown program. Don't clutter the output with extraneous information. Avoid stringently common or binary input formats and don't insist on interactive input. That's pretty awesome. If every command line app acted like that, our lives would be good. So this is kind of vague. What does this actually mean? Your output should be greppable. Like typical command line apps of process text like have some thing that they're doing. And so if you keep that thing on a line by itself, you can use tools like grep and said to manipulate each record, each logical record of what you're doing. You should make your output cuttable, which means that these records should, if they have fields, often they have fields you wanna delimit them with like a comma or a pipe or something like that. So you can use cut or ought to, again, break up and manipulate the output. And by you, I mean someone else, right? Because when someone else wants a feature, you can say, no dude, you gotta grep and cut. Just do it yourself. Exit codes, right? If things go well, if your app did what it's supposed to do, exit was zero. If your app did not, then exit with non-zero. This way your app could be using a pipeline or some other script and people can tell if your app did what it was asked to do. Finally, messaging. So if you are, the output of what your app is doing or the thing that it does should go to the standard output and any messages that aren't that go to the standard error because the user can then redirect them to the right place and have more control over what's going on. So you might think this is obvious, but there's certainly some apps that don't do this. So here's an example. It is called Maven. And I don't know if anyone's used Maven. It is how Java developers build their tools. This is the command line syntax to run one test. And here is the first of what will be three pages of output. You'll notice there's all kinds of sort of enterprisey log levels for our build tool. And except for here, who knows why. At least two developers realized this was unreadable because they put this like row of dashes and then another guy decided to row of stars but not the same number of stars as dashes. Who knows why? If we try to read this, none of this makes any sense, copying nine resources. Why am I copying, I don't know, who cares? The second page is more the same, horrible. There's an error in there if you're looking close, but don't worry, it happens on every Maven build and it's not actually an error. I don't know why. So then the third page we finally get to some results and again we've got more developers putting dashes in their unreadable output and some sort of quasi-readable thing that says our test failed and we ended at zero, right? Great for success. So this means that like, yeah. So Maven is very hard to put into another system. It's very hard to script and work with because it doesn't follow these basic rules. So an example of something that does play well with others. So we'll continue the theme of applications that I can't stand. We'll go subversion, which I don't like at all but it's a great command line app. It's really well written. So here's a situation you get in with subversion. You've got some conflicts to sort out. Now what I want to do is I want to edit the files that have conflicts and then in subversion, right, when you've done that, you have to tell it, hey, I fixed the conflict, so it's cool. So I don't want to copy and paste that because I'm lazy. So I'm going to do this, right? I'm going to say, give me the stat, which we just saw and then show me only things that start with a C, which means they're in conflict and then yank the second field of that, which is the file name, it said all that to VI to edit and fix, which we are now doing and then we'll do the same thing to say, hey, subversion, we're done. So if you worked with the developers of subversion and you were like, hey, man, can you add this feature to let me edit everything in VI and then automatically resolve it? They would tell you no, you don't, no, because you can do it like this because they've written an app that plays well with others and can be used and manipulated in ways that they haven't thought of. And that's what you want your apps to do so that when people want these features, you can just tell them to go do it themselves and you don't have to do it. Okay, third, be helpful. So essentially, right, you want to help your users or you understand how to use and understand your app. We saw earlier how terrible it was to not have a help system and you also don't want to punish the users when they do something wrong, you want to be helpful and be nice to them. So here's an example and so the theme of these examples are apps that I like a lot. So latex, I mean, I never would have gotten through grad school without latex, it produces beautiful output, terrible command line now. You type latex on the command line, which is a reasonable thing to do to figure out how it works. And then you can put into this weird mode where you're supposed to start typing your article. And you can't save it and I don't know why you, I don't know anyone that writes articles this way, but the only way to get out is control C. So if you try latex help, then it puts you into this crazy mode where it wants to find the file help.tech, which you can, and no matter how many times you get control C, it will insist on trying to reload that file that it knows is not there. Until you get control D, which is an emergency stop that produces a log file. So that's not helping me at all, it's pretty tough. The man page is also amusing and how it describes itself, but we'll talk about that later. So helpful.  When you type Git, right, does it check your entire hard drive into your version control? Nope. Right, it gives you a nice help system. Yeah, that's very, that's very nice. And it shows you all the options that you can use and a big list of commands that I've snipped off of what you might do. And when you say, Git help command, it tells you help about that command. In fact, it gives you this whole huge, well-written man, well-written man page. Okay. Git check out of mic. How's that? No? How's that? Okay, got the magic again. Yeah, so if you want your app to be helpful, it kind of depends on what sort of app that you're writing, right? So if you're doing like these unixy, simple kind of one thing, one thing, only apps, you're gonna do it one way, which we'll see if you're doing, you know, like LS or Grap. If you're doing like a command suite, which Git is a command suite, there's all these different commands, you have to give it to do stuff, subversion, gem, they work the same way. We'll do it another way. So let's see those two ways. For a simple app, when you type it again, you don't want to do anything annoying or destructive. You just want to give the user a nice little help statement that says what the app does and maybe how to get more help. When you do dash H, which you should accept as the help thing, then you should show the fuller help statement, which should be every single option that you take, what the arguments mean, things like that. Dash dash help should do the same thing because users will expect both to work and so why not be nice and have both of them work. For a command suite like Git or gem, when you type it, it's gonna do essentially what Git does, which is just dump out a list of what the available commands are and what are the globally applicable options, you can use with every single command. And it should also have a command called help and when you run your command, giving it the help command, it should do the exact same thing. The help command though takes an optional argument, which is the name of another command and then it should show you the help of that command, including what it does and what all the options and arguments are that are available. So all this stuff is actually really easy with Ruby as we'll see. Also useful error messages are pretty helpful. Someone asked a question yesterday and this was kind of my response, like this is weak. You should never have this being output from your program, it's just, you know, just lazy. And I was checking earlier and you can use as many statements as you want, so just keep using them until your code is not crappy like that, you know, it's not that hard. So right, we can apply all that stuff to Perl or Python or C if we really wanted to.  So I kind of touched on this later, so I'll go a little bit quickly, but we've got all these high level abstractions, right? You're used to writing OO code in your web apps probably. So seeing that in a command line app, it just makes it easier. You don't have to switch modes of how you're thinking. You don't have to go, oh, now I'm in procedural Perl, so how am I gonna do it? And you're so close to the metal, right? You can run all these system commands and I mentioned that yesterday. And I think we made the case it's fast to start up. It's certainly faster than running like a Java program or something like that. And RubyGems is really painfully easy to set up even for internal distribution to package your gems and get them distributed. So you don't have to be checking out a version control or anything like that. The ecosystem, I mean, command line is part of the culture. Like every library has a command line aspect to it pretty much. And I also noticed that a lot of Ruby command line apps tend to be rooted with some era of taste. You know, they're kind of nicely well done. So it kind of motivated me to like wanna make better command line apps because those who came before did such a good job. And of course there's tons of open source gems and we'll see a list of them at the end of some things that help you make command line apps. And of course there's lots of gems to do everything else. So whatever you think you need to do interfaces some web service, there's tons of gems for that. Okay, so that was the theory part. So now let's talk about like something real here. Let's see, so actually, so there's two signs of unawesome. One, oops, is, can I not do that? It is, being terrible at shelling out to the system. What's it called? Poor sub-process management. So here's a program that makes a backup of my SQL file in a really cheesy way.  I'm not checking the error codes. Who knows what's gonna happen here. It's not good. So this is how you should actually do it. You should check those exit codes. I mean, I spent all that time talking about it. Like you should check them. If you call out to something else, it's gonna tell you whether or not it succeeded and you probably wanna know that. You probably wanna know the command that you actually ran the exact command line syntax. I'm sure we all come into work and our cron job failed for inexplicable reasons and would be nice to know what cron tried to do that it couldn't do. Similarly, the output. The command outputs a bunch of stuff that might be useful. Don't throw it away. Like put it somewhere because you're gonna need to look at it. Again, future you. What would future you have appreciated having to figure out what went wrong? So Ruby 1.9 has this open free library which is dead simple. And so here's an example of using it. You call capture three on a command and it gives you the standard out of the command as a string, the standard error as a string and the status which is a process colon, colon status which will let you figure out the exit code and that sort of thing. So things are good. We don't have to even say exit code equals zero because we're gonna say success and we're good to go. Otherwise, we're printing things out and you'll notice that we're printing the standard error to our standard error because where else would it go? And we're printing the actual command that we ran to our standard error again. So the cool thing about this is if you ran, if you use this inside a app that you're running in cron and you have redirected your standard output to say log file, the standard error will be captured by cron and emailed to you only if there is any. So IE, you get an email from cron if things went wrong with all the information in it that you could need to figure it out. So that's cool. So right, so you throw this in some method. Oops, yeah. And then you get a nice script that with a couple of if statements is pretty bulletproof but still pretty readable in terms of what it's doing and what commands it's calling. So basically, you don't have to do it that way. Do it however you want. But customize it somehow. If though in some gem, you can use internally and then use that instead of percent acts or back tick, persistently. And then all your calls are bulletproof. They're all log-in. Everything available that you need and it's really the same lines of code. So that is pretty cool. Now we're gonna go to the second sign of unawesome which is crappy user interfaces. So this is much more endemic and problematic and I don't know why, but I will say in learning about this topic, it's very hard to find all these gems. Like try finding the main gem. I just learned about it a few months ago. It's impossible to find via Google. You have to just know that it's on GitHub somewhere and it's in Ruby and you can kind of find it if you do that. So I kind of understand at the same time, hopefully this will help you out a little bit. So here's how to make a crappy user interface for a simple app, right?  For a command suite, here's another way.  That's not good. Because if you're new to RGV, that's not good. You're doing it wrong and you're actually making more work for yourself. And so what's the problem with this? Other than that it's cheesy, it's hard to maintain and enhance. So that means when someone else wants a new feature to your app that you're gonna have to do it. You know, it's hard to add complex features when you're just hacking RGV, right? Or for others to maintain as well. And it's actually more work as we'll see than using some common open source libraries. So for simple apps, there's OptionParser. It's built in, we talked about it yesterday. So here's an example of it. If you haven't seen it, it's super powerful. It's more powerful than I thought and it's really great. So basically you set up this block where the OptionParser is new and inside that block you're gonna have to clear your user interface. And the first thing you must do, I'm saying must, you don't actually have to, but you should, is make a banner which says what your app does and how it's used. Very simple, very nice because in the Ruby community we have very clever names for RGEMs and you might not remember what they are. So having this description is pretty helpful. Six months from now when you don't remember your clever name. So then at the end, we'll see how you specify the options and stuff. You just say ops.parser, it grabs everything off of RGV for you, does the parser. So what happens then? So inside this block here, you can do stuff like this. So you just call a series of calls to the on method and so this says that it'll accept the flag dash dash auto and its documentation is that it means auto regenerate and inside the block, the block gets called if the user specifies this on the command line. And here we're just setting an options name. You can do whatever you want in there, whatever makes sense. And so you can also do negatable switches. So if you do this square bracket no dash around there that means that dash dash auto if the user specifies it will cause true to be sent to this block and dash dash no dash auto will cause false to be sent to the block. So you can make this really fluid user interface which is really handy for cron jobs where you can see exactly what the app is supposed to do. To accept for flags, where you need to accept an argument, you just tell it, you just put the name in there and that will tell option parser that this thing takes an argument. And in this case, you can put any number of these things in here and so that means dash s takes an argument, dash s server takes an argument, here's the documentation and then the argument gets passed. And then here you can see an example doing some sanity checking. Again, you can do whatever you want in here and so we can just kind of barf if we don't like the value. Now, option parser can do a lot of other sanity checking for you. So if you pass a regex in then the argument must match that regex where it won't cause the block to get called. So that's pretty awesome. You can be guaranteed that IP is gonna match that regex. You can give it a list of allowed values. You can give it a map of your keys or the allowed values. Very cool. And for doing all of that very, really minimal work, you get this awesome help statement, right? Yes, right?  And dash dash help works, right? So you're good to go there. Now, option parser is easy for others to modify. When you see an app written with option parser it's very easy to modify it, which means someone else can take care of that for you while you do other things. And it's built with Ruby, so there's nothing to distribute that's really an excuse not to use this. Except if you're doing a command suite, option parser is not well suited. It's kind of a pain to get it to work for these command style interfaces, especially if you want something kind of complex. So there's several options. We'll talk about one that I wrote called GLI because I'm giving the talk so I can choose the gems. But I'll give you a list to be fair later of other ones. So it's basically me to make a command suite app just like the one that I was describing. So the idea is you want to have very polished UI without doing any work and also bootstrap things because I don't want to type either. So let's see what it looks like. Let's say we're going to make a to-do list app. So we'll install GLI and then we're going to make a to-do list app that takes three commands, new, list and complete. So we bootstrap it with the GLI init command and we have a pretty reasonable like Gemified project that we can start working in. So the first thing we'll do is we'll run the app and we can see that we get this nice help system already formatted for us. Obviously, it's boilerplate text but all the help stuff is there. It shows us all the commands. Very easy. And then we do help and a command. We get help specific to that command. Nice. So all the command and option parsing is done. The complex help for me is done and you get a boilerplate project. So here's what it looks like. I think I ripped this off from the GitHub gem. It's also sort of like reg I guess and that you kind of describe things and then declare them. So here we have a global option called dash F that has a default value. Here we have the command list and then inside the command block we declare the options that are specific to that command. So the list command takes a dash L but other commands don't. And then finally we have this action block here at the bottom and the action block will be called when the user executes this command. So the action block gets the global options that were specified, the command specific options that were specified and any other arguments that were on parse from the command line and then you can do whatever you want. So when we fill this all in, we get a nice looking app that has a nice looking help system without a whole lot of effort. So essentially we can just focus on what we need to do. Sons of other cool features, you can check it out there. So option parser and GLR is two examples of dead simple policy UIs that you get. You can spend time working all your app does and not formatting help text or as a case maybe not formatting help text because you skip that part when you don't have the tool to help. Then you can easily maintain the documentation. So future generations will know what your app does and how to use it. So there's a ton of other CLI gems. I'm gonna go through them really quickly here off aka command line app Safari. So for parsing we saw option parser, we saw GLI, there's Thor which is very popular which is a similar thing to GLI. Trollop which is used by Cucumber does both kind of apps which is pretty cool. Methodome which is something I wrote lets you use simple apps and also has support for testing and bootstrapping and for interacting with the user if you must. ReadLine is built into Ruby and it's just like Unix ReadLine so you can make a prompt with tab completion, very cool. And Highline is a sort of DSL for interacting with the user, asking them things, getting info from them, putting it back out. Terminal tables if you wanna make cool little formatted ASCII tables like if you wanna make your own SQL client that's really easy to do. Rainbow is one of about a thousand gems who color your output. It's I guess the first one I found when I searched so now I use that if you want cool colors. So testing and documentation. So Aruba is really awesome, right?  Gemman lets you install man pages with your gem and then read them and then the user can read them which is super cool until you realize that MROF kinda sucks but then there's Ron which lets you write your man page and mark down instead of MROF so you can write like really nice man pages and have them totally distribute with your gem. So, right that's a list anyway this will be up later if you guys wanna check it out and please tell me if there's anything I'm missing cause I always like to hear about new command line stuff. So making an awesome command line app is really easy because Ruby makes it simple with its awesome language and awesome tools that it comes with. So yeah, some of those tools make it really fast to do what you wanna do and future you would really thank you if you use these things the next time you had to throw together a command line app. So if I'm missing something here or if I'm wrong which I doubt but it's possible please let me know as I said last show from my book it's in beta right now which means that you can totally buy it right now and tell me that things are wrong or messed up and I will fix them. So that's really helpful for me cause I wanna make this as good as possible. So that is it thank you and I guess we have about two minutes and 50 seconds for questions. Anybody has any? Yeah, yeah man I forgot to put that on the slide but main is pretty cool.  Most of this stuff does work like the exit codes actually work. This is a Windows 7. The exit codes work standard error standard out actually works redirecting actually works. I was pretty surprised. So the hope is that all the stuff I talk about in the book will work on Windows or we'll have a footnote that says well this doesn't quite work so next time she's out of town I'll test it out. So the question is have I reused stuff on command line gems for anything else? I haven't really, I mean I guess if I'm, it depends on what I command like because if I write like some sort of worker in my Rails app it's technically command line app and I might use it there but inside like a Rails app I haven't so far. All right cool well thank you guys.