Hi, I'm Bob Greeny. I live on McClellan Street with other families, seniors, and students. A charming, historic neighborhood of active, engaged, and outspoken citizens. I teach physics at Holyoke Community College, make pottery, write poetry, and like having a voice in the governance planning and vision of our town. I love this town where I've lived for 24 years with my wife and previously four children. I appreciate the range and quality of our schools, libraries, police, fire and rescue services, recreational programs, senior services, and more. I strongly support good maintenance and improving and improvements, including new buildings as needed. Most of the candidates are in agreement on most of these issues. Given the time limit, let me address two issues where I differ from the other candidates. First, the process by which we govern ourselves needs to be more participatory and inclusive through every stage of planning and development of new initiatives. We need better practice at building unity and community. The unpleasant and failed elementary school proposal was not a failure of town meeting. It was a failure of inclusion and participation in planning and development from the beginning and throughout the process. Any project that leaves half the town unhappy should not be implemented. Let us build unity and community together. Second, in my opinion, the current development trend in Amherst's town center is the single most important issue in this election. Our town center in appearance and ambiance is moving rapidly in a direction that will be irreversible and radically different from what many of us want. This election may be your last chance to have any leverage or voice on this matter. What I see is our downtown filling up with expensive student housing. It seems to me that the current and projected buildings, if built, will be primarily if not exclusively occupied by students. These buildings are effectively dormitories in our town center. We need a new fresh creative vision for the future of our town center that will enhance the unique and attractive character of the current town center. It is possible to grow organically and with a creative flair that will extend those qualities we love and desire. Some of you may reluctantly support this trend in hope of tax revenue that may ease the constant upward spiral of tax increase and help fund for capital spending projects that most of us feel are needed. To you, I say, the price is not worth the uncertain benefit. Associated costs, infrastructure, support services, and especially parking may eclipse the tax benefit you are hoping to realize. I urge the business community to think if it will be to your benefit to have a town center dominated by student housing. Consider a more creative and diverse mixture of architecture, population, business, entertainment, and recreation for our town center. We all want variety, vibrancy, and vitality. When we walk the streets of Amherst, our eyes should be entertained by a variety of organic and diverse architectural infill that makes our town center a collective public art project. Let us come together and agree to this high standard of development that in the end will benefit all of us, businesses, and the general public. Thank you.


The following is a production of New Mexico State University. Meet Skippy, a middle school student who doesn't really know how much he moves around every day. He's tried to count his steps, but he loses count after a few hundred steps or so. If only there were some tool to help him count the steps. Actually, there is. It's called a pedometer. Do you know what a pedometer is, Skippy? Well, a pedometer keeps track of how many steps you take. It will save you from having to count all those steps all the time. At the end of each day, you can write down how many steps you took. Measuring your movement will help you make movement goals and let you know how successful you are in meeting them. What's that, Skippy? You want to know where pedometers come from? Well, okay. Pedometers have been around for a long time. Early pedometers were bulky and awkward. Some people think that pedometers might have been invented by Leonardo da Vinci. While they were a good idea, they were not very accurate. Today's electronic pedometers are much more accurate. Pedometers work by measuring vertical movement, which make them great for activities like jumping rope and walking. Pedometers do have limitations. For example, they cannot measure swimming activities and they shouldn't get wet. Activities using wheels, such as skateboarding, rollerblading and biking can't be measured accurately with a pedometer. Don't be plumb. Those activities are great ways to be active, but they can't be tracked with a pedometer. In your journal, just write down how many minutes you spend in those kinds of activities. So roll on, Skippy. So Skippy, are you ready to learn how to put on your pedometer? First thing you should do is attach the pedometer to your waistband directly over your right knee. There, that's the ticket. Next, attach the safety strap to your waistband or belt. Put the pedometer close against your body. Don't let it flop around. Splendid. Now, open the pedometer. Carefully, use the reset button to make sure it is set at zero. You be sure to take good care of that pedometer so it can be used over and over again. No, Skippy. Don't take it in the bath. This is not a toy. Don't swing it around. And it won't survive being stepped on. That's the way to do it. Skippy, were you shaking your pedometer? Hey, that's cheating. Besides, shaking it can break the pedometer. Remember, if you shake it, we take it. All right, you rascal. Don't forget, we need accurate readings. Shaking it won't help you achieve your goals. Skippy is now going to demonstrate how to make sure the pedometer is recording steps accurately. Reset your pedometer to zero and take 20 steps. Halt! Check the count on your pedometer. Well, what does it say? If your count is more than 22 or less than 18, readjust the pedometer on your waistline and make sure it is vertical. Then try again. At the end of each day, record your steps for the day and carefully store the pedometer in a safe place. Good night, Skippy. Morning, Skippy. Remember to check that your steps are at zero. Put it back on and have a great day. Well done, Skippy. You are now on your way to moving more. Good luck.


This episode brought to you by preparewithdronetech.com friends big dangers are all around us these days to survive what's coming You need to be prepared and self-reliant That's why I recommend getting yourself some cryptocurrency some land some gold But especially a proper stockpile of emergency food It's easier than you think go to preparewithdronetech.com right now And you'll save $50 and get free shipping on a generous four-week supply of emergency food from my Patriot supply Go to preparewithdronetech.com right now. That's preparewithdronetech.com And it has been energy-driving much of this you've seen that we've talked about gas prices and those Those prices have been moderating in the past few weeks but demand is strong I mean this is a sign of a really strong economy guys people are rushing out all at the same time to buy the stuff They want people were asked what their top economic concerns are take a look inflation the top spot there with 39% Does president Biden deserve the blame for this Catherine should he be should his approval rating be tied to this? Is are these things under his control? So I will say the thing that I always say when asked about whether presidents are properly Credited for economic conditions presidents get too much credit when the economy is good and too much blame when the economy is bad Inflation is up not because of any particular thing that the president did. It's not Biden's fault And to the same idea Biden has relatively little that he can do about it You know Republicans are blaming President Biden, and I always say presidents get too much credit and too much blame for things like this Gas prices are high because people are driving more. They're flying more is the economy reopens. That's a good thing You know one thing I hear a lot on social media is well gas prices are high because President Biden killed Keystone the Keystone XL pipeline and you know, that's just not the case So listen, there's there's no easy answers here. I mean presidents don't have magic wands to just make gas cheap At least not in the United States here at home Americans are finally getting some Finally right good news people. We talked so much about bad news. Oh my gosh Government forecast forecast says that they could drop below $3 a gallon Whoo finally some economic relief However, minor Americans are paying a little less at the pump after weeks of rising energy prices relief for the United States as Energy costs drop that pain that you've been feeling to the pump. It may be short-lived There is finally some relief at the pump good news at the pump finally getting some relief as you mentioned The national average price of gas dropped four cents in the last week gas dropped nearly a nickel in the last week Seven week low. It's moving in the right direction The average is now at a seven week low actually a seven week low slightly lower gas prices So that's good. Yeah, this is the kind of positive news we've wanted One thing I hear a lot on social media is well gas prices are high because President Biden killed Keystone the Keystone XL pipeline and you know, that's just not the case So listen, there's no easy answers here and presidents don't have magic wands to just make gas cheap At least not in the United States Today the United States is the largest producer of oil and gas in the world It can ramp up production and exports and help turn on spigots in other countries Joe Biden is worried that he's gonna look like Jimmy Carter When his power position is actually more like that of the king of Saudi Arabia President Biden should announce that he is going to respond to this massive challenge to the international order by expediting as much production and export of American petroleum as possible to replace Russian energy With natural gas, he should urge his regulators to facilitate production And he should help more with the financing of liquefied natural gas so that it can be sent to Europe quickly He should also encourage countries like Japan and South Korea to divert more of their LNG to Europe They have alternative energy sources Some of this will take time to happen, but markets will react to the signals and to new supplies and prices will fall No shit That's what people like me have been saying since Biden took office as if it takes a professional Journalist or a guy like Joe Biden to figure this one out. It just makes logical sense You can't just cut off fossil fuels cold turkey to keep with the drug addiction analogy that they like to use so often You can't do that because all you end up doing is giving your worst enemies the worst people in the world an advantage over you Why because you're gonna be dependent on them for the oil that you refuse to drill in your own country Where if you did so you would be completely independent. No wait, let me guess your entire policy is based on the advice from a teenager with Asperger's not that I have anything against anybody with Asperger's but come on I'm gonna take another wild guess here and say that CNN's turn on a dime narrative shift has something to do with the fact that Rasmussen reports is now reporting that 70% of America favor increased US oil and gas production This mirrors my own poll in the community tab at my channel, which you should go check out when you're done here But the scary thing is here It does not take a particularly smart individual to know that this is the way to go given that we're nowhere near reusable energy replacing fossil fuels and Given the fact that America has enough oil and other resources to be energy independent It does not take a rocket scientist to know that we need to be drilling and doing whatever we can to get our own oil Otherwise, we're dependent on other countries for oil Countries who don't give a damn about the environment and guess what getting that oil from those countries takes even more energy That's even more pollution I swear we need to stop listening to these far-left Environmental cultists because they're gonna take this country to a national suicide. All right, folks. It's all I have for that one Thanks for watching. If you enjoyed it, please hit that like button share and subscribe Also, leave me a comment to let us all know what you think


Morning everybody. Woke up here in Fort Francis, Ontario. We're just letting Chevy stretch his legs and we're gonna get on the road. Nice and crisp. Not too hot, not too cold. Or I should say not too cold. That's mostly what's most important. Mostly. It's not too cold.  Spring is finally here, or at least it's on the way. I mean, it's like a little bit of winter lingering around behind me here, but we'll forgive Fort Francis for that. Because that sun up there is doing his job. So with three hours away from my delivery and brainered. I'm gonna wake myself up here. Gonna have some breakfast. Just letting Chevy do his thing out here.  Remember that's the rule. Don't eat it. Good boy. Good. You're learning. See, you sniff. You don't eat. He wants to eat everything. Come on, chef. Come on, chef. I know it's a very fancy Walmart sign. I like it too. I like it too. Everything is so new for him. He doesn't get out of the house much. Or I should say he doesn't get out of town much. He does go to daycare and stuff and meets his friends and stuff. But it is a lot further from home than he's been in a long time. He wants to sniff and eat everything. You gotta wait till I open the doors. Remember last time you started to go up the steps and the door was still closed? Remember that? Just gonna take this off of you. Wait. Wait. First the door's gotta be open. You can't go in without the door open. Hold on. Hold on. I'm gonna move this over just a little bit. Line you up. Wait. Okay. There you go. Like a pro. Isn't that nice, Chevy? Isn't that a beautiful sound first thing in the morning? Yeah. It is. Quick stop just inside Minnesota. Why not quick stop? And why do I have the heat blasting in here? What in the world is going on? What in the world is going on here? Whoa, whoa, whoa. It is springtime. Calm down. Hot air blowing at me here. We're in Minnesota. Just cross the border. And we're gonna go down to Brainerd. Get this off my trailer and it is confirmed that I won't be getting my reload today. I'll be getting it tomorrow. So it frees up the day a little bit for me. It was gonna be pretty rushed to get there. I couldn't easily made it had there not been 10 trucks ahead of me at the shipper. But that's the way it is. I mean, what am I? What can I say about that? I showed up and there's 10 guys in front of me. They all had to get loaded.  And I'm sitting there just... We only made it to Fort Francis. I was gonna make it all the way down to Brainerd and get unloaded yesterday. That's the way it is. I mean, I didn't have to be unloaded yesterday. I just sort of wanted to get ahead of schedule. I like to get ahead of things, get unloaded early as possible. Here's what it is. So we'll do it all day and reload tomorrow. I'll probably be home tomorrow night then. A nice little quick trip just to ease ourselves back in. From what I hear at home, everything is going very well. Britt is finding her own routine with Theo. And he's being good. He's a perfect little guy. You can't get... I know every parent says that about their kids. They're like, it's perfect. No, this isn't real. This is verifiably fact. Verifiable fact. Theo is perfect. Perfect health. He's a good looking baby. Perfect weight. It took a long time to bring him into this world. So yeah, I'd say he's pretty perfect. I guess I gotta wait until he turns into a teenager to put the full stamp of perfect on him. Don't worry, Theo. You're watching this later in life in your teen now. Don't worry. I was nowhere near a perfect teenager. I... Man, ask me about it sometime. I'll tell you stories.  You can be better than that. You can learn from me so that you don't have to go through those same dumb moments that I went through. Right, Chevy? Exactly. Whether or not you choose to listen to your dad from the past, well, that's up to you. I mean, I get it. When I was a teenager, my parents would tell me something. I figured I knew everything. I knew the whole world. I had the whole world figured out. It's all about 25 to 26 when the brain is fully developed. The frontal... The frontal lobe isn't fully developed until you're about 26. That's when you truly... It seems to be right around that time when you truly discover, like, who you are. Up until then, it's certainly a big process of discovery, so... It's all about making mistakes and learning from them. And, hey, listen to my mistakes so you don't make those same ones, okay? You make your own mistakes. Don't copy me. So now, going down to that town I was talking about before called Lake Crystal. We're going to put two dump truck buckets, I believe, or dump... something about a dump truck on this trailer. And then the trailer is going to go up to Saskatoon. Another driver is going to take over for me in Manitoba, and then I'm going to go home. It's going to be good. I'm going to pick it up first thing tomorrow morning. I've got about a three-hour drive down there now. You ready to get going, Tre? You want to go to Lake Crystal? I thought it was Crystal Lake at first. Lake Crystal. That's going to be a good time, man. This is the moment you've been waiting for, okay? Hey, Chev. Is your turn to drive? You're right, Dad. I don't have thumbs. Nice. So I'm at the Expressway Truck Stop in Mankato, Minnesota. And this is where I'm going to call home tonight. What do you think, Chev? What do you think? I think it's a very nice parking spot, Dad. Right near the front. Like a bus. You're the best. Thank you. Now, I want to talk about this. I need to go home. Is that why you're complimenting me? You're trying to schmooze me? Trying to schmooze me, eh? Maybe.  You've been really good this trip, Chev. You've been very impressed. You've been handling things very well.  What? You're a little bit afraid of little things that you don't need to be afraid of, but all in all, I'm pretty proud of you, but you've handled it very well. Thanks, Dad. There's only room here for maybe five trucks. You've got Highway 169 right there. And you've got one, two, three, four, five, six, seven trucks, maybe. And that's it. That's all for the day. Got nothing more for you. There's nothing more going on. We're parked right here. We're 20 kilometers or like 15 miles from my shipper. I'll go there first thing in the morning. They open up around eight, so I want to get there just before eight. Hopefully start loading at about 8.30, maybe before. Like I said, it's supposed to be these like dump truck dumps to them from what I understand. So they'll put them on the trailer. Obviously I guess I'll have to chain them down if it's what I think it is. I don't know. I'll tie it down. I'll secure it and just like that we'll be on our way back home. I don't know what I'm talking about. I'm a little bit tired. Though my definition of tired has changed since having a newborn. The newborn's not with me here in the truck, obviously. I don't think it's legal to take a newborn with you on the truck, but he's at home with his mom. But you never quite know what you're all getting into when you have a kid until you have one. People try to warn you, right? But I'll tell you, it's the best experience ever. It's the best lack of sleep ever. You know, before I had a kid, if I wasn't if I didn't have my, you know, my six to eight hours, oh man, my whole day was shot. But now I get four hours at home and I'm good. It's a different kind of life that's for sure. All you parents out there know. I'm so excited to go back home. We'll be there tomorrow. So thanks for tagging along with me today and I'll see you right here tomorrow. Let's go pick up those dumps. Let's go home. Don't forget to subscribe. I won't start to tell you. Don't forget to subscribe to my channel and follow me for more videos. You can find all my social media, all the stuff that I that I have down below in the description of every one of my videos. If you're on mobile, just go down below. Click the title. It'll take you to open up this whole box. If you don't find it down there, it's not main, okay? I got Facebook, Instagram and Twitter. Facebook is my main platform. We're on the most active. I have a Twitter and what was the other one? Instagram. I post more pictures there. I have a TikTok too. I don't use it as much but if you want to find me there, if you use it if you don't use the app, that's fine. I know how it is with that one. Some people like it and some people don't. If you like it you can find me there too. But I'll see you tomorrow. Take care.


So we'll look at routing with respect to computer networks or specifically switched data networks So sending data through a network using switching Really routing applies to all of the switching techniques circuit switching The two types of packet switching we this we in all cases. We need to find a path But in the examples we use from now on will focus on packet switching networks mainly datagram packet switching because that's what the internet uses so the problem is given a network a set of Devices want to be able to communicate with each other a to f d to b and so on and in a switch network We have the intermediate nodes the switches. We need to find a path through this network from one device to another and It's a problem because there are usually multiple paths to choose from Okay, so from a to f we can go via four seven and six or four five six or four one two three five six So since there are multiple paths to choose from we should choose the one which is best for us We'll call it a path or a route That means the same thing which route to take which path to take So it's an important issue in in data networks how to do routing Which pass should be taken or the answer that people give is take the best path But then we need to define what do we mean by best what's the best path? So we actually would define different metrics different ways to measure best best could be the path with the least number of links or The path with the least delay If we want to get our data quickly from source to destination choose a path which takes the least time or the highest Throughput on all the links because I want to transfer a lot of data I want to choose a path which has links which have a high throughput or a high data rate as opposed to those which Can only transfer my data at a lower rate or choose a path which uses Which incurs the least financial cost? Cost the least amount of money and some other metrics for choosing the best part will list a few more Once we define the metrics usually what we would do is we will assign some cost To the links and you know some algorithms for calculating giving given a Network to calculate the the shortest path or the least cost path will mention some of them I'll show you an example in a moment But the example only has five or six nodes real networks may have hundreds of nodes And many possible path to choose from So even though in our example sometimes we can see the best path In real networks we need computers to calculate the best path best path for us because it's such a complex problem Let's go. We'll come back to those Requirements first we'll introduce some some terminology the terminology on the previous slide. I'll explain using this example This is an example network topology a Topology is the way in which we arrange the nodes and links so a network We can think is made up of nodes and links in this picture the nodes of the green ones and the links of the lines between them So this is one particular topology because it has a link from node one to node four and from node four back to node one And it has six nodes and all these to find links a Different topology would be one that maybe doesn't have node one if we remove node one we get a different topology so the topology just is the The arrangement of nodes and links Another thing that we often care about is that with routing we want to find the best path Well, we were defined best as a generic cost the cost of using that path and That will come from the cost of using the links across the path So what we do is assign a cost to each link and that's what these numbers next to the lines are There are examples of costs of using that link For example to send some data from node one to node four it costs one unit to send data From node four back to node one it costs seven units So we'll assign costs to links and it may be that links Between the same pair of nodes, but in the opposite direction may cost have different costs Like in this case, it's cheaper to send from node one to node four. It's a higher cost to send back Sometimes they'll be the same sometimes they're different in general we can allow them to be different When I say cost I don't mean money I don't mean Bart or dollars. It's not financial cost It's some generic cost and we need to define what we mean by that it could mean The delay of sending a packet across this link is one millisecond and The delay to send it back is seven milliseconds Maybe that's the the cost in this example or it could mean something else. Okay, so Once we define how we'll measure cost Money delay data rate security different factors once we define then we Associate that with a number this generic cost which we can assign to each link Where we'd like to use the links with the lowest cost So once we have nodes we know the topology if we know the costs of using each link Then we can find what's called the least cost path from any source to any destination What is the least cost path from node one to node six? the least cost path One one from note. What is the path? We define the path by the nodes usually We can point but and one two and four Director and six okay, they're a multiple path But if you look at the cost the cost of using a path is the sum of the costs of using the links across that path So the path 1456 That's the path the cost of using that path is one this link Plus the link from four to five plus one plus the link from five to six plus two So the total cost of that path is four and You can check other paths and one three six has a cost of what five plus five is ten and The other parts and you find the path with the least cost Which it turns out to be four five and six if you go by two It's going to cost more than the path cost of four And how do you calculate that if you have a large network if I give you a network of a hundred nodes and many links? You can't do it in your head very easily. You need some algorithm to do it for you So Dijkstra's algorithm is one example that would do that. We're not going to study those algorithms I'll assume you know them, but you won't need them to do this if there are any examples They'll be quite small that you can visually look at and calculate yourself But there are algorithms that will do this for us for this network find all the least cost paths From node six to node one node two to node five and so on you can find all of them What else do we need to introduce? Okay, we can talk about to to travel across one link. We call is one hop So to traverse a link is to is to traverse one hop So the number of hops in the least cost path from one to six is three So the least cost path is one four five six the number of links is three the number of hops is three Hops is just another name. We refer to count the number of links and it's a very easy way to to find Or that there's some systems used to find paths through networks find the path with the least number of hops But the path with the least number of hops is not necessarily the best path The path with the least number of hops from one to six is one Three six two hops But the least cost path is one four five six with a cost of four We'll often care about our neighbors The neighbors are the nodes which we have direct links to so node one has three neighbors the neighbors are node two three and four so in practice These links a node normally knows about who its neighbors are because you can think there's a cable between node one and node four this link represents some some communications link so Whoever owns or operates node one They've already set up the link so they know who's at the other endpoint of the link in most cases So a node usually knows about its neighbors But it may not know about other nodes in the network and we'll see an example of that So our aim for any network if we know the topology and if we can assign cost to links That is we given this information Then we can apply some algorithm that will find the least cost path from any node to any other node We call that least cost routing at least cost route or at least cost path is finding the least cost path through that network To do that though, you need to know that information of the topology and the link costs and That's the hard part about routing in large networks Knowing in advance what the topology is and especially the link costs Once you know it, it's easy to calculate the least cost path so what we need is some algorithm that will Not just calculate the path, but find that information Wrong way. How does node one know that the cost of the link between five and six is two That's the challenge Because these nodes may be spread across the country Maybe operated by different people So the operator of node one may not know that there is actually a link here So somehow they need to learn about the the links between other nodes and the costs of those links And that's what a routing algorithm or routing protocol will do So we need a routing algorithm that will do that for us that will Given a network It will try and find that information about what is the topology What are the link costs and then calculate the least cost paths Such an algorithm Some requirements are listed here quickly go through And now the algorithm should be correct That means if we say I want to get from node one to node six and The algorithm returns the answer that gets me from node one to node two You're right. Okay Make sure you're fresh so you can follow the lecture if if the algorithm Wants to get us from node one to node six but returns us an answer the path from node one to node six is node one node two node four Then it's incorrect sounds obvious But that's a basic requirement that an algorithm that finds the best path should find a path to the actual destination It should be simple that is We'll usually use computers to do this for us as opposed to humans having to calculate the least cost paths We'll get computers to do it. So it should be simple to implement and to execute It should be robust Which means that when things go wrong it still should work. Okay? so if If an algorithm tells us the best path from one to six is one four five six but then as as the networks in operation that the link cost change or A link fails. Let's say this link fails. It no longer exists Then an algorithm should be able to adapt to that and in the presence of say this link failure Find another path that gets us to six So in the presence of things going wrong A routing algorithm should be able to deal with that and maybe find an alternate path So for example, if the link between node four and no five fails, what should our algorithm do? Find a new path, which is what what path in this case? What is the best path in this example? Can anyone find it? one two three five six has a cost of What two five six eight Anyone find a lower cost path than eight one four three five Six is a cost of one plus three plus one plus two is seven. So that one's better I Think you may not find less than seven there. Okay, and again We'd have an algorithm that would do that for us automatically in a large network But the idea of robustness is if this link fails the algorithm should Try and find an alternate path Another requirement is stability That is okay. First. We're sending our data. We've got many packets to send from node one to node six We start sending them across our path one four five six. It's the best path at the start this link fails So it switches to the alternate path one four three five six But then this thing comes back up again a few milliseconds later the link just was in error for a short time so the algorithm is smart enough to switch back to One four five six and start sending packets on this original path again But then there's an error slightly later. So it switches back to the other path and it keeps swapping between alternate paths Because of some problem on this link that sometimes it's working and sometimes it's not working So if an erouting algorithm does that then it's can be constantly swapping between different paths and That can be a problem for some data transfer applications because we get a a Continuous Difference in the performance of our data transfer Sometimes our packets take this path. Sometimes they take this longer or higher cost path and Some applications don't work so well when there's a lot of change in say the delay or the performance of the network So sometimes we'd like a routing algorithm that would be stable Once it finds a path it sticks with that path for as long as possible So that too conflicting requirements robustness and stability robustness says Find an alternate path when things go wrong stability says stick with the same path for as long as possible So it's a trade-off there Choose the optimal path that is choose the best path or we said that the least cost path Be fair that is in a network There are multiple stations that may want to Be able to communicate node ones to node six node five to node two and so on fairness is about making sure that all those nodes get treated equally that is The algorithm shouldn't choose a path such that it's very good for node one but very bad for node two and I Don't have an example. It's not so clear on this one. There's no example here, but in some networks. It could be that say nodes which are close to the destination Five and four may get the best path and It may turn out that other nodes which are further away may end up with the very bad path with very low performance That would be unfair to those nodes which are a long way away, so In some cases and it's not a good example here, but in some cases it can be an issue of fairness We want to make sure that all stations get a good path One doesn't get the best and the others get the worst. We want to be equal amongst them Which sometimes conflicts with choosing the optimal path? Okay, it may mean getting suboptimal past just so that everyone gets good performance The other thing is efficiency and we'll see that come through as we go through some examples To know about the rest of the network We need to exchange some information For node one to know that the cost from five to six is two Which may be on the other side of the country or the other side of the world? There needs to be some exchange of information between the nodes and That incurs some overhead So they may need to exchange some packets saying what is your link cost and node five tells node one? My link cost to six is two that's some overhead that we want to minimize and therefore we want to minimize the transmission overhead the Transmission of extra information and any processing if the node needs to calculate something it needs to be as small as possible And that's the aim for efficiency and that will come up We'll see more examples of efficiency through some of the next few slides So we'd like an algorithm with these requirements that meets these requirements. We'll see Which ones do so a number of issues which will go through What different performance criteria are available? What are the suggestions? How would you measure best in a computer network? You want to get your data to the Facebook web server in the US the paths there are many paths that go via In internal in Thailand and then via different countries to Singapore to to Tokyo via Different links to across the US or go in the opposite direction and go across Asia and Europe and then to the US Which path would you like your data to take? How would you choose the best path to get your data to the Facebook web server in the US? Any suggestions What would you like? What but how would you measure so the performance criteria the things? How do we measure best? What do you define as the best path? What are you interested in in getting your data from your computer to the Facebook web server? Data rate. Okay, that may be one thing. What do you want a low data rate high? Sometimes you may want to hide data rates so a path made up of multiple links You would like to choose the path which has what of all the links along that path the one which has the highest minimum data rate Does that make sense? If we have that one's a hard one to think about But this is a a Bit different than what I wanted wanted to cover but data rate Two examples Here's a simple network There are two paths to know Two paths from node one to node four and the data rates of the links in megabits per second I'll not write them all in megabits per second Two paths from node one to node four and the numbers next to the links are not the cost. They are the data rates Which path do you want? The bottom path the top path Hands up for the bottom path Hands up for the top path Now be careful this in this example that the numbers are not costs the numbers are data rates Two megabits per second just in this example. Sorry The numbers are data rates. We need to translate them to costs But in this quick example, they're just data rates. So again, which path do you want? Why? It's faster than the bottom path. What data rate would you achieve from node one to node four using the top path? three sixteen It's not sixteen three three Remember data rate is a speed so You're you're sending data as fast as possible You can send it at five megabits per second to link to From link to from node two to look node three at three megabits per second and then the last link at eight megabits per second so across that path the highest that you could achieve over time is three You can't get faster than three because we call that the bottleneck link The lowest or the minimum data rate of all the links in the past It's the same as say the flow of water through pipes. You can't make it go any faster than the slowest flow rate So if you're transferring like 10 gigabytes of data Although it would be going at five megabits per second to node two it would then slow down to three megabits per second So that would be the limit On average how fast we can transfer from one to four so that's a With data rate that's a little bit Different from the the other metrics like delay which are much simpler. We sometimes call this bottleneck the bottleneck link Limits our data rate across the path data rate or throughput choose the path with the highest minimum Link data rate Any questions on data rate for best path so Path one two three four we could achieve a rate of three Megabits per second one five four we could achieve a rate of two megabits per second So we'd like to choose the top path. So we'd need to With data rate, it's a little bit more complex because we need to convert the data rates to a cost Any suggestions how to convert that to a cost? If you want to use least cost paths least cost routing the costs should be low for a good value Okay, you want to a low cost for a good value here? We've used we want a high value with data rate One way to convert and maybe don't remember this because it's what we can but it's a little bit off topic Convert it to cost by let's say Make it 100 divided by 5 To convert the data rate to a cost we get the inverse because we want a high data rate to relate to a low cost so we need to take it the inverse and We could consider a maximum data rate say of a hundred so the cost of this link would be 20 this link would be 33 and This one would be what do we get 12 is it about so this is one way to Convert data rates of links to costs. It's not perfect And you need to optimize a little bit, but we see now Look at the green numbers. What's the least cost path? Least cost path the top path has 20 plus 33 plus 8 which is 61 and The bottom one is a total cost of a hundred so the least cost path is the top one, which is what we desire So this is just one way to translate Data rates to costs This is the cost This is the data rate. We want the path with a low with a high data rate or a path with a low cost Where did the number 100 come from? Good question Usually in practice, it's it's set to the highest data rate of all the links Or some some number see it near them, but it depends a little bit about the designer of the network how to choose that With the other metrics, okay, that was the hardest one data rate You want to choose the path from your computer to Facebook which has the highest data rate Sometimes yes, sometimes data rates not so important data rates useful for transferring a large amount of data Because you can send it for example at three megabits per second in this example But sometimes we've only got a small amount of data to transfer a few packets To request a web page and get the web page in response. What would we like in performance there? What's the other metric that we could use to? to choose the best path seconds we and we we use seconds to measure Latency or delay Okay, we've we talked about delay the time to get there and back for example so if the delay of those links Let's say assign the delay of the links in milliseconds The delay in milliseconds The red ones are the delays of those links Let's say we measure do we know the link data rate is two megabits per second and the delay is 10 milliseconds Now they're related, but let's let's simplify and look at it from those two perspectives If we care about delay, which path they're equal, which one do you choose? Doesn't matter when we say least cost if we have two paths, which are the same Then right choose randomly. We don't distinguish between them so if we Change the delay To 100 here, then of course you should choose the bottom path. It has if delays of interest has a cost of 22 or that Maybe not a cost that delay is 22 milliseconds in total and the top path is 112 milliseconds So we choose the bottom path and delay can directly map to cost We want a low delay. We want a low cost So delay is easy if the delay is 10. We can just say the cost is 10 The data rate is more complex if we the data rate is 2 we need to convert that to some cost Let's say a 50 because we want a low cost, but a high data rate So two metrics data rate Related to data rate is throughput data rate delay What else? Let's say you're not your home user, but it's it's not you that chooses the path But your ISP your internet service provider chooses the path from their network to get your data to Facebook in the US There's two metrics that they can use what's another way that they could choose a path What else do you care about? or your your Network provider or internet service provider may care about time. Well, that's delay really Okay delay. Yeah, it's time data rate security Maybe you know that some networks are less trustworthy than others. Okay, it's routing for your business You have there are certain laws in your country that say that your data must not travel through this country So the route may bypass a particular country What else so security? Yes? financial costs money This path is going to cost us a thousand baht per packet this path is going to cost us 10 baht per packet choose the cheapest one So that's another thing that may take into account Usually we as end users don't have a say but the the internet service providers may choose the path Which goes through networks which will cost them the least in financial cost So there are different metrics the simplest metric is Which is commonly used is number of hops Sometimes it's hard to know. What is the data rate of these links? How much is the link being used? Maybe someone is using it so we can't use the full data rate What is the delay? Well, it changes over time What is the financial cost? It's hard to know an easy thing to know is How many hops so a simple way to measure best path is to define it by hops choose the path with the least number of hops But it's not it may not be the best in data rate or delay, but it's easy to calculate So that's another one hops Get back to what? What have we got? So different performance criteria are used They listed here number of hops cost delay throughput throughput or data rate Here cost is financial cost. Now just some examples of the criteria we went through The other problem or some other problems are when do you select a path? You've got data to get from your computer to some destination Do you select a path today and for the next year use that same path or Do you select the path? Send one packet across it and then the next packet you have to send select a path again and and try again So when do you select is another issue? So these questions some of the answers are on this table When do you select is the decision time and the two main options are? based on packets Individual packets the path is chosen per packet or based on sessions for example You set up a voice call Using some technology to talk between two people across a network Then when you set up that call the path is selected and for the duration of the call you use the same path So that's a session based decision who selects the path who's responsible for selecting a path in this network Who should select the path? Where are some computers your calculator, but which computer a Server so some special server maybe there's a seventh node in the network that has the dedicated role of Once it knows the network topology it calculates the least cost paths and tells everyone which ones to use So that's a centralized approach. We have one node That does it all for us There could be a distributed approach that these nodes themselves Try and calculate the least cost paths to everyone else so the nodes that are actually Participating in the network Calculate and determine the paths The third approach is the source Node 1 has data to send to node 6 Node 1 chooses the path All right. I want to get to node 6. I'll calculate. I'll use 4 5 and 6 and Sends across that path Centralized would be some other computer saying to node 1. Okay If you want to get to node 6 send to node 4 and that central computer would tell node 4 If you've got something to get to node 6 send it to node 5 and so on that would be a centralized approach a Distributed approach would be those nodes determine that themselves Node 1 determines. Okay. I've got something to go to node 6. I must send it to node 4 Node 4 determines. I've got something to go to node 6. I must send it to node 5. That's a distributed approach In the internet. It's mainly using a distributed approach The nodes participate in that selection and usually on a packet basis the other issues are How do we know about the links? Then other nodes in the network and the link costs Because if I want to choose the best path I must know this topology and I must know the link costs. The question then is how does node 1 know that information? And because things may change over time Nodes may disappear new nodes may arrive links may go down and come back up Costs may change And the other thing is how often should I update my information about the network? Let's go. So that's Where do we get the information about the network status the current topology the current link costs the current usage of the links and? How often do we update that information? There are different approaches Let's illustrate them with an example Some of the or the approaches are listed here, but we'll try and explain them with an example not this one Here's a node node 1 it has data Node 1 So you're node 1 you're one of the nodes in the network and you have data to send to node 7 Okay, you have a packet and you want to get it to node 7 Where do you send it? you were you were the computer that is node 1 and You want to get it to node 7 you know that there's a node 7 somewhere in the network. Where do you send the data? This is a different network than the example in the collection notes. There's seven notes It's different. Where do you send it? Your node one. Where are you going to send it? You've got a packet destination node 7 you need it to get to node 7 What do you do? Where do you send it? How do you get it to node 7? Where is node 2 and node 3? Well, we need to We need to know about some other nodes. Okay, that's the first point that think this is a computer running here the node It's got some data to get to node 7 It needs to know something about the other nodes to do anything Okay, so I'll give you a bit more information about the network and you'll see over time that the network builds up Come on get this correct We'll build up a network that has in fact seven nodes at the end What's the first one? There'll be a node up here another node here and I'll tell you who they are that this is node 2 and this is node 5 So it's typical You can assume that a node knows its neighbors Because someone has plugged a cable into there. So if you run and operate this node in Bangkok You would know who has links into your node So you would know that there's a cable going from your node in Bangkok to a node in Singapore Okay, there's a link there and another node somewhere else. Okay, so you know about the direct neighbors That's the the minimum knowledge that you would have at that particular node now The question is your node one you've got data to send to node 7. Where do you send it? You've got a data packet to send to node 7. What do you do now? send Send across send across both paths I've got a packet needs to get to node 7 all I know at this stage is that I have a link to 5 and 2 so one approach is to Send a copy of the packet to 5 and hope it gets to 7 from 5 and Send another copy of that same packet to 2 and hope well if it doesn't get there via 5 it should get there via 2 So without any other knowledge of the network a Simple approach to send data to the destination is send the data to everyone in this case all of your neighbors And we'll see that that approach is called flooding Send the data to everyone and the next step when 5 receives the data It will send to all of its neighbors And they'll keep doing that and eventually 7 will receive a copy Our aim is to get the data to 7 So one approach is what we'll call flooding send to everyone But we'll see that it's not very good. It's very inefficient Anything else you could do Node one instead of sending to both. What else could it do? Which one should you send to two or five? select one two or five Random Five okay, so you could do it randomly. You know that you have two neighbors Send the packet to one of them if you don't know any other information what else can you do? It probably won't find the best path though. That's the problem We'll see later what we do if we did it randomly so really if we want to find the best path we need to know something about the other nodes in the network and The costs of the links So let's say We would also can measure that or know the cost of each link that might make it a little bit easier So say the cost of those links We know they're our links this one's three units and this one's two Whatever the metric is Now does that help? Where would you send the data? Send to five why? It's the lower cost there. So one idea if you just know about your neighbors Send it to five Because that link has the lowest cost with the hope that five will be able to send it eventually onto seven Okay So if you only know about your neighbors then You could do it in that approach. Do you think it will find the best path the least cost path? Maybe maybe not. Okay. So maybe and we'll see later If we did send it in this direction Would it eventually get to node seven which is over here on the least cost path? well Not guaranteed So we'd We need to know more information to get the least cost path. What can we do? node one One approach node one asks its neighbors. Who are your neighbors? All right, so node one has links to five and two It sends a special message to five saying please tell me who your neighbors are and Tell me the costs of the links to your neighbors and It gets a response back and similar sends a message to two saying who are your neighbors tell me their link costs and it gets a response back So this is what a routing protocol will do It will exchange some messages between the different nodes to learn about the network status and Once that happens node one will have a larger view of the network. Let's say it did that and What does it do? Node five has a neighbor say draw it here. I know this but you don't that node five has a neighbor here Node one learns it because it sent a message to five saying who are your neighbors five send a message back saying my neighbor One of my neighbors is node three Similar node one sends a message to two two sends a message back saying my neighbors are Four and six. I'll just draw them so we can fit them in up here So this is the information that node one now knows about the network if it talks to its neighbors by exchanging some special packets That's what a routing protocol will do. It can ask them about their neighbors and After that one set of exchanges it learns about nodes three four and six and Can also learn about the costs of those links And we learned that the costs sorry Matoo here eight here and this one's five That's the knowledge of node one about the the network at this point in time Which path should we take now? Remember before we chose to send it to five because the link cost was two Now would you choose the same path to send it to five? Where would you send it? One two four is the current the least cost path so now with more knowledge about the network we can Choose a different path and hopefully a better path Because if we sent it to five By just knowing about our neighbors it would have went across a path which had a cost of seven so far But if we actually sent it to two it could have got across a path which had a cost of five a lower cost path But we still don't know whether the path via one two four will get to seven across the least cost path Okay, we've learned a little bit more information which is better but It's not still enough to make the best decision. What do we do now? We need to know about the other links the other costs so what node one can do instead of just asking your neighbors about their neighbors then ask nodes three four and six tell me about your link costs so Node one can send a message to three saying who are your neighbors? Of course it includes five, but it includes some others when it gets the message back It learns about the neighbors of three similar for four and six so by exchanging more messages in The network we can learn more about that network status The topology and the links the link costs So let's say we exchange with three four and six and we learn their neighbors so Turns out that three is actually a neighbor of four four and six are neighbors three and six are neighbors and there's another node Seven which is a neighbor of six and also a neighbor of three and in Learning that information so node one now has a picture of the network which includes this is in fact This is all the nodes in this example It includes the destination and I'll also write the link costs Now where should node one send the packet? Which path one? Sends to I think if you look one two four three Six seven Okay One to two two to four. That's five four to three six three to six is ten six to seven a total path cost of 12 Is there a low one lower than 12? 12 is the lowest Okay, so you'd find the least cost path there so the point is that You need to know this network topology and the link costs to choose the least cost path If you don't know it you won't be able to choose the least cost path You may be lucky sometimes, but most of the time you'll get a suboptimal path If we only knew our neighbors, we would have sent it to five Then five would have sent it to three which may have sent it to seven and it would have had a cost of 14 it wasn't this is a seven. It wasn't the least cost path Okay, so The more information we know about the network The more chance of choosing the least cost path. That's a good thing But what's the problem of knowing or gathering information about the network? It takes effort that is for node one to know about The neighbors of five it must exchange the message with node five saying who are your neighbors and get a response back So that's some overhead. We need to exchange just to learn that information the larger the network Hundreds of nodes for example many exchanges of packets need to happen to learn about the rest of the network And that's a bad thing that means We're using this network to learn about the network structure when we'd like to use it to transfer our data So the more we learn the better for making the decision of the least cost path But the more we learn the higher the overhead of transmitting packets through the network That's the disadvantage Gathering the knowledge is expensive, but the more knowledge you have the better decisions you can make Okay, so node one chooses the path two four three six seven. It's sending its packets It's got many packets to send and then What happens? Things change okay as the network is being used the cost of The cost of this link from three to four changes from four up to ten Some problem occurs Maybe the cost was related to delay and the delay has gone up very high What should we do? Wish I think you can see we this is no longer the least cost path, but how does a know that? How does a know how does node one know? How does node one know that this link cost has changed? We need some updates of sending messages not just in the first instance to learn about the topology But as the link cost change and even the links may change we need to continually get an update What's the current status? Calculate the least cost path maybe five minutes later get an update What's the current status and? Recalculate the least cost path and keep doing that continuously otherwise You'll miss this situation if we chose the path at the start of one two four three six seven and then while we're using that this link cost goes up If we keep using it, we're using a suboptimal path. So we need regular updates So for example What could happen is that node three? when its links Change It tells its neighbors My link cost to six has changed from four to ten and who then distribute that information to others So some way we need node one to learn that the path from three to four is now has a cost of ten So it's about How much information do we learn about the network? We want to learn more, but there's a higher overhead of doing that and How often we update that information? We want to update as often as possible And then we have an accurate picture of the network, but there's a higher overhead of doing that questions so in this case If node one learned that that changed to ten it could change the path to somewhere else, whichever is the next list cost path You'll find it So this the the right-hand part of this table lists some different alternatives for where do we get information from about the network? worst case use none don't use any information just Randomly choose the your neighbor to send to or send to all your neighbors That's the easiest No overhead of collecting information, but we'll most likely choose the a suboptimal path Use local information, which means really about your neighbors That was our first step. We know that our neighbors were two and five Use just the information about the links to your neighbors. That's local to node one You don't need to exchange any messages with them to know that you have a link with five Because someone plugged the cable in and you know in advance that there's a link to five Adjacent nodes means neighbor nodes ask your neighbors about Their links. That's what we did to expand. We said Node one knows about two and five it sends a message to five saying who are your neighbors? Who are your adjacent nodes? Sends back a response and that allowed node one to learn more about the network topology But it involves some overhead of exchanging packets One we didn't see you could ask the nodes along the a particular path about their neighbors and especially their link costs That's a special case and the last thing we did is we asked all nodes Think all nodes tell every other node about the link topologies other the network topology and link costs That's the best case In that will have the most information about the network, but it has the highest overhead When do we update? That is we do that once We could Continuously update we've always got new information especially local to the node Periodic that is every one minute send a message to a neighbor saying please update me about your neighbors Do it on a periodic basis? When there's a major change in the load, which means for example the link cost When this link cost changes Then that triggers an update for node three to tell everyone in the network my link to node six has changed to 10 So that's when a major change happens. We could update Or a link fails. I don't know the link from three to five is No longer exists That could trigger five to tell one. I don't have a link to three anymore so different ways to trigger an update periodic and and based upon events the more updates The better the information the better the routes, but the higher the overhead The the more information we gather The better chance of selecting the best path That's a good thing But the more overheads of collecting that information similar with updates the more updates we have The better chance of selecting the best path, but the more overheads we have so we need to make a trade-off of How much information we collect and how often we update that information and that's the major challenge of routing protocols in the Internet today getting that trade-off Appropriate last 10 minutes. Let's go back to We will not explain much here, but just to an example This is the same network as as one of the slides back How many least-cost paths are there so you've got it on your slide. I've got it somewhere else me This one how many how many least-cost paths are there how many least-cost paths So if I ask you to calculate the least-cost paths How many are there that you would calculate from anywhere to anywhere? In a network generally we'd like to allow anyone to Communicate with anyone else for example What is the least-cost path from one to six? We found that one before One to six was one four five six. Okay, so that's one least-cost path But there are other least-cost paths not from one to six, but say from one to three and from five to two and From any node to any other node The number of least-cost paths is 30 There are six nodes each Node needs a path to the five other nodes So node one will have five paths node two will have five paths and Each of the six nodes have five paths. So in total there are thirty six times five paths in that network, so With six nodes there are six times five Least-cost paths that need to be calculated you could do it. I Will not ask you to but you could go through and find all 30 paths If there are ten thousand Nodes there are ten thousand times nine hundred and ninety nine thousand nine hundred ninety nine About one million paths to calculate and that's where you need Computer to do it for you. We will not calculate them all, but let's list some actually Let's not let's try a new example a Different network not that network not the one I didn't went through in the example But a third network and I tell you I've calculated the least-cost paths And I find a path which is the least-cost and it's from node one to four to six to nine Add one more to three Let's say I've calculated in another network a bigger network the least-cost path from one to three is via four six and nine Okay I've done that. I've calculated Tell me some other paths least-cost paths in this network So you don't know the network, but I tell you the least-cost path What are some other paths in this network? Don't look at your picture It's a different network Completely different here. This one has many nodes more than nine if this is one least-cost path Then it means the subpaths must also be least-cost paths That's an important point we use in routing You don't know the rest of the network, but what we can work out from this that it must be that there's another path What? Let's say There must be a path from four to three Via six to nine which is the least-cost path as well So to get from four to three There's a least-cost path by six and nine because it's a sub path for the one that we knew about Why why is that the case? Let's say the past. I'll give you some more information I'll give the costs just as an example. This was our path and the costs let's say the links were Two three four and three so the total path cost is what is 12 So what my point is if we know this path That the subpaths are also least-cost paths and one sub path is four six nine three Or the segments of that path Why well consider what if it wasn't the case? What if there was a path from four to three? Which had a lower cost? Than ten what if there was a path say four seven three Another path in the network Which had a cost of let's say this was two and this was Four if this path existed Four seven three and if that was a least-cost path of six in total Then it means there must be a path from one to three One four seven three with a cost of two plus six of eight so if there is a lower cost path than What ten between four and three? Then there will be a lower cost path than twelve between one and three this is the To think about why the sub path must also be a least-cost path So the point is that this path is Not possible. There cannot be such a path Which has a lower cost than ten? Because if we say that the path from one four through to three With a cost of two plus ten is of the least-cost path Then it means that there's no other path which has a lower cost between four and three Otherwise this would not be the least-cost path So there can't be such a path four seven three with a cost of six Otherwise my least-cost path from one to three would be one four seven three with a cost of eight But I told you that the least-cost path from one to three is one four six nine three with a cost of twelve confusing Confirm it yourself over the next week and and look at some paths through our example network and see If you try some different paths, you'll see that it starts to make sense This is a path cost of ten The main point to take away is that in this part The sub paths of the least-cost path are also least-cost path The least-cost path one four six nine three a sub path is four six nine three That's also a least-cost path Six nine three is also a least cost this cost path nine three also Because if there were other lower cost paths then we could get from one to three at a lower cost than 12 What you should do is try and calculate the least-cost path of this example one because we'll see the answers Calculate several of them So if one to six four to six one to four five to six and you'll start to see that pattern that Because this is a least-cost path so is four five six. It cannot be otherwise


Hey everyone, hope you're doing well today. We got an interesting video We're gonna be going over ways to improve your income while learning to code So how can you make money while still learning now some of these ideas are not gonna pay your rent? But they're gonna give you some extra cash in case you want to buy a new computer or maybe upgrade some things in your office Or just have some extra money in the bank if you're wondering where I've been for the past week Then you're gonna want to check out grind real calm and grind real academy I put out two new products on the store. They're free one of them is a front-end roadmap And one of them is templates html templates that you can use for your personal projects or website I also made a course with Josh about chrome dev tools and how to use them We show you how to use all the tabs and had what you can do with each tabs and some of the hidden settings And it's just a really good course, and it's also free So there's no downfall and taking it think I've got about eight ideas here eight ways of making money a while Making projects and learning towards getting a job or either running your own company But how can you make money and learn at the same time the first one and one that I actually tried to do But it didn't turn out successful is get coin get coin is a website where you can solve issues Bugs whatever you want on github in return for money pretty much you go on this big Explorer where you can search up a bunch of issues and bugs You just find one that makes sense to you like this one looks really good. It is expired But let's pretend that's not there you need to fix a bunch of these functions They even gives you instructions and he tells you this one's a top priority And if you finish it you'll get rewarded a hundred fifty US dollar now What's cool with this is if you finish part of something and someone else finishes part of it Then together you will split it or you figure it out with the guy who opened the issue What's also cool is people can fund other people's issues So if you're running a project and someone really likes it instead of donating they can fund issues to Force more programmers to work on that project Another version of this is bounty source But I think bounty source is a bit more for professionals as you can see here There's big rewards over $5,000 US, but these issues are not very small. I mean this one's optimizing numpy That's not gonna be easy and that's not gonna be something you're doing as a beginner But there are some good ones in here But you gotta really search for them and you're gonna have to make sure that you're first in line to solve These issues because there's gonna be so many people looking to solve these bugs and return for money If that doesn't work for you and you want a little bit more risk a little bit more money And there's code competitions out there, which is really cool. You can put that as a hackathon I guess in your resume say oh in 24 hours. I've built this project and Nearly won $200 or I want $200 or whatever whatever it is So here you go and there's different marathons different hackathons like this one right here Something to do with insurance block you click on that tells you the instructions and what happens and then how much you win First place wins $28 if you're not into those and you want to take your time and not rush and not fight other people for it Then freelancing might be a better option now with freelancing you have in person and online Let's go over online. What I would do is hit freelancer.com up work I'm gonna put a link below for about 50 freelance websites and go and find a Issue that someone posted that has no one on it already because the problem with freelancing online is anyone from any country from any place In the world can freelance and fix that that problem So you're stuck with this issue of people who can charge 30% less than you and still make the same profit someone living in a third world country versus in Los Angeles they could both someone in Los Angeles is gonna need a lot more money to turn a profit Then someone living in a third world country And that's the problem with online freelancing is that you're most of the time gonna get beat by someone who's willing to take less than you But if you can find private clients online, that's ideal and that's best But you do need a bit of a reputation So it's gonna be tough if you have no projects or no previous experience and to do that to get that previous experience To get that first client the best thing you could do is go locally I'm gonna show you exactly what I would do and exactly what I've tried to do myself First thing I do is pull up Google Maps and search a bunch of businesses in my area. So we got this one right here and They don't have a website.   Let's see if it's really bad. No, it's a pretty nice website All right. So next let's go to another one that has a bad website Oh, so these guys don't actually have a website. They just have a Facebook link. So there you go There's a possible client. So you go to their door you walk in you say Hey, can I talk it to the CEO or to any marketing person and see if you guys are willing to work together and then do the whole story I'm an aspiring deved developer. I'm trying to run my own freelance company Or I'm trying to make some money before I get a job explain to them situation Maybe they'll tell you yes, this benefits you in many ways you learn to sell yourself You learn to talk to clients to be professional and build these relationships It's a good amount of networking because maybe they know a friend who works out of IBM or Facebook or whatever and they can Put you through them and they can give you some advice or maybe recommend you or something like that So those things are usually good going out to people that you don't know when a stranger is and breaking through that Like that scared bubble. It's really good One thing I've tried once and I think I made like a dollar off of it is to monetize your Projects either using AdSense or making it a sass. So one example. I really like is the app. I used to script my videos It's called storyline creator and as you can see here, it looks really clean It looks really professional, but I'm really convinced that it's just one guy who made this for fun because they charge about a Two euros a month for the service and I'm sure this guy makes a little bit of money on the side Maybe it was just a project. He was getting towards a job, but it works really well and I love it The route I went was to put AdSense on my project Which didn't really work out well because I had maybe like a thousand people check out the website But those are both good possibilities and they have pretty effortless and you can add that to your resume something a lot of you don't actually think about or maybe you do but don't actually do is Write a blog and maybe a YouTube channel and document your journey of trying to get a job One of my friends out there shout out to Craig Wadding. He's doing this He's not doing it for money, but he's doing it and he's doing really well He made a YouTube channel where he posts a bunch of videos on his journey And now he's posting a bunch of videos of these like calls where he's helping people out Anyways, he makes some good content. I hope this video was valuable. It was a really quick one I wanted to run through all the ideas and see if I can get everything for you guys Let me know if you've done any of these or got more ideas or think any of these are bad I would love to know below. I have not done everything here, but I know that if I had to start again I probably would have tried all these


your logging so I think it's just a very good mindset and very good practice and open incident management that is really what also Michael talked about I think two hours ago or something in his talk open incident management is a very good practice because there is no shame in incidents that really happen everywhere there are some really good examples I think also from companies like GitLab really having very open incident management and yeah I've never really heard anybody laugh about their incidents it's something that of course you're not proud of but the important part is that you learn from it and yeah that you also give others an opportunity to learn from it okay so let's go into an example this was a gap analysis that we conducted in our team nine months ago so we looked at these criteria that I listed for you and we asked ourselves how open is our project what I need to add and I don't want to tell you what image builder is because Andre very skillfully did that about 40 minutes ago so the important bit to know is our project is a hybrid project in that it is offered as a version that is packaged in Fedora and in Centro Stream and in Well and it's also run as a managed service so let's put it this way we had probably an advantage to services that only run as a managed solution parts of our openness I think come from from this aspect you know you could always run the service on your laptop or on your local deployment so therefore you were able to download the assets and inspect the code anyway and all of our code was on GitHub at all times so the first requirement was easy for us to satisfy the contribution workflow was maybe a little trickier but we luckily had an existing Docker stack that would bring up the entire managed service like you could do both we have a basically a way of setting up the development environment for the managed service but also for the local deployment the next one was already a little more critical so our team is working at Redhead and of course the issues that get created on GitHub are public and of course the issues created on Buxilla are to some extent public but we have an internal Jira instance that we use for tracking and planning and where you know where we create sort of the tasks and the issues that make up for our plans and for our roadmap going forward and that was still internal at that time also documentation there was a very noticeable gap I mean our documentation was there you know it was all sort of upstream and also available to rail customers but definitely not about the service so basically there was some developer documentation that was really geared at people running the thing on premise and running it locally on their computer but never like we never thought that it would make any sense to include service-related documentation because well our team is building the service we're maintaining it everybody else is just consuming it so all we really need is user documentation but if you really want to enable anybody else to understand the service to be able to contribute to it you need to open up that information as well in terms of communication again I guess we were mostly thinking at the time you know it's our team that's working on it we don't really get a lot of external contributions you know why would we have much set up there and we basically had an IRC channel and we said if anybody wants to reach out you know they can but internally we were using Slack in the team and then I remember I think one year after I joined I hadn't looked at the IRC channel in a while and you know I looked and then every time the day goes by in the IRC at least there's a line injected and then I scrolled up and somebody asked the message and I said there's really weird and then I noticed that yeah that's really not that's not really the image that we want to convey to any type of external contributor that we don't really care about that so yeah that was very helpful to realize that actually our ISC channel was orphaned and that nobody would really be encouraged of interacting with us if we don't react and then finally open-sighted reliability engineering at that point in time we had none of this we had no open status page no open logging, alerting or incident management we hadn't really thought of this at all I mean maybe another piece of information at that time I think when we ran the gap analysis our service was I think in production for something like five months it was publicly available so it was still very early and that's I think why it was also very valuable and great that we were able to tackle these things very early on so how does this look now like basically from a couple of days ago I updated this slide and I looked at all of these things again but first of all there's no more reds anymore there are still things that we're not yet doing but in aggregate in every section we have at least one green check mark and yeah green and red for me makes orange in this case so if you look at issue tracking and planning this was a bit of a process it meant informing the team informing the business, anybody who interacted with our issue tracker it is public now there's of course still a possibility to write hidden comments as there is in Buxilla or probably in any issue tracker because sometimes you want to put information there that is somehow relates maybe to secrets or to customer information that you don't want to expose but generally speaking all of our tickets are open in terms of documentation we worked really a lot on our service-related documentation to make it easy to understand for everyone looking at it how is the service deployed what's the architecture which components are involved where are they deployed how is everything working in terms of communication we started by creating a public mailing list because we figured that if you have to actively look into an IRC channel to get a message if that's not really part of your routine then messages may get lost but everybody somehow looks at email and if the email pops up in a mailing list there is a big chance that somebody will see it and will respond and we also registered a matrix channel and several team members were very active and wanted this so I think it will not be often soon so one of the remaining gaps in this area is that we still won't have any regular public meetings but as I said for me this is sort of more a thing that is well ideally we would have public meetings but then we'd also have to have an audience and we'd have to have regular contributors we of course have that because within redhead we're collaborating with other teams we have meetings with those other teams but we don't really have an external audience yet and I would hope that this would become a thing so that is the hope and open site reliability engineering we have an open status page now so you can look where the image builder is working and running and we still don't have open logging and I think that we will work on open incident management because I think this would be very valuable and it's very achievable I am at this point less sure about open logging and open alerting maybe alerting but logging I'm still very uncertain about I think that would take a lot of effort from our team right so this is the example I mean as I said our team is working at redhead and we're not the only ones going through this process so this is really an effort that goes across many teams in redhead and this is why I'm particularly proud of the next slide which shows that on console.redhead.com and in the inside services all of these teams have gone through this gap analysis so these are both screenshots basically of the analysis that they've done you can see there's a lot of greens there's also a lot of reds but they're working on it and this is something that I am really proud of you know that really speaking people have really understood that message so when I approached them they were very happy and very ready and actually Steph was key in that effort and so yeah I hope that we can get to similar results that we got to with image builder with all of these other services right we haven't really spoken about the actual problem that you know image builder is an open star service we consider it one but you probably didn't know that this room maybe you knew about image builder from under this talk or from Achillea's talk but you probably didn't know that it was open source or how open source it was so we've defined four requirements together with Steph like what how can you make sure that your service that anybody recognizes that your service is open so first of all there is a visibility requirement if you know you should see something that lets you know that the service is open secondly there is sort of a criteria of understanding people should be able from the reusable thing they should be able to understand what is the service architecture what are we looking at what are the components that make up the service the third one is actually more tricky than it sounds it's introspection somebody should be able to inspect the code but not any code if you want to create a skitsha or your experimental branch they should be able to go to the exact version of the code that is currently running in production because otherwise really it's a little pointless you might have fixed things in your main branch already but maybe for some reason it hasn't really been deployed yet and it would be really misleading it could also mean that if you run into a problem with an API and you want to look into the source code maybe there is no typing or nothing that will prevent a certain error from occurring if you don't really have the code that is running in production you might not really get to the answer you're looking for and then finally also contributions somebody looking at that at that reusable pattern should find a way how to contribute right that's it, doesn't sound very difficult overall I think and we've tried to come up with something that I will show you now and if you go to this URL you will also be able to experience it so this is image builder in reddit's console.reddit.com and at this point in time and we will be talking about this in the logo poll this looks very integrated so here you can see a little branch icon that sits up here and if you're a software developer you've probably seen this before and you might think what does that mean and if you click it it tells you this service is open source and you can explore all the repositories to view and contribute to the source code following this link I've conveniently opened the link already in the next tab that's what would happen anyway but just to make sure that we don't get any network hiccups let's just jump to that page you can see immediately what is the architecture of the service you see all of the components that make up image builder at this point you see the front end you see the back end that both of those are in the console.name space you see that image builder composer is actually in a different cluster somewhere completely different and then you also see that there's a work of lead and there are some databases that are running attached to both services if you want to go into one of these when you want to click into one of these components to explore the source code you can of course click and you will see that it does take you to the exact hash that is currently running in production that works for all of the components of course as you can see this satisfies the requirement of introspection of being able to introspect the code that is currently running and the criteria of understanding you can see which bits and pieces make up the service and maybe from your error or from your interaction error you will already know oh this was a front end error whatever I got some weird pop up that shouldn't be or the button was three pixels to the right and I really hate that let's fix that upstream that will be my reaction probably then of course you will be wondering how can I fix things upstream and then there is this section that tells you how to contribute so we have a developer guide we have actually a development stack that you can set up both for the front end and for the back end the back end of course includes the entirety of the stack in this case we have a way how you can reach out to us sort of the matrix channel the mailing lists but also the issues and pull requests the links are still missing here I should add those in but they are also publicly accessible and then finally you will see the assessment that I showed you as part of this presentation also here so you can see which things we are actually doing and which things we are currently not doing I will probably try to improve this a bit over time you know and add more hyperlinks that you see that the source code is open and unit testing so that you get a bit of a hint to each of these requirements how we satisfy them but at this point in time I really just wanted to show how open the service is and make sure that everybody who finds a gap or thinks that we don't deserve a green light where we currently have one raises it with us that's one of the reasons why we want to make this transparent and we want to expose this right so this is how it looks this is basically the thing so a badge that you can slap on your service makes people understand this service is open source but that also takes you to a page like this that then explains you know how does the service work which version of the service is running how can I fix issues in it right and now as I said this is just a button but we did try to make this as easy for you to use as possible it's really just three lines of code it's a reusable thing it's always to create something reusable also to make it consistent you want to have the same experience at all times it's very easy to write the java script thing that does a pop up and stuff and then every service the wording is different or maybe the icon is different the placement is different you really want to have a consistent experience that's why we started this within our organization to use the frontend components library and just add this there the open source batch and as you can see it only takes one argument and that's the URL to the page that you want to refer people to we don't want people to change the wording we don't want people to you know fiddle with the icon or anything like this it should always be uniform because that is how we satisfy this first criteria of visibility it should be recognizable you should immediately know what to expect and how to get it and then finally we're at the interactive part of this session we're currently thinking of what kind of branding do we want for this you've seen that I currently have added a branch icon because that was available in pattern flies icon library so that was easy but we were really thinking or really into minds a little bit do we want to create custom branding something that stands out something like the OSI logo that after a while you get repeated in many many places you will understand what it means and it will mean something very specifically and that would be opens our service and that would be option two custom branding or should we go for something that we currently have maybe add some color coding to it just to make sure to make it stand out to not make it sort of look too integrated into the service that's very technical it means something to everybody who's a developer so maybe it already reaches the audience but maybe not so I think we're a little bit into minds here and I would be really interested after you've all heard my talk which option you would actually be interested to see or which you think would really solve that problem of having an icon seeing it and knowing I've seen this before if I click here this service is open and I can actually inspect the code so maybe just with a very quick hands up I know you had very little time to think about this now but maybe just give me a gut shot two of you would go for the option one basically the known icons the forky me the generic icons okay that is 15 and who would go for option two custom branding okay are you holding both of your hands up okay so that was 15 to 9 that sounds like there's a slight preference for the forky me direction we haven't really decided anything at this point I'm very happy to receive more opinions on this to be honest but generally speaking I want to create something very soon that can be reused and that can be shared out through all of redhead services and through all of console.initially ideally later on also you know for anybody it's not it's maybe something that starts at reddit but it shouldn't be something that is restricted to reddit through its services and with that I'm at the end of my talk thank you for coming and for listening to me and now it's question time if you have any go ahead the problem with option two in my mind is that how to establish it that's something that people recognize of course until you do that the risk is that nobody will understand what it means that option one is preferable on the other hand if you can't establish option two then it's of course better that the term something was specific but until you get there the risk that nobody will understand it so how do you get to establish it for something new? exactly thank you that is the summary of the conundrum that I was facing where I thought I'd ask all of you for your opinions that's exactly the point how do you want to get the thing off the ground how do you want to get people to click it and to actually look for services becomes more mainstream that's a better time to try to move to something more specific for them people know the basic concepts the thing that I'm afraid of a little bit is there are other projects that do open source services already there is like GitLab for instance GitHub also to some extent like some of its code bases open even at lesson chairs their code base not in a very open way like they don't have a repository that you can commit to submit changes to but you know sort of this concept it's not really it's not new or it's like the main and that's also the thing I don't want to necessarily establish a Reddit brand I would rather have something that works for Reddit but also for the community something that can be very easily repeated without anybody thinking I'm slapping a redhead logo on my service why would I do that so I think the the barrier has to be low and it has to be accessible immediately and you have to understand it when you see it and that's I think the tricky part with custom branding as you say you need to first establish it a little bit and have several services on board which is why I want to have the reusable pattern because then of course we can swap it out at some point Martin how should I build the code okay so we have some practical experience with actual contributors from outside the team that tried to read the documentation and set up the circle yes that was a that is a very good point so of course yeah exactly so this part this part actually we should probably make that explicit here at least one contribution that proves that this is all working so if you don't like how can you prove that external contributors can follow the same workflow you need to have a contributor that has done it so yes we have had this in our case it was somebody from another team in redhead but we've also had many contributions from the public maybe not necessarily always to the entire service stack and as I've showed you architectural diagram there are lower level components anyway that you know it's very different to contribute patches to those you know also the development setup is very different for the lower level components you can run them basically on their own they don't necessarily need to bring up the entire stack that runs in console world but of course if you want to fix something in one of our APIs you have to be able to do that otherwise it doesn't work and yeah so we have examples for this I know this is something that affected us very much like until a couple months ago even inside our team you won't have different development environments and there will be like several co-students coming in and trying to follow these and some completely stock and this is where we said now that maybe they are not as good as before I think this is why this is overall you know even if you know the question can always be what's the business value of this whole thing why should your employer or why should anybody go for this you know why should anybody support this and it does make you much better as a team like these are the workflows that we used to the traditional open source workflows and currently if they don't work so for instance in Reddit at least I can speak for that environment a little bit we've broken this paradigm with services so teams I'm contributing to each other's services because it's not obvious it's not the same thing anymore you don't just go simply to the one repository that has the same name as the package and that is in a place where you would expect it and there are all of these links sometimes you have to click through several repositories until you find the thing first you go maybe to Fedora's package and then you realize ah that's the upstream and stuff but there is a way you can sort of retrace the steps and that's not necessarily the case with services it's sort of much more uh, intransparent and then, yeah, even across teams or even when you onboard somebody new into your team these are just best practices initially when somebody new onwards onto your team they are like an external contributor they maybe have no rights because they don't want them to do all of the things already so I think it's very general and it's just many of these things are general best practices they're not revolutionary and not new in that sense but I think overall they make for a very good assessment of how you're running your project any more questions? because we are out of time so thank you for your attention and yeah, thank you for that


Quick question. How many exterior angles does a triangle have? I've listed out 12 of these angles, but not all of them are exterior angles. We define an exterior angle as one that's made by extending one side of a triangle. In other words, angle 2 is an exterior angle because we just extended this one side. Angle 9 is also an exterior angle because it exists by extending this other side. However, angle 1 is not an exterior angle. Likewise, angle 7 is not and 4 is not. So how many exterior angles does a triangle have? Well, 2 and 9, 8, 6, 3 and 5 are all exterior angles, so 6 of them.