 Hello and welcome back. This is another Q&A plus plus, I guess. I Decided to do another Q&A fairly quickly after the previous one mostly because and we'll talk a bunch about this on stream After we had some Issues with the site that did Q&A for us last time I reached so I reached out to the people who maintain that site and they were actually working on a new Version of the site that doesn't you know fall over if lots of people are using it at once But they got back to me after I'd started writing my own As I wrote my own which is called we were wondering comm I put the link to the place where you can submit questions for this particular event and vote for questions and stuff in chat and In this stream, I basically want to test that it works. So please go use it Please don't double vote and stuff. It's not intended to prevent people from like double voting in a in any kind of like malicious way But just see the things generally work the interface updates Like you see questions being marked as answer Just I just in general want to see that it doesn't fall over and that it roughly does the right thing and So that's one of the reasons why I wanted to do another Q&A is that now that that site works at least in theory I wanted to test that it works in a sort of real scenario and the other reason why I wanted to do another Q&A is that I Only barely got to compare the new camera. I have to the old one I had on the last stream because the cable came in the mail during the stream And so it was very like let's just see if we can get this to work last segment last minute And then the third reason is last time there were a bunch of questions I didn't actually get to and so I figured that sounds like there are still questions out there So we should just try to answer them and see how well we do I Think the next question now is going to be what topic do we want to cover first? let's do Camera comparison first because that way if it gets messed up I can just restart the stream rather than doing it in the middle in which case it gets weirder to cut Yeah, let's do that. Okay, so It's it's not gonna be very long this is just I used to have a camera I now have a different camera and You know for other people who are thinking about using an actual DSLR for as your webcam Basically for things like streaming or just for meetings for that matter if you want to look real fancy It can be really hard to figure out like what cameras to get which ones work How they work how well they work? So let me switch to the view that lets you compare them in theory boom You should now see a side-by-side of one camera there and one camera there So that camera is my old one that is the Panasonic Lumix G7 And it's connected to an Elgato cam link 4k One of the things you'll notice is actually the audio sync is a little off on that one and the reason for this is because I Used to have to set an audio delay in OBS to match the delay that's introduced by that particular camera and connection thing which is Unfortunate because it means that there's additional delay to the stream whereas now I've removed that audio delay because the new one does not have a Delay and so now you'll notice the delay on the old one at least in theory The other thing that is different here is that the new one has autofocus as you'll notice when I point to this camera The focus doesn't change if I point to this camera the focus does change This is actually It's really really handy Because every now and again I want to show like if I want to show a cat which we all know is very important If I show the cat up to the camera It'll be out of focus with the old one because I had to like either I had to use the So there's a button you can like hold down the shutter button to cause it to focus But the button is too far away. I can't reach it. So that's why I have let me see if I can find it I have a focus stick. So this focus stick, which is really just a wooden stick I used to hit the button so that I can trigger the focus And it got so annoying that I've now just set it to manual focus and just put it at like this distance But but it's not ideal, right? and then the last one the last reason why I wanted a A New one was because I kind of want to use the old one for my work set up Because I hate how the webcam works there too, which is a really bad reason for getting a camera, but you know It was fun So yeah, the the real big reason here is I want to be able to show cats. That's really why The other thing that's neat is these both work with Linux. So that one's using the Elgato Card which used to have a little bit of problems around color spaces, but that's now been fixed in the kernel The new one is actually using a PCIe card. That's I think recent relatively new But it just worked out of the box They both just work with the video for Linux standard. So I've had no problem setting either of them up One thing I'll show you though. That's a little in that you may find interesting is See how this is going to work Is I guess I'll show with that camera so here you'll see that's the video set up I'll probably be a little trippy but basically There are the two cameras are just side-by-side on booms And You'll notice one thing that's annoying about the new one is the HDMI cable Comes out on the same side as the screen flips out on and So that means I can't really see myself in it which makes it hard to Fully position the picture but apart from that. I'm pretty happy with them Interesting. So there are definitely some people who prefer that one Colors look better on the old one. Oh, so the new one looks like more washed out I so I can probably I can increase the contrast on that one the the actual colors or are More due to just the contrast setting And the white balance which I haven't adjusted yet on the new one. So that's not terribly surprising Looks like two different people Sony is washed out but looks better Yeah, so I think I just need to bump the contrast on that one, which should be relatively easy Oh Yeah, and so that one the other thing that's nice is the new one has It's using a prime lens the other one is you the old one is using a zoom lens so the prime lens has a you can set a much shorter aperture opening or smaller rather and Shorter I think it's the right word and What's nice about this is it actually works better in lower light than the old one does So you can't you can't open it quite as little Or quite as wide Aperture is how wide it opens shadow speed is how quickly it opens, right? So so that one works a little bit better in low light, but it also means that it can have a shorter focus So as you notice, I think someone observed the focus on the old one You can better see the things that are in the background Whereas with this one you only really see the thing it focuses on which is one of the reasons why it adjusts a lot I can probably adjust the the f-stop for this one a little bit so that it's a little less sensitive Great Okay We've done camera comparison. I guess let me just for completeness. Let's go ahead and do so This is the old one This is the new one This is the old one This is the new one old new So yeah now and now you've seen both Okay Back to we've we've done that part now Let me Then talk briefly About the Q&A site, so let me share the link in chat again Okay so On the site what I wanted was actually something super simple I wanted a page where people can submit questions There's no need to log in or anything because people will just want to ask questions if they have to So there's no real authentication. It's just like it uses basically local storage to keep track of Which questions you've seen and which ones you voted for so there's no like protection really against Like people opening multiple like incognito tabs. There's not something I wanted to deal with I just wanted it to be very straightforward for people people to ask questions and to vote and I also wanted it to scale really well because I hate when sites like these fall over because it's really annoying when you're doing a Q&A and suddenly shit just breaks and Questions don't come in or you can't vote for them. So I wanted a really really simple Set up where like it can be run on a CDN. They can just be scaled horizontally forever So the way I ended up building this and let me go ahead now maybe and share This So that's gonna be oh That's a good question. Thank you this So at least in theory just to check the view you should now see my browser fill most of the screen And you see my face on the left My keyboard shortcuts I recently changed so I want to make sure I actually click the right one So it's just it's on it's on github it's just on John who slash we were wondering and the basic setup here is Like an AWS stack. It's not a particularly good reason why I went with an AWS stack here except, you know I still work for AWS And so it felt useful to maybe build something using their infrastructure to sort of try it out myself So the basic layout here is there's a cloud front like the CDN sits in front and accepts requests Any requests for static assets goes to s3 And then anything that is an API call goes to through like API gateway, which lets you do throttling and stuff And then to lambda the lambda is a rust lambda I'll show you the code in a second And the rust lambda uses the AWS SDK to talk to dynamo to be which stores all the data And the data in dynamo to be is actually super straightforward. There are two tables one is events which has just really just the The unique identifier for the event and the secret for that event which is used to basically get the admin view For any given event that lets you mark things as answered and such And then there's a questions table and the questions table is really just The name of a question the whether it's hidden whether it's answered and the number of votes And so in general when you create an event All it does is generate a unique ID and a secret for you And when people ask questions it does an insert into the Into the questions table when you vote it just updates the the questions table What this means is that the question text is immutable and so is everything about an event. So those are the apis for those are are Long-term cached, which is really nice. And then there's just one view that lets you get you know the The most recent vote counts for all the questions Basically the sort of ordered list of questions, which just gives you the vote current vote count whether it's answered and the number of votes And so that's the one that has a shorter cache time, which is basically the thing that your your browser now keeps refreshing in the background And it's a poll. It's not like web sockets or anything And the reason for this was because I don't actually think what people want is a sort of Live updating view of every vote. I don't think that matters So I would much rather just say, you know every for in the case of We were wondering the way it's currently implemented is the Guest view, which is what you're all seeing the guest view gives you a 10 second refresh rate Or refresh period I suppose And that's also the cache time in the cdn. So basically no matter how many guests there are There will only be a request to the back end every 10 seconds And that's fine like in general you're not actively watching the vote counts as they go, right? And then the The host view so if you have like the secret in the url Then it's every three seconds, which works just fine for me here It also prevents things from bouncing around too much because it only refreshes every now and again And of course, it also means the back end is dirt cheap because everything is cached basically all the time um So someone asked in chat, uh, is there an atomic counter? There is so dynamo db has a an api call that's like update in place And if you issue that from multiple places at once it it won't lose any of the states and then there's a What are they called global secondary index in dynamo db? So dynamo db is really just a key value store, right? You have a primary key and when you give that primary key you get the the value for that entry So the primary key of questions is just the unique question identifier, which we need to figure out which question you voted for for example But when you want to grab the current list of questions You want to grab them by event id and so there's a secondary index where the key is the event id And the sort order is the vote count And so we use that api instead or that that index instead for queries in order to render this view And what i've done is actually in the read me for we were wondering and let me put this link in chat, I suppose In the read me for it, I've actually outlined all of the things that I've set up and how It's not like super interesting, but you may find it curious. There are a couple of things that are a little subtle in there But in general it's a fairly straightforward like just static things in s3 and The dynamic things is just a lambda. We can look at the code a little bit So the client side is not in rust it's written in javascript at the moment using this I guess frontend kit called svelta Which I found decently nice to work with actually it's styled using tailwind which also works pretty well I haven't had any major issues there. I definitely had to Learn some like idioms that I wasn't used to But it's all like sort of reactive style same way as Anything how you would expect it to work. So there's sort of a I don't want to say event stream, but there's sort of a reactive connection between the The array the javascript array that holds all the questions and the number of votes And so whenever it gets updated all of the views get updated as well And that's why the the list here keeps auto updating all that's really happening is there's a Sort of a set interval that fetches from the server and updates that array by json decoding the response it gets back And the svelta framework takes care of the rest And that works pretty nice And then the server side Is using the What's it called the lambda runtime. So this is like a separate crate that just basically gives you A translation layer between requests that come into lambda like the way those requests are structured Into like regular htdp requests and and the mapping back so that if you return an htdp response Through like the htdp crate an htdp response to get turned into the kind of response the lambda wants to get And then i'm also using cargo lambda which does like the packing it up into a zip the way the lambda wants uploads it And you know sets it to be the current version and whatnot It wasn't too bad to set up. I have the commands documented in there The actual rust side of things also pretty straightforward. So if you look at source main Up up down here somewhere. Where's my actual main? It has this dual mode where if you run it in debug mode, then it just keeps a Like a local r-commutex hash map That tracks All of the state rather than talking to dynamo and it also disables the like lambda interfacing So it just runs a straight htdp server Which is really really handy for debugging if you're not in debug modes if you're in release mode, then it actually tries to connect to To dynamo db it assumes you have all the credentials available and it assumes it's running in lambda I could do something nicer here right of You know have environment variables the dictate which mode you run in and stuff But this seems like a very straightforward thing to just make testing work And The all of the actual like request handling is happening through axem So I was using axem 0.5 at the time 0 6 is out now and there's a pr to update to 0 6 that I haven't actually merged yet but i'm about to um And axem was really nice to use actually I had very few problems where that it's felt very straightforward It it was pretty easy to actually implement all of the bits that I wanted including things like You know limiting the size of requests and stuff And you can see here all the routes like there's nothing that's particularly surprising right it's like create an event Create a question vote for a question mark a question is answered mark it is As hidden And that's all there really is to it there is one File like one module for each api end point So ask for example is the thing for actually asking a question and all of them are really just proxy calls to to dynamo db So it's very very straightforward And then I also have dynamo db has like auto eviction that I've set up so that questions and events just automatically disappear after I think I set it to 60 days But the website says 30 Just so I have a little bit of leeway But all just very very straightforward And this was by design right I wanted this to be a straightforward architecture because that tends to imply that it'll scale well too The one thing that's that i'm a little sad about is that currently The cdn is globally distributed but ultimately At least at the moment the api gateway and the lambda and dynamo db all live in us east one and The lambda and api gateway would be easy enough to just Ship to multiple regions and have them work and I think cloudfront would handle that well too. You can do like geographic routing The challenge is dynamo db as we all know like why like globally distributed databases turns out to be a hard problem But in particular the challenge here is the question that came up earlier in chat Which was how do you deal with atomicity of updates? So dynamo db does has this have this notion of global tables Which is basically like a table that gets auto replicated across regions and updates get auto replicated That would have worked really well here except for the fact that it doesn't guarantee atomic updates if you have two updates for the same primary key Across two different regions then what happens with global tables is it uses whichever one comes last It does not apply both of them which for a counter is not what you want Which is really unfortunate How do you scale the routing if you have like 50 times more api endpoints? I mean i'm not gonna This is part of the design here right as I wanted this to be Very small very limited feature set because it's not worth the complexity and the reduced scaling capabilities of trying to make it bigger um and So i've been trying to ponder like is there a way to Sort of shard the database by region as well one of the things I thought about was to When you create an event it registers which region you're currently in And it marks that as sort of the owning region for that event And so all questions in that event will also be stored in A shard of the dynamo db table for questions That's in that the region of where the creator of the event was so at least I'll distribute the load Assuming that the people who create events are You know somewhat distributed across the world. I don't know that it's worthwhile at the moment Like I think I'm fine with us east one being the sort of um bottleneck here But but it might be a thing to consider it's not a perfect solution because it still means that if The person who creates the event is in say japan But the people who are voting for questions are in the us Then they all have to go to the server in japan in order to vote and get questions Which seems unfortunate. So I don't have a great solution here, but uh, that's the the basic architecture Um, I'll also hear just because we're at it Tackle one of the questions that I saw come up in the q&a section Which was why did you pick uu id's for we were wondering rather than say ul id's? So if you look at the URL Put that in somewhere actually let me put that in over here. Maybe Yeah, so the url right here you can see this is the url for an event And it has this like long uu id at the end here that uniquely identifies the event and I'm using the same for questions The so the reason why you need a uu id or something like it is because DynamoDB doesn't have a notion of like auto increment keys and stuff Because that would make it less scalable because it can distribute. It's very hard to keep like A globally synchronized counter So you need something here as unique identifier and for me like uu id's was just the first thing that came to mind They're designed for this purpose Now the downside of uu id's is first they're very long like this The second is there are multiple standards of uu id and they have slightly different semantics. This is uid v4 Which is really just a random string And it's a fairly long random string right it's encoding I forget how many bits of randomness but using far more letters than is necessary And Because it's just random you could imagine having more semantics here that would make them say Orderable in a meaningful fashion So for example, there is uu id v7, which I think is still unstable and when I say unstable I mean, I don't think it's actually like ratified and standardized. It's just proposed At least that was the state of it last I looked at it Uh uu id v7 is still as long but it includes information about the current time in the encoding So it's not just randomness The question here is talking about ul id's ul id's are A slightly different spec that basically aims to do sort of the same thing And the l here is for lection graphically sortable The idea being that it would be nice if these uu id's weren't just random But actually had a little bit of semantics so that you could say sort them and get them in roughly the order they came in You see this talks about a comparison to some of the other schemes including uu id v4 And the ul id's are shorter and and not just shorter, but they're also denser right information wise And they include the timestamp and the information so if you generate multiple of them you actually get a reasonably sorted list I think it's totally reasonable to migrate. We were wondering to ul id's There wasn't really a strong motivation for choosing uu id's over these other schemes as much as uu id was the one that Most readily came to mind Um, so yeah, I mean Given that I auto delete questions and events and stuff It would be trivial here to just move it to ul id's and say that's what we're going to use going forward Um Okay, so I'm gonna mark that as answered. Hopefully that works Uh, oh one last thing I'll talk about here actually is Uh, I don't think it's a problem to show this Um, I'll show you this so this is just the dashboard of Like traffic to the cloud front setup There's a lot of traffic because right now that turns out there are people accessing it I've turned off detailed metrics because it turned out those actually generated a lot of traffic Uh, or rather a lot of traffic to cloud watch which they charge per traffic. So like And if you look at the cost overview Uh, let me do can I do longer than this like can I do say I forget when I made this but let's do 18th to the third. Let's see how that works So this is grouped by service over time and this is the cost notice that the top of this is one dollar So Initially, you see how the cloud watch cost was kind of high by which I mean What 20 cents per day? Um, that was because of the using The like detailed metrics from cloud watch, uh, no from cloud front So I turned those off and then it went down to what three cents a day um And then yesterday Uh, I got charged for the dns, which is 50 cents per month Um, and so that's my my biggest cost is dns at the moment You know, I mean this is going to change over time, right? If if the site becomes widely popular, of course these costs are going to go up But in general like you can't even see the cost of things like a bi getaway and dynamo db here Which is by design, right? It's intended to be extremely cashable But yeah, very it's it's very expensive for me to run this site at the moment You see the cost yesterday was a whooping zero cents So I think that's all I wanted to say about we were wondering unless there are other questions before I move on um a lot of the Detailed questions about exactly how we were wondering is set up Like in terms of services stuff is in the read me for we were wondering I also want to go through the code and um document a little bit more About why it's doing particular things both in the front end code Which has a decent amount of like weird smarts in it. You might find it interesting if you are interested in like front end work um and The back end stuff where some of the routes are a little complicated For somewhat annoying reasons mostly just to make caching better um A bit of audio latency. That's interesting It do other people see my audio being out of sync. I'm hoping not. I'm hoping not Okay Let's then close this close that and then switch back to this view Okay Uh, did you do oh, did you do a shootout before lining on spell time? So this is um, uh, I haven't done front end development in many years Partially because I don't really like doing front end development I feel like I get bogged too much into like annoying details that don't matter, but I have to fix them um, but I I picked svelta just because I looked at the uh stack overflow survey results for Uh, the technology the front end technology Most developers wanted to try and then I used that one like that was svelta So I used it that that was the entirety of the decision-making process Um, and you know, I'm just happy with the with the decision matrix here It's one of those cases where like when you have a lot of freedom to choose Pick semi randomly and you know in this case it was a sort of biased choice Um, but it was not worth spending a lot of time picking Um It's the rust the front end. Yeah, basically All right, so let's start going through these questions. I see uh people are voting like crazy One thing to work keep in mind here is that the questions are ordered by number of votes, perhaps unsurprisingly And that means that new questions come in at the bottom Um, I know there's a question in here about why are they ordered by votes? Which is a good question But you may want to scroll down to the bottom to see if there are interesting questions Someone's asked that you want to like vote up because you actually think the uh, you want to see me answer them um Is their website to see the questions? Yes, there is boom okay So first question 63 votes. Look at that go Should rust be in university curriculums? um So there's a there's been a decent amount of debate about you know, is is rust hard to learn? um And not just like you know, if if i'm a new if i'm an experienced programmer But I want to start building my service in rust But just like is it if you're learning to program is rust a good or a bad language to learn to program in um, and I actually think that's a case where Rust is a pretty good choice. Um, it teaches you programming in a way where you have to understand what's going on um The way that c does but it also protects you from a lot of the Foot guns that's the subtle foot guns that c has where learning the foot guns is not that important It's not to say that rust is easy to learn right like if you do a language like javascript or python You might be easier to like get up and running faster But but I do think it teaches you a useful mental model as well and I think it's slightly easier to Learn rust if you're new to programming than if you are an experienced programmer Because there are fewer things that you need to unlearn in order to pick up rust um, this is somewhat tangential right to should it be in university curriculums because many students at least in cs programs that, um That are taking classes already probably knows some amount of programming So the question is is rust still a good choice for them or for that case Um, I remember at mit there was one class that tried to pick up rust I think it was a networking class because someone had written a congestion control algorithm framework in rust and I think as part of the course work They told people to implement a congestion control algorithm on top of that framework Which necessarily meant it had to be written in rust and I think they had mixed success I think some students were pretty frustrated with the experience of having to learn rust as part of the class and I think this is where it becomes tricky where Universities at least in my experience aren't great at teaching people It depends where you look at in the process If you're looking at you know the the learn to program classes like intro to programming type classes. Those are different from you know Classes that teach other things, but the programming language is a choice in that thing that they teach So for an intro to programming class, I actually think rust could work really well For a class like you know introduction to operating systems or distributed systems or something like that requiring students to pick up a language like rust as part of learning all the rest of the material in that class May not be such a great idea because rust does take a decent amount of work to learn And ideally you don't really want students to try to Learn to unrelated things at once, right? They might actually understand the subject material really well But struggle with the language and that's going to impact their grades and stuff which seems unfair Of course, there's sort of a Cycle here where if you switch your intro to programming classes to be rust Then you can switch more of your other classes to be rust because you can assume that they already know it So so there's certainly some uh, you know I don't want to say Well There's sort of a dependency chain here that you need to get right and I know there's also the The rust education org which is doing a lot of really cool work here to Work on university adoption of rust. I do think though that if I could sort of wave a magic wand and say Change all the classes as if they had been retroactively changed I do think rust makes a lot of sense for Many classes not for all right So for example, I think for something like a system security class I think you actually want to expose people to different languages because they have different threat models Um for something like a front end development class. I don't think you would start with rust Um for something like an AI machine learning class. I think python is probably the way to go um operating systems is an interesting one because I think you probably want to use C just because you want people to be able to directly use the things they apply Or the things they learn Later on but at the same time rust is going to make some of that operating systems work Less painful. So I think it depends a little bit there on the The structure on the class and the the kind the nature of the class like what are you trying to teach? Are you trying to teach how to work in the context of a kernel or work on the kernel? Or are you trying to teach how do operating systems work in general? And now we're going to implement some pieces in which case like if you're using something like um Uh xv6 which is like the basically the teaching kernel I I think you know having xv6 be in rust and then tell people to Do their labs and such by implementing features for xv6 and have that all be in rust might actually be pretty reasonable um And yeah, I I know there's been some adoption already like it's it's being used I think stanford is using it for some of their classes on like systems programming MIT as I said was doing it a little bit for networking. I know there's been some work looking at using it for operating systems Someone in chat says that they're using it in their intro to computer graphics So so like I do think there are places that are starting to adopt it But it is a slow going right and and part of this is from the university's point of view You don't want to teach people something that's like Um and uh Not likely to be a long-term good investment Right, so this is similar to something like writing a book the moment you put something on paper You want to make sure that what you put on paper is going to last for a while Otherwise, you don't really want to reprint books all the time and and courses at universities even though you can change the course from year to year The students that take the course you want to make sure that the knowledge that they accumulated actually Is is useful to them for a long period of time Now I happen to think that you know, even if rust the language doesn't end up succeeding Learning rust is probably still valuable because at least to me It it's taught me things about how to think about how programs work that I can apply to other languages too um Yeah, so there are a bunch of people in chat here saying you know that um They've experienced using it in their classes that Some parts are hard some parts are easy, which is totally true um For security work rust is interesting, but I don't think you want it to be the only language um So see see is an alternative to rust for for some classes where you know, you could argue well people you see in the real world So therefore using to see in this class makes sense. I don't think that's a good argument I think we're seeing a decrease in adoption of c We're seeing not just rust but other languages like go for example as well Started being picked up more in spaces where people were using c And c plus plus and so I don't actually think you should Invest more into c education unless the problem domain specifically Makes use of c. Um, so that's going to be, you know, kernel stuff hardware stuff Um Embedded stuff although rust is is doing really well there. Um But apart from that, I don't see a compelling reason to um Oh pearl in the curriculum. That's pretty actually I had that too. I had a prolog in my curriculum. That was something It was pretty fun Yeah, so so for example an os course that starts in c to show how the stuff currently works and then moves to rust for Implementation work or complex systems. It seems like a pretty good idea Um Okay, I think that's oh, yeah and game engines a lot of game engines Are, you know, heavily c plus plus based and I think this applies to consoles too Where you don't really have as much of a choice for language But that too is changing right so you have things like um embark studios and bevy You know where I think we are gonna see more and more games not being written in c and c plus plus and that's pretty exciting Or c sharp for that matter Okay Would you consider limiting votes by ip to make it harder to manipulate? No, I would not I The part of the problem with using ip's is because of gnats This would end up causing say Multiple people are connecting from the same home or multiple people who are at the same university To end up not being able to vote more than once and I don't think that's worthwhile It also significantly complicates the back end because now I need to keep track of Every ip that's voted uh and a I don't want to store that information And b that's much more complex logic And I just don't think it's worth the upside like if someone's just like spamming up votes for something I can always just hide the question like for example With this question. I have a suspicion 68 people did not vote for it, but I can just not read the question. It's fine That remember this is designed for use by a human, right? So there's going to be a human decision-making process as part of this anyway And so skipping questions is not that hard um It is true that you can imagine someone like actively spamming this and you don't really have a way to block them I don't have a great solution for that. You could imagine that there was a sort of Block this ip kind of button But I really don't want to go that route and and until there's a you know serious demand for it I think I'm going to just not do that um How do you think gats will shape the standard live in the future so gats here generic associated traits um I think what we're actually going to see Is very slow adoption of gats in the standard library um and part of this is because It's such a new feature that I don't think as a as an ecosystem. We best know how to make use of it, right? So the the challenge here is If the standard library just decides at all we should just you know, let's take a borrowing iterator We should just stabilize it like we got it figured out. It's easy. It's just this signature You could do that, but As with many of the other things that have made it into the standard library The way we got there was through ecosystem experimentation Right of people developed crates that used the features from the language to basically prove Prove out designs prove out the how to get the best ergonomics how to get the best, uh, performance how to get the best, uh Backwards compatibility over time And I think we're going to see the same thing here We're going to see crates crop up that make use of gats to make better more ergonomic more powerful apis And the ones that emerge as being good designs worthwhile designs and things that actually should be in the standard library which remember rust standard library is pretty small It's it's we've talked about this before I deep but narrow and Many things just shouldn't be in the standard library at all They should just stay in separate crates and given how easy it is to work with separate crates and rust. I think that's pretty compelling So so I actually don't think we're going to see a sort of Rapid adoption of gats in the standard library. Uh, in fact, I think it's going to be very slow And I think it's going to take quite some time before we see the first one Um, and even then, you know, let's say the time until we gets to say 10 of them I think is actually going to be maybe on the order of years Um Let's see Oh, yeah, and also, uh, keep in mind that what was stabilized was sort of a a minimal version of Gats, um, so there are still a bunch of restrictions on them that Those restrictions don't matter always. Um, but for something you standardize in the standard library You don't want to standardize something That is subject to a limitation that it turns out you can't remove in the future So so that's even more of a reason to have experimentation in the ecosystem before, you know, and and potentially having, um Gats improve in their flexibility and their their expressive power Before we end up stabilizing something because it might be that we can then stabilize something better And of course, there's this endless cycle of okay, how when have we experimented enough? Um, and you can rehash that argument as much as you want But realistically often I think it becomes pretty clear when a design is just ubiquitous Like everyone just goes this is what we should use and stabilize um Not always sometimes we get it wrong, but I'm not too concerned about the like setting a time ahead of time Uh, all right How good are you at solving algorithmic problems? I lead code Okay, I this is maybe one of my big, um hills to die on. Um, I think lead code is Really stupid For evaluation purposes. I think it can be a lot of fun, right? So so you can use it as basically the same as brain teasers, right of you know Here's a fun little puzzle try to solve it the the problem comes up when it's used for um Evaluating things like job applications, which is the primary place that ends up being used there. I think it's actually extremely counterproductive um But for solving these puzzles it can be great fun like I remember I was in a like a programming competition that me and some some lab mates signed up for last minute back in australia and uh I wouldn't call them lead code questions really, but it was things like um The questions were framed in such a way that it turned out that the solution was you had to invent ray tracing And that was really fun. It was a really fun experience to like try to come up with this algorithm on our own that turned out to be a real algorithm. Um but Yeah, I'm not Not a huge fan of lead code becoming A benchmark, um And as for the question of how good am I at them? Um I don't think i'm particularly good at them uh And I think part of the reason for that is there's sort of two ways you can go with lead code the one is You know a lot of algorithms and therefore you can solve a lot of lead code problems because you can quickly identify the algorithm And because you know the algorithm you can just type it up Um, the other one is you don't know a lot of algorithms. And so you need to figure out the algorithm on the fly um The the first one of those i'm terrible at because I don't believe in memorizing algorithms. I think it's a terrible idea. Um, I don't think it's actually valuable. Um And therefore I don't really know many algorithms. I know Of them. I know their, um Structure and their implications often like I know when you would use say a You know a try versus a b tree. Um But and I know that those two things exist. Um But I don't know how to implement one right same with a red black tree I know roughly what it does and I know roughly why you might want that kind of implementation The implementation I don't have in my head because I don't see why I would um But in terms of coming up, I'll do the algorithms on the fly. I think I'm decent at that. I don't think I'm you know Uh, I don't think I'm gonna write papers about inventing algorithms anytime soon. Um, but but those kind of like puzzles I I enjoy and I think I'm decent at In an interview context though, I'm sure I would mess these up and I've You know, I've had that experience before where I'm asking question and I'd have to make up an algorithm And I couldn't think of a good algorithm. So it ends up like some n-squared mess Yet another reason why they shouldn't be uh benchmarks Um Interview systems are broken due to lead code Interview systems are broken for a lot of reasons lead code is one of them. Um, but like There's some serious other problems too like, um You know one challenge that I run into a lot is Having to For the lack of a better word code under pressure Um, and this is a similar problem to what we have with exams at universities where they're not actually Measuring anything that approximates real world experience, right? So Um At what point in your life are you going to be like put in a room? You're not allowed to talk to anyone You're not allowed to look anything up and you have to solve a bunch of problems. That just doesn't happen Right in general when you're in like real life and working You're going to have colleagues you can talk with you're going to be able to look things up online You're going to have a compiler you can work with that's going to you know tell you if you mess something up You're going to be able to run your program over time write tests see how they work Run a debugger all of these things just in an interview setting you can't do in an exam You can't do and it it's stupid. It doesn't measure It measures a completely separate set of skills that I think are Barely correlated with the things you actually want to measure in an interview. Um As you get into questions like okay, maybe take home exams or take home interviews, um, maybe Uh, you know instead of having Like write me code on a whiteboard have it be Um help me design how you would approach this problem Help me explore this problem space, but it's a difficult questions. I don't have answers for how we should do them I just know that what we're currently doing is broken um Yeah, someone also points out that um, which is entirely true as well The kind of questions people ask in interviews are often Not the kind of questions you have to tackle In real life leech code is a particularly bad example of this right like when are you ever going to be asked at work to implement a Red black tree never you should rather use an implementation that's like battle tested and optimized and everything right? You shouldn't just write your own. That's usually a terrible idea. Um, but this applies more broadly too, right if if For for an interview often at least you're asking a question You're asking a question that has to fit within the time frame It might be something like um, I don't know Write me a framework for doing structured logging Um And start from scratch and we'll see how far we get That problem is a really interesting big topic, right? There's a reason why the tracing crate for example is fairly complicated and convoluted Internally the interface arguably too, but but like it's it's a it's a major piece of machinery It's a complicated design. It has a lot of subtlety to it But when you ask to solve it in the context of an interview you end up doing The work in a way that's scoped to that time frame and it just doesn't It's not going to match the kind the way you would approach the work outside of it You might actually go like go for a walk for two hours to think about the structure of the problem Or uh, you might be asked questions that are The questions are so small that they wouldn't actually be like your task for the week or something So, I don't know. I think this is I think this is difficult um The pro of lead code is that you can prepare for them. I don't think you can either. There are too many algorithms Uh, so it's just it's bad. It's just really bad Um, I don't think you can study for them either Or if you can study for them Then they're even more useless because it means that the pool they're selecting from is just like an over a big overlap with like a list that's publicly available at which point What are you actually measuring? You're measuring the overlap of the list the candidate knew about Hmm Did you interview with algorithms for your amazon job? Yeah, I was asked to implement quicksort I was I was so mad. I also at the time wasn't allowed to use rust because the editor I don't know whether it's the interviewer or the editor or both Um, didn't support rust or didn't know rust and so I had to like I ended up having to write quicksort in like pseudo python It was it was terrible. I got the job in the end. So I'm happy but like Yeah, not good um Recruiters say that it allows them to narrow down the candidate pools because they have something to benchmark against So this is a common Observation that like it lets you do basically automated filtering of candidates, right? So if you get, you know, a thousand applicants for a job running all of them through like A reasonable interview loop with a human is tricky. Whereas if you just say here's a coding problem Everyone's going to do like online assessment and then we're going to look at the code you submitted Um It's true that it scales better. I don't think it leads to you hiring the best candidates So if that's what you care about, I don't know that this is the way to go about it At least not if they're lead code questions And then of course the question is well, if they're not lead code questions What's the benchmark? What do you evaluate them against? And like, you know, I think even there you you can train people to review code And this is arguably what engineers do as part of their job and just Give them something that's not a lead code problem and then just have people review their code Um Oh, yeah, not to mention real-time interviews make people nervous, which can make really great engineers be terrible in an interview setting And that's not great either Okay You can measure how much someone wants the job I don't think you measure that either because there might be people who Want the job, but they're not great at memorization And that's not that doesn't matter that much in programming It might also be that you know candidates don't actually want your job They don't care that much and it shouldn't be a requirement of the job that the person passionately wants to work for you Like I don't think that Leads to a selection of good candidates necessarily it matters much more for example, whether they care about the problem domain you work in Rather than them being passionate about your company Uh Google and aws said that the Algorithm question interviews won't help you out on your day-to-day job But it's a fairly good indicator that someone who can solve the algorithmic questions are reasonably decent engineers I think that's wrong in both directions actually I think being good at lead code style questions does not mean you're a good engineer And many good engineers are not good at lead code questions So you get false positives and false negatives and I think you get a decent amount of them I actually think the correlation is Not very strong But also measuring the degree to which the correlation is good is really hard because you don't have the counter counterfactual um Recruiters told me they're okay with losing a good candidate as opposed to hire a bad one Yeah, that's true. Um It is the the cost of hiring someone who does a poor job when you hire them is very high I don't think lead code helps with this. I don't think of the way we currently evaluate candidates actually Um Helps at all. I think it makes it more likely that you're going to hire candidates that turn out to be bad engineers They were only good at lead code. So I think you can still make bad hiring decisions this way So again, it gives you false positives and false false negatives True correlation is often useful correlation is useful. I'm saying there. I don't think there is a correlation I or the correlation is really poor Okay, let's move on to the next question. Are you doing advent of code 2022? A stream with idiomatic rust solutions might be fun. I get asked this question basically every year and um I don't think I'm gonna do it and it's not because I dislike advent of code. Um, it's just because I don't have the time um like I I think I did advent of code one year like four years ago or something Not as a stream just for myself and like it didn't didn't give me that much and I have so many things to spend my time on that I don't think that's a good use of my time. It might be an interesting stream, but I I have so many other things I want to stream that I think are higher value. Um, so I don't think I'm gonna do advent of code And not not to mention I'm sure there are lots of other people who will be um, and so I I don't know that I'm The me doing one would add a sort of unique selling point. Um Like I don't I'm not under under no illusion that like I should be the only person streaming rust code or rust programming or rust Things like I don't think that's true at all. I would love to see more people Teach and do streams, uh, and I think advent of code is a great thing for other people to stream And that way I can I can drive viewers over there, too um Okay, what are the best technical books you've ever read? Hmm The best technical books I've ever read It's a tough question. It also depends on what you mean by technical. I assume you mean related to programming um Let me see actually what I might have here Uh I'm just gonna I'm gonna check my My good reads because I think I've logged all of them there My books Red, huh? Apparently I've read exactly 100 books. So I read this book called rust forestations and I thought it was pretty good Um, but otherwise, let's see here Um That's not a tech book That's not a tech book So I thought the art of unix programming was pretty good. Um, I don't love the author, but I like the book Um, I think it's a decently worthwhile read Um, what else the code book? I think is fantastic. It's not directly about programming. It's about, um, how like ciphers and encoding and decoding and stuff works, um That and it's by simon saying it's also really really good Um I don't know that I've applied to that knowledge in a lot of places But it was a great it was really well written and it was an interesting read Um that I think taught me more about how to think about, um Basically cryptography The programmatic programmer I think is also really good. Um, there's like a new like anniversary edition out I don't I don't actually know what's changed in the anniversary one. Um, but I I liked it a lot Um That's also not a tech book Let me see what else I have um, so there's a book called hackers delight which is by uh, henry warren And it's this one So hackers delight is it has like I don't know. I don't know that it's useful, but it's a very fun book to read about like Basically ways to make computers do weird things like how can you do? Well, let me let me find a random page here to give you an example um Using bit shifting to Convert to exact division Uh Signed division by divisors that are less than or equal to minus two using assembly Like it's just a very Let's see counting trailing zeros using various techniques Finding coordinates from distance along the hillburt curve like it's all just like floating point specifications like it's a very very low level book that I still haven't read all of But it's a fun place. Just like look up. What a weird tidbit or weird algorithm or cool insight into like you can Abuse the cpu instruction this way Um, if you're into like operating systems work, I also really like this book um Which is basically like how the bsd kernel works also one I haven't read all of um, but but it's a Because it's a fairly like I mean, it's a very basically a technical manual But it gives you a really good overview of like how modern operating systems do things how they're designed Um, I think those are the the only ones I would say are like Good ones that I would actually, you know go through and recommend um I think for for a lot of technical reading I actually prefer Just keeping up with things like blog posts. I think a lot of interesting content comes up there and it tends to be more Up to date And Like honestly, you know twitter and it's now many replacements is is a pretty good place too to Learn technical tidbits that otherwise you might get from books um Yeah, and like there's a lot of online resources here, right like, um, the uh Philip operaman's operating systems blog post series, um Learning rust with entirely too many linked lists I feel like I had another one that came up recently There's a bunch of these like online, you know semi books, um that that I think are also really really useful um Oh, the free bsd book is called The design and implementation of the free bsd operating system Um, the other thing I would recommend is reading research papers. Actually, um, it can be a really interesting view into a somewhat different world of like bleeding edge Work or if you look at like a test of time papers things that were, you know really substantial um innovations that have stood up over time and and have turned out to be really really valuable And I think that's Worth, um, it's worth digging a little bit into that world. It's a different kind of writing And you kind of have to Learn how to Read them well, um But but I think you'd be hugely valuable Um Let's see. What's your take on carbon? Do I know what carbon even is? I don't think I know what carbon is Programming language feel like I've heard of this as a program language Uh, which is to say I know nothing about it So I'm going to go with I don't have a take on it The project's open source and was started by google. I have fairly little, um faith in Alternative languages started by google seed dart doesn't even have a 1.0 yet Yeah, I have no take the new google programming language. Yeah, I have little faith Uh, do you know any good pytorched like ml frameworks in rust? No, I do basically no machine learning So I do not Uh, do you think rust has its place in high performance computing as a replacement for cc plus and fortran? um As a replacement for c and c plus plus. Yes as a replacement for fortran Uh, that one's that one's harder because like If you think about it C and c plus plus didn't manage to displace for trend, right? Um, and I I don't know that rust has Something that makes it likely to be able to replace for trend either um To fortran, I think might just be with us for a while the the other thing that comes up in hpc is that there are a lot of just heavily optimized libraries that Someone would need to port and Traditionally because there's such high performance things porting them is Frot with dangers, um And so I'm I'm I think it's going to take longer actually even though rust I think is a very good candidate here I think it's it's a It's a subset of the world where It's harder to get in because it's a fairly strongly connected space Where you kind of need all of the parts to be available to you in order to be able to use a new language um but I think you know, I think we're going to see a trajectory in that direction I think we are seeing it already, but actually seeing like full uptake I think it's going to take a while just be just because of dependency closures um What other language pairs well with rust Pairs well with rust um Depends what you mean by pairs well with Like I mean web assembly is arguably the my first Thought here, uh, and and therefore javascript um That does work really well together in general um I've seen a decent amount of people having success with python rust interactions. Um Often in the in the in the case where they you know build Some core of their application that's like particularly performance sensitive and rust and then they expose python bindings to it. Um, this is sort of what Python cryptography ended up doing where I think part of the sub modules I think used to be written in c and are now written in rust um And I think the the python rust binding space is in a decently good position um What else do we have? I think those are the two that immediately come to mind. I mean c is the sort of obvious f of i1 um But I think python and javascript are probably the Main ones That I would say pair well with rust Uh, if you weren't a coder, what would you do as a career? Whoa What would I do if I weren't a coder? I think it would be something in the Gaming industry maybe in the board game industry. Um I don't think I could be a professional dm. Oh, maybe but like I might end up I might have ended up being like a board game designer or something like I think that's a A passion that I haven't explored enough Alternatively it could be that I would end up as a teacher I I do get a lot of joy from from teaching independently of what it is that I teach um, is I think that's a decently likely candidate And if not either of those I I've discovered that I really like um I guess puzzles is the right word, but but I don't mean it in the sense of like I don't mean it in the sense of like brain teasers. I mean it in the sense of Figuring out how things fit together Um, like remember even as a kid I would like take things apart just to see what the pieces were and what what they all did and how they work together Um And I think it's one of the reasons why you know I for some reason I get fascinated by games like car mechanic simulator Like I think it's really fun to just like see all the pieces that I hadn't thought about before and what they do and how they interact Um, maybe I'd be a car mechanic. I don't know um, but but I think something like that is um Probably like one of those directions. I I remember when I was a kid My mom asked me what I wanted to be when I grew up and I think I told her I wanted to be uh An air hostess Not air hosts or steward or something air hostess um a blood donor and a subway driver Like I wanted to be all those three things at once I have no idea why those three, but though that was what I was going to be um The camera and microphone are shaking. I think it's um, I think the stabilizer I need to improve the or increase the stabilization a little bit It's very sensitive to if I like Regal my feet or something then the and the desk moves Then the camera also shakes Uh All right Actually, I'm gonna take a quick bio break and I'll be back. Give me two minutes I'm back And I brought a cat At least assuming you can find me you can see me. All right. All right. All right. Oh, you can't see me. Oh, no How about now? Ezo here we go Now maybe the internet they can see you right in there. No, no not in there. Where are you going? Where are you going? You little baby There we go Yeah, you're a celebrity now Yeah, you're very cute Okay, bye So we have two cats as I think many of you know and oh another damn bot Uh so We have two cats chai and miso. That was miso miso is uh Not very smart Chai is decently smart. Uh Chai knows how to like open doors both by pushing and by pulling them open Miso does not understand the doors move She will just like the door was like Not not not even closed like it was like a jar And she could probably even push her way through but she just like sniffs that and goes Well, I guess I'm trapped here and then just waits for me to come open the door It's very sad But chai will sometimes come help her Okay Uh, let's see here Oh, not the right scene Now it's the right scene. I keep doing. No, that's yeah, that's the right scene. I keep choosing the wrong scene. It's very annoying I pressed Yeah, yeah, but at least now you should see me full screen. Let's see if I can grab me so again you can see her even better Miso, okay. Now you're full screen. Should I hold you like a baby because you are a baby? Where are you going? All right. All right. All right. There you go All right, you're looking the wrong way the internet is the other way Yeah, that way you're curious about what she's doing. Yeah, she's sitting up on the dnd box Where are you trying to go right now? Where are you trying to go? You can't go down there trying to get to the microphone This doesn't look very comfortable Right here you go great Amazing now you've seen both chai and miso and in theory full question Okay, she's trying to answer my questions. Yeah, it's true. Uh, all right, and you finally got to see them full screen Hi, john, I'm starting with rust and I'm new to programming in general. I've done some c in python. I want to ask you Uh, how important are data searches and algorithms and how should I start practicing and learning them? so this is Miso Miso decided to lay down on the printer I don't know if I can easily show you this It's very cute. You're very cute Miso. You're very cute. The printer is made of warm. Yeah, that's true All right, uh, you don't have to eat my microphone boom. That's okay Um Yeah, I think this is an artificially boosted question, but that's fine. Uh in this case It's uh, it's one worth of answering. It's similar to the lead code question which is really just um, I think I would say data searches and algorithms are important to know of and about But it's not important to know how they work At least that's been my experience. You should know like The difference between say a b-tree and a hash map You should know, you know, roughly how do they differ? When do you choose between them? How do you choose between them? You know, what are their relative costs and benefits? And you should like know of their names so that when you're developing you know What tools to reach for but I would think of them as exactly that They are tools you can reach for they are not tools. You need to know how to make yourself Because generally you shouldn't be you shouldn't be like you should know that there's a difference between sorting algorithms And some are better than the other you need to know the implementation details of timsort versus quicksort. I don't think so And in general you shouldn't even need to know which sorting algorithm is used You should just be able to call like dot sort on a slice and assume it does the right thing um But like sometimes it's useful to know like that merge sort is a thing because you can do it better in parallel Sometimes you should be like oh, actually Because i'm always going to need this data in sorted order I'm going to keep it in a b-tree map instead because that way it's always sorted. Um, so so it's more of a um Know what tools are available to you as opposed to know how all of them work Um as a student who has contributed to large open source projects the last couple of years Can I apply for senior engineering roles in what sense is open source work comparable to professional experience? I wish I had a good answer for this question because it's a it's something I ran into as well Right when I was applying for work straight out of my phd Um, I didn't really know what level I was at as far as industry was concerned And you know now that I've been at amazon for a few years If anything, I feel like I have less of an understanding. I I understand how amazon Tends to view people coming out of academia at different levels But I don't have a good sense for the industry as a whole How they think about things like senior engineer what that means like I don't think say, um, a senior engineer at amazon is equivalent to A senior engineer at some like random startup that that's not to say that they're necessarily worse or better It's just the standards are different. What you're evaluated on is different. Um And so this question is a little under defined just because it it It's going to depend on where you're trying to apply for a senior engineering role Both in terms of where of what company what industry? Um, and What part of the world? It also depends on what you mean by Contributed to and what you mean by large open source projects and what you mean by last couple of years Right, if you've been like the maintainer of Or a co-maintainer of open ssl and curl for the last 15 years That's pretty significant if you have sent some prs to like let's go with like Neo vim and rust up and you've done that for the last two years That's not going to count for much. So there's a very broad span here and trying to give you an answer my You know if I had to give a sort of general answer here my take is that um open source experience is Going to require You to be able to articulate the degree to which is given you senior engineering experience So a company is generally not going to look at that And look at your your open source contribution history and go this makes this person a senior engineer But you might be able to use it as evidence for why you should be Um, but it requires more work on your part. Um, so so as an example, you know for for interviews and amazon And all of this is like publicly documented in like the recruiting Packet the sense to candidates and stuff You're you're asked a lot of They're not behavioral questions as much as they're like, you know, evaluation of leadership principles is what they call them And you're supposed to basically give, you know, you're given a prompt like um, tell me about a time when You Faced a trade-off between two major project directions and you made the decision to take one over the other um and the idea is that you need to be able to come up with a Convincing response, right? You need to come up with evidence for or or you need to be able to describe the situation Describe what evidence you had available to you what action you took why what the outcomes were and If you can do that using open source work, then I think it counts just as much as an industry experience does um But oftentimes it can be Hard to make open source work quite fit into what companies are looking for So that's why I say it depends on your basically your ability to to sell your own work here And You know, I senior engineer at like one of the big tech companies. I think it's harder to swing with just open source experience It's not impossible But but it it it will require that you have some Pretty solid work to point to like a couple prs is not going to cut it um Yeah, and as someone points out in chat, too one of the things that senior means Again, this is why it varies by company, but senior tends to mean that you're taking on Um work that is not just programming. It's not just you're a better programmer In fact very often a senior engineer engineer isn't necessarily a better programmer than an engineer or a junior engineer It's more about the other things that you do And that can be things like How good are you at seeing the long-term implications of a design decision? How good are you at doing, you know Design work or architectural work for a potential solution. How good are you at evaluating the trade-offs short and long term for A set of decisions. Um, how good are you at mentoring others? How good are you at? Dealing with ambiguity in your work. Um, so there's a lot of that kind of Stuff beyond programming that goes into senior that With open source work, you can get experience in that right if you can point to, you know You did a bunch of mentoring in open source. You did a lot of You know public architectural design work in open source That those are valuable things to point to it's not just about the coding But very often like when you say, you know contributed to large open source projects If your contributions are mainly PRs That might convince them that you're a good programmer. It's not necessarily going to convince them that you are senior Um Okay Do you think there are fundamental missing features from rust that can that cause macros or repetitive code to be constantly required? If so, what are they? Um, I think const generics was this for a while um I think another candidate here is a Support for custom test suites or custom test frameworks um But apart from that, I think macros are a feature like, you know, the macros keep getting a bad rep for being You know, uh, the sort of cheap way out. They're like the copy paste solution to programming and I don't I wouldn't actually think of them that way I think macros are a tool like any other tool you have in the language and Maybe what the question is getting at is are there places where macros is a suboptimal tool like macros is a sort of uh Crude tool and we could hope to have something that's more specialized and you know, I think um Good examples of this are custom test frameworks const generics, which now are a first class feature. Um, and maybe something around, um Delegation and new time wrappers Like if you want a new type wrapper that just delegates to the inner type and so you have to like implement a bunch of traits Just to do the forwarding and you have to do this for multiple types. It's totally true that, um Like For those things first class support in language might be nice, but but I don't think macros are a sort of uh Problematic avenue to solve those those problems. Um So so I don't think they're fundamental missing features as much as there may be things we could do to make You have to reach for the general purpose tool of macros less often and the reason why that's advantageous is You know that one sad property of macros is because they're so generic because they're such So general purpose is also harder to write things like tooling for it or good diagnostics because they really are just token manipulation Uh, whereas if you have a feature in the language, you know, your editor can be aware of how that feature works You're the formatterer can be aware the compiler can be aware the borrow checker can be aware um And so having it be a having things be first class can be helpful in these cases um Very um, yeah, variatics zl one like very um variable length arguments, although even with macros that that one's hard to solve Is rust worth it for small projects less than a thousand lines? My experience is that implementing something in for example python is quite a lot faster Um, I think that's because you're more experienced with python than you are with rust I can write rust projects very quickly Um, but it's because I've been doing a lot of it. I'm very familiar with the language So when you say worth it, it depends what you mean, right like Worth it in the sense of the time it costs you to learn the language no worth it in terms of the Speed up you get for the program depends on what the program does if what the program does Isn't speed sensitive or performance sensitive then you can write it in any language write it in whatever you're most proficient in um But if it is performance sensitive then absolutely write it in rust if rust is the language you're most proficient in Then yeah write it in rust because it's the one you're most proficient in If you are a python programmer and you're considering learning rust in order to write a small project Probably not unless it's performance sensitive Or if it if you expect that it has to do interfacing with other languages for example There is also a case for You know use rust So that your program is more like type safe Like at least in my experience writing rust is nicer than writing python because the type system helps me and But but there it comes down to like how familiar are you with each language and it becomes a trickier trade-off Um It also depends a little bit as someone said in chat on the kind of dependencies You need to take right not everything is going to be available as uh as crates on in rust but for python they're you know packages for most things by now, um, but I think these days It's pretty likely that you're going to be able to find whatever you need as a dependency in rust too Are there more doors or wheels in the world? Yeah, so I love these kinds of questions Doors or wheels Depends what you count as a wheel Depends what you count as a door like for example, is the Opening mechanism for a mailbox a door For wheels are ball bearings wheels um So like I mean this is In some sense part of the question and my inclination here is to say that there are more wheels because many things have many many many wheels um and There aren't that many buildings um But yeah, I think you know, yeah exactly like Do wheels have to have holes the doors need to have handles like it's it's really just an undefined undefined questions um Yeah, so someone says, you know most cars have more doors than wheels That's true, but also are gears wheels because if so there are a lot of gears just think of every watch So like you know, I think in wheels and assembly lines also true so my inclination here is that that the multiplication factor for wheels is higher than for doors So even though there are more things that have doors and there's a small ratio difference in favor of doors on those things some things have just like Orders of magnitude more wheels and that makes up the difference. I think um Cell membrane doors no no no Is the steering wheel a wheel? Yeah, also also a question wheels under chairs. Yep Eyes in the doorway to the soul. There are a lot of eyes if you start counting like insect eyes That's true Uh I'm going to mark that as answered even though there's not an answer Uh plans for 2023 another book more time for more streams um Okay, so my most immediate plan for next year is Probably moving to europe The plans aren't fully settled yet. Um, but the way i'm Currently planning things is to Probably move to norway Um around summer of next year, which i'm very very excited about I don't know whether that will be the exact time. I don't 100% know it'll be norway, but but probably um, that You know both my partner and I have some Reservations about moving to norway again. Um, we have different reservations. So i'm worried that norway is still a little too um Okay, the the crude way of saying this is small and boring I don't think it's actually small or boring quite as severely But one of the reasons I moved away from norway was because I wanted to go places where I could see more things have more experiences interact with, you know, bigger bigger more impactful stuff More people more companies more places And so going back I worry I would end up in a situation where I have that desire again and would want to move away At the same time, you know, norway and oslo in particular has evolved a lot over the past, you know 10 years since I moved away from there. So I think there's a decent chance that I will That those things will bother me less now There are also things that I value more in life now than I did then that might, you know, counterbalance that For my partner who's from the us. I think the concern is more around, you know, language They'd have to learn Norwegian and around You know, norway is kind of cold and dark and You need to figure out whether you can live with that Like in especially in winter like Can you find ways to enjoy winters? And if you can't then you're not gonna like norway So I think realistically what we'll do is probably move there for a year or so and then If if we enjoy it then stay if we don't then maybe move to london and try that instead I'm not planning to write another book next year At some point I'll probably write a sort of, you know, second edition or or, you know Second revision maybe of of rust for stations, you know, there's some things that have stabilized since there's some RFCs have been posted that there's some things that might be updated Not going to be like a major rewrite or anything like that, but I don't think it's going to be next year I do hope that More time for more streams is unclear One of the things that I really hope to do is once I move Um, I'm suddenly allowed to have like a patreon and get up sponsors and stuff So I might set that up and See how far it gets me, you know, I do have this sort of longer term goal to be able to Just do teaching and open source stuff full-time. I don't know whether it's feasible Maybe what I'll do is some kind of like part-time thing, but it that also depends on how You know, well funded I can be through Basically contributions from people I honestly don't know Where that's going to take me, but it's going to be a sort of longer term plan I don't know that next year things are going to change dramatically More time for more streams is also, you know, it's only it's mostly bounded by Time I spend on work I do have a hope that I'll be able to spend More time doing streams as basically a part of my position at amazon Not like as amazon sponsored work necessarily, but that'll be given basically more leeway To do my streams because it also benefits, you know, people using rust at amazon Um, so we'll sort of see how that progresses. I don't have a great, um Sense of where that's going to go yet Uh, yeah, and I definitely this yeah, I miss the viking raids. That's right Uh, and yeah, I am Norwegian. I uh grew up in norway in Oslo Glorious sweden. Ha ha ha. No no no norway all the way man. Our caviar is better than yours Uh What are you valuing more now than before? Um quality of life Uh, and I mean that's pretty broad, but things like um workers rights, uh things like Um right to healthcare things like, um Uh Just rights for people in general. Many of these things are More things I dislike about the us than things I like about norway necessarily um, but I also find that like norway has a particular set of um Beliefs about how people should be treated and things you should have access to and rights to um that I align with um And you know things like right, uh Childcare and long parental leaves and that kind of stuff. Um That you know many countries do not have to the same degree Uh, will you still work at amazon? I don't know yet I mean that's my my current plan at least is to move and and you know continue working with my current team from norway Um, that changes. I don't know, but but that's at least where I land for for right now Come back to australia. It's too far away, man. It's too far away Uh, and yeah, I mean the the I think the thought long term is maybe go a similar path to um Uh Amos or faster than lime or um, filipo I forget their last name The person who's doing a lot of the crypto and go, um, who's also taken a similar path of like trying to do Basically open source full time. The other thing I've thought about is doing, you know, uh Instead of just doing open source and teaching maybe do like, um, you know rust training consultancy as part of that and that that might help make up for for some of the Basically some of the wage, um that I would need to actually survive um I don't want to so someone asked, uh, you haven't considered going back to boston I've considered it, but I don't want to say in the us I have the the longer I stay here the more I realize I don't actually like the us um There are so many things that bother me about All of america there are some things that bother me about specific places in america But there are also things that bother me about america as a whole. Um, and I feel like I've I've now spent the time I wanted to spend here Oh, yeah, another thing that I I'm looking so much forward to is Like public transport and walkable cities And having actual neighborhoods that are not just either residential or commercial Which also don't really exist in in the us Uh Nice. All right I think that answers that question Petition for speedrunning questions at the end. Yeah, I will almost certainly do that Uh, what are some board games you've been playing recently? Uh, well, so I've I still love blood on the clock tower. It is probably one of my favorite games. Um Recently my my partner and I have started playing scrabble, which is a lot of fun. Um We, uh We bought like a proper scrabble board and you know, it's I just like word games I used to play a lot of um Uh banana anagrams It's not banana grams banana banana anagrams, which is you use a banana grams bag of letters But what you play is you put all the tiles face down So these are basically scrabble tiles fails down in the middle of the table And uh, every player in turn just flips a letter. That's all you do on your turn. Um at any point if you see a Uh, if you can make a word with at least three letters using tiles that are visible in the middle You can call out the word you take that word in front of you. You don't have to arrange them in any way You just keep the words in front of you Um, and crucially you can steal words from other players Um by making an anagram of them and adding at least one letter from the center Uh, or you can steal multiple words if you can combine them into a single word by making an anagram Uh, and there's some restrictions like you can't the root of the word can't be the same with the anagram So you can't just like add an s to the end for example, it has to actually be a different word Um, but it's it's hugely fun and it moves pretty quickly Because people keep flipping letters And the score is just whoever has the most letters in the words in front of them at the end win Um, it's it's so much fun. And no, you cannot play Norwegian words Or abbreviations is basically scrabble rules. Um, it's it's so much fun. Uh, what else we've been playing? Um In terms of board games, I haven't been playing too many board games recently I don't really have a board game group in la which is a little sad um But we've been playing um Code names code names duo, uh, which is pretty fun. We're playing a little bit of hanabi A little bit of love letter um Well, there's also sort of a limit to what you can play as a Uh, if you're just two, um, sort of changes the the set of games. There's one called Let's call fox Fox card game It is that's unhelpful Fox in the forest Uh, which is kind of fun. Oh, and we've been playing a bunch of glumhaven Uh, we started with glumhaven draw the lion Uh, just have a lion and now we're playing just the full glumhaven game. Just also so much fun I love that game Yeah, I think that I think those are the The current set of questions or the current set of board games that I play Oh, we played um played a little bit of Taco cat go cheese pizza This is a very straightforward like, um party card game Uh, what's your opinion on elixir or or lang? Um, I haven't used elixir so I can't really speak much of that Um, I've played around very basically with or lang, uh, but not enough that I have a Strong opinion on the language I think or lang works really well if you're trying to build a language that fits Or lang's view of the world But or lang is fairly opinionated about how you should be building your applications And so if you stray from that you're gonna have a bad time Uh, I don't know the extent to which elixir is the same So I can't really speak to it What's the longest word you've had in banana anagrams? Uh I think I managed to grab deforestation once I was I was pretty happy with that Yeah, taco cat go cheese pizza. That's what I said Uh Demand for programmers is high and it's relatively easy to jump in do you think incompetence spreading? Too much in the space Basically because more people are programmers am I worried about the fact that there are more bad programmers? No, I don't think so. I um, uh I think this is a sort of necessity of anything becoming a more of a mainstream job Our job family, um I think this is already the case in Every other Job sector known to man Right is that there are There are people who are good at their jobs and there are people who are bad at their jobs um And I I don't think it's a matter of like The percentage of people who are bad is going up. Not really The way in which people who are less good at their job maybe goes up Or the or not goes up but changes but like The fact that more people are getting into programming also necessarily means we're getting in more people who are good at programming So so I think it sort of balances out. Um, it's not something i'm concerned about Yeah, there were a lot of bad programmers when there were a few programmers too Uh And and as someone said in chat too like we we it's good to get in more people because That's how you get more perspectives more diversity more Uh Like new ideas fresh ideas into the into the field, right? That's how you end up breaking um existing thought patterns and design patterns and Approaches to programming that people are locked into Uh, it Yeah, I I think it's I think it's only a good thing um What are your thoughts on the allocator api? When do you think it will be stable and should we once we are there go in the direction of zig and do explicit allocations everywhere? um So I started following the allocator api back when it was first proposed at this point That that discussion has been going on for so long and there are so many nuances to it that I don't know that I can speak to like the latest and greatest of the the like current rfc um I do think that You need a way to have allocators be a Sort of first class primitive in the language, right things like being able to parameterize, you know Box and collections and stuff on allocators. I think it's critical um The the tricky part is what is it critical for right? This comes down to what are you designing for what what use cases you're trying to unlock? And I think this is why it's taking so long to stabilize too is because A lot of people want to use it for a lot of different things and arguably some people want to abuse it for some things where This is the easiest way to get at a particular solution that they want um I think we are getting closer, but I don't have a good sense of what what the timeline is going to be my my guess is Years Probably single digit probably less than five um But it's hard to say I I do think that you know If this is something that the kernel is going to end up needing That puts some more pressure on it happening sooner sooner, but the kernel is also willing to use unstable features So it's it's less of a stabilization pressure um In terms of whether we should go in the direction of zig and do explicit allocations everywhere um I don't think so. I think that's going too far um And I think it's sort of going against the grain a little bit because That's not what people expect It it gets into the whole like, you know cc plus plus like new keyword kind of Not cc plus plus new keyword kind of things or c malloc I don't I don't know that it buys you that much I I do think that we have to figure out the the sort of inverse of this Which is how can you guarantee that a given code path has no allocations? And we do have to solve that I don't think we solve it by making every allocation explicit I think that's too high of a price to pay basically um So I I think um Yeah, I I hesitate to go the although, you know, the rust does generally follow the sort of explicit is better um decision making framework so to speak, um But but I think this is a case where Actually having every allocation be explicit is is Probably introducing too much Noise slash overhead and I don't mean I mean cognitive overhead not overhead in terms of performance um Can you recite the lyrics the bohemian rap city from memory? So I actually saw this question come in uh back when it was originally posed and It it of course made me immediately try to sing the song while listening to it And I think I actually know the lyrics like I think I know There's like one part of the middle uh around like the Let me go chorus where there are a lot of overlapping voices that's like The the lyrics are a little complicated and singing it as a like alone is very hard um But I'm pretty sure I know the whole rest of the lyrics I don't know that I want to recite the entirety of the lyrics now that that seems maybe uh Maybe excessive. I don't know if chat wants to hear me sing for five minutes Um What about don't stop me now That one I think I'm close. I probably know so I I actually tend to um pick up song song lyrics fairly well um For don't stop me now. I'm guessing I know maybe Like 60 70 percent somewhere around there um But like, um Rappers delight by sugar hill gang, for example, like the long version of that song I think I know almost all the lyrics to that one too um I'm fairly sure um, and I think part of the reason why I pick up on the lyrics so much is because I don't really get bored of things or at least that's somewhat rare um And so if I find the first time I find a song that I enjoy I just listen to it on repeat for like several days on end to my partner's great annoyance And so the the lyrics sort of attach to my head. Um, it does mean that Usually I end up learning the lyrics the way I hear them Which both means that when I recite them back I I tend to recite them back in like the accent they were sung in which is a little weird. Um, but also if I Hear the lyrics wrong then I learned the lyrics wrong, which is not unusual, but it really sticks in my head So it's hard for me to correct afterwards um But so I will definitely sometimes just like Like while walking around just randomly sing songs like it stuck in my head and actually just sing through the whole song um Is there a story here you big queen fan? No, not really. Um Those are just two songs that I happen to like I'm not really a big like fan of particular bands or or even genres or albums Like I just like individual songs and I will listen to those songs on repeat. Um, but I don't like I there are a decent number of queen songs that I like, but I'm not like a diehard queen fan. Um A karaoke stream that's funny Uh I don't even know how you do karaoke as a stream Like it's just me singing and everyone else watching because that's not what karaoke is all about. Um But yeah, I'm I'm pretty sure I know all the lyrics to bohemian rhapsody nice uh Bicycle bicycle nice uh I've used rust with lambda and the performance is phenomenal The d the developer experience could be much better. This is probably just related to adoption and lack of examples best practices What's your take on rust serverless? We see an uptake of rust adoption in the coming years Or will serverless remain a field for JavaScript and python dominance You know, my experience certainly with using rust for lambdas was pretty good. Um And I I could totally see more people adopting it. Um, I have a because I don't really build services. Um, I have a hard time saying, you know How suitable is it for this purpose for anything that's not like the simple thing I built? Um But yeah, I I think I I think there's a decent chance that as the developer experience that gets better and we get better You know tooling and support and documentation and best practices and examples Um, I think rust is a pretty strong contender for for writing lambdas in for example Um So so I think I think the answer is yes. I do see it Being I see rust being used a lot in serverless. I think there's a question of do is serverless sort of the future um Like is everyone going to deploy to like, you know, cloud flare workers or Um amazon lambdas or whatever maybe I i'm not convinced that that's going to be Uh, where everything is going like I think we're going to see Maybe many things moving to it because it's relatively easy But but I don't know that it's going to be, you know, the only way to deploy services, right? If you if you're deploying something like Uh, let's imagine you're building like S3 I don't think you build s3 on lambda, right? There might be some parts that you build on lambda, but ultimately I think that's just not something that fits serverless Um, so I don't think serverless is going to be universal But I do think that rust is a decent contender for using four serverless things Um Should rust have a more powerful alternative to macros? For example c sharp allows analyzing generators to consume full type information flow analysis, etc um I'm torn on this one One of the challenges here is that it basically becomes a compiler plugin And I know that there's been work on trying to sort of standardize the api to the compiler so that you can more easily write a compiler plugin um Having it be in the language itself is is a little weird to have basically, you know proc macros on steroids um that are that that get to run at a particular point in the compiler Pipeline so it gets to consume type information and stuff It feels like a sort of pandora's box, which doesn't necessarily mean that's a bad idea But but I I think the way to do this is with compiler plugins um There are certainly times when I have wanted this where it'd be really useful to be able to write something that can Look at the type of the things being passed in and and sort of branch based off of that and if you look at something like, um The pin project crate It basically ends up doing some of this by Through the code it generates, right? So it it has to do things like Check that The type that you derive projection on or derive on pin on Uh, doesn't have an implementation of unpin and the way it does that is not by at Code generation time checking the type information But instead it generates an impulse that's going to be rejected at compile time because of uh a duplicate implementation Uh, so basically it adds an impulse that if there already is another impulse will fail to compile and so that's one way you can sort of trick your way into into getting some of this, um But I I don't think we're going to get a sort of Uh macros on steroids in quite this way and instead I think we're going to get a better way to write compiler plugins Um, can you recite the lyrics the Duffer Gibbons hull? uh Also known as hull of the mountain king. It doesn't have lyrics I I can recite the the melody, but I don't Think there's a lyrics to it at least none of the versions I've heard um All right. What kind of laptop are you using for work? Uh, it depends whether you mean work work or open source work uh for work work I use uh an m1 and not an m1 pro just an m1 uh because Usually I work on like a cloud machine that has like lots of cores and stuff and then I use my laptop essentially as a thin client um And the the main reason why it's an m1 is because Because I use it as a thin client what I really want is battery life And the m1s have really good battery life um for open source work. I still use a A think pad x1 carbon. I think it's like a sixth generation one. So it's a kind of kind of an old one Um, but I've been very happy with those laptops. Um, I think you know I tweeted about this a while ago that I think my next laptop I really wanted to be an arm one, but currently m1s are the only ones and I don't really want a mac um, so I'm sort of hoping that there's going to be decent arm laptops coming out and I would probably want them to be one of the sort of uh Laptops that let you exchange parts yourself In part because it means that I can upgrade it over time around that have to like throw it all away and get a new one So something like the the framework laptops for example, I think would be really cool um Yeah, so so a sahi linux for example on m1. I think would be Like a reasonable path here, but I don't really like the apple hardware um And so I like I I would rather have like for example, I would rather have a laptop that's not silver um And so I I don't Or overpriced for that matter. I I don't think I really want an m1 But currently m1 is the only processor that Is a contender here um Well, it's your take on front end in rust you etc. I have not used any of them. So I don't really have a great take here um It's definitely weird to me to use rust for front end development because It means that you have to traverse the boundary to another language as part of your front end development and At least my experience is that transpiling is always a pain Uh, and certainly when you're transpiling from a language like rust like through basically web assembly into developing front end I think it's maybe a two a pipeline that's too long for me but I don't have a I don't have strong feelings on this just because I haven't done front end development and rust at all How can I make reproducible or hermetic builds work with cargo? Uh, you can't really You can get kind of close, right? So you do um You have your Instead of using crates.io as your registry You can do it with with crates.io as well But you either do a vending or you do local registry You commit a lock file You use a custom cargo home that is at a fixed path You use, uh the Rust C flag that lets you rewrite debug paths Um, what else do you need? um Uh You run cargo in offline mode Uh, you pull out your internet cable so the built scripts can't access the internet um But reproducible and hermetic here are fairly different actually like Reproducible, I think you can get pretty close to hermetic is harder mostly because of built scripts. Um, and Like you can do some Sort of pre analysis here, right? You can use something like Uh, even just cargo vendor and then you can scan all your vendor dependencies for build scripts and sort of look at what they do But there's not a great way to support this. Um I would love to see things like running build scripts, uh through You know through web assembly or something so that they're somewhat sandboxed But we don't have great ways to do this at the moment And no, I don't think you can disable builder as files at the moment at least Um Yeah Uh, but this is something I wish cargo would get better at actually. I mean not just like for work, but also personally like I I do worry about things like build scripts. Um And proc macros for that matter. They both sort of have the same problem. I think with proc macros It's more likely we're going to see something like, uh, you know Watt or something like it where the procedural macros are basically Compiled into web assembly and then run so that they already run sandboxed For builder s that might be harder, but it would be really nice to see And reproducible builds, um Is going to be handy for things like supply chain security where you can actually Check that you're building the same thing as upstream and stuff Um, but but there again, I think we're much closer because there was a bunch of work to make The build of rust c itself like the rust toolchain be reproducible. Um, which I think, uh Some of the linux distros needed for example, so that some of that work has already happened If you were a cat, which one of your cats would you get along with better? Oh That's a good question I think I would get along with miso better. So miso is um Very like full of life and very curious and very, uh, I don't want to say happy go lucky, but she's like She's very positive, uh chai is much more like I don't like this. She's like an old man Like I don't like this. What's that? Very she grumbles like some of her meows actually sound like grumbles. She's like, uh, why is the toy all the way over there? um, so she's uh I feel like she's probably harder to get along with like I think she's like, um She she can be very cuddly, but she has to really get to know you first. She's a lot more reserved. Um And so I think I'd probably get along better with miso Are you worried about ai taking the fun out of programming at some point in the sense that humans in the loop might only Be responsible for stitching together ai generated code and checking for bugs um I I don't think ai can take the fun out of programming because you can always choose to write programs yourselves, right like Even if ai got really good at generating code, uh And including like super convoluted code and it had few bugs and and whatnot I I don't think Like that doesn't mean that you can't write code by hand. It just means that it's much less efficient to write code by hand Um, so so it doesn't really take the fun out of it it doesn't mean that if you were say if we got to that point and You wanted to work as a programmer Your job might be more Uh, like glue checker, uh, than Programmer and so that job might change or you or you could even say, you know The the job of programmer goes away and instead the job family that's on the rise is like qa tester, um And I don't think I would want to be a qa tester. I that sounds like less fun to me. Um I I like writing code even including if it's like convoluted weird code or glue code or Some elaborate statement. I need to get right. Um, I I enjoy that parts So I think I would still choose to do that I think, you know, there's a question of would there still ever be value in it? Or would you essentially just do it for fun? Um And if you would only do it for fun like if you couldn't actually get a job writing code yourself Which I think is unlikely. But then what would I do and I I don't think I would take the sort of qa tester job to to pay my bills and then write programs manually for fun. Uh, I think in that case I would probably be Doing like one of the other questions asked for like teaching or something. Um, and then do programming entirely on the on the side for fun Oh, yeah, or to be a prompt writer that also sounds awful to me Right where you write the prompts to tell the ai what code to generate um Yeah, and there's a related question here like if you tried co-pilot, um, I actually answered that question last time we did a q&a um But no, I I haven't I haven't used it, but I've seen it used and I'm not convinced I think what I really want to see is ai getting better at code assist rather than code generation um Like I don't think I want the ai to generate code for me because I don't know that it actually reduces the burden that much But using it for code completion, for example, I think is super useful Um, or for code explanation, maybe Uh, is lead code really valuable for a programming skill? We talked about this earlier, so I'm gonna I'm gonna skip that one Uh, do fish exist? So this is the That the good old internet meme, uh, were obviously the answer is that uh fish do exist I'm a boring person as you can tell But the question was asked by a seal. So I feel like as a seal you should know that fish exist because I assume you've eaten many Uh Birds are the ones that aren't real. That's right uh From what part of your life work open source teaching friends family, uh, do you think you're going to make the biggest impact in the world? It depends what you mean by biggest impact um And I know for a lot of these I say, you know, it depends on but Reality life is very It's gray. It's not black and white. Um I I think teaching At least that's my hope that You know, I I think of I think of much of what I do in terms of Like Like impact multiplicative factors where the stuff that I do at work enables A lot of people at amazon to build better things Uh, which in turn means all the people using aws get to build better things Um, and to some extent it affects, you know, how aws interacts with say the rust project And I'm hoping that has beneficial attributes for the rust project same thing with, um, You know Generating more confidence in rust by virtue of making amazon use it more And as a result that might give the rust language a boost, which I do think is like a good long-term impactful thing um my open source work is Has less of a multiplicative factor. I think because it So the aws work is a decent multiplicative factor my, uh open source work less so because You're only going to use it if you need one of the specific things I've built and I don't think I've built anything where The thing I built like unlocks a use case Many of them are like Uh, I needed a thing that does x and this thing does x Um, as opposed to like let's take serdi for example where like that that is the Uh, the sort of lynch pin for an ecosystem Um, so I don't think my open source work is quite as impactful um Friends and family are very impactful to to me Um, but they're not impactful like long term friends may be more so right like I think there are Friends I have where the interactions I've had with them let us both grow Um, but but those there's not really a sort of multiplicative factor there unless one of them ends up doing something enormously great as a result of a conversation they had with me, which I think is somewhat unlikely um A family even less so But teaching is the one where My hope is that it has a very big branching factor, right? A lot of people end up consuming the teaching content that I produce as a result Hopefully they become better programmers that might be inspired to build things or enabled to build things that they weren't already It allows them into a uh Into a position where they can then make change or affect change and That has the potential just because of the the branching factor to Like some of those people are going to be doing cool things and they're going to be doing cool impactful things In part as a result of learning from the things I put out there And that gives it a um A sort of uh multiplicative factor effect beyond what I get within any single company So I think it's going to be teaching. I hope it's going to be teaching um But it it depends right like for example, if rust ends up being a flop, right? Like if in 10 years from now people are like, well, we shouldn't have bet on rust I don't think that will be the case But if that were the case then most of the teaching that I've done is going to have Not really amounted to anything whereas the stuff I did at AWS might still have because There will still then be all the things that people are currently building that still Are working and doing, you know, good things Yeah, I think that's how I answer that question Um if rust suddenly disappears, what would your next go-to language be? Hmm So In general, I feel drawn to languages that are type safe that are statically typed that are That allow me to encode More of the invariance and uh semantics of my program into the code itself and have it be checked So I think, you know, I could it could be that I get drawn into the sort of sort of a formal verification world more and start looking at languages like Daphne or f star or Or cock maybe I don't know I think those are sometimes a little too hardcore for me though And that I would be more drawn to a language like Like zigg for example, um, but I I really You know, even for zigg zigg is I'll caveat this with Or prefix this with I haven't used zigg So so all of this is sort of a conjecture based on what I've observed about the language. Um, but zigg is less, um Type focused than rust is and I like the type focus of rust I like having things like the borrower checker. I like the the strictness of the modeling of of correctness of programs And so I might miss that going to zigg and I don't really know what other language I could go to right this like Haskell maybe but I don't really I think askill take haskill takes a little bit too strong of a absolute position on things like functional programming. Um, so I don't really know. I don't know that there's a great alternative language Which, you know, it's is arguably the one of the reasons why I'm doing rust is because I think it has the right mix of of um, features for me Oh camel, yeah Lean I haven't looked lean enough to really say Uh, any thoughts on becoming a digital nomad? I mean, that's basically what I am already, right? I I work remotely if I moved to norway, for example, I I would still continue working for the same team I work basically in the I live independently of my work. Um, and so I I think it's great. Uh, I I'll say, you know I would never go back to working in an office or being tied to a particular office at all. Um, I I like this this lifestyle does not to say that I Like I do sometimes miss being able to meet up with my team in person and the my colleagues and others in sort of that sphere um But but being tied to a sort of local job is not something I would want Even if it's local just within the same country Um, so I I highly recommend it. Um, so I'm I'm positive to being a digital nomad um The latest good movie or tv show that you watched and likes, um Well, so I do love the Great British Bake Off uh But the latest one is, uh Okay, there are two one is spy family, which is a an anime that is It's really good. It's very funny. Um and it's like a I don't want to say it's a parody because it doesn't feel like a parody of anime, but it's It is very aware of the fact that it's an anime and it's I'm it's great. Uh, and the other one is The sex lives of college girls, which is also a very funny and and I think very well written show I've been enjoying those both, uh immensely um Lloyd Sonja and your great It is very good, but both of those shows are are very good. Um Um Why do you only sort by upvotes when we were wondering this can easily lead to only top questions getting read and therefore uploaded um I don't have a better alternative is really the the biggest reason because I don't want to penalize a question for Having been asked early on Uh, and therefore having more votes um Like if I only sorted by new Then You know votes wouldn't matter if I only sort by votes then at least Those are questions that many people have indicated an interest in um I could let you switch between new and most voted, but I I don't know how much value that adds how many people would actually switch back and forth Um Like and would it be enough to make up for the difference in votes? I'm not sure. Um, you could do something like a sort of weighted average or something but a it makes the back end much more convoluted and b I don't I don't know if what you want is for the value of votes to decay over time For a site like this right like reddit does this if I remember correctly the algorithm reddit uses is something like The value of a vote continuously goes up over time Um, so like if you voted, you know, six years ago a vote was worth let's say one Or one unit. Um, and now one vote is worth three units So the effect this has is basically a weighted average right of The more recent a vote the more it the more positive or negatively it counts um, it's a really neat system actually for doing this for for for multiple reasons, but um That might be a way to Deal with the site like a good way to deal with the site like reddit for here I don't know that the recency of the vote matters um, I think you you are onto something though that It might mean that people don't really review The questions that are new they only vote for the ones that are at the top But I don't know that that's a problem either if those are generally good questions Um, you know, if if I was only getting, you know, really bad questions I agree it would be a problem, but I don't really see that. Um You know another option here would be, um To do like a split view where you see like the The top five and then you see the newest five and then it's sorted by votes or something just to give them some visibility Um, but I don't know. I I don't think it's that costly to scroll to the bottom of the page Um, like this just seems very straight forward um It could be randomized And then the host view shows ordered by votes I don't know if that's better either right like Realistically if you're watching the stream, I feel like what you want to watch is the The questions that are about to be answered next And if one of them matters more to you try to bump it up so it gets answered sooner So I actually think the current semantics are what you want and the only question is about Exposure to new questions so that they have a chance of getting up there And I my guess is this kind of already works. Um Yeah, so this feels to me like a uh, you know premature optimization, maybe Oh, actually here's one thing I want to show. Um, so for the camera comparison, let me pull that up again real quick So now it's a little darker in here and notice the difference in the white balance Right, so see how this one is is much more um I don't know the accurate in its color balance really than this one. This one is far too white um Like I haven't changed any of the camera settings. This is just the camera continuing to run with the same settings And I think they're both set to auto white balance That's interesting I also only see the the small previews so I'm gonna look back at the recording to see how different these these actually were Um That's interesting. All right, let me go back Uh A hot question sort option Yeah, so so that is one way to do this right to have a separate tab that's ordered differently I'm just wondering how many people would actually change the sort order Right, I could have a hot be the default But that means that the default view isn't going to represent the actual queue of questions that I'm about to read Which might be confusing to people are watching Um I suppose then you could at least do like, uh You know these things have gotten a lot of questions in a short amount of time, right? So you could do like sort by Number of votes divided by time since asked Um to get that kind of score, which is basically what hot is Um I don't know if it's better because it also means that the most popular questions aren't going to show up um Yeah, so it's it's interesting um Okay Uh thoughts on the upcoming book about rust locks and atomics by mara. I'm really excited about it Um, you know, it's it's a really hairy topic that you know My book talks about locks and atomics in some amount of detail, but uh, I don't think to anywhere near the Depth the mara's book is gonna is gonna look at it So I'm very excited to see this see basically a better write-up of of this because it's a very subtle Complex and important topic. Um, so I I'm very excited. I think it's great Will you stream designing a d&d campaign? Maybe Um, I do really want to develop a d&d campaign the the biggest challenge I have at the moment is that I don't I Both don't have the time to run a large d&d campaign And I don't have the time to make a campaign and you know as as I've said many times before the The challenge that that I keep facing is that you never find the time you have to make the time But I have so many things I want to make time for and I don't know that making a d&d campaign is High enough on the list of priorities to be prioritized over other work like, um Like doing more crust of rust streams for example, so that's really the the the tricky part here That said, you know, if when I do end up taking the time to make a d&d campaign I feel like it's totally something I would stream because why not it's interesting though. I've gotten to the point where these days I don't really feel a Um Feel much friction to doing a stream like If if I'm doing something that I think might be interesting to others I go well, why not stream it? Well, like what's what's the reason not to Thoughts on macro kata more exercise based learning materials what we are missing in rust. I don't know what that is But it sounds like rustlings Like rustlings is exercise-based And um exorcisms Set of or like rust track is also very exercise-based So close as I can think of What is a monad? Oh It's always this question It's it doesn't always come up in q&a But this is a question that I think All of computer science has been trying to articulate nicely and I did I don't think I actually have A sufficiently accurate mental model of a monad to be able to give a Useful and correct definition But I can give my mental approximation for monad which is that a A monad is More or less something you can map over That is it has a value that can be transferred from That can be transformed independently of the The structure that holds that value That's that's going to be my i'm going to stop there because It's not entirely correct It's maybe enough to be useful And if I say more it's going to be more wrong Endo functors hint hint bunch of words Yeah, a monad is a monad in the category of endo functors is the classic growth. That's right You lose the ability to describe once you understand it also accurate Looks like a collection if you squint. Yep. Also, right We are all monads. Yep All right, I'm gonna mark that as answered even though in the history of human Of humans it has never been answered What do you think about blockchain as a technology in general ignoring the bus And the buzz and financial and monetary usage I think it's hard to ignore those but um, there was a really good article by Tim bray Let me see if I can find that one So tim bray used to Used to work at um Amazon and no longer does um and Are you posted an article the other day? Let me put it put it in chat called aws and blockchain and um, it's a uh The the basic summary of that article is He and some other people were tasked ages ago with basically trying to figure out um What is the blockchain and should aws be providing something that is blockchain based? Like what's the value of blockchains? Um, and their conclusion more or less was Ledgers are useful um Distributed databases are useful um Let's see if I can find the actual quote Yeah, ledgers are useful Cryptography tech is useful blockchains aren't the field is full of grifters But we could build distributed ledger infrastructure and then these cool services on top of it Which I think is how I feel too like There's a lot of cool cryptography in blockchains doesn't cool like distributed systems research Um ledgers are certainly a useful abstraction um But I think Blockchains themselves we haven't seen compelling use cases for I just I haven't seen them they keep We keep seeing new claims that someone has found a useful use for the blockchain and They're just useful uses for a ledger. They don't need to be a blockchain The like distributed trust is um I think something that we as humans just don't Not it's very often not what you want Or not what you need it's a solution in search of a problem in a sense. Yeah um What do you do in the middle of the night if you Get suddenly get an idea to fix some problem Will you go code immediately write a note on your phone or will you continue to sleep? um If it's a thought that's important enough that I wake up or if I'm struggling to fall asleep because I've Had an insight of some kind Usually what I do is I set an alarm For the sometime the next day where the description of the alarm is the idea that I had um I used to write notes and then I realized that it wouldn't let my brain relax because it was like What if you forget to read the note? um Whereas setting an alarm works pretty well because I my brain. Let's go of it being like, okay So now we know that we will think about this again later. Um, I don't It would take a lot for me to get up and Go code the thing it has happened, but then it's usually not in the middle of the night. It's more It most often happens if I'm like obsessing over something like when I initially wrote we were wondering for example I had a few days that were sort of like this where I was thinking about it all day and like Doing all this programming and then when I went to bed I'd be like, oh, maybe I can do this and then I would sleep Not super well and I would wake up kind of early and the moment I wake up That the ideas continue propagating in my head and I'm like, okay I'm not going to be able to fall back to sleep. I'm just going to get up and do it. I remember one of these was um I wanted to use the page visibility API to reduce the polling or to lengthen the polling period if a Tab is in the background and I was like, I'm just going to get up and do this. This is a great idea It's not worth me writing it down and then trying to fall back asleep and that that was like Maybe an hour before I usually get up and so I was just I'm just going to do it um So that's that's my uh It's my best trick is I I have far too many alarms set on my phone I have started turning them more into to-do lists, but Alarms are still the best way I know of Uh, have you heard of leptos thoughts on it and in general using rust for web programming Why does it ring a bell? Oh, I think there was a rust for rust No, not rust for a station Rustation station episode where alan interviewed Greg johnston who made leptos I have not listened to that episode or read about Leptos or used it. So I can't really speak to it, but there was a Rustation station podcast episode Um about leptos, but no I I so I've heard of it in the form of I've read the show notes for that episode But that is the extent to which I have any thoughts on it and in general using rust for web programming. We already covered earlier um thoughts on haskell we also covered earlier in Which programming language would you use if you weren't using rust? Uh, any idea why enum variants can't be used as independent types? I would think that would be useful to be able to specify the return type is always a specific variant of an enum and other similar benefits thoughts Yes, I want this um And There's an rfc for this That I commented on because I really wanted it It's called enum variant types and it was open in like 2017 Uh, let me see if I can find it Last comment from early november um and Yeah, I would I would love to have these but it turns out that it's a really hard to implement um and b It's not entirely clear like it has a bunch of implications for the type system that can be Awkward. Oh, it looks like there's an updated rfc Oh, this is lang team proposal That's been merged Oh, yeah here, uh, here's a relatively recent comment from nico Uh Based on those meetings we decided we are going to close this issue but not without a good helping of regret The bottom line is this we all agree that it is a common and annoying pattern to us today to have to make a Struct for every enum variant and then just have the enum wrap those structs Uh, this gives you the ability to have a type for an enum variant, but is annoying and inconvenient So for those reasons we would love to see forward motion on this proposal However, we also feel like this is striking at a fairly core part of the language and there isn't anyone on the team It was the bandwidth to actively lace on this effort. So basically This is a major change to the type system We'd love to see it, but no one has the energy or time dedication to work on it. So I'm totally on board with you. I would love to see uh enum variant types, but we we don't have them Um, I should really subscribe to this issue. Where's the subscribe button when I'm zoomed out this much? Weird, um, yeah, we don't have the time basically It's just that maybe one day Have you ever done game development or game engine programming? um I've done a tiny amount like as part of my Undergrad we have to we had to do a little bit of game programming in java As I built a little like fly the copter game um But Very little, um, I actually would love to do more I think I think game development is a super interesting space of software engineering It has an interesting combination of problems. Um That that appeal to me. I think, you know, there's a decent chance that if I Wasn't doing sort of developer tools type stuff like I'm currently doing that I would do game development instead. Um now unfortunately, of course the game development industry It doesn't have a great track record for like things like work-life balance or just in general happiness as a developer or happiness being in that role or Deadline setting and stuff. Um So that the industry sounds like it's not a great place to be Um, but it it sounds like a lot of fun. Uh, and it's totally something that I would explore Have you read and worked through structure and interpretation of computer programs? If so, what impact did it have on you? No, I've not I feel like I've heard the title of that book But that's the extent to which I know about it So I know that's not very useful, but no Uh, are you familiar with the helix text editor which is written in rust? If so, what are your thoughts about it? um I think helix is abandoned now But I remember I saw it when it came up. Um, and you know, I I kind of like the idea of, um People experimenting with new ways to do editors um But at the same time I don't feel a strong need to switch to them Like I'm just very very happy with using neo then so I don't really Feel the need to use a different editor not to mention that when you switch editors it comes with You know all of the downsides of having an editor that hasn't been around for as long So you don't have as many plugins. You don't have as much support There are a lot more, you know corner cases that aren't covered for you. Um And like support for weird programming languages and what's what uh, what like it's just a lot of stuff. Um, so I think it's cool that people are building New editors, I think it's a good thing to experiment with and you know, that's how we get better editors over time But I don't feel a compelling desire to to switch Um, oh helix is not abandoned. Uh, apparently I lied This there was some og. Yeah, um xi was the editor that was abandoned helix was not You're totally right Uh, and yeah, someone pointed in chat, too Like it's hard to imagine an editor that allows you to be significantly more productive at least that's been the experience for me So like there's not really an an upside to switching um At least not that I've found for me Um, all right, I think we're getting towards I mean, we're definitely not getting towards the end of the questions there are a lot of questions, um, but I think we're getting towards the end of there being Significant questions that people want Want answered so what we'll do is we'll do like a A speed run round Well, I'll just run through the questions and give uh rapid fire responses and then I think we'll we'll call it a day Okay, are we ready? Let me drink some water before I start Okay, uh, what are the biggest blockers to impulse specialization landing in the wild or do you think it's Less likely with gat keyword generics moving Some steps forward I have no idea Uh, specialization would be nice, but I'm not involved with the effort. I don't know Um, how do I get better with generics and traits and rust? Um Look at popular libraries and crates and actually sit down and try to understand their trait bounds in generics It's the best way to learn them Uh thoughts on chat gpt. Uh, haven't used it. I do think I've signed up for the beta Um, the screenshots I see of people interacting with it are really impressive Uh, and I wonder how well it generalizes Stream about your current setup hardware and software. I know I've promised this for so long and I need to do it Um c++ has taken some inspiration from aspects of rust that have proven successful Are there aspects of c++ you believe would make rust a more attractive language? Uh But the lack of inheritance for example, um Um No I I actually think not having inheritance is probably a good thing. I think programmers have been um Indoctrinated is not quite the right word, but I think we have an over reliance on modeling things as Object-oriented when they don't need to be that said I have heard that object orientation maps well onto guis I don't know whether that's because that's what they traditionally have been designed as Versus that's how they should be designed So I don't know that inheritance is necessarily one we should adopt and I don't know of other c++ things that I really think we would want in rust Uh, what about a stream together with tim McNamara? That'd be fun. I mean I work with him, uh, and I I know him I think it'd be fun. I don't know what we would stream about Uh, this is the same like I've had a decent number of people ask me to do a stream with um Or I guess another stream with the primogen We should be really fun, too. I enjoyed that previous stream, but I don't quite know what it would be What I have thought about and this becomes the slightly longer form answer is a sort of Like a Rust fireside chat where I just do streams where I chat to people who are interested in rust or adjacent to rust or Work with rust and just have an informal conversation. Not quite an interview But just like uh, let's banter about rust a little bit. Um, those might be fun kinds of streams to do. Um So maybe maybe it'll be one of those Uh Have you ever visited an amazon fulfillment center? I have not Uh lord of the rings or harry potter Harry potter But I also haven't read the lord of the rings books Uh, my partner is obsessed with lord of the rings Uh, so maybe I need to Read them and give it another shot, but my instinct in my gut reaction is harry potter Um How'd you come up with the llama? Uh You know, how did I come up with the llama? It's also unclear whether jay is a llama or an alpaca. Um I think I actually just Uh went to a bunch of people on Fiverr or something and Um, like artists that I enjoyed their styles, uh, and told them hey, I'm looking for a mascot for my channel. Um Whatever you think might be fun and one of the people responded with basically a J and I was like perfect. Let's do that one And then I commissioned someone else to make the the intro video for crust of rust and it sort of stuck Uh, what's the advantage of the axum web framework over the others? Um, I don't know that there's necessarily an advantage like they're just different kind of apis or different ergonomics different ways of modeling the apis I I like the fact that axum seems very Composable. I also like the fact that it builds on top of tower because tower makes it easy to First of all letting it encourages that kind of composability, but also it lets you easily swap out things in the middle of the stack Um, and I think axum is making fairly clever use of the rust type system without being quite as Insanely elaborate as warp was Um, did you try surreal db? No, I have not don't even know what it is Uh, why not use yyid for we were wondering? Um, I think yyid is even less common than ulid. I'd probably use ulid over yyid But there's no strong reason to prefer Uuid as I do today. I think any scheme would do here Have you ever tried advent of code? Uh, I've tried it once but it's a long time ago Uh, what's something available in rust that's super useful, but not a lot of people are aware of or use Uh Matching on tuples I do this a lot actually were Instead of having like a complex If else block what I'll do is I'll write a match Create a tuple with multiple values in it and then Basically do like the the you know editor Complete the match arms for me. Um, this can be useful for things like, you know If you have like three options and you want to selectively do something based on what values they have Um, just doing a match on tuple three elements where all the three options are there can be really nice Um, it can be really useful for if you have a bunch of booleans You want to dictate behavior based on the combination of booleans It can be nicer to express it that way than with a sequence of if else Um So so I think that's probably the first that comes to mind at least Uh, how can a database newbie get started with database development, especially for a rusty b Study routine resources and so on Um, you know, I would actually probably do look at a university course that teaches this Like for example, I think the mit class on databases is publicly available Like all the labs and the reading lists and stuff. So I would go take that Um, it's a great place to sort of it's it's intended to be a way to bootstrap your knowledge about databases, right? So I think that would start there. Um, and then you could look at whether there are any Databases that are specifically written in rust that you might want to try to contribute to their open source Um It's not a question. I'm just letting you know that you're a really cool guy. Thank you. Thank you. I appreciate that I'll mark it as answered nonetheless Uh, do you think you'd write an embedded project? I've wanted to for a while Actually, I just don't know what to write like I would love to just get a little like, um Uh, Arduino or something and just make it do something. I just have no idea what to build Um, but but I do think embedded programming can be pretty fun. I remember Uh back during my master's we had a class project in an embedded class where we had to build a every student got their own little Arduino like thing and We had our job was Uh, design a an algorithm for doing time synchronization across the devices And every student had to implement their own device But we all had to speak the same protocol So the class had to agree on the synchronization protocol basically reinvent NTP Um, and then the do an evaluation of everyone brings your device You run the software you built on that device and then we like put them out in various configurations in the room And look at the time it takes for the clocks to synchronize how well synchronized they are over time How they drift that kind of stuff. Um, that was a lot of fun So as I I feel like I would do something. I just don't really have a good project in mind Um When someone when Can someone say that they know rust? What are the concepts one should understand so they can be considered a rust programmer? um I don't think there's a right answer for this Uh, I think, you know, if you've read the book, I think you can say that you know rust Um, I think you should for your own sake You should make sure you've actually written some things in rust also Because otherwise if you claim to know rust Like you have to think about why are you claiming that you know rust? I think that's really the crux of this question Which is if you're if you want to be able to claim that you know rust for the sake of getting a job for example Then imagine you get the job because you said you knew rust And now they're expecting you to write rust code If you don't actually know how to write rust code, then what have you gained? You're just going to get you're going to do poorly at your job Maybe get fired or at least get a poor performance review Are you really in a good place? So think about what it is you're Trying to achieve by claiming you know rust and then look at well, what what should actually be the benchmark? Uh, what's the best source of beautiful idiomatic rust code the standard library? Implementation something else. Um, I would look at code by Andrew gallant also known as burnt sushi Um In general he has a pretty good take on writing really good code The standard library is also decent What's the last time you programmed in php? What do you think about newer versions? I haven't looked at php in a long time. Uh, I remember last I worked with php. We were at the tail end of version five um, like version six just came out, I think um And so so that gives you an idea of how long ago it is um And you know, I didn't hate php actually I thought it was a decent solution to the problem at hand But I haven't looked at any newer versions. I still remember my sequel real escapes during though um How do you deal with unsolicited advice and criticisms especially pertaining to personal matters? Um So there's a book called Thanks for the feedback that I Would actually recommend people read. I think it's a pretty good read Um, and it is it talks a little bit about this not necessarily in terms of unsolicited advice, but more about you know Very often you're given advice and you can't control how the advice was given But you can't control how you receive the advice And so they give advice on how to receive advice. Um, and one of the things that they say is It's useful to basically communicate and set expectations for the advice that you're receiving Um And You know, let the other person know if you want that advice or not Keep in mind why they're giving the advice So I used to get pretty frustrated about this kind of stuff and I'm like, you know, I don't really care If you want to give me unsolicited advice, I'll maybe listen to it. Maybe not It doesn't really bother me that much Unsolicited criticism same thing like, you know, I I'm decently confident in like or rather It's not that I'm decently confident in but rather Um, if I get drive-by comments from people, I Assume that They may not have looked at things closely And so I I try to interpret the criticism rather than letting me letting it hit me directly Uh, what are your thoughts on managing configuration for rust binaries and variables config files cle arguments, maybe a combination um It depends entirely on what it is On the configuration I I do generally like Cargo's approach of you want to be able to specify anything with any of the three, right? So Uh, prefer to put things in files Environment variables can add to the file configuration and configure command line arguments can override things through in those I don't Think there's a strong reason to say you can only use one of the one of them I think it's pretty common to say you can use all three and the question just becomes how do they operate Which override which um and for environment variables, how do you capture potentially complex file-based configuration in a string key What will you be talking about in the rust nation uk conference? um, so my talk there is going to be basically on um The long-term stability of working with rust. So these are things like, you know, if the Rust is sort of in constant flux or at least there's a perception that there's a lot of motion in the rust space of, you know New crates, new major versions, new additions Deprecations in the standard library like the language moves forward new tools become available as old tools get dropped um, and the question is going to be And the talk is going to be about, you know, what kind of changes actually matter to you? what are the implications of things like 1.0 or minimum supported rust version or a new addition It's going to be fairly user focused. So it's going to be on, you know If you're someone who's using rust or considering using rust for your project What are the implications of the ways in which rust and its ecosystem change on you that you should be aware of? Have you used zig no, I've not Given the game's somewhat steep cost and high player requirement How would you recommend a newcomer get started with blood on the clock tower? It sounds like fun? First of all, it is fun. It is very very fun I would recommend it depends on whether you enjoy playing social games online if you do There's a discord server for blood on the clock tower where you can play games online People find that a lot of fun. I'm not a huge fan of playing like social deduction games online So I don't generally play online instead what I do is I look for meetups and other like gaming groups that are in my area usually on something like Not event bright but meetup And just Go see if there are any where they play clock tower or where they might play clock tower and then go play It's it is by now decently common So you can usually find them at least in major cities Otherwise the blood on the clock tower discord server also has a decent community. You could ask of are there people who are running the game around here Also conventions, there's actually a Clock tower convention that is being organized They're running a Kickstarter and they just open up more tickets actually. So I'm very excited for that I Highly recommend if you've never played it before going to like a three-day convention is probably not the place to start But you could even just buy like a one-day ticket and just play for a bunch. It's in uh, washington dc in mid april um Can you tell us something about your advisors at mitpedos? Are there any particular things you learn from them that you feel very valuable? I admire both rtm and france a lot and thanks for their awesome system courses um One thing that I liked a lot about my advisors at at pitas was that they are I don't want to say very hands-on because they're not necessarily hands-on They can be if you want them to be but rather they are extremely prolific programmers Like they are great programmers, uh, and they're not afraid to get their hands dirty. They will like dig in write code Check out your code and try to make modifications They will like experiment on their own with random new system software. They're very good at programming. They're very efficient programmers They write a lot of code. They understand the underlying systems. They're involved in their research projects um So it really feels like you're working with them rather than for them And you know if I were to give advice to other professors or advisors out there like that is hugely valuable to really be At least be able to be close to the work um Rather than just supervising it that doesn't mean that you have to be hands-on all the time or like staring over people's shoulders But be willing to be involved Uh, I'm often disappointed that rust doesn't have reflection without writing your own macros. This has bothered you at all. No um, I feel like It's rare that I actually need it usually I get pretty far with just generics and to some extent like the any trait But actual reflection I rarely have the need for Uh, how comfortable at assembly am I? Um Not super comfortable. I I can decently read assembly. Um, but it's I would not say it's something I'm like super comfortable with Are you excited for wasm and wazi? Yes I think I think it is a very promising space that's already showing a lot of value And I'm particularly excited for how it might be used for interoperability and sandboxing Um Can you do a video on gats and how where to use in some edge cases? Uh, one day probably not yet I'll probably wait until they've had a little bit more of a runway And until some of the restrictions have been lifted because currently there are a lot of Fuzziness around the edges of gats of where it should be used where it shouldn't what restrictions are going to be long term Which are going to be a short term that kind of stuff Uh, should I just clone my strings of performance is not a problem? Is it considered bad practice or just fine? It's just fine. Um, I I tend to write my programs In such a way where I try to avoid cloning when I don't need to Uh, just so that I'm in the habit of it in case it does matter Um, but I don't go out of my way to avoid cloning when it doesn't matter like if if there's like Two paths where one is do something really annoying to not have to clone a string or just clone the string I'll just clone the string, but I will generally write my code so that I don't have to clone Uh, do you still support australian on the world cup? What do you mean still? I never supported australian the world cup in the first place. Um No, I mean, I don't really have a strong preference for countries in the world cup Um, norway isn't in there because norway is not that good Although we did beat brazil once well, we'll never always stick to that, but I don't really have a favorite team Uh, what are the best resources to find interesting and free to download research papers? Um I think all of the osdi and sosp papers are publicly available Um, otherwise you can usually find them on google scholar because like the authors put them out as pdfs on their websites, for example Uh Please do a quick public service announcement of what about what is an xy problem so that more people are aware of it Okay, so the xy problem is There are a couple of different instantiations of it, but very basically If you come to me saying, uh, hey, I have a problem. How do I do? x or how do I do y in rust? Uh, how does like how do I I don't know, uh How do I do inheritance in rust? It's like a common instance of this. Um, then The xy problem is you came to me with problem y But really you should have come to me with problem x which is the problem that came before How you got to your current problem? So rather than asking me, how do I do inheritance? You should be telling me I want to do x in rust and I currently think the way to do that is inheritance, which it doesn't have but by give by Telling me about the the originating problem. I can give you a solution. That's not here's how you do inheritance in rust But instead solves your problem in a better way Um, so very often if you have a problem before trying to pitch it to others Try to make sure you give sufficient context that if there are alternative alternate solutions to the sort of bottom of the stack that you've ended up at Um, people can give solutions that are higher up in the stack, uh, and avoid the deepest problem you've arrived at Uh Okay, let's do Three more, uh, what are some interesting weekend projects for rust to learn from For rust to learn from I think you mean to learn rust from um weekend projects to learn rust from Um, I love writing parsers Um, like pick a random file format and try to write a parser for it in rust It's fun to learn a format. It's also a code that might actually be useful. Um, somewhat interesting to write There are many ways you can write parsers. It's a little bit performance sensitive It's easy to test it easy to benchmark if you're just looking for something just like Try out, uh, parsers are a good place to start. Um And Uh, yeah, I think that I think that's where I'm going to start. Um, is There are lots of file formats is easy to do it in different languages and compare write a parser Uh Okay, two more, uh, would you recommend getting a master's degree in computer science? Or do you think a bachelor's degree is enough for a programmer career? Oh a bachelor's degree is definitely enough. Um The the value in a master's degree is twofold one is that it, um Um It tends to give you more leeway to explore. Um, that means both Time like it gives you Uh, you can spend more on of your time on looking at things that are unrelated to work in this case your studies because The academic setting tends to just have a lot of more flexibility at the boundaries and and generally Uh More spare time, um, that you're that you can spend on whatever you want. Um And the other thing that a master's degree gives you is it allows you to learn a lot about a field that you didn't know a lot about previously If you're doing a master's in something you already know really well that that second Value category sort of goes away. Um, but it can be a really good way to explore a space that you've been interested in And sort of just dedicate time to learning it really well Which is harder to do in a in a in an industry setting Usually you're not really encouraged to branch out in quite that way because you you lose productivity, right when you switch fields Um, but as an academia, that's that's fine. Um, so it's a good way to Explore in both of those ways Uh And then for the last question, I'm actually not going to pick the top one I'm going to scroll and see if there's one I really want to Answer How are there questions? I'm I'm going to answer this one just because it's simple How are there questions from three days ago? It's because I announced this stream and the question asking website a week ago or on my tuesday monday tuesday Um It was like scrolling down the question to see if there's one that particularly strikes me as I really want to answer this Uh What are your thoughts in creating a small twitch bot with a command Like exclamation mark w w w to create and submit Questions to we were wondering directly from twitch chat. Happy to help have interested. Um That might be neat. I don't know how annoying it is to write bots for twitch That could be fun. Well, one of the things that is a little weird for me is that um, I do Do dual streaming so I stream to through the service called restream to both twitch and youtube at the same time um And so it's a little odd to have a bot that only responds to comments on twitch But not on youtube because it already syncs all chat for example So ideally what I would want is sort of a restream bot, but I don't think they support that I have for a while considered whether I should just pick one platform or the other But at least last time I looked at it the viewership was split like almost 50 50 between youtube and twitch so that that indicates that there's sort of a Like people have a preference for one or the other and tend to stick with it And so I it feels unfortunate to have to leave one or the other half behind um That does that's not to say that it's not worthwhile to have a bot that only works on twitch. Um I don't know if it matters It is true that like as i'm sort of watching chat on the side a decent number of questions tend to come in there But I think the same thing is going to come up where you know, people won't know to use the bot and so therefore Just like they don't currently know to use the website and so someone's going to have to tell them and then Does it really matter whether they do it with a question thing or go to the website? I also like to encourage people to go to the website because it means that They're more likely to vote for other people's questions and I think the votes actually matter a lot Whereas if everyone's incentivized to just like fire off questions from chat They're going to be fewer votes and more, you know single vote questions, which isn't ideal So that's that's my take here Okay, I think that's uh all we're going to do today Okay, we got through a lot of questions. I think Oh, that's one thing I should add is a count of the number of answered and unanswered questions because currently That there's no actual count shown anywhere Uh, great. Thank you all for watching. Thank you for coming out Uh, I'll make sure that when I upload this afterwards I should have said this at the start when I upload this video I'll put in chapter marks for all the questions so you can easily like go back to look at what questions You may have missed and stuff The next stream will probably not be a Q&A now that I finally got through all the things I wanted to do in the Q&A Uh, so I'm guessing another Krustler-Rustler-Ampel-Ruststream Whenever I next have the chance See you all. Thank you for coming out Bye