Hi everyone, Tasha here from Start of School Crochet. I'm going to show you today how to block your squares for the Sweet Treats Cal and just in general how to block squares. If you haven't already, if you're new to my channel, please subscribe and give it a like and a thumbs up and I want to say welcome if you're new. Thanks for being here. So I just finished my square that's going to be released on Friday for the Sweet Treats Cal and I love the way it turned out but as you can see it's a little bit wonky.  This is what I got off Amazon. I'll put the link in the description down below. So far it looks great. I watched one of Tony Lipsy's tutorials and I really was inspired to grab me one of these so if you want to grab one down the comments I will put the link. I'm gonna open this box up and it says it's a 100% guarantee so that's fabulous. Let's hope that that is. So let's unbox this together. You can always fast forward to the steaming part if you just want to get rid of go through this part. So it looks like it comes with this is a manual. It's like a nice good manual. Looks like a good troubleshooting guide and then there's a QR code to register it which is always good. You want to protect your purchases. So it's wrapped in plastic. It looks like it's a nice size. It doesn't look too heavy or cumbersome. I have a large steamer that I used to clean my house with. It's very heavy and cumbersome and I actually thought about using it for blocking but I was like nope. Don't think so. This looks pretty nice. It comes with a water cup. This I have no idea what this is yet but I'm sure I'll find out. This looks like it's used to brush stuff off but we're not gonna need any of that. I don't think. So the reservoir is pretty nice. Oh and it comes out pretty nice. It says an important notice. Make sure you read those. Alright let's get started. Okay so it says to fill the water reservoir which is this with water that's not treated tap water. So I'm gonna go ahead and use some azarca that I have because I don't want to ruin my device right off the bat. I don't know what it would do if it's treated tap water but I really don't want to risk that because I'm kind of cautious like that. I'm gonna read my directions. Oh here we go. This is why it's so important to read directions and I'm always like in such a hurry that I just want to like come on let's go let's do it let's do it.  Well maybe I can very carefully. Oh my gosh I'm not spilling it. It's a miracle. It says that it is ready to steam in less than 30 seconds I think which is awesome. So we can get straight to it after we do our pinning. Okay so all the water's in. I'm going to close this puppy up put it back in here. There we go. Now it's time to plug it in. I think we turn it on and it flashes a green light. Okay but so when this becomes solid and doesn't flash anymore that's when it will be ready to use.  It's solid already. Okay but we need to block this first with pins so we're gonna do that and I'm gonna set this aside. I went ahead and got some of these. Really awesome Knitter's Pride knit blockers. These are really great because they have lots of pins and they can go pretty deep on a mat but it makes it a whole lot easier to just block out your project. But first I wanted to say if you're using like I'm using a mat that doesn't have any kind of numbers or guides on it for you what I'm gonna do is kind of create my own little guides because this is just a child's mat and it doesn't have anything so I'm not really sure how big each square is going to be and I really really they want it to be all the same size for the blanket because I want the blanket to look uniform and and good. So what I'm gonna do is take a pin and I'm gonna mark it out or put make little punch holes actually because I don't want any kind of pin going into my project so I'm gonna do that. So what I'm gonna do is line these up in like a T kind of like if I had an L shaped thing. So I'm gonna mark off from 0 to 12 inches and just put a dot at every inch mark. Okay so I have 12 there starting at zero. I'm gonna move it on over and add two more inches on that side and then I'm gonna add two more inches over on this side too.  I'm gonna start off in the corner over here and kind of try to line it up with those holes that I created and use smaller corner ones that have four sticking in there. It looks pretty good. So now we're gonna start steaming. We push the little button here in the front. Let's see if it works. Oh yeah there it goes. So steam is coming out. You're going to hold it just over probably like this far over your project. You don't want it to touch it but pretty close and just slowly run it along and it's supposed to actually dry pretty quick after you steam it. So I'm gonna go through kind of like in rows I guess. Oh yeah I can feel it. I'm gonna go along the edges just to get those powder stitches. All right that's it. So you're gonna wait just a few minutes. You can do whatever you want. I don't know about you but I'm kind of really impatient and I want it to dry right now. Wow okay so it's already dry. I think it's been it's only been about five minutes and it's already dry. I hope I did it right. So I'm gonna go ahead and take these off and see what we have. Wow okay that looks fabulous. Look at how nice it looks and it just lays so so beautifully. Okay that's awesome. I love it. So my square is about 16 inches with the border which is gonna make for quite a large blanket. But I'm excited about it. So that's like 12. I'm gonna mark that there. Yep it's about 16 inches. Perfect. Okay you guys I hope you enjoyed this tutorial. Please leave a comment if you have any questions about this. I will leave the links for these knit blockers by Knitter's Pride in the description below. I'll also leave a link for the steamer down below. Wow I'm really impressed by this and I'm super excited about it. I can't wait to finish my blanket and do all the squares. Oh and if you want you can grab the link below for the Sweet Treats crochet along where it's a free crochet along. It's going on from January 28th until April 22nd and then we're gonna do two weeks of working the border and also giving away prizes. The yarn was gifted and gifted by WeCrochet and it is Brava worsted weight and it's beautiful. They have tons of colors so you can choose any yarn you want for the crochet along. I love the way this turned out. I'm excited. Alright guys happy crocheting.


Hello, thank you for having tuned into Think Tech Hawaii's Human-Humane Architecture and we're broadcasting live here and after that YouTube forever from our oceanic capital city of Honolulu, Hawaii. And as the nature of the show is architecture and architecture is usually considered to be connected with land and Hawaiians here call the land the Aina and they mean this literally and figuratively and comprehensively. So in these days we might have forgotten a little bit about what surrounds us and why I said the capital, the world's capital is that we're surrounded by the most water masses in the world. So we're the most remote place from motherland masses but we're the most in most water. And so we want to reflect on what surrounds us and how this could have a relationship to architecture. In order to do so we're going to bring in an expert and she has placed herself strategically in the middle of all the land mass and we're broadcasting live to St. Louis, Missouri. And it's 10 p.m. there now so we're five hours time difference. And who's going to be our guest and educate us about the oceanic and the sea is an architect and a graphic artist and a scholar and last but not at all least an educator. And her name is Alisa Kim. Alisa, thank you for being with us on the show. Hi Martin, thank you for having me. Good to have you and we met a little while ago when you were visiting us and gave a fantastic presentation that ever since resonates with me whenever I'm in touch with the water which I'm basically every day and I prepare myself for the show today with my daily diving and swimming and I went under the water and you as if it was meant to be the weather was clear down there and I had a view of the things you're going to talk about. But this is your show so please tell us and we're going to bring in picture number one for that to share with us why you're so connected to water and I'm going to start off and share one thing that you're both of us are genetically connected to water. Me in Germany we have the North Sea and your ancestry is Korean, right? But what we see is not Korea. So where is that and what does it have to do with your very strong from my point of view very unique connectivity to the oceanic in your very sort of poetically pragmatic and pragmatically poetic way. So where do you come from? Well, so the image that you see there is of the Sutro baths which are in San Francisco which is where I spent a lot of time as a kid and grew up in that area and I really like that image because I think for me it configures both this sort of idea of containment but also of escape which I think our ideas that we often project onto the space of the ocean and what I'm really interested in is trying to understand how we can think about a relationship between culture and nature that's maybe a little bit different than what we typically think of in the sense that we we tend to draw lines between those two entities and I'm kind of interested in understanding how we can actually blur those lines. Yeah and this is a fantastic opening statement because this is what happened to us here in Hawaii that we look at water almost like a commodification a commodity where it's whenever we built real estate on the land water is so the backdrop it's about views and it's about prime coastal property and real estate and looking at the water and having it as you know background for for postcards but that's that's sort of this surfacial view of the ocean and you have a very substantial view of the ocean and when you were just saying drawing a line I made me smile because your means and methods are actually drawing lines in a very fascinating way and we're gonna bring in number two picture number two which is your way of illustrating how actually we're conventionally looking at the oceans and the sea right yeah exactly it's I mean I think anybody can kind of relate to that image as the sort of typical political map of the world but what I think is interesting is that that's still the way that we tend to draw the ocean so the ocean in that image is really represented by this gridded space which is one way of thinking about it as a mathematical space which then can also be extrapolated as a sort of abstract space in that sense it's as if the ocean sort of disappears and it's really this sort of named and terrestrial bodies that are emerging out of that sort of flat yeah fascinating and the true scholar you are you did your your research your precedent study research how we always encourage your students to do it they're very binging in to say the best ideas you know are probably not the ones you come up with but there have been other ones pioneers in the area so you found another female researcher who did some pioneering work in that and gets us to the next picture you want to talk about her please yeah so Marie is actually kind of one of the figures that inspired a lot of the work that I've been doing she was actually the first cartographer to draw the ocean floor and to map the ocean floor and this was during the Cold War where it was sort of in the national interest in terms of security and defense to understand the topography of the floor and as a woman she wasn't actually allowed to participate in any of the expeditions so she was back in the labs in Columbia really translating a lot of the sonar data that was coming from the expedition ships into these kind of beautiful hand-rendered drawings mm-hmm well it's great you give her justice and rehabilitate her reminds me of the recent movie about the black women behind shooting people to the moon right so finally it all comes out that there's a lot of women power behind all that the great things so talking about progression and evolution of that research 20 years later is the next beautiful drawing here explained to us what that is yeah so that's essentially a sectional diet diagram of the ocean it starts to talk about the delineation of the ocean after the UN convention on the law of the sea which is the framework that starts to give jurisdiction to different sovereign states and really just kind of tries to start to organize the space of the oceans a little bit more through legislature mm-hmm yeah that's that's amazing because these are you make something invisible visible right because when when I swim in the morning on a very small scale you know I don't I don't see what I see is the natural boundaries where the reef is and where the reef ends you know that I see and I can feel but these are sort of invisible I mean they're human you said before the show terrestrial markings Ryan right and so so let's go to number five which where it where it starts that use of in your beautiful diagrammatic way make clear to us how things are so this is a what we call a figure of ground illustration what does it show yeah so typically we're used to an architecture drawing the buildings as the sort of black space or figure and here I'm trying to reverse that so I'm really trying to draw the ocean as the figure as opposed to the void but it's still in this image kind of devoid of any additional information so in some ways it's very similar to the political map that we showed an image to where we're really kind of just understanding the flat sort of surface the ocean yeah and the next picture is subtitled with a beautiful name that I will do my best not to mispronounce that's baby metric what is baby metric is the word but it's a bathymetric atlas of the sea and essentially so here what I'm trying to do is and kind of going back to some of Marie Tharp's drawings to really draw the topography of the ocean floor beneath the water and again really kind of trying to blur some of the boundaries between what we would consider to be land and what we would consider to be water and so here you kind of see a smoother more fluid transition between those two bodies mm-hmm and the next two pictures are zoomed in right and in certain cultural jurisdictional kind of zones and and this is also the background picture that that studio choose and color coded a little bit more but these are really sort of carefully crafted and and you know in your capacity of both an architect and a graphic artist sort of really tools for for comprehending the the otherwise invisible and if we go to number nine this again gets us back to to zone I mean we call this zoning right on land and how do you call that on water and what are these well so what you see there are a hundred and seventy seven new sovereign claims so it's essentially a hundred and seventy seven claims to territory under the surface of the ocean and and kind of along the ocean floor it's essentially the first new sort of land grab by multiple countries that we've seen in in kind of modern time mm-hmm at that particular scale mm-hmm so it traditionally also in education in practice we call this diagramming right you really bring out certain aspects of of a thing by emphasizing it through particular focus on certain lines and volumes and shapes and so the next one number 10 is is once again demonstrating something very graphically compelling and and intriguing that is so something very it's a very soft illustration for a very hard thing which has to do with money right yeah so that slide you're looking at the exclusive economic zones and those are essentially those were delineated in the original convention on the law of the sea so they basically say that along any nation's coast 200 nautical miles out from that coast remains the jurisdiction of that particular country mm-hmm and so I guess what makes the the sort of diagrams from the previous slide really important is that this is the first time that we're essentially claiming other parts of the ocean and and the reason that this was actually sort of allowed to happen was for the purpose of exploitation of natural resources and once mm-hmm so this is really sort of an imperialist map right exactly conquering which we're very familiar to here in Hawaii and so go go back to this interesting term that you bring in which is claims because that has to do once again with the next slide as well number 11 yeah so what you see on that slide are just kind of zooming in on three of the particular claims mm-hmm but if you can imagine you know I think it's it's interesting especially today when there's been so much focus in the public realm on this idea of kind of securing our borders and whether our borders are really protected from immigration or not to then kind of step back and realize that our borders actually extend far beyond what we can see kind of with our own eyes and that are our sort of countries take on a much different shape than we're accustomed to I think is particularly interesting mm-hmm super fascinating at this point when it take a chance to take a one-minute commercial break promotional break for our colleagues show and then we're going to be back with Elisa Kim's exciting narrative about the oceanic so see you in a minute you're watching think tech Hawaii which streams live on think tech Hawaii dot com uploads to YouTube dot com and broadcasts on cable OC 16 and O'lell 54 great content for Hawaii from think tech Aloha I'm Richard Emery I'm with co-host Jane Sugimura of condo insider Hawaii's weekly show about association living the purpose of these videos is to educate board members and condo residents about issues relating to association living we hope they're helpful and that they assist in resolving problems that affect the relationship between boards and their residents each week Thursday at 3 p.m. we bring you exciting guests industry experts who for free will share their advice about how to make your association a better place to live and answer a lot of very interesting questions Aloha we hope you'll tune in so we're back to Elisa Kim's oceanic realm and we've been talking about borders as a very unfortunate current issue in the world these days and so the the next beautiful diagram number 12 is dedicated to that right yeah so that that drawing collapses the new claims that I was talking about with the sort of current geopolitical map and so it's really kind of thought of as a as a new atlas in 2016 and the next one gets us a little bit more maybe to architectural I mean not saying that this is not architectural but this is especially intriguing and also want to point out to my dear friend and mentor Chris Ford who is a strong advocate of iddic images and composite drawings and take a chance to say how again how beautifully crafted these things are in a truly modern sense because you can extract all this information that you know used to build them up but could you also look at them in just a way of composition and find them really wonderfully balanced and composed and crafted and the background between this picture here when we were talking before reminds me of my childhood proximity to the to the coast because in northern Germany where I'm from we have a national park it's called Wattenmeer and that's where the sea over half of a day retracts so you can actually walk on the bottom of the sea for hours and then you got it we talked about that certain landscapes sort of temporarily appear their preals which are little rivers that's these are the ones where the water goes out as the last and comes back in as the first so I have some connectivity to that and so you once again we're illustrating that and analyzing that with your fascinating tool so let us know what and it's once again introducing an intriguing word and term that's hydrographia hopefully I got that set yeah so there hydro is from the Greek water and graphia is also from the Greek it means writing so I was thinking about this as a sort of type of water writing and a sort of communicative mapping that tries to both collapse the new territories and bathymetric contours of the ocean floor with an additional temporal dimension that's really inherent to the materiality of and perhaps the sort of events that only occur at the surface of the ocean so a lot of those lines that you see and the and the kind of stifling actually relied on a real-time collection of data where I was tracking vessels and other sort of floating populations to hint at a sort of not just the top or the bottom surface of the ocean but this idea that it's a sort of volumetric space mm-hmm so it's a form it's a three-dimensional form right that's sort of you know you can't comprehend it traditionally and conventionally right so you got to go through this sort of intellectual twist in your mind that this drawing is sort of a vehicle for right and and and along these lines the next one is is titled the ocean inside out this is actually pushing us to an even more extreme right yeah so these are actually inspired by some drawings from the 1600s that depicted the world without water and they they the globes kind of looked like they shriveled up raisins and so I wanted to sort of try to reverse our normalized perceptions of the sea by you know depicting the oceans not as voids but actually as figures mm-hmm here I've kind of extruded the space of the ocean out so you can see the oceans sort of emerging from the sort of void of the land mm-hmm mm-hmm yeah I mean the closest we get here is that you know when we explain Mauna Kea to people we say it's actually the largest mountain in the world if you measure it from the bottom of the ocean right and just from the above the water line it's not there are the ones who are taller so so that's the closest we get to it but then usually we don't think further so you for these compelling sort of you know gymnastics of of of thinking about it make us really see that so when I was introducing you in these different capacities and being an graphic artist and an architect and obviously this being your scholarly work but you pass this on to the to the next emerging generation in your role as as an educator and I have to say that the school you're at right now is is Washington University and it's one of the most prestigious schools in the country and we have someone that relates us that's Robert McCarty so I will say hi to Robert he's one of my mentors and so we will send him a link to the show so so yeah again share with us now in the remaining time in the show how you get students excited about your methodology and how they apply that to to the discipline of and to architecture so the next picture is 16 please so yeah these this was a studio that I actually co-taught with Igor Marjanovic who's the chair of the undergraduate program at Wash U and it took place in Florence Italy we were there with the students for eight weeks and we asked the students to envision a possible tenth island there are nine islands in the Tuscan Archipelago and we asked them to envision a transient space for world immigrants in Florence the sort of migrant crisis is really apparent and I think it's something that the students aren't able to necessarily avoid and so we wanted them to start to think about space through the eyes of some migrants and I should say that it's you know I think we think of these projects as academic exercises potentially more as rhetorical devices to bring some of these important issues to the fore rather than to kind of think of this as a literal solution to a problem problem solving you mean that versus problem near problem solving right they're really vehicles for thinking yeah and and again they if we get the next picture here your this is a perfect demonstration out of the textbook for what Chris Ford calls the IDD dimension obviously also a composite drawing which is carefully crafted and built up with data so you don't come from the artistic approach you come from a scientific approach data-based fact based and then basically built this built this up built the argument up and built the drawing up right is that fair to describe sort of the way of working yeah you know I think so this project the students name is Aria and she was really inspired by the sort of political undertones surrounding race and gender that function to sort of disrupt a migrants journey for freedom for a better life and so she actually used you can see in the image she used imagery from photographer Carrie May Weems who has a self-portrait series in which she confronts and disrupts famous European architectural iconography by inserting herself in places where black bodies have historically been excluded from and so Aria wanted to really make visible the experience of women along migrant routes which is also often invisible you were obviously looking ahead of time because by the time you did this which was a little while ago right things hadn't escalated on a national international stage as much as we have it now right so this is really timely timely matter right yeah I mean this actually we this was just this past summer I would say maybe in the midst of of the sort of escalation of all that yeah so the next picture here project yeah so this is the second part of Aria's project so the same student and she actually was researching some of the personal stories of the women migrants and she learned that actually the women felt much more vulnerable when they were inside of a refugee camp as opposed to kind of in transit and so it inspired her to develop or sort of envision the island as a transient home for women and children as they await asylum she used as a sort of tectonic or as a sort of material and structural logic the idea of the veil which many of the women spoke of as being something that they felt protected while wearing and it's a very ephemeral approach right it's a very reluse approach it's a very area approach why and so it's not about containing and confinement you know and causing more stress is about releasing that stress right and mitigating which is you know very important so number next picture second to last is is once again the great ability to zoom in and out so that one was really zooming in into the architectural fabric literally and figuratively speaking but we're going to number 19 you're going to zoom out again and have a more macro approach yeah so this is a project by a student named Lele who really kind of was taking stock of the stories that were being reported on of the sort of deaths that were occurring in the Mediterranean Sea and so this first image is a drawing where she's kind of really trying to understand the scale of what was happening yeah yeah and once again beautifully crafted while we show the last picture we're running out of time so we probably don't have time to go into detail but I want to sort of conclude and phase out in in thinking you for educating us and giving us sort of inspiration about our very specific place here in Hawaii where you know people having lived here before having been discovered were I I believe allowed myself to say and who am I I'm a Holly I'm not from here but I feel that they must have been thinking about this not very differently in a way that they try to understand things intellectually but also were very much sort of intuitively connected to things and we're trying to to match the two together and blend it and there are some of the artifacts of navigating with you know with sticks and bones and things like that all very you know you know pragmatical and research tools but at the same time also inherently poetic in their nature of not having been designed superficially surfacially but really kind of substantially so I think needless to say we need you here so hopefully we can get you here at some point in one way or another and thanks for that little appetizer which is much appreciated and well thank you for staying up so late back in the heartland and thank you for having me it was a pleasure thanks for enlightening us


Frisbee's got utility to it, actual use, right? It's it's has a certain shape and you throw it. This one's got a couple advantages There's some ridges inside the top of this frisbee. What do these ridges do? And if my answer is they look like a lightning bolt and they're just they look really unique. That would be design. Because it's all looks. The key word is I just want to protect the look. But if I told Danny that they've got this great aerodynamic shape helps with overcoming wind resistance, what type of pattern? It would be a utility pattern because it's adding some function to it. You want to give some thought to why you're incorporating certain features because the why is going to determine which type of application is best.


Also, President Mohamed Buhari has admonished political leaders to stay focused and uphold their ultimate objective of promoting the interests of the country, rather than engaging the self-centeredness that led to the loss of about a million lives in the Nigerian civil war between 1967 and 1970. The president said that when he received former stage chairman of the Default Congress for Progressive Change CPC at the presidential villa, he noted that the passion and zeal for improving the livelihood of Nigerians which culminated in the creation of the CPC had not dwindled, calling for more statelessness as Nigerians. Our main objective is the federal republic of Nigeria. We are human beings. We have our weaknesses and I assure you that the patriotism in us is hard-armed. We have gone through all the troubles from the 15th of January 1966 to date. You know what I mean by this. We kill about a million of ourselves in order to keep this country together. I don't think there can be any practical experience more than that. We are Nigerians. God will remain Nigerians and Nigeria will remain one.


Guys, this book really changed my life and I think it can change yours as well. Let me show you how. Hey friends, welcome back to my channel. My name is Greg and I am an online entrepreneur creating content that will help you become more productive and mindful. If those topics interest you then subscribe below and join our amazing community. Today I want to talk about this amazing book called The Art of Living written by a famous Vietnamese Buddhist monk called Thiet Nhat Hanh. I hope I pronounced this name correctly. If I didn't I'm sorry but I think it should be somehow correct. In this video I'm gonna present my top three learnings from this book. I'll tell you how it changed or how it affected my life and at the end of the video I'm gonna tell you a couple of steps that I learned in this book that will help you live a more meaningful and mindful life. So if you're ready let's just begin. Before I share my three learnings with you let me tell you a quick summary of this book. So this book basically talks about Buddhism, about how Buddhism can help you live a more meaningful, a more mindful, more happy life. And it shows basically a direct step by step process, a lot of different learnings, a lot of different know-how, a lot of different stories that will help you live a more happy life in this moment. And when I started reading this book I wasn't really sure if I'll be able to implement those learnings in this, you know, in my life, in my modern life, because these two worlds like the Buddhist world and then the real modern life, the real modern world are so different. But I was really shocked when I started implementing some of the stuff, some of the learnings from the book. So the first main learning from this book is there are seven main teachings to ultimate life. First there's emptiness. Now emptiness simply means you need to be mindful, you need to live in a present and this book gives you a couple of concrete suggestions how you can do this. I'm gonna share them with you at the end of the video. The second teaching is sinlessness. Now this means that we always search for certain signs, for certain patterns, but somehow we shouldn't do that always because, for example, if you look at the cloud outside, that's really an amazing example. If you first see the cloud and then all of a sudden the cloud disappears, right? At least that's what you think, that's what you see. So there's only sun. What happens is after a couple of weeks or after a couple of months, this exact cloud that you saw turns into a cup of coffee or tea that you have for breakfast. I mean, if that is shocking, then I don't know what it is. Then the third teaching is aimlessness. Now we always aim for something, we strive for something, we are always moving towards a certain goal, but you already have everything you need to have to be happy right now in this moment. At least that's the teaching from the book. The next teaching is impermanence, which basically means nothing is permanent. So we should really truly enjoy our life a bit more than we do right now because, as I said, there's nothing is permanent, not even our life obviously. So you have this one moment, this moment right now that is the most important one and you should really focus on it. Then there's non craving. We mentioned this before, craving, we always crave something, we always want something, but yeah, you don't need nothing else than you have right now to be truly happy. Letting go is the next one.  We're really suffering because of that and if we learn something to let it go, to let certain stuff go, pass through us, I think our life would be so much easier. And last but not least, nirvana. Nirvana is right now. So we usually experience nirvana when the flames of our anger cool down. That's when it happens and can happen right now.  Alright, that's the first learning. The second learning is that we need to abandon our current view of life if you want to learn something new, if you want to grow, if you want to change. Now, as I learned from this book is that Buddhists don't really believe in a bird and that they believe that, well, we know from the quantum physics that we are made out of energy and energy cannot be created or destroyed. So basically, we just transform, you know, from one form to another. And obviously, we are starting to understand this now and it's really mind boggling. And it's even more mind boggling to, you know, kind of try to understand this and live by this or truly, really truly understand this deep in your heart. It's really, really hard at the beginning. But if you want to do that, you need to abandon your current view of life, because otherwise you will never be able to understand this to kind of internalize it. So yeah, that's why this learning is so important.   For example, let's say you want to be famous, all right? Now, you know that if you want to be famous, you're really putting lots of focus on that and it takes your time, your energy, it makes you stressed. It's really some road you don't want to go on.  Now, to really identify what we crave and why do we crave something? We need to stop for a second and really go into our cravings, really try to understand what's happening. Why do we want something? What's the hook behind it? What exactly got us on this path? What exactly started this process of this craving? And also what's the suffering behind it? What happens if we don't get what we want? Because the only way not to suffer is to do exactly that, to follow this process. And because if you do that, then you will be able to let it go. You'll be able to understand, let it go. And then you'll be able to live in this moment, which is a super nice, beautiful moment. And it's really empowering. It's really powerful. So try to do that and try to remember insights set us free. By the way, guys, if you like this video, please press the like button below. So how does this book change me? Well, it showed an alternative way of life, a way of life that is meaningful, that is mindful, that is full of happiness and joy. Of course, I still have some issues to implement this in my everyday life. There's still stuff that bothered me, but really it's so much better.  Because once you start understanding those things, how well we have more than enough than we have right now and we don't have to always strive for more, it's so, well, it's relaxing. You can just, you know, you can breathe out and you have so much more energy.  It's really powerful. It's really powerful. Now, which action should you take to go on this path of mindfulness? Well, from the book, the first thing I learned is obviously there's meditation. You should consider start meditating. I've been doing it for many years and I love it. Soon I'll be posting a cool video about my 30 day experience where I was made in every single day. So subscribe below and you'll be informed when the new video is published. But yeah, obviously there are different types of meditation published in this book. So if you want to learn about them, check them out. But obviously you can find different apps that we can learn about meditating. One cool thing is you can do this so-called standing meditation or walking meditation. So while you're walking on streets, you can focus on your breathing and it's really powerful. It's so hard to do, but it's really powerful. So if you want to try the walking meditation, here's what you have to do.   I'm trying it now and it's actually pretty cool. Now people look at me kind of weirdly because first of all, I'm vlogging, I'm using my camera and secondly, yeah, because it's, well, it's kind of strange being so focused and stuff. But otherwise, yeah, it works really, really well. So yeah, try it out. And the second thing you need to do is practice the art of relaxation. Now what we usually do is we relax after we are tired. So we get tired and then we say, okay, now we're gonna relax. Or sometimes we don't even do that. We just say, well, we should relax, but we don't have time for that, right? So if you do this before, so you start relaxing before you actually get tired, I mean, this is something important because you will never have a break. You will never get sick. Your immune system will always be up and have so much energy every single day. So you should practice this because it's not easy to do. You need to unlearn what you already know about relaxation. And once you do that, you can use this power of relaxation to quickly recover, get your energy back and, well, thrive. Cool. And the best quote from this book, let me read it for you. As soon as there is stopping, there is happiness and there is peace. I mean, so empowering. I love it so much. Cool, guys. Thank you for watching. Don't forget subscribing to this channel. Don't forget to follow your inception on Facebook and Instagram. And I hope to see you soon again. Take care.


But it clearly emphasizes, too many young people have too many guns in their hands. And our job is to create a pathway to stop that. All of us, all these women have similar stories, similar places where they didn't feel seen, where they didn't know if somebody would listen to them. That's why it's so important for us to have this conversation today. We have been standing on the sidelines of women's health for too long. We must make sure that the women who have so often taken care of us are getting taken care of when they need it most. I am here to thank you for the leadership and to ask your support on three of the most serious issues facing us, gun violence, the fentanyl epidemic, and the asylum-seeker crisis. These are issues that need a 50-state strategy.


So, we're going to talk about Rust today. It's kind of a general overview and kind of why you guys should be excited about Rust. I'm Alex Burkhart. I'm a consultant at Mutually Human in Columbus, Ohio. We do a lot of rich web applications, Rails, Ember, stuff like that. We all do a lot of different stuff, wear a lot of hats, but one of those hats that I love to wear is learning and teaching. I love learning stuff, and I assume all of you do as well, that's why you're here. And I started learning Rust about a year ago. And at this point, I'm quite excited about it, which is kind of obvious since I'm up here trying to tell you about why I'm excited about Rust. And I guess my pitch is that Rust is the best that Haskell C++ and Python have to offer. It's managed to pull a bunch of people from a wide variety of backgrounds into its community, and those backgrounds have added a lot of influences in different directions. It's using a lot of, I guess, research from the last 40 years. It's not trying to be a Haskell-level research language, it's trying to just be a better language than what exists out there, because Ruby's garbage collector was invented in the 60s. And we can do better than that. We can learn from our mistakes as an industry, and we can write a better language. We can bring joy in programming to people who aren't writing Haskell or Lisp every day. And so I'm going to cover some of the highlights that Rust gives us. When they set out to actually write Rust, they set out to design a safe, concurrent, practical static systems language. And this means that safety and concurrency are not afterthoughts, they are explicit goals. And interestingly enough, practicality is also a very explicit goal in the design language. This guy actually comes up a lot in a lot of the features, a lot of the reasons why it does things. And these goals give us context for understanding the language as a whole. As more context, Mozilla has been building both the Rust compiler and the, an experimental browser engine called Servo for the last several years now. And they've been, they're both written in Rust, and they've been kind of co-evolving language to fit those needs of a real large compiler and a real large browser engine. And that sort of informs the goals. What do you mean? I will get to that. There's a lot of baggage with those two particular words. But you know, in some sense, the goal is to gradually replace C++. And we're not going to accomplish this overnight, and that's okay. C++, there's a lot going for it. And the CU system in general is full of amazing tools. But safety and concurrency are not part of those strengths, are not part of its strengths. And we're going to win those battles, those small battles, slowly over time. And hopefully we'll be able to write better software systems with Rust. The best explanation for this was actually from Rust for functional programmers. And it's that it keeps the abstract machine model that C gives us, but innovates in the language interface. So it makes a lot more sense when you think of C as a portable assembly language, and that was its goal. That was what it was designed for. And so all of the major concepts in C map directly to hardware concepts. And Rust keeps that strength. And that's really wonderful, because that stuff is really well documented. It's fairly well understood. And in general, it's a pretty practical way to design a language. But Rust gives us a nicer language to work with as a programmer. A nicer language to work with. But as part of this idea of we're going to keep the abstract machine model, we're going to have certain things like no runtime. This means that we had no memory overhead of a runtime, and it makes actually integrating with our languages really easy. And because we had no runtime, we have no garbage collector, which is also great, because again, no overhead and no pauses, which gives us predictable performance. And so these are all part of the idea of zero cost abstractions, which was one of the ideas behind C++, was that we're going to, at compile time, give us better abstractions than what we currently have, and they shouldn't come at a cost. And we'll see this come up in Rust, in our memory management, our polymorphism, iterators, even down to low level stuff like structs and enums. And that's going to let us build a better programmer interface. And that's really important, because we all have to work in this every day. So working with a language that's really pleasant is really important to all of us. But what's nice is, since it's not a superset of C, we don't have to carry C's baggage. We can use these zero cost abstractions and build a better language than what we could have built when C++ was designed. And so we don't have those same restrictions, and we get to build a better language. And in general, the syntax is not as important as the semantics of the language. So some of the things we do have, we have immutability by default. It's a really good thing. It makes reasoning about our code much easier. If you try to mutate things that you've not explicitly marked as mutable, you get a compile time error. It's great. Catch the errors really early. We have type inferences. We have type inference. So we have to annotate our functions with explicit types. But pretty much nowhere else. And that's pretty nice. We've all kind of agreed that types are a great documentation as well. So having them on our functions is really convenient so you know what your input and outputs are. But you don't have to actually type it out every time. Something we don't have, we don't have in C is enums, which are algebraic data types, just like you have in Haskell. So these are just variants of one type. And these are in addition to our traditional C structs. So those are our building blocks for our language, or for our data containers. And then since we have these nice enums, we also have destructuring. So we have our match statement where we can take an enum and step through each of its cases, and match on its shape, on its form. And this is really, really powerful. And it's not just a match statement. Matching structuring is pretty pervasive within the language. We have a very powerful trait system. These are very synonymous to Haskell's type classes. This is our methodology for ad hoc polymorphism, where we have different behavior per type for the same methods. And so this will also let us put bounds on our types when we're writing generic functions. And so you can rely on those constraints. And again, these are all compile time ideas. And we can use these traits to do all sorts of higher level reasoning. The traits actually let us reason about compile time thread safety. This is really, really important. Rust comes with a powerful iterator library, and it uses closures in a lot of its APIs. So you actually end up with very Ruby-like APIs for iterating through our collections. And we all know, and we know that during this iteration, it's all thread safe, and there's no runtime checks. And what's really interesting is you actually get faster performance. And if you actually had the runtime checks and you're doing indexing manually, Rust comes with a hygienic macro system. So you can write code that writes code. And it won't clobber other things or have naming conflicts. So this is a really powerful way to clean up our code. And you see here, we have our VEC macro, which just sort of expands into the code we would normally write. But it makes our day much nicer. Rust comes with built-in testing. And so we have test unit-like tests.  There's popular libraries for both generative testing, like QuickCheck, and also BDD, or specification-driven testing. And what's really cool is the Rust doc tool lets us generate documentation from our comments. But when you run your tests, it'll actually compile any of your code examples in your comments to make sure that your documentation stays up to date with what your code is. So any code examples you have in your documentation are tested as well. And then it gets really cool. We have a modern, sane module system where there's no global namespaces. There's explicit scoped imports. There's no header files. There's no painful linking that you have to do. And that kind of flows right into our modern package management solution. There's a tool called Cargo for managing Rust packages. It's our build tool. It's our package manager. It's our dependency management tool. It integrates with crates.io, which is our centralized package repository, which at 1.0 had 2,000 packages uploaded to it. Rust is the first language to ever ship with a package manager at 1.0. We also have remarkable error messages. The core team cares a lot about the error messages because it's part of the language interface that you deal with every day. And so bad error messages are considered bugs. And so this is super practical when everyone is new to language. You get really, really targeted advice on what you should be doing to fix your code. And that's part of the wonderful community that we have in Rust, because everyone right now is a Rust newbie. So everyone is very helpful, very patient. There's a lot of wonderful docs, blog posts being produced, talks. There's a discussion forum, an IRC channel, Reddit. There's meetups. The community has been really great. And that's part of the 2,000 packages. People are really excited. And so it's really fun to be part of that. But we've been talking a lot about what is in Rust. And that's cool, because it's a nice collection of features. That's not all of them, obviously. But this is sort of a highlight. But some of the more important ideas are what's not in Rust. Because being something to everyone is not really a virtue. So what isn't in Rust? Well, we have no null. Instead, we use our enums to have option result types. And this lets us have composable interfaces for when we have no values or when we have errors. There's no implicit type conversion, which is great, because we value explicitness and predictability. So you actually know what your code is going to do, because it type checks. And nothing happened by magic. There's no exceptions, because we've, again, value predictability. And doing cross-platform exception unwinding with no runtime is apparently really difficult, especially when you're actually having to deal with interoperating with our languages. So instead, we have really composable error types and a lot of tools for doing that. There's no inheritance, because inheritance is, in general, a runtime concept. So instead, we're going to truly favor composition over inheritance and simply not have inheritance be available. Again, there's no function overloading. It's a little confusing. It's pretty error-prone. And in general, we found that traits are a much more powerful, much more general way to provide the same sort of functionality. Speaking to a largely Haskell crowd here, there's no laziness, at least by default. And this makes reasoning about your code a little bit easier. And it makes composition a little harder. It's trade-off. But that's just by default. Iterators themselves are also lazy in Rust. There's no higher kind of types yet. They actually are wanted in the language. There's not a priority feature, because there's something you can add to the language in a forward-compatible way. It wouldn't actually break back with compatibility to add higher kind of types. So it's on the post 1.0 priority list. And it actually would actually improve a lot of things. And we can have very generic collection APIs in a way we don't have right now. But again, along with this is your favorite Haskell language extension probably doesn't yet exist in Rust. So there's no type families or GATs or whatever your thing is that you'd like to do research on. There are actually no higher kind of, but there are a lot of families. Yeah, so there's some stuff. But in general, there's a lot of things that we can add forward compatibility, and they were not prioritized yet. There's no strict purity. So in a lot of ways, we're aiming for memory safety when we talk about safety, rather than complete referential transparency. In practice, this is actually a pretty good balance. It makes picking up language pretty easy, and it makes actually the reason about your language still fairly straightforward without having to jump through a lot of hoops. And so speaking of memory safety, we don't have a garbage collector. I can't mention this before because it makes our FFI much harder. It makes our memory overhead much higher, and in general has a kind of performance impact. But on the flip side of that, we also don't have any manual memory management. You still have to think about how memory is being handled, but you don't have the ability to shoot yourself in the foot in the way that you do in Rust, in C and C++. Or at least Rust at least helps you aim a little better as opposed to letting you do whatever you might not mean to. So that means that because we've removed manual memory management, we don't have point arithmetic, we don't have null pointers, we don't have null at all, we don't have double freeze, we don't have never freeze, we don't have dangling pointers. So we've moved a lot of the things that you make errors with all the time accidentally unless you're writing perfect code. And so this is just the kind of way that we've removed a lot of the unsafe elements while retaining a lot of the control. Because that safety is an explicit goal. And so having no garbage collector and no memory management is kind of aligning with those goals. But Rust does take special care of its memory to achieve those safety goals. Very explicitly, our idea of unsafety in Rust is explicitly memory safety. It kind of falls into these categories where if you're accessing initialized data, you have kind of undefined behavior. If you're writing invalid data, so if you're writing random bits to an enum's memory location, that would be undefined behavior again because who knows what it's going to do. If you start breaking our aliasing rules with our pointers, data races between threads is actually considered a memory safety bug. And so is calling foreign functions because those might modify something in an unsafe way. So you can't really rely on that. But these are problems you cannot run into in safe Rust code, which is 99% of Rust code that you'll encounter. And so the other thing here is that unsafety is not recursive. It doesn't infect everything in the same way that IO infects everything in Haskell. As soon as you've touched IO, it's touching everything. This is a safe foundation to build on. And really what unsafe means is that a human has checked it rather than the compiler has checked it. You can't rely on the compiler when doing these types of things. And in general, you can't necessarily rely on the compiler to fix all your problems either. You can still go out of your way to end up with reference count cycles that end up with a memory leak. You can still end up with deadlocks when you're doing multi-threading. IO is not necessarily considered an unsafe thing, but you can do IO and then end up with problems. And same thing with integer overflows. If you're not careful, you can still make some mistakes, but not necessarily memory safety errors. You don't really want these things, but they're not things the compiler is checking for. So let's review some of our normal memory management ideas, our strategies, and that will give us context for more of what Rust does. So first, we have kind of manual memory management. This is what you have in like CRC++, where you have explicit control over every single resource that your program ever touches. And it's externally performant, but there's no help at all for doing that. I mean, you can run static analysis tools outside of your tool chain, but in general, the best thing you can kind of hope for if you make a mistake is a memory leak that doesn't go to large too fast. But there's still lots of ways in which you can have undefined behavior or outright seg faults that crash your program. So in general, when you're doing manual memory management, you must never make a mistake, and that's really hard. I'm really bad at that. I make mistakes a lot. So a lot of my experience has been with garbage collector languages, where you have List, Java, C Sharp, Python, Ruby, the list goes on. They're very popular, but there's no real control over how you allocate memory. Everything gets heap allocated, everything gets kind of collected all at once, which you don't really have control over. It doesn't really save you from memory leaks, but it does save you from a lot of the undefined behavior or crashes that you get related memory management areas. One of the newer ones is automatic reference counting. And you'll see this in Objective C and Swift. And so this was like pre-revolutionary tech from Apple, where it does a reference counting in line, and as soon as something is no longer used, it'll be collected. So it's kind of an amortized garbage collection strategy.  So with those in mind, what we have in Rust is a system of ownership. This is something that aligns really well with all of the goals that we've kind of laid out so far, where we retain all of our explicit control and predictability over our memory without necessarily imposing any sort of runtime cost, and without introducing any of the undefined behavior or segfaulting. And it'll also limit most of your memory leaks as well. It's going to handle all of the allocation, initialization, and cleanup of all your resources. So if you're familiar with RAII, it's a strategy we use in Rust for doing all of this. And so it's going to basically write at compile time the perfect memory management code that you would have written in C++ if you were perfect, which is great, because it's a computer and it can do that every time, and I can't. So all those violations that we talk about when we talk about double freeze, never freeze, those all become compile time errors that you're alerted to as soon as you write them, as soon as you introduce them, as soon as one of your team members introduces them that you didn't know they did something. And so this is probably one of the most important ideas in Rust, and so I'm probably gonna spend a little more time on this. The general idea behind ownership is that we have a single owner over every resource, which is in memory. So that resource is managed, and it's gonna be all managed for you by the compiler. It's gonna insert all of the allocations and freeze for you at compile time. If you ever want to do any mutation, you have to have exclusivity. You can't be referenced in it from anywhere else, and if you want to share that resource with anyone else, you can't be mutating it. And so this will prevent an entire class of memory errors where both single-threaded and concurrent memory errors, because as soon as you get a fairly large system, it's really hard to reason about your memory in the same way that it would be in a concurrent program. What's really fascinating about all this is that this is a compile time idea. We don't have to worry about this. There is no runtime cost to this. It's inlining each of those calls in the same way that you wouldn't see. So we have a single responsible owner. And so each time you declare a variable binding, a name binding, that becomes the owner over some resource. And so when that name falls out of scope, it will recursively drop anything it owns. And so when it drops that stuff, it's gonna run a destructor or just free that memory or do whatever cleanup it's necessary to do. And so in this example, we're gonna allocate some memory by initializing a new color enum. We'll access that memory, and then when it falls out of scope, that memory gets cleaned up. And this allows us to do safe memory management. And what's really neat is that ownership is a tree. So each enum, each struct, each function, each thread, it all owns its own contents. And so when it falls out of scope, each thing is recursively freed or dropped. And so vectors are heap allocated dynamically sized arrays. And so when we end up dropping our vector, we end up dropping each of the coffee enums, which then in turn drops each of its temperatures in this example. And so this is that idea of responsibility where if you own something, you're now the one thing responsible for cleaning it up. And this solves all of our initialization and cleanup problems. Whenever we want to do newtability, we can rely on ownership for that as well because we know the owner is the one responsible for doing everything, responsible for providing access to that resource. The owner is free to do mutation because no one else is watching. In this example, a box is a heap allocated pointer to some contents that owns its contents. And so we can sit here and we can mutate that as much as we want. We'd like and reheat our coffee. It has exclusive access to its resources. So we don't have to worry about anyone else carrying that we've mutated it. So no harm, no foul. We can even transfer ownership. And we can have the responsibility of cleanup change midway. So in this example, we start off with our coffee shop owning the coffee box. And when we assign it to the customer, that will transfer ownership. That will copy that pointer into the customer object or the customer name. And now the customer is responsible for cleaning stuff up. And what we've done here is we've now made accessing the coffee shop, the old owner, invalid because we can't rely on it for anything anymore. And it becomes a compile time error to access it all. This prevents any aliasing errors or any use after free errors because we know that the new owner is the one responsible for it, which means that if we're still trying to use the old owner, we're probably making some sort of mistake. So let's just catch that early. We'll catch that before we actually run anything to be compile time error instead. But this is kind of a limiting system of things. So it really helpful to actually be able to, whenever we want to, alias stuff. And so we can use borrowing for that. In Rust, the ampersand operator is the borrow operator. It's not address of, even though it kind of acts the same way. It creates a reference to some piece of memory. And so in this example, we can all share, we can all read from that same resource. You get as many immutable shared references as we like. And what's really neat about this is that those references are guaranteed to be valid for lifetime of the owner. So there's a system inside the compiler called the borrower checker that will actually be computing the lifetime of the owner and making sure that our references are never invalid while there's still borrows out. And so if you accidentally free something too early, you'll get a compile time error instead. And so that's a really, really powerful idea that helps out a lot with a lot of our memory management errors. But if we want to do this, we have to pick one. We can't have both aliasing and mutability. You can mutably borrow something which prevents the ownership transfer, so you don't transfer responsibility from the original owner to someone else, but you can allow mutation. While this happens, the owner is also unable to access that resource. So while that mutable reference is in scope, the owner can't read it as well. And this is a general idea of mutation requiring exclusivity. If only one person is ever able to read or write from something, then no one cares that it's changed. But if someone is reading simultaneously, it gets very fuzzy on how that works and you get all sorts of fun errors. So we now have ownership, we have a mutation without ownership transfer. And so all of these things are kind of the general rules for how ownership works and how we do memory management and rust. And this allows us to build kind of safe abstractions. But it doesn't really solve all of our problems. So in general, we actually have ways to break those rules and we can build safe abstractions on top of that unsafe idea. So even within vector, where you might be resizing stuff and reallocating new memory as the vector grows, that requires a little bit of unsafe code. But once you have that unsafe code and it's human checked, we know that we have a safe abstraction to build on. It seems like a doubly linked list. It's very hard to have a doubly linked list that's mutable where you only have one reference to it because you have two mutable links and doubly linked list. We also have a couple of reference counted smart pointers. Whenever you clone a new one, it will update that reference count. But those provide us shared ownership. But that's a runtime idea now. It's not a compile time idea. You don't know who's gonna be the last reference kind of pointer left alive. And so once we've built that unsafe foundation, that provides us a safe foundation to build new code on. This requires a little bit of human verification. You don't have the same compile time checks. But so through that, we can build a lot of concurrency building blocks because threads themselves also follow the same sort of ownership rules. They own their resources and in the same way that ownership guarantees us all these nice things in a single-threaded environment, we get the same guarantees in a multi-threaded environment as well. We actually use the send and the sync traits on our types to ensure that we're doing thread safe access correctly. But we can do all this at compile time. And it's all library based. This isn't baked into the compiler. So I talked a little bit earlier where I said that data races were categorized as memory unsafety. Or if you have two things accessing the same thing, two threads accessing the same data where at least one is unsynchronized and at least one is writing, then you don't know what each one is going to be doing. That's a data race. But we know that through all the rules we set up with ownership that we can avoid that. Because we know that we're either going to be sharing immutable data or that we have exclusive access over immutable data. And this allows us to have sort of several different ways in which we can do safe concurrency that's guaranteed at compile time or we can actually do runtime synchronization. So we can forbid aliasing. We can forbid mutation or we can require synchronization. All three of those models will provide us safe concurrency. So it's really, really flexible, multi-paradigm. So we can try a shared nothing model, right? Because we know the threads are meta owners of their memory. Whenever we move data between the main thread and the child thread, that ownership is also moved from the main thread to the child thread or from the child thread back to the main thread. So we can start off here with a channel and it ends up giving us a transmitter and a receiver. And that channel is a multiple producer, single consumer channel where we can clone the transmitter end, move the ownership of that new cloned channel into the thread, into the child thread, and it's still connected to that same receiver. We can then make up whatever message we want. That message itself in that child thread is owned. When we send it through that channel, the receiver receives that message and now we own it in the new thread. And so these things are all just moving between threads but it's all ownership-based. There's no case here where we end up sharing any data. And so we sort of have this safe access through our channels, through messages by sharing no memory at all. When all of the transmitters hang up, when they're all dropped, then it knows that there's no more messages to be received. So this is sort of emulating the actor model where you share nothing. We can instead provide shared immutable memory and this lets us know that we're never going to actually end up mutating anything. And this is sort of like the Haskell closure functional model of doing things. So we start off with the same sort of channel idea. But instead this time we have a huge struct that we don't really, we wanna share it between our threads but we don't necessarily want to copy it around. We don't want any one particular thread to own it. So we can actually clone that atomically reference kind of pointer that owns our struct. And then we can put that into, we can have ownership of that pointer be transferred into the new thread. And regardless of which thread actually finishes first, it's all being countered at runtime in a thread safe way. And then whoever is last person to own, last person to drop their reference kind of pointer is actually the one who actually is responsible for dropping the owned contents of that pointer. And so each time we increment, each time we clone it, we increment a counter, each time we drop it, we decrement a counter. And so we were able to provide safe access to immutable data. And this requires no synchronization either.  You can take sort of the functional approach, which is instead of actually mutating things, providing a new copy that shares a lot of the internals. Or you can actually do plain old synchronization. If your resource is actually not highly contested, then synchronization is actually not really that bad of a thing to do. And so in this example, we sort of had the same stuff where we've instead of putting our struct directly into our arc, we instead put our struct into a mutex and then put the mutex inside the arc. By doing this, we know that each thread has access to the mutex. And when we call lock on it, it'll give us back a guard, what is a structure that will give us access to the inside of that mutex. We can go ahead and we can change things. We can mutate stuff because we know we have exclusive access to it after unlocking the mutex. And then when that guard falls out of scope, it will relock the mutex for us. And so this kind of gives us that classic runtime synchronization that we sort of lose when we are in other languages. So the mutex controls all the access in the classic sense. It's an atomically referenced kind of pointer. So it's a thread safe way to do shared ownership. So each time you clone it, it'll give you back another pointer and collectively all those pointers own their contents. And when the last one is dropped, the contents are dropped. So I get a lot of questions when I talk about Rust, the biggest one being sort of like, when would I use Rust? Especially people who like, I don't write C++ right now. So it's kind of not compelling when we talk about C++. And in general, it's, you know, multi-purpose language. But if your application is CPU bound, right? All of our, even our phones have four cores now. If your application is CPU bound, let's actually utilize all that nice concurrency stuff I just talked about where you can write multi-thread applications and use all four of your cores. And it doesn't have to be scary. Like you can write a program that involves concurrency and pointers and no seg faults the first time. It's actually kind of fun. If your application is IO bound, then it's also something like, you know, if you're waiting on something else to finish for your application, like a disk, network, whatever it is, some extra new job, then we can utilize concurrency again because IO bound applications are highly concurrent. And Rust, by having all of its concurrency mechanisms be library-based, rather language-based, you can just pull in one of the lightweight concurrency libraries. We're the popular one right now is MIO to do lightweight concurrency. But it uses all those same ideas of ownership to ensure its safety. If you have an application that needs low latency, and not just fast, but predictably fast, you know, to hit 60 frames a second, you have to be incrementing that frame count every 16 milliseconds, predictably, consistently. That's really hard to guarantee with a garbage collector. And by Rust having no garbage collector, this is in all these safety guarantees, this is made for a really large game development popular community within Rust. People are really wanting to write game libraries to do game development. If you are memory constrained, you know, we all talk about memory being really super cheap. If you work on servers, and if you work anywhere else, if you're doing embedded software, if you're doing mobile devices, if you're running inside another process, you don't necessarily want to balloon the memory footprint. So Rust is a great choice for that since there's no runtime, there's no overhead on any of your structs or enums. If you need to be interoperative, if you need to actually be working with other libraries, other languages, you know, we don't plan to rewrite the world with Rust. We plan to work with the rest of the community, interact with that entire, you know, battle-hardened CU system. And CU is the lingua franca of computer systems. So if we can have really great CU interrupt, which we do, then we can write programs that interact with CU programs really easily.  And this is a great thing when you have like a polygot environment, you just slot it in where it's really useful, where you need some of these other things. And so people are trying to build operative libraries or just operative development.  Unless you require portability. And that's not one of those, that's not one of those things that they're not great at. But Rust compiles all the Rust code into LVM Intermediate Language, which means that anything that LVM targets, you can cross compile your Rust code and target that platform as well. So now you can write native multi-platform applications with Rust. So you get sort of a dream of write once, run anywhere, thanks to LVM, with whatever caveats LVM carries with it on your platform. If you have a requirement for high security, we write most of our most critical security infrastructure in C. And when you say it like that, it sounds crazy. I mean, Heartbleed, which affected everyone, was a buffer over read. These are problems that we can solve with computers. We don't have to make those mistakes every single time. Like you can still have buffer problems if you allocate buffers, but that's not the default strategy in Rust. It would look really weird. You immediately ask why we're doing that. And so there's no crypto experts writing crypto libraries in Rust yet, but you can at least start taking advantage of some of the security benefits of not having your program written in C++. Like use some of these modern language features to have a more secure application. And we talked a lot about safety, but a lot of that comes at compile time. But if you have requirements for high reliability, even though safety gives us all these nice security features, it really provides us a lot of reliability. At runtime, we're not gonna be surprised. And this is really, really critical if you have a really high cost for downtime. If you make lots of money per second every minute you're down, it costs you a lot. Rust is a decent choice for that because you're gonna be surprised less at runtime. Or if it's a really high cost to redeploy your application. That's also really beneficial that you're not surprised after you shipped all of your embedded devices to all your customers. And then you find out you have a bug at runtime that affects everyone. If you're deploying anywhere but a server, it's quite compelling. So all those things end up meaning that Rust is just a general purpose programming language that's great to work in for making great software. All those modern tools, all those modern features, it's highly expressive. And so you can focus on solving your problem rather than working against a language and against bugs that we've sort of already solved with a computer. And so the big news was that last Friday was 1.0. We released, it was a five-year effort, largely funded by Mozilla, to build the Rust language. And 40,000 commits later, we have language that is gonna be guaranteeing stability. So thank you to the 1,000 contributors to Rust. But so that 1.0, what does that mean? That's the core language and that's the standard library, stability benefits or stability guarantees. We know that code that compiles on Rust 1.0 is going to compile on Rust 1.1, which is gonna come out five weeks from now. And then it's gonna compile on Rust 1.2 and so on. We're on a six-week train model just sort of like the browsers are because that's apparently a great way to develop software that continues to work. And so this is just the beginning. We're gonna end up getting those higher kind of types that'll make a lot of APIs much nicer. So from today, you can go out and you can start learning Rust. You can start building better software. Tomorrow at Landcom, there's another Rust talk. It's a workshop by Jared Roche. So if you're interested in more stuff, go see it. If you're in the Columbus, Ohio area, stop by the Columbus Rust Society. If you would like to hire my company to come write Rust for you, please do so. Mutually human. We're in Grand Rapids in Columbus, Ohio. Or come work for us. We're also hiring. So thank you.