Hi, I'm Lucien. I'm with RT, the Power Transmission System Operator in France. I'm also involved in LF Energy as chair of the board and at RT, my main role is OSPO, Open Source Program Officer. Today I will do the presentation together with Aurélien. Aurélien, if you want to introduce yourself. Hi, yes, I'm Aurélien. I'm working with RT as well as a project manager in charge of the virtualization of the substation control system. So the purpose of our presentation today is to talk about a recent project that we are launching under LF Energy umbrella and that deals with the virtualization of real-time power substation automation. So before stepping into the topic, a few words about RT. We operate, maintain and develop the French Power Transmission Network. There are about 8,000 people working at RT. We are not an IT company. Most of our people are doing the same as what is shown in the picture, so working on the field. However, two years ago, RT decided to reinforce its internal development capabilities and we also decided to embrace open source at one pillar of our software development strategy. This is motivated by the context that is changing and we need to adapt to the new context. Meaning the context of the energy transition. So we have to face the growth of renewable energy sources such as wind generation or photovoltaics. We also have to prepare to new uses that are growing such as electric mobility. And we also expect that there will be more responsiveness from the consumer side to market signals or scarcity signals. So there will be potentially more smart services from a growing number of third parties scattered over the network. So in this context, we have to adapt our grid control architecture with a multiplication of distributed controls. These automation systems will have to adapt to more diverse situations in a more dynamic manner. Also, data will play an increasing role. For instance, we are facing an adding infrastructure and in order to optimize better our asset management, we want to rely on more data, applying analytics and new technologies such as AI. So in this context, we are thinking about a new generation of grid automation systems and basically there are four challenges. The first one relates to innovation. We have to integrate new functions and technologies. Most of them are IT technologies in order to fulfill the needs of the future. Time and cost efficiency will be a key challenge as well. This is due to the fact that the new energy sources, renewable energy sources, are developing much faster than the conventional coal or gas power plants that we had in the past. And of course, the bill for the end consumer is very important to us. So we want to keep it low so we have strong budget constraints. Another challenge will be cross industry collaboration. In an automation system, we want to integrate products from various vendors. And of course, there is already those products rely on standards that which purpose is to ensure interoperability. However, by experience, we know that standards are not sufficient to ensure plug and play interoperability, and that there are significant integration costs, interoperability costs, and this is also time consuming. To solve this one way is to specify our own interpretation of the standards, but this is not a solution either because if each customer does the same and then the vendor is confronted to value specifications, they need to adapt their products and that is not efficient. And the last challenge is a scalability and flexibility. So on our grid in the future, there will be more diverse situations between areas, for instance, where there is a lot of renewable or wind energy developing and other areas where there will be electric mobility, for instance. So the solutions will need to the automation systems will need to adapt to these diverse situations. At the same time, we want to still want to benefit from a scale effect. So not paying too much costs, investment costs, but also maintenance costs to specialize systems. So that's what we mean by an industrial telomate solution. To meet these four challenges, we have identified three mainstays. The first one is to build a modular and interoperable architecture based on standards. The relevant standard in our case is IEC 61850. But as I said, this is not sufficient. Now we are turning to open source and virtualization. Also inspired by the experience and the lessons learned from other industries such as the telecommunication industry who moved to virtualization and open source some years ago, already some years ago. So this context led us to the CPAS project. CPAS stands for Software Enabled Automation Platform and Artifacts. It's a very recent project of LF Energy. Maybe to start with a bit of history of this project. We started Q3 in 2019 with a call for collaboration under LF Energy, umbrella. And after this call for collaboration made by RT, it was decided to form a design team. The scope, the aim of this design team was to build a common roadmap for an open source project. And several customers and technology vendors joined this design team with the principle that there was no commitment to participate to the future project, but only to spend some time to think about what could be a joint roadmap based on each party's vision and needs. So this design team worked between January and June 2020, and it delivered the initial roadmap of an open source project. This work is involved, as I mentioned, both end users and technology vendors. So Adventek, Allende, GE, National Grid, RT, Schneider Electric participated in this work. And the resulting roadmap has been released under a creative common attribution license. Further to this work, the design team stopped. And some parties decided to continue with an open source project. And it was submitted to LF Energy for approval. So I'm pleased to inform you that last week, LF Energy's board approved the launch of the CPAS project at incubation stage. The mission of the CPAS project is to develop reference design and industrial-grade platform, open source platform, that will have to run real-time virtualized automation and protection applications. By protection applications, we mean applications that are intended to protect the grid, the assets, but also the people in case of incidents, such as short circuits on the grid, or, for instance, lightning striking power lines, et cetera. So these are applications that have strong time constraints. By reference design, we mean having a platform that can be used by various technology vendors to build their applications, their automation applications, and check the fulfillment of requirements, check the interoperability, et cetera. By industrial-grade, we intend to have this platform as a very good basis for commercial products that will operate on the real power grids. The first use case that we foresee is related to the power grid industry. However, we also see potential applications beyond power grids still related to the power industry, but it could be, for instance, for power plant automation systems or automation systems on the consumer side. The project will encompass several activities, starting from the specification of the functional and technical requirements to be fulfilled by the platform, specifying also test procedures to assess the fulfillment of the requirements. Then building the appropriate system architecture and the aim here is to reuse as much as possible existing technologies from other industries. Of course, there may be the needs to develop specific functions for our industry based on our special needs, and then we will also have to define and implement APIs for external applications. As I mentioned, the scope of the project is related to the platform, not the application, not the automation applications. However, we want to ease the integration of such applications on the platform. And also, despite the fact that automation applications will not be in the scope of the project, we foresee the needs to have some realistic proxies of such applications to be able to test the fulfillment of the requirements within the community and to facilitate the identification of improvements. And last but not least, the project will also define guidelines and best practices to help technology vendors to integrate, test, deploy and maintain systems based on the platform. So I will stop here and leave the floor to Aurélien. Thank you, Luciana. So now let's move to the technical vision and concept that we have. So first, I would like to start with the state of the art. So let's take a deep in an actual digital substation to see from where we start, and then it will be easier to understand what we want to do. So what is a digital substation? So poor grid substation. This is where all the data from the high voltage equipment such as line transformer are collected. This is also the place where you will be able to control those equipments. And the place where you have all the the intelligence like protections to protect those equipments and also people. So the way it is done today is you for each high voltage equipment, such as, for example, a transformer or over the line, you will have a dedicated bay. And in this bay, you will find a SCADA feature to control it and to get data and also protections and automations. Then you will have LAN and substation level features such as administration, SCADA and monitoring. And then all those data are sent to the control room. So it could be a national control room or regional one from where you can monitor the grid. So if you see the picture on the right side, you will see that so there is several bays and it takes lots of space. Let's focus on bay equipments. So when you are on bay, you have three type of equipments. The first one is related to SCADA. So in digital substation, you will get as an input voltage and current with a sample rate around 4k hertz. And then you will convert those measurements at a lower sample rate, like one measure every second. And then you will provide those information to the upper level. You will also get like a binary and analog value that will tell you what are the states of the high voltage equipment. For example, you will know whether the second breaker is open or closed. And the operating time that is expected from this kind of system when you send a control like open the second breaker is from 10 milliseconds to several seconds depending on the situation. Secondly, you have automations. So automations basically they will take the same kind of input. And the output is binary. So like, okay, if I see on a transformer that the load is above this level, I should act this way. And the most critical one are protections. So as Lucien said before, protection are to protect the equipment and also people. So it's very critical. And those are real time equipment. It's mean that the operating time should be respected. So as input, you will take a voltage and current that reflect the state of the power grid. And as an output, you will decide to trip or to open a second breaker to protect people on equipment. So we've talked about the equipment that we'll find. The question now is how do they communicate? So Lucien talked about the IC61-850. So in the power grid, the IC61-850 is the standard that is used for two types of things. The first one is to, it will specify the data model. So the objects and services that may be possible to communicate with the equipment. And then you have the second part that is about how do I communicate those data. There are three ways to do it. The first one is client server using MMS over IP. So basically you will use this kind of communication for non-critical operation. That's what we call reports. So you want to get information about the equipment, you can use that. The second one is Goose. So Goose messages are faster messages that I use, for example, to open a second breaker. So if I am a protection and I want to open a second breaker, then I will send a Goose. So the sample rate is higher. And the last one is the sample value. It's the most critical one to handle because those are real-time message. So if you lose one, there is no way you can retrieve it later. So sample value are used to have information about voltage and current. So far we have seen how it is today. Now let's talk about the approach that we have in the CPAP project design team. As we aim for a more flexible and cost-effective solution based on a common platform. So what's the idea? So before we talk about the substation, so basically the idea is to keep only one platform that will host all the features. So instead of having several base substation level and so on, you will have one common platform where you can put apps. And those apps are monitoring apps, protection apps, control apps. Since you want to have a high availability, you need redundancy. So you could have one, two, three platforms depending on the security that you want to have. What is interesting is once you have this platform at this level, you can use it at another level. So for example, for integration, you can build a digital twin more easily that reflects exactly what we have in the substation and can be used to perform tests. So it will be easier to make integration and to deploy. And also you can sometimes you have functionality in Power Grid that are centralized. For example, automaton that will monitor the not just one substation but several substation. And then you can also use the same platform for this. Okay, so let's deep into the platform. So what we think about is basically you have in green the application that you want to host on the platform that can be developed by vendors or industrial or university and so on. What is interesting is you could share common services on this platform like how will I deploy my functionality. So administration, you can share your services like 61-850. If you don't have a 61-850 stack in your application, it will take charge of the redundancy, network administration and so on. And now let's talk about the hardware. So the idea is to use non-specific hardware like classical x86 architecture. The only thing that is very important is to have a network card that is compliant with DPDK. Why is that? Because we realize that if we wanted to be able to perform a good performance with the network services that are provided by the 61-850, there is lots of data and you want to have a low latency to ensure that the protection will have good behavior. So you need to have direct access to the network card. That's why we use DPDK. So now let's take a look at the operating system. So it's a critical system. So you want the system to be as small as possible. And we found that using Yocto to build it was a good way to ensure a minimal surface of attack. So we use Yocto KVM as an hypervisor for the network. As I said before, DPDK is important if we want to achieve the performance needed. And we use it with OVS, so OVS DPDK. And since we have real-time application like protection, we need to have a real-time behavior. So that's why we use Linux, but with the patch-primed RT. And for the high availability and redundancy, we use a pacemaker called sync-unsafe. So what we've done so far is a proof of concept to see whether the technological choice that we've made were a good fit with our needs. So the first thing we wanted to check is whether this kind of architecture with this kind of operating system was good enough for the real-time application that we have. And we wanted to compare this with a system without a real-time patch. So if we talk about the hardware that we took, we have a 14-core Xeon system with 32 GB. So on the right, we use a cyclic test with a non-preemptive system. And we see that the maximum latency that we have on the host is 500 microseconds. Before we talk about voltage and current acquisition, and we say that the sample rate was around 4 kHz. So it's one value every 250 microseconds. So if we compare this number with the 500 microseconds, we can directly say that it's not enough. So what about the same case but with a preemptive system? With a preemptive system, we achieve a 21 microseconds latency. That is compliant for the host and our application. But what we've tested so far is the host. And as I told you before, what we want to do is to be able to have a third-party application on the platform. So that can be in a virtual machine. So basically what we've done is the same test but in the guest. So we have the host that I presented just now. And on top of that, we put a virtual machine without KVM, of course, OVS and DPDK because it's not needed in the guest. The guest is also built with Yocto and the kernel is preemptive with the patch preemptive. And we see that we achieve a latency within the guest of 149 microseconds. So it's still compatible, still compliant with our case. So next, for the proof of concept, we decided to test the architecture, the redundancy. So as I told you before, we checked the latency of the host and now what we wanted to do is to see whether we were able to ensure the right level of redundancy. So we build a cluster of three hosts. So the three hosts have the same Linux distribution based on Yocto and preemptive and OVS, DPDK and so on. So two of them were used to host a virtual machine. And the third one, the observer that you see, is just used to have the quorum in the cluster. On top of that, what we wanted to do is for the digital substation, the digital substation don't want to see the IP address. They don't want to give an IP address for each virtual machine, the active one and the passive one. So we use CoriSync to have virtual IP and to expose only the IP of the virtual machine that is active and that will remain the same. Secondly, we also have a distributed storage based on SEF to ensure that in case of failure of either the virtual machine or the host. We can still move to the passive one without losing data. So what we've done in this case is very simple until now it's just like we shut down one host, see whether the shift to the other host is okay. And also if we shut down one virtual machine, how long does it take to switch to the other one? And now it's okay for us. So now we've seen that for the proof of context, we've checked that the real-time performance were compliant with what we need. We also checked that the architecture we foresee is a good guess. It needs of course to be precise, but the different components seems to be okay. But something is missing. As Lucien said before, how are you going to test the different applications that are hosted in the cluster? Because we said that we are working with IC61-850. So we need at least to provide the platform with some tools that will help integration. So on top of this platform, we are developing tools that are based on the IC61-850 stack and Python. To be able to test different things like is my application that is hosted in a virtual machine able to communicate with the system? And also these testing tools should be able to simulate other applications input and output to be able to run some tests. Thank you for your attention, Lucien, to add something. Yes, thank you for our attention. We have written here the GitHub URL of the CPAS project. We are in process of transferring some code to this project as the launch is very recent. So if you are interested to learn more, please look at this URL and keep yourself posted of the code that will be posted there very soon. Thank you.


Hello and welcome to the Gary Stewart show presented by Buffalo Wild Wings. I'm Greg Royce joined by Stevenson Men's basketball head coach Gary Stewart. Coach, you played twice last week. Let's talk about the first game first. You hosted the Lebanon Valley here on Wednesday night and had a couple of nice comebacks around 16 in the first half and down 11 in the second half. But ultimately we were able to come back and win. Just kind of take us a little bit through that game and how it went for you guys. Lebanon Valley is a tough outfit. They've got two of the better players, not only in our conference or region but in the country and Sam Light, their really really good perimeter player, got off to a fast start and they were in really good rhythm offensively and put us back on our heels a little bit. In the second half we were able to do some different things on him and again I thought that our guys put forth great effort but they also made a concerted effort to get the ball into Andy Orr on the interior. So now that presented a different challenge for us and fortunately for us we were one possession better. Yeah, there was a point in the first half there where Sam Light, it just seems like every time he touched the ball it was going in. But I will say a couple of guys I thought Corey Heyman stepped up, made some shots at our Marcus Steadling the first half to kind of keep you guys in the game. Yeah, as I stated we couldn't get a tourniquet on Gurley so we went to our bench and Corey who provides us energy was able to get a couple of baskets and that kind of got us going again. And his attitude is infectious and permeated our team and we were able to work ourselves back into a workable margin at halftime and then in the second half we were able to continue that. Yeah, the game was actually tied at halftime and then in the second half they came out and they scored the first 9 or 11 points but you were able to claw back from that. And in the second half guys that kind of stepped up all year, Dan Zellwright and Jaylen Johnson, Jaylen hit that big shot 30 seconds to go and put you guys on top for the first time since 2-0. Yeah, it was a big shot, late in the shot clock and he got a good look and knocked it down.  We did a good job of getting him the ball and he's a 90-plus percent free throw shooter. So we were down with 30 seconds left in the game and then quickly within 10 seconds we were up two possessions. Yeah, and overall just a good win, like you said, battle back a couple of times. And then Saturday you guys go up to Arcadia and you were kind of in the game the whole time but at the same time couldn't really make that run late to kind of put you guys over the top. Well, unfortunately for us we got down again, double figures and our guys worked their way back again into the game and got a second half lead. But this is something that has plagued us a little bit here and we've got to address that because the teams at our conference are too good to get behind double figures and try to win, especially when you're on the road. Yeah. What do you do to address that as a staff to kind of look at, see what you're doing and kind of stress the importance of, hey, we can't come from behind every single game but just try to get up on somebody and try to maintain a lead rather than try to claw from behind time after time. Well, you have to look deeper and find out why you're getting in those situations and clearly there's some things that we are not doing that's required of us and that's putting us back on our heels and then again give our opponents credit. If you don't do certain things in this conference the teams are going to capitalize on it and they are and we've got to address those. We have to have a sense of urgency to get those corrected because it's the difference between winning and losing for us. Yeah, absolutely. You've got a few days to work on, you know, break for finals. Obviously you guys are going to be preoccupied with academics first but obviously you'll still be practicing and working on some things that gives you a chance to work on some different things having a couple of non-conference games next week. Yeah, we get out of conference for four games and starting next week, which is a very important period for us. We've got to keep bringing our bench along. We've got a lot of young guys there that we think very highly of and we've got to get them acclimated to extended play and then we've got to address the areas that we talked about here that I mentioned. We've got to get better. So this is an important time for our basketball team. Alright, well thanks a lot coach. Thanks for your time as always and we'll talk to you next week. Thank you, Greg. Alright, for Gary Stewart, I'm Greg Royce. This has been the Gary Stewart Show.


Hello! My name is Emily. Thank you for joining me today for some yoga. Today's yoga we're going to have some dinosaur fun. So I wanted to introduce you to Patty Apatosaurus and Patty is going to be our helper throughout today. Today we'll have a similar routine where we start with our namaste song. We'll do a little warm-up through our extend and stretch, through sun sanitation. We'll get into some playful movement with two dino songs. We've got our mystery bag actually. Patty's guarding the bag right now and then we'll close with a little shavasana. So let's get started. First let's take a couple big hug breaths. Big breath in. And last one. Great. Big breath in. The way we start our yoga day. The light in me honors the light in you. Na-ah-ah-ah-ah-ah-ah-ah-ah-ah-ah-ah-ah-ah-ah-ah-ah-ah-ah-ah-ah-ah-ah-ah-ah-ah. Let's have fun. Now if you want to go get some dinosaurs feel free because maybe they'll help. I've got Patty. I've got Victor Balasiraptor. I've got our Diplodocus friend and maybe they want to do some yoga too. So feel free to have your friends join. Maybe they'd like it. You ready Victor? Extend and stretch. Extend and stretch. Twist and turn. Twist and turn. Today is dino day. Today is dino day. Let's have fun. Let's have fun. All right Patty. Victor, let's do a little sun sanitation. Hello. I'm going to pretend I'm Patty. So I'm going to be an apatosaurus and stretch up as high as I can. And maybe my hands are like the apatosaurus head and let's breathe out reaching for the ground. Much, much, much, much, much. So we're going to step back and get ready to dive in. Plesiosaur. With the Plesiosaurus. Oh, and let's push back. Uh-oh. Is this like Victor? Maybe getting ready to jump. Oh, let's come into cat and cow pose. I'm going to look up and look down. Looking all around to see who's around us. Making sure we're safe. Very nice. Let me know if anyone's around, okay? Awesome. So let's do a little dinosaur movement. We're going to do our walking song. But let's pretend first Patty apatosaurus. I imagine Patty to be a huge dinosaur on all fours. So I'm going to come down on all fours. Feel free to pretend to be a different dinosaur or walk on your two feet if you prefer. Walking, walking, walking, walking, walking, hop, hop, hop, hop. Let's stop. Now let's stop. Imagine you're an apatosaurus again. And we're going to reach up very tall onto one leg. Oh, the foot can be on your calf or above your knee.  Oh, looking around. Let's try that again. This one's for Patty. So you can put your foot on your calf or above your knee. Let's reach up. How Patty gets some of those leaves way up high. Oh, you can look around. Very nice. Now, I couldn't find pterodactyl, but we're going to pretend that we're pterodactyls. Let's spread out our wings. Flying, flying, flying, flying. Flap, flap, flap. Flap, flap, flap. We are looking for some fish. We are looking for some fish. Let's dive down. We're going to come onto one leg. You can hold someone's hands, but that will help. And ready? I'm going to pour my weight into one foot. And we're looking below in the sea, looking for some fishies. Wings can come back. If we do one side, we have to do the other. Pour your weight into the opposite side. Look for some fishies. Wings can be out or back. Whatever feels good. Any last requests? Do you have a favorite dinosaur? I heard T-Rex. I was wondering if T-Rex would come up. T-Rex has two claws, right?  And I imagine T-Rex has some really big, strong legs. Ready? Walking, walking, walking, walking. Now let's stop. We're going to be fierce Tyrannosaurus rexes. It might be a little scary. We're really, really mad, but when we were, we'll take a big breath in and we'll open up our claws. Okay, we'll pretend he has more, or it has more than two claws. We'll open up our claws, come down onto our knees and let's try that Tyrannosaurus rex. Now, if there are any other dinosaurs you'd like to be, go ahead and pick one. Because we have one more dinosaur song, I'm going to invite you to just like your favorite dinosaur. We'll do it three times. So if you want to choose a different dinosaur, feel free. Try seroton. We are the dinosaurs marching, marching. We are the dinosaurs marching, marching. We need to change it. What are the dinosaurs would you like to be? Your velociraptor. We are the dinosaurs running, running. We are the dinosaurs running, running. What else? Maybe an Enchilosaurus or any other thing you'd like to be? Last one. We are the dinosaurs marching, marching. We are the dinosaurs marching, marching. Feel free to add in any other dinosaurs that you'd like at any time. Let's check in with Patty to see if we can use. We're so good. You think we can use the mystery bag? Here, have a couple of leaves. We are all set. You, Patty. Here we go. What's inside the mystery bag, the mystery bag, the mystery bag? What's inside the mystery bag? Tell me, do you know? What does it sound like? I wish you could feel it. It feels hard and maybe even a little spiky. I bet you have a very good idea. Do you say dinosaur? I'll try serotops. Whoa, a really stretchy little guy. And it looks like a Brachiosaurus of some sort. Awesome.  And we're going to pretend, I'm going to the Brachiosaurus. We're going to pretend that we're starting out baby dinosaur. Actually, let's go to the little egg. Ready? My forehead comes to the floor. I'm a little egg. And then let's imagine just cracking out of the egg. And what do you think the dinosaur might do? Let's take a nice big roar again. Give me again. Ready? Put a forehead on the floor. My old friend. Breathing actually made me feel pretty good. How about you? Put on a little bit and grab it down, nobody. You can do two things.  Either way, so if I'm in Shavasana, I'll lay down. And I might put my dino buddy right on my belly. Then I can watch it rise with my breath. Check this out. Did you see him?  Again, dino buddy's on the belly. Hands up to the side. Great. You're ready. Let's come to a seated position. You can bring all your friends with you if you'd like. I've got Victor. I've got my plesiosaur. I've got Patty. They come into comfortable crisscross applesauce position. I'm going to take a deep breath in. Namaste. Namaste. This is the way we end the... Lighten me. Honors the light in you.


see first hand how art is a unifying force in our communities and how important cultural identity is in our neighborhoods. Artists are torchbearers sometimes into making sure that the various parts of that tapestry is being seen and is at play in our mainstream culture. Art heals and inspires. Art shows us the most basic sort of expressions of the human experience. It's something we all can relate to. The most important part of this plan is creating cultural policy. That first step is crucial because it shows not only that we value the arts in our city but that we understand its value to our city. One of the things that we can do to continue to move forward is to make sure that we are providing resources and making sure that those resources are being seen and visible by as many of those artists and creators as possible. It's important for us to bring in new arts and new energy so that the arts will continue to thrive and grow. The most important thing we can be doing at this point in time is really putting our mind towards the creation of equity across all the different parts of our community and understanding that we radiate and shine brighter to the world when we are sort of elevating the entire vision of what's at play in our communities. Cultural identity is really important to our neighborhoods and making sure that we are seeing all the different various value systems that are at play and recognizing that that wide fabric is our sort of radiance and our sort of brilliance as a city and bringing those things forward are going to be how we are able to push everything to the next level. Follow on our social media platforms. Thanks again and remember we are Colombia.


Okay, today we're going to go through the top three penny stocks to buy now and some of these, I think could actually grow up to 500% will go through these penny stocks and the information for these penny stocks. I'm going to say I'm not a financial advisor. I am a business teacher in my daily life, but I'm by no means an expert on the stock market. And some of these penny stocks have had a little bit of a pullback, which is presenting a bit more of a buying opportunity because a lot of the penny stocks at the moment with the market have actually moved up a lot. So I'm looking for ones that have a bit of a pullback but still have a lot of potential as a company. And we'll go through some of these penny stocks and what these are as well. I'll go through that in this video. Okay, so let's get right into it. If we could leave a like on the video and if you appreciate the direct approach of getting right into the penny stocks, then do leave a like that we much appreciate. Let's get into the information. So the first stock we've got is IQSTEL. Okay, so IQSTEL. Six symbol for this is IQST. Okay, one of the good points about this stock is we'll go into what they do. But first of all, you know, look at the sort of revenue they're looking to get 60.5 million revenue forecast for 2021, 48.8 million revenue from the preliminary for 2020. They've got a 60% prepaid revenue already. They're in 13 in country presence. They've got seven operating subsidiaries. So this is an interesting company will go into what they do, but financially it seems they're doing okay. There is a bit of an issue with their liabilities, how much cost in terms of the liabilities that they have. So hopefully they can reduce those a little bit. But we'll go into what they do. So first of all, IQSTEL, which is six symbol IQST, is a US based publicly traded company offering leading edge telecommunications and technology services for global markets. Okay, and this is an interesting one. They're involved in a bit of blockchain or involved in fintech. You know, they've got B2B in terms of business to business customers. And then also got B2C in terms of business to customers, and you've got B2B in terms of business to business, right? So they've got different divisions telecom, technology, technology, fintech and blockchain, all areas which are emerging markets and growing industries, right, which is good to see. Now the current price on this stock here with the ticker symbol IQST, at least on the OTC of the counter markets here, is the current price is at 0.76. It has a little bit of a dip recently. Okay, so it's moved down from its previous highs here. So it's moved down a bit. This is presenting a buying opportunity. Again, it's involved in a lot of emerging industries. I like to look at penny stocks that are involved in industries where I see that there's been a massive potential market. So this is potentially one to put on your radar. Now just want to remind everybody to turn on the notifications if you haven't already and welcome to the channel if you're new. We cover many penny stocks and a range of different ones. So do subscribe if you're new to the channel and leave a like on the video so it gets up into the YouTube search results as well. Okay, let's go through the next one. The next one we're going to talk about is Vine, which is a ticker symbol, V-Y-N-E, and this is Vine Therapeutics. And they're involved in basically improving patient lives by working to develop innovations in dermatology and beyond. So they've got some creams available that are basically good for particular skin conditions, right? And it's involved in that particular area in terms of skincare and actually producing really good medical solutions for this. And the best part about this stock, V-Y-N-E, okay, is that it's actually already been FDA approved on not just one product, right? They've been FDA approved on two products here. So what does that mean? It means they're at their commercialization stage, they're getting that commercialization, they're getting the products out there, they're getting the sales out, right? So again, I'm not going to go fully in depth in the stock because it's just a top list. I'm just putting some on your radar. You can do further research into this. But the key point here is that they're FDA approved. I mean, we've seen other pharmaceutical stocks that are yet to be FDA approved actually shoot up more than this is the current price that this is at. And they haven't even got FDA approval yet. And maybe the very good stock, some of those as well, by the way, but going into this, these are FDA approved. So they have already got their commercialization, right? So they're commercializing their products. They're getting ready to commercialize and build that commercialization up, which is fantastic. And then they've got this other area here where they're actually putting more products in the pipeline to get FDA approved. Now, they've already got history of being able to get FDA approved on products, which is kind of gives it a good kind of confidence that other products that they come out with can also do the same, right? So the current price for this, by Therapeutics, tick symbol, VYNE is at $2.94. It's again, had a tiny bit of a pullback, not much because this one just kind of keeps running up. It has a bit of a pullback keeps running up. You know, it may pull back to sort of 250 to 270, but I think it's got more of a chance to keep running up, right? And you've got the stock analyst forecast, seven analysts, CNN business, they've got a lower $3, a medium of $6 and a high of $10. Okay. And it's currently at $2.94. Now, I believe that it could hit between this medium and high estimate, I think that it could easily get to $7, $8, $9, $10. You know, move up hundreds of percentage points here from its current price point, 240% potentially on its current price point, right? I think that's got potential to do that, especially if they continue to commercialize the product and start to get more revenue in, because then they've got that revenue to then invest back into the business and create more products and then commercialize even more and build a massive product portfolio. So this one's got a lot of potential. It's got an interest in future ahead of it, I think, at least in the medium term. Okay. So this is one, again, a little bit of a pullback, maybe start a small position up to you. I'm not a financial advisor, you do your own research, but you know, it's pulling back a little bit, okay, which is good, might pull back a bit more and then it might be buying opportunity. Now, the next one we're going to talk about is SG blocks, ticker symbol for this is SGBX. Now, I've covered this on the channel before and it has run up from the time that I covered it, and I think that it's going to run up even further, but recently it has had a bit of a pullback and I actually think that this is again presenting a buying opportunity. I'm giving you stocks that have had a bit of a pullback because the market is doing very well at the minute, so a lot of penny stocks are making moves. So I'm trying to find ones that are kind of either consolidating and have consolidated for a while or have moved down a little bit. So this stock creates basically, it takes canisters, containers, if you like, and it turns them into commercial, the container into houses, the container into commercial residents, like for example, Starbucks, they've done stuff with Starbucks in terms of creating mini cafes out of what they do in terms of the containers. So there's a lot of business to business sales that they could get from this. But recently, this is what they've been doing recently, which could be a catalyst to move in the stock price up even further in the short to medium term, but then in the long term, they've got this whole business model that is really, really good. Think about the facts that, you know, brick and mortar stores, the cost of rent, it costs a lot of money. So if this business is coming in there offering a solution to small businesses and to larger business to cut their operations costs by using these containers, but still being really good quality, then this has got a good, really good value proposition as a business, right? I really do believe in this one. I'm actually bought into this one myself. I really do like this one, SGBX. But what is the recent catalysts? What kind of brewing right now? Okay. Actually, SGA blocks has just recently announced February to provide testing services to KLM Royal Dutch Airlines. Okay. So a leading designer, innovator and fabricator of fabricator of container based structures announced today that it will offer travelers a rapid anti-gen testing at Los Angeles International Airport for that clarity, mobile ventures, the joint endeavor between SGA blocks and clarity diagnostics. Okay. So they're actually building these containers that can be built in a very fast time, right? These containers, these can be set up. They can build up, you know, really, really fast, which are really efficient to build and they can just really build them very, very fast. You know, this could be a catalyst in the fact that more of these sort of testing centers could be set up through SGA block SGBX or, you know, even potential vaccine centers as well, right? So if they can, more of this comes out, if more of this comes out, you know, and bigger, bigger contracts, this could be big for the stock. And this is asleep. But not many people are talking about this. Okay. So put this on your radar, right? Also recently, it happened in January, right? It happened here. So they're bringing anti-gen testing to Chicago. So it says here, in terms of the Chicago area, to bring rapid COVID-19 test to Chicago, area travel that travelers airport employees and the public at large, right? So they're bringing it there as well, which is interesting. This is something that they seem to be scaling up. Now, of course, this is only necessarily going to have an impact on the short to medium term capacity for 10,000 tested. Look, this is to the short to medium term, right? Because we are sort of eventually, you know, moving out of this kind of situation. But I think that this in short to medium term, it's going to push the stock price up if this keeps happening. But then beyond that, I think, you know, I think the long term approach of what the business offers overall, I think is really good as well. So there's two ways you can play it by doing things potential, right? What's current price? $7 for ticker symbol SGBX. Like the video if you're enjoying this by the way. So what we got, $7 and four, you can see here, $8. Now, you know, it was almost $9. It's 52 week highs, $9.74. It did run up. We might say $1.16 is because it had a run up over the past few months. But it's now starting to pull back a little bit. And then it's kind of consolidating a little bit. But what I would say is, you know, as it's because it's pulled back here to the $7 level from the $9.74, it could be a really good time to potentially start a position. You do your own research. It's up to you what you do. But consider starting this. And then, you know, start building a position. If it dips to six or five, keep loading up. And I think this is going to easily, you know, move up much further than this current level by a huge amount. Okay. Thanks for watching the video. Do leave the video a like. It does help out the channel. Subscribe if you're new. Welcome. Cover penny stocks and all sorts of stuff. And I will see everybody in the next one.


So, you may be wondering what correlate is, technically it's a library that I wrote. It's solving a problem that I had and let me go through what that problem is. The first thing, I don't like the word corporora or corpus, I use the word data set instead, I kind of demean the same thing. But my description of correlate is, correlate matches up values between two data sets which conceptually represent the same data. So you have, imagine that you have two data sets that have some values inside and there really should be matches between them. Like this is really the same piece of data as this, but it's in a different format. How do you find matches between those two? You can do it by hand. The idea with correlate is to automate that process. I realize this is still a little bit abstract. So I think it's best to go through a concrete example. I like to listen to old time radio shows from the 40s and 50s. This is a list of MP3 files for a detective show called Boston Blackie. And I downloaded this off of archive.org and I really hate these file names. These are terrible file names. You can see what's in it. It's Boston Blackie and then the date and then the episode number and then the name of the episode with like no spaces and uppercase characters and all this sort of thing. And they kind of made up their own titles too. I don't know what's going on here. Happily there's very clean data for this sort of thing. This is an episode log of Boston Blackie which has the same episodes with the broadcast dates and a much cleaner title. So what I want to do is I want to take this data and use it to rename the MP3 files and make them nice clean file names that I'm going to enjoy. And correlate is just the tool to do that. So I gave a lightning talk about this exact thing at PyCon this year and I knocked together a quick test case and I found some nice examples in here. So this is an example of matching up an MP3 file to an episode. I created my own episode object off of the episode log. And the only thing these two have in common is the date. But Coralite said, this looks like a good match and it's right. Those are the matching episodes. On the other hand, this one, the dates don't match up at all and the titles aren't really all that similar. But the words John and Davis both appeared in both places. And so Coralite said, I think these are the matching episodes. And again, it was correct. So Coralite really kind of does a little bit of magic, figuring out what these matches are. The important thing to keep in mind though is that Coralite is not an algorithm. I would describe Coralite as a heuristic. Coralite is not provably correct. It's not like merge sort or quick sort where you run it and you can prove that it's providing the correct output when you're done. Coralite is very much of a guess. And I've spent a lot of time just sort of thinking about the problem and trying to come up with ways to improve the quality of its guesses. At the end of the day, it is kind of a guess. It's based on the quality of its output is going to depend on the quality of the input that you put into it. But I can't prove that it's correct. It just seems to work okay. So I'm going to go over, we're going to start with the basic API. When I started out on this, I was like, okay, how do I even represent this so that I can write a library to solve this problem?  The Coraliter object has a bunch of stuff hanging off of it. Datasets A and B, those are the two data sets you're going to stuff your data into. I also put it in a list in case it's convenient for you to iterate over those. I never use it. Print data sets is just for debugging. It just dumps the contents of your data sets out to standard out. Sometimes I discover that I've been inputting my data wrong, like I've been breaking up the strings into individual characters. It's weird, Coralite still does a good job even in that case. But occasionally I will discover I was doing it wrong and print data sets shows you what your data looks like from Coralite's perspective. And finally, the Coralite method itself does the actual correlation. And we're going to look at that more in a sec. So the conceptual model for Coralite is that you establish your values. And these are the items in the two data sets. Coralite really doesn't examine the values at all. All it needs to know is whether two values are the same value or not. So it's doing a quality testing, but nothing else. Values don't even have to be hashable. But what you do then is you establish keys that map to those values. And this is metadata that you have culled out of the values.  I think it's best to lowercase them. I'm also parsing out the date and I'm setting the date in the same format on both sides. And Coralite is going to examine all those keys and find keys that the two values have in common. And say, that looks like it might be a good match. So in this example, we have unlucky at cards and 1945, 10, 04 in common between the two things. So Coralite is going to consider those keys in common to figure out whether or not this is a good match. So I'm just going to show you an example of calling the API here. This isn't really very useful. But I just want to show you the basic API. I'm going to create two values. They're just strings. Again, they could be any Python object. But it doesn't really care what the object is. I'm just using strings just so it's nice to present when I print it out at the end. And then you call set on the data set you want to stuff the values into. Data set A, data set B. You set the key equal to the value. You can set a key multiple times to a value. You can set a key to multiple values. You can do whatever you like. And as a matter of fact, setting keys more than once is very interesting to Coralite. We'll look at that in a sec. In case you're just iterating over an interval, like I am here, there's a set keys which just takes the iterable and it just sets all of the keys from the iterator as set values, just to save you a little time. And then when you call Coralite, you get a result object. The result object, the most important thing, of course, is the list of matches. These are sorted by confidence level. And then unused A and unused B are values from the two data sets that Coralite couldn't find a good match for. So it's just showing you it's like, yeah, I couldn't find a good match for this guy. Statistics is a dictionary mapping strings to numbers, basically times. It's the idea is if you're wondering where Coralite is spending all of its time, this is a little bit of internal logging data that'll give you an idea of what's taking so long. And finally, the match object itself, that's the thing that we have a list of in the matches list up at top. That contains the value from data set A that we said matches this value from data set B. And then the score, which is a sort of numeric confidence level in how good a match this is. Now, just to round the bases, I'm going to iterate over the matches. There's only one match, and it's this Kingston Unlocked Cards. And it computed the score of 3.6 bar. Where did this score come from? How did Coralite compute it? We'll talk about that in a sec. But let's start at the basic algorithm of how Coralite does its work.  Coralite, more or less, does iterate over every value in data set A, and compare it to every value in data set B, and look at all of the keys they have in common, and compute a score. And then it takes that score, that match object, and it adds it to a list. Then it sorts that list by score. Then it starts at the top, and it does this sort of greedy algorithm, where it says, okay, looking at this match, have I used value A or value B yet? And, of course, the very first one, it hasn't used anything yet, so it says, oh, that's a good match, okay. So it stores that in a list, it's going to return to you. And then it writes down, oh, I've seen value A, and I've seen value B now. And then it goes on to the next one, it says, have I seen value A yet? Oh, I have, then this match is toast. Well, I don't use it, so it just goes on to the next one. So it's finding all of the matches that contain values that haven't been matched yet, and adding those to the list over there. And that's the list that it returns to you. There are flaws in all of this, so we're going to pack over a bunch of these flaws with some additional technology we're getting to later in the talk. But at the heart of correlate is the scoring algorithm. I had to figure out what a good score was for a particular match. And I'm very lucky in that my intuition was right. The first thing I tried worked really well, and then I tried some other things, they didn't work as well, and I went back to the first one. I turned out to be right all along. So this is, let me say one thing here, though. This is dealing specifically with what I call exact keys. So in correlate, you have all sorts of keys. You can use almost anything as a key. You can use strings, integers, floats, datetime objects, custom objects if you want to. Those are all valid keys. There's a special kind of key in correlate called a fuzzy key used for fuzzy comparisons. And just as a piece of terminology, any key that is not a fuzzy key, I call an exact key. So we're going to look at the scoring algorithm for exact keys now, and we're going to get to fuzzy keys later. So what I tried to do with my scoring algorithm, I wanted to score, if two values have a key in common, I wanted to score more highly if the key was rare than if the key was common. So I had to figure out how to represent that. Ultimately, what I did was I said, OK, let's count the number of times that this key has been used in data set A, and we're going to count the number of times that we use that key in data set B. We're going to multiply those numbers together, and that's become our divisor. So as an example, in my Boston Blackie data set, in the MP3 file names, we use the word the 75 times. We use the word the 136 times in data set B, the episode list. And so we multiply those together, and that's our divisor. And that turns into a number that is about one 10,000th of a point, which is almost no signal. The fact that two values have the word the in common doesn't tell us a lot, and the score now reflects that. On the other hand, the word jewel doesn't come up very often. It's used three times in the MP3 file names. It's only used once in the episode log. So if two values have the word jewel in common, that scores a third of a point, which is a lot more. That's a lot more signal. That's a lot more evidence that these two are a good match. And then if two keys have the word atkins in common, which is the last name, there's only one appearance in each data set, if those have the two values have that key in common, it's very likely that that's a good match, and so that gets a huge score boost. So to show you the example, the Atkins jewel thief, or Robert Atkins jewel thief, that's a good match because it has the word Atkins in common and the word jewel in common. And of course the date matches as well, the broadcast date. In this case, the word jewel didn't help because we spelled it differently. It's the Winthrop jewel robberies versus the Winthrop jewelry company thefts. So comparing exact keys kind of failed us here because we use jewelry in one place and jewel in the other. This is the sort of thing that fuzzy keys is good at. We're going to talk about that. So already with just that basic approach, that basic scoring algorithm and that basic greedy algorithms correlates working pretty well. But I thought about the problem a lot. This is actually like my early COVID coronavirus project. So I had a lot of time to myself, so I would just sit on my mountaintop contemplating this problem. And I thought of a problem. So let's consider this scenario. We have a value in data set A, and we map one key to it, break-in. For you younger folks, break-in was the name of a movie in the 80s about break-dancing. Value B1 in data set B, we also map the key break-in to it. But in data set A, we also map break-in to electric boogaloo, which is the sequel to break-in. Now what's the problem here? The problem is that these are both going to score the same because all we're doing is we're looking at the keys that match. We don't consider anything else when we're drawing the scoring algorithm so far. So the idea was, OK, how do we prefer the top one over the bottom one? Because clearly, if we're looking at it, we say break-in, this top one is a much better choice than the bottom one. How do I highlight that? And what I resolved to do was, I count the number of keys that matched, and I divide it by the total number of keys that are mapped to that value on both sides, and I multiply those together. And that becomes a bonus that I add to the score after I'm done adding up all the scores for the keys. So in this example, the top one is getting basically a score of a bonus of one point, and the bottom one gets a bonus of a quarter of a point, because it only has one out of four keys matched on value A2. So that inflates the score of the top match, and we prefer that one. And again, we get the correct answer, so crisis averted. Now the thing, again, with Coralate is that it is a guess. It is not an algorithm. And again, it's dealing with messy data, and you kind of have to work with it a little bit. So there are some things that you can do to increase your odds of getting good matches out of it. The first and probably most important one is setting a minimum score. Let's consider you have two data sets, and they are a perfect match for each other. Every single data set and every data set has a corresponding value on the other side. In that case, Coralate's already going to do a good job. If you have one is a subset of the other one, where, again, every single item in the smaller one has an exact match in the larger one, Coralate's going to do a great job. But what if you have some values in one or both data sets that just don't have a corresponding match on the other side? Well, Coralate blesses a little heart. It really wants to do well by you, and it's going to try and find matches even when those matches cannot exist. So it's going to find matches that are arguably wrong. They're just bad matches. What can you do about it? Well, here's my observation about that. This is a graph of the scores of all the matches in my Boston Blackie data set. And you'll notice there's a huge drop off at the end. In point of fact, I mean, it looks like there's a drop off after about a score of 4.0. But it's not until we get to the very bitter end a score of below one where the matches actually get terrible. And what tends to happen is there's an inflection point. You start at the beginning of the list, and they're all great matches, and they're good matches. And then at a certain point, you hit something, and suddenly none of the matches are good. They're all junk. And there's an inflection point in the score there. So in this case, it's happened somewhere between 1.0 and 0.25. So all we need to do is pick a point there, like 1.5, and tell Coralite, you know what? You see any match that has a score lower than this? Just ignore it. Just pretend it doesn't exist. Coralite won't keep those matches. And you won't have this junk at the end of your match list. Another way you can improve your matches is just by weighting your scores a little bit. This is just a little bit of extra data. You can say, if you match with this key, give it a little bit of extra score. I just multiply that in when I do the basic scoring. So if I set the weight to equal to 2 on this key and 2 on this key, then the total possible match is going to be 4 rather than 1. And you just pass that in. There's a weight parameter to set and set keys where you can just set what the weight is for that mapping. Now I want to talk about rounds for a second. Here's where redundant keys come into play. Originally, I thought that if you mapped the same key to a value multiple times, I didn't think that was interesting. And again, this is one of those things where I just sat on my mountaintop contemplating, and I realized actually it's very interesting. And I'm going to show you why. So here are two values. This is a different imaginary data set. This is just for examples. These are movie titles from the 70s and 80s. The day the clown cried, and the day of the dolphin. In both cases, we have mapped the word the twice to the value. What does correlate do with that? So internally, when correlate is doing its comparison work, it splits everything out into what it calls rounds. A round is a set of all the unique keys that are mapped to a value. And then subsequent rounds represent duplicates of those keys. So they tend to get smaller very quickly. If you mapped the word the to a value five times, then there would be five rounds, and the word the would appear in all of them. So here, round one for the value on the data set A. Round one is the day clown cried, and round two just contains the word the. And on the other side, we have the day of dolphin, and round two just contains the word the. So what's interesting is, conceptually, the word the for the second time is a different key than the word the for the first time. And the is very common in your data sets. Again, I'm making up numbers here, but imagine that the appeared 85 times for the first time in data set A, and 76 times in the data set B. Well, again, that puts us at about a one 10,000th of a point. But the for the second time is a lot rarer, and if that only appears a handful of times, suddenly we're getting a lot higher score from that. So my goal here in telling you this is, if you use correlate and you have redundant keys, absolutely pass them in. Another thing you can do to make your scores better is use what I'm calling a ranking information. And this is just the ordering of the data inside of the data sets. So if one or both of your data sets are unordered, there's really no sensible ordering to them, you can't use ranking. But if both of your data sets are really in order, where this value should come before this value over here, and this value should come before this value over there, then it's more likely that your matches are going to be sort of local like that, then they are going to reach all the way across. So the way that we work with ranking in correlate, there's a special method on a data set where you can specify extra metadata about a value. And here there's only one parameter, which is ranking. You just pass in a number. Correlate is automatically going to figure out the range of it, and it's going to figure out, it has two strategies on how to score ranking. It's going to use the one that's more successful. You just pass in ranking. I think you also have to enable it on correlate. You have to set either a ranking bonus or a ranking factor. I don't remember. But it's time to talk about fuzzy keys. So fuzzy comparisons, like fuzzy string comparison, is a way of examining two keys and saying, these look kind of similar. So it's not exact, these are the same string, but these are pretty similar strings. There's a very popular library for this called FuzzyWuzzy. I prefer one called RapidFuzz, which has the same API, but is MIT licensed. So here we have two titles. The top one is from, again, the MP3s. And the bottom one is from the episode log. But they're for the same episode, the Winthrop Jewel Robberies versus the Winthrop Jewelry Company Thefts. And so RapidFuzz is comparing those two, and it's expressing how the same they are based on a percentage. So this is the number 69. This is about a 70% likelihood that there are similar strings. So it's just doing it lexographically, though. It's just doing it by examining the letter. So this is saying, jewel and jewelry are very similar words, but it doesn't understand, for instance, that robberies and thefts are basically the same concept. Now, fuzzy keys are very expensive. And in terms of CPU time, it slows down, correlate a great deal. But sometimes you just have to use fuzzy keys. So fair enough. In order to use fuzzy keys, you create your own subclass of a base class that I established for you called fuzzy key. And you have to implement a compare function. And compare is going to return a number from 0 to 1. And that's it. I only compare objects of the exact same type to each other for fuzzy keys for speed reasons. The hardest thing was figuring out the scoring algorithm for fuzzy keys. This is something that took me months.  Nothing felt right. Eventually, I realized that I had this successful scoring algorithm for exact keys. I should make the fuzzy key scoring algorithm algorithm look the same, but more complicated because it had to handle fuzzy keys. So I'm going to walk you through how we get from the exact one to the fuzzy one. The first observation is that you can multiply or divide by 1 as much as you want. And it doesn't change anything. So I'm going to just add and multiply by 1 here. And then 1 is really the score of the exact key. Exact keys are binary. Either they have a score of 0, not a match, or 1, perfect match. So really, we can replace ones with score everywhere that it's used. But the final step is that the number of uses of the key in A versus the number of uses of the key in B isn't actually what we're measuring. We're measuring the score. So now I have to add up the score of how much this key cumulatively scored when it was comparing to stuff in data set B. And I have to add up how much this key was scored when talking to stuff in data set A. And I divide the score by that. So now the score is, I take the score and I multiply it by the ratio of that score versus all scores using that key in data set A, multiplied by the ratio of that score over all scores in data set B. That seems to work, finally. So I haven't touched it. And then every so often, I get like, oh, I don't know if this is right. Oh, I think it's right. Oh, I don't know if it's right. Oh, I think it's right. The final little bit of technology I'm going to talk to you about is the match boiler in the grouper. This is solving, again, a specific problem. Let's say that we have not such good data and we have a whole run of matches that have the exact same score. Which one of them should we pick? If we just pick the first one, then whichever one becomes the first one wins and that's not necessarily the best one. How do we decide which one is the best one? So what I wound up doing here was I said, OK, let's run an experiment where we pick each of the ones with a duplicate score and then recursively examine the rest of the match list and compute the cumulative score for all the rest of it. And then after we've tried all the experiments, we keep the one with the best score. So that works, but it's expensive. Because if we have eight values here, now we remove one and now we have seven values that are in a run and now we want to recursively do a match boiler on that. This becomes like an n to the nth power problem. So there's now a pre-processing step called the grouper, which is observing that sometimes these things group together naturally and sometimes they are off by themselves. So for example, again, this is all made up examples, but these first three values, they don't have anything in common with the, excuse me, these first three matches don't have anything in common with the other matches in the list. So if I select the first one, which uses value a and value g, well, that doesn't affect anything down the line. So it's safe to go ahead and pick that off. So all the ones that group together and are by themselves, I just commit those to the match list immediately. And now I only have to do the match boiler experiments with the bottom five values. Because every match in that bottom five has at least one value in common with at least one other entry in that list. So that's what groups them together. And we have to, there's nothing for it, but to run the experiments. The bad news there is, again, we're talking about n over n time. So when I wrote my example using Boston Blackie, I came up with it like hanging out at PyCon in order to do the lightning talk that night. I wrote a quick example using Boston Blackie, and I ran the script. And it correlated for 20 minutes. And I said, OK, something's going on here. This isn't working. And so I killed it. I started it a little. I said, oh, I should have the dates. I added the dates, and now it's correlating in a 10th of a second. So it just needed more data to run. But I went back and I said, OK, how long is that going to take if I don't have the dates? So I started that thing again before I left for EuroPython. I actually started it on July 6th at 1.30 AM. And it's still running a week later. It's been over 11,000 minutes of CPU time, and it shows no signs of stopping. So my point in telling you this is, if correlate seems to be taking a while, maybe you just need to go back and share your data and see if you can give it more to work with. The more you give correlate to work with, the better job it can do. That's really everything. I wrote a lot of documentation for correlate. That's out up on GitHub. And you can, of course, install it with PIP3. Thanks for your time. Thanks, Larry. Thanks very much for that interesting talk. Do we have some questions about correlate from the audience? Oh, somebody's brave enough. By all means. So you've had to do a lot of hard work of thinking about this problem. Isn't there some random forest machine learning algorithm, meta algorithm, where you just feed in some examples of your matches and how you'd like them to correlate, and you build some model, and now it can correlate many things? That sounds like the future. I would have to say, first of all, I don't know anything about machine learning. But second of all, fundamentally, you need to establish a way for the machine learning algorithm to understand the data. So you would have to establish things like the scoring algorithm. Once you did that, maybe you could teach it to say, OK, I prefer these higher scores. Really, I'm not sure what it could do that was smarter. The only thing I can think of here is just like, I'm thinking I may add some sort of maximum list of how many experiments we can run in the match boiler, just to cut down on the, like, OK, pick something random. But I don't know how AI would make it better. On the other hand, given all the keynotes recently, I'm worried about how adding AI to correlate may make it murder me in my sleep. Thank you. Thanks. Second question, yes? Sure, please. Thank you very much for the talk. That was really lovely. I was thinking about the information retrieval domain while listening to a talk. Have you had some inspiration there, or was it just like completely random things coming to my mind when I heard this? Because when you create a set of keywords basically for an object, this object is kind of a document in the terminology of information retrieval and algorithms and measures like ITIDF, for example, should work there. Oh, I don't know anything about, like, real, like, again, I'm off on my mountaintop just thinking about my problems for myself. I've used this for matching up podcasts with data scraped off of webpages. I've used this for, again, it's usually like MP3 files scraped off of webpages. I haven't used it for anything like that. I don't know anything about document retrieval technology or document databases or anything like that. I'm sorry. OK, thank you. Sure, sure. OK, so that concludes the questions. Thank you very much again for the talk. Let's have another round of applause for Larry. Thank you.


Dobrone imetem. Yesterday I wanted to introduce you to my Mainnet project. This project is about implementing a real whatsoever operation for Italian products, and in particular we started with the supply chain ecosystem. This project is based by the Italian Ministry of Agriculture. je veliko in kompleks, tako da ne sem tudi način, kako se vse občajte. V tej prezentaciju, sem vsegačila, ki je vsegačila, da se vsegači soluzij, in v nekaj kraj. Vsegačim sem vsegači, da se vsegači, kako se vsegači, kako se vsegači. Zato se z vsegači. I am this is suggestion from me, I am a developer I am a solution architect and head of the blockchain competence center in Alma Viva. So let's go first supply chain exists regardless of IT solutions. So you must fit their process. No, no the contrary, okay, so you will have supply chain that evolves with business, leveraging the technology.  You cannot expect that clients want to know the taste of your solution, or it's interesting in how disruptive for the classical 80-word it is. Each actor of the supply chain has its own expertise, vision, business, models, and goals. So you cannot convince them or the sector to converge to a single goal, okay? Creating an integration of supply chain consistently is a matter of business, not technology. So stakeholders want to only do its own job, not to be IT expert, and stakeholders use this technology that gives them minor costs and better results. So what you need to do is to find scenarios that really need a decentralized ecosystem. So you need to search for heterogeneous stakeholder with different goals. So, for example, a big company with many suppliers, it's not a good idea, many intermediaries, so if you are in Italy, it's a good place to start from, and a lot of bureaucracy. Italy also a good place to start from, and EU also. Let's continue with the conclusion. So you cannot force a supply chain ecosystem. You need to create, in my opinion, a create a promising environment that all actor wants to use. So you create a virtual cycle that makes other stakeholders join. What is a promising environment? So it fixes some issues from the beginning, let's form some actor. It can grow without relying on a single actor, and every actor can implement new features. It has a reputational system that emerges during the normal use of the environment by the stakeholders. So endorsing should not be separated step. And you should not add a step to the stakeholder business process. A promising environment must save private investments that are made to upgrade the stakeholder IT systems, and it should be cheaper than existing solutions, and at least the same features. Stakeholders can leave the enjoy, the ecosystem, whatever they want, without shame and justification, and regulators must recognize and participate in the environment. Really important, bold, underlined. So private companies look for a return on investment. Sooner or later, they never really do charity. So I think that your company does not exception. So I suggest to stick close to government organization. They can really boost the creation of the environment because they can spend money for the go of the community. And this is exactly their own return on investment. And with conclusion, you need the regulators to get rid of regulation. So don't try to be the new regulators just because you master the blockchain. And you need the materialization, really. Really much the materialization. Start creating a decentralized solution that simply works. Don't try to build a complete solution from the start. So you cannot force the use of specific IT supply chain solution because it never fits the needs of the stakeholder. In any case, there is no single solution that rules them all. There is no single smart contract that rules them all. So it's only a matter of integration. Please use the blockchain for what it is better. So leveraging all the peer-to-peer technology and integrate those technologies with legacy system. We need legacy system for many years, more. And again, you don't need to do all on the blockchain. Really, you don't need. So don't do it. Start with solution integration that prepares the environment for the growth of the ecosystem. So if you follow these rules, I think you can use Ethereum Mainnet for a build a decentralized supply chain solution and you can build it now. Just gather with others. Don't try this alone. And if you want, you can start building with us. So who am I, who we are. We are quite big company. So we are all over the world, Italy, Brazil, United States. We have many, many people that works with us. And we cover all these markets. So public administration, representation, logistic and so on. I think you understand the kind of company. And we have many partnerships. So if you want to be with us, just say hi. And to cover all the aspects of the new technology, we have many confidence center. As I said, I work with the, I am out of the blockchain confidence center and I work with other confidence center to provide this kind of solution, because it needs to be many competencies to provide this solution to the customer. Blockchain is used here as a keyword, as a shortcut, because I really trust that the focus here is to create decentralized solutions. So blockchain is the main technology for this solution, but it's not the only one. So scenario. Italy is one larger agricultural producer of food and processor in the European Union. There is one million people directly and directly involved in the production chain and we created not one, but four marks of guarantee that a food of wine product tastes as it traditionally should. So the main agricultural market treat that we want to solve is product counterfeiting, national and international. We choose to start from wine, because Italy is a larger wine producer in the world. So we produce 500 millions of liters of wine per year. We are very thirsty. And the trustability of Italian agri-food is the most discussed topic for benefit it can make in several application areas. So what we need to do is to guarantee quality, consumer safety and protection of Italy, of made in Italy products. And to determine the origin and characteristics that make the products unique. Traditional tracking methods are not enough to contract and discourage counterfeiting phenomena. So the actors involved in this ecosystem are many. Here you can see the main, there are producers, wineries, transporters, consumers, association or associations of all these players. So association of producers, wineries and so on, bottlers, government organization and so on. They all share essentially the same issues. Mandatory documentation in Italy often is still in paper and container dental information. So there is delay in data gathering because all these actors need to send data to the ministry. So they have different days, different laws and the ministry can really do the math. Because different actors can declare different numbers and it's not easy to understand who is saying the truth, who is saying that he is wrong. There are high costs for formal controls because it's fully centralized information that is required to go to the ministry and there is no easy access for the consumer to all these data. So the data is there, but it's available only for the ministry, not for us. So the project is this. We set three goals. Reduce, reduce workability burdens for actors involved in production chain. Simplify mandatory declaration management, automating the collection of information and removing duplicates data. Create a certification system based on innovative technologies to support the wine supply chain. This is important. It should be coordinated and supervised by the ministry, so that it is freely usable by the market. SME retails the top for building of value-added services and enable more effective control management by organizations. So how we do that with an industry.4.0 supply chain platform for traceability of grapes, transport, processing and bottling. Inefit, administrative and formalization simplification, traceability certified and accessible to players and consumers. Easy sharing of guarantee data for all controllers of supply chain and we have real-time access to product chain information, decreasing cost from documentation and check of authenticity of products also aboard. I think all know these, but we have advantages of lessons like platform. There are no single point of failure. We have cost fairness, one of my favorite, because reduce cost to respect existing solution and it is a fair distribution of cost among all players. It's safe. We can run smart contract and we have data protection, data are immutable almost and can be encrypted. What is different, the improvement respect private solutions based on the blockchain already existing. So we, the platform born and dedicated to incentivize collaboration efforts so encouraging data usage and building new application. Rehabilitio data, data are also certified by public administration systems not just for private individuals. It is legal valid and there is legal validity and simplification involved because we integrated with the system that are already used by the ministry and are used to fulfill various bureaucratic burdens. So the company does not, anything at all and you can track the supply chain just now. Actors with certified identity so we can integrate with specific existing systems for identity identification, for example, the IT system of the ministry or the SPID, that is a national Italian identification system. It is a, the solution is it is provider, IT provider agnostic so every stakeholder can choose its own IT provider to use the platform. It don't need to choose us or the ministry and save private investment in the ecosystem because it is a relasting liveness on the platform guarantee and even if the ministry decide to stop using it, the platform is still there. What we created is, we choose six players and we created application for everyone. So the first is a producer that send graves and land information with mobile app. The transporter take that information and certificate that it takes those load and bring to the winery. The winery, we upgraded the system that the winery already use to track this information also on Ethereum. We created dashboard and analytics for the ministry and for to monitor the older transaction and to apply flow detection and we are waiting to create the step of assuming NFC tag history to the history and we created also a web app for a consumer to verify information. How we created this is we use an high-level architecture like this which is a platform we already own inside Alma Viva. It's called Jotto. It was born as an IoT platform then evolved as an integration platform and now it's also a blockchain platform. It's a very high-level view, overview of the platform. The main feature of this platform can be mixed. The model can be mixed as we wish. We create a specific platform for every customer we work with. In this case I choose this kind of I summarize a little bit, but in this case the supply chain is this. On-premise is a solution on VMware because ministry uses this product and we have a legacy system you see in gray with vini-cultural register and data application. This application needs to be upgraded to send messages to the data lakes for analytics. You see a bunch of classical analytical products like plastic search, park, flume, etc. And we created the front-end with angular engines and the backend API with GraphQL and Node.js. Persistently there is Mongo. For blockchain system we use the two client, priority and get. We put get on the cloud. So all actors and third parties can interact with the ministry or via a classical way legacy system or directly through the blockchain. So now the third parties now send data directly to the ministry tomorrow it will send only to the blockchain. Sorry. The same thing let's say something about the smart contract. Smart contract we created this platform so everyone can work with. So smart contract and some so everyone can use smart contract that this smart contract sorry. Just a moment, okay. So everyone can use this smart contract. The issue is we can create a supply chain. We don't need governance we need endorsement. So the ministry endorse each step. If I don't want the ministry endorsement I can use this platform in any case. So the consumer or every actor can see who endorse what step. So we can see that the chain is dynamic and every step can be endorsed by everyone. For example, we can now the identity of the company is provided by the ministry but tomorrow can be for example an agency residency credential maybe using the proof of identity and allows them to endorse every step in any case. So it's up to every player of the supply chain to choose what endorsement to consider valid. The ministry set some constraint about for example the quantity. So if you produce a fixed amount of wine you cannot bother more than the capacity of the bottle you have. And I can show you just what I think about upgradable smart contract. Please do not upgrade smart contract really fast because I don't have so I prefer and I suggest don't upgrade smart contract because this puts a government inside something that should not be governed. It's better to send a message to the clients that the smart contract for me for the ministry is not valid anymore. So if I want to use them that smart contract I can continue to use that but I know that someone know that the smart contract is not valid anymore for the ministry. So I have finished the time so this is really fast some screenshot of our console made in Angular that shows the production and the supply chain steps. It's really fast. This is some analytics from Kibana and we have a deviation from the historical series for example. This is the snapshot from the mobile application for customers so you can scan the NFC code NFC code on the bottle and check all the steps of history and understand where the wine is made from and so one last thing the story is you may already heard of this somewhere by someone and you can build Ethereum and the centralized application now in production don't let them catch you doing it though. Thank you.