his to us and thank the staff for its quick criteria in getting this together. How long did, if we wanted to come back and review what has been discussed, how long would you like a lead time? It would be great to maybe have come back in three months or I don't know how long it might take. I'd hope we could come back sooner than that. My intention would be like 45 days, something like that. I'd like to set a date, a time specific and that you could come back within 45 days and whatever that next, that board meeting falls, however that falls. It would be your May 14th meeting. May 14th, thank you. If you accept that and I just want to thank, I think we have tremendous examples, an example here really, thanks to Valerie Corallen and WAM. I think this puts in great positions. We know how to do it and our VFW2 has also done, veterans have done so much for this too. I think we're gonna be in a great position to provide some compassionate services that are much needed in this area. So I appreciate board members, the staff and those who've led us by example. So we have, we can show them, this is how we should do it and it's how successful it's been. So I want to thank them. Motion? Yeah. So I'd be prepared to move the recommended actions, ask that our staff come back on at our May 14th meeting with more specific criteria, both around compassionate care and the inclusion of minorities or disproportionately affected communities Motion? We got a motion by Leopold and a second by Friend. All those in favor, please say aye. Aye. Opposed? That passes unanimously. So now, now we are moving on to item, formerly item 35, which was pulled by Supervisor McPherson to approve the release of the RFP, request for proposals for a transfer, recycling center operation services at the point of us to landfill and the Ben Lohman Transfer Station and direct public works to return on or before June 25th, 2019 with a recommendation for award of contract and take related actions as recommended by the deputy CAO and the director of public works. And so I think, Supervisor McPherson. Yeah, I think I have some comments that I do want to make that I know some folks from Valley Women's Club that has been operating these recycling centers up in the center of Valley. I'd like to hear from them first if we could and then move from there. Sounds great. So now we will open public comment. Thank you, Bruce. We want to hear the whole thing now. Good morning, I'm Nancy Macy. I live in Boulder Creek and I was among the Valley Women's Club members who helped found the very, very, very first recycling centers in the center, a drop off once a month in Boulder Creek in 1978. And I was honored to be founding director of the SLV Redemption Recycling Centers, a service of the Valley Women's Club in three locations in the San Lorenzo Valley. The job has been, was and has been an exciting challenge because everything was new, everything kept changing and it grew very fast. For a time we were proud to help the county in meeting its state required diversion goals by providing convenient round the clock drop off opportunities coupled with the chance for locals to cash in their CRV beverage containers. We were really grateful to all the markets who agreed to cash the script and hang on to it for a month and send us a monthly bill so we didn't have to have cash at the sites. What a benefit that has been. They've been doing it for 30 years. We were happy to accept when asked by the county to accept more materials because it met our own environmental goals. We were grateful when offered a contract to help with costs of handling and transporting those additional materials because they had low or negative value. We were excited to take on the challenge of operating the much larger recycling operations for the Ben Loma Transfer Station when the county asked us to do so. We were happy to hire more men and women to operate the sites providing training in both basic skills like operating a calculator and more advanced skills like operating a forklift making repairs and handling challenging materials using complex processing equipment from bailers to free on extraction systems. We were especially glad to provide jobs that became careers for many of our team of employees. Now I am retired. I'm honored and proud that the SLV Redemption Recycling Centers have continued to serve the community in three sites with 24 hour drop off. And I wanna honor the employees whose loyalty and dedication their willingness to whether cuts in hours when needed or being required to move from site to site their ability to perform the complex requirements of the CRSV system and handle and process dangerous materials while providing good service to the community. We are very proud of the monumental amount of materials that have been recycled, thousands and thousands of tons. And we are very proud that we have offered an extraordinary value to the county in providing the services required under our contract. I'm deeply saddened that our team members are facing the loss of their careers and that so many locals will be forced to travel to Santa Cruz or Capitola to redeem their bottles and cans if they can even get there. Thank you. Next speaker. Good afternoon, thanks for having us. My name's Matt Harris. I'm the current director of the SLV Redemption Recycling Centers. I'm here just to speak briefly about the citizenship of the San Lorenzo Valley. Once if we're not able to keep the CRV component in this particular contract coming up, there's roughly 20,000 people that will no longer be able to take their CRV and actually have it cashed. So there's gonna be a huge deficit up in North County and it's actually gonna fall squarely on Costco. They're the next defense line. Also to kind of harken back, I've been with the Valley Women's Club for 25 years. I started out at 25 years old at $5 an hour. The Valley Women's Club takes chance on people like me that have learning disabilities that are dyslexic. And it's really nice to be able to bring other like-minded people together, give them a skill, give them a place to work, and give them a voice in the community. And I really can't put too strong of an emphasis on that because before Nancy took me on board, I didn't really feel like I was worth much in the workplace because I didn't know how to spell very well or I couldn't add very well. So it was a great place for us to grow and we continue to reach out to folks like that that face the significant challenges like I did and still do and give them a voice and a place to work. So we understand that the state isn't gonna come to our rescue for the CRV, we know that. They're sitting on $320 million that I have desperately tried to reach through legislation, I helped write bills, I've done everything I could possibly do to try to get that money to come down to Santa Cruz County and I have failed. So I say this with the greatest humility, I do urge you all to revisit this and look at the impact that it will have once we close and once we do close, we will be gone. It took 25 years to build this company and it's gonna take a significant amount of time to take it apart. Thank you very much for your time and I really appreciate your consideration. Thank you. Thanks. All right, good afternoon, my name is Wendy Harris-Gewin. I am a resident of Felton and I'm also a board member for the board of directors of the Valley Women's Club which has been operating the recycling centers in Felton, Ben Lohman and Boulder Creek for 30 years. Our board has voted to bid on the new RFP but we're extremely pessimistic about the possibility of continued involvement with the RFP in its current form. Processing recyclables with a CRV or cash redemption is an integral part of the services that we bring people that brings people to our recycling centers. By providing the service, we incentivize people to bring us not only their CRV items but other recyclables that may have otherwise ended up in a landfill or were stumped on the side of our forest roads like we really too often already see. Due to the economics of the recycling market, the standalone CRV center is not currently a viable financial option. It's not a financially viable business model. Therefore, with the likely closing of our recycling centers, there will be no CRV operations anywhere in the San Lorenzo Valley after June 30th, reducing overall CRV redemption locations in Santa Cruz County by almost half from seven centers to four. The majority of those our centers serve our San Lorenzo Valley residents, redeeming their lawful CRV refund and dropping off their recyclables. Many of our residents are low income disabled and we are extremely concerned that these vulnerable members of our community will be unable to obtain the often crucial income they receive from CRV redemption. For many of these community members, getting to Santa Cruz, carrying bags of containers is an insurmountable barrier and loss of these recycling centers will have a drastic impact on their ability to provide for themselves. The Valley Women's Club remains dedicated to our mission of protecting and preserving our environment in the San Lorenzo Valley and beyond. We regret the potential loss of this partnership with the county that has allowed us to provide such an important service. We intend to continue to push for improvements to the current CRV system and to encourage our state legislators to provide new incentives, allowing in-state plastic glass and aluminum processing plants to improve recycling services beyond the CRV system. Hopefully there will be more opportunities in the future for the Valley Women's Club to collaborate with the county around this and other important issues. Thank you. Thank you. Good morning supervisors, Tim Bratt and Gray Bears. Just heard all that. And so we've been doing it for 30 years also with your as your partner at ChanteClear. If you threw a bullseye in the center of the county you'd land about 50 feet from our property. So we're strategically located to provide recycling services. Pound for pound Gray Bears takes in more material than either of the two other facilities in the county. And we do that through both curbside materials and large quantities. We, I think one advantage that centers have is source separation. You get the highest value for what people bring us but also for what you can't put in curbside, which is computers, TVs, right? Electronics, printers. Last year, this year we'll do 190,000 pounds of printers. You can't put those really realistically in a bin. Styrofoam is something that I know is championed by Supervisor Friend. A few years ago we were begged to take it on a grant actually with the Valley Women's Club. Originally we weren't able to put it into operation but we were with help from the community foundation. And this year we'll do 35,000 pounds of this material. Now just to visualize what this material is, it's almost a third of a mile, eight feet by eight feet cube of material that we will densify this year. It densifies it 90 to one. It doesn't biodegrade. It's 500 year life capacity lifespan. And it gets in the ocean really easily. Curbside, you can cram it in your curbside container and it spills out, it gets in the gutters and it goes in the ocean and fish eat it. Now it's in the food chain. It's one plastic that we're able to really provide a really great service for. That is in question now with this decision to defund gray bears. It's not a big grant, it's a critical grant. And I think that when you recognize the value of that in addition in that tonnage figure what's not shown in that recycling is things that we refurbish and resell to mostly predominantly to low income residents. And our thrift are 600 square feet, 150 tons of material goes through there. Very low cost to low income seniors and school age children. So I urge you to reconsider your decision on this or the staff decision and know that all of this work we do sends food out to 4,000 seniors a week in the county and a program also in meals and donated hours of 1,000 volunteers, $89,000 of service to make our programs work. Thanks a lot. Thank you. That concludes public comment.  President Mofferson. Thank you for allowing me to pull this from the agenda. And I want to thank in particular the Valley Women's Club which is in my district for helping Santa Cruz County meet its recycling goals for many, many years. And I want to thank Public Works through facing somewhat from realism and bringing this to the board and a lot has changed and the recycling world as we know and it's certainly not all for the good. The marketplace is really collapsed and the measure in strong measure because China has quit accepting plastics from the United States. We all know that we need to change our recycling programs to adjust to this new reality and recently along with supervisor friend, I supported a resolution to the state supporting the formation of a recycling commission to figure out some solutions. And I think the state could help us out and not put us in this predicament that we're in today but it is what it is. And we have to realize that for many years the Valley Women's Club has offered fantastic public service to the residents of the sentiments of Valley and Felton and Ben Lohman and Boulder Creek with some recycling centers and as well as Gray Bears who we really appreciate the amazing service that they have done and supporting the meals for seniors. Meanwhile, our Public Works Department which has helped to supplement these local operations for many years is already challenged by limited state and federal funding to address other facets of its duties particularly on roads and other priorities. And while this is an opportunity for realizing, to rethink these ideas, I think we do have, I do have a few concerns on how we're gonna try to solve them here. And they're really in three different segments and the first one is environmental. And I'm speaking particularly to the Santa Rosa Valley. Losing Felton and Boulder Creek drop off sites could lead to more illegal dumping and litter and we have discussed that at the board and tried to meet that challenge as best we can. But I'm afraid that this could even more, could cost even more to our county for abatement and code enforcement. So environmental is one of them. Economic, which has been mentioned already. We have several low income families in the valleys that rely on CRV. And if the county is no longer going to support that service, what are the options of these folks to obtain that? And what will happen to local retailers if the CRV goes away? I'm also worried about the people losing their jobs as was mentioned. If the current organizations do not receive the contracts that are proposed today. And data, we need some data about the amount of material recycled at the satellite sites because if those centers close, we'll have much more recycled material that to point of us to Ben Lohman. So I would like to, I'm gonna support moving ahead with this because our recycling centers are expiring and contracts are expiring on June 30th. And we have some purchasing guidelines that we must follow if we want to provide the services that we desire in the future. But I'd like to make three recommendations. And I've given the clerk a copy of this proposal. Number one, when a contract comes to the board for adoption, I'd like to see an analysis of the potential impacts to the environment of removing two recycling sites in the Santa Rosa Valley, Felton and Boulder Creek, as well as an analysis of the potential impact in the local community of losing CRV. Two, I'd also like data to be made available to the board about the tonnage of recycled materials collected at Felton, Boulder Creek and Chanticleer, which are the three sites that could close as a result of this request for proposal. And finally, number three, I'd also like the evaluation criteria for awarding the contract to include a scoring preference for proposals that agree to offer employment to all qualified displaced workers. The people that have worked at these sites are phenomenal. They have provided a tremendous public service. They love what they do. They see it as a public service and really having a really positive impact on protecting our environment. So with that direction, I would like to move adoption of, I'd like to move this recommendation with the additional directives that I have mentioned in this. Second. So you got a motion by McPherson and a second by Leopold. I get clarification on what you've given the clerk of the board, Supervisor McPherson. You have three, closing three of them. Just to restate, it's my understanding that you have a, move the staff recommendation. I understand, but he wrote what he said where it's slightly different. He said what you read into it was slightly different. I thought it was delivered to you. Okay, so it's actually three. The three satellite centers in the San Lorenzo Valley in the mid-county. Okay, thank you for clarification. And that's okay with the second. Okay, so we got a motion and a second. Any further discussion? Supervisor Leopold. Thank you, Chair. Thank you, Supervisor McPherson for adding these additional pieces on here. I think they're critically important. We, the community has led the county when it comes to recycling. The county has a great, robust program, but it was programs like Value Women's Club and Shana Clear who have been on the front end of this movement about recycle and reuse. And they've been great partners. And in addition to their work in terms of diverting material from our landfill, they also provide additional public benefit. I'm less familiar with Value Women's Club although I know their environmental work in the valley is extraordinary, but I know that Gray Bears provides critical resources to seniors who live in our county, throughout the county. And their model of recycle and reuse has been core to not only their environmental ethos, but their economic model to be able to support all the good work that's going on. I'm also concerned about the possibility of losing the recycling center at the Shana Clear site. This board has been supportive of lots of different things to address congestion in our community. But anybody knows, if you can't go to Shana Clear and now you have to drive down to South County to deliver your materials and much worse even from other parts of the county, you're committing a significant amount of time and adding to the congestion on our roads. And so a mid-county transfer site actually works out very well for many different people. I appreciate the work that the department has done to meet with Gray Bears to talk about the RFP to encourage creativity in the response to that RFP and their willingness to look at what we talked about as a holistic program rather than just these couple of different elements. We wanna be very careful as we make changes to these contracts because as was pointed out by the speakers, once you lose these kind of community-based programs, they don't just spring up on their own. It's taken years for these programs to be successful and to have the different pieces in there. So looking at these, both environmental impacts and other impacts to the community will be critically important. Lastly, should there be a change of vendors at any of these sites, trying to make sure that qualified workers who are already working there have positions with the new vendor is also important. I know that we included that as part of our look when we looked at our waste services contract. That's common and I think it's important to be able to assure that people who've made a lifelong commitment and that are qualified might be able to keep their jobs. So I strongly support this and I encourage my colleagues to join us. Any other comments? I'll just, I'll make it quick. Yeah, thank you. Shanta Claire is another, it's a term, that's the gray bears run that. And they're doing a great program. I think it's actually bringing in more money than it actually costs to operate, am I correct? It's bringing in, but I mean, it's not, how much is it? Sorry, Tim. Yeah, I ask, yeah. So are you referring to the recycling operation? We're currently, it's been a rough year and it was even rougher in 2008 when cardboard was even half of what it is now. We were all doing the same way, but today we're gonna lose probably somewhere in the vicinity north of about 90 to $100,000 in the recycling operation alone at Shanta Claire. Not included in the RFP is the two items I discussed earlier, electronics and styrofoam. And those are, they take up a lot of space, especially styrofoam. It's turned out that it's a whole thing on its own. And so it's been a cost center for us. It loses a lot in that equation. Okay. So. Let's see your point. Okay, what about the Valley, the Valley women's as far as? Sorry, it wasn't able to hear. Once we crunched our numbers, about 40,000 that we lost. And largely in part that's due to the new imposed tariffs China backing out, even some CRB components we're actually having to pay a bit for. So it's, you know, I have to kind of touch upon this that this is not a money making endeavor. We look at it as a nonprofit side, as long as we're self-sustaining with our partners, the County of Santa Cruz and others. You know, it's worth doing. So does that answer your question? Yes, that's fine. Thanks very much. I appreciate all the work you're doing. Thank you. So we have a motion and we have a second. I'll ask all those in favor. Please say aye. Aye. Opposed? That passes unanimously. Thank you for coming out today and thank you for your patience in waiting to testify. I appreciate it. Thanks for having us. So now we're moving on to item number 10, which is to consider ordinance repealing chapter 4.12 of the Santa Cruz County Code and amending chapters 1.05, 2.16, 2.46, 2.22, 2.84, 4.16, 4.27, 4.28, 4.36, 4.40, 4.50, 4.60, 5.40, 5.41, 5.48 and 5.62 of the Santa Cruz County Code to correct typographic errors, address organizational issues, align the code with changes to state law and delete unnecessary materials to make additional miscellaneous changes as outlined in the memorandum of the County Council. And just for those who may be watching at home, this is a cleanup exercise we're doing to ensure that our County Code reflects current law and practices and Jason Heath is here to answer any questions that we might have. Good afternoon. Jason Heath of County Council's office. This is the sixth iteration of the County Code update ordinances. We are trying to remove superfluous language from the County Code and update it to comply with changes that have been made to state law and the like. This time we are asking for repeal of chapter 4.12, is that duplicate state law? And we are also asking for some miscellaneous changes to settlement authority. If you have any questions, I'm happy to answer them. Any questions? Just one quick question. I know that we've gotten rid of some pieces that are superfluous on the bag ordinance, plastic bag ordinance 5.48. We still have what people were charged for bags in the initial startup of the ordinance. I don't know if there was a reason or just to show that as a model or it's in 5.48.020. Give me just one second to get there. So I'm at 5.48.020, I'm at packet page 141. Can you direct me to where you are? Now the revised B, during the period of time starting on the date of the ordinance codified in this chapter takes effect. And continuing for one year thereafter. That language staff did not impart to me that they had any changes to the amount that we're charging for the bags. If you have, if your board is interested in changing the amount. No, that's not what I was suggesting. I apologize for not being clear. The what we did when we instituted an ordinance and what it says here is in that, in the first year we're only gonna charge 10 cents for someone needing a bag. And then after that we're gonna charge 25 cents. And so the question I had is why do we keep the first part in there? And my answer is that there's no good reason to do that. And so what I'll do is I will, in the seventh county code ordinance, which I know you're waiting patiently for, I will include that. Okay, I just noticed that when I'm reading it out, I'm fascinated by reading all these ordinances. Thank you. That makes one of us. Yeah. So, okay. Some of us are wonks. Are there any public comments on this? Seeing none, I'll bring it back to the board. I would move the recommended actions. Motion by Leopold, second by Caput. All those in favor, please say aye. Aye. Aye. Opposed, that passes unanimously. Moving on, we're on item number 10.1 to consider the final reappointment of Andy Schifrin to the Housing Authority Board of Commissioners as an out-large representative for a term to expire March 17th, 2023. I move approval. Got a motion by Leopold and a second by Friend. Any public comments? Seeing none, bring it back to the board. All those in favor, please say aye. Aye. Aye. Any opposed, that passes unanimously. We'll now be moving into closed session. Will there be any reportable action? No. All right, thank you.


Oh, hello! I didn't see you there because I'm in a video. I'm just out driving my foreign-owned boat ship. But not between American ports, because of a little thing called the Jones Act. A hundred-year-old protectionist law that makes traffic worse and stuff more expensive. Not to be confused with the Davy Jones Act, which requires that all haunted pirates live on the floor of the ocean, or the Alex Jones Act, which requires everyone to wear protective headfoil when discussing frog genders. No, the Jones Act requires that any vessel sailing between American ports must be American-built, American-owned, manned by an American crew flying the American flag. If your ship has a maple leaf on it, or a falcon strangling an eel, or whatever this guy's up to, you cannot go between American ports to sell us cheap stuff from your country, or even transport stuff from our country to other parts of our country. The Jones Act regulates cabotage, which, prior to this video, I assumed was some kind of floating cabbage. But it turns out no. Cabotage is the act of shipping goods between two ports within the same country. So if you want to sail from Denver to Las Vegas on a foreign ship, you'd be a moron, because the Jones Act restricts cabotage to American vessels. By limiting which ships can schlep stuff in between our ports, it makes shipping more expensive, which makes stuff more expensive. Particularly for places like Hawaii, Puerto Rico, Guam, or any new floaty states I haven't got around to learning about yet. The Jones Act exists under the pretense of national defense, because of Germans. During World War I, European commercial ships normally used to transport pop hats and lobbing them to feed hungry Americans, not got yanked out from our shipping lanes to assist the war effort.  Don't worry, we got him. After the war, the United States got worried that a global interconnected economy, like the one we currently enjoy, which has lifted billions out of poverty, would mean having to rely on foreign ships, which might suddenly skip out on commercial shipping during the inevitable return of a zombie Franz Ferdinand. Yet, American politicians fretted that the next time we went to a war on a distant continent, we might not have enough ships to transport cannons or horses or horse cannons. We needed to figure out a way to ensure we had enough American ships to get in on that horse war. So, we passed the Jones Act in 1920, forbidding foreign ships from operating between our ports. It's the economic equivalent of saying, Jiffy Lube closed once, so we'd all better learn how to change our own oil. So let's pay in Jiffy Lube, in case it closes again. The Jones Act and the little tweaks we've added to it over the years is rife with protectionism. When American-owned ships are repaired, only 10% of the steel can be foreign. 90% of that steel better be from the United States. Foreign steel is too flimsy and too foreign. It's basically shiny cheese. Protectionism has a big problem, though. It doesn't work. By outlawing foreign ships from cabotage, the Jones Act limits the amount of available ships, which drives up the cost of shipping. Climbing up the cost of shipping makes shipping more expensive. That would be the supply of law and demand. With less demand for shipping, shipping companies purchase fewer vessels, which means fewer boats next time we go to war with Zombie Horse, France for a demand. The Jones Act not only requires that vessels undergoing cabotage be American-owned, it also requires that they be American-made, which means if you want to fly old stripy on your boat, that freighter better be built in the United States. American-built coastal and feeder ships cost between $190 million and $250 million, whereas the cost of a similar vessel of a foreign shipyard is only $30 million. So the American companies, which the Jones Act theoretically wants to call upon next time we go to horse war, can only buy one American ship instead of eight foreign ships. Just a friendly reminder, ships are inanimate objects and it doesn't matter where they're built. They don't have accents or passports or souls. All things being equally floating buy the ship that's cheapest and hoist a flag of your choice. In the United States, where we restrict cabotage, only 2% of our freight travels by sea, whereas in the European Union, where member states can freely engage in cabotage between them, or as they call it, cabotage au toit, 40% of freighting is done by ship. Instead, because we've made shipping more costly, we rely on trucks, which are more expensive and carbon-intensive than ships. Also, I don't know about you. We have never been stuck behind a steamship on I-95 before. The Jones Act exists to try to expand our shipping capacity and make us self-reliant, unlike the Nora Jones Act, which is the soundtrack I cry to in the bathtub. Anyway, we're a net exporter of natural gas, and yet in 2019, because there weren't enough pipes to transport natural gas from southern states to Massachusetts, nor enough Jones Act-compliant vessels to do so, Massachusetts had to import it from Russia. Whenever we have a crisis, the United States government temporarily resends the Jones Act so that shippers can cheaply and quickly get food and materials and lob them into the affected area. Then, when the crisis recedes, we reinstate it. The reason that stopping the Jones Act works during these times is because, follow me here, the Jones Act doesn't work. So why not permanently scrap it? Well, that's because of lobbyists. That's why. Lobbyists! According to a 2019 study by the OECD, the U.S. economic gains would be somewhere between $19 billion and $64 billion. Now, I realized that $64 billion isn't even worth a senator getting out of bed for anymore, but somebody has to keep an eye on the pocket change. Given that the Jones Act counter-productively shrinks our shipping capacity and merchant-mariner fleet makes life more expensive for islanders and is directly and obviously harmful every single time we have a hurricane or Godzilla attack, in that time we scrap it.


How's Steph Hong going? Yeah, OK. So my name is Richard Moore. I go by Rikmoo Online. And so I write an Ethereum library called ethers.js. So what is ethers? It aims to be a complete, compact, and friendly Ethereum library that developers can use. But also, part of user friendliness is safety.  So one of the cool things is the default provider. I don't know where I should stand. So the default provider will haul. Basically, it lets you just connect to Ethereum. Historically, you had to either run a node, or you have to sign up for an Ethereum. You have to do something to start using Ethereum right away.  And right off the bat, you can just connect to Ethereum and start doing simple things. It's heavily throttled, but you can at least do something before deciding whether you want to, like, get your own inferior ID and all that. This is all the old stuff, so I'm going to go over quickly. It's written in TypeScript now. Very few dependencies. 26,000 in growing test cases. ENS is a first-class citizen. Everything, including all dependencies, are MIT licensed. And there's extensive documentation. And in v6, the documentation is getting much better. And an important thing is to understand, like, I made ethers because it's something I needed, and it's something that I use a lot. And so I mean, it's in my best interest to keep it getting better over time, and that sort of thing. I think dogfooding is very important to keeping a library good, otherwise, you get a library. It's very good at Hello World, but very difficult at anything more complex. So getting into the new things, then v6, that's coming out. There's currently a v6 available, both on MPM and GitHub. It's still very beta, but it's there to try out. So one of the biggest features is modern ES features. Currently, v5, it targets ES3. So if you are trying to run ethers in IE3 from 2002, it'll probably still work mostly. But that's no longer a priority. And so the goal is to start adding kind of like new age JavaScript things. Heavily reduces the code size because rather than having this big class for big numbers, you can actually just use the built-in big numbers that JavaScript now provides you. So I mean, you can now use the equals, equals, equals sign, which is super exciting. If you want to use a big number, you just put an N on the end, and that tells JavaScript this number should be treated as a big literal. Don't go doing IEEE 754 truncation to it, and that sort of thing. I'm going to try to go through this faster-ish. If I'm talking fast, let me know. But basically, it'd be nice to get to the end so people who have questions can ask questions. So another really cool feature that modern JS offers is proxies. For those that don't know, proxies basically are an object. And if you call a property that doesn't exist, code gets to run first and decide whether or not it should let you think something exists and continue. So this heavily improves how the contract object works. Historically, if you had a ABI with multiple different signatures for different methods, it really required you to understand all the rules for how formatting works to normalize a signature in order to access it. So now you can do whatever you want. So basically, you can have all sorts of white space, extra little letters, and whatnot in there. And this will all figured out at runtime and map it back into that and get the right thing for you. Basically, for all those people who've ever had duplicate ABI definition errors and have filed an issue saying, how do I get rid of them? This is for you. Typed values are another cool thing. So going back to the same situation where you have two different methods, foo and foo, and they take in different things. In v5, there's no way for it to know which one if you pass into parameters. An address looks very much like a number, a 160-bit number, but it looks like a number. There's no way for ethers to actually know which one you meant to call. And so now you can do, yeah, so this would be an error. It doesn't know what this is. This looks like it could be a number.  So now you can force it and tell it that it's a typed object of an address. And then if you do this, it'll automatically know, oh, this is the one you wanted. So again, really cool things we can do. This is sort of related to proxies, but kind of its own thing.  And so for example, you've got transfer from. It's got a from, a to, and a value. So this is how you would do it in v5. You can still do this in v6, this works fine, using positional parameters. For those that are used to Python, they call them positional versus keywords. But now you can also do typed.keywords and pass in a from, a to, and a value. And it knows that those things should get deconstructed into the from, to, and some value. This order doesn't matter either. If you wanted to construct this object from a bunch of other lines of code, reading stuff in, you can just build an object up and add a to if it's not null, and add a this if it's not that. And then it's off to the races. Okay, another big thing is things are now classes. Okay, I'm down to 19 minutes. So things have class, basically. Oh yeah, so I'll dive into this a bit more because I think this is a really cool feature in general of something we should be doing more in Solidity. This is kind of steering away from ether specifically into more Solidity generically.  It's not a class. It's just an object with the values r, s, and v. And that's all you get. By making it a class, it can take in an anything, whether it's a like a raw signature or whether it's an r, s, and y parity, r, s, and v, r and y parity and r, r and y parity and s, whatever random combination of things you have feed it in. It'll figure it out, it'll give you back the signature you want. And then if you do something like update a value, if you said, for example, sig dot y parity equals zero, and it used to be one, it'll also change the v for you. It'll update all the y parity and s. It'll reflect all the changes so that the signature stays consistent, which means so you can get all the stuff out of it. And that sort of thing, but the cool thing I want to show off is, maybe I'll come back to this in a second. That's how things are done today. Maybe I will explain this quickly. So these other things are basically done today. So this is basically people that pass in a signature for solidity, for doing EC recover on. They pass in a bytes or they deconstruct it themselves. So that'll be the third slide for now. But they'll pass this bytes object in and then you've got this expensive, weird byte manipulation library. I mean, it's well written, it's by Open Zeppelin, I think, but you're doing a bunch of string manipulation on byte arrays to figure out where the RS and V sit. It's also a huge amount of data otherwise. And then this is what your code looks like. The cool thing with these new things are a class. You could, for example, in your code, have a signature that has an R and S and a V. And then you can just use the sig type from the struct. And this is your EC recover. So historically, you might have also seen a verify that takes in a byte32, digest a bytes32 V, bytes, sorry, bytes, you went eight V, bytes32 R, bytes32 S, and go off the races. But with this, you can kind of pack them all together. This is the same size for the ABI point of view. And then you just pass in the signature. And because it's a class, when it's starting to build out that encoded piece of information, it knows to take the R and pack it together with the S and pack it out the V in a nice compact format and then you're off to the races. So one important thing to note with this in the next slide is this line here does not change. And so you see, you're still creating a signature, you're just passing the signature in verbatim, and yeah, basically it's because the ABI is encoding it, it can look at this object and figure out, okay, I need to take the difference in this case is the R and the Y parity and S. For those that aren't familiar with EIP 2098, basically this allows you, signatures are much bigger than they need to be, so basically you're used to RS and V. That V is actually just one bit. And thanks to Homestead, every S value in Ethereum is actually always got the top bit set to zero. So we kind of just slot that in. And now your signatures are 60, 30% smaller. And yeah, again, feel free to ask questions because these are gonna be a little complicated, but you need a little bit more math to help decouple that. I'm gonna bug the Solidity guys to see if we can kind of get this built more into Solidity, so you can just pass in the signature directly. But in the meantime, this is still much simpler than the couple dozen of lines of byte manipulation libraries that's going on if you're passing the bytes. So quick comparison, so if you use the raw bytes like most people do today, it's 160 bytes, which is by itself, just for the call data, is 1,444 gas, expensive, da-da-da-da. So if you use decompose, that's 96 bytes, but if you use the compact representation, 64 bytes. Yeah, I'm not gonna go into more than that. That was just a quick thing for people who are looking at the slides afterwards.  Yes, basically, when you have just an object and you set some property on it, you're only updating that property. With this, when you set a property, it sets that property but also updates all the entangled properties. For example, if you set the gas price, then the serialized version of that transaction should update. And you can just set things. You can set them to anything that's valid. So in this case, I'm using a big int, but you could pass it a string, you could pass in a hex string, you pass in pretty much anything you want that makes sense for a max fee per gas, and it'll be reflected. 13 minutes bits. So this is just a little odds and ends of random things. So pausing providers. So for example, a lot of people find that people keep their customers keep their app open in a tab that they're not even looking at anymore, which means that their events are still firing, it's still hitting the infira, gobbling up all their requests. Well, because there's now these visibility APIs available in browsers, you can tell ethers, by the way, when I'm not visible anymore, pause the provider. That way, if they go to another page for a week and then they find that tab that's left around from like a week ago or a month ago or we all have really old tabs, this way, they haven't been consuming your bandwidth every time that you've been, they've been doing nothing with your site. So you can pause your provider, and then when the tab becomes visible again, you can resume, and you get the choice of whether you want to replay all the events that would have happened during the time that was paused or whether you kind of want to just drop them and keep on going. Both situations have like valid use cases, so up to your own personal use case. The cool thing with this feature is because we can now pause and unpause providers, all the underlying API and framework changes that went into making this happen, it means that if you have, for example, a WebSocket and the WebSocket disconnects, it can now reconnect and resubscribe to all your events before it starts feeding you the new events that start coming in, it can actually get the events that happened from the time it disconnected to the time that is now.  And odds and ends, I'll just go over these quickly. Basically networks are now a plugin, they have a plugin system. There's a lot of really strange networks out there and I always get like requests saying like, oh, my network computes hashes in this strange way or my network doesn't have an author in the block or this sort of thing or the other. So this makes it possible that ethers can stop capitulating to each of these individual things and all those oddities, which are fine. I mean, competition in the ecosystem is good, but then we can push all those differences into the network object and let it handle it. And package exports, I'm moving away from a mono repo which uses a bajillion sub-packages all by ethers because it used to be like at ethersproject slash ABI at ethersproject slash providers and that sort of thing. Package exports are awesome, they're supported by all major bundlers now and it means that there's no complicated weird process going on for ethers build. For those who've used ethers or tried modifying ethers at all, the build process is absolutely insane because I try to target, again, ES3 and React and I try to build for everything and as a result, people who are using more modern utilities like people complain about Vite a lot or if you're trying to build a bundle for Node, it just fails. So the nice thing is by using package exports, instead of all these crazy custom scripts, it just kind of works with all these tools and everyone's happier. I hope we'll see that after I launch the non-beta. There's better and fewer dependencies, I'm actually gonna grab a bit of water. So yes, there's basically, I think I'm at five dependencies-ish right now but down to four authors, which is an important thing. I feel like we've all recently been pretty worried about supply chain attacks going on from MPM installing a bajillion things and so right now, there's four well-established authors that are responsible for all the libraries, so there's me, I actually myself well-established. There's Paul Miller, who does an awesome library for hashing and for signing and Microsoft writes TSlib, it's a tiny little thing, it just helps save some space and there's a popular WebSocket library that works in Node. If you're using a browser, you don't have to use that one, so now you're down to three authors and four dependencies. And it saves me a lot of work as well because there's so many times where Elliptic has some bug in it and I'm trying to track down him to get him to update things and once that's fixed, I now update everything and put a new build out, so the fewer dependencies, the happier my life is as well. And that's all I've got. I've got nine minutes for questions, if anyone has questions, oh, and come find me afterwards, I've got these little, like, aha, I brought one up. For anyone who's curious about v6, I've actually started to write, oh, I should explain that, so yes, basically I'm trying to write a bunch of little apps right now against v6 to help test it, so this one's actually found quite a few bugs already. It's an NFT, it's got a little scratch-off hologram when you scratch it off, you can scan it and claim it and you can fold your little papercraft robot up and do this and then take pictures of him and post it into the contract and you can, I'm thinking of more of that little gnome from Amelie, you can take it around and show you that this thing's visited different places. Right now it's going to deploy to DeGorley for anyone who actually goes through the effort of submitting this. I will be migrating your tokens to Mainnet. If you wanna wait till the Mainnet version launches, the same QR codes will work on Mainnet and you can claim it there. So that's just like a little demo I'm flooring together to test and make sure v6 works and it's definitely not ready for production as it stands right now, but it's getting closer and I'll probably be doing a few more little weird projects like this just to kind of like find those little foibles and things that happened during the last two years worth of rewriting and rewriting and rewriting. So I've got seven minutes, 49 seconds left for any questions out there. I don't know where we'd be without you. Like, open source hero. Thank you. At this point in the state of Ethereum, at this point in the state of Ether's, what kind of support are you getting in terms of like audit help, especially as we see more like front end attacks and things like that right where it's like, you know, smart contract auditing is important but the interaction layer is equally as important, especially now as people are getting more clever, like, you know, not to throw shade, but you know, like when I saw string normalization for ABI calls, you know, I instantly thought like just made me like uncomfortable in my gut of like different things that could happen. So just curious like who's helping you audit, who's helping you kind of like comb through this code and go through different edge cases and things like that. Right, so basically auditing is all done by me, which is terrible right now. One of the cool things though is between, I've got like, the EF helps sponsor me. I get GitHub grants, get coin, get coin grants, a few sponsors. And so now I'm starting to develop an endowment. So I am hoping to be able to get like a proper audit at some point. There was one team at one point that was going to formally verify a bunch of things. Close to. I haven't heard from them in a while. So I don't know if that's still a thing, but I think form over, I don't, I'm on the fence with formal verification. Like it helps in some regards, but it's not a magic bullet. I think absolutely like proper auditing would work.  I don't want issues to happen. So I feel like tests, I mean tests can only find the presence of bugs, not the absence of bugs. So I mean, it's a great question. Talk to me afterwards if you've got some ideas. I'm starting to get some money off to the side now that I can actually start throwing if you know any like auditing firms that do TypeScript. What you mean? Should definitely pay for auditing. Those people are so skilled and valuable. Oh, okay, sure.  I mean, thank you, GetCoin. GetCoin's been awesome. So. I was wondering if you are gonna add batch transactions in this version. Sorry, it's a little bit hard to hear with the echo. Are you guys know about batch JSON RPC? Batch transactions, sorry. Oh, batch transactions. What you mean by batch transactions? Like via smart contract wallets? Like by, you mean through smart contracts or? Yes. Yeah, yeah, yeah. I mean that already works. You just need the ABI for it. There's not currently in Ethereum an official like batch standard, but you can do it with smart contracts. Like smart contract wallets. Like an OSIS SAFE, for example, allows you to send mobile. Is that what you mean? Like being able to send multiple transactions at once and atomic, atomically? I have an application and I was, I want to send a batch of transactions in my node application. Not through contracts. Okay, not through contracts. So you can't currently in Ethereum in general send multiple transactions atomically or at once. You basically, if you will have a bunch of transactions you're trying to send serially, so the NONTS manager already does that. Basically it's a wrapper that goes around a signer and you can just quickly fire off transactions and it will automatically bump up the NONTS from the initial NONTS it fetched. There are some issues with that as well if you just flood the mem pool with a bunch of transactions from the same address that are all serialized. It could be seen from the network's point of view as a DOS attack and so it might drop them. So that's a feature I want to add to the NONTS manager in v6 as well is kind of the ability to rebroadcast or whenever something succeeds, kind of like have a callback that lets you know something succeeded. And so you can kind of nudge or tell it to rebroadcast the transactions that are still around. Hey Richard, I can't understate how useful what you did for the whole Theorem community. We use what you do every single day back and front and everywhere. So thanks for that. Thank you. That's it. Thank you. Thank you. Thanks. Yeah, that's all right. So yeah, more than deserved. One question about philosophy and this is going to be very specific on being that guy, but one thing that ethers has a philosophy is really the how it returns undefined and actually it doesn't return undefined for waiting for transactions. And we actually talked once in one of the PRs of TypeScript really giving the option of returning undefined when it turns action. You wait on it and it doesn't return anything, for example. And you mentioned that that's not really part of the philosophy of how you're building the types for ethers. Sorry, I missed that last part. So you mean we set a transaction and you get back null or? Well, let's say it's a hash that doesn't exist. Okay. What is the philosophy of ethers returning that? Would it be undefined? In their case, the TypeScript for that doesn't contain undefined. It always says it's- Oh, I know what you're talking about now. Okay, so that's a big thing in v6 as well. I should have probably put on the odds and ends. Okay, so- We four came for exactly that, so. Right, okay, so for a quick background, basically ethers v5 was started two years ago. I was still kind of learning TypeScript. It did not have strict null checks enabled, which basically means anything that returns anything. I'll return that anything or null. And so in v6, I've got strict null typing and strict null check type. Whatever, what the plague is, it's enabled. And so, for example, the provider's method for get transaction, the return type is null or transaction response. Whereas in v5, it was just transaction response and I just trusted people knew that it could be null, but don't worry about it. So yes, v6 has been fixed. It helps fix a lot of people's libraries as well that are dependent on it and are kind of crawling into the ethers tree to run their linking rules. So yes, that's absolutely changed. And will there be backwards compatibility between those new big int type and the old big number type? Like, will big int be big number-ish? Sorry, will what be big number-ish? Add the new big int type. Oh yes, for input types, you mean? Yeah. Yes, there's still a big number-ish type because, like so for example, the slide up there that demonstrated, I lost the clicker, the slide that shows you like the transaction dot max gas equals, so that takes in a big number-ish. So you can pass in a big int, you can pass in a string that happens to be decimal number, you can pass in a string that's a hex number that'll all be munged into a big int type, but you can still pass anything, anything that's not ambiguous, ethers will accept. It will not accept things that it can't possibly interpret, like for example non-zero x prefixed things, because if it did that, it wouldn't know whether one one was hexadecimal 17 or binary 11, and so it requires you to be completely non-ambiguous. So if you pass in a string that's one one, it's going to assume it's decimal. But yes, it's still a big number-ish. And there's functions as well for your own purposes that will convert any big number-ish into a big number, or any numeric, which is another type that it now has, into a number. Thank you, thank you. Thank you.


so this is a question that is answered that will be answered tomorrow tomorrow uh so in the morning you will have lecture about relaxation about variable cellular relaxation about nap and then in the afternoon in the hands-on session Ari will present will present the relaxation variable cellular relaxations and and also nap calculation and now I think here the answer depends if you are calculating let's say like with the silicon or aluminum or or iron which are cubic structures right so we can just scan we can do a scan over the alat as parameter and this is quite efficient and is usually is usually okay now if you have a unit cell which is not cubic which is tricklinic for for example which has abc alpha beta gamma then of course you have six parameters to optimize and then I think in this case I would highly opt for a variable cellular relaxation thanks again so another here thank you for the beauty for the beautiful presentation what is the criteria for categorizing magnetic materials as ferromagnetic or anti ferromagnetic con rispetto alla total magnetizzazione absoluta magnetizzazione e magnetica momenti ok quindi io credo che la maggiorità di questo sarà behandlata la prossima settimana perché c'è una magnetizia quindi ma se stiamo parlando di questo iron esempio quindi se se tutti i momenti magnetici si pointano diciamo in una direzione poi questo seria ferromagnetico con la magnetizia anti ferromagnetica abbiamo una cosa diciamo un po' di un attimo il momento magnetico si chiama per il prossimo momento magnetico si chiama e poi ovviamente se fai il summa potete ottenere zero quindi il momento magnetico il momento magnetico di materiale anti ferromagnetica è zero se considerate questa ironia anti ferromagnetica un attimo il altro attimo si chiama e quindi io credo che per oggi questo dovrebbe essere più o meno abbastanza l'esplanazione perché più sarà il prossimo settimana magari è solo diverso tra il total e l'absoluto magnetizzazione quindi il total magnetizzazione io credo è fai il summa fai il summa e per il punto anti ferromagnetico è zero e l'absoluto è fai i valori assoluti di un magnetico di ogni momento e quindi anche per un antiferromagnetico se prendete i valori assoluti più o meno sarebbe solo assoluto e avrebbe la coda che prenderà questo assoluto magnetizzamento non sarebbe zero ma il total magnetizzamento sarebbe zero ok quindi un'altra questione da la strinning ora come posso includere l'effetto elettrico nell'input file? l'effetto elettrico ok, non so se questo non sarebbe conoscente quindi credo che è meglio che lo mostro che lo mostro qui c'è alcune variabili come questo filo di fondo e e questo filo di fondo e quindi quindi c'è una serie di variabili quindi suppostamente quindi vogliamo mettere supposte se abbiamo una surface e vogliamo mettere la surface in un filo magnetizzamento e poi o vuoi fare una correczione di diverso è una cosa simile è relata a questo filo di fondo ma c'è una serie di c'è una serie di variabili che bisogna per per dire pluggerli in modo di avere questo filo elettrico o questo correczione di diverso attivata e quindi magari vorrei rispondere dopo un po' su un filo come potete farlo perché è qualcosa che anche io bisogna vedere perché there are 5 o so variabili 4 o 3 variabili che non vedo con con la città bisogna vedere un po' quindi sono importante rispondere a questo filo sì quindi qui abbiamo non vedo alcune altre questioni del streaming sì l'ultimo era questo di l'electric field effect qui nel chat vedo questa questione potete ripetere come hai esplorato l'ultimo prog dal pw guy ma credo che se male ti posti per l'ultimo potete ricevere più assistenza diretta o non so non lo voglio cosa vuoi dire perché ma per questo tipo di filo posso mostrare questo è trivialo quindi posso farlo un po' quindi se qualcuno non sceglie questo magari è ok ok please go ahead quindi si chiama e ora supposto che la questione fosse referita a questo il numero di filo e il numero di filo quindi hai pickato la direccia ok quindi questo significa nuo qui certo creando o creando qui nuo input ok e ora qui vedete questo numero di filo certo e supposto io voglio p2 io clicco p2 e poi io ando per te input file e io l'ho qui e particolarmente questo è il modo di usare poi ho solo copiuto la mia input file quindi ho copiuto questo e ho messo il mio input file un'altra useful feature perché questo pw pw gui è un tipo di input builder certo un altro useful feature magari per i begoni è ok per il pw.x ora, ovviamente, qui nel pw.x ci sono cento di variabili e questo è confuso magari non lo si può trovare magari questo magari per il pw questo è questo è meglio qui puoi pesare e lo puoi trovare certo ma c'è un feature qui che è molto molto useful che è molto useful e questo è il seguimento qui vedete ho un tipo di calcolazione se clicco consistente filo e poi ando a vedere input file vedo la struttura dell'input file per calcolazione cf quindi questo mi dice ok, ho bisogno di un controllo ho bisogno di un liste di sistemi ho bisogno di un liste di elettroni ho bisogno di specie atomiche posizioni atomiche e ho bisogno di pochi punti quindi questi sono i fili che ho bisogno ora lasciamo andare a rilassare la relazione ionica e magari solo una una una explanazione qui perché ho notato che studenti che sono nuove sono molte volte confusi con cosa è questa relazione ionica vogliamo fare sodium catione e chloride ion e la risposta è no ion anche abbiamo i liste di elettroni questo è un potenziale di pseudo potenziale perché in un potenziale di pseudo potenziale non abbiamo due atomi abbiamo i atomi pseudo perché noi tritiamo nuclei e questi stati cori implicitemente e questo poi può essere visto come un'ionica quindi basicamente in un potenziale di pseudo potenziale l'ionica direbbe atomica o nuclei certo? perché io so che studenti sono sempre confusi con questa quarta ionica ora questa relazione ionica significa che voglio rilassare la distrazione di o se vuoi questa è una relazione un molecule una relazione di coordinate dentro del unicello o etc e ora io ticketo questa calcolazione rilassata e ora vedo la struttura dell'impulsione ora vedete prima per la calcolazione scelta non c'era un liste di elettroni ora io ticketo un liste di elettroni e io ho il liste di elettroni certo? ora se faccio un liste di elettroni il liste di elettroni tomorrow potete notare che non solo ho un liste di elettroni ma ho anche un liste di elettroni ora il liste di elettroni può essere empty che significa che i valori default saranno usati ma bisogna essere là un'altra cosa ora lasciamo andare a sentire il sistema e mi permette a piccolo ebrau equals zero che significa tre elettroni quindi tre elettroni significa che io saranno specifici i parametri lati i vettori lati me stesso ora in questo caso io vado per input 5 ok? io vedo ebrau equals zero e io ho i parametri lati carti quindi qui io saranno specifici i vettori lati certo? quindi per fare questo quindi magari usare per pw questo è confuso perché è troppo variabili ma almeno all'inizio se usate potete avere l'idea che è la struttura dell'input file per una calcolazione giusta e diciamo per una per una vettroni lati e quindi suppostate che io sto qui in cubico e vedete ho bisogno di specifyare il vettro del 1 e there are two different ways how I can specify the lattice parameters for the predefined elettrisis one is via cell vm which means cell dimension and then this is specified in boring means or via a, b, c cosimos a, b, cosimos a, c, cosimos b, c so one or the other you cannot mix and so for cubic you see I need to specify a now let us go to some I don't know three clinic three clinic or monoclinic you see for monoclinic I need to specify a, b, c and cosimos a, b and maybe for three clinic the answer is clear for three clinic I need to specify all the six lattice parameters so maybe for these these graphical user interface is useful ok so thank you very much don't worry I think we have answered all questions because we have no more questions from streaming and of course on Slack I think that almost all questions have been answered but of course they if they are not now they will be in the next few minutes or hours so be for sure everyone who posts on Slack will receive an answer so no problem for that and I don't see any other question here is ok yes so maybe yeah we are it's it's time to close now it's 12 30 almost so if you have more more questions because maybe you will keep doing the exercises in the next minutes or hours so if you have troubles you still want to ask something of course as usual post it on Slack and you will receive an answer so keep we can keep using the Slack channel thank you very much Dona and here there is plenty of messages here I didn't read them all but there are plenty of messages with extremely clear presentation thank you so much amazing presentations here very much thank you so really thank you Dona for this presentation and we will meet again again with Dona and Pietro de Lugas tomorrow 8 30 here on Zoom so good afternoon or good evening or good morning whatever to everyone and yeah goodbye see you tomorrow ok bye bye bye bye bye bye bye


So we've just looked at switching Before we actually move on to routing one one way that people have compared circuit switching to packet switching Especially datagram packet switching Think about driving on a road When you drive on the road it takes some time to get somewhere and the intersections are like the switches We turn left we turn right or we go straight ahead and there may be some delay there Circuit switching is like the case when maybe there's a VIP needing to travel from A to B and what happens is the police Block off the the road the intersections and allow that VIP Maybe the Prime Minister to drive from A to B all the way through the highway or through the road without without stopping at the intersections That's like circuit switching. We set up a connection from source to destination Once the connection is set up We can send the data all the way through to the endpoint without any disruptions at the intermediate switches packet switching is like Our we drive on the road When we arrive at an intersection, we have to decide which way to go and the problem That may arise is that whenever and also arrives at that same intersection There may be a large queue there People waiting at the intersection to be to go on to one of the output roads So with packet switching we just drive at our own speeds in our own directions. There's no setup in advance but the problem is that We may have a large delay at the intersection or in our packet switching network a large delay in the switches a queuing delay But the benefit of packet switching compared to circuit switching is that in circuit switching When the police reserve the road for the VIP But they're not traveling on it yet. No one else can use that road and it's very inefficient The road's being unused when people would like to use it. So that's a comparison with road networks and communication networks that How do we choose which roads to go via to reach our destination? How do we choose the path in advance? When I want to drive from here the campus into Somewhere in Bangkok. I want to go to Paragon and go shopping tonight. I need to choose a path to take Which intersections will I go to and where will I turn at those intersections? So that's what routing is about choosing the path from source to destination And in fact it comes before and our data normally so in this back to our original example of a simple network We have some stations. I want to send data from a to f. I know at computer a I want to reach f Where will I send the data in our network? Any suggestions? Where am I going to send the data? Well, there's no choice at the start I From computer a perspective I can only send a for switch for so there's no choice there Switch for gets the data. Where can it send the data? Well, it's got three different options. Which one would you choose if you switch for? Who would you send to next? Who would you choose you'll switch for where you're going to send the data to get to f? Seven why did you seven? Because it looks closer or it looks like a shortest way to get to f Okay, so we need some way to make a decision So there we made a decision that okay to reach f I think some of you is thinking well There are multiple paths the first thing to observe in our network. Usually we have multiple paths to choose from So we need to choose one. We normally just want one So therefore we need to choose them somehow we could randomly choose That'd be very simple just just randomly pick one of those to send via But for performance reasons often we'd like to choose the best path and I think some of you eyes that Maybe the best path from a to f is the shortest path Shortest in what? shortest in Short in terms of what? meters Not necessarily Maybe in this case the shortest in terms of the number of links the fewest number of links Okay, that is we could think Assuming this is not to scale Maybe the shortest path from a to f in the number of links one of them is four four seven six We actually go via three switches Another one is four five six the same length in terms of the number of links or switches a longer path is four one Two three five six Okay, so we could say choose the path with the least number of links in it That's an easy and a very common approach that's used in in routing If we wanted to be more accurate Maybe we would like to consider other factors like the distance Maybe maybe the distance not relevant and some other characteristics of the links and the devices so Routing is a very important design issue in in networks and the question is which path or Route so we use the same by the path or route to mean the same thing Which path should be taken from source to destination? That's our challenge and the answer the best path Well, that's not a complete answer because we need to define What do we mean by best? Is it the path with the least number of links? or is it a smallest total delay or Is it the path that is the cheapest? Often in a network. We need to pay to send data through a link Choose the cheapest So we need to define what do we mean by best and once we know that how do we choose it? What algorithms can we use to choose the path? So that's what we look at in this topic In the examples like the one I just presented we only have 10 or 15 devices and and not many possible paths in real networks. There may be hundreds of thousands of devices and Many many possible paths So in fact in choosing a path Even if we use a computer to choose the path sometimes it's not easy to do it in a short amount of time So it's much more complex than we see in the examples Routing is necessary for both circuit and packet switch networks In circuit switch we need to choose the path or the that to set up the circuit in Packet switching we need to choose a path through our packets to take to get to the destination. There may be some different issues Packet switching and especially datagram is is a key part of the internet. So we focus on packet switching from now on So today we'll just introduce the concept of routing. So what we want is some Some technique or an algorithm that says given this source Given this destination tell me the best path That's what we need a routing algorithm that will find me the best path from source to destination Such an algorithm has a number of requirements some are obvious some are a little bit more complex the first one is maybe obvious if I have a routing algorithm and That algorithm takes as an input source and destination. It must return a correct path What do I mean? Source is a destination is F. I use a routing algorithm my software it takes as input a and F It returns the path four five two eight and six So the path four five two eight and six is the answer from my best path from a to F What's wrong with four five two eight and six as a path? It's not an actual path in this network So the point is that the algorithm the software that calculates path must choose an actual path from source to destination and Note that the way that we're defining the path or talking about it is by the the nodes or the switches that we pass through The path from a to F can be four seven and six Four six seven is a different path The order matters. So algorithm must to return a correct path. That's maybe obvious We would like a way that When we Calculate the route or the path the routing algorithm is easy to calculate It doesn't take much CPU to calculate It's easy to implement so that when someone has to write the code for that algorithm that they won't create bugs and It's cheap. That is again not not much CPU. So something easy is desirable as with most systems we develop The next thing we'd like an algorithm, which is robust and what that means is if it chooses a path and Then we find that there's some error in the network the algorithm may be able to adapt and choose a different path My algorithm tells me to get to F Your path is four seven and six But we discover that node seven is not working So what we'd like is an algorithm that will adapt and maybe choose an alternate path for us maybe four five six and Now I'll start sending my data across that different path. So when there are errors in the network like node seven fails Then we'd like an algorithm to be able to cope with that. That's all we're robustness means and Usually that means finding alternate paths So not just using this path forever, but find another one when there's a one that arises or even maybe we notice that node seven is Maybe let's choose a different case the algorithm initially Initially to choose as path four five and six as a best path Maybe seven's not here seven is not Not a good example here. Let's say we want to go from Where are two distinct paths? We want to go from B to D All right, B to D the algorithm chooses one two three to D easy But we noticed that switch to as we're using that path and sending the data we noticed that switch to is busy It's slowing down node C is sending a lot of data through it We can think it's congested So the performance is not so good when we're going by switch to So what we'd like an algorithm to do is to say okay one two three was no good Maybe you should start using one four five three as an alternate path to route around the problems where if there's an error at node seven find a different path or if No two is working But he's slower than we expected then maybe find a different path now the problem with This switching between paths is that sometimes what may arise is that okay? We're sending our data one two and three Then our algorithm tells us change node two is busy It's got a lot of data going through it change to one four five three start sending a data one four five three But then the algorithm realizes node five is busy. So it says go back to one two or three. That's better again But then two gets busy again because we're sending data through it So it goes one four five three and we keep swapping between those two paths because the algorithm Tries to choose the best one but it may become in state unstable in that we Constantly switch between paths That can be a bad outcome Even though they are actually the best path changing path too often can be bad for some data transfer one thing that happens is that if we think of the the delay maybe the delay across the first path is Recently short three links three switches and the second path is quite long Some applications they can tolerate a long delay But if the delay changes a lot Then the applications do not work so well So sometimes we'd like to have constant performance Even if it's not perfect performance Keep it stable So a routing algorithm should be stable in that it should try and find the best path that can use for a long period of time The requirement of stability and that conflicts with robustness sometimes choose the optimal path choose the best one That's another requirement. We need to define what we mean by best Be fair and this is a hard one to explain by our example We think a routing algorithm may find paths for all stations in the network Find the path from A to F find the path from B to D and the path from C to E Fairness is about try to make sure that those three paths give similar performance for each of those pairs of stations communicating Don't choose a path which is great for a It's great for B But terrible for C Try to choose paths such that each user gets about the same performance That's the idea of fairness be fair amongst the users in some networks We have such a requirement that try to treat all users in the same manner And there are some situations that arise that maybe an routing algorithm would not provide fairness Last one while we're here Coming back to this issue. We want to know the best path. We're using one two and three to get to D We realized two is busy and slowing down How do we know that at source B that switch to is slowing down? Often we'd need to exchange some messages Maybe from switch to send some feedback back to be saying I'm busy right now. Maybe you should use a different path So to support routing We need to exchange some information between the devices And that creates overhead so the last requirement is Try to be efficient in choosing the best algorithm Make sure that you minimize the amount of processing done on on the devices and Minimize the amount of overhead that we we create to learn about what's happening in the network and In the subsequent discussion will we will see examples of efficiency or especially overhead what can create the overhead and The ways that we can try to minimize that so we'll keep these in mind as we go through routing approaches But today we'll just introduce the terminology To set up the different approaches we'll go through and The terminology though those terms will define through this example network So now I'm not going to draw stations and switches. We'll just be general and talk about nodes Whether it's a switch or or something else It doesn't matter routing applies in general to a network and we can think of a network as a graph We have a set of nodes of vertices or edges connecting them So in this example, we have six nodes six computing devices that want to communicate and The lines between those nodes Tell us something about the links between those nodes So the first thing we have a link. So there is a link from node one to node four and In routing will often Will often consider the links differently in each direction So let's say we have a cable from node one to node four and It's a full duplex cable We are the fuel full duplex link and that we can send in both directions Will often Consider that well, sometimes we'll consider the case that the directions that we send in there may maybe get different performance and That may have an impact on routing and that's what we're showing here that we have a link from node one to node four and We'll also think we have a link from node four to node one. We could have a simplex cable That is a link from node one to node four, but no link back to node one That's not very common nowadays, but it's possible that we can send in one direction, but not back So we'll draw two arrows to indicate the each direction So we have links between nodes A path is defined as a set of links from source to destination or the set of nodes that we traverse a path from node one to node six is Node one node two node three node six so we could write the path down as node one and two and three and six or We could just say it's the link from node one to no two The link from node two to node three and the link from node three to node six. It's the same The set of nodes we go through or the set of links we go through that's a path a Path can consist of a single link. There's a path from node five to node six It is direct from node five to node six. That's still a path There's also other paths. So there may be multiple paths to to traverse a single link reduce the term of a hop we take one hop So we can say For the path from node one to node six Via two and three There are three hops We hop from node one to node two node two to node three and node three to node six. So that's a path with three hops and Often when we think about shortest path we think about the least number of hops One with the least number of links. So hop just means a link is traversed Just some terminology What's the least hop path from node one to node six? The least hop path No one to node six. What's the least hop path? Write it down What's our answer? That is what's the path from node one to node six? There are multiple paths. Which path has the least number of hops? Where is the least number of links in the path? Node one to node three is one hop node three to node six is a second hop You cannot get lower than that in this particular example. So we say quite simply node one node three node six and some cases will use the hop count as An indicator of the the best path. It's a very simple way to say okay The best path from no one to node six is the one with the least number of hops It's very easy to measure What other terminology do we have? the And we can talk about neighbors Okay, so the neighbors of node five nodes four three and six the neighbors of the nodes which we have Correct links to Node two has three neighbors node one node four node three and we can talk about neighbors of neighbors and so on the neighbors are Usually known in advance If you think node fives a computer Switching a network and it's got three cables plugged into it and at the other end of end point of each of those cables Are nodes four three and six when someone can sets up node five and they plug in the cables They know who's at the other end point of the cable Okay, we'd normally know our neighbors when we set up our device So we'd normally assume that node five knows that the other end point of this link is node four of This link is three and this link is six But when we set up node five it may not know that there's a node two a node one in the network Maybe on the other side of the country. So we'll have to deal with that. We'll look at ways for how to learn that We'll assume that we usually know our neighbors in advance a Topology or the topology is just the arrangement of nodes and Links, this is one topology If I remove nodes fix I have a different topology if I cut out the link from four to five That's a different topology and the last thing is these numbers the cost What we'll do in routing is that to find the best path from source to Destination we'll use what we call least cost routing We'll assign a cost to every link like these numbers on these arrows here We'll assign some cost. It doesn't mean financial cost not necessarily some general cost and Then we'll use an algorithm to find the path which gives us the least cost Where the cost of the path is the sum of the cost of the links on that path? So what these numbers are an example of the costs assigned to using each link and We'll talk about different ways, but the cost may be related to The delay of the link The performance in terms of throughput or data rate the financial costs the security of the link The the number of hops and other factors. So there are different ways to measure cost But once we have a way We allocate a number to the link indicating the cost higher the cost the worse That link is in our path Given that we've assigned cost to our network. What's the least cost path? From node one to node six find the least cost path from node one to node six The path from swan to six which gives us the least the smallest cost where the cost of a path is The sum of the costs of the links on those path on that path least cost path You need to check several You may find it you found it Found it where point Four five and six what's the cost of four five six? The cost of the path from one four five six is four units so our link hop path From the previous one that the number of hops was one three six But that has a cost of one to three is five units and Three to six is five units the cost from one to six is ten via three There are other paths from one to six with a lower cost and if you through One to four to five to six has a cost of one plus one plus two of four units So the total path cost is four one four five six is the answer there and just so we remember the cost the total path cost was four in that case if I give you a larger network with maybe 40 nodes many links How are you going to find the least cost path? So I give you the costs How will you find the least cost path in a network from any source destination pair? It's hard to look okay, even this small one. It's hard to some cases find what we want is you need to check many cases What algorithm can you use to do it quickly? Find the least cost path in a network What's the algorithm is named after some person That's with a D Dijkstra algorithm is one of them Okay, I think you've studied in in some other course the Dijkstra algorithm is at least as an hour at least cost path From one node actually finds from one node normally other nodes Okay, so there are algorithms who do it for us. We were not study that we'll assume that we Have some algorithm that that would do a Bellman Ford is another algorithm that will find it in a different way So there are algorithms finding the least cost path Coming back to the costs know that the costs Between a pair of nodes in each direction may be different like this example from node one to node four The cost is one to go backwards from four to one the cost is higher It's that's possible sometimes have the same sometimes that different Why would it be different? Consider Many factors, but a simple one you may know of is if you've got internet at home You may have ADSL internet or you may have used ADSL internet anyone you have an ADSL router at home and What download speed do you get? How many megabits per second When you go to your ISP usually pay per month and it depends upon the download speed how much you pay for example I've got one which is 10 megabits per second download speed, but the upload speed is not the same It's one megabit per second So in that one link from my node to the ISP node Coming from ISP to me is fast 10 megabits per second going up is slow So the same link has different performance. So if the costs associated to the data rate or That performance that's why we may have different costs because on one link between the same pair of nodes We may have different performance in each direction So that's why we may have different ones so We've introduced the terminology what we do in routing in networks is Once we know the network topology We know the nodes and links and we know the costs of those links So we're going to sign those numbers Then we simply use a least-cost routing algorithm like diextra or others Is used to find from any node to any other node the least cost route the least cost path And that's the path we use But the challenges that we're left with Which criteria do we use to assign a cost is cost financial cost delay? Throughput something else. We look at them When do we choose a path? Do we choose one today and use it for the next Year, or do we use it today choose it today and then choose five minutes later recalculate maybe things change Who chooses the path? Is it the source node? the intermediate nodes or maybe we have some special server that calculates for everyone and When we to learn about the topology the link costs and the current usage links We need to know that to calculate the least cost path Where do we get that information from and how often do we update that information especially as the cost may change? So that's what we'll look at in the rest of this topic of the techniques for answering some of those questions We'll stop there and we'll continue on that in the next lecture tomorrow