 Hello everyone welcome back to another stream this time. It's a another one of those Q&A's which I'm always I always find it weird to Do a Q&A because I'm like why? Why would I have answers to any questions like who am I to try to give answers? But people keep asking for it. So I figure why not do one I? Shared a link to a page that has where you can like ask questions and vote on questions And so I've been keeping track of those over the past you know week or so And my plan here is really just to go through the questions from you know most voted on to least voted on and just You know the have have a bit of a chat about each one One thing I'll mention just because of all the mayhem that's currently going on in Twitter is that I am on other platforms too Although I'm I need to get better at actually maintaining them in particular Let's see how well this works if I do this So I'm also on co-host co-host org slash John who I'm also on fostered on Let's see if I can actually figure out how to open that one ha Which is just fostered on org slash at John who the fostered on has gotten some a bit of a bad rep recently because Apparently they have some blocking set up against the Macedon service in Japan, which is not great Hopefully that's something that can be Undone and repaired Oh No, the Q&A link stop working. That's unfortunate Let's see. I think it's back up now. At least it's back up for me The way this Q&A is gonna work is I'm just gonna do the questions top to bottom by you know most voted on to least voted on and If you think of other questions as you go Just put them in the in the Q&A site other people will vote on them I'll mark things as answered as we go So you'll see which ones are you know still the candidates for being answered. I'm guessing we'll probably go for You know a couple hours Which is pretty wild, but we'll see how long we go and when the questions start to dry up I'll try to keep an eye on chat as well as I go. Let me switch back to this You know in case they're smaller follow-up questions and such but for anything that's sort of a a change in topic I'm gonna use the the Q&A list instead Oh Yeah, interesting. I think this website is struggling under the load But at least it looks like I generally have access to the question. So well, we'll see how it goes Alright first question How do you manage your time for work open source personal projects and life? So this is one that I get a fair amount Not just in public, but but privately to from people that I mentor for example of you know How do you find the time to do basically more than one thing and I don't think there's a great answer to this one of the challenges with Having side projects is that you only have a finite amount of time the I think there are two Pieces of advice maybe that I would give here the first one is you will never find time you have to make time That applies to me just as much as anyone else for things like streams It's not as though I just magically have like a five-hour gap in my calendar to do an implementation stream It doesn't work that way it is I have to like Allocate that you know two weeks from now I'm gonna do a five-hour stream on Saturday so that I don't have any other plans that time and and the second observation I would make is that Make sure that you do things that you find to be interesting. It's pretty easy to make the time for things that are fun But If you have side projects that you're not as enthusiastic about as As the other projects you end up just not spending time on them that's in practice what happens and so it's it's Important to sort of Evaluate your side project and figure out which ones are actually worth while spending your time on which ones you you know finding joy and so to speak like I know for me, I Accumulated a lot of side projects that are hard for me to put aside and It's not necessarily that I still care about them But it's I feel an obligation to continue to maintaining this that this happens for things like Open-source projects a lot where you know, it's something that I built 10 years ago and I no longer need that particular thing. I no longer use that particular thing But I am still the owner and I feel a responsibility to continue to maintain them and and finding times for those is is pretty hard and You know one of the things that I've been thinking a lot about is how can I offload some of that work be it? you know just market as abandoned or You know try to actively solicit new maintainers It's it's difficult In terms of managing time more broadly, I don't really use a system arguably I should I've I found though that if I sort of look at my schedule. I It's not as though I have like if I filled my calendar I wouldn't have lots of things to put in the calendar. It's not as though I have you know Tons of meetings. Let's ignore work like this assume work is one chunk like one unit chunk in my calendar But for all the other stuff, it's more that just things come up or I discover things I want to spend time on So it's not really things that I can plan out in advance. I do try to plan for open-source work So in general, I now do open-source work like Sort of every weekend like I let it build up over the course of the week because After I get home from work at the end of the day I don't I often don't want to sit down and do more programming even though I really enjoy programming, but it but I end up You know feeling as though I've I've expended some of that creative energy And then when I get to the weekend, I then catch up on my github notifications like some of the streams that I've done on on You know day in the life of open-source maintenance. It's that kind of stuff and So I do end up sort of dedicating time to it, but it's not as though like it's Saturdays from one to four It's more I know that on Saturdays. I tend to do catch up on you know email and open-source And even that was a struggle actually to say, you know, I'm gonna Not respond to things immediately. It was a there was a lot of I don't know resistance in me towards Making that trade-off Because I feel a I don't know a sense of Responsibility or something where I Want to address things straight away if I you know, if I'm just sitting on the couch and watching TV or something I feel bad about not responding to you know an open PR or an issue or whatever But at the same time, I know that if I tried to respond to everything if I tried to address everything quickly then it would be Counterproductive because effectively what would happen is I would burn out. I wouldn't have enough downtime And and I think managing your own sanity in that sense and and recognizing that like you need to have time That isn't set up to do something productive as well. Otherwise you go insane All right, I'm gonna consider that one answer even though, you know, it's a it's a big complicated topic But but I think it's hard to give a Complete answer to it All right next question When picking third-party libraries for your rust projects, what design? architectural Technical attributes makes you use one library over another Are there any red flags that you pay attention to? This is a Difficult question and and I don't mean that just personally, but I think professionally as well It's a difficult question for anyone who's looking to adopt rust and any programming language to be frank, right? this this all ties back to Effectively supply chain security or in this case, you know, it's it's more like supply chain sustainability maybe of Not just do I do I trust this project like in the sense of do I trust that they're Responsible maintainers and they're not going to publish anything malicious but beyond that right? I want to take dependencies where I think they're being responsibly maintained in the sense of Do I think maintainers are gonna stick around or this is gonna be abandoned at some point do I think that the developers have a Sufficient commitment to things like backwards compatibility Do I think that they generally address, you know, feedback performance issues PRs in a timely manner Or are they, you know, very hands-off in terms of maintaining this project? Which I'm guilty of in some of my projects too often, you know to tie this back to Projects that I built a long time ago and no longer actually use myself and I don't think there's a Right answer for how to evaluate whether a given library is a sustainable dependency to take I think there are some indicators though, right? So there was a I had a Twitter thread on this a while back There's also something known as the OSSF Scorecard the open source software Foundation Scorecard which has, you know these these scoring metrics for how Good or bad a project is how how responsibly maintained it is along various different axes it You know, I don't know that it has a complete set of the kind of things I would evaluate there There are some things there that I don't really care about the kind of things that are on that scorecard are things like Do they have CI setup? Do they have Is their CI setup relatively secure? Do they have fuzzing in place? Do they have tests in place? How many open PRs do they have? How many open issues do they have? What's the ratio between open and closed? I think for me, there are some other aspects that come into this that are that end up being more social, right? So Libraries that are developed by maintainers that I've had good experiences with work pretty well, right? So basically anything built by, you know, David Tolne anything built by burnt sushi Like Those are those are strong indicators of quality and not just that it's currently high quality But also that it will continue to be a thing that's worth depending on Other factors I look at are things like When they respond to PRs when they respond to issues, how do they respond? First of all, when do they respond? But also, you know, do they respond in in a fashion that I think encourages people to contribute to take ownership of Of that project and actually help out long term or is it much more of a sort of brush things off? Other thing that matters are, you know Do they have decent testing infrastructure? I think that matters a lot Do they have You know a decently constrained list of dependencies I'm not quite the on the extreme side of your dependency list needs to be zero but rather I do think that you should have some amount of You know discerning taste over which dependencies you choose to take or when you choose to take a dependency and not But but ultimately it ends up being a very Subjective evaluation, which I think is unfortunate at the same time I don't really know what a what a better alternative is right? So there've been proposals for things like either a sort of blessed set of crates for the Rust ecosystem or Even trying to build the sort of batteries included version of the standard library that has many of these crates in there like, you know, regex and serdee and such and I don't know that I love proposals like that either because you end up essentially Cementing the status quo, right? You end up Making it not necessarily harder To develop a competitor and I'm don't mean competitor in a commercial sense I just mean in the sense of you know another crate that tries to achieve the same thing and ends up doing it better and You just make it harder for people to adopt those because it's so easy to just use the ones that are on the list that they get so Much credence by virtue of being on the list and if you have something like a blessed crate list You do have to make somewhat difficult decisions, right? You you want to You probably don't want multiple crates that do the same thing But that then also means that you can't really swap out one for the other because that's sort of a breaking change in your Suggested list of crates. So it it just becomes a really hard evaluation And and you know, I think we have good examples of where it would have been a problem if such a blessed crate list existed or An extended standard library existed you can think of things like you know before we have serdee had serdee We had rust serialize which I'm glad we have serdee over rust serialize But rust serialize was used everywhere until serdee came along And so, you know if we at the time had blessed crates serdee might not never come around And I think you we have the same potential for serdee going forward, right? It could be that Serdee is not the be all and end all either Maybe we come up with a better design for how serializers and these serializers should work And if so if serdee is one of the blessed crates, then how do we even make it possible for such a thing to be Built and gain traction and get adopted and be moved to Another instance of this is Lacy static where these days in general you'll want to use one cell instead of Lacy static But it it similarly was used and is used everywhere So it's it's it's tricky And I don't I Don't know that we can codify, you know the the most important that the attributes that matter because this is problem, too of if you make It if you make a metric your goal And I think there's sort of a well-known way to phrase this But basically if you if you make your metrics your goal Then people are gonna start to essentially gamify this and try to figure out ways to beat the system to get good at the metrics Because they are the things that people look at without necessarily actually making the project better You can imagine someone writing an extensive test suite that basically test doesn't test things very well but ends up scoring well on the metrics around testing and You know, I I don't think we necessarily want that kind of Gamification either that the same thing applies for trying to come up with you know objective scoring for is this a sustainable dependency is this a risky dependency It's difficult because not just are there a lot of metrics that go into such a score, but also What things you weigh heavily for your project might be different from what I weigh heavily in my project and Navigating those nuances is if all we assign is you know one or two scores is difficult Once you start assigning, you know semi arbitrary numbers to things a lot of nuance tends to get lost Oh Why one cell rather than Lacey static There are a couple of reasons for this I think the big one There I forget all the details, but one of the big ones was that with Lacey static your initializer for the Lacey static happens Sort of at a special time in the library It happens in a sort of magical early function that gets called when your library is loaded And that means it's harder to do things like handle errors You don't really in some sense your program The Lacey statics get initialized before your program gets to run so they can't really do anything like handling failure gracefully With one cell it takes a different approach of saying When you access the thing you also give the initializer and that way The value gets initialized during your program execution, which means that you also have a way to propagate errors and so that ends up being a slightly more reliable way of Doing initialization or not necessarily reliable, but more flexible more powerful perhaps All right, let's mark that as as answered Okay, so this next question is How can you morally justify working for Amazon, especially in light of Amazon's anti-unionisms? This is a question. I struggled with a lot And obviously, you know, this is where I give the caveat of this is my personal opinion This is not the opinion of you know, Amazon or whatnot but I struggled with this because The way the question is framed it ends up being a very black and white question of like Amazon bad therefore why you work for Amazon and I I do understand the framing of the question But but I did I take some issue with it, which is that it assumes that Things are always right or wrong And I don't mean that in the sense of like the particular actions are being called out like anti-unionism is at least in my opinion Just bad But but it's more a question of my decision to work there ends up being a You know multi-faceted decision where what I have to trade off is the benefits of working there versus the Versus the the drawbacks of working there and in the in the drawbacks buckets are things like you know There are many things that the company does that I don't like and that I Want to distance myself from but at the same time there are things that I'm enabled to do by virtue of Working for this company and particularly in the role that I have that I see as significant advantages that I think would be Very difficult to get anywhere else And so ultimately it ends up being this kind of trade-off of you know I can get benefit I can and when I say I can get benefits that it's not necessarily about me It's more about the impact I feel I can have on the world where there are good things I can do by virtue of being in this role But there are also bad things that this company does and and how do I trade these off? How do I weigh them relative to each other and? At least for the time being the balance for me comes out to I think I can do more good than the Bad that results from me being there and so some of the examples here for me is stuff like I End up having a decent amount of What's the right word here? Impact on the adoption of rust at Amazon You know a lot of my work is essentially Enabling more and more teams more and more developers to make use of rust that in terms of has a positive effect on Rust as a programming language rust as an ecosystem and what we can argue about you know is Companies using a language a good thing, but I think in general it means that you know There are more jobs created using this language in general right it becomes a better known language the fact that a large company adopts it widely is a Signal to other companies that they should start adopting to so it creates jobs not just there but elsewhere as well using this language It at least the way I tried to push Means that more resources ended up being funneled into the rust ecosystem beyond just the company and I think if I If I wasn't there, it's not as though you know Amazon would stop doing things with rust But but I do think it gives me an ability to Steer the direction that that involvement takes and and I don't think there are many other places I could do that at the moment Someone mentioned a chat thanks for even considering to answer this question I thought about it a lot actually I saw this question come up and I was like not surprised right? This is a very obvious question to ask But it's also a it's a thorny question It's a difficult question to answer and it's one that you know, I struggle with myself I don't I don't I can't claim that I have the right answer here All I can claim is I've tried to balance this in my head and and I've come out on the side of For now, this is still the right thing for me Yeah, and it's just someone also makes the the argument in chat here that if all the good people avoid working at Amazon Then Amazon never gets better which a place to any company, right? that argument only goes so far right where It assumes that given a sufficient number of good people the company changes for good and That's not always true. I do think it's true in Amazon's case, but That that becomes entirely speculation, right? Following on that thread what would it take for you to take a similar step as faster than Lyme? Yeah, so so Amos's path here is is an interesting one that I've thought about doing myself, too so Amos faster than Lyme recently announced that they were gonna Start doing open source full-time, you know open source writing teaching and I've considered doing the same thing myself for a long time. One of the reasons why I didn't was because In it's hard for me to do that in the US because I'm on a visa and in particular I'm on an employer sponsored visa and so that means that I can't I Can't do work that isn't associated with an employer and self-employment is real tricky And so I can't have a patreon or get up sponsorships on the side because it's condition gets considered Work from elsewhere than my primary employer, which is not permitted And I couldn't do full-time work on you know patreon and get-up sponsors because they aren't full-time employers They wouldn't sponsor my visa it is something that I've Considered more, you know in terms of when I do eventually leave the US that might become more tenable but you know as Amos pointed out in in the article they wrote as well it is a Scary step because suddenly your your livelihood ends up being shifted to depend on a lot of people who all contribute a little which is Difficult right it ends up being a pretty significant Change in risk it's harder for you to lose all your income But it's also much harder to achieve a livable income on something like that There there are relatively few people who can sustain themselves only on that kind of work and and I think you know a related problem here is that And I think about this a lot too that Let's say I started a patreon today or a get-up sponsorship or both today I Would feel bad about people Sponsoring me with large amounts of money You know the large relatively speaking here because at the moment my salary is pretty good And so that would be a sort of wealth shift in the wrong direction if you will but at the same time if People don't contribute much because they see that I don't really need it or I say that I don't really need it Which then is true it means that it's a More difficult choice for me to choose to leave the sort of relative comfort of my current job For that because I don't see what the actual payout would be And I would have to sort of take the leap and gamble on the fact that people would increase their contributions when they see that I no longer work for a big company So so you know it's a scary step and I'm I'm very curious to see how it ends up going for for Amos And I I really hope it goes well because it's a path that I would love to take as well I think for me it would take a maybe a slightly different path in that I think I would focus a little bit more on teaching right so I would continue to do my open source stuff I would continue to do things like streams probably much more regularly But also I might do things like offer Maybe some kind of class maybe some kind of workshop maybe even you know Pay this amount of money and I'll come teach the engineers at your company about rust You know, I think I would have to find some of those kinds of opportunities to Make it sustainable But it would be really fun. It's something I think would be great How does part-time interact with that yeah, I've wanted to be part-time for a long time But again us visa doesn't really let me do that. It is something I could potentially do in Europe, right? I could I could work part-time and then Do you know patreon get-up sponsors as a part-time thing for a while in this sort of transition slowly as I see it become possible Very much also a path. I've thought about it is a little harder to land part-time work But I think it might be doable This all becomes you know, it's something I can't really do at the moment So I haven't looked enough into it to know whether it's a it's a tenable thing for me to do in the future Um Alright next question Would you recommend any beginner-friendly open-source rust projects? This was tricky because as as I evidently say for basically every question I Think that the best beginner-friendly open-source projects are the ones that you start yourself Because trying to learn someone else's code is a lot of work and Not always worth it, right? It could be that you start learning a thing and You don't really care about the project You just want to have an ability to contribute and to learn from a big code base and that's not a great environment to learn in Whereas if you're building something that you need you deeply care about you're gonna be much more Enthusiastic about building it and if you started from scratch then you don't have to also try to learn You know in addition to learning the language have to learn someone else's code base and learn, you know The problem domain that you're not familiar with And so I actually think that I would recommend starting things from scratch There's an exception. There are two exceptions to this one of them is if there is a an existing project that You find really interesting or cool, right? It's something that you have used for or you have an interest in or ideally both where you know You feel a passion and enthusiasm and excitement for learning how it works then I think that those are great projects to start with and You know when it says beginner friendly people put different Different meanings into that description, right? So beginner friendly could be things like mentors are available or there are issues that are beginner friendly you could start tackling I don't That helps but for me Beginner friendly is a weird term because I it assumes that beginners are Not slow to learn but it assumes the beginners can't handle complex problems, which I don't think it's true It takes them longer But that's where it ties back to if you have the enthusiasm the excitement Then even if there's a complex problem to solve you might have the the energy the drive the motivation to really dig into them and understand them So so I would I would caution against you know Recommending don't touch any particularly complicated problems if you're new and instead say tackle the problems you think are Interesting to work on because they're the ones you're likely to be most productive in and feel like you're making the most of my attraction on The other exception here is There are some projects that are Very good at bringing people into the fold And so here, you know, I'm thinking of projects like Bevy have been pretty good at this Clippy has been pretty good at this the rust project itself has been pretty good at this And so there are some where you know that there are enough resources enough people who care about onboarding around to You know make the project relatively Smooth for people who are inexperienced to get on to But at the same time I don't think that means that you should start working on them If you don't care about the problem domain, right? Like if you don't care about working on a compiler Then you shouldn't start contributing to Rossi Or when I say compiler here, you know, the compiler is pretty large. It has you know Diagnostics there's a lot of type theory in there. There's also, you know lexing parsing the person's performance So there are a lot of interesting components of a compiler But but if you don't care about that domain of things that even though it's a beginner-friendly project I it's not one I would recommend you start working on So But but it can be a good candidate if you find some of those problem domains interesting Yeah, and another good recommendation here in chat is to Do something where you have relatively fast feedback loops So in general with like human learning we learn by getting feedback And so if if the distance between or the time between you submitting something to getting feedback on it is very long That's going to be Much harder of an environment for you to grow in now the feedback doesn't necessarily have to be human feedback Right. It could be something like You know if you're doing performance optimization Then how quickly can you get results on your your iterations and your improvements? But sometimes human involvement is important here, too If ultimately your goal is to contribute back then, you know, if you ultimately submit a PR and you don't hear back for me for a year You're learning sort of stops there And so this this comes back to it's worth looking at whether the project is basically dead Or whether there are people who who seem like they might be willing to To help someone get get started and at least, you know, it's the contribute feedback if not mentoring instructions Let's see. Okay, I think I think that's about the end I'm just scanning chat for whether there are follow-up questions to this one If you have questions that are on different topics then just submit them to the the question site Because that's the thing I'm going through for for you know getting new New questions as I go. I'll put the link in chat again What are your thoughts on WebAssembly? um, I Think WebAssembly is really cool. I I love the fact that Russ has sort of leaned into becoming a Pretty strong player in that ecosystem. I think Russ is a good fit for compiling to WebAssembly as well Unfortunately, I haven't done much WebAssembly myself But it is something that I I want to do more of if only because I see it as Being a pretty exciting Path forward, you know, we were stuck in this in this I don't want to say rut, but We were stuck in this world where you could only use JavaScript for front-end development for a long time and The fact that that's changing I think is pretty cool The other thing that I like about it is that WebAssembly is becoming a sort of interoperability language or interface maybe between different programming languages that is Not just, you know the the C, you know, ABI And I wonder with things like wazzy whether that's gonna make a huge difference to how we do things like develop You know Overrelated binaries think of things like Plugins and extensions, right where maybe instead of trying to link with the C ABI you do Interfacing through WebAssembly interfaces be really cool But because I haven't used it that much myself I'm hesitant to you know Get try to claim that I have any any right answers in that domain Yeah, the website seems to struggle under load if you refresh it all the event the Q&A site comes back again every now and again Yeah, well, what I'll probably do actually is after the stream reach out to the maintainers of the site and be like hey It looks like you struggle a little under load All right, what would it take to drop Vim and adopt another editor like Helix We take a lot for me because I don't really have any problems with them When I say Vim, I mean you have him although Vim itself has gotten pretty good too now, but Like why would I switch? I Genuinely just don't have complaints about any of them. I And I also, you know, I exclusively use my editor in my terminal I love the fact that I can you know SSH into a machine and have the exact same editor experiences. I do elsewhere So, you know while I think it's really cool that people are developing new editors and I understand the appeal I understand the excitement. I Don't need what they bring You know Neo Vim has a lot of plugins they It's extremely customizable. It has key bindings that by by now I'm extremely used to It it or Vim you can get everywhere and runs everywhere The key bindings are you can find for basically every editor. So I Just don't Really see a strong selling point for switching editors at this point, you know I think there are some arguments for things like If you build things in you can make them faster. I'm thinking of things like syntax highlighting or Like language support more broadly like auto completion and that is true, but at the same time, you know, this this becomes the monolith argument of You can build better things if you co-build everything together But at the same time you end up with a more strongly connected and strongly coupled design That makes it harder when you know something like LSP comes along You know, if you built an editor before the the world of LSP and you weren't leaning into having everything be supported by plugins Then because harder to move to something like that I don't know. I just I don't really have a Desire to move away and that's maybe where the the challenge comes from And yeah, I know that there have been a bunch of people asking me to do another stream on my Desktop and editor and hardware setup and I I know I've promised this for a while I will do one one of the reasons why and I've said this in the past to why I Haven't done one yet is because I don't feel like my knee of him setup is stable I I still think things are sort of shaking out in terms of how you should configure LSP for example with me of him and You know, I feel like if I did a video on it the chances that it gets outdated in Six to 12 months is decently high and that's unfortunate But maybe that just says I should do a new one every every 12 months to update people on my setup. It could be My configs are already on GitHub So someone pointed out that they've been using Helix for about a year And that they're lazy and don't want to keep maintaining a large config and it's interesting because I don't actually feel as though My Vim config requires me to do maintenance on it every now and again. I do right every now and again. They'll be Changes to One of the plugins I use for example or we'll move away from one plug into another and I have to do some work But I've found it to be relatively rare in general. It kind of just keeps working and then for me, you know the tiebreaker often often ends up being that I wanted to work in a terminal and Most editors just do not work in a terminal. You can't run sublime in a terminal You can't run VS code in a terminal. You can't run, you know, IntelliJ in a terminal So I don't even want to consider those editors And You know that there's a flip side argument of well those editors have Plugins that let you interact with something that runs on a remote system To which my answer is yes, that's true, but I would rather just SSH there and use the editor locally The the the editor is so close to the developer experience that you know, if I'm gonna want a terminal there anyway Why not just Use the editor there, but but I do at the same time, you know I recognize that there are limitations to what you can do in a terminal environment and having a fully graphical editor does give you some some abilities to You know play with more interesting designs for things like Code suggestions and auto-completions and stuff that are hard to pull off in a terminal And so I appreciate that argument It's just I haven't seen anything that's compelling enough for me to move away from the the setup. They already use Have you tried to pre-configure any of them set up like AstroVim nope Again, I don't really know why I would I'm pretty happy with my setup and I feel like I would rather keep adding things until I have Only what I need then I would have take a giant dependency and then remove things or Disable things until I get to what I want Debugging from other IDs debugging is when I hear a decent amount, right if people want these sort of native debugging experience you get in In a more graphical ID, I understand that I just haven't found the need for that like for me I get very far with just like print line debugging in GDB and it is true the experience is nicer in an ID But it's not a compelling feature for me. And maybe that's because the development that I do It ends up that I do less of that debugging. I'm not sure but that's just never really been that much of a pain point for me Okay, I'm gonna consider that one answered Next one is what features would you remove or rework from Rust? I Get this question every now and again and and I always find it Tough because I don't really have a sort of hobby horse of Or I don't have a backlog of things where I'm like rust did this wrong I think there are some smaller things like One thing that's pretty frustrating is around Things that stabilized in the standard library before we had capabilities that we have today and What got standardized could have been better if it wasn't standardized that way, but That would be a sort of 2.0 kind of discussion It's not really something that's broken with the rust as much as it's a You know a result of a language growing over time An example of this would be something like Boxed errors so if you have a box din You know error plus static plus send plus sync that type does not itself implement error the error trait and That makes it really annoying to work with in some some cases especially when you're using them like anyhow like the two aren't You have to play tricks to get them to cooperate and it can be pretty frustrating So there are some of those kinds of like pain points Things I'd remove You know there's been a lot of discussion about whether the pin trait should have been unsafe or the unpin trait rather which You know I see the argument for why it is correct for it to be safe But I also see the argument for why it would have been nice if it was unsafe because there are so many foot guns But these are all fairly minor like I don't think I really have a sort of this whole thing is broken I have things that I I wish rust had but they're not really things that are there that I would change as much as they are You know things I think are worth fixing up. So these are things like Custom testing frameworks be really nice to have like currently You know that the fact the rust has a built-in notion of unit and integration test is is really nice Arguably cargo has a built-in notion of them rust less. So but I really wish we could see you know innovation and how to develop Testing infrastructure. I think it'd be cool to see what kind of things we can get there You know cargo next test is a test runner, but it doesn't really give you know Mechanisms for you know said doing tests set up and tear down and Output reporting change and that kind of stuff that I would love to see innovation on and currently we don't really have a good framework for doing so I don't really think I have other things I would remove I think I'm relatively happy with where we've landed and the things that I see coming down the pike All right. Oh, yeah cargo bench is another one although there too I think custom test frameworks are arguably the the answer rather than Standardizing how to do benchmarks All right Do you think rust is on its way to become the next C plus plus due to the complexity of the language That question did not go where I thought it was going to go So I think this is asking are you worried that rust is becoming as complex as C plus plus is I So yes and no Rust is certainly growing more features And That doesn't mean that you have more tools in the language and that does make the language potentially more complex at the same time A lot of the things that we've gotten in rust recently. I'm thinking of things like you know generic associated traits are At least in my mind not really making the language more complex as much as it is filling in feature gaps right so If you if you think about rust in a sort of abstract sense not in terms of what the language currently supports But just like what the language is about you think of you know trait bounds and lifetimes and those kind of things The generic associated type seem obvious they seem like a thing you should just be able to do and the fact that that wasn't possible was a limitation of the implementation of the language and Making that possible at least in my mind arguably makes the language less complex because there are fewer rules for things that won't work Now of course it doesn't mean that things like trait bounds can now grow more complicated right so there's sort of the difference between The complexity of the language and the complexity of what you can build in the language complexity of the abstractions And so I think it actually makes the language simpler but it makes it possible for abstractions to be more complex And I think that's generally the right trade-off like I do think that you want a Language that feels relatively complete or rather feels like it doesn't have obvious holes because holes are a terrible thing to try to Understand when you're learning the language of like but why can't I put a lifetime parameter here that makes no sense Why can I put it like in these places but not those places? I think we another another candidate for this is type alias infiltrate so existential type aliases where it's something I think Folks learning the language probably expect to be able to do but they just can't inferred bounds might be another example Where why doesn't this just work? Why does the compiler require me to either not do this or do it a different way Or spell things out when the compiler should just know that it's true Baro checker bugs have a similar flavor right of there's like one long-standing bug in the baro checker where if you Return early from a function and you borrow something In the return like the return value borrows something that's also used in the remainder of the function after the early return The bar checker can't reason about that and ends up Just refusing to build your program like the baro check fails and You can have entirely correct code that just gets rejected and it's a terrible beginner experience if you run into this because Your your mental model is correct, but the compiler is telling you you're wrong and that's a bad mismatch You know in some sense, I think that this question is really is rust is rust You know theoretical capabilities is rust type system It's called too advanced too sophisticated to the point where it allows abstractions that are so hard to reason about That the experience of using the language becomes painful And I think you know that there's a similar question to be asked about something like Haskell Or if you go even further into formal verification where you have languages that allow you to arguably state anything like your bounds are Very complicated because they're essentially proofs You know that those things are they are harder to work or harder to reason about but at the same time they provide immense value Being able to have the compiler check things for you. I think is worth the cost of the added complexity that's required because we need to We basically need to state more facts about the code that we write that that's effectively what trade bounds ends up being and I think I think that's worthwhile complexity And I think that that complexity is slightly different from C++ complexity I think C++ complexity comes more from the language and the syntax than from the sort of theoretical type theory complexity Let's see C++ grows features with compromises rust can grow with lesser compromises Maybe there are certainly compromises in rust too although I do think that we have been fairly good at trying to develop or trying to land features that have a decent amount of cohesion with the language that exists already And there's a little bit less you know designed by committee Yeah, so another thing that comes up in chat is you know whether rust and C++ are end up being bloated languages and bloated here too has multiple different meanings and it depends on which meaning you use Right like the Rust standard library is definitely not bloated right it's a very narrow standard library it's very deep but narrow Right so option for example has tons of methods on it but we don't have things like you know an HTTP server or a client or anything like that so we cover less ground but we cover it very well Is that bloat? I don't think it is Same for syntax I don't know that you know when rust introduces new syntax I think it's usually for a good reason I think we're decently good at only introducing it when needed That said rust does have a lot of syntax but I think that ties back to the fact that as I talked about a moment ago you know rust has a type system A sort of theoretical underpinnings that are more powerful in a sense than some of these other languages and therefore needs to have more syntax to be able to represent the fact that it has more concepts in the first place That too is a trade-off but I do think there's a reasonably good argument for why rust does need to have some of that extra syntax Okay let's see next question is do you like co-pilot? Okay so my hot take here is that I think co-pilot and similar kind of endeavors are problematic in the short to medium term And the reason I say that is because the number of times I have accidentally introduced bugs because I've not necessarily copy pasted code but just assumed that code did the right thing and not read it carefully Is pretty high and I worry that that only happens more if your editor gets just put in code for you I think what happens is it puts in a bunch of code for you and you start relying on the fact that it's mostly right And it might even be right for the cases for like the main execution cases The challenge is all the corner case behaviors and that means you start relying more on your tests Unless you actually go back and read the code that was auto-generated and if you go back and read the code that was auto-generated It has saved you relatively less It is true that it can save you from things like looking up a bunch of API documentation for example It might allow you to get close to the correct solution faster and I think there's value in that But I worry that developers will lean on it too heavily and then get bit by all of those subtle bugs in or subtle mismatches between what the generated code tries to do and what you actually wanted it to do That you end up not really auditing that generated code well enough That said, I think we won't get to something that you can actually rely upon without going through the learning process of using and then iterating on something like co-pilot Like something that works less well or less perfectly I guess this comes down to I'm unsure about whether imperfect code generation is worthwhile I think perfect code generation is worthwhile I don't know whether it's achievable All these libraries have the same bug And he thought some possible license problems This is a whole different rat's nests or Pandora's box maybe When you generate code that's ultimately sourced from many different places Who owns the code and not just owns but even for things that are actually open source Many open source licenses require attribution But if the code that you got is built based on scanning hundreds of thousands of code bases What does the attribution look like? You can imagine you just put attribution for all of the works that you scan But then attribution becomes meaningless because it's just a list of every software project because you scanned all of them So I think we have both technical problems here but also social problems around attribution, licensing, ownership And I'm not going to claim I have the answers here But I struggle to see how we get to perfect code generation Or code generation where you know you don't have to audit it And it's a responsible way to use other people's code What's interesting here, especially about technical questions or technical imperfections in the generated code Is that a stronger type system might actually help you here Because it might be that the generated code if it doesn't do exactly what you wanted then it won't type check This is sort of the goal of getting more into formal methods where maybe we could have it so that you use code generation Only in contexts where you can sort of prove that it generated the right code Which is an intriguing possibility but I don't know of any efforts in that particular direction There's also the question of what if you had bad programmers? Is it better to use auto generated code that's imperfect Or is it better to let a not very good programmer just write the code themselves I don't have a great answer to that either but I think you don't want to use either of those code bases Even if a bad programmer reviews the auto generated code I wouldn't trust them to do it properly So I don't know, it's a very difficult question What is the difference between a human learning from thousands of open source projects and using what they have learned to write code without attribution and a bot doing the same I think that's certainly at the core of the question is to what extent is a human just regurgitating things that they've seen in the past And to what extent is an AI code generator doing the same thing It could be that you can make the argument that really what AI code generation is doing is creativity It's not just copy pasting lots of small bits from everywhere, it's actually generating new ideas or new combinations In which case it is much closer to a programmer just saying I'm just applying what I've learned But even there that doesn't get you into a free for all situation, it's not as though that absolves you of all responsibility If you as a human programmer read the source code that someone else wrote and then write it from memory Then it's still not okay for you to not do attribution depending on how close the thing you wrote is the thing you read This is why companies often do clean room implementations so that they can't be liable where you're not allowed to look at any of the source material So they can't be reliable or liable for being accused of copying things So the answer is I have no answer but I agree that it's a difficult question Alright What do you think about Rust finding its way to the Linux kernel and the approach they have taken in doing so? I think it's really cool. I think it's fantastic to see Rust get into Linux kernel I also think it is a very good input channel into Rust's development So the kernel has some really weird, not weird, really niche requirements of the languages that they build on top of the ecosystems they build with They build themselves and I think many of those niche requirements are only the Linux kernel needs that exact configuration of niche things But each niche things might be needed by many other projects and the fact that the kernel is picking up the language means that those niche things are more likely to get addressed I'm thinking of things like one of the big things that came up in Linux adopting Rust in the kernel is what do we do about allocators In the Linux kernel you want to be able to guarantee that certain code paths do not allocate or only allocate in known ways And Rust doesn't really have a mechanism for doing that, especially once you take third-party dependencies And I think this has really pushed forward the question of how does Rust implement such a feature? Is there even a way to do so and that is generally a lot of interesting discussion that probably wouldn't happen with the same amount of depth or weight without the kernel picking up Rust in the first place I also think it's a strong indicator that Rust is sort of here to stay and has merit that this is sort of a stamp of approval maybe But I think ultimately matters a lot in the world of programming languages You need to be able to point to other successful adoptions of the language for the more hesitant players to pick up the language But I don't think I have much more to contribute there What are your opinions on management consulting? Interesting, I don't know that I have strong opinions on management consulting If I do or if there's a variant of this question that I have opinions on Certainly consulting more broadly I think is actually a fairly good idea Mostly because companies can avoid having to become experts in everything that they need Think of things like security work They've required every company to have their own internal pen testers That doesn't scale because for most companies you ignore the very large ones For most companies they don't do enough security work that it's worth having people work full time on security That's not their business model, that's not what they do And they wouldn't really do a very good job even of hiring a security professional or retaining them or giving them the tools that they need And those are the kind of situations where consulting works really well And I also think it's really great for someone to be able to work as a consultant I've thought of this myself of trying to be essentially a Rust consultant that gets hired into Whether that's to develop a crate or help design an API or clean up some Rust code or help with designing software built in Rust That would be really, really fun and it would allow me to apply my expertise very broadly While still getting lots of new challenges every day and new ways, new problems to look at And that would be really fun When it comes to actually management consulting like McKinsey and BCG and stuff I don't really have a problem with them I think in some sense they provide a needed service I think there's a question of like, you know, you can apply some amount of ethics evaluation here of to what extent should they be more picky about what projects they agree to work on and such But I think in general the idea of consulting makes a lot of sense to me Okay, have you tried NixOS? No I've done it so many times I need to, but so far I've resisted the, I don't know, urge or urgings Like urge being self-imposed and urgings being from other people I think this comes back to the same argument I have for editors, which is I haven't had a need I've felt more of a need since I started working at Amazon because I can't run, it's much harder for me to run Arch Linux there But everywhere else I run Arch and I'm very happy with it, so I don't really have a need for Nix there That said, it could be an example of, well you don't know what you're missing out on This is certainly one of the things that appeals to me is the ability to very easily get a new system set up with a similar configuration to what I have elsewhere But at the same time that happens pretty rarely and when I do that I actually really appreciate setting it up from scratch Because it means that I get to revisit the decisions that I made when I set up my last system And very often I find that something changes, like I decide to change something about my setup when I set it up again Whether that's because system D has gotten a new feature that I want to make use of Or there's a better package to provide this or I want to switch my window manager Or all those things that are really annoying to change in an existing setup But when you get to start it fresh it's much easier to just make different decisions And so yeah, I guess this comes back to I don't have a compelling case for moving Yeah, I've also heard someone mention in the chat that the Nix language is pretty cryptic and hard to get into But I think one of the arguments is with Nix you can easily roll back And I don't know, I can pretty easily roll back on Arch too, that's not really a problem that I have But maybe this is somewhat unique to me running Arch, I'm not sure Maybe the sort of distance from Arch to Nix is smaller than someone who's used to Mac OS or used to Ubuntu for that matter I'm not sure Okay Do you use any software or plugins for NBIM for writing down notes? Nope, I do not I'm terrible at keeping notes I have a giant to-do file in my home directory which is written in Markdown And my terminal config prints it whenever I start a new shell That is the extent to which I have a writing down notes introduced And it doesn't really work really well either because the to-do document that gets auto printed is longer than the height of my terminal now So I don't really even see everything that's on there And in addition I use my phone to keep track of things that I have to do And not just I need to get eggs but also I should do a stream on this topic Or here's an idea for a crate or I found this bug in the standard library The way I do this for myself and it's stupid is I set an alarm with the thing that I'm reminding myself in the alarm text And the reason I do this is because it forces me to look at it later Because if I have it in a to-do list it's like pull versus push I don't go read the to-do list very often But if it gets pushed to me because my alarm goes off I will at least look at it So I have some alarms that actually go off every week to just remind me about the idea and think about it some more And then inevitably what happens is when they go off I snooze them or I let them go until next week Or I transfer them into that to-do document which is at this point basically append only And it's not an ideal setup but I haven't really found a better way to go about it And you know I've tried using to-do apps and stuff and it ends up being the same thing Like I think maybe the problem for me is so many of my to-dos are long-term to-dos They're not you know a thing that I can just do in 30 minutes or at least that's somewhat rare Like let me see if I can pull up my to-do here I don't actually want to print my whole to-do because there's some stuff in there But like let me read some stuff from my to-do list here I want to add myri strict provenance checking to haphazard flurry and left right I want to do a follow-up stream to the wait-free algorithms I want to do a stream on using cargo as a library I want to do an unsafe chronicles on pointer provenance I want to port more tests from folly into haphazard I want to find new maintainers for a couple of the crates that I maintain I want to write a long form blog post on why we shouldn't be doing interviewing based on data structures and algorithms I want to design a D&D campaign again I want to add a lint to clippy or the standard library to deny boolean arguments I want to design a crate that does open loop workload generation I have some errata I need to add into Rust for Rustations I want to do a director's commentary video of Rust for Rustations All of these things are things in my to-do list that I can't just do These aren't a couple of our projects I need to schedule a block of time for them over a long period of time They just end up going on the to-do list They don't really work really well on if I have a to-do app The to-do list is just going to be a ton of things that are very long-term things One or two things that I'm going to do next week When it comes to writing down notes, which is what the question was originally about Notes more broadly of keeping track of things that I learn I'm terrible at I used to be better at this and then I realized I just never consult the notes So why am I taking them? Which I think the number of times where it would have been useful for me to have kept notes Is relatively low and therefore I never learned to be better I've heard Obsidian can be pretty good because it lets you create knowledge graphs But there too, I just don't keep notes about things that I learn Arguably I should, but I just don't One thing that is a problem with my current setup is that it doesn't really do synchronization I have this one to-do file that I use on my laptop and my desktop I just SCP it between them and it's not a great way to sync It's a great way to lose data It should be in Git, but it's not. It's just a text file I don't have access to it on my phone Which is why I sometimes set alarms to remind myself to move things from alarms on my phone into the to-do file It's a mess Arguably one of my to-do items is figure out a better way to manage to-dos But the last time I did that, the improvement was have a to-do file I think at one point I had 30 alarms set on my phone for various random times Some of which were on and some were off The other thing is just like, you know, I have open tabs on my phone for things that I have to do And at the moment I have so many open tabs That, why does it not... That my Firefox on my phone just shows Let's see if I can get it to focus there The number of tabs open is just an infinity symbol Because I have so many tabs open And it's not good, but I just haven't found a solution to this problem And that's not... I also have pocket So I have lots of articles that are also added on pocket So these are all the things that aren't articles It's a mess The answer here is don't follow my footsteps, don't do what I do Because I don't have anything good to say Oh, lots of people are asking questions now about things on my to-do list Denying Boolean arguments This was... I forget where I came across it I think this was like, I ran into a bug where the reason why my thing was broken Was because in my head I had reversed the order of two Boolean arguments to a function And I spent like three hours tracking down why my thing wasn't doing the right thing And it was one of those points where I was like, okay I think I'm ready now to say we should just not have Boolean arguments if you have more than one And so I came to this conclusion that it would be nice to have a lint That's probably like a pedantic clippy lint that's just deny Boolean arguments altogether Maybe you could say only deny if there's more than one But I'm actually thinking just deny all Boolean arguments Like basically remove the Boolean type from being allowed to be named It should not appear in structs Structs might be okay, unclear, but maybe But for function arguments, no, they should all require to be enums And then we just make it easier for people to have Boolean enums So you could imagine maybe this crate already exists I don't know, I haven't looked into it, it's on my to-do list It's to have a crate that makes it easier to create enums that are interchangeable with Booleans To make their nicer to work with And then just deny Booleans throughout your codebase Yeah, I mean these are more projects than tasks And I think the answer here is that, or the observation is I don't really have that many tasks, but I have a lot of projects Or projects that I would like to do Yeah, designing a d&d tech campaign takes forever It's really fun, like I have a lot of thoughts for what I would want to put into this campaign But I don't have the time Or rather, I haven't made the time And it's because I make time for other things instead It is true that long-term to-dos should really be split completely And I think I don't really have that many short-term to-dos Or maybe I should get better at keeping two lists and moving things between the lists as appropriate I don't know if there's a tool that lets you do that That lets you keep basically a sort of two-tier list But, I don't know, unclear Directors commentary for the book would be pretty fun I think that might be something that I would do as a, maybe as a paid thing Like this might be a good candidate for Patreon, for example Right, of saying, you know, if you donate more than X amount Then I'm gonna do, you know, live streams where I read through the chapters or something I don't know yet, but I think it could be really fun I have considered actually opening a bug tracker for myself And basically use, like, GitHub issues or something And use that as the way to keep track of my to-dos But that feels too heavy-duty Like, many of these project things are just one-line things that I think ultimately what I need to do is I need to take a sabbatical for a year And just do these things Alternatively, instead of taking a sabbatical, what I would do is Just do open source and teaching for a year And then maybe I'll actually have time to get to all of these things And, like, many of these, I could just stream, right? Like, strict provenance checking, for example I think it would be a great stream, like a useful stream To show how you add that kind of checking to, you know, highly concurrent libraries So there's a lot of meat here for potential teaching opportunities It's just that I don't, at the moment I don't have the time And this is one of those places where, you know, I really think that if I Didn't have a full-time job, I would be able to do way more of these things And turn them into teaching And the question is just, is that something I could live off of? How would you interview instead of data structures and algorithms? I think testing problem solving ability is way more important Than asking knowledge and memorization based questions I agree, I think data structures and algorithms are knowledge and memorization based questions Problem solving has nothing to do with data structures and algorithms That's sort of where the core of my disagreement with data structures and algorithms comes from You know, I think when you want to get to actually asking questions that are problem solving I think you want to ask questions where there aren't right answers Where they actually, you have ambiguous problems And data structures and algorithms very often do not For example, you know, one interview questions I like a decent amount is something like Write to the scheduler for the elevator system in a building That's the entirety of the prompt And then part of the interview process is Which questions does the candidate ask? And then we explore the problem space together So you might ask, well, how many elevators are there? How many people are there? How many floors are there? You know, what is the general pattern of when people come in and when people leave? You know, are there restrictions on what kind of controls we can have for these elevators? You know, what's the size of the elevators? What countries this in because that might change how people want to have the elevator experience be And then you might also like ideally you also get to write in code, right? So you you actually write an elevator schedule and you try to come up Well, what is it good if you were to write a crate that implements the elevator schedule What should the API look like? Why do you make the decisions that you do? And maybe part of that is, you know, you have to choose to use the data structures and part of it But it's much more of an organic choice than it is, you know, how do you rotate a red-black tree? Let's see, let's see I'm just scanning through the chat here to see if there are more follow-up questions to this Trello, Kanban, yeah, I mean there are a bunch of mechanisms for this But part of the part of the challenge I have, right, is that all of these projects are I think of them as a bucket where sometimes I have the spare capacity to reach into the bucket and grab a thing As opposed to I'm working on all of these things in parallel So I don't really need planning for them as much as I just want to make sure that I don't lose track of them And then sometimes I'm working on some of them But that means that really it is just a sort of flat list, sort of a set bucket Get Morgan Freeman to read through the rest of the first station chapters, that's pretty funny Okay, yeah, so someone pointed out in the chat that Clippy does have a link for excessive bulls That's not what I want, it's close, but I think I actually want deny bulls And I think I want it to go as far as denying bulls in tuple structs as well Tuples, tuple structs, function arguments, return values Maybe not return values, unclear But I want it to be even more pedantic than just you have many bulls as arguments to this function Full-time job gets in the way of doing really interesting things Yeah, I mean, I would love to just full-time do these projects I think it would be an immense privilege if I could, but maybe one day For the Boolean thing, I think one thing that might be needed is actually language improvements to Rust To make it possible to have a Boolean-like enum that actually you can use as a Boolean That would be really cool Not just intube-bool, but actually have currently the Rust conditionals All only take expressions that evaluate to a bool type I wonder if there's a way to have them take expressions that evaluate to an enum type That has a particular attribute that makes them act like bulls That could be really cool Okay, I think it's time to move to the next question How's piano going? Okay, not as well as I would have hoped I haven't abandoned it, like the piano is still in my living room Every now and again, I'll go play on it And every time that I do, I'm very happy that I do But I'm not doing it regularly enough to remember the progress So I feel like every time I regress a little bit And then I make up for the regression But don't do it again until I've regressed sufficiently to be where I was Which is really unfortunate I think this is another one of those make time problems Where really I should just say every Thursday afternoon I play the piano And that would be an immense leap from where I am right now I think ideally if you actually want to get, let's say capable at doing this I would have to do it more often than that And I think that might be worthwhile Oh, the camera's shaky This question makes me realize that I really need to just set a day a week Where I play the piano Because I really do want to learn it I enjoy it a lot when I play I'm not, so I am roughly able to play it with both hands And I'm using this, it's a piece of software called Flowkey Where you hook up the, so I have like an electric keyboard You hook it up to like an iPad You run the app on there And then you connect your headphones And it can tell whether you're pressing the right keys You do it without the cable I think too And it just uses like audio recognition And so it's pretty cool that it can tell whether you're playing the right things The problem is I don't have the beat well enough in my finger Or rather I take too long to find the key I have to press So I can't play it to rhythm or to beat And so I just play the same song over and over and over again On the sort of move when I've pressed the right keys mode Until I know the song, I know the moves well enough That I can play it in real time mode But trying to get to the point where I can get a song And I can just play it by watching in real time Or even in slowed down real time at beat As I can't currently do Like trying to, for example, one thing that I think would be great Is the ability to play, if I had the ability to Get a sheet music and let's say simple sheet music And play it at half speed but at the correct half beat And I'm nowhere near there I set an alarm to play piano, you're not wrong I have a piano for baking bread, I have a piano I have an alarm set for baking bread I end up baking bread now almost like every week and a half maybe Week and a half to two weeks And that's also really fun, I'm very happy I started doing that Very hard to find good bread in the US And it's a very peaceful way to play Oh, that's funny, when I retired I was going to do all the side projects I didn't have time for Yeah, my concern is that I'm going to end up with a similar kind of thing of Oh, I'll do them all when I retire But first of all, that's a very long time for now And second of all, I think by the time I get there I'll have accumulated so many things that there's no way I get to even a small fraction of them In whatever time I have left So I really think I just need to find a way to start doing them And I think the way to do that is not work full-time Which is easier said than done At the moment I'm playing all sorts of things I'm basically just, you know, Flokey has a list of songs that you can attempt to play And the latest one I practiced on was Happy Birthday Because it's actually, you can play it at various difficulties So you can play it in a very simple mode And you can play it in a very complicated mode where there's all sorts of flourishes And so it's an interesting one to build up your expertise on It's immediately useful And it's a song that I know the beat of so well I know how it's supposed to sound So when I play, I can more easily recognize whether I'm doing the right thing or the wrong thing It's not a very interesting song So, you know, I'm gonna graduate from that one at some point But that's where I started Can you play and sing at the same time? That's a good question I probably could if I've gotten to the point where I've practiced the song long enough That my fingers sort of move on their own But I don't think I'm at the point where I can do a performance for a stream yet I used to have a guitar many years ago And my dating profile used to say that my guitar skills were at like 2.71% or something I used E to like 6 significant digits as the percentage that I knew how to play the guitar And that was a great way to signal how much of a nerd I am I don't know that it was true, I think I knew less than E% But even so, it was a fun little tidbit And yeah, the bread I bake is sourdough I have a yeast that I made from nothing From air, thin air Let's see Alright, let's move to the next one What is your advice for an undergrad student of computer science? Like working on resume and stuff to get admission from institutes like MIT What do universities focus on in the application process? Okay, so given that you are currently an undergrad This suggests that you're applying for grad school And I think I have, let's go with three pieces of advice My partner recently noticed that I do this a lot Where I explain how many enumerations there are Or facets there are to my answer and then I enumerate them And I have started noticing that I do this way more Like there are three things, first And I'm going to do the same thing here So the first thing I would say is Think really hard about whether you want to get into grad school I don't think it's a bad choice But I do think it's a... Grad school is a big commitment It's a big opportunity cost And it has the potential to be miserable It also has the potential to be great But it really depends on whether you find Or whether you have an area that you truly care about enough That you can dedicate x years of your life to And do very little else You're going to be burned out at the end About the thing that you ended up working on And there are many alternate avenues To going into grad school And the opportunity cost is not just the cost Of university at least in the US It's also that you're not working in industry So you're not making the salary of working in industry But you're also not building up industry experience Which means that when you start work x years down the line You'll be at a relative disadvantage Because academic experience doesn't really count as much an industry So first bit here is Do you actually want to go to grad school? Second one is The more prestige universities At least my impression is Care a lot about recommendation letters And in particular they care about What the recommendation says about you And I don't mean that in the sense of what words are on the page But what information about you Can they extract from that recommendation And a big part of that is who wrote the recommendation Is this a person that they know? Is it a person they know of? Is it a person that if they look them up They understand that this person has Let's say some amount of integrity or understanding Or knowledge that's relevant to what they're writing And the reason I say this is because It's partially from conversations with professors over the years But it's also my own experience Because I applied to MIT several times Both for undergrad and grad school And the time I got in was when my recommendation letters Were from professors that were relatively well known And I don't mean that in the sense of famous But just in the sense of like You know they were professors at an established university In the UK You know they had published papers in Conferences that are well known within the systems field And so in general when they give a recommendation It carries some amount of weight and trustworthiness So I think even if someone else Someone entirely unknown wrote the exact same words It wouldn't have the same impact I think having solid recommendations Reliable recommendations is very valuable It's more valuable than your sort of grades Your extracurriculars Like ultimately that's a big part of it And then the third thing is This depends a lot from university to university And it is a little different depending on The country you study in as well But at least in the US Very often you're working with the professor Or in some cases with multiple professors Although that is a little bit of a luxury But you know you should make sure That you can find a professor that you align with So if you can find a professor or a research lab Where you think what they're working on Is really interesting You think it is Like you have a passion for it You have a drive for it You have an interest in it Then try to reach out to them Try to see if they can recommend Ways to get more familiar with their work And I say that because It means that you can write a more Compelling personal statement For why you want to get into this university While you want to get into that lab If you can point to this professor These papers, this lab I want to do what they are doing I have followed their work This is the kind of stuff that I'm interested in These are the kind of ideas I have For graduate projects That makes for a much more compelling Story in your personal statement In your application letter Then if you just write I really like computers Or I want to work in distributed systems If you have more concrete stuff You can talk about that Matters It's not so much Develop a relationship with a professor That might help But it's also much harder to do It is unlikely to yield Any particularly meaningful results Because very often You're applying to the university first And then to the lab But getting in touch with them Or at least looking up the kind of work That they do And familiarizing yourself with that Is going to help you In writing a better application Are there follow-up questions on this one? Otherwise I'll move on Next question Is Rust language adoption pace slowing Staying the same or accelerating In the enterprise currently Do you foresee any changes in this pace Given the current Rustlang roadmap I think Rust adoption is accelerating And I do note the difference here between Accelerating and momentum That it's not just that Rust is Rust has a certain amount of momentum And therefore it's growing But I think the rate of adoption Is also going up And the reason I say that is because I think a lot of companies Have been hesitant to pick up Rust Because it doesn't have a Track record of successes And I think what we've seen Is that that track record Is starting to become more established More companies are announcing That they're using Rust More companies are announcing gains From using Rust or switching to Rust More companies are investing in Rust And doing so publicly That in turn builds confidence That Rust is around to stay Which reduces the perceived risk Of the language Which means more companies are willing To step up and try it for themselves I don't know how long we're going to see That rate increase go But that's certainly the impression That I have from the industry as a whole That I think The rate of adoption is going up And to be clear I don't actually think that the goal here Should be Rust adoption at 100% I don't think Rust should be used for everything Or everywhere I don't think everything should be rewritten in Rust So the goal isn't to get to 100% saturation And I don't think we would ever get there either But I do think what we're seeing Is also a recognition that There are a lot of domains Where Rust can do really well And is actually a good long-term choice And so we're seeing it being Branched out into several industries So in the early days It was more, you know It came into high-performance settings Low-level system stuff Embedded devices But we're seeing much more now development into Cryptocurrencies, of course That's been happening for a while Game development We're seeing it being used more for It's cross-platform capabilities Like Rust is a pretty solid story For developing for macOS and Windows as well And so you see it being used for Building less so GUIs Although that is changing But even command-line applications You want to run on multiple platforms Rust is a pretty good candidate language for now I think we're seeing this with Adoption into Android I think is also a Something that might see a decent amount of growth I think adoption into the Linux kernel Ends up being another one of those Stamps of approval that makes More companies willing to consider doing it themselves I think it's a I think this acceleration Is probably going to slow So I think it's accelerating right now But I think we're going to end up Slowing that acceleration But keeping the velocity Probably not too long I think the rate increase Is probably going to stop in Let's say a year from now or something I think it's a result of the times A result of all of the public endorsement Of Rust the language over the past 12 months Can you talk about Rust adoption at AWS This gets into I don't want to say murky waters But it gets into like Me having to make a judgment call About what things I am And I'm not allowed to say That Amazon is doing So I'm not going to go too deep into that What I will say is like My job at Amazon is Encouraging Rust adoption Not at all cost But just advocating for where appropriate And also making the Rust experience The best that it can be internally And that's going very well In general I think the Rust experience At Amazon is a very good one And the fact that there's been this Investment in making the experience Of using Rust a good one Is indicative that the company Certainly believes in the language That's what I take from that Decision to invest in the developer experience Alright Would you rather fly in a plane Written with Rust software in it Versus let's say ADA software Or Lisp like language like closure What I'll say here is Rust is still a young language So I don't think it has quite the Safety posture Of a language like ADA which has been Dedicated to this from arguably the start And for a very long time I think Rust could get there But I do think there's some things That we still want to see there Things like Long term stability of Rust Of supporting older versions Where things are known to be stable Whereas if you're building airplane Software using Rust nightly That seems unfortunate But the likelihood of you having to do so Is also higher than it is with ADA Where you're not going to be using Something that's equivalent to nightly Same applies to the ecosystem around it The testing I know that Rust has gone through a lot of testing But I don't know that it's gone through The same kind of formal testing And formal testing over time like ADA has So I think my vote here would be I would go with ADA for now But I think Rust has the potential To be a good candidate here Would you deliver packages with drones Running firmware written in Rust I mean I think it's the same kind of argument I would rather it be written in Rust Than in C I would If it was already written in ADA I would continue to use the ones written in ADA But I think for a green field project You're relatively unlikely to use ADA You might choose between Rust and C And there I think the choice is pretty obvious What are your favorite podcasts? Oh let's see Let me open my podcast app here Let's see Let's see I'm current Oh I recently listened to a podcast Called Hot Money From the Financial Times Which I thought was really interesting It's a documentary podcast about The finance Behind the porn industry I thought it was a really Interesting thing to listen to There was a lot of stuff I Didn't know and thought it was fascinating Freakonomics radio is fantastic I think I've listened to every episode It's great if you haven't listened to it There's a podcast called You Are Not So Smart To explain what Freakonomics is Before I move on Freakonomics is a book called Freakonomics Which was about I don't know how best to describe it The implications and nuances of The economic system in a way That's understandable to people who aren't Economists And there's a podcast now That I think their tagline is Explores the hidden side of everything And it's essentially They go into Really interesting questions How do we measure whether working From home works well or not Or whether Let's see what some of their Most recent episodes are Has globalization Failed? Nuclear power isn't perfect, is it good enough? Should public transit be free? And they explored from the side of Economics And I think it's a really interesting Lens through which to analyze these Questions through You Are Not So Smart is a podcast about Social psychology And it's sort of taking I really like the format where The Person who runs the podcast basically Interviews experts in different fields Of social psychology And tries to get at not just What are these phenomena That we have observed in humans And human behaviors and human thinking But also how do they What implications do they have for how you Live your life and for How we interact with People in our lives Stuff you should know is a very Widely known, so I'm going to skip over Talking about that too much Let's see what else do I have There was a Podcast called Constitutional Which I thought was really interesting It was a sort of single season Podcast on The First Amendment in the U.S. And related topics That I thought was It's great, it's from the Washington Post I think Oh no sorry, that one is about The Constitution There's one called Make No Law Which is about the First Amendment And some of the implications and Non-implications of the First Amendment Which is from the legal talk network So podcasts that sadly stopped Now at least they haven't published episodes In a long time called Playing for Fun Which was Two people talking about Like they're not really Video game reviews as much as they are Let's talk about all the things That we're excited about in video games Let's not talk about all the things That they do poorly but things that make us Happy, make us feel engaged By video games and I really hope They come back and make more I think those are some of the Top contenders Not another D&D podcast Those are great, I particularly like The First Campaign, I think they're on Campaign 3 now and For me nothing beats The First Campaign But it's a really fun podcast To listen to, it's similar To other narrative D&D podcasts Where they sort of play live Critical role and such But I like this one a lot I've also found Intelligent Squared Pretty interesting, they do a lot of Debates on all sorts of Political Social, economic Questions and it's fascinating To hear, you know Actual debate, like debate format Debates as well on these topics I'll stop there And I'll also of course Shout out Rustation Station Which is also fun Let's see What is your podcast app? Oh, I use one called Pocket Casts Which I've been super happy with I've used it for years Let's see Okay I think that's a good place To move on to the next Let me also put the Q&A link in chat again In case you want to put more I see there's more questions in chat Anything that's a different topic I'll put in there so that I try to Give everyone a fair chance To get their question answered You mentioned you don't enjoy LA and that you'd like to Move in a couple of years What stops you from moving now? Nothing really stops me from moving now anymore In fact My plan is to probably Move next year I don't know exactly when I think it's relatively likely That I'll end up moving to Norway with my partner Probably towards the summer of next year It's not set in stone yet But that's sort of what we're currently thinking I think for me the Big question is going to be Whether I find Oslo in particular An interesting place to live One of the reasons why I left Norway in the first place was because It felt a little too Small Maybe Maybe uninteresting Maybe A lack of Not necessarily diversity But diversification And Over the past 10 years Oslo has changed A lot There's been a lot more influx of People from all over Doing many interesting things A lot more businesses that have popped up The city has grown a fair amount I'm excited to see How it is a place Where I will find that I have an Interesting life I'm curious to see whether my partner Is from the US Whether she will Enjoy living in Norway It's not for everyone It is colder during the winter There's less light during the winter But it's also a country that Is a very pleasant place to live Summers are very nice there And then you have Daylight throughout part of the night Winters are cold Yes, but they're also very cozy And so I'm hoping that we both end up enjoying it If we don't If we stay there for A year and then decide That this is not for us We want to try somewhere else We would probably go to London And try that for a year And see whether that's a better candidate We've both lived in London A little bit before And enjoyed it immensely But since Brexit It's become a much less Attractive place To move So the list Of good options is Not as long as I would like it to be There are other places in Europe Too that I've considered It's a little It depends on our tolerance For moving somewhere where English Is not the primary language Or Norwegian because I know Norwegian But like the Netherlands Is a place that I've looked at a bunch before Germany, Spain I think there are other Candidates, but certainly I think for us Norway and the UK are pretty high On that list And there's a question here Are you going to continue working From AWS from Norway I think so I have been thinking about whether When I move is that a good time To Let's say re-evaluate my options Because when I was initially Looking for work after I graduated First of all I was in a different place in life But also There were a lot of companies that I couldn't Work for because They were based in Europe and couldn't Sponsor a visa in the US So now if I move to Europe Again suddenly there are a lot more Candidates for companies that I could Work for At the same time It's not ideal to do Such a long move And also be switching your job at the same time So I'll see what I do But I think there's a decent chance That I'll continue working for AWS As I move and then you know I'll see down the line whether there's Then a better chance to make a change Or even to try Full time for teaching an open source We'll see If you really have an answer there Yeah I've had People recommend that I move To Madrid, to Barcelona That would be pretty fun too What are your problems with LA I despise LA Let's see If I can summarize the top three First of all it's a desert It's dry It's always sunny and it's always warm And I'm used to Cold I like seasons I want there to be snow and rain That makes me happy I like darkness Sometimes Like I want clouds Like I miss I miss not being In this climate You know everything here is dry There aren't really forests There's not water There's not really mountains There's not really a place where you can Drive to those things But that's different Second part is related to that Which is Nothing is made for walking It's a place where You have to have a car more or less And everywhere is a drive Which also means everywhere is traffic Because everyone has to drive everywhere It's not really a place where You know you can just Go walk to A friend's house or to an event And this ties into the fact that public Transport is not very good here As opposed to you know in Europe It's actually really good Certainly in Oslo And that makes me sad And the third part is LA is in the US And there are a lot of things That I don't like about the US And I don't necessarily want to Enumerate all of them I don't like how How Americans see their government And I don't look like how the government Sees the people And I don't love how Companies see people And it just means that it's not A pleasant place Like it's not a good place to be A human You know and this ties into The way the healthcare system works It ties into How lobbying works It ties into You know immigration It ties into employment rights It ties into Unionization It ties into I just It's not What's the right word here I don't know I just I want to be in a place where people have Where people have more rights The best way I can summarize it And you know There are upsides to the US too But there are upsides that I think I'm willing to compromise on So the upsides are things like Wages are Certainly in my sector Wages are much higher here I think the pay cut to move into Europe Would probably be Closer to 50% Like it's pretty bizarre What it would be It varies by level varies by industry But like it's a pretty significant cut You There's a lot of tech companies here Like if you know Given that that's the sector I'm in Working here means that you get a lot Of the big opportunities Like this is where they happen And if you're not here You're going to be more distance from them You're going to have less of an opportunity Because In those Opportunities But I don't think those are Worth it for me Come back to Australia I really like Australia actually And I think I would really like New Zealand too The big problem for me is they're too far away I don't think it's I think it's too costly To live that far away Not economically See okay so someone put in chat Sadly government suck And I don't agree with that Some government suck And I think you know in the US There's a lot of Evidence that the government sucks At many things But that doesn't have to be the case But the US has gotten itself into this Unfortunate spiral Of Trust the government When I say that I mean trust in multiple ways They don't trust them to make the right choices They don't trust them to execute On things well They don't trust them to be responsible But as a result The government ends up Having both a low bar And low investment and few resources Which in turn means they can't do those things well And so people lose further trust And that's the case in the US But that's not the case everywhere else So I think it's unfortunate That That the US has gotten into that situation I think it's hard to get out of What's your opinion On the visa restrictions on non-immigrant workers It's awful Living on a visa is abysmal Okay abysmal is maybe Extreme but like It means that there's so many things That I cannot do right Whether that is you know have a Patreon or sponsorships inside of my Work it means that If I were to try to write a second Book for example It's unclear that I'm allowed to do that here Because it would count as work for the publisher I'm not allowed to do any work That's not tied to my primary employer You know your healthcare Is tied to employment It's not really visa related But it means that You have such a strong dependence On your employer that You have to be Filling to compromise with them Because you can't Like first of all they can fire you on the day In which case you also lose your health insurance On the day but because they are your visa Sponsor it also means that You need to get a job very quickly After or you have to leave the country And like picking up and leaving Is not trivial So it's not a good situation to be in And you know This is going to be the case other places In the world too Has somewhat similar limitations Although I think there are some exceptions That maybe I could make use of But in general Working on a visa is not nice One thing I do want to point out Some people in chat are like yeah There are things that aren't nice about the US To be clear I'm very happy I came to the US It's not as though I think it's not worth Being here It's more that this is not where I want to live long term I think having the experience of having been here And going to the university I went to There aren't good How to phrase this The US has some really good universities Some of the best in the world And getting to go to them is worth it So I wouldn't take that back Same as I'm very glad I got the opportunity to Work for Amazon for example In a really interesting Unique position That I've gotten to be and work within And I don't know that that would have happened If I hadn't been here But And same with the ability to have The kind of salary That I've had Has also been very Liberating It's not that I necessarily have Lots of expenses So that when I move I have more of a buffer, more of a runway To try other things myself I think that's An immense upside to coming here It's more that it's just not For me A long term place to Make your life be Rooted I have heard good things about Canada too I'm not opposed to Canada At the same time I really like Europe Like being able to So easily travel to many Very different countries Has a lot of appeal to me And you don't really get the same with Canada Won't your partner face the same challenges In Europe if she's from the US So she would be On a visa although Europe In general this is not true for all Countries in Europe but Countries in Europe have It's called like the love Clause or something Where She can actually be on a Like basically a partner visa Because we've lived together For at least two years And She's not married to someone else And I'm not married to someone else But basically if you can prove that you are Essentially life partners Then that is sufficient for her to be That's similar to as if We were married And that makes it much much easier Because then I mean it is true That she would then be on a visa that's dependent on me But that's a better position Than being in one that's tied to an employer And it has much fewer restrictions As well as far as I'm aware Precisely because it's not tied to Employer sponsorship So that would be easier Whereas in the US there's no such clause So It would be better if If we got married Then The visa situation would be different But I don't really want to marry For a visa either I want to marry for the right reasons Alright Let's see The question The question has gone so far down the list I can't mark it as answered I can't even go If you voted on all these other questions Alright fine I'll just ignore it Do you read non-tech related books as well? Any recommendations? I do so I recently re-read The Wheel of Time series And I just love those books You know I think the The series that's come out now Is fine But the books just I love them I read them once When I was much younger and recently Re-read the whole series I listened to much of it on audiobook And read some of it on paper and it's just I love it I've also been reading Harry Potter And the methods of rationality Which is a fantastic read It's both Very funny I actually laugh out loud while reading But it's also just a really good I don't know how to describe it Like exploration Of rationality That actually I think teaches you Some good ways to think It's really good It's really good What else have I been Reading recently You know Wheel of Time has taken up so much Of my time That it's been a while since I read anything else That was non-fiction I did read Shortly before I started Wheel of Time again I read The Stormlight Archives I read Mistborn I read What's it called The King Killa Chronicles So there's been a lot in that And I would recommend all of them They're all really fun reads What else have I read that's non-fiction Recently Let's see if I have anything here Oh yeah The What If books are also great I'm unclear whether they're non-fiction Wait Non-fiction I've inverted the question in my head No Non-tech Non-tech The What If books are also non-tech The What If books, if you're not aware of them They're written by the author of XKCD And they're basically like Explorations of The realities of theoretical Questions Like If you managed to hit a baseball At the speed of light what would happen And it's really cool I Think that's I think those are the Recommendations I have Can you talk about different Allocator options and choices In Rust I don't have A lot to say here So the Allocators are generally available to you Are the System Allocator Gem Alloc And Mim Alloc And there's also stuff like Bumpalow Allocators Or more like Arena Allocators I remember when I worked on Noria The I actually found a decent amount of speed up From using the System Allocator Instead of JMalloc And I'm trying to remember why I think Mim Alloc struggled a lot more With Many small allocations It's intended to be better for Concurrent allocations But I think my experience was that it actually Worked less well When you had many many small allocations Which Noria ended up doing a lot of But That's ages ago and I haven't really Experimented much with it afterwards I think it's one of those things where Like Use benchmarks to convince me Why you want to switch away from the default The System Allocator is generally what You should use unless you have Solid benchmarks with real World Workloads that demonstrate A measurable, reliable, Stable, significant Impact on your benchmark Benchmark outputs And If you can't then don't do it It's just not worth The additional complexity, the annoyances And debugging, like just use the standard Arena allocators I think are A more Clear win choice For the use cases where they're convenient For things like game programming For example where You would do A lot of allocations for One frame and then you're going to Deallocate all of them at once Then having the ability to just do A huge set of allocations Deallocate them all at once is pretty valuable It does assume a little bit That you don't have to run Destructors and stuff There is some complexity there But it's not something I know I can speak to in a lot Of Significant detail Let's see Soon starting my first Software engineering job And feeling kind of anxious nervous about it For the first weeks or months This is Hard to say without knowing the company Because different companies Have very different Shall we say Expectations for people who start My First bit of advice would be Don't be nervous And it sounds silly right But at least At least at Amazon my experience has been That you're not really expected to be productive For a while in the beginning Because There is so much To Get to grips with that's internal Stuff like not stuff you could have already known But just you have to understand How the internal infrastructure works How the internal code works To even write code internally And get everything set up You have a fair amount of time For that soft onboarding ramp Where You get to get used to what it's like internally And so I wouldn't be too worried if your concern Is You know How How will I perform as well as they expect When I first join I think there's a separate nervousness around This is my first job This is my first engineering job I have no idea whether I can Program to the standards That people expect And That one's harder to address I still think the answer is Don't be nervous But I think The imposter syndrome is a very real thing And I think if you're a new engineer It's even more likely to Feel it Because you don't have the Experience that tells you That you're doing well at your job What I would say though Don't focus too much On whether Other people Think you're doing a good job That does matter to some extent Your performance valuations and such Are going to depend on what other people Think of your work But It's a terrible benchmark to use for yourself Because you won't know what Other people think Instead focus on Making sure you think That you do a good job And also Focus on What You think is the right thing For you to work on If you get into a job and you feel yourself Procrastinating all the time That's an indicator that you're not working On the right thing And that might be you're in the wrong job But it doesn't mean that you're a bad engineer It doesn't mean that you're bad At writing software That this isn't the right position for you And There's a real Concern when you're first starting out And I think this applies Equally well later on in your career That You end up Under counting Your own contributions Or setting too high of a bar For yourself Overwork Because you feel like you have to compensate Even though no one actually told you That you had to compensate But you feel that way Maybe because you aren't that interested in the works You feel like you're slacking off But then you feel like you have to catch up Because you feel like you were slacking off And it's this vicious cycle Where you burn out You feel unproductive You feel like you're not doing well Even though there isn't actually any evidence You're very mindful of the fact that You Your job is a job It is not you It's not your personality It's not your value as a human It is a job But also Try to find a job that you enjoy Because then much of that nervousness Is going to go away Because as you start working on it You feel that you're working on things that you enjoy doing And if that's the case It's less about Whether I'm engineering good It's a little bit of a rambling answer But the I think overall In general Most of the pressure you feel Is probably going to come from yourself If it's coming a lot from other people That indicates a different problem That might indicate that there's a Sort of management problem Essentially A A mismatch between How you want to work And what the How the company wants you to work Which might indicate that this is not the right position for you But it should be a pretty It should take a lot of evidence For you to actually Be like Concluding that you're not doing A good job as an engineer Like focus on what measurable evidence You have for that being the case And in general that won't be the situation There'll be something else that the problem is Oh funny Bots Block Nice Block I love blocking bots Bye bye Okay Let's see I hope that answered the question I know it's really terrifying to start your first Secondary job It was similar when I started Amazon Because all my background Or very much of my background was in In academia So it's suddenly being like I'm going to be at a company now As weird But It wasn't a problem I think partially for me I I sort of went into it With the You know what I'm doing And that helped a lot And Maybe I was Sort of self delusion But I think it does help To go into the mindset of No one else Is nervous about you joining the company You got hired So no one else is nervous So why are you nervous Okay let's see I'm going to keep going I'm just Okay so slight to side I was You know the setup for the stream Was that I wanted to That I got a new camera setup And one of the things I wanted to do Was compare the two cameras side by side But I realized I'm missing a cable So the camera needs a micro HDMI cable And I only had one which is the one I used for the other camera So I ordered one It's arriving today instead of yesterday I tried to get one before I started streaming today And the place I went to was closed And all the other ones opened After the stream was supposed to start But I think the cable is about to be delivered So if it is delivered during the stream I'll hook up the second camera And we can do a comparison So I'm just keeping an eye For if it gets delivered What would you want to be If you weren't a software engineer I think it's a Close race between A teacher And A Like working in Working with kids Whether it be at a Sort of Like a kindergarten Or at like an activity center Or something you know I've worked at an activity camp for kids For many many years And I love doing that And it's totally something I could do full time It's I don't know that there are Ways in which you could do it full time But I love working with kids It's a lot of fun But I also really love teaching And you know there's an argument of Well maybe you should just be a teacher Because you get to work with kids And that's true but it's different If you're a teacher in Middle school or high school You get to know the kids because they have to be there And Your job is to teach them And it's true that you can develop A good social connection With the people you teach But At least I've My I don't know Expectation is that If you are Like a camp counselor for example It's a very different experience Where you are You're not really you know trying to lead them To water But instead You're there to Enable them to have fun And I love being in that setting too Maybe I would do both Maybe I would sort of time switch between them I don't know But I think realistically that's the The best alternative I see for myself Someone in chat That's great it's been so much fun I think I would work there for the rest of my life If the kids wouldn't find it super weird For like a you know if I'm 60 years old and still you know working At an activity camp for 8 to 15 year olds Alright Let's see What do you think about ensemble Mob pair programming Versus alone programming with code reviews I think they both Have a really good Place I wouldn't want to do just one or the other I don't really do You know More than one programming very much At work it happens every now and again Where You know especially if I Or a colleague have run into Just Some hairy bug or Something where we're just like burnt out To figure out why something isn't working And we're just like okay let's just Tag team this together We're gonna go on a video call share screen And just work this out And sometimes that ends up being like a two hour session Where we're really just Heads down in the problem together That can be really really useful Um But that's the extent to which I do it at work I don't have you know Regularly set up sessions where I do that Um A lot of experience that actually with the streams that I do Which are a little different right Because I'm not on a video call with anyone But it feels like Ensemble programming kind of Or mob programming when I'm working with chat Right because For the implementation not so much for crust of rust Because that's more teaching but for the implementation streams Like We're really building and designing an Implementation together and I found that So much fun But also really useful To have that ongoing interaction With other people Who are looking at reading Thinking about the same problem The same code as me Um That said it is Um Slower Uh Maybe I don't know if slow is the right word But I can get a lot more work done if I work alone Because I don't have To Voice my thoughts And I think that the tradeoff here is that Sometimes voicing your thoughts is necessary To get to the best solution Or even to a solution But often times it's not Often times I can solve the problem of my own And then it's more efficient for me to do so And so then I would rather work alone And then submit a code review for The things I might have missed So I think they both have a place I think my Can do things on my own And then to engage In programming in pairs In ensembles When there's a compelling reason to do so Like when me working on my own Either gets me stuck Or where I'm actively trying To convey something to other people Like if I had a colleague, for example Who's trying to understand the code base 8 Because they're a new engineer I'd be happy to do a sort of pair programming session With them in order for them to learn If I told them we'll just submit a CR And submit a PR and I'll Give you code reviews on it They wouldn't learn as well from that So I think for teaching purposes Pair programming works really well For getting unstuck It works really well But for everyday programming I like working alone Which debugger do you use for Rust And does it have a working break On panning functionality I very rarely use a debugger For my Rust code And I don't know why this is It's fascinating to me and I don't have a great answer But it seems like A lot of developers really want A debugger And I just very rarely reach For one It happens I'll basically use GDB To set breakpoints And work through some code But it's pretty rare Usually I just print debugging Works really well I set up decently good Trace logging And I just enable the verbose logging And run the thing And it becomes somewhat clear What's going on fairly quickly And I can iterate on that pretty quickly It could be that I just Haven't had I haven't experienced the Just how good it can be Like you can get the cycle With breakpoint debugging But it's just not really been An area where I've felt a lot of need And I think Chat observed the same thing Where I think it heavily depends On the context Of what you're doing programming Where maybe it's the problem areas That I work in where Debugging wouldn't really help me Whereas maybe if you're developing I don't know If you're doing algorithmic development Maybe like you're actually implementing an algorithm And you really need to Trace through the individual steps And see how values change over time Or maybe if you have a particularly complex Service stack where It's like there's a bunch of code That you don't control And so you can't really instrument it With print lines and stuff very easily But that's where the bugs are So you need GDB to get into there And in some cases you're more likely To need a real Debugger experience than In the context I work where Very often I control a decent amount Of the stack But even there I will often then just Patch in the dependency and just modify The source of it directly and that Works pretty well as well So I think my answer here Is I don't really use a debugger And therefore I don't have a great answer But at the same time I found The GDB works pretty well When I do have to reach for it But That's not a great answer just because It could be that the times When I have to reach for a debugger Or rather the times when I don't reach For a debugger but other people want to use A debugger the use case is there GDB is worse at And that would be a blind spot for me But It could also be that it's a matter of Like How deep in the stack you work Like if you're Relatively speaking An engineer that works higher up in the stack So that you have a lot of abstractions Under you between you and the actual execution Then GDB Or let's say like a debugger Would actually be more useful to you Than if you're working lower in the stack A decent mental model of the entirety Of execution Then the debugger might actually not help you that much Compared to being able to actually step down through the stack If you're working at a very high level But it's hard for me to say Game engine Programming Makes a lot of sense in another place where You're used for a debugger might be Much higher Because things like print debugging just won't work There'll be too much output It'll be too hard to parse through I do remember that when working on Noria Which was a very high performance Low latency system It was certainly true that there I used a debugger much more than I do now Because it had There were some Execution loops where I just couldn't do print debugging Or where the bug would disappear if I did Print debugging So I needed to do Watchers and breakpoints and whatnot So Um After you finish your undergraduate degree Why did you go for the academic path? What is your thinking behind that? You know, I don't know that it was Quite that intentional I think what happened was I finished my bachelor's and I was like Well I want to study more Like I just wanted to I wanted to learn more things And I think partially my undergrad was Computer science and I felt like there were a lot of Um I felt like there were a lot of technical things That I still wanted to learn That were more technical in nature Than like, you know General purpose programming And so that's why I applied to a master's program Was like Well, I applied partially because I didn't get into MIT And so I wanted to find a master's program to do So I could apply again Um But that desire to ultimately Get into MIT as well was Driven by I think The desire to Really specialize and learn Um I don't know I wanted to Learn Learn everything there was to learn Like I think I have a real Hunger for learning And you know academia sort of designed For that And so it felt like a very natural Going in the track that I was in And I didn't really feel A strong Pole towards working in industry Um That just didn't That didn't seem like a particularly compelling path to me Um I think that changed over the course of the PhD Just because I felt like I really have Learned a lot of specialization now And now I want to see the practical Applications of that work because During your PhD You do end up with A very academic focus and for me At least I was frustrating because I felt like You know there's a lot of cool research here But it doesn't matter If it's not practical And therefore I wanted to I felt more of that need That drive that desire to Um go into industry And work more on the practical Applications of that kind of work Um I think One thing the academic track gave me a lot of Which I think is Which I appreciated a lot was the The freedom to choose what you work on Like in industry You know you're very Constrained Right you need to work on things that Matter to the business Um and you know there can be A decent amount of freedom in that too A lot of things might matter to the business but You know during the PhD program Especially I had so Much freedom to just work on Things I thought were interesting Things I thought had The opportunity to have interesting questions In them I got to do a lot of work in open source That's when I got to start doing streams Um because I had the The time frankly And the lack Of constraints on what I could Spend my Workday on And So I think a lot of my My set of side projects Essentially came from Being in academia and therefore having That leeway, that time That uh Flexibility to To branch out Um Are PhDs funded in the U.S. or do you need to Pay for it? It varies heavily From university to university Um at MIT It was paid for Um so The paid for is With a bunch of asterisks but basically Every semester You can either be a research assistant For a professor or a lab And then they basically pay You a stipend or You can work as a teaching assistant For a class and MIT pays you The same stipend amount Or you can be on like a scholarship From you know one of the One of the science foundations for example In the U.S. For me it worked out pretty Well I was a teaching assistant for many Semesters many more than are required Because I think it's really fun to teach Um but there were also several semesters Where I was just a research Assistant for the professor Who was my advisor and the research I was doing Was my own work so it just Worked out really well Um but that's not the case for Every PhD program in the U.S. or I think Globally where it Can be pretty hard to You know gather The funds to do To get that flexibility in the First place because you're You're basically accumulating debt While working this up It's a little different in your In many European countries for example Where you know that education is free My sense though is that the PhD programs In Europe in particular are A little bit different than the ones in the U.S. Where they're more focused on You know a set Track Whereas the PhD program in the U.S. is very often just You need to turn in a thesis at some point And maybe there's a mandatory classes But there's a lot of Let's say choose your own adventure Like there's a lot of just You figure out What you should work on And how to be Disciplined about your own time Um And And so Even though it is free in Europe Or can be free in Europe It might also be a different experience Than what I had here How do you compare Self-study versus study in an academic setting Um So at least during the MIT PhD You have to do relatively little Studying I think I had I forget what the exact requirements is But I think I took Six classes At MIT I might be off by one or two but There are not a lot of Mandatory units you have to take Over the course of like six years I think I took classes for the first Year and a half Or two years And the rest of it I didn't take classes I was a teaching assistant for many of those semesters But I didn't take any classes because that wasn't required You can, but So there's a really Figuring out what should I be working on What should I be learning And going to learn those things on your own So there's a lot of self-study But that varies from university to university too I think at Berkeley for example You take a lot more classes that are Required as a You need to take them in order to graduate I like the freedom that I got But it also requires a lot more Self-discipline So that you don't end up just Going to work and so it takes forever You graduate You're still working on the topics related To your PhD research? No, I'm not In fact, the work at Amazon That I do is completely unrelated To my PhD work My PhD work was on A fast database and my work now Is on developer experience tooling Very, very different I did co-found a company called ReadySet That is basically building a commercial version Of my PhD thesis work But I'm Only involved in that company In that I was a co-founder of it I don't work for the company Yeah, so the UK I think is quite similar to the US In that you have a decent amount Of flexibility In terms of choosing what you work on It's fairly free form although you do have A decent amount of guidance from an advisor For example, to guide you through that work What are your thoughts on Parasocial relationships? Like if I met you somewhere I would feel like I knew You while you would have no idea who I was It's a great question It's been a very bizarre experience Actually to go to like Rust conferences for example where You know, at this point I'm a decent number of people in the Rust ecosystem Or the Rust community rather Know who I am, either through my streams Or through My Book or through Rust station station And It means that when I go to these conferences Suddenly like people recognize me People Know things about me or what I've done And It's a pretty bizarre experience Because I mean as the question says I have no idea who they are And yet they come up to me as though They know me and in some sense They do and To be clear I think that's great It's a fun experience but it is very Bizarre And I don't always know how to How to react to it That said, you know, I think I've always been a, that's not true I have become A fairly Social person Like I'm pretty good at Just Taking up with someone as if I know them For a long time Probably, you know, almost To the point where it's a little I almost said too much but It depends on the culture You're in but certainly Like I have very few You know barriers Of what I will talk to people about And so if people Like I will just not have filters On what topics are appropriate for conversation Necessarily And in this particular Case that actually ends up being Pretty useful because it means that when people Approach me as though they know me I'll just sort of respond in kind because That is generally how I interact with people But yeah, it has been It has been a very Weird experience Of that kind of Starting from different points in The relationship in the conversation What concepts do you suggest to Learn or understand before someone should Be looking for a Rust job For example, people coming from more high level Languages or even dynamic languages Like Python or JavaScript I think I don't know that there are Specific things necessarily that I would recommend That you need to learn this thing In order to take a Rust job Instead what I would advise Is write something in Rust Like write a semi non-trivial Command line tool For example Like libraries are a little harder But build some kind of tool in Rust That does something that might be useful to you Because It's going to force you to learn a lot of things And once you've learned them You're a significant step up from Having come from another language Like a dynamically program A dynamically interpreted language For example, dynamically typed And while you're building That program in Rust Try to make sure that you understand all the pieces of it It's Very easy to do things like I need to do this thing, I'm going to use a crate I'm going to copy this code From Stack Overflow where someone told me how to do it And then be like, okay, I managed to build a bind read That does the thing that I want It's tempting to do that And it's easy to do that But if you want to become more comfortable with Rust So that you can use it in a professional setting Then you want to dig one level deeper And be like, do I actually understand All of the code that's in this program I just wrote And if you take that extra step And you really dig into learning those pieces I think you're in a pretty good position You're going to be junior level In terms of your Rust knowledge But even so, that's often enough To get started If I had to give one recommendation For a thing you should Invest in understanding In Rust, I think it's trait bounds I think a lot of people who work with Rust Have a sort of Cursory knowledge of trait bounds Like I kind of sort of know what's going on And really digging in and understanding the type system And in particular How trait bounds work out in Rust is It gives some pretty hard To measure rewards But you're going to find That there's a barrier that's suddenly gone In trying to understand What a library does Or a function signature Or why the compiler is yelling at you When certain trait bounds aren't applied I think that's one of the Worth investing time In understanding properly So that maybe would be my recommendation But primary recommendation is Write something real in Rust And understand it What made you choose MIT? This one is Funny because I think I chose MIT when I was like a child I think when I was 13, 14 maybe I decided that I wanted To go to MIT As like a kid In Norway, I had no idea What the implications of such A statement was because I didn't know that that was difficult I didn't know that MIT was Going to be both hard to get into But also demanding To be in I just saw That a lot of the cool Things that I saw and read About and learned came out of MIT And was like I want to be there And so It became my sort of long-term goal Semi-accidentally and without understanding That that was a long road To start down And as I got closer To making that goal a reality Which was really When I ultimately got accepted to MIT It was after finishing my master's degree In the UK And At that point I got into Harvard And University of Washington And At that point the choice Became very real I think maybe almost For the first time where I actually have to choose between These that are all very High quality choices And when the question says What made you choose MIT It's more of a Like it depends where in the process You ask because early on it was MIT does really cool interesting Work I want to be in that environment Later on it was why do I choose MIT Compared to other similar alternatives And there the choice for me Came down to I think ultimately I came down to University of Washington Berkeley or MIT I eliminated University of Washington at the time Because their computer science department Relatively small And I wasn't confident enough In Which topic I cared The most about That I Like I wasn't confident enough That I wouldn't change my mind about Which subfield I wanted to be in And because the UW Computer science department was relatively small They had really good experts in certain Things But I was worried That even though they had experts in the things I was currently super interested in If my interest changed there might not be Experts in the adjacent fields I eliminated And then it came down to Berkeley and MIT And for me that became a choice Apparently or seemingly between Berkeley being more Social perhaps And MIT having Technical ideas that resonated More with me More interesting technical topics For me And between those two I figured I'm going to work on this for Six years It's more important to me that the technical Problems are interesting And then I can always make the social stuff Work out than the other way around And so therefore I went with MIT Let's see What do you think of Elon Musk You plan on quitting Twitter Okay, I think Elon Musk is an Ass I also think he's a smart ass I'm unsure Whether he's smart I think that's My summary assessment Of Elon Musk In terms of planning to quit Twitter That's tougher because I think Twitter does give me a lot of Value Not just in terms of like A lot of people are on there So it's easier to reach many people And it's a format that I like Decently well But also because There are many people there Over the years I've accumulated A pretty good Set of people that I follow So that I get a lot of value out of Reading my Twitter timeline stream And It's hard to replicate that elsewhere But at the same time I don't think it's I don't know how long Twitter's Going to remain a good place to be So one of the things I've thought about Is to make Twitter sort of read only for me So move to another platform in terms of Where I would post Things where I would write And then still consume things from Twitter But that raises other questions like You know It feels unnatural To see a tweet And want to respond to it But respond on a different platform Because then the author of that thing won't see the thing I post I can post a link to it on there But then that gets weird too Because what if they reply to the link Or If I see something interesting on Twitter Do I share the link to it On this other platform And then have people That means that I'm no longer Signal boosting in quite the same way Ideally I want to give attribution to the author And have the author get likes and retweets And follows and what not But if they're on a different platform That gets a little weird Whereas if I retweet it It directly gets the attribution of the author So There are a bunch of open questions there And even things like Which alternative platform I want to switch to I've Been on Mastodon for a while And I keep forgetting That I have one, I keep forgetting to put things there And multi-posting Is really inconvenient And not just I could automate it But it's also just It means that I have to monitor multiple places Where replies come back It means that I have to cater to multiple Different limitations On how long can a tweet be How is it presented It's It's awkward To post to many places And so then the question becomes Should I just pick one and like Whether that be Mastodon or co-host Or something else like If I'm just on one platform That might help With that problem but suddenly that means Anyone who's on the other platforms Is now not connected They would have to move to that platform To get what I write But it would solve the problem of having to split my attention Too many ways I don't have an answer I think Quitting Twitter right now Is not something I'm going to do But I do think that I will Soft move to something And I'd have to figure out What that transition plan looks like There's also the question of Sure that the thing I move to is more sustainable There's an argument to like Patreon could be that thing I could move to a platform that Is also the place where people Where I would post content That is limited to people who pay For example but I don't love that model Either Patreon is also not a great Social platform So I don't know where I would Go instead is sort of part of the Question here right So I don't Know what the alternative is But I am looking at alternatives What was my thing delivered Cable delivered It's outside right now As I might be able to That means I might be able to show the second camera Before I end the stream Because I think we're getting towards the end here What are the biggest challenges in developer Experience and tooling and rusted Amazon And in general or in software in general It's a very broad question I think the challenge Of the developer experience At companies This is not just Amazon I suspect This is the case at other companies as well Is that For internal development You have a bunch of additional Restrictions You have a bunch of additional Rules you have to follow You have a bunch of integration requirements For like internal systems that do You know Providence tracking or reporting Or compliance or what not That your developer tooling needs to integrate with And Trying to bridge that gap between It has to do these things But also people expected To work in this way Bridging that gap is really hard So one of the things that I Try to do in my work is Build Developer tooling Internally That makes it feel as though You're having the same experience as you do externally But it conforms to all the internal stuff And Basically hiding the internal complexity As best as possible And that is very very difficult to do You end up with Sometimes leaky abstractions Sometimes with developer tooling That Mostly feels similar but there are like Sharp edges if you hold it wrong And so you can mostly Like in the Rust case in particular It Mostly feels like you're using cargo But sometimes Things don't work because it's not Normal cargo, it's a weird configuration Of it And so very much of what my work ends up being Is sort of trying To Find the right way To expose the external build system internally And To make the internal experience As idiomatic as possible More broadly I think one challenge with developer experience Is actually around testing And again this is not an Amazon specific problem But like if you're trying to build developer tooling One challenge you're going to have Is that developers have a very Diverse set of Environments in which They use that tooling You don't have a great way of testing Against all those environments Right? Like As a trivial example If You're building tooling that you expect to work on Windows and macOS and linux And whatnot Then you might have CI that can run Your test suite You might have CI that can Check that it compiles on all those platforms But do you have CI that will Or do you have I guess CI is the appropriate term here You have CI that checks that The tool you work You built works Even if executed within an embedded Terminal inside of IntelliJ And Sometimes that won't be the case Or You know do you have Tooling That allows you to test whether This also works when Used in the context of the windows System for linux Those are Testing your tooling In the way that will actually be used by the Developers you're building for In such a way that you ensure that you don't have Regressions for example is really really difficult And You almost need like a CI setup for every Possible developer environment which becomes impossible Like how do you ensure that your tooling Still works if executed in the context of Nix And I don't think we have a good story For testing developer tooling And that's really hard because it means that Is it very easy to Introduce regressions In developer tooling that you develop Because you don't have As constrained of an environment For usage So that's I think the Best answer I can give to that question What are some problems you find interesting In the database community It's been a while now since I worked on databases But One thing that I certainly Spend a lot of time thinking about is Indexing Which is In particular the question of How Do you Why do we require humans To choose what index is That to their database doesn't the database know Better right like it Knows the at least over time It knows the usage patterns Of access to the database And it knows The Distribution of the data In the database and therefore in theory It should be able to deduce what the right Indexes are And I know there's been some research on You know how can we do Automatic index selection and that kind Of stuff but that was the question That fascinated me a lot where I think You could do pretty Significant You know leaps in the experience Using databases and making them Faster and better if you could just Take away the necessity Of defining these indexes because I think a lot of developers get them wrong You know they add indexes that have implications That they didn't expect or that Weren't needed and just add at space And complexity and performance overhead Or they don't realize that they Should be adding indexes and Therefore and that's the reason Why their application is slow or Didn't need indexes but now their database Is grown large enough or their access Frequent enough that now they are needed And you know I think I think there's some really Interesting questions there and not Just how can the database infer These automatically but also How can it surface These Decisions in a way where they don't Surprise developers when like Suddenly your database is slower because An index got automatically added I think there's some developer Experience questions there too That are really interesting Let's see How do you choose between shared memory And the actor pattern for concurrency So one challenge that Actors has is that You need to have Operations That make sense to do in a relatively Single threaded context Often times that's true Often you can say it makes sense to have An actor to represent for example A physical device in a system Or a connection To a particular machine Because it's not clear that you can Have a lot of concurrency within the actor So in an actor system you Often at least end up with Having your concurrency happen because You have many actors and the actors Can act independently And that's where your Visualism comes from Whereas there are some cases Where that doesn't really work so well So for example Let's take merge sort If you're trying to do a multi-threaded Merge sort It's a little weird to have An actor for each Sub bucket that you're sorting It's possible You can structure it that way But it's perhaps more natural To just have threads That operate on shared memory Maybe even like a Worker pool where you grab the next slice That hasn't been sorted yet Rather than you know Spinning up an actor for each Sub-slice that you end up doing sorting on So I usually Think of this in terms of I use an actor I don't choose between Shared memory and actors But rather things that make Sense as a What's the right word for this As a Like Single-threaded owner Of a resource for example I turn into actors And then I use shared memory for things Where they're We're actually doing shared ownership And that's how you get the parallelism If you have many things that want to share ownership of something And it's not It doesn't make sense to have it to be a single-threaded owner Then you would use shared memory Do you think there's Value in doing a PhD for six plus years If your goal is to join industry I see a lot of PhD students drop out with an MS After spending three plus years Hence I was curious to know If your goal is to go into industry you should not do a PhD There are Some sectors in industry Where there are exceptions to this But Broadly speaking I would say no It's not worthwhile To do a PhD To do well in industry And If you are in the exception cases in general You will know this pretty quickly Like you'll look at Basically look at the job postings for jobs that you might be interested in And see whether they require a PhD And it's going to be very rare So The PhD is as I mentioned earlier A pretty big opportunity cost And It's not clear that you recover That cost later on I do think that There's a lot of value in The freedom That you get By By doing a PhD And you get to the branch out Learn more about what things you care about And I might change Which industry you go into in the first place Or what kind of job you look for But if you have a particular goal Of going into this part of industry I don't think is the path to get there And certainly if Industry appeals to you Oh thanks If industry appeals to you Then You might not like The PhD life either You might not like the PhD work It might not be It's just going to be painful to you And I think that's one of the reasons Why people end up leaving early Is exactly because It doesn't match the things that they enjoy doing So general answer No Let me see if I can plug in this camera Have it work I got the cable Hopefully it's the right cable Let's see here The right cable Let's see here So one of the reasons why I switched cameras Was because The old one does not have auto focus And so I need to use a long stick To Sit back And then Point it at the shutter button And hold it down a little so that it will focus It's real stupid Alright let's see here Let's see if this will work So I go over here And then I'm going to do This Oh is one of them flipped But not the other? No I think they're Let's see They're both the same Okay so here's Old and new And I guess they're not Quite aligned I think this needs to go Okay so You can see this that's the old camera That's the new camera And And it's interesting like I'm looking at it Now myself too And So another thing worth pointing out Is they're also using different capture cards So one of them is using like the Elgato Cam Link That's the one used for the old one And the new one is using a PCIe card That's a P-Link 5 Pire Shouldn't make a difference for the actual signal So now the question is Which of these are better? So the Lumix is Grainier, let me see if that's because I've set some weird settings on it Or whether it actually just is Now let me try to make the contrast the same here Ah It froze That's not good This is one of the reasons why I got really frustrated with the The Elgato Because it kept freezing like that Ah Let's see I forget what I do to reset it I think I Do Nope, no it's still unhappy with me Let's see Yeah so the other thing that's Really frustrating about the old one Is it's really hard to get it to reset If it breaks There we go Okay Let's see how much grainier The old one is And also Remember no autofocus Versus this one does I think the old one also The saturation Is too high Let me see if Yeah let me try one OBS really does not like me Changing these settings On the fly Let's see if I can convince it It's a mess What if I do this And then that No Oh I wonder what if I do this It's not easy Come on Come back online So much for that Now it's just me looking Very confused in one of the frames That's right It's actually a 3D stream Let's see There's no light in front of me This is just natural Light from windows Let me try to unplug it See if that does the thing I think that one Is just died now It's very problematic To try to do Anything with these Cameras while OBS is trying to capture From them It might be a Linux thing too In that case I think this is then a good place to stop Because otherwise I'm just not going to have video For the Not have moving video on The main webcam screen Now you'll just see my old one I'll see if I can post a video That just shows the comparison Between these more directly You can see now that I adjusted The saturation as well Now they have the same contrast and saturation set Let's see if I can make this similar They're actually pretty similar In terms of the color definition It's a little more color in the old one But it is also a pheromone grainier It's interesting The new one has a better The depth of field Is a little different too So the new camera Is a prime lens So in particular Is Let's see if I can So the new one is a prime 35mm And this one Is a zoom 18 To 35mm But with a slightly different crop factor So I think they're not too far apart But the lower graininess And more importantly the autofocus Makes a huge difference Alright I think that's where I'm going to stop For today But Looks like there are a bunch more questions So maybe I'll do another Q&A And not too long next But thank you all for coming out I hope that was useful And I will See you next time So long everyone Bye