Good morning, everyone, and welcome to an upcoming webinar. My name is Melissa Armell, and I own a company called the Stock Swoosh LLC. I'm going to be doing a webinar this week on making six figures a year, training 30 minutes a day. This is something that I've been doing now for quite some time. I've been training for almost six years. And I do a strategy that sets up very, very early in the morning and is extremely profitable. So this is what the webinar is going to be about this week. I own a company called the Stock Swoosh. You can go to my website at www.thestockswoosh.com. Feel free to go there and look at all the classes that I offer. And you can also email me at Melissa at thestockswoosh.com as well. So the webinar is Wednesday, Wednesday, May 14th at 4.30 p.m. Eastern Time. If you were interested in coming to this, it's free. Registration is completely free. All you have to do is go to this link right here, click on it and register for the live event. And I would do it ahead of time to make sure that you get your spot. So we're going to talk about it a great, exciting topic, which of course is making a lot of money. Not only making a lot of money, but making it fast. One of the best things about the way that I trade is that I trade and I'm green very quickly, very early in the morning. There's nothing better than that feeling.  It's exciting. It's passionate. It's a wonderful, amazing feeling and it's a great, great way to start your day. So do you want to make six figures a year? If you do, come to this webinar. Are you a busy person? Very, very busy. A lot of things going on and you also have high income goals. So you've got to find a way to achieve these goals and still carry on your busy life.  You have things to do, people to see, places to go. So you desire to trade, but don't have a lot of time, meaning your morning starts out, all of a sudden things are going before you know it. It's, you know, 8.30 at night. I mean, this is the way that my life used to be in my former career. Now, I have so much free time and it's actually amazing because I'm the one that decides what I want to do on any given day and it's a lot of freedom. Would you like to learn a trading strategy that offers large payouts? This is a chart. This is a stock chart. This is a one-minute chart and we're going to talk about this strategy on Wednesday. It's a strategy that I trade. Do you want to make extra money, but your time is limited each day? In other words, you have this to do at this time, this time, this time. You might have a full-time job, a family, a career and you're happy with it. However, you do have some extra time and you want to make some money with that extra time. It's not enough to take on, for example, a full-on part-time job or 20, 30 hours a week. You have maybe a half an hour each morning, 45 minutes, a brief period of time that you could actually spend doing something else. It's not enough time to dedicate to a part-time job, but it might be enough time to dedicate to trading the stock market. You also might be one of these people where you want a career with part-time hours and full-time pay. You're in a career where you're not happy. You are actually doing a career right now where you don't enjoy what you do and you want to transition. You want to quit the job that you're in and go and train full-time, except for the hours aren't full-time, even though the pay is. That's the other amazing thing about being a trader. Do you wish you had more personal freedom? It is an absolutely fantastic, gorgeous weekend here in New York City. It was like 80 degrees yesterday and it's one of these things that you can have freedom yet this summer to do things. It's not quite summer yet. Summer starts in the next month. You're going to want to go on vacation, do things, go to the beach, enjoy the outdoors, go golfing.  By the time the summer rolls around, here it is. It will be gone. It will be fall and it will be cold and it will be winter ready. I plan on enjoying the summer and really taking advantage of every single thing that New York has to offer the summer and just soaking up the sun. I really, really believe that people should enjoy their life and if you are one of these people where you're not enjoying your life, it's probably because you're working too hard and we all work very hard at our jobs when we take them seriously except for you have to remember to take time for yourself and if you can't because you're finances, then you need to find a different career or somebody's going to bring extra money for you so you can take a little step back and take some time off from your regular career. So let's talk about 2014 and you. Ask yourself, what are your financial goals for 2014 and are you on your way to achieve them or are you falling short of your mark? Now is the time to consider where you're at with your income goals and trading goals for 2014 and reevaluate. Half the year is almost over. Are you where you want to be? I mean, really, it's hard to believe that it's almost June. It's almost June and three weeks is going to be June and half a year will be almost over.  And if you're not, it's time to evaluate. You can still meet your mark. You can still meet your goals for this year. You can still get there. There's still time. Not that much, but still time. Trading the stock market offers a lot of money making opportunities every single solitary day. Many people don't have a lot of time to devote to trading. However, there is one trading strategy that pays good risk to a word that sets up. It sets up very often in the market. It's a strategy that happens quickly in the morning. It's the way that I train. I'm going to discuss this on Wednesday because if you want to make money trading but don't have a lot of time, this new method is for you. If you are serious about making six figures a year in the market or more, then you won't want to miss this lecture. I, me and Melissa, I am passionate about trading. I'm absolutely 100% passionate about my trading strategy and trading the market. Are you? If you are, this is a great opportunity for you to actually learn something that works and can pay you and it doesn't take up a lot of time. And if you are not passionate about the market, then I may awaken that in you. Maybe you were years ago and then you lost the passion that you had for the market.  I am doing that for people. I'm doing that for people young and old and it's very exciting for them and it's very exciting for me to be able to get people excited about trading again. Trading and making money. This may be your true path to financial success if you haven't found it yet in a career. So this is a play back from the beginning of May. Really, really nice move here in AVP. Beautiful move once again. The stock set up here in the beginning part of the day. This is the open at 9.30. I moved down into 10 o'clock. The whole move for the day was open. I moved a little teeny, weeny, weeny, weeny bit more down here but the whole bulk of the move, 95% of the move was down in the first 30 minutes of the day. And this is what I call the money move. This is how you're making your money. The entry time was 1404. The stock was 1416. The risk was 12 cents. This is an advanced risk. You can certainly risk less than this but again, you can make a lot of money if you really know what you're doing in the market anywhere between four, five, 600 bucks a trade. And actually, you know, this is a good risk for a day trader and it's a good share size. But if the stock drops a dollar and you have 5,000 shares, it's 5,000 bucks. Now, not every stock is going to move a dollar today. You're looking for something like that. Sometimes they move only 50 cents but even that would be $2,500. In the case of the stock, it moved approximately 75-80 cents in the morning in 30 minutes. In 30 minutes, the stock moved 80 cents. That's fantastic. Trouble profit, 39.50. And now here's the kicker, the risk to reward. That means for every dollar you risk, you made six and a half bucks. That's a really solid trade. And these are the trades that we're going to talk about on Wednesday and how to do this and how to do it over and over and over again. But I'm going to talk about this lately. Every morning, I'm getting up lately and every morning I'm hitting it. If it's there, if it's there, I'm hitting it. I'm seeing it. If it's there, I'm going after it. Learning something that is effective is important. Your brain, how you use it to your advantage is what's going to take you to the next level in your life financially. You have a great brain. You've got to use it. If you don't, then it's going to waste. You've got to learn something that's to your advantage that you can use to make you more money to be successful. It's not about how hard you work sometimes. Sometimes it's about how smart you are. And if you want to become smarter in the market, you can learn how. It's not like the level you're at right now. You're going to be at forever. You can gain experience, gain wisdom, gain intelligence in trading in the market. If you are a busy person, time is important for me. Actually, it's becoming more and more and more important. I'm valuing every second that I'm breathing, every second I'm alive. I'm enjoying my life so, so, so much this year in 2014. I'm just having such a fantastic world right now. And it's really crucial for me to think about the things that I'm doing with my time. If you want to be financially secure, earning money is important. It's very important. And again, going back, it's about learning, learning, learning, learning, learning. You've got to learn it. In order to make good money, six figures a year and more in the short period of the day, guess what it has to do with? Knowing what to do. Knowing what to do and going out and hitting it. So learn how to make money fast in the morning. Come to the webinar. It's this Wednesday, May 14. Empower yourself today to trade the market. The class I teach on how to do this method is called the Golden Gap Course. It is a complete system to use to trade. All the pieces of the puzzle that you need are strategy, the entries, the exits, the targets, everything I teach in the class. It's called the Golden Gap Course and it is a full two-day course on how to strategically find pick-and-play stocks that are professional bearish gaps. Retakes are free. The class is online. And you can be anywhere in the world and take the class because it's online. It is a professional bearish gap system. Now, there are two classes I'm doing next week because there are so many people that are interested in my method. And so I'm doing a one-time only weekday class. I will not be doing this again this entire year, 2014. The dates are May 19th, 20th, and 21st, which is going to be Monday 12 to 4, that week, triple trade in the morning, then have the class 12 to 4 Monday, 12 to 5 Tuesday and 12 to 5 Wednesday. The weekend class will be next weekend, May 17th and 18th, 9 a.m. to 5 p.m. Eastern time for Saturday and Sunday for people that want to do it, that are very, very busy people and can't do it during the week and can do it on the weekends. So I'm giving two options here. It's earning season. It's second quarter earning season. There's a lot of people that want to trade and want to learn how to trade. And this is it. This is your opportunity to learn this month. The cost of the class is $24.99. Email me at Melissa at thestockswitch.com if you would like to sign up. The cost of the class will be increasing this summer. If you have been following me for a long time, a year or more, and are interested in learning this method and want to sign up, there's two classes this month if you want to do it because the cost of the price of the class will be increasing. The value in the cost of the class is astronomical. I have people that have been training with me take the class and make the money back for the course in one trade a week or in a month. I'd on many, many different levels of risk, not just advance, anywhere from small to medium. In fact, I have a brand new student this past week. This past week, she is trading a very, very, very small account. She has very realistic goals and she made $500 this week and she was trading share sizes anywhere from 20 shares to 50 share lots and she made $500 and I'm trading several thousand share lots. You have to look at the size of your account, your monetary account, and size or risk accordingly, but for someone to make $500 in the past week, trading my system, taking no more than 50 shares per trade is phenomenal and it's amazing and she's doing very, very well and she's a brand new person. So this is for everyone. People with a lot of money, people with a small amount of money, people who have full-time jobs, people who have part-time jobs, people who want to trade full-time, which is only for in the morning period of the time, people who are experienced, people who are inexperienced. I'm teaching people who have no experience in the market at all, straight out, flat out, simp experience that we're trading in the market. I'm teaching people like that and I'm teaching people that are experienced as well. It doesn't matter if you're young, it doesn't matter if you're old, it doesn't matter if you're a woman or a man. I'm teaching everyone and it's been just terrific. It's been exciting for me. It's making even more exciting every day I get up to trade to hear the stories from my traders and I'm just very proud of everyone. I'm proud of everyone including myself. So you can still have the personal freedom you want this year. Oh gosh, I cannot wait until summer. It's going to be a great summer. It's going to be the summer of the socks whoosh here in Manhattan. So have a great day everybody. I will see you at the webinar on Wednesday, 4.30 Eastern Time, May 14th and we're going to do a live market review after the webinar too. So try to make it for that. It's going to be from 4.30 to 5.30 and then I will do the live market review when we're done with the lecture. See you on Wednesday everyone and have a super duper day.


Hi everybody, it's Misty. We have presenters from Consensus Lab, CryptoNet, and ProbLab and we can get started with Matej. Hello everybody. Thank you Misty. Let's start with our demo of the reconfiguration of state mission replication protocol. This is about reconfigurable state mission replication in Mir. So just a quick recap. What is Mir? Mir is a framework for implementing distributed protocols that we are developing at Consensus Lab. It focuses on Consensus Protocols. It is modular and flexible and it's available under the link here. It's clickable in the version of the slides that I linked in the Google Doc. It's a part of a Consensus Lab Y3 project about scalable consensus that you can also check out. Okay, this is our repetition, so I went through it fast. Now, in this demo, I'll be showing reconfiguration. So what is reconfiguration of such a system? I don't know what exactly the backgrounds are of the people present, so I'll have a quick intro of what that actually means. So in a distributed system, usually under reconfiguration, we understand dynamically the means at runtime changing the set of nodes running a distributed protocol. So we have some nodes called validators in Lotus that are executing some agreement protocol, and then we want to add some nodes while the system is running without disrupting the functioning of the system. And we also want to make it possible for some other nodes to leave and seamlessly transitioning to new configurations. The background of how that works in particular with our system. So state machine application in our system is implemented like this. First, we have the mempool that basically stores unreliably incoming transactions. So all the transactions that are coming in from clients, they are stored in the mempool, but the mempool barely gives any guarantees about whether these transactions survive an old restart or basically that's it or some storage failures. So this mempool is kind of a best effort pool of transactions. So from here, transactions make it in batches to the availability component. And the availability component in our system is basically reliable transaction storage. So it also executes a protocol and when it receives a batch of transactions, it makes sure that enough other nodes reliably store all these transactions, such that it's sure, such that it's certain that these transactions will be available for anybody who asks for them. When this availability of the stored transactions is ensured, it issues an availability certificate. So for each batch it receives, it issues an availability certificate when these transactions are available. But it is not guaranteed that all nodes issue availability certificates in the same order. That's why these availability certificates go to the ordering component of our system. And it establishes a total order of the availability certificate. So this is basically the consensus protocol, the core of the consensus protocol. This thing agrees on the order of the certificates. And then when at the output of the ordering component, we get an ordered sequence of availability certificates. They go to the execution stage. And at the execution stage, these availability certificates are transformed back to actual batches of transactions that are fetched from the availability layer. So each availability certificate corresponds to some transactions. We fetch those transactions. We know that they are available because it's certified by the certificate. We get the actual transactions, including the payloads, and we can execute them. More in detail, what happens is when this availability certificate comes to the execution stage, it comes ordered with respect to other events that happen. And our system works based on what we call epochs. It is not the file coin expected consensus epochs. This is a different notion of epoch. And so basically what we get here is certificates interleaved with new epoch events. All this is totally ordered. Then as I said, we fetch the batches of transactions from the availability layer. And then we have another ordered sequence of batches and new epoch events. And here, some of these transactions can be special configuration transactions. And this is what is important for the reconfiguration that I'm going to show. So some of these transactions are special ones that change the configuration of the system. They are filtered out here. And they are also ordered with respect to epochs. And then the system contains some configuration state. And whenever there is a new epoch, all the configuration transactions, they take effect. And all the components of the system receive an event that they need to reconfigure. And then that means that they need to create the connections to the newly coming nodes, maybe close the one to the old, close the connection to the old nodes, and do a bunch of other things that are required for the system to smoothly transition to the next configuration. And the transactions that are not configuration transactions, they're basically just application transactions. They are assembled into blocks and ships to actual execution. We dynamically change the set of nodes. This is what we will show in the demo. And we will show it in a chat demo application that I was using also last time to show the fault tolerance of the system. And then Dennis will show how this is integrated into Filecoin and how we can add Filecoin nodes running near consensus and still reconfigure. All right, so here I already have prepared four nodes that are running a demo chat application. If I just run it, they have a configuration, they have some initial configuration you can see here in the argument. It's a static configuration of four nodes that each of them loads to know how to connect to the others. For example, I can, this is a simple chat demo application. I can say hello from one node and the others receive the message. If everybody says hello at the same time or let's say they say hi, everybody gets the chat message in the same order. I modified the application such that I can have special messages. When you type a special chat message, it actually is interpreted as a configuration transaction. And I need to just tell the system which node and at which address will be joined. So I have another node ready here. So here I run the chat demo. I give it a new configuration that already includes the four nodes and itself. I tell it to use the leaping to be network transport. And I tell it that its own ID is four. So basically each node can be at initialization, can be configured with a static membership file saying that ID, node with ID four, for example, which would be this node is at this IP address at this board and so on. Let me actually copy this because this will be useful. So I'll just run the newly joining node with the new configuration. And here I can send a special message now that starts like config and node. And now I paste the ID of the newly joined node and its address. It interprets the message as a new joining node and it's adding the node. Now this node it was complaining for some time that it couldn't find the other nodes because they hadn't talked to it yet. But now the newly joining node downloaded the state. The state consists of all the messages that have been sent so far and can send messages here and all the other nodes they found. So it's integrated in the system now. So thank you very much. And I'll give it back to Dennis to show how this works in Udica. Okay. So in this, in the second demo, we will use Udica client instead of Mir's chat application. And the demo will be as follows. So we have three Udica nodes with proof of work in the root net. And then we will create a subnet with Mir consensus protocol containing initially two validators. And they will be creating blocks. And after some, after some time, we will add a third node to that subnet. And we will see that this new node will be able to create new blocks in this subnet. So this is, that was a scenario. And now we start our script with three Udica clients and with proof of work. Here we can see a miner and a demon for each node. And now we can, so we have started proof of work consensus on all nodes. And now we can see that each client is mining blocks and gets rewards because of we have only three nodes. The fourth node is, we can see that some build miner blocks. Now, when all nodes have enough tokens to create and join a new subnet, we create a subnet with Mir consensus. And it requires at least two validators to start mining in this subnet. Now the node zero is joining this subnet. And in well address parameter, we we provide a full node ID from Mir perspective. So that's lippy to P identity. Then we do the same for the second node. And now to, we can see that both validators are mining blocks in in the subnet with Mir consensus protocol. After that, we add the third node. And to add this node into Mir, the reconfiguration mechanism is used. We do the same, start mining. And now you can see that the third node is mining blocks. To prove that the last node has connected to the network, we will send tokens from the third client to the first client. We will send three tokens. And we'll check that the first node will get it. So we provide the address of the first node and send three tokens. And now let's check that this, the first node has received it. So we should have three tokens. Yes. So that's it from, from my side. Thank you very much. Yeah. Thank you. And we have up next, Nicholas, and he'll be doing a short overview of the Medusa project. Hi, everybody. Today, I'm going to talk to you about Medusa project. I've been working on the last few months at Kubernetes. I was going to talk about threshold network and unshaded data management. So let's derive writing. What is Medusa? Medusa, I'd like to describe it as a toolbox to do many things. To do programmatic access control, which is the first application we're going to focus on, on chain, time encryption, one has begun, then many other stuff. Basically, you can think of it as Medusa knows smart contract or any application, but we're focusing on the central application today to all the private key via threshold network. We have a demo of access control we're going to showcase later on on Gurley, a film, and let's dive right in what it means all this. So let's take a step back and what is the problem exactly? Like right now, in terms of private information, there's nothing private basically on chain. So everything you send is kind of public. And so the smart contract act as a third party, but it cannot hold anything private to its own. So it's a complete state public third party. And so that means the smart contract cannot sign or perform any kind of operation on chain. It's just attesting and running some logic, but not logic, which includes private information. What do we want to do if we could have the possibility of having a smart contract which has a private key, but we could do many things. We could do, for example, one thing, but which are the focus of this talk by now is probabilistic access control. So for example, you can access to this document if you show you have this entity during this event, or I will give this access to this mailing list to all ads protocol that AI user or anything, any condition you can actually prove in a smart contract always. So general concept of on chain balls. And so how does this work in the context of Medusa? So Medusa is kind of a network by itself, okay, network of nodes. It's a special network. So that means there's some kind of assumptions here about the honesty of the network. So we need more than 50% can be any threshold to be honest. And in this case, the network will hold the key without anybody knowing it. So no nodes of Medusa will know the key and nobody will know the key, but here the smart contract can use it. It's very, and when you integrate this design into the blockchain assets, then you kind of have this record like design kind of similar to chaining for those we know. So when the smart contract wants to, for example, let's say one operation you can do with a private key is decrypt something. So smart contract can see a decryption request as a Medusa network, and then second, the Medusa network will decrypt it and push back the plain text. Okay, so you really have to think about the Medusa as an extension of the smart contract in this way. And so what you can do with it now is you can do things like program to get control in a very easy manner. So basically the, imagine plenty of application that needs to have access control, like for document sharing or private meeting list or even the music platform, whatever, they delegate better than let's say the key to Medusa in some sense, they don't do anything, but when they use Medusa, it's kind of similar to, it's better the key, but they get to Medusa and they ask the Medusa network to operate on their behalf. And so any smart contract in Medusa, there's no registration, you just say, Hey, Medusa decrypt this thing. And that's about it. It's like one call. There are kind of two modes about Medusa, like you can have a global decryption where the Medusa network completely decrypt the cyberdex and push it on chain. So now you are rebuilding the message, but this is, this can be useful for application like, I don't know, bets or auctions being like this, but you can also, and this is the focus of the demo that we have today, about focusing on that we encrypting cyberdex. So if this is what we need for access control management like the document sharing, we request that you, that the Medusa network decrypts this document explicitly for Bob. So it requests the decryption for Bob and the Medusa network is decrypting it with just re-encrypt the document towards Bob. So how does it work? Let's say from end to end as user, so let's say imagine we have Alice, which has new super top secret documents. First thing it does is encrypting it. Okay. Right. So now it has a cybertext. Second thing it does, Alice will submit the document or the key of the encryption. It will submit the encrypted key of that lead to the encrypting of the good documents and will lead to an event on Medusa. So now the Medusa network is aware, but there is this encryption document somewhere, but it doesn't do anything yet. Right. And later on, it can be one week, one month, one year afterwards, then the bottom comes in and say, Hey, I want to read the documents. So now it goes to the document sharing smart contract and say, Hey, I want to read. And now the document sharing platform needs to say, okay, is Bob authorized or not? And this is custom logic. Anybody could come call this own custom logic. It could be Bob is more than 18 years old, or if he's taken, you know, if or somewhere, like it can be anything. And then if the Bob has the right to access the document, then the woman sharing platform will ask the decryption, the re-encryption to out to the Medusa network. And so now the Medusa network reads everything with the decryption request and the submission event formats. And we do a re-encryption. So it will never decrypt the site for texting at no point in time. The encryption will be revealed. And so then once that does meet internally, it will push the re-encryption on chain to the Medusa smart contract, which will push it to the document sharing. And then Bob will say, Oh, okay, my re-encryption is ready. It downloads it on the browser, on his common line interface, whatever. And then you do a local decryption. So then he can read the document by himself locally on his computer. And that's kind of the whole workflow we've been working on right now on this Medusa project right now is only me for this last month. And we just hired somebody that will have me on the smart contract on the backend side, Jonathan, and so on. And then we have a working protocol concept codes. You can check out the code, which is not completely public yet. So you need to ask me first if you want to have invites. It's based on rusts for all the backend and the 3DT right now, because we deployed the proof of concept code on girly. And the nodes communicate barely P2P. We were running server pretty big stuff. We have a demo, which I'm going to show you later. On the future, we want to expand a little bit the use case. So like I said at the beginning, there is a test control, but we can do or see one as we can, we can do time encryption, where upon any condition or witness encryption, general witness encryption, open any condition, then we reveal something. We can also do privacy on top of what are the conditions for somebody to be able to ask the decryption. This could be private as well. So you could not reveal that your name is bothered by your more than anything else, but if anybody could verify that at least you are more than anything else, then you are somebody. And MPC could help there. And also, we are kind of trying to have some kind of research acts on the extending and the scalability of the basic cryptographic primitives that we use, which is special cryptography. And as such, at least we have the first iteration. We made the first protocol set code about DKG. So the underlying cryptographic primitives, which can run with other nodes, which is not familiar now, and will lead to maybe a production thing later on, but we need to decide where we're going to go. And so this is a very brewing project, and if you want to get into a hear more and participate, or there's plenty of things to do, so don't hesitate to contact me. And now I'm going to show you a quick demo. This is the ACL contract, the Access Control List contract, where it lists only reader and writer roles. I write a text, a cypher, and something. It encrypts over the chain. And there's a reader rule I can show you later that will try to decry, ask the decrypt. And this is the main data contract. So let's say I want to type a small secret here. Okay, so I play with my Metamask, I confirm, it's good. This is on really if you're on testnet. Now I will switch to a reader one. So I'm just switching keys. And now I can read, I can read all the side products.  I just made one here, you see. I will ask to decrypt this one. So again, it's a transaction that was on chain. I asked to decrypt. So my keys is white listed already on the Access Control List smart contract. So I can already read anything at once. This is a very basic demo. But the idea is that anybody can code his own rules. Like there's no, it's just a major size, just a toolbox for people to use on tablets. And now we submitted the, the transaction and now we're waiting for the Oracle results. And in the meantime, because it takes a little bit of time because we are on girly, I can show you that there are four participants in the network right now. There have been four nodes that are holding the private key and Medisa. These are all the US addresses. And there is a district public key to where to add the chain groups. And here, I signed Medisa to Uber Banana, and that's it. So you see I can decrypt from the border as well. And that's it for me. Thank you everyone. Awesome. Thanks so much, Nicolas. And then the last demo that we have is for me honest. Hi everyone. So I'm going to start, of course, this is work that has been done in Problab, which is focusing on protocol benchmarking and optimisation. And I'm going to start with a little recap of what I said in June on what is a provider record and where does it live. In order to do that, I'm going to go through the IPFS design on the content lifecycle. So what happens from content publication to content request and retrieval. So assume you have a document, you hash it, and what you put on the IPFS, as you all know, is a provider record. The provider record includes the contact details of the publisher as well as the CAD of the person publishing the content. So what the DHT does then, it's doing some magic and it's finding a proper node to store the provider record. Then on the other side, on the retrieval side, the requestor would have to know the CAD of band. They're going to go and ask people through BitSwap. They're immediately connected peers. And if those answers are negative, then they're going to go to the DHT and ask for the same CAD, which the DHT hopefully will again do its magic and hopefully end up in the same node and request for the provider record. So at that point, the requestor has got the provider record. So they do have the contact details of the provider, which means that they are going to contact the provider, set up a connection and transfer the data. So what is the hypothesis of this work? So as we've seen, a provider record is a small file that includes the contact details of the content publisher as well as the CAD. And it is published in a number of different nodes in the network. So in the previous example, simplistically that was one node, but in reality is 20. And the replication here is done because we want this provider record to be live in the network, to be stored somewhere. So in case some of the nodes go offline or they're overloaded or they cannot respond to the request, this means that there are going to be others that have the provider record, which are findable, they are online, and they can provide it to whoever requests the content. If there is no provider record in the network, if all of the nodes have gone offline, then this means that the content is unreachable, which is pretty bad. So the hypothesis for this work is that because we've seen high rates of churn in the IDFS network, which would reach up to 70% of peers, have left the network within after only two hours after joining the network, this means that a lot of peers, a lot of those 20 peers have got good chances of having left the network, which leaves a few replicas of the provider record to the inside the network. So we wanted to see whether there are cases in the IPFS DHT where provider records basically are not live anymore, and therefore content is unreachable. So what we did is Miquel build what is called the CAD order, you can find this URL down there on GitHub, which basically is a tool that produces content, produces CADs, produces the provider records of those CADs, it stores them on the IPFS DHT, and then monitors those specific nodes to see if they're still online, if they're providing the provider record, either serving the provider record or not. So there are several features, I'm not going to go into the details there, but that's the main functionality. And we tested that over the live network, and we wanted to answer some questions. So one of the main questions is, as I said before, does the record stay live until the republished time? So provider records are republished every 12 hours to make sure that they're alive in the network and despite network churn, we're still going to find the next 20 peers that are online at this point in time in order to replicate the record. The answer to the question is yes. And we see in this graph where we have on the Y-axis, we have the number of nodes where PRs are available, and on the X-axis we have the time since the CID, the CID has been published or the record has been stored elsewhere. So it goes from 0 to 38. So the provider record would be republished at this point after 12 hours. But despite that, obviously the CID order does not republish records, that's the whole point. So we see that the record stays live to approximately 15 nodes for more than 35 hours, which is a good thing, means that the current DHT keeps records alive. The node content is unreachable. Now the next question that comes to mind is, if records stay live due to hydros, and yeah, we excluded hydros from the requests that we've been trying to make in order to get the provider record, and we found out that excluding hydros, we still have on average about 20, sorry, about 12 nodes that keep the record alive for more than 35 hours. Again, great news because it means we are not really affected or not affected, but we're not really dependent on hydros. So what does this mean practically? It means that perhaps we can reduce the value of K from 20, which is the current replication factor to 15, and we've done experiments on this as well. So we reduced the replication factor, we published CIDs, we published provide the records, and we monitored again for how long do peers stay online and keep the provider record live. Again, we see that of course there is a little drop down from 12, sorry, down from on average 15 to an average of 10, which again stay live for more than 35 hours, which is again great news. It means we can apply some optimization to the IPFS DHT as it is today. What else does this mean practically? As I said, the publishing table on the IPFS DHT is 12 hours, so perhaps we could consider increasing the publishing table, and we found out that we can at least double it because we've seen that everything stays live for at least 35 hours, so even more than double that, than double the 12 hours would still be okay in the extensive set of experiments that we've run. But what do we need? There is something that we need to be careful of at this point. So when we publish a CID, we're trying to find the 20, the K closest peers to the CID in extra distance in the CID. So we need to make sure if peers come and go, if those peers that we have chosen in the beginning of that publication time are still the closest peers after 12 or 24 or whatever amount of time we're going to choose for the republishing table. And again, we find out that 15 out of the 20 closest peers chosen initially are still among the closest ones after more than 35 hours. So we see here that initially it's around 17, it drops down to 16, and then stays stable at 15 nodes. So this means that 15 nodes actually keep the provider record live up until 32 hours at which point it goes down to 14. Now, question here is does this include the hydras? It does include the hydras, but again, if we exclude the hydras, we're going to see a drop of two to three nodes from that. So it would go from an average of 15 to an average of 12 and would stay like that for more than 30 hours. The conclusions of the study. There is a final recommendation that will be coming soon. We found out that definitely there is significant space for improvement. And these builds on the case that DHT servers and DHT, sorry, content providers are actually overloaded. They have to run high CPU machines. They have to consume lots of bandwidth and so on. It has been a long-standing issue in the IPFS network. So this means that if we can reduce the overhead, then this will have quite significant impact. Now, roughly if we go from K20 to K equal 15, we roughly have 25% reduction in overhead. And if we publish, if we increase the publish interval from 12 to 24 hours, obviously you understand that this has got about 100% reduction in overhead. Of course, it has to be noted that by overhead here doesn't mean the entire overhead of those machines is just everything that is provider record related. So sending provider records, receiving provider records, storing provider records and so on. We're not aware what percentage of the overall energy consumption of the servers this is, but definitely this is going to be worthwhile reduction. We've been working on this with the team. As I said, we've got more grants on radius. We have the final report, which is very extensive, several pages with many tens of more figures and results than what I presented here. You can find it in the github.com.com. It's all requests 16. It's soon to be merged, but if you're eager to find out more now, head there. That's it. Thank you. You can get in touch. We're leaving a pro blog on IPFS Discord and also on Fiber and Slack. Thanks everyone. Cheers. Well, thank you everybody for attending and Mother of All Demo Days. Thank you for all the presenters. Matei, Dennis, Nicholas, and Yanis. The next Mother of All Demo Days will be Thursday, October 6th. Thanks everybody.


Hello, and welcome back to theCUBE's coverage of splunks.conf virtual this year. I'm John Furrier, host of theCUBE, and one of the great reasons of being on site with the team here is we're going to bring remote guests in. Remote guests, well, no stories too small. We bring people into theCUBE to have the right conversations. We've got Brooke Cunningham, area VP of global partner marketing experience. Brooke, welcome to theCUBE. Thanks for coming on. Hey, thank you, John. This is my six.conf, but this is actually my first time being on theCUBE, so I'm delighted. Great to have you on. These new hybrid events, we can bring people in. You don't have to be here. All the execs are here. The partners are here. Great news is happening all around the world. You guys just announced a new partner program for the cloud called Partner Verse Program. This is kind of, you know, mostly partner news is okay, okay, partner news, partner ecosystem, but I think this is an important story because Splunk is kind of going to the next level of scale. That's to me is my observations walking away from the keynote. A lot of partners, great technology, great platform, a lot of growth with cloud. We had Formula One on. You guys have a growing ecosystem. What is the new announcement Partner Verse about? Yes, thanks, John, and you are spot on. We are growing for scale and Splunk's partner ecosystem is 2,200 strong. And we were so delighted to have so much partner success highlighted today on the keynotes. And specifically, we have announced an all new Splunk Partner Program called the Splunk Partner Verse. So we're taking it to new frontiers for our partners, really built for the cloud to help our partners lean into those cloud transformations with their customers. Great, bro, can you walk me through some of the numbers inside the numbers for a second? How many partners do you have and what is this program about specifically? Yeah, so 2,200 partners and we featured some amazing stories in the keynotes today around some of the momentum we have with partners like AWS, Accenture, Blue Boyant, a partner that just recently re-architected all of their managed services from Splunk Enterprise to Splunk Cloud because as they put it, Splunk is the only solution that can truly offer that hybrid solution for their customers. So all new goodness for our partners to help them lean in to get enabled around all of the Splunk products as well as to differentiate their offerings with a new badging system. And we're going to help our partners really take that to the market by extending and expanding our marketing and creating an all new solutions catalog for our partners to differentiate themselves to their customers in the market. You mentioned a couple of things I want to double down on this badging thing, get in some of the nuances, but I want to just point out that, and get your reaction to this, when you see growth, and I saw this early on with AWS, early on when they were forming, when you start to see the ecosystem grow like this, you start to see more enablement, you see more money making going on, more custom solutions, more agility. So you're starting to see these things develop around you guys. So what does all this badging mean? And what's in it for me as a partner? How do I win on this? Yeah, great question.  And it's specifically a major part of what I do in my role. So we create a lot of forums to get that real deal partner feedback. What do they need to be successful with their customers? Especially as Splunk continues to expand our portfolio. And we heard some really clear feedback from our partners. Number one, they need more enablement faster, especially all those new products, they really want to get enabled around new product areas like observability their customers are asking for it. They secondly told us that being able to differentiate themselves to customers was key, and that showing that they had core expertise around specific solution areas, types of services, as well as specializations. For example, some of our partners that are authorized learning partners, they really wanted to be able to showcase these skills and differentiate that to their customers in the market. And they saw a role for us at Splunk to really help them do that. And so we took that feedback and really incorporated it into this new program. The badging specifically will help to address some of those things I mentioned. So for example, a lot of badging around those use case areas, security, observability, out migrations, as well as specializations, like I mentioned for things like partners that are doing learning specific partners that are really helping us expand our reach in different international markets and so on. Let me just ask question on the badge, if you don't mind. So you mentioned almost like you were going through like verticals. Is badging to be much more about discovery from a client and user customer standpoint? Are you looking to create kind of much more categorical differentiation? What's the purpose of the badge? Because I noticed it was like different verticals. I heard security and other things. Yeah, so I would say think of it as both. So for example, our partners go to market with us in many different ways. Some of them are selling, servicing, building. So there'll be partner motion badges to really differentiate the different ways that they're supporting customers from a go-to-market approach. And then additional badging to help really identify some of those specialization areas around whether that's plump use cases, in-person specializations, and more. For example, a specific badge that we're rolling out right here at .conf is around cloud migrations. And partners will be able to get started to get engaged on that badge in preparation for our full-scale launch in February. Well, they'll start to be able to take advantage of learning pathways, get their teams skilled up, and that will then unlock some new incentives as well as benefits that they could take advantage of. Things like accessing more of the Splunk cloud experience and the proof of concept platform and really giving their teams more capability and resourcing. You know, I saw Theresa Carlson in the hallway here at .conf and she and I were talking about how AI and data is enabling a lot of people to create these solutions. So, you know, you got kind of this almost like Amazon Web Services dynamic where it's growing really fast and we're hearing stories how data is driving value. We heard Formula One on theCUBE. The keynotes were given some examples. As you start to see this momentum kind of scaling up to the next level, if you're enabling customers, which you are with data, the monetization or the economic shifts, right? So in its healthy ecosystems, the partners create solutions, they deal with the customer, they're making some money, right? So, can you share your vision on the unit, on the economic equation of how partners are tapping into this? Because I almost imagine 1,000 flowers are blooming and then you start to see more value being created and Splunk also gets a cut of it, but there should be that kind of dynamic. Can you talk about that quickly? Yeah, absolutely. In fact, one of the things that I have the opportunity to do with our partners is study our partner's success and profitability. And some of the things that we learn from those studies with our partners is that what's really helping our partners to grow their practices with Splunk and their profitability with that business is really the stickiness that they have with their customers, being able to deliver solutions and services and really be those subject matter experts for their customers.  So for example, many of our partners came from a security background and they are super deep, super knowledgeable around security and they are trusted by their customers as the subject matter experts around security. And so many of them are starting to lean in on some of the new additional use cases. Observability is a hot topic with our partners right now. It's a new and emerging use case for them to transition some of the same sense of data that they are addressing in their current deployments with their customers and bring new value with those new cases. So that's where we're seeing partner profitability grow. I love the channel dynamic there. We got indirect and value creation. I got to ask you about the data dynamic. Of course, we all know about the market and recent story, software is eating the world. Okay, software ate the world, okay. Now that's done. Now where data is continuing to drive the value proposition. And so that's going to have an impact on how customer, your partners serve their customers, ultimately your customer at the end of the day. How is that happening from a success standpoint? How would you talk to where people are in the progress of bringing the most innovative solutions? Where's the headroom? Where do you see that going, Brooke? There's, I would say there's just endless opportunity here. And we just see so much innovation in our partner ecosystem to create purpose-built solutions for their customers' business problems. And that's where I think the value of the data comes to life, really turning that data into doing as is really thematic for all the things that we're talking about here at .conf21 that our partners really see these opportunities and then to replicate some of those same solutions for other customers in the same cases. So for example, really specialized solutions for healthcare where they're providing access to all the data across the hospital or you heard in Garz keynote about unlocking the value of SAP data. This is just a huge opportunity, accessing all that data and really turning that data into doing. And we'll be talking even more about the new SAP relationship and the value for the partner ecosystem to go address those SAP data sets and their customers. We'll be talking more about that on our partner feature section, which is tomorrow in day two of .conf. Well, you guys have a nice mix of business in the partner ecosystem from small boutiques to high-end system integrators and everything in between. I noticed you're doing a lot with Accenture. Could you talk about how you guys are partnering with the large global system integrators because they are becoming their own clouds. So, you know, as Jerry Chen at Greylock says, as are these castles being built in the cloud with real competitive advantage with data. Again, this is a new phenomenon in the past, really two years just starting to see explosion of scale and refactoring business models with data. What's your reaction to that? Absolutely. In fact, we are really leading in with some of these global systems integrators and you heard this exciting news in Theresa Carlson's portion of the keynote earlier today where we've announced Accenture partner business group together and we're so excited about the Accenture and Splunk partner business group. It's gonna elevate the Splunk and Accenture partnership. Accenture has invested in thousands and thousands of joint professionals that are skilled up on Splunk. They are building purpose solutions. We have so many amazing examples where Splunk and Accenture work together to solve real life problems. For example, there's a joint solution that helps address anti-human trafficking. There's a joint solution that helped with vaccine tracking. I mean, just really powerful examples that are just really extending value to customers and solving real life data problems. Well, you guys have a lot of momentum, Brooke, congratulations on the success and partner verse. We're going to follow it again. It was built for the cloud. I noticed on the headline it says Splunk launches new partner program for the cloud. Was there a partner program for the on-premises and what's different about on the cloud? Was it kind of new? Everything is cloud. What does that mean, that statement? Yeah, absolutely. So we, as we've all seen, customers are leaning into the cloud. That growth and movement to the cloud just accelerated during COVID. And so part of that feedback I referenced earlier that we heard from our partners, they said, we need help. We need help moving faster. And so that's really the underpinning of the all-new Splunk partner verse program is to really help that acceleration to skill up our partners and give them the tools to be successful. And so with that, we did want to rebrand and reinvigorate it to really signal this newness. And as I was mentioning earlier when we were talking about the badges, it's really about making sure we're providing the partners the right enablement so that they can be ready and able to support their customers on this journey to the cloud, as well as the access, the resources, the support and the marketing so that they can be successful and really feature their expertise and value in the marketplace. Well, Brooke, I want to get one final question before we go, because I know you have a lot of experience in partner ecosystems over your career, and we just interviewed the Formula One CEO, Zach Brown, and they've been very popular with the Netflix series Driving to Survive. And I was joking with him, driving value with data. As channel partners and your partners look to the post-pandemic survive and thrive trend that people are going through right now, what should they be thinking about when they look at partner verse and how Splunk can help them drive an advantage, not only to survive, but to actually drive to an advantage? I just see this as an opportunity for our partners that haven't already leaned into the cloud and helping their customers migrate to the cloud. Now is the time. Rapid cloud acceleration is just essential for organizations to reach their most critical missions and their outcomes. And the Splunk Partner Verse program is a significant move forward for our Splunk partners. And we want to pursue a massive market opportunity focused on the cloud with our partners for our customers. So I just really encourage our partners to engage, participate, and join us on this journey. Well, there's a lot of evidence to support this vision with pandemic. We saw re-platforming and refactoring the businesses in the cloud at speeds of unprecedented deployments. So cloud can bring that scale and speed to the table. It's really incredible. Brooke, thank you very much for coming on theCUBE. Remotely, thanks to have you here. Thank you. This was a delight. I really appreciate the time, John, and very excited to have my first opportunity to be a part of theCUBE.  We are here in the studios, Splunk Studios for their virtual event here with all the top executives and partners bringing in guests remotely. It's a virtual event. Soon we'll be back in person. I'm John Furrier theCUBE. Thanks for watching.


Hey folks, in recent episodes, I've been working on a project with the end goal of creating a world map that has color-coded the level of droughtiness for the last month relative to that same period of time over the past hundred or whatever years. To do this, I need to consolidate a lot of data that I've been pulling down from the NOAA website. This data is being reported for 120,000 different weather stations. My vision is that I want to count or sum up the total amount of precipitation over the window of time I'm interested in for each set of co-localized weather stations. So, you know, there might also be a case like say in in Arbor where I live where there's multiple weather stations going at the same time. Now they're really close to each other and on a map of the world, I'm not going to see a difference of a couple of miles. So, what I'm thinking about doing is one of two approaches. So, one approach that I could do is to calculate the distance between all pairs of weather stations. Then I could apply some type of clustering algorithm to clump those together and I could then kind of calculate the average amount of precipitation over the time window for that cluster of weather stations. I think that would take a very long time. It would be certainly far more precise than the alternative which I'm actually going to do and I don't think that the human eye could perceive the difference in these two approaches. So, I'm going to go with the easier approach and the easier approach would be to take the degree's latitude and longitude of each of the weather stations and round them to perhaps a single latitude longitude value or maybe go out to the tenths value of the latitude and longitude and then to pull all those weather stations that are within the same latitude and longitude. So, that's what we're going to do in today's episode. Before I dig into that though, what I want to do is share with you a little bit about how R does rounding and the different functions that are available in R to carry out these rounding procedures. So, R has at least five different approaches to rounding a floating point number. A floating point number is a number with values after a decimal point. We also call those doubles here in R as opposed to an integer which is a counting number, right? Most of the time in R we don't think about integers even though we might have a number like say three. We typically represent that as a double without really thinking about it. One of the nice things about R is that you generally don't have to think about what type of data you have, although some people actually think that's a detriment to R. Anyway, we're going to look at these different approaches to rounding numbers in R. To illustrate these different approaches, I'm going to go ahead and create a table and the first column I'm going to call X and I'll do seek from negative two to two by 0.1. So, you can see I've got this vector starting at negative two and going by tenths up to two. So, I'm going to create some additional columns that indicate different ways of rounding. So, we'll do round and we'll do round on X. We'll also do trunk which will be trunk on X and then we'll do floor which will be floor on X and then ceiling which will be ceiling on X. Let's go ahead and look at all of the outputs so we can compare and contrast the different approaches. So, I'll go ahead and do print n equals inf and let's make this maximized. And so, looking at these five different columns, we see that in the first column again we have X going from negative two to positive two. If you think about the rounding we learned in say elementary school, you round to the nearest integer, right? And so, what R is doing though is something different. If you look at negative 0.5, it actually goes to zero rather than to negative one. Hmm, why is that? And so, also if you look at 0.5, that also goes to zero whereas 1.5 goes to two. So, what R does by following this I triple E standard is that it rounds a tie like 1.5 to the nearest even number. The idea here is that if you are rounding to the nearest even number and you have a large number of numbers that you're rounding, then you know, half the time you'll round up, half the time you'll round down versus if you always rounded up like we learned in elementary school then you would be rounding up obviously more often than you'd be rounding down. Now, let's look at some of these other columns. So, trunk is short for truncate and so truncate will basically remove the number to the right of the decimal place, right? So, we see negative two and then for these values we go to one and then these values that are between negative 0.9 and zero go to zero, right? Because again if you remove the number, the values to the right of the decimal point, you're left with a zero and that's what you got and we see the same thing for the positive values. With four, R is rounding to the next lowest integer, right? So, negative 1.4 goes to negative two, negative 1.1, negative two, right? Negative 0.1 goes to negative one and then we can see that if we go to like say 0.8 that goes to zero, 1.6 goes to one, two goes to two, right? It's going down to the next lowest integer. Ceiling is going to the next highest integer, right? And so we see like negative 1.9 goes to negative one, you know, negative 0.5 goes to zero and so forth. So, these are four of the built-in ways to do rounding. One other way that I will share with you is to use the as integer function, right? And so we can then do integer as dot integer on x. And so here what we see with integer is that the output in integer is the same as it is with trunk with one subtle difference. The difference is that trunk outputs a double whereas as integer of course outputs an integer, right? And again, we can see that, you know, things line up in this trunk column and the integer column and if we come down to the positive values as well, right? So again, integer and trunk do the same thing except integer as integer makes the number an integer whereas trunk and all these others make them doubles. So there's one other approach to rounding that I'll go ahead and put in here and that's signif and that is going to give you the significant number of digits as the rounding. So if we do signif and we then give x, we can then give it the number of digits that we want to round to, right? So let's go ahead and do one. Here now we are rounding to this number of significant digits that I gave it, right? And so remember that significant digits isn't the number of digits in the number but it's the significant number of digits in the number, right? And so like 1.5 we see rounds to negative 2 whereas negative 0.4 already has one significant digit and so it doesn't get rounded at all, right? And we see the same thing for those positive values. So I said five different approaches. I've already shown you that there's six. What do I know? Anyway, again, this is seeing what's going on with a fairly simple vector of numbers from negative 2 to 2. Let's look at another set of practice values and I'll call these x and I'll say 100 times pi. So pi is a stored constant within our to represent pi and so let's do 100 pi just so we can get some more significant digits on the left side of the decimal point. So if I do round x, that will give me 314. Again, it's rounding to the nearest integer by default. Whereas if I do round x and then digits equals 2, that gives me two digits to the right of the decimal point. If I were to do something silly, it might seem silly and do say negative 2, think in your head what that might do. Well, that is going to round it to two values to the left of the decimal point, right? And so we then get back 300. It's basically taken 314 and rounded that down to 300. And so by the same token, if I do digits minus one, that'll give me 310. And if I did the same type of thing, but let's say out to four, that will round to four decimals to the right of the decimal point. Okay. So again, the difference between round and signif is that round is rounding to the number of digits to the right of the decimal point. Signif is rounding to the number of significant digits. So if I do signif on x and I do digits equals one, that will give me 300, right? If I do the same thing, but let's do three, again, 314. And if we do six, that will give me 314 and 0.159. So again, the difference between round and signif is that round is rounding to a prescribed number of digits to the right of the decimal point. And if you give it negative number, then it's going to go to the left. Signif is going to round to the desired number of significant digits. So all that's very cool. Now, what do I want to do for my application of rounding degrees latitude and longitude? I think what I would like to do is round to the nearest whole number of the latitude and longitude. A latitude and longitude is about 60 to 70 miles. And I think that's enough resolution thinking about kind of where I live and what's in like a 60-mile diameter of where I live. I think that's a pretty cohesive environment. Certainly, I don't think that on a map, we'll see anything much smaller than that. So let's go ahead and try it with whole degrees, and maybe we'll go to tenths of degrees depending on how many weather stations we get back. So I'm going to create a new R script, and I'll call this merge lat long dot r. Of course, I'll start this with library tidyverse, get that loaded, make sure that's all loaded. I'm also going to bring over the shebang line so that I have that for when I want to be able to run this from the command line. So we need to get data into our session to be able to manipulate and round those degrees latitude and longitude. In the data directory here, I have one called ghcnds-stations.txt. This will have all of my weather stations as well as their latitude, longitude, elevation, city, some other information about them. So I'm going to start with a read tsv to read in the data. So we'll do data forward slash ghcnds-stations.txt reads that in. I notice that there's no header, but I also notice that it's only one column. So we saw this before in the episode where I talked about fixed width formatted files. If I come back to the read me file and scroll down to where it talks about the format for this ghcnds-stations file down here, that it is sure enough a fixed width formatted file. There do appear to be spaces between all of the columns. So that's cool. What I could do is I could always do read fwf and by default read fwf will try to figure out the types of data in the different columns based on where there's spaces. And so it's using fwf empty as the default. I want to share with you another way that we could read this in. I'll start by grabbing this table and pasting it in here. And I'll also grab the URL so that I've always got that accessible if I need to look this up again. And I'll comment these out. So I'll give this the argument call positions. And then I'll give it fwf calls. And now I can give it a named vector of vectors, if that makes sense, right? So I could do ID equals C one comma 11, right? So that means that the ID column comes from those columns between one and 11. I guess I should say positions rather, right? So then if we do latitude, I'll see 13 to 20. And then longitude, C 22 to 30. I don't want the hyphen, I want the comma. And I will go quickly through the rest of these because they're not so important. So I've got that all coded in. So that reads in, we've got all the different columns we want. So recall that we can also give this the argument call select, where I can then give it the columns that I want. So I'll do ID, latitude, and longitude. This then outputs those three columns that I am most interested in. So before I go too far into rounding my numbers, I want to double check the precision that I have on my latitude and longitude. The table output shows one value to the right of the decimal point. It does some formatting to make it look more attractive. So it could be there's like eight digits there, I just don't know. So let's double check that. So I'll go ahead and do a filter ID equals equals, and then let's grab this first weather station, pop that in there. And of course, we get basically what we had before. So let's go ahead and do a poll on latitude. And so here now we see the we have four digits to the right of the decimal point of precision. So if we're to throw in here a mutate on latitude, equaling round latitude, and we could do like one digit, and let's pipe that to our test code here, we now see that we went from 17.1 something something something to 17.1. So let's go ahead and add a longitude. And we'll do round longitude to one. And then let's go ahead and remove this test code. And instead, I'm going to go ahead and pipe this to a count on longitude and latitude. And so this shows me that I now have close to 72,000 different weather stations, that seems like a lot more than I need to represent basically again, we're going to have 72,000 pixels on a plot. I think that's too much resolution. So let's go ahead and drop this down to zero so that we're rounding to the nearest whole longitude and latitude that brings us down to 8,000 different combinations of longitude and latitude. Again, we'll have 8,000 pixels, perhaps on our final visual. It still seems like a lot, but let's roll with that. I think that'll be fine. So now what we can do is go ahead and group our data by the longitude and latitude. Of course, we see that we still have 122,000 different rows, and we have 8,000 different groups. What I'd like to do is go ahead and create another column that indicates the group number that each weather station belongs to. What I ultimately want to be able to do is to say these different weather stations that I have from all my daily data belong to the same region. And then within that region, I'm going to calculate the average amount of precipitation over the previous 30 days. So I'm going to pipe this into a mutate, because I don't want to summarize the data. Instead, I'm going to create that extra column that I'll call region, and then we'll give it the Kerr group ID function. Kerr group ID will report the ID for that group. And so now what we see is that we've got region, which again is the Kerr group ID for those different groups. So let's go ahead and count the number of weather stations we have by region, and then do a descending sort on that count. I could do a count on region, and then a range minus N. N will be the column that indicates the number of weather stations in that region. And so interesting, negative 105 longitude, 40 latitude has 1300 weather stations. That's wild. Okay, so let's go ahead in here then and do filter on region equals equals that, like we said, those 1400 rows. I'm curious what that is if I do 40 comma minus 105. Basically, it's Denver, Colorado, that has all these weather stations. I wonder why they have so many weather stations. Regardless, that's kind of my point here, right that I don't need 1300 or so different weather stations worth of data for the same area. And so what we'll do in the next episode is see how we can join this data with the daily data, basically the precipitation data, so that I can then get an average amount of precipitation across these 1300 and all the other weather stations for each group to then get an average amount of precipitation for each of the 8000 different regions of weather stations. So let's go ahead and clean this up a bit. And we'll go ahead and write this out as a TSV. So we'll do write TSV, I'll do data forward slash ghcnd regions dot TSV. And now we will go ahead and update our snake make file. And go ahead and add that. So we'll do data forward slash ghcnd regions dot TSV. And that's going to be my output file. So let's go ahead and get some more breathing room here. And so here I will do rule aggregate stations. And then our input will be what our input will be our R script. And that will be code merge that long R and then our data. So the data data forward slash ghcnd stations dot text great. And I do have my comma there I always forget the comma but that's so annoying. And then output will output our ghcnd regions TSV file. And then our shell will be this and I'll grab this code so I don't have to worry about typing all that stuff. I need to go ahead and make my R script and executable get a new bash script and do ch mod plus x on code forward slash merge that long. And now I can do snake make hyphen hyphen dry run double check that everything works. And it says nothing needs to be done because my merge lat long is older than my data. I'll go ahead and save that and let's try again. Wow. So it's complaining that I copied and pasted without thinking right. And so I put an input bash script. And it's saying input files object has no attribute bash script. What I really wanted was our script. So I'll go ahead and copy and paste that there. Save it. Let's go ahead and try the dry run again. Everything is good. I can now run it by doing snake make hyphen C one. I only need one processor to run this. That all goes through and looks good. I'll go ahead and do a get status. I've got my practice file in there. I'm going to go ahead and remove that I don't need that. So I'll do RM code practice dot R. And I'll do get add snake file code merge lat long dot R get commit hyphen M find groupings for each weather station. Guess I can put a space in there. Good. And I'll do a get push. And that will be up there for you to check out if you want to see what my code looks like at the end of today's episode. I hope you found this discussion of different ways of rounding in are useful and then how we can apply that to the actual data we're working with. I know one of the most common questions on Stack Overflow is why does round 2.5 go to two rather than to three like I learned in elementary school. Well, now you know why. Again, it has to do with trying to balance out the fraction of numbers that get rounded up or get rounded down. So now you know that the standard is to round ties like 1.5 to the nearest even number. Hope you found this useful. Tell your friends in case they're scratching their head about why R does such weird things with rounding. And we'll see you next time for another episode of Code Club.


All right. Hi, everybody. Thanks for joining the Jenkins Advocacy and Outreach SIG meeting today. It is Thursday, October 19th. So on the agenda, I have a Quick Hacktoberfest update. So, John Mark, that will be for you. And then GSOC 2024 DevOps by the DevOps Doesn't Award nomination. Those were the three things that I thought we'd cover today, but is there anything else that I might have missed? No, just see my name, cover of places in your notes. So I need to get ready. Oh, yeah, it should be. No worries. Yeah, I just have a question to ask you. Okay, so, okay, let us know how October fest is going, John Mark. For me it's going well. I need to compare it with last year to see the exact influence of not having a physical reward for the participants, but I see activity, I see a couple of new names. Now I was expecting more activity, but I didn't do extra publicity on that. So it's going well. Okay. Great. So, moving on to GSOC 2024. As well. John Mark Bruno and Chris and I we met just right before this meeting and we have already started talking about planning. It's going to start for GSOC 2024 so we will be starting. We will start to talk about project ideas discussions. We're going to be recruiting mentors as well. But the org admin as a team, we will remain the same which includes John Mark, Chris Bruno and myself. So very thankful for that. Any questions before we move on or any comments. Well, seeing the circumstances on my side during the summer. I prefer that you put my name at the end of the list. There was no rhyme or reason I just, you had three letters to your name and that was fast. That was easy. Okay, no problem. And DevOps doesn't award nomination as I just, I shared this on the community dot Jenkins.io channel that, you know, I was going to go ahead and apply for Jenkins for this award. I've started the document with the responses. So again, the, the, the thought is trying to be transparent. Plus, in case there's additional input that you know anybody else within the community wants to add. Please feel free to take a look at this. Add any other information that you know you think that would help us to win the award. But basically what I did there was a. I just released that CDF did earlier. So I took a lot of the data from here and put that into the application. I was told that they're what they are looking for is rather than quality. Well, they want to see how data, basically, right. So how are Jenkins, better than another. Better than another open source project. And I think numbers speaks volume. So there's a lot of good numbers that we, we have here. So I just use a lot of that and transfer it into the application, but please feel free if there's additional input. I greatly appreciate it. And then supporting links. Again, I linked to the CDF page for that press release. I linked it to the Jenkins case studies, the user stories that we have so many of on Jenkins.io. The names of the sponsors for the project is also important. They are big names. And then John mark a question for you. So number of contributors. Is there a link that I can. I'd put the link from the line explanation. The one I use I'm going to provide them to you. These are the only I don't use them because they're anonymized. Yeah, we were looking into the top contributors. And my, my, I think the Linux Foundation is more visible. Okay, more easier to see. So I'm going to provide you with with that data. Okay. All right, perfect. And I wasn't sure whether to include this. It's, you know, it talks about state of the continuous delivery report. It didn't specifically talk about Jenkins a whole lot. So I was on the fence, but you know, I appreciate any second thoughts on this would be helpful. And then is there anything else that we should include here that I might have missed as a supporting link to why Jenkins is should win this award. Something I noticed, Alyssa, it was one or I'm wondering, would discussing or mentioning all the different collaborative projects and initiatives that we work with. I think that Africa who was summer code, October fast, like all these sort of things. Would that be a value in the supporting links at least, potentially. Yeah, I think so, so, so for she code Africa, we were not active last year should I. Do you think we should include that. No, but G soak is worthwhile. Yeah, G sock. I think we should put that down. I think, I think we had she code out. Oh, we didn't do it this year, but I think we did have it last year. Right. Right. We had it. Yeah. Yeah. But that's not for this year. So that doesn't count. Yeah. Okay. October fast. Yep. Yeah. Good. Thanks. I'll add links to that later. When do you need that to complete it. The deadline is the 20th. Unfortunately, October. Yeah. Tomorrow. Okay. Yeah, I'll give you the link tonight. Okay. If you don't have it in your evening shout. All right. I will. I'll do some searching as well. Anything else. On this subject. No. Okay. I have an additional item. Okay. Yeah, I think that's that's all that I have for our agenda. But you go ahead, John Mark. It's preliminary. But the chance that it goes through is super high now. We are starting to organize a contributor summit. To be held in Europe. At the same time as the Fosdame conference in Brussels. Unless. So the dates are third and fourth of February. I think there is a very high likelihood that it will take place. It will take place. So the question here to the group is how are we going to announce that. I have a room for that. Now we just need to fill it with activities. To tell the people well in advance so that they can organize a travel. It will be held on the Friday. So on the second of February. Correct. And not far away from the venue of the conference. And the conference is during the weekend. So third. And normally we will have Jenkins booth at that conference. Yeah. And I applied for the table. So no response yet from the organizers. So to, I think to answer your question, we can start. So I. I sent out a couple of links to John Mark. Yeah. And so we can start. With, you know, taking a look at what we've done in the past. What the, what the agenda looks like in the past and then. I got something on paper. Right. I'm going to. Based on that, build a project and then discuss it with you before we come back to the group here. With the actual plan. Does that sound. Correct. Yeah. Yeah. Okay. Let's do it that way. But at least there is the intention to organize a contributor summit. In beginning of February. Right. And at least I'll be there. Maybe. Yeah. Any special activity. Yeah, it'll be interesting to find out that who can travel. That's. Yeah. That's that's not be a challenge. Right. So my task is that for the next. Outreach sig meeting. Unless it's when, when is it in two weeks? No, let's say for, for the outreach meeting beginning of November. That we can then present the first draft. Of the things to do and how we're going to get that organized. What do you think. Yeah, I think that works. It gives us some time. The two of us to get that prepared in going. Right. At least we can get the initial draft and discussion started. Yeah, we need, we need to let it be known. To people save the date. That we're, we'll be present at FOS them and that will do something special. Yeah. Looking forward for that. Yeah. Right. Anything else. Okay. Then that's it. We can call it. Okay. Good night. Thank you very much. Bye-bye everybody. Thank you. Bye.


How can I add course content to my Moodle site? A course in Moodle is basically a space on your Moodle site where one or more teachers can add learning content for their students. What the course might look like as a teacher will depend partly on the theme and the settings which you as the admin define. This course uses the Boost theme. With the Boost theme teachers can expect to see a collapsible course index on the left and an expandable block draw on the right. From the course navigation, settings, course teachers can edit the settings such as the course name and description. The More link takes you to further features such as the Quiz question bank, the H5P content bank and more. Course teachers can toggle the button top right to enable edit mode and then they can make changes and additions to the course. The main content area here is where the actual teaching and learning resources will be added. In this course there are numbered topics which can be renamed. But if we look at a different course on a different Moodle site you can see that these are divided into weekly sections and there are some blocks on the right. Content is in cards which can be dragged up and down or in a long course across to a specified location in the course index. Content may be added by clicking the plus sign between activities or clicking add an activity or resource to get to the activity chooser. Activities require participation from learners such as submitting an assignment whereas resources are static such as watching a video. The tabs here are controlled by you the administrator from site administration, courses, activity chooser settings. Blocks give extra information and learning resources and can be added by expanding the block draw and clicking to add a new block. For more information see our educator pathway on Moodle Academy. To summarise, courses hold learning content. Content may be moved by drag and drop, resources are static, activities require input from learners, blocks may also be added to the site.


It's a very ambient, calm, relaxed, you know. Everything's just coming to. Morning. Morning. The nature's just coming to. I do like walking in the morning. Great time of day, great place to be.  Appreciate the birds, the trees, just quiet. I don't understand why more people don't just come out and get into it.