50 years from now, how will we be building homes, workshops, factories, shops, and offices? Just think of how the modern construction industry would have to change without access to fossil fuels. Concrete would be less available. Distant, exotic materials would be too expensive. Even metal would become tough to get. Without motive power, we're stuck with the resources we have nearby. Or is there another way to think about the problem? This is the Lotech Podcast. Hello and welcome, I'm Scott Johnson from the Lotech Institute, your host for podcast number 64 on January 27th, 2023, coming to you from the Lotech recording booth. Thanks for joining us. Today, I am introducing our 10 mile building challenge and some of what we have coming up in the spring, summer and fall. And don't forget to follow us on Twitter, our handle is at low underscore techno. Like us on Facebook, find us on Instagram, subscribe to us on YouTube and check out our website lowtechinstitute.org. There you can find both of our podcasts as well as information about joining and supporting the Institute and its research. Also, some podcast distributors put ads on podcasts. Unless you hear me doing the ad, someone else is making money on that advertising. While all of our podcasts, videos, and other information are given freely, they do take resources to make and if you're in a position to help support our work and be part of this community, please consider becoming a monthly supporter for as little as $3 a month through our Patreon page atron.com slash lowtech Institute. Another way to support us is to donate your used car. Anyone in the US can contact us and your used car will be picked up sold and the proceeds come our way. If you're interested in helping us get in touch with us at info at lowtechinstitute.org. If you'd like to sponsor an episode directly, please get in touch with us through our website lowtechinstitute.org. If you've ever been around a building project, you know that there are a lot of resources sunk into every new building created. Large transport trucks bring all kinds of materials from across the world to your building site. Factories produce shingles, siding, flooring, and every other imaginable material for your home, office, shop, workshop, etc. Excavators dig basements and foundation footings with ease. Cranes lift large trusses on roof structures. Engineers materials create big open spaces unimaginable to our ancestors. Cori's turn out huge amounts of cement and concrete for us to use in ever-increasing ways. But none of this is possible without the huge amount of energy available to us from fossil fuels. The large machines run on diesel, creating cement requires huge amounts of energetic input. Our transportation network is dependent on fossil fuels. While factories might be able to run on electricity, they wouldn't have access to the raw materials they need to produce anything without fossil fuels. One way to quantify how much fossil fuels are embedded in construction is to look at carbon emissions. Unfortunately, it's really hard to nail down exactly how much carbon is emitted to construct, say, a house. Part of the problems is that let's say we use an excavator to dig a basement for a house. In addition to the diesel used, how much of the embodied carbon emissions to create the machine itself should be counted towards the basement carbon footprint. If an excavator works for say 10 years and it only takes a couple of days to dig the basement, does it just get a fraction of the embodied energy of that machine? So that's beyond what we're going to talk about today. The materials council did the math on some typical construction materials, comparing how much of each material you get for emitting one ton of carbon, which is a rough gauge of how much fossil fuel is used in their production. You get the least of things like aluminum, requiring an entire ton of carbon just to get 0.2 cubic meters of the metal. Steel is even worse returning 0.04 cubic meters per ton of carbon emitted. And then if we move into glass, we start getting a bit more material per ton of carbon. Glass comes in at 0.44 cubic meters per ton, which is similar to granite at about half a cubic meter per ton. Synthetic things like vinyl and linoleum and rubber very widely from rubber at quarter cubic meter per ton to linoleums almost 0.69 cubic meters per ton. When compared to these materials, concrete seems actually pretty efficient at 3.2 cubic meters per ton of carbon emissions. But so much concrete is used from foundations, floors, driveways, buildings, walls, and other uses that it still accounts for a huge amount of energy use. When we move on to more natural materials, the carbon footprint goes way down. Even an engineered product like plywood returns as much as 3.58 cubic meters of material per ton of emissions. Wood itself, though, is by far one of the best materials you can possibly use. It gets as much as 9.8 cubic meters of softwood per ton of emissions, which is more than 27 times more of volume than concrete or plywood. Similarly, clay gets nearly 10 cubic meters per ton of carbon emitted. These natural materials are so much more efficient, and for many of us out there in the country, so much more readily available. In a future with less access to fossil fuels, these are the obvious choices for building the future. Obviously, these materials were used heavily in the past also, but one of the main differences is that we have much better engineering understanding and material science to know how to create stronger, safer, and more efficient structures with the same amount of material. Our tagline here at the Low Technology Institute has been housing, clothing, and feeding ourselves without fossil fuels, or in a fossil fuel-free future, but that's really hard to say as I just demonstrated. So one of the big projects we've been thinking about and working on over the winter has been how would you build a structure using local materials, and how do you quantify something like that? To look at this problem as a challenge has brought to us to create something we're calling the 10 mile building challenge. We can look at the lack of access to resources in a less energy-intensive future in a negative way. We can complain about not having access to Italian marble countertops or other exotic but beautiful materials. We can bemoan the fact that we can't just rely on concrete and steel anymore because they're no longer available, and we'll be surrounded by a legacy of both good and bad structures. Some houses and buildings were made to last, even when we use new and innovative materials that may or may not meet the test of time, but we also have a lot of bad designs that require huge amounts of energy to heat and cool the structures instead of having created designs that are naturally protected from extreme weather. And as we move forward in the future creating new structures with a different world in mind, we may need to figure out ways to retrofit and rebuild structures that only work today in a high-energy world. But it's going to be hard to look at some of our more recent buildings and not feel like we've lost something with the end of fossil fuel availability. In some ways that will be true, but in others we have a huge opportunity to really change the way we build. The Low Technology Institute has created a building challenge that pushes designers, architects, and builders to consider local resources when constructing a home, office, or workshop. If you aren't architect but are restricted to use materials that come from near the building site, that will radically change how you build. The Low Technology Institute is announcing a building design challenge that simulates this future and we call it the Ten Mile Building Challenge. The goal of this challenge is to push builders to consider what it will be like putting up a structure in a future when fossil fuels are no longer available. While today it may be better to use natural materials imported from outside the city to build a sustainable long-lasting house, in the future this may not be an easy option and this challenge will drive builders to reconsider reclaimed recycled or novel materials close to where they are, be that rural, suburban, or urban. The goal is to develop strategies and solutions to meet the higher engineering standards of strength, durability, and efficiency of today with traditional, natural, or novel materials available nearby. In the country in suburbs, natural materials are easier to come by. Trees can be milled into timbers and boards. Earth can be dug and rammed into forms to make walls or stacked into earth bags. Clay can be smoothed over walls and polished for a lustrous finish. In the cities, recycled materials may be the clear choice. Bricks, lumber, insulation, windows, and wire can be salvaged from defunct buildings. Okay so what is the Ten Mile Building? It's basically a building constructed materials that come from an average of 10 miles or less from the building site. That's it. This symbol metric cuts out unsustainable building practices and materials and is equally applicable in any region here and we're going to lay out the basic challenge concept which is a certification process which is free or you can even pay for an outside audit. But we'll go over additional utility certifications which also exist in another episode. Here we're going to have an example right on the Institute grounds and we're going to discuss more about that now. So you might be thinking that you've heard about other building, sustainable building certifications and wonder why we need something else. The best known of these programs is called LEED which stands for Leadership in Energy and Environmental Design but there's a lot more of them out there and almost creating an alphabet soup including Bream, Caspi, NGBS, Living Buildings, Energy Star and a lot more. What all of these do is measure the environmental impact or the sustainability of a building project or its operation. Most of them have a point system and the better designed the higher the points and the level of accreditation. For example out of a total possible score of 100 a LEED platinum building received over 80 points in their scoring rubric. The problem with scales like this although we do think their goals are laudable is that they're not understandable to an average person. I've been asking people over the last few months what is a LEED building just to see what they would say and most people come back with some sort of fuzzy statement about environmentally friendly construction methods. Unfortunately this vague understanding permeates much of what is considered to be quote-unquote green today. Furthermore people who are building with real alternative sustainable methods and materials ignore these certifications because they are considered to be mainstream greenwashing but most importantly for us in a future without fossil fuels we will have to drastically change how we construct buildings. Even what's considered today to be the cutting edge of sustainable alternative design may not be possible without our fossil fuel driven transportation network. The 10 mile building challenge challenges is an artificial restriction to simulate some of the challenges designers and builders will be facing in a quarter century or half century. Plus when I said that most of the materials for this building come from less than 10 miles away every visitor will immediately understand what that means. So why use distance as a measure of sustainability? Why not use carbon footprint? Well for one carbon footprint is really difficult to measure in a concrete way and there's no pun intended there. Like I mentioned before how much of the embodied carbon of an excavator should be attributed to digging a basement. Do you get to count the tires as they get replaced faster than the excavator right? There's just so many questions it opens a can of worms that's not really feasible for a typical builder or designer to calculate. Distance on the other hand is really easy to measure and so is weight and the chances are the more sustainable something is to make the more likely you are to find it locally. Complex chemicals must be created and combined and this is done in centralized locations far away. Concrete, steel, aluminum and synthetic chemical compounds are all made at factories and they rely on transportation network to distribute them far away. Also the more complicated a building product is such as plywood, drywall and synthetics the more likely they're also made at one distant location and then shipped all over the world. None of this is feasible without fossil fuels. On the other hand renewable materials like wood, straw, reusable things like stone and brick have been produced locally for centuries. They'll be available after fossil fuels are no longer around because they were available before fossil fuels were here. But sawing lumber for example can be done anywhere. Clay found across the globe so so is straw and stone. Additionally limiting builders and designers to use local materials will help architecture fit within its own landscape. Part of the cachet of Italian marble countertops is that they come from far away. This is called conspicuous consumption which basically means spending money to show off. This challenge is the opposite of that. What beautiful structure can you build with what you have on hand? We already lived this challenge to some extent. We live in a house that was built in 1855. The bricks were dug from a clay pit just to block away. The wood was cut in a sawmill on the creek that runs through town. The doors and windows were made a block away in the now gone hoxy, sash and door factory which use a horse gin to drive the machinery. The fact that durable and beautiful houses could be built locally less than two centuries ago should tell us that this is completely feasible. Or more than that since we have greater engineering and materials knowledge meaning we could rise to this challenge to create even better structures. Let's talk a little about how this will work. The point is to be easy to understand and the calculation is very simple. We thought about it different ways to measure distance and materials but the in the pre fossil fuel world the primary consideration of transport was weight and so long distance shipping was what we came down on. So what we do here is multiply the weight of any building material by the distance traveled to get to the building site. Then all the weights for all the materials are summed and the total pound miles are divided by the total pounds to give us the average total miles. This is really clear with an example. Let's take a simple one. Say I want to build a dog house here in Wisconsin. I get 50 pounds of wood milled locally let's say four miles away and I put the dog house together with a pound of nails from Ohio which is 300 miles away. So if I multiply 50 pounds of wood by four miles I get 200 pound miles. I multiply the pound of nails by 300 miles and I get 300 miles. That gives me a total of 500 pound miles. That's how much the building contains and I divide that by the total weight of the structure which is 51 pounds giving me 9.8 miles. My dog house then it would be considered a 10 mile building. If you're from outside the U.S. you could use 15 kilometers as your cut off but really this is an arbitrary distance. It's about what would be comfortable for a horse and wagon to go and pick up something in a day. Some 10 mile buildings might actually be six or seven miles when the math is done. Others might be in the teens but this gives us a real understandable way to compare how locally and sustainably a construction project was sourced. We also have a rubric to talk about utilities. I'm going to spend more time on this later in a future episode but basically it looks at what percentage of the structure's utilities as measured by estimated emissions are provided for within the 10 mile radius. So for example a wood stove fired by local sustainably harvested firewood would be seen as a better over its lifetime than say a natural gas furnace which is dependent on distant natural gas resources. If you want to read ahead or see more about this challenge you can go to lowtechinstitute.org slash TMBC that's just 10 mile building challenge abbreviated to its initials lowtechinstitute.org slash TMBC. So now let's turn to what you can expect to hear about in the next year. We are going to use this rubric to audit a building we are creating on our own grounds. Over the last few months we have been designing a timber frame structure that will house a workshop and living we plan to use as many local building materials as possible and still meet code. This is a huge challenge with many moving parts and over the next year we hope to have interviews with different designers builders and professionals to discuss various aspects of how to design and build a 10 mile building. The podcast will essentially be deep dives into various aspects of design and construction but there are other ways to follow along with the project. We'll be documenting the entire thing on YouTube so if you're not already subscribed to our YouTube channel head over there and subscribe to make sure you don't miss out. We hope to put out a weekly or bi-weekly video showing how each component of the construction project is being done and moving along over time. We'll discuss and show the challenges successes and failures as we face them. If you're in the southern Wisconsin area you can actually take part in any or all of this building project as well. In March we're going to start with classes on felling trees, refurbishing antique tools, and building a toolbox. In April we'll be building mallets and saw horses and learning about milling timbers. We'll also be working on the stone foundation for the building. By the end of April and into May we'll be cutting timber frame joints and beginning to assemble the first floor and then the superstructure of the building at the end of May. By June we hope to be working on the roof followed by the flooring and siding. By July we should be using light straw clay to infill the walls for insulation as well as talking about how to build windows and doors, install flooring and siding. By August we'll be working with professionals to install utilities including electric plumbing and heating and by September we hope to be working on the interior finishing like lime plaster walls and a masonry heater. These classes can be taken a la carte or a person can take all the classes for a flat fee. We also hope to have some free public days for folks to come by and see how the project is going. The first part of any construction project is the design process and that's what we're going through right now and we will detail in an upcoming episode. We want to tread the line between giving you interesting information but not going into too much detail that it's overkill. If you have questions you want answered about the project feel free to write into Scott at lowtechinstitute.org and stay tuned for more. That's it for this week the low tech podcast is put out by the Low Technology Institute. The show is hosted and co-produced by me Scott Johnson co-producing edited by Hina Suzuki. This episode was recorded in the low tech recording room subscribe to the podcast on iTunes, Spotify, Google Play, YouTube and elsewhere. We hope you enjoyed this free podcast. If you'd like to join the community and help support this work we do please consider going to patreon.com slash lowtechinstitute and signing up. Thank you for to our Forrester and Land Steward level members, Sam Brown, Marilyn Skirpon and the Hambuses for their support. The Low Technology Institute is a 501c3 research organization supported by members, grants and underwriting. You can find out more information about the Low Technology Institute, membership and underwriting at lowtechinstitute.org. Find us on social media and reach me directly. I'm Scott at lowtechinstitute.org. Our intro music today was Skyscrapers off the Albums City Slacker by Holista. That song is in the public domain and this podcast is under the creative comments, attribution and share like license. Any are free to use and share it as long as it is creative. Thanks and take care.


Hello, everyone. Welcome to the leadership in DPN Boff or because of panels. I'm very excited about the session today. We have all the excellent speakers here with us right now. And I would like to introduce our first speaker, Jonathan Carter. He is your current DPN project leader. I believe that most of you already know Jonathan. He based out of South Africa. He has been a Linux user since 1999 and DPN developed since 2017. Of course, he is also a member of many teams inside DPN, and he was part of the DEBCOM committee from 2017-2019. Jonathan, would you like to talk briefly about the purpose and the ideas of this leadership panel? Yes, so welcome to the leadership in Debian session. We've had some DPL panels in the past, but as...  That's very nice. One second. So what did I say? We can hear you. We've had some DPL panels in the past, but as far as I know, this is the first time we're having a discussion specifically on this topic of leadership. So feel free to add questions to the etherpad at any time, and we'll try to get all questions answered. So there are many ways in which one can be a leader. I remember back when I was in grade three, our teacher told our class how important it was to always set a good example, because if we do something like throw a piece of litter on the ground instead of in the bin, someone who's in grade one will see that and end up emulating that kind of behavior. So I guess you could say that's a form of leading by example. Now in Debian, we have many kinds of leadership roles, and in many ways, every Debian developer is a type of leader already. I also think that leadership and trust go hand in hand. When a leader loses their trust in the community, they also lose the support of that community. So as an organization, we are vendor neutral and exist to serve the best interests of our users. And while it's sometimes difficult to figure out exactly what the right choices are for our users, we do try our best and with that we've gained a lot of trust, gained the trust of a large community of users out there. And in many ways, the Debian project itself plays a leadership role within the software world. So when I became DPL, it was my intention to buy a good book or two on the topic of leadership. Unfortunately, I've been a bit too busy and I haven't gotten around to that yet. But I've been enjoying an account on Twitter that's called Picard Management Tips that I'll share in the links. It's quite funny. But with that, I'm not going to link it too much on the topic. I think I've explained it a bit. I'm going to let Hong continue to introduce the rest of the speakers in this session as well. Thank you, Jonathan. As Jonathan mentioned, you can go into the e-taback. You can find it on the schedule to start to write our question to the speakers. So I would have the honor to continue to introduce other Debian leaders. Bidale, good to see you again here. So Bidale, who first contributed to what we now call free software back in 1979, he joined the Debian project in 1994 before the first stable release and had been involved ever since. He maintains a number of packages and in the past served at the DPL, the chair of technical committee and even briefly as a project secretary. He's now retired from the corporate world but co-owns and operates a successful open hardware business together with Cat Packard. Bidale also served on the boards of several non-profit organizations, including software freedom conservancy, freedom box foundation, and the amateur radio digital communications. Welcome, Bidale. Okay, so next I have my lovely friend Ilana here as well. So Ilana has been using Debian for nearly 15 years and become a Debian developer in 2017. She currently lives closer packaging team, which she revised in 2017 and serves as a member of the technical committee. Outside of Debian, she is a Python software foundation fellow, chair of the community's instrument special interest group and a director of the open source initiative where she serves as a chair of the affiliate committee and also serves on the licensed committee. Ilana currently works for Red Hat as a principal site reliability engineer and tech lead on the Azure Red Hat OpenStrip team. Welcome, Ilana. Maga. Maga has been a Debian developer for almost 15 years and has been serving in the technical committee since 2016. Where are you based now, Maga? I'm currently in Germany. I'm originally from Argentina. Okay, cool. I'm also in Germany. She's been working in Linux Industries in 2003, including eight years working at Google. She was involved in the organization of DevCon for a while. In particular, she was part of the main org team for DevCon 8 in Argentina and DevCon 15 in Germany as well as have a different task in other editions. Bruce. Our famous Bruce is also here now. Bruce's parents got a second DPL. He was the first to contribute to the base system. Sorry, there's a change. So let me, by contributing development this way and for other innovation, why he was the DPL, he is said to be the creator of the modern Linux distribution. He also created a busy box for the Debian installer. He was the principal author of the Debian social contract and the Debian free software guidelines which became a reference for many other projects three days on the open source community. Later, of course, it became the open source definition. He was one of the founders of the software in the public interest. And he gave a very inspiring talk a few days ago at the conference. Welcome Bruce again. Thanks very much. Next I have Enrico. Enrico is a DPL developer and currently DPL account manager who handle all your financial features. He also, I guess is it or not. So he looks after new maintenance site nm.dbn.org, contributors.dbn.org, devtags.dbn.org and sso.dbn.org. Yeah, maintaining many other services. Welcome, Enrico. And we have finally, last but not least, we have Steve. Steve had been around DBM since 1996 working on a lot of different things over the years. He was DPL for two times. He's currently a member of a lot of teams. I installed images, community team and more. He was also even silly enough to have run DevCon back in the team in the distant past. Okay, so I have all the speakers here now. Jonathan, let me check if we have any questions. So already, do you want to kick off with a topic? Yeah, let me see. Is there any topic anyone would start with or shall we jump into questions already? I'll start with one. Great. Okay, so I think that one of the most important ways in which leadership has been shown in Debian is that Debian has been the source of great ideas, which everyone in Linux distributions in the open source community uses. And I wanted to go into the unpronounceable sentence in my bio because it's actually an example. One of the things that I did as the second Debian project leader was that Ian Murdoch was personally maintaining the entire base system. That means all of the very important packages in Debian that it took for the system to boot and install other packages Ian maintained those solely by himself. And when I came in as project leader, I took those packages and distributed them all to other developers. Now today that sounds really simple, but back then no one had actually ever tried distributing all of the core components of an operating system to people that had not even met each other. At that time I had not met another Debian developer. And it worked. And of course, this is what all of the community developed Linux distributions do today. Similarly Debian exercise leadership in the Debian free software guidelines, which became the open source definition in many technical decisions. And I'm just talking about the ones I worked on. Obviously there have been many, many others. So I think that that is actually the most important part of leadership in Debian is that Debian provides leadership. Yeah, even if you look at apps and other tools, other package managers that came after it, it kind of emulates the same way that apps work. So if you do a pep install or remove or any of the package managers from other tools, it's kind of copied some of the good ideas that we have in Debian. So yeah, definitely an example of leadership from Debian right there. Yeah, so talking about Debian leadership, there is a question directly to the Debian leadership on the topic like racism as a global issue. So how do we as leaders in the project respond to these issues? Oh, Hong, that's my question. So do you want me to ask that one? Yes, so I think it's related. We talk about the leadership, how to respond to certain global issues. I think we can answer this question as a group. Yeah, so I'll read what I wrote in the etherpad. I'm finding it sort of difficult this week to focus on the conference, to focus on technical issues like Bruce has discussed, because while I'm Canadian, I'm based in the U.S., and the injustice of police brutality, particularly against black Americans, is first and foremost on my mind right now. So while Debian is not an American project, racism is a global issue that affects all of our community and our contributors' well-being. So how do we as leaders in the project respond to these issues? I feel like we've been floundering. We have been floundering. I mentioned that in my DPL talk as well. We've failed to address or make a statement for Black Lives Matter that I think it's still not too late to do. But tonight, I also watched the news for the first time in the last week and saw the latest police brutality incident. And I actually thought, you know, it's been nice having this break in escape from the news and all the bad news in the world for the last week when I've had my head so deep in Debian. But it also hits home again. I took a break the last week from all of that, but for most people in the world, they don't have a choice.  It just hit that home again and I wanted to comment on that. So I don't have any solutions yet. Maybe we can discuss that further. But it is tough. It just doesn't stop all the bad news that happens out there and especially when it concerns Black people and especially in the U.S. I could ramble on this probably for the next hour. Sorry, I won't go on too long. But we have that even in South Africa, the institutional police problems where it's still Black people being targeted, even though the police is Black, but it's so institutionalized in the police system that that still continues, even though it's not white policemen anymore. But I think we do need to try to prevent institutional problems, institutional racism too, but all kinds of institutional problems within Debian because we actually don't often, we don't talk about it at all ever. And I think we need to do that a bit more. I'll take that if you wish. Sure. So I think we have to make sure our own house is clean first. And that means that Debian needs to have policies and processes that prevent racial discrimination within its own organization. And I think for the most part that we've done that, we have to make sure that they actually work. Second to that, yes, we can make statements. If you look on my own website, parents.com, you'll notice there's a statement on solidarity with Black Lives Matter, which goes through my own incident as being on the receiving side of prejudice since I grew up as a reasonably severely handicapped young person, grew out of it eventually. And so the question becomes, can Debian take an active role against injustice and racial prejudice? And one of the suggestions has been ethical licensing where you have a license that says, this can't be used for racial injustice. And those have been around for a very long time. When I started work on the Debian free software guidelines, there was already the spice license that said the software may not be used by the police of South Africa. At that time, South Africa had ended apartheid and the license still stood. So it was potentially a problem rather than a solution. Forward to today, ethical licenses are again a concern. And my problem with them is I don't believe that you can enforce social justice in a copyright court. Yeah, I completely agree with that, Bruce. I think we have to be really careful. I think it's totally appropriate for all of us as participants in the Debian project to care about these issues and to try, as Jonathan started off, saying that we should try to lead by example. And as Bruce indicated, let's make really sure that the Debian project internally isn't propagating any particularly bad behaviors in this area. But I think it's equally important that we sort of remember that the reason that we come together in Debian is to collaborate on creating something which actually has immense social value, and that is an operating system composed entirely of free software. And in doing so, we are actually doing lots of things that are socially useful, making technology available, addressing digital divide issues in various places around the world. And I don't know that we necessarily have to take on every problem that the world has as a first order concern of the project as a whole. Jonathan, I would totally support your putting out some supporting messages in the name of the project. And I would certainly hope that these are issues that all of us individually care about. I think what I'm just trying to express is that we need to be careful not to get so argued in on this that we're unable to continue to be able to productively collaborate on that thing which brought us together in the first place. Yeah, and one of the reasons that I raised this question was specifically because I find the project's lack of response to this issue making it difficult for me to collaborate. Like, how can I care about technology when people are dying in the streets? It's very difficult. And, you know, police brutality is certainly not just an issue in the United States. It's an issue globally. So, while Debian is a global project, you know, I think that we are maybe in a unique position to consider how free software can interact with some of these issues and serve as a liberating force. Yeah, so there is actually a very similar question. And maybe other speaker can jump in asking about if Debian is doing something of Lance some thing to bring in more ethics into the conversation around technology and computing. Steve Maga, Enrico, do you want to answer to that? Is there something that we're doing currently of Lance to do? So, of course, Debian has always been talking about the ethics of free software and making sure that everybody can get involved, everybody can contribute, everybody is free to use, to develop, to learn from that free software. That is priority one. It always has been for us. There is a lot, this is a huge topic as people have already been saying. Not everybody in Debian, in the community, necessarily agrees about all of the politics of everything we do, but I think that's what the one place that we actually do have, or we should expect 100% overlap. We want to be empowering people with the great free software that we're distributing, that we're developing, that we're helping to maintain and making it possible for everybody out there, regardless of race, creed or colour, to get involved.  That's a more of a historical accident than anything else. The best thing we can absolutely do for me is help people to get involved, help people to benefit from what we do, whether that helps them to pull themselves into a better place, to catch up on some of the privilege that, hey, I and others here have benefited from, that's a great start. As to taking on police brutality and all that, wonderful if we can do that too. It can't be our first priority, obviously it's something that worries lots of us. Getting women involved in Debian, and this is going back to when there were 60 people on the Debian project, has always been very difficult and something as project leader that at that time I certainly wasn't able to get a handle on. It was indeed very frustrating and it exists the same way today in ham radio, women are very much monopoly and sometimes I feel like I know all of the women in ham radio and it's something that I would love other people to give us better solutions for. Yeah, I mean Bruce, like VE6JIT, I come from that world too, it's alienating constantly everywhere and even in this discussion there are three women on the panel but my focus of my subject was racism. These are problems that I don't necessarily think that this is a wider diversity question and there was a great diversity session that I watched on the opening day of the conference. I specifically want to focus on the question that I raise to the leadership, looking at this panel, we do not have racial diversity. It's not something that we're doing a good job on in the project and it's not something that I think people are going to be like, oh yes, here's a solution on a silver platter, please come and implement it. I think that we can do better. I'm not necessarily sure how to do better but I think that one of the ways that we can do better is not necessarily changing the topic when like we have these hard things raised and to sit and think and try to respond to the direct things that we are being asked to solve and not necessarily redirect to things that are, we're doing a better job at. I was very happy to see that there were talks on speaking and writing one of the 22 scheduled Indian languages in this conference, a language that I'm sad to admit I've never heard of and that kind of work helps. Yeah, so attic is a huge topic, right? We can go on forever but let's move on to the next question. Enrico, is that okay for you that we continue with the next question? I thought that you raised your hand if you want to add something. Yeah, I don't want to talk the thing so if you want to move on, something else is fine. Yeah, so maybe you can take the next question that I... It's about volunteering times for DBM projects so the question is that DBM volunteers are not employees of DBM context how can we limit the work and therefore opinion wage at risk with being linear with uppay availability? So, yes, I'm not so sure that I would... I understand this question but perhaps it's about the balance between volunteers for DBM project and their normal job. So if somebody want to thank it, Marga? I think I understand the question maybe. So I think the point here is the famous meritocracy story, like we say DBM is a meritocracy like it's a good thing and it's like the one that has the most time is the one that gets to do the most things and then the person that has the most time available basically their opinion ends up having more value because they had more time available. I think this is where the question is going. I'm not sure but this is my understanding of the question. I think the person who's the most assertive is the one who gets listened to the most and that's not necessarily a good thing. Right, so I mentioned the meritocracy, like that's a good thing because many times the meritocracy thing is used like a way to hit people into compliance and to like okay, I have this package I have done this thing and so you need to like do what I say even if it's not necessarily the best option or the thing that benefits the community the most so I'm very skeptical of meritocracy in general I think there's like more things to consider when when this thing what's the right decision for the project. Bidale, come off mutant, say that again. Bidale, are you unmuted? Am I unmuted now? Yes. Toggles are such a wonderful user interface thing. Look, so Marguer, absolutely right. There are fundamental problems with the concept of meritocracy but in Debian, I don't know how we're ever going to avoid being what I call a doocracy which is, you know, those who do end up being the ones who do and this may in fact just utterly disqualify me from being able to help solve some of these problems because I don't really see any way around that. I think to some extent this comes back to some of the very fundamental sort of early decisions that were made about how the project would organize itself and this notion of the way our constitution is structured where individual developers have an immense amount of authority and we only sort of invoke others in the project when there are situations or problems or questions that individual developers can't resolve on their own and in some sense this tickles my brain about the difference between leadership and management. We somehow have a structure that seems to sort of encourage reactive processes more than proactive or visionary or leadership processes because one of the things I think about when I think about applying metrics other than straight meritocracy is how would we go about making concrete decisions about technical direction in a way other than we do now and I sort of don't know how to do that without creating some other kind of structures within the project. So we kind of so far defined ourselves as democracy with the idea who puts in the work gets to decide the direction while reflecting on writing notes for my Nanowikis talk there was a graph that has an axis towards building on the relationship not just on what one wants to do to get and so the people who have time and energy could also invest some in building a relationship or community around their work and who has extra time could think of empowering others with that time rather than go on their own way however it would mean asking people to switch from development to management or coordination which might not be what people are motivated to do or want to do with their time in Debian. So it's a bit of a tricky thing because we're working on volunteers it's pretty hard to ask people what to volunteer on so it may be that we are structurally stuck there but it would be politically interesting to see if we can divert some of that energy to bring in more use energy to pull in rather than just to move on. Steve So rather than thinking about management and coordination where I tend to find actually personally this is entirely a personal thing I actually get a great deal out of mentorship and training and helping other people get up to speed these days there were never enough in hours in the day to do the technical things I want to be working on because let's be honest there are always more projects than there are hours in the day it's a really, really fun thing to help other people get up to speed ideally to go off and do some of those things for me particularly the boring things I don't want to do that's my take Yes and anyone want to comment on this question okay so we have 14 minutes left let's take another question on the top of the list is Debian or should Debian be more opinionated as a group to push this to a wide changes and a thought experiment to avoid the obvious in phase system discussion making up are more installed by default I also based the question on the chat for the speakers who would like to take this question Bruce if you are speaking you're muted Okay well this worked before anyway I think that that's a job for Debian derivative distributions because Debian is the universal operating system that was another leadership thing and if you want to deliberately make an operating system that isn't universal you can do things like Debian.edu etc where you can specialize in that way and kind of lead the people by the hand the problem with doing that with a universal distribution is that it gets in the way when people do corner cases for example when I'm putting Debian on a relatively small system I don't want to GUI I don't want anything about a GUI on that kind of system Well we have two members of the technical committee on this call as well so I'm wondering if they have any opinions on distribution wide changes or if there's ways that people should propose it or if they should involve the CTT in that I don't know if you have any opinions but I'd like to hear from you about that We have a session tomorrow and we're going to be discussing some things like that. Marga maybe want to talk more about that Sure one of the things that is on the table is whether the committee should do more design work and if the answer is no then how can more design work get done? I feel that actually Debian should do more technical leadership in the world of distributions I feel Debian did do this in the past like for example at the beginning of this talk we mentioned APT was a leadership thing. No distribution had a system that resolved the dependencies for you. The first one was Debian and at the time Debian was constantly innovating and bringing more and more things to the Linux distribution space and at some point it's just being stable became the one and only thing and the innovation I'm exaggerating but the innovation kind of stopped and I feel that this is something if we want to keep Debian relevant we need to change it I don't think the technical way is the way to change it but finding a way where Debian can actually innovate and bring innovation to the Linux distribution space is one of the we need to do to keep Debian relevant. Thank you and I think that is all the questions we have on the pad and there are a bunch of comments that are for us but I don't see Enrico did you have a comment to make on that one? No I was waving my agreement Okay Fine Well I think at this point we can have all of the individual speakers give a couple minutes of their own commentary Yeah sure Absolutely So let's just go around the table I'll start just to get everyone started I wasn't a very good Debian project leader and I found out over time that I don't want to do operations I don't want to run an organization I want to have the ideas and get those in place and then go on with other things and so that was actually very frustrating for me being a DPL and being in that operational role and it was pretty frustrating in all the other organizations that I participated in I think that we have to be cognizant that the people who have the ideas are not always really good operational people there are leaders but they're not the people who carry things on day after day and we need to as a project differentiate those kinds of people Who's next Malga? Sure, one of the potential topics that we're in the pad was ideas to improve the role of the DPL and last year in the first round we didn't have any DPL candidates we watched very scary for me because I was the chair of the technical committee so it had implications anyway at that point there were a few interesting discussions on this topic why don't we have any candidates what is going on is this something that we should change and then we got a bunch of candidates and everything just got back on track and we kind of forgot and I think this is something that we might actually need to think I don't know maybe Jonathan give your take giving the chair the current DPL but I feel that the amount of tasks that are expected from the DPL it's very large maybe because different DPLs have done different things throughout the time and now like there's all this baggage of all the things that are expected from a DPL and it might be too much for just one person to carry and instead it would make more sense for this to be a group of people and some people could devote their time more to operations which Bruce was saying and other people could devote their time to technical design and others could devote their time to like people leadership whatever but that spreading the load would be better for the project I don't know this is something that I think it's an idea worth exploring I think to do but I would like for us to think more about this and whether it's a thing that makes sense for us and if so what do we need to do to make it happen I'll pin that and come back to it when it's my turn yeah so actually there is a question from the IRC perhaps we can also take this question do you think the age profile in the projects and how it changed over time effectively means ability to innovate the communities in aging less young people joined over time I'd actually love to speak to that because I actually have exactly the opposite impression of Debian it's interesting when people decide to put together something like this session that people like me get invited to come join in and I'm of course happy to come share a thought or two from past experience but I've been fascinated the last couple in-person deb-cons that I attended were really full of what I thought of as young enthusiastic ambitious people who had much more energy to tackle the kinds of problems we've been talking about in this session than I do and so I actually have great hope for the future of Debian I look at the rest of the folks that are in this particular session and it's not I don't think it's a really good representation of the cross-sectional demographics of the project this group is in some ways I guess sort of self-selected for people that have been around for a while and you know have some history and some experience to perhaps offer but my personal impression of Debian is wow so many young people with so much enthusiasm and so many great ideas that I wouldn't have even thought of so I think some of this of course is you only get to a leadership position by already having some experience to draw on and some of us here or I feel quite old sometimes when I see some of the really enthusiastic younger folks what they're achieving Debian has been growing older on average to a certain extent I think that was always going to be going to be the case just because lots of us who started off 20 something years ago have no intention of going away anytime soon but that doesn't stop us from encouraging new people to get involved and continuing to use their ideas and even you know steal some of their enthusiasm like use their great their great ideas use their great passion and keep things going I mean one of my best friends is a 14 year old girl in fact is the daughter of a DD I'm sure a bunch of people here will know exactly who I'm talking about she'll be a DD, she's already been working on things it's just a matter of time today I ended up doing some training in my day job of an intern who and I was amazed at this told me how fun he thought packaging was, yeah I'll steal him next let's keep going, let's keep on finding the new people who want to join in I think Ilona's next am I? am I supposed to talk about being like the you know token young person on the panel or if you have something to say I mean I am the token young person on the panel I will relate that back maybe to one of the things that was discussed earlier with respect to the the burden I'll call it of being a Debian project leader as this session has been ongoing I have been receiving multiple IRC messages from multiple lovely people saying eHashman for DPL and every single one of them that I have responded with saying it's a 20 hour a week unpaid job I have a 40 hour a week day job I can't do that work traditionally a lot of the folks that we've had in DPL positions that were very successful were either in academia or freelancing and were basically able to self-fund large portions of their time and so when people are like you're an excited young person like you're in a leadership role Debian you should do things and my response to that is like and how am I going to be compensated for that labor like I got to eat and you know I can't spend 20 hours a week unpaid on top of my 40 hours a week day job and my 40 hours a week day job might not give me that time to spend you know it's exhausting the community is wrestling right now with a lot of topics of sustainability compensating developers fairly for their labor I know that that's in Debian a particular fraught topic going back to like you know the scandal of Dunk Tank but these are things that I think that we will have to wrestle with in the future as a project I don't think that we can keep brushing this off the table and say like yeah yeah yeah let's just keep funding it with like volunteer effort that will be sustainable and the project will be fine forever thanks two minutes Enrico you would like to say the final words wow that's a lot to ask but maybe the DPL should have the final word final words and then Jonathan of course also gonna go to say his final words everyone can have okay so I may say the things that I wanted to say about ethics and kind of touching racism a bit so we have two different bits about ethics in Debian one is about Debian itself and we have to our core points no discrimination about fields of endeavor so there is no ethics requirement about what you can use Debian for but that is different from the ethics of our community for example I think that the most important people is that we do not want Debian people keep other people out of Debian as long as they interact constructively with our community and that has a lot of implications also with regard to racism and I would like it's blatant that we do not have many people of color in the project and I would like to know why and I am not competent in investigating on that I think we have money we could probably put some into asking for help trying to find out if we have some structural issue for example that keep people out one thing about sending out a statement that was this hardening for me was to the herding cut bit about getting a statement out I think we lack a lot of project managing to keep discussion focused and keep a goal inside when there is something which is like time based or because people start with passion and then get distracted or frustrated and drift off and then a synchronous communication you can't even see that a person has drifted off and an effort loses team and then it's gone we do not have a lot of project management in the sense of people keeping track of where an effort is leading I would like to see some more of that because if it's technical thing yeah okay it doesn't make this release it will make the next one if it's about getting a statement to completion and publication then we don't wait for the next release there will be a statement to make I would like to have more efforts about keeping things focused because the intentions of that but on the topic of keeping things focused we are now two minutes over time can I just say one thing before we get cut off so firstly I'm going to take the Black Lives Matter thing into another session then we can make some concrete plans to bring this forward and then the second thing on the role of DPL I want to talk more about that I'll do it some other time but the plan is to make the role of DPL smaller so that it is an easier job and that it doesn't take it's 20 plus it's on the other side of 20 hours a week not below it but I think we can make it a simpler job so that the average DD can take it on and it's not a huge burden and that's all I'm going to say at this point thanks okay thank you very much all the speakers and for the participant for all your contribution on the pad there are a lot of excellent comments there so the speaker please go to the pad and follow up on those comments thank you everyone ciao


People were saying that the New York Jets need a wide receiver. Just draft a wide receiver, man. Number 11, you got Jerry Judy, CD Lam, Henry Ruggs. You can get anyone. Don't do it. Don't fall for it because you can draft an offensive lineman, which you desperately need right now because they're coming off the board pretty quick. And then you can get a receiver later on. It ended up working out for them. They got Mackay Bekton. This is a deep wide receiver class. You can get a good wide receiver later on, and that's exactly what they did in drafting Denzel Mims, a wide receiver at number 59, getting that pick from the Seattle Seahawks. This is good for the Jets. This is good for Sam Darnold. This is good for Adam Gase. I want to emphasize the first two picks the most. Mackay Bekton, Denzel Mims. I love that they went O-line and then wide receiver instead of wide receiver and then O-line. I think this was a good draft by the New York Jets as far as the first two picks go. A somewhat, you know what, I was going to say questionable draft, but at this point with the Patriots and Bill Belichick, I've learned just sit back, Hasan. You don't know what you're talking about. Bill Belichick does. Just let him do his thing. Trust him. Which I mean, he, he had a good draft. The Patriots had a good draft. They got the safety. They got two linebackers. They needed tight ends. They needed to replace Stephen Kostaski as well. So they got a kicker, but no quarterback. And I had to go into it. That was the number one thing. We were like, man, Jordan Love makes so much sense for the Patriots. Jalen Hertz makes a lot of sense for the Patriots. Jake Frum, I was sitting there watching the draft and every time I saw the Patriots on the clock, I was like, dude, let this be Jake Frum. That would be amazing if it was. Once free agency passes and once the draft passes, you're almost more than likely set on your roster going into preseason. That's just how it is. That's just the nature of the NFL. So they're more than likely not going to add another quarterback. They signed a couple guys that were undrafted, but we'll see how that pans out. But I think the biggest question mark for the Patriots was why not you have the quarterback? I trust Bill Belichick enough and I've watched a lot of Bill Belichick in my life to know not to question the guy. So Bill, this could be the greatest draft class in NFL history. And if it is, I wouldn't put it past you. Moving on to another AFC East team, the Miami Dolphins, selecting Tua Tagoviloa with the fifth overall pick. Didn't need to trade up with the Detroit Lions to select him at all. I love what the Dolphins are doing with their team, and I think that this was one of the better. I talked about the Colts having one of the better draft classes, but I think that the Dolphins with what they've gone through, they still won five games. Brian Flores got this team together. This team played for this coach. We thought that they're going to own 16. The fact that they were five and 11 and then you can draft your franchise quarterback. Not only that, but you put help around him. Austin Jackson at tackle with that pick that they traded away. Minka Fitzpatrick, which I'm not going to lie. I think they should have kept Minka Fitzpatrick, but you get that tackle help for Tua Tagoviloa. And then a 30th drafting and defensive back, which you've already added Byron Jones pairing with Xavier Howard. This is going to be a good secondary. They want to compete in that AFC East. I think the Dolphins did a phenomenal job in drafting this year. Brian Flores and Chris Greer did a very good job. So watch out for the Dolphins. That could be a surprise team. The Bills, an AFC East team that did not have the first round pick after requiring Stefan Diggs from the Minnesota Vikings. They draft AJ Eponessa who fell all the way to the second round. And it might be because of his lack of speed per se that kind of hurt his, his draft stock, but Eponessa falls and then Zach Moss gets drafted at running back. I saw someone say that, man, that's a disrespectful Devin Singletary. Why are you going to draft Zach Moss? Man, you put them in two together and it's a tandem. And Devin Singletary, I love him. And I do think he's capable of getting 20 carries a game. I think the way he operates and the way he can get the most, or you can get the most out of them is if you split time with someone else, not saying that he's going to be 50-50. Maybe he's going to be 70-30. But Zach Moss could be that guy that comes in and gets that 30% of share from Devin Singletary. Jennifer White receiver in the fourth round, Gabriel Davis. And then Jake Frum. No, no need. They didn't need him. But he was drafted 167. And I think that at 159, the Patriots could have gotten Jake Frum just eight picks earlier than the Bills, decided to pass on him to get Stephen Kosowski's replacement. He's just intelligent. And if he falls that far into the fifth round, Sean McDermott, you've got no choice. You've got to take him because you don't know what he's capable of. You don't know what you're going to do with him. Maybe he comes in, if Josh Allen were to get hurt, and he does a very good job. Not saying that he's going to take Josh Allen's job, but he's going to be a good number two guy for the Bills. So I like that they just pull the trigger on him. We don't need him. Let's just get him. Let's see what happens. So I love that pick the most for the Buffalo Bills.


All right. Hello, this is Christian. So welcome to another video with me today. We're going to look at Component Communications and ViewJS. So this is the Learning Unit 13, and I do apologize for the delay of delivering this unit because I basically lost all the content and had to go back and try to find where I could. So that's why it's a little bit late. But we're going to look at communications using the View Framework. As you can see here, there are a couple of ways how components communicate. When we say communication, we are talking about passing data between two components, right? And one of the most common, I guess, ways is to pass data from a parent component down to a child and from the child up to the parent or from sibling to sibling or things like that. So you can see here that View pass data, and usually the same for all frameworks, as far as I know, it's always in one direction only from the parent down to the child. We're passing data in that direction and we pass data through a property called props. And then when you pass data, if you want to pass data from the child up to the parent, you cannot do that directly. So you have to go through some kind of event or function that the parent can actually receive or can listen to. And then once we see that event, you can actually receive the data from the child to update your data in the parent component. So again, here are just some things here. When I look at just the two things, look at the props and how you emit data from the child using the emit function and the custom event. So for example, you have the root component and then we have the subcomponents down here and how they pass data up and down the tree is what we're going to do today. So let's go into the IDE over here and I show you. This is we'll take a look at the View project, the View seal light first. OK, because it's only built into the program. I'm going to go and just make some modifications and we'll walk through the process of how that works. And then we'll jump into the CDM version. So this is the root template. We're going to bind to this ID right here. OK, so we're not going to touch this at all. And then in the main JS file, this is right here. This is the root root file where the entry point to the program. Now, let's look into the component app component right here. I'm going to just close this for now. So here we have the script, the template and the style. If you look at the template, it has a tag. One, the header tag, these are just regular HTML tag. We have the hello world. That is this hello world here. We have two components imported into this root component, the hello world component and the welcome component. So we use them in here. The hello goes right here. And then the welcome goes in the main tag. I'm going to go and turn off the main tag down here, the welcome component. Just do a control back tick. I mean, control question mark. And it should reflect on the right side that is now gone. So what you see here is basically the logo, which is part of the parent component or the root component. That's this logo up here. These two lines of text are actually coming from the hello world component, which is the child component. So if I turn this off, you're going to see that just the logo is running on the right side. So we have one parent component, data independent component, and then these are the child components. So let's take a look at the hello world component here. Now this file, this tag, we import it up here. Now this is what's using the composition API. When you see the script tag that has the word set up next to it, this is an indication that it's using the composition API. So when you import components using the composition API, like you see here, the hello world and the welcome here, you can just use it right away in your template tag like this. If you're using the other approach, you have to manually register those into the components attribute or property before you can use it in your template. And we'll go over that later. So here, what you see here is the hello world tag, which is the child component. And then we pass something to that child component. This is how you pass data from the parent component down to the child component via properties.  So the MSG is the property, the name of the property, or the key, if you want to call it that. And then the content that it contains is this thing inside the pair of quotes. That's what we see over here. If you change that, you see it reflects on the right side right away. That is just a regular string of text you pass to MSG and then so forth. So therefore, when you pass this down to the child component, how does it receive it? So let's take a look at the hello world right here. I'm going to go right click on it and go to definition. So here is the hello world file. Now same thing, template, style, and things like that. So I'm not going to focus on the scope by the style. It just let's put away down here. We don't want to see that. It's confusing. So we have the template here. And then we have this script again set up. So this is using the composition API as well. And then you can see right here a function. Let me break this down a little bit for you can see. A function called define props. This is a built-in function built into a view framework. You use that to define or to receive props or properties from the parent. If you don't have any data passing from the parent, you don't need this function. Then that's fine, right? But since we do need the data called MSG, we need to define the function and use the function here. So you can see that is this function takes a property, the purple color base here. Inside there you have just again, bunch of keys and value pairs, right? Now the property name is called MSG. This name must match the name you gave out here when you pass it to the child component. So what have you called here MSG? You have to pass it down and use that MSG as well. Now as far as I know, they have to be in lower case just to be safe. If you have an uppercase, it may not work. All lower case is better, okay? So MSG receives that data. This is a string literal assigned to a property called MSG. It goes down to the child component where I assign that in here. The MSG colon, you have a curly brace over here.  Now whether you put a record or not here, that's not gonna crash your application. This is usually used only when you want to validate your data. No, we're not gonna do that because you don't have time to do that. But only for validation purposes. If you don't validate at all, then usually you could just take this whole thing out and you must assign that MSG to a certain type. I can't just leave it like that, okay? If you leave like that, I'm not sure it'll work on C. As you can see it broke, okay? So you have to assign that to something of a certain types. You can put a colon. If you wanna put a zero, that's fine. As long as it's assigned to something, then that's fine. The zero means like it will infer that to be a number type. If you expect this MSG to be a string, then you put string class here, okay? If you want it to be a number, you put number, right? You put a boolean, whatever, just so it kind of give you an indication of what that type you expect to receive. It doesn't mean like if it will boolean, I'm gonna receive a number, it's gonna crash. No, it doesn't crash, right? As you can see, I expected boolean but I got a string anyway. If I put a number, okay? And it would still work, okay? So it just used up for validation purposes. So let's just say we're gonna put it back string here, okay? And then once you define it inside the props, define props function, you can use it right away in the template, okay? So MSG goes right here, right? If I change that to like MSG one, it's gonna crash on the right side, right? It's not gonna say, it's not gonna find it. So that's that. If you wanna use it inside the script tag over here like this, right? So you can't do this, right? Let's say I wanna put left, I don't know, let's just say text equals MSG like that, right? How do you get this MSG out so that you can use it in the script here? So you notice you can see it crashed already. If I go and press the F12 to see the messages, the console, let's do it again, you'll see that MSG is not defined, okay? This image refers to line seven, that's this guy right here but it's okay in the template. So if you wanna use it in the source, you have to define a property to this variable, this function, this function will return the data back but if you don't use it in your space in the class code here, source space, then you don't have to return anything here because you just go directly to the template. If you don't wanna use it inside here, then you have to set this to something like props, okay?  So this props now contains the data inside this curly brace here, right? We turned that and then now you have to get the message via the props object like this, okay? So you can see that if I refresh that and then if I go down here somewhere, maybe right below the H1, let's put a P tag, put here text, you should see text right over here, it says you did it here, right? Same copy as the other one. So that is how you will access the data inside this props, I can just show you if I turn that off, it's gonna crash and it crashed right there, okay? So we pass data from the parent down through child this way.  Now what if I wanna pass this data, let's say, how do we do this? I wanna pass some data down to the child, let's do a, let's make it a little bit interesting, okay? So let's go up here. Oh, one more thing because I'm using the composition API. If you want your variable to be reactive, meaning that if things change in the background, if your data happened to be changed, you want that to be reactive, meaning to reflect life on the view, you must register that using the ref function or the reactive function. So I go back again, right, make sure it's working. And so let's say that I'm gonna pass this data, it's some, just some data. Let's see, let's call it const cities equals some cities, like, you know, Kenosha, report here like Boston and Miami, okay? If I just do that, then this is not reactive, meaning if I later, if I change the cities that of zero commercial to different city, you're not gonna see over here, okay? So for now, let's see that I'm gonna pass this array of data down to the child component so I can display it down here, maybe right below this text here or something. So you do the same thing up here, right? You go here and assign a new variable called cities equals. And if I do this, okay, if you do that, so what you're doing here is basically you just assign the string literal of the word cities to a variable called city, which is a property. So this city here is not this city, this city is here is not that city, okay? It's a key, you pass down to the child component. And then to receive that, you have to go down to your child component and add it to the list up here. So put a comma, put here city, remember it has to be the same name, the type is gonna be string, right? Just put your text. And then now I can put it down here. So let's say that right below the h3 down here, we're gonna put a div, and then set a div, we'll put here the, I'll make it a little bit bigger, so we'll put like h2 and I put here cities. Okay? And you're gonna see that the cities, actually the tech city is displayed down here as opposed to an array of cities. And that's because we did not bind the cities to a variable. Okay? To bind that to the cities variable up here, you have to put in front of this attribute the colon like that. Okay? The colon is a shortcut or you can also use the bind. It's the same thing, it's shortcut. So just basically the colon would do. Now what they say is that this city is the same key, but then it's bound to an object or another data that will be used inside the parentheses here, by the quotes here, but this variable, this is a variable now inside the space up here, okay? Is no longer a string literal. You expect to find another variable up here in the code that matches the name. If I happen to put like cities like this it's not going to find that variable. And you're going to get a no value and so forth. So if I save that fresh it, you can see it's not working, right? It doesn't crash. It's just like there's nothing there. Okay? So if I change this back to the cities like that, you can see now right there, only pass the data down to the child component down here as the cities, it's now an object, an array. You print it and there it is all the names of that. Okay? If you just want to get diversity, you put see a zero it should print only the no shaft. Okay? So that's how you pass data as an object or an array. It'll be an object down to the child component. All right. So now let's do something a little bit more interesting. So in the, right here, so I'm saying that this, let's say I have a function up here. I'm going to create a function and this function will be called update as cities. And I'm going to pass him a new city variable. And then what I'm going to do is that I'm going to say the cities of a zero will be changed to the new city. Right? So when I do that, it will change the city of Kenosha to the new city I sent down and then you will pass that down to the list again. So it will show up here again. Refresh, make sure it's working. Okay? So it's working fine. Now this function, I need to also invoke this, you know, somewhere inside the child component. We can do the, you can do here first. So let's say right below here, let's put a button, I'll put update a city, right? We're going to bind this button to a function. So the add symbol click and I'm going to call the update city and I'm going to pass in a new city, maybe we call it, I don't know, Phoenix. Okay. All right. So when I clicked the button, it's going to change the city zero to Phoenix. And if it's correct, it should pass Phoenix down to the child and it will show Phoenix up here in the child component. Okay. So if I click on it as refresh first and right, you notice that it did not reflect the Kenosha down here. How do we know that it is working? Well, you can check it down here when you submit it. I can do something like console log. Let's log it to the console, the city's array, right? So refresh it again. If I go ahead and update, okay, you see that, you know, city of zero has been changed to Phoenix, but it did not change in the child component. Why? Because this is not reactive. To make this reactive, we have to wrap this with a ref function. This ref function, you have to import from the view, import here, the ref, which is the lower case one, only view component, library, and then refresh that now. Once you do that, okay, you cannot just access city's data like this. You have to go through a property called value. So city's dot value and the value probably stores the actual data. So from here, that's how you change its data. You access this in the code only, not inside the template. The template you access the same way as you normally do. So now I'm making this reactive. As you will see, if I refresh now, if I click the update, can I just change to Phoenix? All right. So that's how you make it reactive. And that's also how you pass data from the parent down to the child. So now let's say that I want to pass this function, this button, if I move this button, as a part of the child component down here, maybe I put it right below the same plate, let's put it below down here. So this is part of the child now, is not the global parent because it doesn't exist here.  So it's for the child. So how do I make it so that when I click the update function, it fail here and it's gonna pass the data or it's gonna call this function in the parent component, call this function and then change the city like that. So a couple of ways how you can update the data in the source or in the root component up here. One is you go through a function, you pass this function down as a property like you did here, same idea. So let's say I'm gonna go over here, pass a property and I'll call it update city equals the function called update city. Okay, so again, stick with lowercase and your key. The actual function is on the right side. So now this update city points to, it's a reference to this function here. I can use it in the child component, okay? So I'm gonna go then down to the child component and then add that to my list up here. So I call it update city. It's gonna be type of function, right? So I know that it's a function. Okay, now with that done, then when I make the call down here, I don't have access to the update city function. This is from the parent, but it's linked to this update city with the lowercase here like this, okay? So when I do that, basically call this function and pass the data to it and then see if this works, okay? So let's refresh that and click update. Okay, so you see it works just like before because this update city is a reference to the function we passed to it right here. So whatever this function does, it will be invoking this function in the parent component. It passed, it needs one argument, one parameter. So we pass in one parameter. So you treat this as the function in the local space here. Okay. Now, so that's one way you pass data up from the parent component. I'm gonna add another one down here. We duplicate this, alt, shift down, and then let's say this time I'm gonna do the same thing, except I'm not gonna pass the data, any references down here. Instead, I'm going to trigger an event so that the parent component can actually receive or listen to this event. And once it's triggered, it will actually fire a function, the same function up in the parent component. Okay, so that means if you do that, you go down here and you can create and you can emit. So using the dollar sign, dollar, emit, it's a function. So instead of function here, it takes one or two things. Okay, the first argument is always gonna be the name of that event. So for example, click is an event, right? Now enter is an event. You know, key up, key down, all those events that are built into the DOM. So here you can actually create your own custom event. You can call it whatever you want. The rule is that your event names must be in all lowercase. Okay, so no uppercase, okay, all lowercase only. And if you use uppercase, you have to put a dash in front of it. So just stick with the lowercase like this. So the first argument is the name of that. It has to be in the string format only. So I'm gonna say, you know, maybe on update. Well, you know, maybe you'll call something different. Just say, I'm gonna call update city, that's the same name, update city. Okay, so now that I'm using two words, as opposed to one, just a little bit different. So again, don't use capitals like that. I mean, if you do that, it will still work better yet. It's not really nice. And so use lowercase, update city. This is an event, okay? And then if I pass data to it like you do here, then that is the second parameter, okay? If you pass a single argument, cause phoenix to it, let's give it a different name, let's call it down. Something easy would be like Fargo, okay? Somewhere way up there in the corners. Okay, so I update the city to Fargo, and then we'll put here update city too, so we can have it. Okay, that's okay. A little bit tight, but that's fine. All right, so this is the event. This is the value, okay, the argument. So when I call this update city, I'm gonna go up to the parent check component. I'm not gonna pass anything down, but what I'm gonna do is gonna listen to an event. So you listen to event using the add symbol, like you do up here, right, the add click and so forth. The name of the event is update city. And that's gonna be equal to when that event is triggered, what happened? I'm gonna call this function called update city, okay? So notice again, I did not pass anything to it because the data coming in is automatically bound to the event argument. It's gonna be assigned to this new city right here. So whatever you call here, it's gonna be assigned to that variable. And so the rest will behave exactly the same. So now, if I go back and clean my whole thing here, let's see if this works, okay? So the Kenosha update to Phoenix, if I click the update city two, it changes to Fargo, right? So notice I did not pass any data down, but I still have to bind that to an event, like a click event or listen event, right? So it's listening to this event. If this event is fired from the child component, it will get triggered and it will call the same function here, pass data to this city up here, okay? What if you wanna be like a little bit creative and instead of saying something like that, what if you wanna create a random number? Let's say, let's add another one here. Let's put here a Chicago. One more just so we have a little more room. Let's put here, oh, I'm not a Lulu. I'm not sure if I spelled it correctly. Okay, maybe it is. So when you update the city, instead of saying that city, we can then, okay? So what do we, a random, maybe not. So let's add another property here. Let's add the state to this, call it state to ref, and then default state will be Wisconsin. Why put these right here? And then, oh, something happened. Okay, and then when I update this function, I call it update city, but you can call it, I should just call update, doesn't matter, I guess. Let's say when I receive another parameter here. So let us notice, don't call it state like this, okay? If you do that, because if I try to update the state, you know, state that value equals state. And you basically go in circle here, because this state is the local state here, it's not the global state, because now, you know, you can't do this, right? I mean, let's say you can't. If you do that, it's not gonna work, because it's not in global space. So give it a different name, like new state or something. Assign that to the new state. Here you go, so we have two properties, and then now the function accepts two properties in the child component. So when we pass the data down, we have to pass it down to the child as well. Let's go update this right here for now. Let's put here state is equal to state, okay, so we got that. And then down in the child component, we're gonna receive it up here as well, state as a string. And then let's put right in front of, let's move this thing here, go like that one. Let's put it right below here, right in front of this city, we'll call it state. I put a little dash here like that. And what's that red light thing telling me something? Oh, it's kind of ugly, I'm sorry, I just put a BR here. Normally you would use style with a CSS, but just for this demo purposes. Okay, so we have the city and the state. So when I pass to the function up here, I need two arguments, right? One is the city, one is the AZ for state, and then the far goal here would be the code, okay? So if this works, then if I click on Wisconsin, it changes both of those and so forth. Okay, so you can see how it can pass data this way. Of course, you can do this in different ways. This is fine, how it is, you can pass this as an array, this whole thing could be an array instead of the way I have it here, because what are these list growth and stringing growth, right? How do you do that? And population and so forth. If you do that, then using an orator object, but if it's just two arguments, this will grow. So instead of having this approach, you can also do this, you click arguments, and then you can condense it using the rest operator, right? Build that into an array. And so here I would say arguments of zero is the city and the arguments of two is the state, and then three and a fourth and so on, okay? So you can see it's just a work just like before, okay? So now you'd have one argument, right? The rest operator is really useful in this case. All right, so you can see how we pass data down to the child components via properties. It can also pass function down as properties, and we also create custom events in the child component and we trigger that inside the tag here via an event listener directly on the tag. This is an inline event registration, and we bind that here in the child, the tag, okay? So this one here, you have to pass it down. This you pass up basically. So I hope this is helpful. Now, the next I wanna show you is, how do you convert this? What does it look like when you use a options API? This is decomposition, okay? So both they can work in a change of blade, meaning this component can be options. This could be a composition and so forth. It doesn't really matter. We just don't wanna combine together. It's really confusing. So let's say I wanted to convert this to a options API, okay? So here is what you do, which is easier. Probably this one, so it has function, things like that. So that's good. I'll put some space in here so you can see. So the things down here will be the same. We're not gonna touch this. It just, the code up here is different, okay? So the input will stay the same and this set up will be removed. So as long as you do that, the whole thing crash on the right side, that's okay. And this whole thing has to be inside the object, okay? So what you do is you create a, you export this as a default object like this, okay? This is the root component, right? So we'll not receive any data. So the thing that you have, I mean, any props, right? You have the data. We have two data fields. This is a data fields you have. So you put here the data. It's a function, by the way. It has to be a function, otherwise it won't work. You can use the function this way or you can use the function expression like this. That's fine too. I mean, not like that. Okay, that's okay too. It just cannot be error function. Error function doesn't work in this case because it does not bind to this thing, okay? So we return that data. So these two data will be inside here. So let's move this inside here. We'll convert these because it doesn't let you use those cons anymore. We have a object using colon. We don't have the reference. You don't need that anymore. And then see if you can see how this actually works. It's an object now, right? So you get a data set. This is a function. So this function here actually goes inside here as well under inside the methods property. You put it right inside here, okay? And let me clean up this a little bit. So the function update. So you can't use that here. It has to be update and then, okay. So because we're using this approach, when you access this data, we don't have to value anymore. Just the regular data like this. And then you also have to use the keyword this to reference those. All these fields here must reference with this keyword. Otherwise, it's not reachable. So this, and then also this it is, so I can see it. And let's see what else. Let's see object data here. Okay, so almost done. Notice I mentioned before that we import the hello world component or this one too. If you use them, you have to register them. If you don't register them, this is not gonna work when I use it here. So if I press the F tool key, it's gonna tell you something, okay? So it says, so you can see it doesn't show up, right? It doesn't register this. It doesn't know what this is. Even though you add this in crash, it's just not gonna render it. So you have to register that through a property called components, plural. And you against object, right? At this object here, that's why it's called options. And then let's put it up here, it's nicer. And then I will register the hello world component and the welcome just in case we're gonna use that as well. Okay, so as soon as I register that you see, everything comes back to life again. Okay, so now everything should work as normal. Go back and do them as before, okay? So this is the options API approach and this is the composition approach. Just a little bit different how you set up there. But the code in the body here is still the same, okay? So take your pick, right? Whichever you like it to use it, go with that. Okay, so I hope this is helpful. In the next video, we're gonna do something similar except we'll use the CDN version. Thank you and have any questions, please let me know. Bye now.