Welcome to Learning English, a daily 30-minute program from the voice of America. I'm Ashley Thompson. And I'm Dan Novak. This program is designed for English learners, so we speak a little slower, and we use words and phrases, especially written for people learning English. Today, Anna Matteo and Dan Friedle tell us why small coffee growers in several countries are worried they may not be able to sell to Europe after new rules take effect. Brian Linn presents this week's Technology Report. We close the show by hearing today's lesson of the day. But first, here are Anna and Dan. Coffee growers in many countries are worried about a new European rule designed to prevent deforestation. Deforestation describes when developers cut down trees to make room for crops, buildings, or land where cattle can graze. The new rule goes into effect at the end of 2024. It covers products like coffee, cocoa, soy, palm oil, wood, rubber, and beef. The European Union says all of those products result in tree cutting. The United Nations says deforestation is the world's second leading cause of carbon emissions after the burning of fossil fuels. Large producers must show their products come from land where trees have not been cut down since 2020. Smaller producers must do the same, but will be permitted to sell their products until July 2025. A report from the World Wildlife Fund showed that Europe's imports of products linked to forest clearing caused the second most deforestation in the world in 2017. That year China was first. An expert said the new European rule could help prevent more deforestation and push farmers around the world to plant trees, vines, and grasses. Helen Bellfield is a policy director at Global Canopy, a non-profit organization based in Britain. It suggests businesses change their production methods that hurt the environment. She said the new EU rules could force governments to help farmers make changes. On the other hand, farmers could just sell to countries outside of the EU. The world's top coffee producers include Vietnam, Ethiopia, and Peru. Growers in those countries worry they will no longer be able to sell in Europe. The new EU rules could help coffee farmers like Le Van Tham of Vietnam, who has taken the environment into account. He first planted coffee in the Central Highlands area in 1995. At the time, he cleared land so he could grow as much coffee as possible. But in 2019 he changed his growing methods. Instead of using lots of fertilizers and pesticides, he started planting tamarind trees that add nutrients to the soil. He added black pepper vines and grass, which helps to keep the soil moist and prevents erosion. The changes qualified his coffee as organic, which opened new markets and made his coffee more valuable. He did not produce more, but his profits went up, he said. Vietnam hopes that more farmers will make changes, which will permit them to sell in Europe and maintain the nation's rank as the world's second largest coffee producer. The news is not as good for those in Ethiopia and Peru. Orders for Ethiopian coffee are already falling, and Peru's farmers who are in the Amazon River area may not be able to provide information required by the EU. There will be winners and losers, Bellfield said. Vietnam depends on Europe for 40% of its coffee sales. As soon as the new rules came out, the country began working to maintain its market share. Vietnamese officials worked with small farmers to make sure their land met the new EU requirements. In addition, it made a database showing where its coffee came from. Farmers like Tom got special certificates from international agencies that proved how his beans were grown. Tom said the extra work will be worth it because even if his costs are higher, he can get more money for his coffee. Otherwise, we will always be laborers, he said. Small Vietnamese farmers still must get ready for the new rules. They will need technology to prove where their beans came from and that their land is certified by the EU. They will also need to be sure the qualified beans are not mixed with banned beans. From the harvest to shipment, new systems must be put into place to prevent errors. Brazil is another big coffee producing nation. Since it already sells a lot to Europe, experts say most of its products already meet EU requirements. But farmers in Peru and Ethiopia may need more time. Gizat Warcu is head of the Ethiopian Coffee Exporters Association. He said collecting data about the land of millions of small farmers will be a problem. That requires a huge amount of resources, he said. Gizat said orders from Europe are already falling. Some coffee exporters are thinking about selling to the Middle East and China instead. Ethiopian coffee sells well in those places. These regulations are going to have a tremendous impact, Gizat said. I'm Ana Mateo. And I'm Dan Friedel. Florida Governor Ron DeSantis on Monday signed a law that bans children in the state under the age of 14 from having a social media account. The measure requires parental permission before 14 and 15 year olds can sign up for personal social media accounts in Florida. Supporters say the bill protects children from possible online harm, including threats to mental health and privacy. Critics have said the law might violate the U.S. Constitution's First Amendment protection of free speech. Some opponents have said they think parents, not the government, should be the ones to decide which restrictions are best for their child. Meta, the parent company of Facebook, opposed the legislation, for example. Florida's legislature passed the law earlier this month. It was the second version of the measure. The first version, which passed Florida's legislature in February, would have completely banned children under age 16 from social media. DeSantis vetoed that version of the bill, saying he thought it was too restrictive of parental rights. But the governor's office worked with legislators to come up with a new measure he could support. The new law leaves it up to parents to decide whether their 16 and 17 year olds can sign up for social media accounts. In a statement DeSantis said research had repeatedly shown that social media services can harm children in several major ways. The legislation he added is designed to give parents a greater ability to protect their children. The law is set to take effect on January 1, 2025. But experts say the measure is likely to face legal challenges in court. DeSantis noted that another bill he signed into law two years ago was recently struck down by a federal appeals court. That law banned employers from requiring training sessions that included discussions about race, diversity and other issues. The appeals court ruled that such training methods violated the constitutional free speech rights of employers. The new law was guided through Florida's House of Representatives by Republican Speaker Paul Renner.  He added, because of that we have to step in for them. The bill does not name any specific social media service, states that it targets social media sites using tools to get users to stay online for long periods. The measure does not cover services that mainly provide email, messaging or texting services. The law requires social media companies to permanently remove personal information collected from closed accounts, and it lets parents bring civil lawsuits against services failing to do so. Several U.S. states have considered similar legislation. In March 2023, Utah became the first to enact laws covering children's use of social media. Measures in Arkansas, Louisiana, Ohio and Texas soon followed. Several other states are also developing new rules. The Arkansas law required parental consent for minors to create new social media accounts. A federal judge blocked the law in August. The judge ruled the legislation was likely unconstitutional. Florida has enacted additional measures aimed at protecting children from possible technological harms. Last year, it became the first state to strongly restrict phones in schools. The law requires all public schools in Florida to ban student cell phone use and block social media services during class. I'm Brian Lin. Brian Lin joins me now to talk more about his technology report. Hi, Brian. Thanks for being here. Of course, Ashley. Thank you for having me. In this week's report, you looked at a law just signed by Florida's governor that bans social media accounts for children under the age of 14. But experts have warned this kind of law can be difficult to enforce. What enforcement measures will be used? Yes, some technology experts have predicted this particular law will be hard to enforce. A big reason for this is because it can be very difficult for social media companies to confirm the correct age of children signing up for accounts on the Internet. So this is the main enforcement method. And tech companies will need to use third-party age verification systems to identify underage individuals. And any users in the state of Florida found to be under age 14 are to have those accounts closed by the services. And what actions does the law permit against social media companies that do not effectively enforce the rules? So the companies do face penalties if they disobey the law. It states, for example, that social media services that knowingly permit minors to have accounts can be punished with fines up to $50,000 per violation. And in addition, the law leaves the possibility open for parents to directly sue companies on behalf of their children if the accounts are not automatically removed. And in those lawsuits, parents can sue and receive up to $10,000 in damages if they win. Okay. Well, thank you again, Brian, for joining me. And thank you for that report. You're welcome. Thank you, Ashley. VOA Learning English has launched a new program for children. It is called Let's Learn English with Anna. The new course aims to teach children American English through asking and answering questions and experiencing fun situations. For more information, visit our website, learningenglish.voanews.com. And my name is Jill Robbins. And I'm Andrew Smith. You're listening to Lesson of the Day on the Learning English Podcast. Welcome to the part of the show where we help you do more with our series Let's Learn English. The series shows Anna Matteo in her work and life in Washington, D.C. In a recent Lesson of the Day on the Learning English Podcast, Jill and I talked about people watching. It's something Anna enjoys doing on her lunch break at work. Here's Anna in Lesson 15 of the series. Hello! People from all over the world come to Washington, D.C. When I'm at work, I love eating lunch outside. I like to watch people walking by. They all look very different. Today, my friend Ashley is eating lunch with me. Ashley, today the weather is beautiful, isn't it? Yes, it is. We have to return to work. No, we have time. Let's people watch a little more. Okay. Anna enjoys noticing the differences and similarities between the people she sees walk by. Her friend Kiana likes to watch people too and joins her. The weather is beautiful and people watching is fun. I love people watching too. Well, have a seat. It is fun to see how people are different or the same. It is. For example, Anna, you are tall, but Ashley and I are short. And Kiana, you and Ashley have brown eyes. I have blue eyes.  Ashley, you have straight hair. Kiana and I have curly hair. You have very curly hair, Anna. These differences between people are easy to see. We can say that the differences are obvious, which means easy to see or understand. But other differences are more subtle. That's spelled S-U-B-T-L-E. But we do not pronounce the letter B in the word. Subtle describes something that is not immediately obvious or easy to notice. As we were saying in a previous podcast, if you know a culture really well, then you might be able to notice subtle differences within that culture. Like an American might be able to make a better guess about where a person is from in the U.S. or about their socioeconomic status based on the person's clothes or accent or maybe some other small details than a person who is not from the U.S. True, the American might notice more small differences, but we still have to be careful not to judge other people too quickly. For example, a rich person and a poor person might wear almost the same kind of informal clothes like a jeans and a t-shirt. Yep, that's right. I remember when I was working in a store, our manager reminded us that you can never be sure which customers have a lot of money. A millionaire can look just the same as somebody who has almost no money. You're listening to Lesson of the Day on the Learning English Podcast. Andrew, I noticed you're using some more advanced vocabulary today. Let's explain the term socioeconomic. It generally refers to the combination of the amount of money you make, your education and certain kinds of power you have. So, if you have a lot of education plus a high income, plus a high position in business or government, your socioeconomic status is high. Status can refer to the importance and respect you have in your group or in society, such as your level within a hierarchy. That's another advanced but useful word, hierarchy. That's spelled H-I-E-R-A-R-C-H-Y. A hierarchy is a system of organizing people into different levels of importance or power. The military is probably the best example. There is a clear hierarchy from the generals at the top to the ordinary soldiers at the bottom with different levels of officers in between. Let's review the vocabulary we've explained. The words are obvious, subtle, socioeconomic and hierarchy. Obvious and subtle have opposite meanings. And socioeconomic status can refer to one's position in the hierarchy of a society. Jill, a minute ago you said that we have to be careful not to judge other people too quickly. I certainly agree, and that reminds me of another word we started to talk about in a previous Learning English podcast. You mean the word stereotype? I do. Could you explain a bit about this word? Sure. A stereotype is a kind of oversimplified generalization about a group of people based on a fixed image or idea about that group. And when you say fixed, you mean unchanging. Yes, stereotypes don't allow for much change. They assume that a group of people always have the same characteristics. And that's just one way they oversimplify or overgeneralize. So, for example, if I said something like, Italians love to eat pasta, listen to opera, and watch soccer, that would be an obvious example of stereotyping. Right, because while it's true that a lot of Italians do like soccer or eat pasta, there's probably millions of people in Italy who do not like to eat pasta or watch soccer. Just like a lot of Americans do not like to eat hamburgers and hot dogs. After all, there are about 300 million people in the U.S. With that many people and people coming from all over the world to live in the U.S., there's quite a bit of cultural variety. And this topic reminds me, there's an interesting talk our listeners can watch and listen to online by the writer Cimamanda Ngozi Adichie. It's called The Danger of a Single Story. Adichie grew up in Nigeria, and she talks about how people in Western countries can have stereotypes about people from Africa, and how she herself sometimes oversimplified other groups of people. So if we only have a single story or a stereotype about other people, that means we are missing the complexity of individuals and the diversity within their culture. Jill, where can people find Adichie's talk online? The website is ted.com, and that's spelled T-E-D. There are a lot of talks there, and they're often called TED talks. You can search for The Danger of a Single Story on the website, and you can also read a transcript of what she says. I've just found it on my computer. Wow, it says her talk has been viewed over 34 million times. Well, I thought it was interesting, and I guess a lot of other people do too. Well, Jill, we've gone from Anna, people watching at her lunch break, to an inspiring talk by a writer from Nigeria. It's interesting how one thing leads to another. And how one word can lead to another. Let's repeat a few key vocabulary words from today's podcast. Good idea. I'll say one, then you say one. Okay. Obvious. Subtle. Socioeconomic. Status. Hierarchy. Stereotype. Fixed. And how about inspiring? You said Adichie's talk on ted.com was inspiring. That's right, I did. And inspiring means it gives you a strong positive feeling and perhaps makes you want to do something good. And we certainly hope our listeners are inspired to learn more with the series Let's Learn English and with the lesson of the day on the Learning English podcast. Thanks for listening. I'm Jill Robbins. And I'm Andrew Smith. And that's our program for today. Join us again tomorrow to keep learning English through stories from around the world. I'm Ashley Thompson. And I'm Dan Novak.


Okay. Good afternoon. Thank you for coming. So, next slide. So, first of all, first time attendee of Blender Conference. Already met a bunch of great friends and old friends and made new friends. Had a great year last year, a year off from my teaching duties at Mesa Community College in Arizona in the U.S. Learning Blender, learning more about Blender, developing skills. Most of the time I am a full-time instructor of astronomy at a two-year college of Mesa Community College. I also run our 52-seat digital planetarium and part of my goal with the year off from teaching was to develop new content for our planetarium. Part of that was building a pipeline from the fisheye projection that the camera system now has, learning how to move the camera with that fisheye projection because there is no behind the camera with fisheye. I can't hide assets or lights or the edges of the scenes behind the camera anymore because the dome is a hemisphere. You can see all the way around you. Also learning how to do astronomical models, both mesh models for things like planets and also doing volumetric materials for nebulas and galaxies, things like that. So, I learned a lot, but I'm finding out that there is still more to learn. So, next slide. My background is in physics and in particular astrophysics. So, I approached Blender initially as a physicist. I want to try and model things exactly the way that they happen at the physical level, at the atomic level. And what I've learned over the last few years is that that really isn't appropriate. I'm not trying to use Blender or I shouldn't be using Blender as a computational tool. It's a visualization tool. And so, I've had to change the way that I think about doing these things and in particular, cheating a lot. For example, if I try and model a solar system, the planets are very far from a star, that's a lot of space where nothing is happening. So, instead, scaling the objects appropriately and putting them next to each other so that the scene setup is much better. In terms of just appearance, instead of trying to get all of the physical properties correct, simply make them look correct. And so, that's also been a change. So, the outline here is, first I want to introduce you to Supernova Explosions. This is about week eight in my introductory course. So, I'm not going to cover everything, just a very short introduction. Talk about the data set that I was given to visualize. Talk about some of the obstacles of getting that data into Blender and then visualizing it in Blender. One of the fantastic things about Blender is the community. And this is where the community stepped up and actually improved Blender so that this project could move forward. And I'll talk about that. Also, very briefly outlined the process that I did create to produce this visualization. I'll show you the visualization that I generated and then very briefly recap the improvements that have been made to Blender in the point density texture in 2.78. I'm obviously not the first to use Blender for astronomy. Brian Kent at the National Radio Astronomy Observatory just recently published a book on using Blender to visualize astronomical objects and astronomical data. And last year, right here, Jill Nyman from Harvard Smithsonian presented a talk on her project, Astro Blend. And I haven't contacted her yet, but that's certainly a place for collaboration in the future. So, one of the differences between a physics simulation in Blender is that what's being generated is the physical appearance of something. The orientation of a soft body, the way that particles move under forces of various kinds. A fluid simulation or a smoke simulation that generates directly the appearance of something. The equations that drive that then relate directly to the appearance. On the other hand, a physics simulation, as physicists talk about them, typically generates an output that is not visible. It's quantities that describe the material, such as temperature or density, or in this case, the abundances of chemical elements within the star. So that means that we are free to choose how we want to visualize the information, how we want to choose a color palette to display temperature or density, or perhaps choose which elements to convey within the visualization. So Patrick Young, who is an astronomer at Arizona State University, just a few miles away from my home institution at Mason Community College, his work is on numerical simulations of supernova explosions. And he knew that I worked with Blender. He's a colleague of mine and a friend of mine. And he thought that Blender would be a way of visualizing the numerical output from his simulations. So very briefly, this simulation calculates the motion of the material within the supernova explosion using about 1 million tracer particles. So the motions, the change in temperature, in density, in chemical composition within the supernova explosion are traced using appropriate physical equations. And the data that I'm going to show here today comes from a time about half a year, 178 days after the initial explosion. Patrick tells me that this simulation going to the very end took about 30,000 CPU hours. And he actually runs his own Linux cluster to do these calculations. So why bother with these objects? They're far away. They don't affect us, at least not at first glance. But at least to a scientist, these are some of the most phenomenally cool objects in the universe. They include dramatic extreme temperatures, densities, a whole variety of nuclear reactions, neutrinos, these elusive particles that physicists are studying here in Europe and in the United States and in fact around the world are extremely important to supernova explosions. And ultimately, some supernovas give birth to black holes. So in a way, supernovas are the most dramatic physics laboratories in the universe. These objects are also fabulously bright when they explode.  So these objects outshine pretty much everything else in the universe and can rival the entire light from a single galaxy like our Milky Way. And in addition, supernovas and the stars that lead to supernova explosions produced the chemical elements that were made out of. They produced the elements that formed the Earth, they produced the elements that formed us. All the carbon, all the nitrogen, all the oxygen, the calcium, the iron in the universe was produced in stars and in supernova explosions. So in some sense, we're genetically linked to these distant far away, distant in time, distant in space objects that occur here in our universe. So just to set the stage, just before a supernova explosion, and here we're talking about stars that are many, many times the mass of our sun. Just before the supernova explosion, the star has swollen up to an enormous size. Here the scale is five times bigger than our planet's orbit, or about a billion kilometers across. The core on the other hand is about the size of the Earth, and that's where all the action is happening. All the nuclear reactions that power the star are occurring in the core, and layer upon layer of heavy elements builds up in the core. And ultimately, that's what kills the star. That's what triggers the supernova explosion. So without getting into the details of the physics, the short story is that the core collapses, becomes unstable. The outer layers bounce off of the core and blast outward at somewhere between 10 and 20 percent of the speed of light. Again, we're talking many times the mass of the sun being thrown at incredible velocities, enormous amounts of energy are being released. And we can see that from great distances across the universe. And that's the astronomy part. The rest of it is the physics. So just to give you an example, the image on the left is a Hubble Space Telescope image of a nearby galaxy. Two astronomers nearby for galaxies is about 20 million light years away. So we're actually seeing this galaxy as it was 20 million, 21 million years ago. On the right is an image that was taken in 2011, while this particular supernova, supernova 2011, FE, appeared in this galaxy. We now know that this was a massive star, a very large star, that had ended its life. And I like to show this image just because it was taken from Kit Peak Observatory in Arizona. So it's kind of close personal connection to Arizona State and my home state. So next slide. Now, this is an explosion. So the material in the star rushes outward again at a good fraction of the speed of light for many thousands of years. And in particular in the year 1054, about a thousand years ago, Chinese astronomers, Chinese court records, record that a guest star appeared in the sky. This was in the daytime sky. So this is a very nearby event. This only happened 6,500 light years away. So within our own home Milky Way galaxy, this object initially was visible in the daytime sky. So bright enough to be brighter than the bright blue sky. Months later, as the seasons changed, this object continued to be visible in the nighttime sky for many months. Today, we see this expanding cloud of debris, which has been dubbed the crab supernova remnant or the crab nebula. And we now know that this, in fact, is the leftovers, the guts of the star that have now been thrown out over a distance of about 10 light years. So a substantial distance about 15 times the mass of the sun has been thrown out as the star exploded. And we know that this material is enriched in all of the heavy elements that we would expect from these, from simulations, from calculations. So why use Blender for this project? There are certainly scientists who write their own code to do this kind of thing. But for my part, I was already familiar with Blender. I discovered it about 10 years ago and I've been dabbling in it until very recently when I got very serious about it. It was an opportunity to learn more about how to use Blender, how to use Python within Blender. It has built-in support in the cycles engine to do volumetrics. And again, the Python was already built in, so we could use that capability to pull in the data, to load the data, to manipulate it, and to store it within the blend file. We could also write a custom shader to choose how the data was visualized within the data volume. So in a word, what would you choose? Blender is awesome. Yeah, that was the word I was thinking of too. It already has all of these capabilities built into it. There was no need to write new software except for those custom pieces in Python to import the data from the data file. So here is the file that Patrick gave me. Again, I can't really tell what's going on here. It's a string of numbers. What's the shape of this supernova explosion? How fast is it moving? What is it made out of? You can't tell by simply looking at the data file. So that's where the role of visualization comes in. Yeah, you can look at one particle and say, oh, it's at this position and has this particular density. But without really knowing the entire file, you don't know where that particle is within the entire cloud of debris. You don't know how fast it's moving. So that's where visualization comes in. So this string of numbers is a list of XYZ positions. The next value is the density. After that is the temperature. And then the rest of the numbers, the last 20 numbers, are abundances of chemical elements from hydrogen to nickel. So my original plan, having played with Blender and used particle systems within Blender, used the particle lifetimes to use a color ramp to shade the particles. My idea was I could create a particle system, set the number of particles to the number of particles in the numerical simulation that Patrick had given me. I could move the particles around using Python. I could insert lifetime values into the particle system with Python. And then I could use a particle, excuse me, a point density to control the way that those particles appeared within the data volume. I figured it would be a couple of weeks and I'd have something I could show Patrick. It turned out that none of this was possible, except for the last step and in a different way. So this project evolved into, in fact, a great learning opportunity for me. So the first part was how to get the data into Blender to actually use it. And again, my thought was that I could create a particle system and then move the particles around. That's not possible. The particles are set by the physics engine within Blender. And so I could write to those values, but the new values instantly disappeared as soon as the frame was updated. So the particles would move right back to where they started from. So I tried a number of different experiments. None of them worked. And about that time Gottfried Hoffman, I don't know if he's here. He's upstairs in the Blender meeting. Okay. He had just released a point density tutorial. And so I contacted him. And he wrote back and said, no, he's never tried to move particles with Python. He doesn't think it will work. So at that point I gave up. But, next slide. He suggested using object vertices. Except object vertices by themselves only at the time, only had one way of accessing information as a color source in the point density texture node. And that was vertex normals. So there wasn't any way of accessing the rest of the data to do the visualization, to form the volume domain. So, fortunately, Gottfried had already thought about these. He's a whiz at point density texture. And so he had a plan. His plan was to ask Lucas to add vertex wakes and vertex colors to the point density texture. So, with Patrick's interest and my backing, Gottfried asked Lucas again. And Lucas got to work. It took him a couple days to add the code to support both vertex weights and vertex colors. To get it into the code. Sergey approved it. It was inserted into a build back in March. It took a couple of weeks. Bug fixes and things like that. And then a stable, useful version of the new point density texture was available. So, then I got started. So, after all of this, a new method for importing this data and visualizing it was developed. So, I use Python to read the data file. These 945,000 particles that are in the output of the simulation, read their XYZ positions, read their densities, read their temperatures, read the chemical abundances, create a mesh object, and then populate that empty mesh object with vertices, one for each of the tracer particles from the simulation. Then I create vertex weight groups for each of those physical properties. So, density, temperature, and so on. And then those vertex weights can now be read by the new point density texture to control the material. And so, here just is the output. 22 vertex weight groups, density, temperature, and 20 abundances, everything from neutrons and protons all the way up to the nucleus nickel 56. Everything is loaded into a blender file. That file is 213 megabytes in size. Kind of large, but not unwieldy. But one question I wanted to ask of you is, is there a better way to do this? Okay. So, if you have ideas, I'd love to hear them. Let's talk after the talk, or I'm around today and tomorrow. So, this is one way of doing it, but it's certainly not the only way. So, here is the mess of particles. I just wanted to show off what it looks like in the viewport. Again, not a whole lot of information. Again, 945,000 vertices, no edges, no faces. So, this is a pretty simple vertex mesh object. Excuse me. Here's the shader. Three vertex, excuse me, three point densities for this particular example that I'll show you, oxygen, silicon, and iron were chosen, and then using the physical density of the points to control the strength of the emission. And here's the single steel render of that data. Superficially, it looks like the crab nebula has this sort of filamentary cage of material, but one of the problems is this is a three-dimensional transparent structure that we're looking through. So, it's a bit hard to tell what's going on here. So, I rendered out a quarter of the domain so that we can see through into the center and see the surface of this expanding cloud. So, if you want to hit escape, okay. After yesterday, I was sure to come in here early this morning and make sure that this worked. And it did this morning. Yeah. Yeah, it's not feeding to the monitors. Well, while we're waiting, why don't we go to the other slide. Well, I'll try and figure out how to get the video to play, but in the meantime, if you want to see it, I can play it on my laptop. I guarantee you that. So, I'll just wrap up in the interest of time. One of the things that we'd like to do is actually generate a VR representation of this data set so that you can fly through it. It wouldn't necessarily be interactive, but you could then actually look around and see different parts of the volume, see this filamentary cage of material at the edge of the explosion. Another method that we want to develop in the future is, again, this was the very last time step in this simulation. And there are 4,000 time steps from the beginning of the explosion to this time, 178 days later. So, we'd like to be able to load and visualize all of these steps to animate the explosion. Patrick would very much like to show that at conferences, and it would also be a fantastic teaching tool. This is a generalized process of importing the data. Basically, any text file could be read, vertex weight groups could be generated, vertices could be populated into a mesh object, and then that could be used to render. So, the last question, and again, come and talk to me if you have ideas, is this generally useful? There are perhaps some data scientists in the room that could use this for their own point-like data sets. This kind of technique is used in a variety of sciences. So, here is the new point density texture as 2.78. This is official build now. The color source now has three options, not just one. Vertex weight, vertex color, and vertex normal can all be chosen, can each be chosen to provide the output. And so, thank you. Just want to remind you that supernova explosions produce the chemical elements that Earth is made out of and that you yourself are made out of, and now I can say that supernovas are also responsible in a small part for improving Blender as well. So, maybe, maybe. Hey! Can we have the lights down? Can we have the lights down? There we go. Hey, thank you. Thank you. Okay.


So for those who attend the first talk in this room, I want to remind a few couple of things, which are the kind of conduct that we have, especially for the room. It's different from the first one, so I encourage you to go on the page and read it out. If you're a developer, you will love to know your opinion and try the survey from bit.ly-slash-forcedon-17, all in upper cases. And from all your presentations, I encourage you to try the nightly version of Firefox, which can be downloaded from nightly.mozilla.org or mozilla.org-nightly, whatever is easier for you. And we are trying to find out what motivates you to contribute to open source. So I invited to complete another survey. We always survey these days at bit.ly-slash-why-open-source. Our next speaker is Nicolas Trani, and he's one of the Mozilla lovers. And one of the few French people that really understand what G-A-P is, I don't know, I'm feeling bad now. And also he created the APA app, so we're using Spider-Monkey and the server since 2006, without 16, six only, a long time. And he likes to ride a unicycle motorcycle. Welcome. Hi everyone. So today I'm going to talk to you about the hand-bearing and maintenance of Spider-Monkey on last five projects. I'll talk quick in the introduction about what is Spider-Monkey and about our team. I'll show you a kind of simple example, maybe a Spider-Monkey. And then we'll see what's coming next. We have thousands of bindings inside the project, and you have to maintain them and the thing that is going to be for you. And finally, last we'll see how to make a bigger life easier by making bindings more easily to implement inside your project. So, if you don't know Spider-Monkey is our front JavaScript engine, it's how you, it can be used in standalone projects to have JavaScript future bindings to a project. And it has a simple space API, a nice, very nice team, and very good performance. There are people who believe that the maintenance is faster than Spider-Monkey, but I believe this is not quite right. And if you don't trust me, go and see ourfastyet.com and we'll see that Spider-Monkey is quite fast. And our team, I've been working with two very talented people for the past 10 years, and first we will build a project called the APE. By the time, it was allowing you to do real-time communication inside the web browser when WebSocket didn't exist yet. And this was quite irritating, but now there's WebSocket and Monica about this one. So, we decided a few years later to build something else. We built Medium. Medium is a general purpose JavaScript engine and rendering engine also. I'll talk about that a bit later. As you're building Medium, we had a great opportunity to try to approach an environment. A company called Conker, we did a real-time building server which is used in advertising market. And the server would have to handle a billion request every day, something like that. And we tried it, we've built it with Medium and it's really great. So, a few years later, we decided to open source it. Actually, it's been something like six months it's out for everybody. So, we'll see a simple element. So, the idea is just to create a JS object robot which takes the names as the first parameter and which has one method, each method. And when we will call this method, you should see something to be printed and like generally, hello world. And here are some simple code. I don't think you can really see what is going on here but this is just to give you an overview. Here are the decorations you need to do to in order to get your bindings done. The first thing is to declare what we call a JS class which has various information about your JS class. Then we have a list of the functions used inside your robot object. Here we have one method which takes one argument. Then we have here a robot structure. We will use this one to store the name of the robot to make sure we try it in the echo method. And then we have two functions to do one which is the constructor of our robot and the other is the echo method. Let's see what this method is, that's function arguing. So, the constructor is starting by doing arguments, checking an argument conversion. We just check we have the right number of arguments and match the type we're expecting. Sorry, we're not doing argument conversion here. We're only checking we have the right argument. The second part is about actually printing the JS object and storing a pointer to a robot structure which stores the name inside this JS object. And the last part of this code is actually getting the string given to the constructor translated to a C string and store it inside our robot structure. There's not much more in this constructor. The second part is the echo method. Here you can see that just like for the constructor we have all sorts of argument checking. Then we'll retry it in the pointer to our robot structure which stores the name. So, we can then print, sorry, we can then convert the given argument, the string we want to print and print also the name of the robot. This is not even complicated, but now imagine you have a lot of bindings to write and I'm sorry, I've been a bit too fast. You can notice in this short example that we have, it's essentially a boilerplate called what you will just make sure the argument is a correct type, et cetera, et cetera. And you will spend most of your time doing conversion between JavaScript and C or C++. And this is not really great because, you know, you get quickly borrowed. As standard, just the example here were incomplete. There are missing a lot of stuff like the JS engine initialization, there's been a bunch of errors taking. I made the example short to fit inside the screen, so. There's no JS exposure, so our object is not right now, they're over to our script and they're no JS finalizer. I just needed to show a simple example. So, now what's happening? We have thousands of bindings inside our project. Well, as I was saying, we will quickly get borrowed by writing boilerplate code and doing conversion. It's very error-prone and you can easily make mistakes and your stuff will not work as expected or crash on, I don't know. When you have thousands of bindings also, you can see that's quite a lot of code for not that much and you have to have the spelling key. There's a new release, spelling key upgrade. There's a new release over six months now and each new release brings some awesome features but also brings a big change and your code will break. So, you have two updates, you have thousands of bindings and all the argument checking, conversion, et cetera to work with a new version. And this can be quite time consuming when you have, well, you want to upgrade. This example was quite simple but when you're working with more complicated stuff like asynchronous code or multi-fling, you have to get to deep understanding of how a spelling key is working internally if you don't want your code to crash or sort of like that. So, also, we didn't see this simple example but which will arrive at some point when you do your binding is that it can be tricky to correctly handle your GMS Object Life Seeker and make sure it's still alive and it's not garbage collected when you don't want it to be garbage collected. Something we don't talk about actually is about documenting your GMS binding. Most of the time people put documentation in their source code but when you're doing bindings, it's kind of all to write the documentation for your GMS binding inside the C, inside the C file. But it's not all, as there's also other issue if you really want to do, to embed Spiderman inside your project. What's happened is that most of the time everybody wants more than simple GMS. You know, when you have Spiderman monkey, the only thing you'll get is really basic GMS paper. You have no timer and nothing, but mass date and that's pretty much it and all type and structure, but that's not much more than that. You'll need, yes, as I said, timer, circuit, file system access, eventually modules, W facility. Usually when you start doing this kind of bindings, you will introduce new sub-party libraries inside your project. So then the program will be to build all of those sub-party libraries because if your product support different platform or configuration, it will be different for each platform and configuration. Most of the time, well, most of the time you will have different work or building script for each platform, but it can quickly become very hard to handle because everybody needs to be updated also as we go on internal. So it's hard. So how can we make a new life easier? Well, the project we've been working on in the medium came out here and with something called Ideal, that works that a bit later. So quick word about medium. Medium is a general proposed JavaScript runtime and vendor engine, what is this? That's built in top of Spider and Key. We have two applications, there's medium server, which can be somewhere compared to what is not GIS, but with less virtual, let's be honest. And we have medium frontend, which is basically a window and you can draw inside it using Canvas API. But it's a bit more than that because you have Canvas API, OGL API, OGL API is also a layout engine inside. Just to be clear, this is not using HTML or anything like that. We just took Spider and Key and made binding for it and be able to render stuff on the screen. So for Android, this is what may interest you more. We have two library, two software build on top of this library, leaving them crawl, which implement a method and send some basic bindings, like soccer, for soccer, HTTP file, module three, and all the stuff. And we have little bit more which implement bindings for Canvas, OGL, OGL, and a few other stuff too. We also have a bunch of tools and all kinds of projects to help building all the server party. This one is called Constructor, it's a people script that will invoke different build scripts of your different server party libraries. The great point of this Constructor is that you have all the build steps inside the same pit and file that will invoke the right commands. And it goes by this caching, so we don't have to build all the server party every time and it's make building all the server party for different platform or configuration much more easier. As the second tool, while helpful, we have is commit class mapping. It's a C++ header file, which allows you to easily map a C++ object to a JS object. And while if you use class mapping, you will still have to write some bullet paper like the argument checking and type conversion, that's your object life cycle that will be automatically handled. So if one of our object is garbage collector, the C++ class will be distributed too. So it's allowed having many issues with garbage collection. So that's a simple case. We also have an experimental super for DevTools, which allows you to connect, I have to my Google Chrome DevTools, I'm from Inezula, but it was a bit harder to get this right, so we started with Google Chrome. Right now, it doesn't support a lot of stuff. You can inspect JavaScript object, print stuff inside the console, but that's pretty much it. But in the future, we are really looking forward to helping to get the IPA done so you can interact with the dev object point and et cetera, all this stuff. And the next thing that I was talking about here is IDL. Well, let's see what's IDL are. IDL stands for interface definition language and it's, I want you to describe your IPA. So here's a short example. The interesting part is that we have a constructor, I already said we have a constructor that is taking the C string and we have the echo method, which also is taking the C string. You've probably won't see a bit later how it works on the next slide. You've probably heard of web IDL. They are used by Chrome, Firefox, Safari, and they use web there to generate their bindings. The great thing about generating your bindings is that you will no longer have to write boilerplate code and all the other information that's taking et cetera will be ended automatically. So that creates a view a lot of time, especially when you're willing to update Spider-Munkey since you will only have to change your password code to generate code compliance with the new Spider-Munkey version. You want to upgrade too. Something great about IDL is also they are easily extensible so you can build some whole own flavor of IDL with what you require inside your project. And what we like about this is that IDL is a great place to put your documentation in it. First because with the IDL code we have here, you'll be able to automatically generate the basic information for your documentation and you will only have to write what's in the description of your function, sorry, and arguments. Before talking to you, that's bad, but there's no two are available out of the box for doing this. All the browser has their own IDL processor that is making the bindings for us, but there's nothing available for embedders. Well, let me try to bring something. So it's very experimental, it's not quite perfect yet, but we are working on it and we really hope that during this year we'll be able to get something that is working right. Let's see the simple example. So as you can see here, we still have the IDL code and we're going to give this code to the browser. It will generate us a class here, so I don't think you can do the class, I will give you a general idea of what it's doing. So it will generate a GSForget class and this class is extending class method. As I talk about here, this one will handle various stuff, like your object lifecycle. And then it's also extending a GSForget base which is where is the embedder, where is the actual implementation. It's on the right, but we'll talk about it a bit later. So on GSForget class, this is only generated code. Here it's just a little file, but I didn't put the generated code because it's way too big. So the constructor here will only be invoked when the GS object will be created. What's this? This is, sorry, we have three static methods. The first one is the actual constructor that is going to be invoked by the GS engine receiving all the GS arguments. The implementation of the constructor will do all the type-changing element conversion. It will then call the constructor of the GSForget class which will call the constructor of your implementation, of the embedder implementation in the GSForget base class. We then have the list method, which I think is the method that we're going to object. So, this is very specific. Then we have the register object method which I will be to expose your GS object to the JavaScript engine. You can see that we have expose equal class. This means that we'll have the robot class, GS object, available inside the global GS object. So let's see to what's looked like the embedder implementation. But you will have to write. And you can see here it's way, way, way shorter than doing binding on your own. One of the great advantage here is that you will receive a C string when, well, you will just have all the C arguments, arguments that you'll have to see in all the method of our constructor. So it's quite easy to implement our class. We have the constructor that is using the name and we just save the name inside the property of the, of our GS object-based class. The name are around here. We have a distrutor that is going to be colored when, as I said, the GS object will be deleted. Or if you delete your surplus class, your GS object can see a little bit coming in the method and it will raise an error. And here the distrutor is only for the name. And then we have the echo method, which is way more easier than what we saw previously. It just do a print-off with the name of the robot industry we have. So as you can see, this way we can really make our life way, way more easier when you have to handle a lot of bindings inside your project. If I could sum up a bit all of the things when you, but yeah, when you embed Spindling inside your project and you need to add bindings into it, the first thing you really have to do at all costs is to avoid doing, avoid doing binding by yourself and use abstraction as much as possible. So you can use the idea, even if it's not finished yet, but maybe in a few months you can use it. Otherwise you could use my class map, either fine, or you can write map rules or, I don't know, whatever suits you, but avoid at all costs writing your binding yourself. Always use Spindling to the best beards. This is something very important. Spindling here has a lot of subtleties and you really have to understand what is going on under the hood sometimes. And when you use Spindling to debug big, you will have a bunch of assertions when you're doing something that is not quite right and this will help you to catch but way sooner than otherwise, than the other way. There is a feature called the GC0 which will actually run the garbage collector very much more often. And when you have issues about garbage collection with your object enabling the GC0 will help you to really see where your issue are. It will crash pretty much as soon as you do something that is not good. Well, when your stuff is not correctly loaded, sorry. I'll get Spindling here through the interval because if you miss a release, then the steps needed to get the next release inside the project will be higher and you will need much more time to get it worked, to get it inside the project. So, try to upgrade Spindling on Moomki every six months at every release. You'll get a nice feature, performance boost, and well, well, that's it. If you need the app also when you're doing the binding, people are for the Spindling here, really great people. They're always here to help you and always here to give you good advice and over the past 10 years, they help you have so much time. I can thank them enough to be there and be easily reachable. This is what's made us use Spindling here, actually, because I mean, some people we can really talk to and that can help you to understand how Spindling here is working is really a plus when you're doing your own project. That's it. I don't know. How much time? Okay, great. Okay. What? Sorry. There are all the content, three concepts that are available at www.getup.com.medium.com for them, and you can find a project on www.getup.com.medium.com or www.getup.com.medium. Any questions? Wow. Okay. Did you understand something? No? I see from the looks that they are like, wow, something like that, some of them, some of them. Okay. Thank you so much, Dan. Thank you. Bye.


And so I say eat the nachos, man, cause it's nacho ho, in the mouth. You know what I'm saying?  We on boss talk one on one, one on one. Yeah, we gon' talk. I had Rallo on here, and Rallo, he was telling me about, Rallo the Pimp was telling me about how, and I'm gonna ask you to break this down for me, Ken, cause I wanted to hear your version on this, man.  And he say, some of them would call, you know, he could call them, or they would call him and tell him, hey, I got your girl, you know, and she with me now, you know, and some of them was cool. He say, but some of them was ignorant, and he had to pick and choose the intelligent ones, versus the ones who wasn't, wasn't really in the deal with the fact that she's moved on. Do you ever get peeled for your bitch, man? What? That's when I thought I was, that's what made me think I was really in the game. I didn't think nobody knew who I was. And what happened?  What?  Okay, so I, you know, I was waiting there for a little minute, so I got on by my business.  You know what I'm saying, because that was the only thing I had going at the time. Yeah. Ted, give me something, man. Was he telling me some inaccurate information, or what?  And so I say, eat the nachos, man, because it's not your home anymore. You know what I'm saying?   Ain't no more Christmas with mama girl no more. Ain't no more Thanksgiving, you know? You know what I'm saying?  I'm sorry. So, he said when it first happened to him, you know, he felt good about it because he knew he was solidified, it happened. But then once I hung up the phone, you know, I was, you know, I thought about it differently, like, damn, he called me.  That's a big, big, big, big, big, big, big. So I just had to go out and give him a no. You know what I'm saying? Man, I never feel good to get knocked, man. The first time I ever got knocked was right here in New York, a brother by the name of L.A.J., but he was really from New Jersey. I brought this broad named Keisha up here with one of my bottoms, C.C., the broad from Pimps Up, Holds Down. We came up here, you know, he was on Levith Avenue, and this dude named Lucky from Jamaica. He was riding me around, acting like we was cool all the time, you know, they was working on me, right?      I said, damn, I went all these years without getting peered, I finally got peered in the Big Apple, you know.  Okay.   I got to get them finding it because I was so mad, right? Right.  So when we made it home, you know, cold as fuck, you know what I'm saying? And regrouped. And I went and bought me a brand new Cadillac, at worst I went and got me a few more bitches and I peed up, you know what I'm saying, that I can't, I bought me a brand new Cadillac with some gold spoke and I came back and I gave New York the motherfucking blues. Okay. I'm talking about these niggas in New York, they ain't never seen no nigga like Pimp and Ken, like I was telling Hussam on, first thing I did, I was riding around the track and I was throwing payday candy bars at the bitches. Like, hey man, make it a payday Pimp and Ken.   And they just really, you know, they just really started respecting me, but this was the town and this the town, I first got knocked, this the town where I really built my reputation in my name.  You know what I'm saying? Yeah, yeah, yeah, got to. You got to get your luck in the sock, right? You got to get ready to go to fight, you know what I'm saying? So that's what I did, man.  Bobby, all them niggas, I got a chance to meet all them and, you know, whole host to all the brothers, man, I can't say everybody name because I'm getting a little old. I can't remember like I used to. I ain't seen now. You know what I'm saying? I ain't got what they call it. I was. Pem Simons. Pem Simons, you know what I'm saying?  I know, I know, I know. Rollo? Rollo just trying to keep it pimping, man. But Rollo, man, don't be lying, man. You know what I'm saying?   See, hey, what it look like, you know what I'm saying? You trying to see what the money looked like. No answer, you know what I'm saying? Bam, no answer. You get to call them. You call the police station. You call the hot spiller.  You call them.  You got a lot of what, you know what I'm saying?  What's up? You know what I'm saying?     You know what I'm saying? You know what I'm saying? I mean, nobody wants that phone call, man. That's the worst thing to work with. You know, a lot of niggas don't tell the truth, but when you really, really peeping, you know what I'm saying? You peeping day by day. Day by day. You know what I'm saying? Especially when you young. So, you know, you didn't talk to her. Y'all that went to the jury store, she didn't pick the house from jury. You didn't pick the house from jury. You know what I'm saying? Y'all that upgrade, y'all that flip the Cadillac for beers. Now the note went from $500 to $1,000 a month. Damn. You know what I'm saying? Now you like, man, I got all these bills. You stand at the, you ain't at the motel, so you stand at the heel tip or at the four seasons. So, you know, you're peeping, feeling really good. And that bra don't make that phone call. Man, that's the worst feeling in the world. He's like, damn, I'm gonna pay for this hotel. I'm gonna pay for my car. Right.  Now I'll tell you what I did do. I always told the bra, hey look, if you still happen to make a choice, you know what I'm saying?  Get to do my number. Let them call me so I can know where you at. I won't be calling the hospital and calling all these places looking for you. So I kept it peeping on that. Yeah, we on boss talk one on one. Yeah, we going to.