Alright, so what is a p-value? This video shouldn't take too long, it should be very simple, because p-values are simple. There's not much to them, the idea is very intuitive. So hopefully after going through this example, you'll never have to think about it again. It'll just be natural. So the way we're going to go about this is do this beer and water test, where we're looking at if mosquitoes are attracted to beer drinkers versus water drinkers. That's based off of a study that PLOSONE published. So the idea here is that you have a beer drinking group compared to a water drinking group. And the idea is to see if mosquitoes are more attracted to the beer group versus the water group. In this specific study, we had, I believe it was 25 participants in the beer drinking group and 17 or 18 in the water drinking group. I have the data posted, or I'll link to it in the description, you can check the numbers there. And so what you could do is you could take the number of mosquitoes in a certain trap and count them and get an average over the whole group of participants who drink beer before they got hooked up to this, I think it's called a YOLLA factory device. It's not something I know anything about. And they did the same thing for the water group. They'd have participants drink water and then count how many mosquitoes were in those traps. What you can do is you can take the mean of mosquitoes in the beer drinking group and the mean of the mosquitoes in the water group and calculate this difference. And this is a really important number, 4.4. It's our original difference. And so here is where the debate starts and where the statistical question pops up. You have two sides of the story.  If you drink beer, you shouldn't expect to be visited by more mosquitoes. Then you have a alternative argument where someone says, hey, look, this 4.4 is large. It's something that does make a difference. So back to the argument. What you can do is you can just take the skeptics argument and say, look, if you really don't think that there's a big difference between the beer drinking group and the water drinking group, let's run with that. Let's go ahead and take some of these beer labels and some of these water labels and just switch them around because that should be a meaningless tag, a meaningless label. If you switch those, you'll be able to calculate a difference. And you do this 10,000 times. You just take off a whole bunch of beer stickers and water stickers, plop them in different spots, calculate a difference. Do it again. Take off a whole bunch of beer and water stickers, plop them in random spots and calculate that difference. And you do that 10,000 different times or so. And what you'll end up getting is a distribution of differences. So what I have plotted here is just that distribution of differences. There's a red line that is at 4.4 that we originally got. And so what this is showing is that when you kind of shuffle all these different labels around the beer and the water labels and calculate the difference, it's pretty rare to see an event of 4.4 or higher. That's something that just doesn't happen very often. In fact, you can calculate how often this happens. It's something that happens 0.0006% of the time. That value, that 0.006 is the p-value. That's all there is to it. It's just that proportion of times that you actually see an event greater than the original statistic that was calculated. And so the cool thing is that that's all there is to the p-value. It's a really intuitive idea is that you're kind of taking this alternative universe where beer and water just don't really make a difference. And you're simulating this distribution of differences. And you're just counting the number of times that you see something more extreme than that 4.4. So if you've had a statistics class in the past, you might be wondering why we didn't talk about the null hypothesis ritual. That's the idea where we calculate a p-value and see if it's less than 0.05 and reject the null if it is. Well, that was never the original intention of R.A. Fisher when he created the p-value. So we're going to go back in history a little bit, rewind and talk about what the original motivations were for p-values. The idea here is that we have R.A. Fisher, and we'll go into a little history here. R.A. Fisher is seen as a geneticist and the father of modern day statistics. Fisher was born with poor eyesight. And so every picture you see of R.A. Fisher, he's wearing glasses. And it's kind of this neat like origin story. He would not think about things in terms of like algebraic equations. He tended to think of things more geometrically, and so lots of these original statistical ideas came from a geometric approach to statistics. And he would just kind of use those ideas and then come up with the symbols later. But he was a really interesting thinker and kind of the scientist of scientists. And what he was trying to do when this whole idea of p-values came up was to put inductive logic on the same kind of solidity as valid arguments. So we can think of arguments in two large categories. There's the risk-free arguments. These are the valid arguments that you learn in logic 101. Arguments like all men are mortal, Socrates is a man, therefore Socrates is mortal. There's also a whole nother category that usually you don't talk about in undergraduate education that's starting to change a little bit. The idea of risky arguments, this includes things like inference to the best explanation, testimony, and inductive logic. And inductive logic is what we're gonna talk about here. And that's what Fisher was thinking about was this idea of inductive logic. So what makes inductive logic different from the valid arguments like Socrates' mortal argument is that inductive logic relies on just historical facts. So if you were to say the sun's gonna rise tomorrow, your premises would be something like the sun rose today, the sun rose yesterday, and the sun rose the day before. That's all using this idea of induction. You're saying that something will happen just because it's happened in the past. And it's not a bad way to argue. It doesn't have the same watertight properties that the risk-free arguments have. And Ari Fisher recognized this. So what he wanted to do is kind of make this logical disjunct. And the p-value works as a type of logical disjunct or exclusive or. And the way it works is this, is you do these calculations and you come up with a number. And you say either A is true or B is true. And so A would be either we observed a situation if we're taking the null's opinion. Or the skeptic's opinion. Either we observed a situation that only happens, a very rare occurrence of the time of p-value chance. I'm using air quotes, a p-value chance of the time, like 0.005, 0.005, whatever it may be. Either we observed a rare occurrence or the alternative is true. And that's really what the p-value is. And that's how Ari Fisher thought of the p-value, is now we have this tool, we have this logical disjunct where we can put our statistical arguments in a more watertight framework where we can say one of these two things is the case now. And that's all there is to it, really. There's lots of scientific journals now that kind of throw the baby out with the bathwater and say, you're not allowed to even report p-values. My personal view is that that's a little bit silly, it's just a number. And I do think it says something interesting along with many other numbers. And other journals require p-value and you aren't allowed to publish a result unless your result shows a p-value of less than 0.05. Which is also silly because there's cases where maybe that p-value of 0.05 is not really as significant as you might think. So that's it for p-values. I hope this was useful and thanks for watching.


Hey, Psych2Goers! Welcome back to our channel! We wanted to let you know that your ongoing support helps us make psychology and mental health more accessible to everyone. So, thank you for all the love that you've given us. As a disclaimer, we want to remind you that this video is made for informative purposes only. Please seek professional help if you think you or someone you know is struggling with a sociopathic personality. This video is not meant to provide a diagnosis for antisocial personality disorder. With that said, let's begin. Sociopathy, commonly classified as antisocial personality disorder, is characterized by behavior patterns that include manipulation, deceit, aggression, and lack of empathy. Sociopaths tend to engage in risky behavior and violate laws at the expense of themselves or others. These individuals may have a compromised moral compass and are usually perceived as unethical, immoral, and irresponsible. Despite the media's glamorization and inaccurate portrayal of sociopaths, most of them are not serial killers. They can be CEOs, lawyers, business owners, politicians, Wall Street traders, housewives, doctors, they could be anyone. So, here are seven signs that someone you know may be a sociopath. Number one, sociopaths lack empathy. Antisocial personality disorder is categorized along with other personality disorders, such as borderline personality disorder and narcissistic personality disorder. One defining trait is a lack of empathy. Typically, they do not feel any remorse or guilt as they have trouble understanding other people's emotions. As a result, they may emotionally hurt those around them and have difficulty maintaining relationships. They can come across as cold, harsh, callous, and unfeeling. With training and therapy, it is possible for some people with ASPD to feel love and empathy. They usually develop empathy towards a select few, namely their children, parents, or partners. Number two, they're manipulative. Sociopaths have a talent for manipulating others. They're opportunistic and highly ambitious individuals. As such, they rely on emotional or physical manipulation to get what they want. Some techniques that they use to manipulate others are gaslighting, lying, flattery, blame, and threats. Number three, they are dangerously charming. Charm is part of the game. Sociopaths use their charisma and charm to attract others, specifically those who are more vulnerable than themselves. They will feign concern or kindness to get people to believe them and establish a sense of trust. That way, it becomes easier to manipulate them. Number four, sociopaths are ill-tempered and impulsive. Though those with ASPD usually resort to manipulation, they are also more impulsive and ill-tempered. They're prone to engaging in risky and illegal behavior at the expense of themselves or others. Different factors affect the development of this trait, but being around people who encourage and condone violence make it more likely for someone with ASPD to be violent themselves. Exposure to domestic abuse and animal cruelty are some early manifestations of violent behavior in a person who has ASPD. Number five, they have strained relationships. If a sociopath manages to establish a relationship, they will most likely be very possessive over the other person, especially if it's a romantic relationship. Sociopaths see people as a means to an end, whether it's to glean information from or for emotional fulfillment or for money. They use people to obtain something and feel threatened when someone tries to insert themselves. Number six, they're narcissistic. ASPD can occur with other personality disorders, namely narcissism. It's important to note that not all narcissists are sociopaths, but most sociopaths can be narcissists. Sociopaths develop a superiority complex and use this complex to justify the way they treat others. Because sociopaths do not feel remorse, they do not normally apologize. And number seven, they find enjoyment in others' suffering. Though individuals with antisocial personality disorder do not show empathy, there are some rare exceptions. Sadistic antisocials use empathy to experience their target's suffering and to derive pleasure from it. Do any of these signs describe someone you know? Let us know down in the comments below. If this video helped you and you think it could help someone else too, give it a like and share it. The studies and references used are listed in the description below. Don't forget to hit the subscribe button and the notification bell icon for more Psych2Go videos. Thanks for watching and we'll see you next time.


planting trees to make Hawaii more carbon neutral here today and community matters with one of my favorite people at UH, Camilo Mora. He's a professor of geography and environment or was it environment and geography? What do you do up there anyway? Oh, we do all kinds of things. Basically, we want to make, we try to make the world a better place every day, different ways to get there. Okay, so we made a movie called the spiraling crisis, the alarming convergence of climate change and pandemics. And you were a star in that movie, a star, I say. And this is like to follow up on it because in that movie you said that in order to get into heaven, you have to do good things, good works. And the best work you could think of was planting trees and your plan was to plant a million trees. And I thought that was aspirational, but then I came to find that in fact, you've already started on that pathway and you are in fact planting a million trees. So let's talk about your motivation. What is it about the climate change that drives you this way, Camilo? Well, I think that what drives me is the fact that I had a soul.  We're talking about hundreds of species going extinct. You know, like here in Hawaii, for instance, we had 200 species that had less than 200 individuals. Some of the species had only one or two individuals, meaning that if that guy died, the entire species goes extinct. So I don't know where I grew up. You know, it was always don't do to others, but you don't want others to do to you. So those are kind of important guidelines for us to live our lives. So for me, it's kind of choking to see what we do to the planet. You know, and we have been studying that for very long. The science is pure of us. Every single paper that I write about what we're doing to our planet makes me more depressed than the paper before because every single time that we try to investigate these things, we discovered that we are seriously damaging our planet. So with that being said, though, I thought, well, it is time for us to start doing something though. And I don't want President Obama or President Trump or President Biden to fix this problem for us. So I figured, what is gonna be my part?   Right? So I always ask myself that, had I done enough in my life to deserve to get in there? And I say, I don't think so. I gotta get my hat together to do something that will make me get in there. And I realized that that was planting trees. You know, planting trees is such a beautiful thing for so many things, for doing the environment, good for the environment, good for the species, good for the soul. I figured, let's just go for it. And we discovered that mathematically, it actually can help to make Hawaii a better place. And all what we will need is to plant a million trees a year. A million trees by 2030 or 2050, we gotta be done every year. And a lot of people think, wow, this guy is crazy. That's never gonna happen. And what I say to people is this, there is a million people in Hawaii. Let's imagine that 90% of them are climate deniers. 90% of them, let's just play with the 10% that care about this. This is 100,000 people. And let's create a protocol, a process in which every one of those people plant 10 trees. It's a job that we had a story takes about two hours to do. That's your million trees right there. So that means that in this weekend, if I didn't have that protocol done, I could plant my million trees every weekend, not every year, every weekend. But we will need this protocol developed in such a way that we will allow any person in Hawaii to go and plant 10 trees whenever they please.  And it's so easy, but unfortunately I need other people with the money to buy into my vision because it's a protocol that needs to be developed. This is what I say to people. This is like making hamburgers in McDonald's.  It's because there is an entire process to get you that burger there. We need to develop that same process for planting trees so that if you say, I'm gonna go and plant my 10 trees. You just say, and you know what, I don't gotta be too hard. I just wanna be relaxed. Yeah, we have that for you. You just come and stop by our nursery, pick out your 10 trees. Here is where you plant them. By the end of the day, you just got your ticket to go to heaven. Good to go until next year. It's easy, right? It's a beautiful idea. You know, and you mentioned in the film that you can write articles, scholarly articles and news articles about climate change and publish them all over the world, which is what you do. But planting trees is a tangible kind of thing to do. And that's why you have focused on planting trees. And it's really, it's admirable and commendable. And you're gonna get a prize for that. Well, it is interesting because again, when you analyze this thing of planting trees in the standards on the big things in life, you realize that that is actually more significant at times than many other things that we think are more significant. I'm just to make the joke at the end or at the beginning of my presentations, how we had about 70 scientific papers, 12 times we have been in the New York Times and Washington Post, 12 times. Papers that we had done here at the University of Hawaii have been highlighted by the New York Times and Washington Post full time. So I say to people, a lot of people say, wow, yeah, yeah, yeah, New York Times, Washington Post, 10 times, okay, all right. But what I say to people, think about me, the day that I understand it in the front of, in the doors of heaven. And God asking me, do you deserve to come in? And I say, yeah, I made it 12 times to the New York Times. And people kind of love about that, right? Because it kind of makes the point of how we, because there are certain things to be super important, but in the big scheme of things, those things are not important at all. If I go and say, I planted a million trees, it is so hard to plant trees, so, so hard to make it successful that I'm telling you, getting a million trees is a direct ticket to go to heaven because I'm telling you, God will appreciate the difficulty that has going to getting that thing to happen. Camilo, let's talk about how you do it. Let's talk about the protocol, the various phases and how you get there to the point where you have planted a tree. What do you have to do to go down that path? It is a, unfortunately, it is a big process. And one of the things that I always get me fearful of people getting into this is getting into it without using all of the background information that is required for you to make it successfully. So the science that needs to go into this is massive. Let's start with where are you gonna plant the trees, right? So obviously there is some paperwork that you need to sort out with the government and we will need more commitment from the government, but let's just not go there. Let's try to keep the people happy, but that's a complication that you have to deal with, is where are you gonna plant these trees and are you gonna get the permit from the government? At the end of the day, it comes down to the decision of a person. So it's not a big deal. Now, once you identify the place that you need to identify what are the climatic conditions on those places? Are those places that are too dry, too hot, there is enough sun exposure? And the importance of that is that then it will allow you to identify what species to put in there, right? So you can just not go and plant any species anywhere because possibly you might interact using the growing species from the workplace.  And the laziness comes from the fact that there are many species of trees that will succeed in Hawaii. Turns out that 90% of those species are introduced species. All of these species that, most of the species that you see in Onolulu are trees that were not from Hawaii. They were introduced from somewhere else. So I always think, why are we doing that? You know, when we have the capacity to put so much maintenance on those trees, why we don't focus on a species that are native to Hawaii that will require, that will benefit from that is for health. And the reason is just laziness because those species are easy to grow instead of putting some more effort in understanding what local species can be used that will be suitable for us to plan on many of those places. And that's where the science start coming in, right? Like we need to take the entire pool of species to identify what species can be mass produced so that they can be planted on these places. So there you start getting the complexity on this. Okay, now we identify the species. Now, it turns out that many of these species from Hawaii, so millions of years of evolution, they had never had any competition. So it's very hard to germinate the seeds. So we had thousands of seeds. When I started this business, Jay, I was so happy because I was collecting thousands of seeds. So many seeds, I was just like, yeah, this is gonna be a piece of cake to do this. And I went up with all of these seeds to germinate. I only was getting like 1% to 2% germination on these seeds. We took an entire process to identify what are the protocols for us to propagate those native seeds. And that's what you need to have investment in students to do the experiments to find out what are the methods that make these species that are from Hawaii to Germany. Now, the next thing is now with the engineers. And I work with the Department of Mechanical and Electrical Engineering here because once you plan those trees, the reality is that with climate change, the water that the tree will need is there, but it comes in a very short period of time. So now the consequence of climate change is that you get periods of drought that are too long. And unfortunately, they are so long that the tree will not have enough time for them to survive this. So you need to be able to ensure that these trees get water. The way that people do this is by going and watering these by hand.  It will take me a lifetime to irrigate my million trees. It's not gonna happen. So what we have been trying to do here at US is to develop devices that we can deploy with the tree so that the device will collect rain water and it will deploy the water to the tree. So now I had this cool device.  When it rains, the water gets collected in there and the device deploys water slowly. So all of this water that comes in about a week of time, it gets collected by the device and it will give that water to the tree for the entire year. So that way I had not to go there once. All what I gotta do is go and plant my tree, put this device and come back the next year. Rather than me going back 10 times to irrigate, those 10 times I'd rather go and plant 10 trees rather than going back and irrigating the one tree. So that's what I'm saying to you about this complexity to the process that will require us to invest on the development. And whenever I see these massive pushes to go and plant these trees, I just don't see it happening. I'm sure that they will succeed, but I'd rather invest on making this process successful so that rather than me planting a million trees in one year, I can plant a million trees every weekend. Once we sort out the protocol, it's gonna be expensive, but it will make any future planting a piece of cake. How do you get volunteers to come around and actually do the legwork to plant them? Well, it's funny. That's another thing that you will think will be complex, right? Getting people.  Actually, all of this idea of planting trees, this is my daughter that came out with this thing. Actually, she's my boss, you know? And I always say that I'm a very supporting father because she's the brain behind this or what I had done is just try to support this thing to get it there. But early on though, when we were planting trees, we decided to plant a thousand trees and we wanted to do it in one day. Thousand trees one day. It was so hard. You cannot imagine how painful, hard that thing was. And the day of the planting came in, it was a Saturday and we were there at six in the morning and the planting was at one PM and nobody was coming in, nobody. And we were just like, shoot, nobody's gonna come to this. And then at one PM, people start coming in and people start coming in and people start coming in. And next thing I know there is an entire mountain full of people on the ground planting the trees. I remember standing back on this thing and looking forward and getting my goosebumps. I had never used drugs in my life, no drugs, but I was so high, so high, looking at all of these people planting these trees that I thought this is probably the closest guess to using drugs because I'm telling you that the degree of excitement, fulfillment that I got, doesn't compare to anything that I had done in my life, getting all of these people there. So there were so many people that came that we ended up planting a thousand trees in an hour. In an hour, we were done by two PM. So we decided to go to 10,000 trees for the following year. And that was in time at heart. And it was one of the hardest things I had done in my whole life, plant those 10,000 trees. And this time I needed to have, we needed to have a lot more people and we went to multiple schools. And the day of the planting, we had this webpage that we were having people register in and the day before there were like 300 people. And the morning of the planting, I went out and opened my webpage just to see how many people log in to do this, 2,000 people, 2,000 people. I showed up to this, we showed up to the planting event and seen 2,000 people, J planting trees. I was just like, this is so doable. Making this thing happen is so easy because that thing that we thought is difficult, which is to get the people to not to be the easiest of things. People is eager to go and do it. Why didn't they come out? Why? Well, I am thinking about that. Now, for instance, with this COVID situation, we haven't been able to do anything. I am bored to death on the weekend. I just don't know what to do on my weekends. So you come and tell me, hey, come and hang out. Try to do something nice for the environment, something that fulfills, something that allows you to hang out with other families, something that allows you to come with your own family to plant these trees. You get families coming in, coming in. So yeah, I think there are hundreds of reasons why people came to this planting event, but what I can tell you for certain was that we did a bare minimum effort to make people to come and we got more than 2,000 people to plant these thousand trees. And we planted 10,000 trees, J, in an hour and a half. In an hour and a half. That's enthusiasm. Things that we think are gonna take us like years to do. Dude, once we get these protocols done, these are things that we can get done just like me, feeling hungry, going to McDonald's and getting a burger in a minute and a half. So you train them. They come around, you train them, you show them how to dig the hole, where to put the tree in the hole, how deep, put the soil on top again.  That is very good. Actually, one of the things that we do have, I went to the military and that, I actually did it in God a lot. And I think that God makes, he goes through things in life sometimes and you can learn things from those things. And I went to the military and I realized during this process of planting, several things that I learned in the military that I had tried to apply to this issue of planting. And one of the things that I learned in the military that I didn't apply, that we're applying here is this hierarchy. You know, you have the soldiers, the captains and the general. And we had, in my team, we had that infrastructure. So we had a general, we had two generals. Actually, actually we had the president, which is my daughter, I will be classified like a general. But then we had like about seven lieutenants, more like 20 lieutenants. And those are people that we work very closely with. They have been with us for years already planting trees. These are one of the most committed people to their project. They just love to come and they know everything. So what we do with those 20 people is, we all go through this training. We know exactly how to plan the tree. There is a protocol to how to put the plan on the hole so that they're the maximizes the survival of the tree.  So we get 20 soldiers, we want all my lieutenants and they go and plant trees. So you get like pelotons of people in groups of 20. And basically what we do is a system in which anytime that there is a piece of information to be delivered from the top to the bottom, the one person send it to the 20 lieutenants and the 20 lieutenants automatically deliver it to 2,000 people at once. Yeah, so the chances are much better that you're gonna come up with sustainable trees that way to be properly planted. Now, you've been very interesting to the press. You've been on all the networks locally and there's a number of clips out there where you explained the system and showed people how it worked and one such clip was part of a, I guess, a series on Hawaii News Now. And we wanna play that, okay? It's about five minutes. We wanna play it. And then when we come back, you'll comment on informing. Now, do you wanna say anything about the production of this particular clip, the one on Hawaii News Now? Well, yeah, I mean, there are a couple of heroes on that production, Anthony and Mike and the two of them were the ones that saw the potential on this thing. And I'm super pleased that they managed to document this process. So a lot of credit to the two of them and I'm sure that it would be a knowledge on the video clip there. Okay, let's play it and then we'll come back and do a retrospective with you. Environmental studies major, so I kinda was aware of it before, but one thing I learned that I didn't know was how much of a plane ride contributes to carbon emissions, so like one plane ride equates to like a whole year of driving. That's why I'm here volunteering and doing this kind of stuff. So as a scientist, I always thought, and as a human being, I always thought that knowledge was enough for us to get us to fix this problem. For many years, what I did was to generate that knowledge with the expectation that people will get to work on it once we're building what to do. Unfortunately that time came and we didn't do anything. What I decided to do is let's start walking the talk. You know, too much talking, not enough doing. This is the opportunity for us to show that we can actually do something. So basically what we're doing is filling these planters with soil so that we can put seeds in them to propagate about 10,000 seeds that Professor Morrow wants to hopefully plant out within the next few months. All what it takes is just to plant 10 trees. 10 trees a year will be enough for you to upset all of the emissions that you produce in the one year. How much is that to us? Our group is from the Garden Club of Honolulu and our commitment to Dr. Morrow is to collect, scarify, and plant 10,000 seedlings, actually 11,000. So I actually been working with Professor Morrow for almost a year now. I was in one of his classes and he's a really motivating guy and you don't find many professors that are actively doing what they're suggesting their students to do. I saw him out there every weekend. They're cutting trees, planting trees. And I was like, man, this guy needs help. So. Our club learned about Dr. Camilla Mora's seed planting program through an NPR story. And we were so inspired by his dedication to getting trees into the ground in Hawaii to combat climate change. And that is something that our Garden Club of Honolulu is familiar with. Cutting all the way down to the ground. I cut it to as far down as I could get. I'm just putting them on the side. Oh, okay. Rather than trying to reduce your daily consumption, which is a lot more difficult, people are able to go in, plant a tree, and hopefully multiple trees. And in that way, you can reduce your impact through carbon sequestration and through that tree itself. I mean, when you realize how simple it is, it's kind of remarkable that we are not doing it. Yeah, it's pretty fun actually. Why is it current, Matt? Because we get to get all dirty. And we know we're doing something good. This is a scarified closed seed. Scarifying means you take the top off of this seed and give it a little extra boost to be able to absorb water and germinate more quickly. Using these planters, which is basically a biodegradable fabric, we can fill these up with the soil later on, put the seed inside, and then once we get a small sapling, you can basically take this whole thing and plant it in the ground at the site that we're working at. This is not a high-level position. I'm an entry-level. She goes through all of them and just count how many have germinated. And from there, we can take again the time that we got the first germination.  You will run out of land in Hawaii in 40 years. 40 years. Obviously, there is no ill-imited amount of land, but we have so much land right now that we start planting trees like crazy. In 40 years' time, you will start running out of land to plant the trees. But that moment, I'm hoping that climate change will not be an issue anymore. And we will have a very nice forest to live in, all right? Something that we can feel proud, you know? Like me with my grandchildren just looking and staring at that forest and saying, we did it. Yeah, I like it. For later on, it's good for us to start getting a sense on when do we stop waiting, you know? Like, if we plant it today, when is the last time that we can say, okay, these plants should be... This isn't gonna make it. Often, it is an insect. It could be even white fly. I'm not sure. I want to show the boys that there are things that they can actively do to help impact our community, either locally, nationally, globally. And I think that living in Hawaii and the islands, the impacts of climate change are so real. And so this is one way we can participate in doing something to combat that. We have great hope that once these go on the ground, they're successful. It will inspire other people to plant more and we'll get to a million. So if this issue of fixing climate change cannot be fixing Hawaii, it cannot be done anywhere. We have everything that you need to fix it. So that is actually a personal challenge for me and I think that for all of the scientists and all of the politicians in Hawaii, it's to show that we can do it. If we cannot do it here, they just go home. They just pack and go home. Because seriously, this is the best place. We have the land, we have the people, we have the knowledge, we don't have the money. We are better off than many other places around the world in terms of money. So why we don't do it? It's a matter of just going and do it. As you see, here we have 10,000 trees right now. Why we don't multiply these by 10? So only one person that is leading this and 100 people that come every weekend is off-cake to multiply that by 10. And then you will get your million trees a year. More trees. Ah, beautiful, beautiful Camilo. It really touches me. So it's an honor to know you honestly. So I have two questions that come out of that, but first your reaction to the movie. Yeah, I get a lot of mixed feelings with that. Obviously, I feel very emotional when I look at that for so many different things. You know, when you had a solution that is so easy and like such a massive problem where everybody now is feeling it. You know, when you look at what's happened in the United States with the wildfires, the floods, the hurricanes, you name it.  I don't know how to explain this. Do you know this thing that's such a simple solution for such a massive problem and it's so doable there? So I get mixed feelings, unfortunately, because again, what I understand now, what is required for us to get that thing done, there are complexities to this. And unfortunately, we're still not focused quite enough to get that process done. And the second thing that gives me a lot of hope, I'm telling you, I keep the press constantly when it comes down to the work that I do, because the work that I do is still depressing, starting how bad is the things that we're doing to our planet. But whenever I see things of thousands now of people willing to be part of the solution is what keeps me driving. You know, like every time that I am in a low emotionally on these things, I realize, you know what? People want this. We gotta do this. Every major challenge in life through the history of humanity have gone through these lows and it's people not giving up. So when I wish people that is watching this managed to see the amount of motivation of people to be part of the solution. For me, that is another emotional thing that lets me always think about the fact that we should not give up. I tried not to give up myself. I get it constantly on this body. Body. So that's another feeling that I get when you ask me what is my take on this video, is that, is the fact that there's just so many people and these create friendships too. You know, like when we talk about as being divided, when you look at the people that come to this plant in advance, we get elderly people, we get young people, we get new age people, we get Muslims, black brands, you need it. Like this is like something that can unify. We can have completely different opinions and different views in the world, but this thing unifies us all. And yeah, I don't know if I... And they changed, they changed, I'm sure, by the experience. When they do this and then they come back, they say, hmm, I just participated in something really important. And now I'm more sensitive to climate change than I was before. I'm a part of the solution. Watch me go. That's right. You know, that's what you do for people. That is, again, it might be in the vision that we have in our projects, precisely to allow individuals to create a social norm around this. It's not about us doing it once a year. It is something that can be done easily once a month. Just think about people, you go to the church every weekend, if you are big into religion, to feel nice, to feel a better person. Well, you know what? This is something that can be an extension of that for everybody, you know? Well, you know one thing I wanted to ask you. You know, you're ambitious and your aspirations to plant a lot of trees in a lot of places, not only in Hawaii. What's the pathway to do that? I'm sure you've thought about it. What are the steps you will take to expand this program, this protocol, outside of Hawaii and to other places on the mainland, and who knows where? We, in business development, there is something that is called rushing a product to market.  An example of that, for instance, is what happened with those batteries from the Samsung 6, you know? The battery wasn't ready and they lost $6 billion when they released a product because it was a product that was not ready for show business. What is called rushing a product to market. So when you get that idea of business into this issue of planting trees, you realize that we need to have a protocol in place that can allow us to streamline the production planting of trees in a way that is successful. And for that, we just don't have that protocol yet. Like I see a lot of people eager to go and plant in these trees and now we have, now to make matters even worse, the motivation that is being generated to plant these trees is making a lot of NGOs everywhere. NGOs and what it's doing is actually diluting the resources that could be potentially allocated into these independent events which are again successful, but it's preventing us of focusing of creating this one protocol that we can then implement to a scale up. You know, like- How about COVID? Is COVID getting in the way? Is COVID, did COVID get in the way last year, this year? It did, but actually again, that's what I think the importance of us having critical thinking when we develop this. So one thing that we did with another organization about the Hawaii Legacy Forest, beautiful organization, they are for profit, so on a stand, but they also had a non-profit side of things and they allow us to plant trees in a ranch that is called Gunstock. They are putting money to actually ensure that the trees get planted that get maintained after we plant them. So we just go and deliver the trees and we plant them and they take care of the rest. But one of the things that we decided to do with the COVID was, you know what? We need to implement as a mechanism to plant these trees in a way that we don't get infected with this COVID. As soon as the city gave us the green light to have groups of 20 people separated, we created a protocol. And basically what we do, we had this field and in these fields, we have rows of trees and we put these plastic lines that divide these things and we ensure that only five people at a time are on a line. So they are never within six feet of each other and we just send 20 people at a time and we managed to plant 1,000 trees per section. Keep in mind, remember that the first time that I told you that it took us almost a year to plant 1,000 trees and it was painful that one first time. Now we plant 1,000 trees in a week and in an hour and there is no planting at all. Because that's how easy it became for us now to get to that level of planting 1,000 trees. And safely for the people involved. One last area I wanna cover and you've been sort of alluding to it is this. If I plant 1,000,000 trees in Hawaii or more and if I plant 1,000,000 trees say in California where they have lost so much of their forests over the wildfires, how does that interact on a global scale with the deforestation that's going on, for example, in South America, in Brazil. And we covered that in the movie we made with you. It's really horrendous when you see the footage of these commercial interests just churning the forest up into mush. And I'm wondering if planting 1,000,000 trees here or on the mainland or other places where you can control it somehow has an effect on the deforestation going on elsewhere. It does. Think about the movement. Movements always start small until they get big. Think about, for instance, the tobacco, right? People were smoking tobacco, getting cancer and some countries decided to put a lot of effort into this thing and now it's kind of a global understanding that if you smoke tobacco, you got a higher chance of getting cancer. The same thing goes with the HIV. The HIV was another thing that started as small and it became such a big movement now that globally everybody knows what the HIV is and you know at the very basic what is the way to prevent the transmission of HIV. So there are these case examples that you can point out on how movements get generated. So we got to do the same thing when it comes down to planting trees. I love the fact that you point out what is happening in the Amazon because the problem is that that is happening here in Hawaii. You know, Jay, that here in Hawaii we caught more than 15,000 trees a year in Hawaii. You take Hawaii, we go and criticize these people in the Amazon and we are cutting 16,000 trees here in the United States, more than 20 million trees in urban areas get caught a year. So we don't really have any more understanding for us to go and say to these people, don't cut the trees, what the hell are you doing? When we are cutting the trees right here. So one of the benefits of planting these trees is the way that we are doing it because keep in mind that a lot of people is planning in doing this thing but the way that we wanna do it is that we want people to do it is to create again this sense of ownership over the environment. When you get that sense of ownership over the environment if I own a house and there is a tree that is older than I am, I'm gonna be thinking why I'm gonna be cutting that tree. That tree has a right to exist. Unfortunately, many of us don't respect that right of that tree. So we need to generate these social norms and unfortunately you gotta start with movements and that's kind of the sweet parts of this project that we are doing is that we are allowing people to create to put a seed of a compassion about the environment. And once we get from here I'm hoping that this thing will spread out around the world just like other movements that have been successful. And I know you'll be there, I know you'll be there and I would like to follow up with you from time to time and see how your initiative and your protocol, how they're working and how you're more and more certain about getting into heaven, you know? Absolutely. I wanna know more about this Camila. So you have a website, can we flash the website on the screen now? What's the name of the website? That is GoCup, there we go. Okay, GoCarbon. Yeah, and this is gonna explain what you're doing and I suppose on this website I can sign up and help you on a given weekend and plant some trees. That's right. So whenever we are ready to, right now, again, we're developing the protocol. I decided that we needed to go back to the drawing board to develop these protocols. We are not ready for show business, you know? Like we did the 10,000 trees and it was fascinating. I love it. I wish I could do every single weekend. But the reality is that I don't wanna plant 10,000 trees a weekend. I wanna plant a million trees a weekend. And for that, we needed to go back to identify what are the bottlenecks on this process. And those are kind of the things that we are working on right now. Unfortunately, nobody wants to invest on this because the recession development is not cheap. But unfortunately, it's what we need if you wanna get there. Well, I hope you post this video on your website because I think it's an absolutely totally worthy investment for, you know, profit and non-profit alike. Dr. Camilo Mora at UH, thank you so much for coming around. We really appreciate talking to you. And more than that, we appreciate what you're doing every day. Thank you. My pleasure, Jay. It's always so nice talking to you. I feel like I feel full of energy already to go and do this thing on Mora again. Me too. I don't know why.


This is Brock Palin from RCE, and I have Jeff Squires from Cisco. Greetings! We have with us two developers from the Devisit Visualization Project. Sean, Jeremy, you guys there? Yep, yeah. Hey there, Brock. Hey, Jeff. Thanks for taking some time out with us. Quickly, can you guys give us your affiliation and how you're involved with this project? Sure. So, this is Sean. I'm from Oak Ridge National Laboratory. I'm the visualization lead there, and I was one of the original designers of the visit system, and I'm still one of the developers of it. And I'm Jeremy, and I'm also at Oak Ridge. And I used to come from Livermore where, again, I was also one of the original developers on the project, and I'm still involved with it in a few ways and a few different projects as well. Well, guys, thanks for taking your time to talk with us today. I wonder if you could give us the short version. What is visit? Yeah, so visit is an interesting animal. It's a turnkey visualization tool. It's a tool that's designed for people to be able to get understanding out of scientific data sets. And it can be pretty pictures. It can be statistical analyses and graphs. It can be pretty much anything you want if you're trying to get better understanding of the results, generally, of a high-performance computing simulation. That's the 10-second version of what visit does, but obviously the answer can be much more complex. So what would one of your users do? So they do a big parallel run, and they get a couple terabytes of data, and then they use visit to visualize it? Sure, I can maybe go through a simple conceptual workflow here. So you've definitely got the right starter, right?  So the first thing that you need in your sort of workflow pipeline here is reading the data off of disk. So we have about a hundred different file format readers right now. I can certainly talk about those in more detail, but there's some that are ASCII-based, some that are binary, HDF5 and net-CDF, things like that. A lot of them support parallel IO. And then after you've written the data, one thing you might want to do with it is create new expression, like you might want to calculate density from volume and mass and drive new quantities. We have dozens of different ways of operating on your data, capabilities for slicing, subsetting, transforming your data, and then typically you go through and you plot the data to your screen. So we have about 20 to 30 different plots for... These include ways of rendering your data, whether it's mapping values to colors or doing volumetric rendering. And other than plotting new data, you might want to do quantitative analysis, whether it's queries or other ways of extracting data, maybe scientific-based queries, you know, calculating centroid of some object, maybe feature extraction kinds of things. And you might want to save out the results. Obviously we can save as images as you expect from a visualization tool, but you can use this as sort of a larger tool in a processing pipeline. You can save data files out as, for instance, importing into ray tracers or out to actual scientific data files for importing to other tools. And of course, the entire time you're interacting with Visit, you do it through either a graphical interface or a Python interface or a Java interface. So we have a few different fun interfaces you can swap out and use in the same way. Oh, that sounds like a lot of code there. So is this a very large project? Are there a lot of developers on it? Yeah, there are a good number of developers. I don't know that we have an exact number right now. We were taking a look at the code repository and trying to figure out who has done major development on it in the last six months or so. Jeremy, I think you had put together a list. Do you have a count of how many people have done it? Yeah, sure. So, I mean, this list of names just came from actual commits to the repository, but we have more developers than this. But I can just give you the brief list. We have Shawnee Hearn and myself, Jeremy Meredith from Oak Ridge as well as Dave Pugmeyer here. Lawrence Livermore National Laboratory. We have certainly some of the original developers still there as well. We have Kathleen Vannell, Dave Bremmer, Eric Brueger, Hank Childs, Cyrus Harrison, Mark Miller and Brad Whitlock. All those folks are at Lawrence Livermore National Lab. At University of Utah in the Scientific Computing and Imaging Institute, I believe are Alan Sanderson and Tom Fogel and Gunther Weber from Lawrence Berkeley Lab. So those are the people who sort of, maybe not full-time, but something approximating full-time committing to the project. And certainly the project started back in 2000 with about half a dozen full-time developers. So overall, yeah, it's a very large project. A whole lot of man years going into it. And it's now actually gotten even international. We've got a couple of developers in Britain who are doing, who are contributing. We've got someone in France who is working on helping doing internationalization. It really has exploded in the last couple years in terms of contributions. Yeah, and University of California, Davis. And I mean, it's certainly got people at half a dozen or a dozen or even more universities, whether they're contributing just smaller code chunks and so forth. We do have, when you install this, there's a contributors file that lists a little more comprehensively. Gotcha. Okay. Well, let me digress from that and go back into the what is visit kind of category here. Is visit itself a parallel application? Because it sounds like to operate on super huge datasets, it itself might benefit from going parallel. So yes, it is, but I think it's important to understand somewhat of what the architecture is with visit. Before we talk about that piece, visit is actually a number of different components which can all talk to each other. And certain parts of it are parallel and certain parts are not. The basic concept of visit is a client server architecture where the user will run a front end client, which is a GUI interface generally, that takes advantage of their local graphics cards. And then the actual data processing happens out on a server, what we call the engine. And generally, we have the engine sitting close to wherever the data happens to be. It might be around their local workstation, but it might be on a large parallel supercomputer somewhere or a visualization cluster. And that engine piece of it where the data IO happens, where the analysis algorithms run, that one has been parallel, I think, since the inception of visit. We knew that we needed to be able to go to large scale parallelism. And so that one, actually, we've gone to thousands of processors. I think the largest one we've done has been over 8,000 processors. But the user is not stuck with doing that. It also allows you to go all the way down to very small datasets that are just on someone's local workstation or on their laptop. And so it can scale up and down depending on what the data need and what the user need is. So one of the things in keeping with the theme of a turnkey application to make things easy for users, we try to hide a lot of the complexity of launching multiple components as well. So for instance, the first time somebody installs on say some big machine at NERSC, they'd set up this host profile, which includes some information, not just about the machine names, but what kind of job launcher and what kind of MPI it's using. That way, when the user wants to connect, even if they're starting to visit on their little local laptop, when they go to open a file, they can actually just punch in the host's name with that big machine. It will go out, connect to that remote machine, let you browse the remote file system, open files. And at some point, if you need to launch a parallel engine to do the analysis on your data there, it hopefully tries to ask you just a bare minimum of questions. How many processors, how many nodes, which bank do you want to use, and then it will understand the batch system, launch your job, and track all of that for you. So we definitely hide all that as much as possible to make it just a few mouse clicks. And all the interaction with remote data should feel exactly the same as interacting with local data. So you already have all the information there for the batch system, so they don't have to create a PBS file or an SGE input or any of that stuff. That's all done by the visit itself? Yes, exactly. So basically the way we do it is visit already has knowledge in its internal scripts about a plethora of different launch systems, you know, MPI run, Moab, Slurm, you name it. As well as you've got batch schedulers, as well as job launchers underneath them. And visit will create the PBS script for you or will create the MPI run machine file, whatever's necessary for communicating to that job control system, so that the user doesn't have to deal with it. Many times the user doesn't care. They really just want to say, I want to view my data which is on machine XYZ and I need 256 processors. Go do whatever you need to do to go launch over there and connect back. And visit handles all that for you. I don't have to have all these things set up for running out on my local system. I don't have to have MPI and all that to just run visit on my laptop if I want to run the engine and the viewer all running locally. That's correct. Yes, you're exactly correct. If you don't have the complications of a job control system, you don't need to think about it. Visit already knows how to talk directly to local host. The only time you need to think about any of that is if you want to attach to a remote resource. And even then, even if you're attaching to a remote resource, it doesn't necessarily have to be a parallel resource. So it's actually very easy to set up a host profile for a remote, excuse me. It's very easy to set up a host profile for a remote resource and you just say it's not parallel and it just uses SSH to connect. You then could say, oh no, wait, no, this is parallel. Check the parallel box and then you describe parallel information. That's what goes into a host profile. But it's not necessary if you don't need that level of complexity. So I'm a little confused here. You have the engine running on a cluster, which is going through the batch system. How do I see my plots and how do I make it interactive? There's the viewer part I see on my local laptop. Does that connect to the cluster somehow? Jeremy, I think you're probably best to... Yeah, sure. So let's talk about a couple different pieces here, right? So the main sort of central repository of all visits state where it stores what plots you have open, this is called the viewer. And that's what runs typically on your local workstation. So first of all, just to one aside very briefly here, there's no reason you couldn't SSH out to the remote big cluster and run all visit there. You would run the graphical interface there and the viewer there and you would use something like X11 to connect back. But that's typically not the best way to do it because X is so sensitive to latency. So what we've done is we've moved the things that require graphics to the laptop and put the engine which requires parallelism on the remote side. So visit can be run either way. It's just typically a better idea to separate the two because you're making the best use of the hardware and you're not relying so much on a low latency connection because we're just shifting either data or images over the network.  And that viewer is the one which initiates an SSH connection. So if you then go to open a file locally, it just launches an engine locally, whether in parallel or just a serial version. But if you select a remote host name, then yes, it will initiate an SSH connection, find the right directory for visit, launch the remote visit on the remote machine, and then that connects back. And in the cases where you're behind firewalls or don't have access to open up ports, we do have more recently we've added an SSH tunneling mode that should forward everything through SSH and make it hopefully still completely transparent without having to go through a lot of rigmarole. So if I can follow up on that, the piece of visit which does all the data processing, the engine is not the piece, and it never expects to be the piece that displays the plot. So Brock, your question was, how do I see the plots that I'm asking for? The engine knows that it must communicate with the client piece, what we call the viewer, to be able to display that. So the engine, after it generates geometry or after it generates imagery, it sends those across the network back to the user on their local workstation, and then the viewer then displays that information. So it works in concert, the viewer engine work in concert with each other to be able to make those plots visible to the user. So if you have a small dataset, one thing we could just mention quickly is whether you're doing rendering locally or remotely. If you have a reasonably sized dataset or something that you've reduced down to maybe a slice through a gigantic dataset, or maybe if you're on a high bandwidth or a latency connection, what you might want to do is send all the geometry down and have it rendering using your local graphics card. But we don't have to do it that way. We have the ability to switch over to a parallel rendering mode where it actually does all the rendering in parallel on the remote machine and just sends you images. That's better if your dataset, if you're talking dozens of billions of cells or you're on a connection that happens to be low latency and it's faster to render images in parallel or remote and just send images to your viewer on your local machine. A follow-up question to this here. Do you guys have any GPU kind of aware of code? So if you detect that you've got some kind of graphics coprocessor, how do you, A, take advantage of that and B, how do you know when it's better to do it locally versus remote, which may be parallel and big horsepower back there? Yeah, so there's sort of two questions there. Let me first answer the GPU one. Visit does use GPUs in a couple of different ways. First of all, we can do parallel rendering out on the back end on the engine using GPUs. So we've got a mode where we can, say, use hardware resources. If we don't have that, we use Mesa, so we're doing software rendering, but we can take advantage of graphics cards if the cluster happens to have them. Now, that's purely for rendering. We need GPGPU type of stuff at this point. So that's one GPU exploitation. The other one we do is on the front end, where you have a, with the user's graphics card on their own local workstation, we've got a number of ways that we're exploiting that. Probably the best one is we've got a GPU-enabled volume renderer that was incorporated from the University of Utah called Sliver, which uses fragment programs to be able to do its volume rendering. So that's kind of cool that was actually put in in the last year or so. So that's the GPU exploitation. The second one had to do with how does Visit make a decision as to what to do? Should I do remote rendering? Should I do local rendering? We've got a heuristic built into Visit which measures the geometry load. So it's not tremendously sophisticated. We're not measuring network latencies and things like that. What we do is we look at the engine. We determine how big the ultimate rendering load is. If it's over a number of million polygons, let's say the number is 4 million polygons. If it's above that number, let's use parallel image renderers. Let's use what we call the parallel rendering mode and send images back to the client. If it's below 4 million, instead, let's send the geometry. And that heuristic is tunable. So the user at any time can say, you know what, I've got a pretty powerful graphics card and my network is really good.  I'd like you to send geometry more often. So I'll crank up that threshold to 10 million and they can pull it up and down as they like. So you can force it to be one or the other? Of course. With my obvious network bias here, let me ask something that's a fairly obvious question to me. Do you take the network capacity into account automatically? So you can say, oh, this is a 10 gigabit link or this is a 20 gigabit link. So the amount of data that I've got to push back and forth, does that influence the decision of remote versus local or is that a user-tunable, user-decidable kind of thing? So right now, we do not take that into account. This is a user-tunable thing. But there are some research efforts that we've got going on to be able to think of the network more as a first-class entity. But none of that is in production or even close to production right now. Those are just sort of some research questions that we're looking at right now. Okay, so you're saying there's a cutoff threshold for a windy geometry or the problems over a certain size. You do the rendering on the cluster and then you send images to the client. How big have these things gotten? Exactly how large of a system have you actually rendered a visit before? So there's a number of ways you can measure size. We can think of data set size. We can think of how many mesh cells that we've ever processed. And that one is in the tens of billions of cells. There's one that I can think of very specifically that was 27 billion. But that was a couple of years ago. I think we've crossed that now. I haven't heard of any that's out to 100 billion or so, but I think the largest is somewhere around 50 to 60 billion cells. Let's see. We can look at image size. I think we've rendered out to images that are, I think about 16,000 squared. I think that's where we've gone. But you can also think about data set size. Jeremy was just recently doing some data sets that were fairly large. Yeah, actually. Well, so there's one that wasn't me, but I was talking to one of the other developers who was mentioning something. I believe it was hundreds of terabytes. And partly that was because there were a lot of time steps. But processing the entire data from beginning to end, it'll touch literally hundreds of terabytes on disk. Now you don't actually read all 100 terabytes into memory, right? The readers are a little bit more intelligent than that? Right, yeah, exactly. So a lot of times when people talk about the size of the output of some simulation, and maybe this is more from the scientific computing side, they talk about its total space on disk. But usually that's split over a number of time steps. So that's why when we talk about size, we're usually talking about the amount from a single time step. So yes, usually we process just a single time step at once. So the actual readers, those are plugins or do those have to be compiled into visit itself? No, they're definitely all plugins. So I sort of mentioned maybe at the beginning we have about 100 different file format readers. Some of those are based on ASCII text unfortunately because ASCII text doesn't paralyze well. So if you're running on a thousand processors, that's probably not what you want to base your I-O on. But nevertheless, some code's right out ASCII, so we do have to support that. And some readers are based on HDF-5 and net CDF and things that support hyperslab I-O and other things that scale a bit better. But those are definitely... There are scientific I-O libraries like Silo or Exodus or even things from molecular data like Protein Data Bank. So some of these are specific to codes or infrastructures like S3D or ANSYS or LAMPs. Some of them are modeling formats like STL or Wavefront and of course, general purpose ones. We can read JPEGs and PINGS. And we have a plain text reader which supports things like whitespace and comma-delimited files and various flavors. So you could export a spreadsheet of numbers from Excel and read that into visit using the plain text reader which says how many columns you have and how many lines to skip at the beginning. So we have a whole bunch of different readers. They're all plugins. So you can write these plugins without having to use... without having to download the entire visit source code and so forth. Obviously if you're using a library that, you know, some scientific I-O library that we don't already support, you'll have to link that in against your plugin but there's no reason that visit can't load that afterwards. And so I can maybe give a few seconds about the typical plugin development process. We have a tool which will create a small little XML file for you. And it creates things like, you know, the name of your plugin and give it a version number and four things like databases. There might be some options you want to specify when you're opening the file, you know, whether to treat the third variable as the z-coordinate or not. And so you specify a few of these things and then we have a few scripts which go through and generate the spoiler plate code. And most of the code you don't need to edit. It's just things that provide information to visit, so it just generates that and it'll get compiled in. And there's about one file that's set up with template sort of boilerplate code for you as well, and you go in and fill the functions. So for something like a file format reader plugin, about the only thing you have to do is go in and there's one that returns a list of the variables in the file and there's one which will return, let's say, a VTK object when you ask for some mesh or a data array when you ask for a variable. And that by itself is enough to get a simple reader working. And every file format reader we have is a plugin. So, you know, there's nothing you can't do in a plugin yourself that we can't do. Follow-up question for you on this here.  As Brock mentioned in the beginning of this here, I work on a different open source project, an MPI project, and we're based on plugins as well. And we kind of have this general rule of thumb that he or she who cares will implement and maintain. Is that kind of the same rule that you have followed here or have you developed all of these plugins to address a, you know, a specific need? Or is it, you know, a group comes in and joins the project and writes the plugins, you know, so that they can have visit support their data? Or, you know, how do you generally do that? I think it's probably all of the above. There are, you know, funding groups which are interested in our maintaining readers for specific things. We've got some where whoever's interested can maintain it. We have other ones that actually have languished and, you know, we haven't poked that for a while because, you know, people haven't been, people haven't been that interested in it. And then we have other ones where we have external groups who maintain their own readers and may not even talk to us about it. They, you know, given that it's a plugin model, they can have their own plugins that aren't necessarily part of the source that we distribute with visit. So it's, it's everything and all of the above. Excellent. It's the chaotic open source model. Exactly right. So we should mention also that these plugins, so, so far Jeremy's talked about the plugins for reading and data, but actually all of visit is a plugin model. So every plot that we have, every way that you can put anything on the screen, that's a plugin as well. As well as all of the data operations are just about all of the data options. So slicing and reflecting and projecting and all of those other things, those are plugins just as well. So it's very easy for people to add new capability. And those all use the same template generation code that Jeremy mentioned. So it's a fairly powerful model for extensibility.  Right. If we sort of forced ourselves to do everything we do in terms of plots and operators and file I.O. in terms of plugins, then it's the best way to ensure that anybody else out there can do whatever they need also through a plugin. Absolutely. Yeah. We very much the same thing in the project that I work in as well here. So kind of along the same theme there. So, you know, we talked about the, you know, how you attract developers for all those very different reasons. Who uses Visit? And I know that's kind of a difficult question to answer because it's open source. And so it's not like you can look at who's bought a license to say exactly who uses it. You can only track who downloads it. But are there public users or do you go to a presentation and say, you know, look at somebody's slide and say, oh, that plot was generated with Visit. You know, how many people use this stuff? So it's really hard to count as you mentioned. We don't have a license that we can count. We want to take a look at downloads and look at what countries that come from. But we can also look at things like we have open mailing lists that people ask questions of. And we can track where these different questions have come from. And it really comes from all over the place. We're getting questions from Japan and Brazil and Korea and Canada. And it's all over the place. But generally, Visit is used by people who do, who look at data from computing of some type. Maybe it's small scale. Maybe it's large scale. But yeah, there have been times where we look at a movie or we look at an image and go, hey, wow, look at that. That legend is our legend. That's neat. We've never even heard of these people before. We've had application areas we had never really thought of for using climate simulation, geographic information systems. There are, it has gone a lot farther than we had ever really expected. But I will say our core set of users are people who are doing simulations. It certainly can be used for other things. Medical visualization can be used for, but we didn't design it that way. But it certainly could. Very cool. So we have found in open MPI that the largest country where all of our questions come from on the public mailing list is a country called Gmail. And so it's actually very difficult. It's very difficult to know actually who these people really are. Yeah, that's very true. So at that point you count downloads, right? Yes. All right, let me ask on a different text here. How exactly did this project come about? So you've talked about the various needs that it addresses and whatnot. But at some point, I think you said the project started around 2000 or so. There must have been a critical mass where somebody said, all right, let's do something about this and create some software to address this need. Can you give us a little of the backstory?  So visit came out of Lawrence Livermore National Laboratory. And the large proportion of the developers are still there. And actually came out of the ASCII program, out of the effort to bring high-performance computing to the modeling of nuclear weapons designs. The ASCII program really was in the forefront of high-performance computing. And before a lot of other people needed it, they had a need for doing large-scale parallel data analysis and visualization. And there weren't a lot of tools out there. Livermore, we had a tool called Mesh TV that had evolved over the years to do a lot of things and had done some amount of parallel visualization. But it was clear at some point around the end of the 90s that Mesh TV was being pushed in ways that it really wasn't designed to. And we needed a new architecture. We needed a new system to allow us to deploy visualization analysis algorithms that Mesh TV simply couldn't do. And so there was a... We had a new hire who came on, a gentleman by the name of Hank Childs, who started working on a prototype of exploring the VTK data model, a visualization toolkit. He's looking at new models for parallel pipeline visualization deployment, looking at a new type of client server model. And that work that he did has become visit. It has supplanted Mesh TV a long time ago and has been what we've built upon ever since. And obviously it's gone through evolution over the last, what, 10 years or so. But that's the history of it. So it really did come out of the weapons program. But it has since escaped the nuclear weapons lab. So as we've mentioned, the generality that we've built into the system seems to apply across all sorts of different application domains. So to some extent, I guess it's not surprising that it's now being used for a lot of unclassified, for open science work, that it was never really designed to do from the get-go. But the generality certainly allows that. So that's sort of the history of where it came from. So you mentioned VTK in there. How much has VTK influenced the design of Visit and how much of the work is actually done in VTK? So VTK is the visualization toolkit that comes out of Kitware. It's sort of the uber language, the uber library for designing visualization tools. It forms the underpinnings of Visit. But at the time we designed Visit, there were a lot of pieces that VTK didn't have. And a lot of them, it still doesn't have. The biggest thing that it didn't have at the time was any type of parallelization model. Now, since then, VTK has had MPI-based parallelism added to it. But at the time we designed Visit, there was nothing there. So we had to build all of that on top of it. So there's an entire infrastructure for doing data decomposition and communication that's entirely separate from VTK that's inside Visit. But the other thing that we've built upon is extended VTK's data model. VTK is very powerful, but the data that you can represent in VTK is somewhat limited. For example, it's not very good for representing molecular data sets and understanding data on the atoms versus the bonds. It's not very good for doing mixed material models if you had, for example, an arbitrary Lagrangian or Larian mesh where you've got material affecting through a mesh. It doesn't really describe that very well. There are other parts of the data model where we had to build something above VTK. We use VTK as an underlying storage layer and mesh representation layer. But we build all sorts of other data model on top of VTK so that we can have a very rich data model to be able to describe new types of data sets. Geographic information systems is another one that VTK really isn't really designed to do. So it'd be difficult to guess how much of Visit is VTK and how much is not, but there's a lot of it which is not, which is going well beyond what VTK has. So VTK, a lot of other libraries, you're actually leveraging a lot of work from others to take advantage of what they've already done well. Absolutely. So Visit has actually depended upon a lot of other libraries. So we're given the open source model of collaboration. We like building upon what good things other people have done. VTK is just a perfect example of that. Mesa is another one. HDF-5 is a wonderful I.O. library that we're able to get a lot of acceleration through. I'll give you another example. So VTK over the last several years has... Sandia National Laboratories developed a rendering and compositing library called ICE-T that was used for very, very fast compositing work. They incorporated that into VTK and some of their own tools recognizing the power of that in the last year or so, we have rolled that into Visit. So we're now using the compositing library that Sandia contributed to the open source community. So there's actually a lot of external dependencies for Visit so that we can build upon the strengths of others. So then have you done anything to make building Visit for your cluster specifically to match your MPI library, to match your Indian and all that stuff? Have you done any... made that easier? Because getting all these libraries, do I have to go and build all these libraries myself? So we have something called... Well, so let me back up a little. There are definitely things that aren't too bad. For instance, you can build Visit using whatever version of VTK, whatever version of QT you might have installed in your system. For other things where we've made patches or are dependent sort of on a specific version, we have a script now called Build Visit which knows enough to go on a whole bunch of systems to download and build and package up and build Visit around these libraries. And for the most part, you type build Visit, check a few boxes, and it's able to go download these things, build them. Previous to that, we have these build notes text file, which is pages long, which talks about what you need to watch out for on an AI Act system when building this particular library and where you'd have to patch things manually if you went and downloaded them yourselves. But thanks to Build Visit, now that's all sort of rolled into one script that should make things fairly trivial for you on most platforms. Now you specifically mentioned MPI. Visit isn't using anything special with MPI. We can run on any MPI platform that's available. So we're not using anything, let's say, specific to open MPI versus this other MPI. It's pretty vanilla. So there's not a lot of extra detection that we have to do there. So let me ask you, I have to ask now, since you hit my other obvious MPI, what do you use in MPI, just the point-to-point kind of stuff and collectives, or what do you use? Well, I'd have to take a look at that. We certainly use barriers. We've got a number of collectives. We've got a good number of point-to-point. We actually did a survey. There was a paper that we produced at Orange National Lab looking at the complexity of scientific simulation codes from an MPI call point of view. So we went and looked at about a dozen different simulation codes and looked at what are the MPI calls that are happening. And Visit actually used about an order of magnitude more than a lot of the other simulation codes. Now that may be because it's not a simulation code. It's a data analysis code, which has a lot of diverse things that it's doing. But there's a lot of extra work that's going on. We've got our own separate communicators depending on what processors are doing, what pieces of the pipeline, whether they're doing IO or processing or rendering. We don't have any MPI IO in there. So it's all just network-based communication. But that's where we are. Okay, very cool. So jumping back a little bit, I heard somebody say QT earlier. Does that mean you support the Big Three platforms for rendering so the Windows and Mac and Linux? Yeah, absolutely. So that was one of the reasons for picking the libraries that we did. Mesh TV is, as Sean pointed out, being sort of a predecessor to Visit. It was very limited and it depended on motif and things which certainly weren't, at least not worked well cross-platform. So the things that we chose definitely are all working on Windows, OS X, Linux, AIX, any Unix out there. So yes, absolutely. We have binaries on our webpage for all of those. Now, quick question. While looking through the getting data into Visit, I noticed something called LibSim. What exactly is LibSim? Yeah, so there's a couple different ways to sort of think about this. Let me see if I can describe this succinctly. So the typical way that we think of people doing their visualization is by writing a simulation, writing out terabytes of data to disk, quitting the simulation, and then going and launching a visualization tool. And that's certainly one of the incentives for wanting to operate Visit's parallel compute engine where your data lives, is because we're using the same disks that you've done to write your simulation out. But there's a couple downsides to that, not the least of which is waiting for all the IO. I mean, there's certainly simulation codes where you have to choose how many time steps you want to run before you write out your data. You might miss something interesting. It takes a lot of time to do that as well. So that's sort of one motivation. Another one, well, let me talk about what it is first. So Visit connects to a back-end server, this parallel compute engine. The parallel compute engine is the thing that loads the data off the disk and operates it on and so forth. So what the simulation library does is it lets you, by adding a couple files to your simulation, it lets you load at runtime the pieces of Visit which will turn your simulation code into this big parallel server. So what happens, maybe I can sort of walk you through how you'd actually use this. So you launch your simulation code, if you've done it in such a way that you've instrumented your simulation code now, what you can do is you would launch Visit and you would go connect to your simulation which would sort of every time step it goes through listen to see if anybody's trying to connect to it. So you then go and connect to your simulation and then this might pause your simulation. And then what you can do inside Visit's GUI is go make a plot. And so your simulation might be paused and then what it will do is go through Visit's section of code. It's sort of loaded Visit at runtime, Visit's parallel engine at runtime to do the data processing. So if you ask Visit to make a plot for you, it's now asking the Visit piece inside your simulation code. And it knows enough about how to read the current data of your simulation out of memory. So basically you avoid writing all the stuff out to disk, you can just leave it all in memory and basically you're reading from the data structures for your running application. You don't have to worry about getting everything down to disk, spinning it back up from disk. Right, yeah, and it's certainly, I mean, so the way I sort of couched this originally was from a performance reason. But another one is that potentially then you could have it creating a plot of every single time step as it goes. So you could actually create, you know, if you ran for 10,000 time steps but only wrote every 10th one to disk, you could make a movie of every time step without having to do a whole lot of I.O. So it's also ways to find things that you might be missing. And there's some other capabilities. So one of the capabilities sort of built into this whole simulation interface and Visit is the ability for the simulation to advertise capabilities to visit, which will sort of pop up in this window. So for instance, you might have some computational steering things. You might have buttons then that appear in Visit that says run one cycle, update my plot, run 10 cycles and then update my plot. You might do things like relax some mesh or you could actually put a lot of capabilities for things you might want to do as your simulation is running as features that are exposed through Visit and you can control them while you're watching it. So you could almost turn it into sort of a very simple and lightweight front end, GUI front end for your simulation with plotting and analysis capabilities as you go. Okay, so that's really neat. So you can basically watch your stuff as it going, direct the simulation a little bit. I've seen some people do work where they've done like different types of interactive kind of sessions, but not using Visit so it'd be neat if they could kind of tie all this together. And it simplifies saying quite a bit because all the plotting and all the operators and all that's already there. Right, yeah, exactly. And so one of the design goals of the way it works right now is that you don't want to pay the cost. This is big, right? You don't want to pay the cost in terms of memory usage and so forth if you're not going to wind up using Visit, especially on some machines we are very limited on the amount of memory. So the way it's currently set up is it actually loads at runtime on demand it will load the rest of Visit's library in. Obviously it requires some operating system support so that couldn't always work that way on every machine out there, but certainly on a lot of the ones that we've been using it can load Visit on demand and you only get the memory and performance cost if you wind up using it. Okay, so on a different topic what's the most unusual use of Visit you've ever seen? Something you did not expect when you originally set out on this project? Yeah, so Sean's mentioned a couple of these already and I don't know that they count as unusual, but sort of Visit's history isn't necessarily where it is today. For instance I spent a good portion of my time working on molecular types of visualization and this is a problem domain that was not even conceived of as being a use for Visit when we wrote it. Certainly we have a general architecture and things that we expected people would be able to write new plugins and new format readers and so forth, so it certainly didn't present much in the way in terms of a real technological challenge, but even just getting into that game at all is certainly something I think that's rather unusual. I think Sean might have other examples as well. Yeah, so geographic information systems are one that we never even considered. I mean that's outside even the area of scientific computing and so we've had people write plugin readers for GIS formats and now you can plot, let's say, buildings of a city at the same time as you look at the results of a simulation of let's say some flow through the buildings of that city or medical visualization. I had one where I had to have a CT scan done and I asked the people running the CT machine, can I get that data and they handed me a CD and in 30 minutes time I was able to pull it in a visit and take a look at my bones and take a look at the inside of me and segment out different things and Visit was never intended to do medical visualization but it can certainly do that. So you guys have mentioned a couple times that Visit's a pretty large code base. What's the predominant language that you guys use for programming? You mentioned language bindings in a couple of different languages Java, Python and so on but what's the core of Visit written in? So the core of Visit is C++ it's something that back in 1999, 2000 we really had to explore to see whether or not we could get this in a whether we could do the things we wanted to do in a true cross-platform manner. Can we depend upon the standard template library? Can we do exceptions in the appropriate way and eventually we decided yes the C++ compiler technology had matured at that point enough that we can depend upon it and we are that's what 90% of the code base is C++ we certainly have bindings in a number of different areas but C++ is where we've taken almost everything. How big is the code base? If you had to give a rough swag, how many lines of code are we talking? We're getting close to 2 million lines of code that's a little bit misleading because not all of it is human generated. I recently went into the code and scrubbed out all of the code that we have scripts to generate for out of other templates and I think the actual hand coded human generated code is a little bit north of a million lines of code. Does that include comments son? No, it does not include comments so I was able to find a tool that scrubbed out blank lines and comments and so it's actually a little bit north of a million real lines of code. Cool, that's pretty large. Yeah it is a pretty big code base. What kind of development environment do you guys use? Well, so I think we're not tied to any integrated development environment at all. I use Xemax for text editing and make and... We use Subversion. Subversion is all of our code repository but when it was in Livermore we were using commercial products like ClearCase and ClearQuest but since it has escaped the weapons lab we're now using open source technologies like Subversion or using the mailman mailing lists but it's nothing much more special than that. Good, good to hear. What license is VisitUnder? We use the BSD license. Any particular reason for that? I think it provides us a lot of... It allows us to be able to go open source but many times if you use the GPL that can be somewhat scary to commercial entities and there's no reason that we should have to scare them off. I think the BSD gives us the flexibility that we're looking for both on the open source end and also on the collaboration end so if needed we could very easily put together a closed source plug-ins should we need to do that. I actually can't think of any right now but we wanted to be able to provide the ability for people to do that. We should mention that though Visit doesn't have any requirements on the IDE that you use it is very much an auto tools based system. We use auto to do all of the discovery of the platform you're compiling on figuring out where libraries are, how we should be linking, how shared libraries are set up and so forth and that's actually been very powerful for us but we're actually about to move away from it because there is a problem with going towards Windows so it's been a manual process for us to be able to create Windows project files. Basically all of the work is on one developer. Every time we put out a new release, now make sure all the Windows stuff works correctly. We're in the process of moving towards a CMake-based system so that we can have better and more easy cross-platform development for all of Visit. Cool. Yeah, that's a popular argument. We have very similar arguments in OpenMPI because we're auto tools based to automake, auto con, flip tool and so on and the Windows support is always problematic. Hey, cool. Thanks a lot for your time guys. I'm going to go ahead and wrap it up here. I'm personally going to promote Visit to a couple of people I know who I think could really take advantage of it. Jeff, is there anything you had left? Yeah, I just want to say thanks guys. Appreciate your time today. This was fascinating stuff. This is not really stuff that I delve into much at all so it's really, really very interesting to hear about the output of big parallel runs. So this is great stuff. Thanks. Should we put a couple web links out there in case people want to find more information? They could go to visit.ll.gov or visitusers.org. Those will both take you to various other places that give you information. Yeah, let's just slow that one down a little bit there for those who are not familiar. So it was Visit. Let me try that again. Sorry, yes. So you can go to visit.lll.gov and that's sort of the homepage and where you can find the binaries and source code. There's also a wonderful gallery if you want to see some examples of images that people have done in various domains. The other one is visitusers.org and that is where we have a wiki and it will also contain pointers to the mailing lists and various documentation and forums and all sorts of other wonderful information on that site. I should mention also that at those sites not only can you download the source and find the mailing list, but we also have tons of documentation. There's probably over a thousand pages of documentation for visit depending on what you want to do with it, whether you want to develop or just make some visualizations or so forth. So download and start reading and jump on the list. Have fun. Okay, cool. I'll put the links on the notes for this podcast when it goes out so everyone will be able to see it on there. Okay, so thanks a lot for your time guys and we will be in touch. Well, thank you very much for being on. No problem. Thanks a lot. Thanks.