 Um, I'm trying something kind of different today. Um, I ended up with some, uh, unexpected free time today and, uh, figured, you know, let's not, why not just try to do it, stream and see what happens. Um, and for this dream, I haven't really prepared anything. Um, it's more that I've noticed over the past few streams that they're keeping a bunch of just like questions that come up in chat, um, often not necessarily related to the topic recovering. Um, and I figured, why not just do a Q and a session? And the, I'm aiming for this to be very informal. I don't even know whether the like video recording afterwards is going to be that useful because you can't ask questions, but hopefully me splitting out the questions, um, might make it easier for you to find like in the bottom of the videos somewhere on YouTube. Um, but for chat, like treat this as sort of a informal chat Q and a, um, like an ask me anything, um, it doesn't even have to be about rust. Just like things you're curious about that you think maybe I might know the answer to, or, or have some input on. I'll, I'll try my best to give useful answers. Um, and, uh, yeah, I mean, let's just see where this goes. I have no idea. Um, uh, you can also treat this a little bit like sort of office hours. Like if you have particular oddities in, in, uh, roster and program, and then you would like to meet, just like talk a little bit around, then I'm happy to try to help out with like specific problems or design problems people are having. Um, I'll try to do things that aren't too long-winded. Like if someone goes, can you explain async await, uh, which there's like a, I have like a three or four hour video already on. I'm probably not going to tackle those kinds of things here. Um, unless, unless in like very broad strokes. Um, oh yeah, I should switch to this. So you can see J. There's J. I really want to get, um, like a plushie of J. Uh, and, uh, it's, it's on my list. Um, I don't know that there's much more to present about J. Uh, I, one thing I wanted with J is to make like multiple different intro videos, the feature J. Um, we're, there's already the, the crust of rust intro, uh, that some of you may have seen, uh, and I, it would be really fun to make like variants for different types of streams that I do. Uh, I'm still playing around with the idea. Um, where in your config repo can I find your shell prompt? Uh, it's under. Dot config slash fish, a fish slash config dot YAML. Yeah, I think that's where our config dot fish, I guess not YAML. Uh, opinions on swift versus rust. Uh, I've not used swift. Can't really speak to it. I like rust, uh, swift. I don't know what the selling point of swift is over rust. Um, the impression I have is that swift is, tries to do some of the, some similar things to rust in the sense of trying to be sort of a higher lang, higher level language that provides low level things, like a modern C or C++ or something like that. Um, but, but I like things like the, the rust lifetime system, which my understanding is swift doesn't really have, uh, how do you get your head around difficult concepts? I think about them for a while. Uh, realistically, usually what I do is I just read a bunch about it and then see whether, like over time, your brain in the background is just like processing the data, right? And, uh, you might not get it initially. It might even take a while. And I think just accepting that you won't immediately understand helps a lot. Um, do you think rust is in danger of becoming too complex, like Scala? I don't feel like rust is becoming more complex. I feel like if anything, it's becoming less complex because there are fewer weird corner cases. Like with, um, when non-lexical lifetimes landed, this is ages ago, but, um, the borrow checker went from often making mistakes to less often making mistakes. And so even though the underlying system was more complex, it now fit better how programmers think about the code. Um, so, so I don't think it's really becoming more complex. It's like async await, for example, there's language features that are being introduced. Um, but I think the complexity in them is not so much about the language, but if, but about the fact that they introduce new, new concepts to the language, um, that people like imagine that if they add like generics to go as the traditional example, go becomes a more complex language, but in some sense, it's because it now has the feature of generics as opposed to the, I mean, the language is also getting more complex, but I don't feel like it's becoming unnecessarily complex. Um, what do you think about Vorac and Colomac? Uh, not worth it because I work too often on other people's computers. Um, I also have seen some studies that apparently the speed up isn't that great. So I just, it hasn't, uh, I've had like the, a sort of technical curiosity, but I've never actually used it seriously. Um, your opinion on GPT three, uh, GPT three, there's a really cool article. Um, oh, I might as well just kill that. Um, there was a really cool article written a little while back. Let me see if I can find that. Um, um, thinking about, oh, hmm, let me see if I can find that article actually, cause that was really good. If you're curious about GPT three, um, yeah, it was called, uh, uh, uh, let me dig that up here. Yeah. I just scrolled very far without meaning to. Um, do, do, do, do, do. I just remember I sent it to a friend a little while back, so I'm scrolling back through my chat with them, uh, from mini Max here, Max here, GPT. Ah, GPT three, uh, this article, I thought, uh, it was a really good take on GPT three. I'll send it to chat. Um, which is basically like it's cool, but it's unclear. It's quite as revolutionary as like it's, it's a big step forward, but it's not clear that it's like everything is now possible. That wasn't possible before. Um, there's a lot of questions. So I'm just like walking through them. I'm scrolling. I'm lagging a little bit behind you all. Can you talk about, uh, higher rank trait bounds someday in a crust of rust? Um, I could, but higher rank trait bounds because so much of it is not really supported in the language. Uh, like so much of the design isn't settled yet. It's not clear that it's worth really diving deep into it because I don't know what to teach about it yet. Um, crust of rust is sort of intended for like, you read the rust book, you've programmed some simple things and now you want to try something more advanced with the language. It's not really like, let's explore this like long-term potential future for rust. Um, so like, for example, I probably wouldn't cover generators either in a crust of rust, uh, until they're actually released. Um, if you're going to build a protocol parser, what crates would be your go to Tokyo codex norm or something else? Well, Tokyo codex, um, is more of a way to wrap a protocol, uh, like a framed protocol into, um, into like the stream and sync API. It's basically a mapping between stream and sync, uh, and async read and async write. So that's a nice sort of wrapper, but it doesn't actually provide you with the protocol parsing. I've been pretty happy with num, although I've also seen some other cool, um, like top down parsers, uh, so I don't have a strong opinion there, um, like, I feel like there was a comparison of these a while back. Um, if I do recent downloads, um, so we're going to find nom somewhere relatively high up here, uh, Pest is the other thing that I've heard really good things about, um, but I haven't used it myself. Uh, I want to hear your take on ethics and the tech industry and rust. Ooh, can you, I'm happy to talk about that, but I would like to have a more specific question because otherwise it's a very broad topic. iOS app development, I've done zero of that, so can't really speak to it. Um, I've always wondered how does one program specifically for the GPU with rust and what kind of computation would be great to run on the GPU. Um, so the GPU is great for massively parallel computations, like if, uh, uh, it's basically divide and conquer on steroids. Like if your problem works well with divide and conquer, the GPU is going to be great for you. Um, the idea is basically that the GPU rather than having few very powerful cores is that it has a lot of simpler cores, uh, but they can all execute in parallel. And so if you have a task that you can break down into smaller components, run them all in parallel, then you can get very high speed ups. Um, the biggest challenge with GPUs is, uh, memory access in particular, because like you need to ship data to the GPU and back to the CPU to work on it. Uh, and so there's a lot of work that goes into just designing that pipeline and designing your computation in such a way that it fits the pipeline of the GPU. Um, I don't know that there's that much available for GPU program in rust at the moment, but I haven't really been keeping up with it. Um, I would look at things like Vulkan. Uh, and then obviously, um, uh, like Nvidia's, you know what it's called. Um, totally blanking on the name now, but Nvidia's, um, uh, like CPU, uh, GPU programming framework, I'm sure someone will tell you in chat. Um, I don't know that there are, there are better or worse here, but I think one big advantage of Vulkan is that it is cross hardware, uh, and even cross CPU and GPU. Uh, but the Nvidia one is generally faster because it's been around for longer, uh, and has direct support from Nvidia and they've worked a lot on that toolkit. Um, so it really depends on what you're favoring. Have you tried Haskell? I have a long time ago. Um, I thought Haskell was fine, but I didn't, I think part of what happened was I didn't have any practical use cases for it. And so it sort of fell by the way side. It felt more like an academic exercise than running a language, uh, learning a language for the purposes of using it in production somewhere. Um, I'm a C sharp developer. Do you suggest to continue with Russ to switch to C++ or C? I really love Russ, but I did not find any use case in real production apps. Uh, I don't know why you would start a new project in C++ today. I think you have many good alternatives. Uh, Russ is one of them, uh, Swift and Go or other good alternatives. Um, even things like TypeScript script, uh, it really just depends on your use case. C++ and C for me at the moment are primarily useful if you need integration with some existing ecosystem. Uh, so for example, if you need to work with like vendor libraries from some vendor that you don't have control over, and it's just like massive C++ beast, you may be better off using C++, uh, or if you need to run, uh, within a framework that is already C based, um, or that only supports C. Like, um, in the early days, like Linux kernel modules was a good example of this, um, not, not so much anymore, but, but only really if you have constraints that mean the C++ and C are the best language would I go for those, uh, other than that, I feel like the wins you get from some of these higher level languages are pretty high. Uh, GATs, generic associated types, uh, they fall in the same category as, uh, higher rank trade bounds. Um, I assume you wrote some kind of master's thesis. If so, what was it about? Uh, my master's thesis was about, um, uh, interference in wireless networks. Um, so the idea was that we set up like two wireless access points and we set up a TCP stream, so we're going across both of them and we would see what was the effect of having the, the two endpoints be transmitting at the same time, uh, on the same channel, nearby channels and far apart channels to look at that interference. Um, will you code something tonight, by the way? Uh, probably not. Unless something particular comes up. Oh, let me bring back Jay. Um, it'd be great if you could comment about Tokyo versus async stood versus, versus cross beam compatibility and interoperability issues. Is there a light at the end of the tunnel? Ooh, so this is a, this is a big one. Um, and there's a lot going on in that sort of sphere of projects. Um, the high level take is Russ futures story is not done yet. Um, the, the sort of core, some of the core pieces are in the language is like the future trait, uh, the waker and context, um, bits, um, and pin, of course, which was a major achievement. Um, as much of that is in the standard library and that's great. And that means that many things will work across libraries. Um, the things that are left are things where we, we haven't figured out what the right, like core abstractions are. These are things like async read and async write, uh, which we have versions of, um, but they have some drawbacks. For example, it's not clear that they'll work well with things like IO U ring, which is coming out and will potentially be a pretty big win, uh, in the async ecosystem. Um, and so those haven't stabilized yet, which means that different libraries are using different versions of them. Uh, Tokyo, for example, does not use the same one that's in the futures crate, which is what async stood uses, um, because they, as I understand it, wanted to, um, basically wanted to experiment and try something different to see whether wins could be gotten there. And so the ecosystem there is still developing, uh, and to some extent for good reason, um, there are other things we don't have common abstractions force, um, things like timers, um, or, uh, spawning futures. Um, so some of these things, like the, the core abstractions aren't done yet and that's why we're seeing this fracturing of the ecosystem. There are some more political reasons for it as well, but those, um, it's not clear. It's productive to talk about those, um, just because that I think the underlying technical issues are the real reason why we're seeing this fracturing. Uh, and I think that split is happening for relatively good reason, which is we're still experimenting with the primitives. Um, use a debugger much. Uh, I used GDP a decent amount, especially in like highly concurrent programs, or if I see crashes in things like Noria, uh, apart from that, like printf debugging is great and people can say what they want. Uh, I have not tried the Visual Studio debugger with Rust. Uh, how do you learn data structures and algorithms in Rust? Can you suggest some resources? Um, I mean, just take any data structures and algorithms book and start trying to code it in Rust. It's my best recommendation. Uh, I think exorcism.io has some cool exercises. Um, there's also, uh, learning Rust with entirely too many linked lists is a really great, uh, post. What are your thoughts on working for a while and then going back to school? Um, I mean, do what makes you happy. I don't think there's a reason to stay in school if you feel sick of it because you won't be productive and you won't learn. Uh, how is Rust capable of object oriented programming since the memory management and scope works really strictly compared to C sharp. If you're trying to write object oriented code in Rust, um, try to see if there are other or more idiomatic ways to do it. Object oriented programming is not the only way to write complex software. Uh, and Rust has some other approaches to it. And I would recommend that you try to do it in those other ways, uh, rather than try to like force your, your, um, your current way of structuring programs into Rust. You'll find things less painful that way. Um, what are your thoughts on doing, uh, create review streams, except viewer submissions and review small crates that people have written. I've done a little bit of that in the past, uh, the open source contribution streams have a little bit of that flavor. Doing a plain review stream, maybe it really depends on the, the crates are submitted. Um, like reviewing a crate does a lot of work, but even if it's anything more than a very simple one, and the very simple ones might not be that interesting, uh, but, but maybe, maybe it's not, it's not a bad idea. Um, how did you find out about your area and computer science? I just started my graduation and I'm very confused about my future on it. Um, you know, the way it happened for me was really, I was just working up through school and sort of observed along the way that I found things like concurrency and distributed systems and networking interesting topics and like high performance stuff. And so I just sort of gravitated towards the things I found interesting. Um, and, and then I took on projects that were that kind. And then I found professors that worked on that kind of stuff. I read papers that were about that kind of stuff. Um, in the classes, I took the ones that had that were the ones I liked the most. And so it sort of worked itself out that way. I think in general, like focus on the things you enjoy doing and that's the best way to find what you're going to be, what, what you should be working on. Uh, have you done anything with WebAssembly in the browser or not? Uh, I haven't. Um, WebAssembly is something I really want to learn. It looks like a really cool thing that I think is going to, um, have the ecosystem and already is. Um, but I haven't worked much with it myself. Um, your face cam has a more a pattern on it. Maybe switch scaling method by cubic or something. Eugh. I'll try to do that for next stream. Uh, what are your plans after finishing your PhD? Um, I'm going to go into, into industry. I don't quite know what I'll be doing yet. I'm looking at a couple of different, um, uh, job postings. Um, my hope is to have decided by the end of August because I'm moving to LA in September. Um, but because of the way visa things work out, I'll be starting work November 1st is the hope. Um, but I don't know yet. Um, looking at a couple of different things. Uh, some were in the very open source space. Some are more like bigger companies. Um, and we'll see that there's a lot of just cool stuff out there to do. Um, do you think having macros means there's less need for generics? No, I think generics are a very different, um, they serve a very different need than, than, uh, macros do. I know then C++ template programming sort of gives you both. Uh, and I think there's an advantage splitting them up. Uh, for example, with generics and Rust, you can have things like trade bounce and with macros, you couldn't really do that. And I think there are huge advantages to being able to express the contract over the types you're given, um, explicitly using trade bounds. You can, you can, uh, include bounds, for example, that aren't represented in the code, such as, uh, things like send, whereas macros will just not let you do that. Uh, an experience or thoughts on competitive programming. Um, I've done a little bit of that. Like I've been in some programming competitions and seemed fine. I think it's, you should do it because you think it's fun. I don't think it's useful. I don't think it's, uh, important for you. But if you think it's fun, then do it. Uh, it is a great way to just like learn lots of random things and get a lot of experience with programming. Uh, but it doesn't really resemble real programming, much like interview programming. It's like mostly a stupid idea, but, um, it just like doesn't represent how you really work when you do programming. Do you prefer to read papers physically printed out or on a screen? Um, it's a little bit of a mix. If I am going to read on paper, uh, if I'm, I'm going to read electronically, I rarely want to watch it like on a computer screen. Um, I have a remarkable that I'm super happy with. It's like an large ink tablet that's great for, for PDFs. Um, it's black and white or gray scale, which is a little sad, but it's great for just like annotations. The screen is really comfortable to read on. Um, I've tried using an iPad a little bit and it's great for annotations. Um, and for, and for richer content, but I don't know. I feel like I haven't found the right thing yet. Um, I specifically, I want the screen to be the sizes of a page, um, which like an iPad, for example, does not do, uh, otherwise the text gets too small or you need to zoom in both of the, the problematic. Um, do you know of the rust gooey library iced? I do not. What do you think is the coolest or most interesting feature that's coming up for rust? Oh, there are a lot of contenders here. Um, const generics is really cool. Uh, like I've, I've written some libraries that use it already and it's just really handy to be able to have like constant generic parameters, like be generic over a number. Um, I think, uh, there, the changes around generators are pretty cool when we end up getting those. Um, generic associated types is going to be a huge win for, for especially a lot of like async libraries. If you look at something like tower, uh, it'll completely change how we, we write the, the traits and stuff there. Um, in line assembly, I think it's also going to be pretty big, mostly because it lets us disconnect rust from what LVM does, which is pretty important if you want to try using different backends for rust. Um, so things like, uh, what, if you want to use crane lift or something as the comp, a compilation backend for rust. Um, there's also some of the work on like chalk, um, and Polonius, which I think is going to make it much nicer to work with, uh, the bar checker in particular, uh, but also some of the trait system. Um, for example, one thing I really want is the ability to have partial borrows. So this is something like, um, you can call a method that takes self, but imagine you borrow like self.foo and then you want to call a method that takes self. Currently, the compiler won't let you do that if they're both mutable borrows. Even if the method you call doesn't use self.foo, which you've already borrowed. Uh, and split borrows or, or partial borrows are in a way you could express that this method only borrows these fields. Um, there are a lot of open questions there. It's not something that's going to land anytime soon. Um, but it would be pretty neat. CUDA is the name of the Nvidia GPU thing. Thanks. Uh, how about the ethics regarding the sort of problems that ML should tackle, given the inherent difficulty of debugging these systems? I think it's a real problem. I think, um, we're in this, this space where there are really cool technical developments happening, uh, especially in the machine learning space. But, but in machine learning in, in, in computer science in general, too, I, like computer science is a very young field. Uh, and I think we're going to see a lot of progress in the coming years. And that's great. Um, but I do think we need to, as software engineers, be very aware of what are the implications of the stuff we're doing. Um, and very often the answers are not black and white. It's not clear that things are just good or good, or just bad. Uh, even just like companies are not necessarily just good or just bad. It, the real world is complicated. And, um, for, for something like machine learning approaches, it's worthwhile to think carefully about whether something is something you should work on. Uh, an important problem. Uh, and the extent to which it can be abused. And I think part of what we need is just like good standards, uh, ethical standards, but also, um, also sort of codified law of what should we be okay with? Um, machine learning systems being used for. Um, do you see rust as a general purpose language or do you think it's more suited for a particular domain? I see rust as general purpose. The, the reason I hesitate is because there are definitely some domains where rust is not right. Um, frontend code, for example, you, even though there is like web assembly, for example, you probably want to write in type script. Um, if you're writing, um, if you're writing, if you're writing something interacts with vendor libraries, like I mentioned before, you might actually want to use C or C++ just because that's what the existing vendor library is, is implemented, implemented in and trying to cross those boundaries is hard. Um, if you're working with people who, if you're trying to offer a language to people who aren't programmers, um, then something like Python, for example, or are, um, have a lot of value because they aren't gonna, they don't need the low-level control systems. Um, and so in those settings, you might make different trade-offs. But certainly for me, I, I haven't found the need for any other language except sort of JavaScript for browser-based stuff, um, in, in quite a while. Um, the state of Rust networking, quite good. I, I don't have that much to say about it. That there's, um, it is certainly true that there's a lot of sort of churn in the, in the Rust async ecosystem, but I think the networking story is pretty good. And certainly in terms of performance numbers, Rust does pretty well. I would much rather use C++ than go. Whoa. That's tougher. Um, one of the, one of Go's biggest advantages and one of its biggest disadvantages is how simple it is. It's a major advantage once you have very large code bases with many people working on them. But the downside is that your code and often ends up being pretty verbose, um, because you just don't have all these features or there are a bunch of things you just like can't do like write your own custom map implementation. Have you ever done 3D modeling with Blender? No. Any language, language recommendations after Rust? Say your second favorite language. Second favorite language. That's tough. Um, you know, I like bash, which is weird, but it's the language I use the most after Rust, I think. Um, there's sort of syntactic languages like I like markdown a lot, but it's not really a programming language. Um, I do use Python a fair amount. I've used Ruby a fair amount. I don't know that I have a good second language really. Uh, any books you particularly like? Um, what kind of books? Fictional or, or a factional? Fictional or, um, or like, what is the opposite of fictional? Like books on particular, factual topics. Um, unrelated to programming, do you play any musical instruments? I don't. I, I really want to. I started learning the guitar ages ago. Um, when I lived in London and I just like for various reasons ended up not bringing my guitar here. And so I have now stopped learning it and, have therefore presumably lost all knowledge. I really want to learn to play the piano, but I don't have a piano. And I feel like I would need lessons to actually learn it well. But, but I do really want to. So, so one day you'll hear the, I'll make a little jingle for, for Jay. Um, Rusty's linear type systems. What do you think about quantitative type systems like an Idris too? Um, so formal methods languages I have mixed feelings about. I think they're really cool in what they enable us to start doing like being able to have machine check proofs about, um, the behavior program is amazing. I worry that currently they're too hard to use for real things and bridging that gap is hard. Uh, and I don't have good answers for how we do it. And, and I think that's much of what the research is going on. This is sort of how do you do this sort of push button verification where think many things are automated. You work in a language where you have many of the niceties that we're used to without that adding too much proof burden. Uh, and it's difficult. I don't think we have the right balance there. I do think that one advantage Rust gives us is that it adds some of those things to a very pragmatic language. Um, which I think is easier to see widespread adoption than trying to have a very strict formal language where you then try to ease it into being uh, approachable. Um, that's not to say that they can't get there, but I think the path is longer. Um, you have plans to cover a distributed systems project in a future stream. Uh, in what sense like building one? Probably not. Um, I mean, it could be fun to implement like Paxos or Raft or something. So maybe, uh, but that's a much larger endeavor. Your favorite flavor of bagel. I really like, um, a ciago cheese on bagels. Um, I'm also just like a fan of just the classic everything bagel. Uh, love the new intro. I love the new intro too. No, no, no, no. Sorry, I know I'm far behind chat, but I'm trying to catch up. Uh, any advice on writing efficient servers which handle millions of connections tips for efficiency in terms of throughput and tail latencies. Um, it's hard. Uh, you probably need to use, um, a synchrony. Uh, in theory, something like, uh, Tokyo should work pretty well. Like under the hood, it sort of simplifies to uh, edge triggered e-pole stuff. Um, hopefully one day we get something that works even better with, um, with IOU ring. In theory, you could write your own stuff that uses Intel DPTK or something, but it's pretty hard to get that stuff right. Um, I think one challenge you run into with most of the traditional implementations, including things like, uh, Tokyo or Async Stead or or Smoll for that matter is that they ultimately are using the same mechanism for interacting with the operating system. And so you end up just hitting the operating system a lot. And this is one thing like through system calls. Which adds a lot of overhead. And this is one thing where where IOU ring tries to make things better where you can do this this pole-based thing in user space instead where you don't have to cross the kernel boundary, which has the potential to, to improve your, both your throughput and reduce your latency quite a lot. Um, or you could look at more sort of research systems like, um, uh, I forget the names of them now, but, but things where, um, if you look at Dune, for example, there are a bunch of papers based on Dune that, that basically tried to do full kernel bypass. So, the application runs almost directly on the hardware, um, without having to interact through the kernel and this lets you optimize performance way far, far there. Higher education versus certifications. Uh, I think certifications are useless. Um, I think higher education is, um, higher education is not necessary, but it is valuable. Um, and what I mean by that is, you don't need to go through the classical education pipeline, to learn the things that are important. Um, that's just like not true, but it is a useful way to learn things and there's a lot of stuff that you learn there that is really useful in certain types of jobs. Um, the examples of this are the things like, the things that always come up, right? Like, is design of data structures and algorithms. There are a lot of programming jobs where that is not relevant and then, you shouldn't need to learn it. But there are a lot of places where like things like big O notation and, um, complexity analysis are, are useful tools to know and that's not to say you have to learn it through higher education, but they are things that are worth knowing and you happen to learn them there. Uh, I think ultimately it comes down to you enjoy learning in that setting you feel like you can learn in that setting. If you can, then go for higher education. If you don't, then learn on your own. That's fine too. Um, I often find myself missing self-referential structs, especially when I try to wrap some functionality behind a single type to provide an ergonomic API. You find yourself in similar situations. If so, what are your go-to solutions? I used to, but not so much anymore. Um, the only places where this really comes up for me are in parsing situations where I want to be able to give out zero copy types of parsing. Um, you can use crates like rental, although I think maybe rental is deprecated now. Um, but there are a couple of crates that are in that space to try to provide, um, self-referential structure with someone's safety and PIN actually helps a little bit there. Um, PIN makes it so that you can more easily write safe self-referential things. Uh, whether this will land in Rust proper, I don't know, but maybe. Uh, do you SIMD and Noryo just rely on auto vectorization? Um, Noryo does not use SIMD. It probably could. Uh, Noryo's implementation is not so much focused on, um, like single core performance. There's a lot of work I could have done on SIMD optimizations or currently like it stores every row of every view as just a vector in a hash map. Um, which like, in theory you could do sort of column-based storage which saves you a lot of allocations and make all things faster, but but that's not where Noryo tries to innovate. Have you ever used tracing? If so, what are your thoughts on it? I think the tracing crate is really cool. Uh, and I have a lot of belief in that approach. Um, and in fact, in Noryo, I've started implementing tracing and I implemented this crate called, um, tracing timing, which consumes the events generated by tracing and instead of printing them like a, like a logger, which is what tracing is often used for. Um, it times the inter-event times and gives you histograms. So you can look at like in my HTTP request handlers, what are the latency distribution between say the receiving and respond events um, across all executions from my program? And it's really cool that you can just sort of instrument it that way without having to change the application you just switch out the the consumer of the events. Um, have you ever done game dev Rust or not? Um, during my bachelor, I did a little bit of game programming. Um, just sort of 2D games that were really stupid I wrote them in Java. I think it's a really cool space. I think it would have been really fun to try my hand there because they're also working on a lot of projects and problems that I find interesting like high concurrency, low latency type stuff. Um, unfortunately, there aren't that many game companies doing Rust currently. Uh, and the biggest one Embark Studios are not based in the US, which means that I couldn't work from them from LA because I'm not a US citizen. But maybe one day. Um, what was the side project that got delayed if you can talk about it? I can not yet, but maybe one day. Would you be interested in contributing to a Rust game? Man, if I had the time I would I don't currently have the time, but maybe one day. Hmm, what are some of the ideas that inspired you that you found beautiful, amazing, neat, and simple, but profound? Ooh, you know, none that really come to mind. Uh, there are a lot of things that are neat, but none that stand out to me as like this just blew my mind when I saw it. There are some things that are fascinating are possible. Um, and for me, uh, some of those are like paxos, for example, it's just like crazy that it works out in every case. Um, and but, but that's the best I can think of. I'm just constantly amazed that anything works at all. I feel like the more I dig into any kind of software, the more I feel like it's amazing to me that program like computers mostly boot up and don't crash. Uh, that's more of my opinion. Now we do think that in general, maybe part of the reason I'm not, I don't have those sort of wow, that's amazing is because if I find something that is that way, my first instance that needs to dig in and figure out how does it work? And then some of the magic goes away, but I learned more. Uh, when you graduate and get your PhD, when I finish my thesis and hold my defense, which hopefully will be by the end of October. Uh, can you give an example of the other ways to program other than object oriented programming that Russ provides. Russ is not object oriented. Uh, space system, which is not object oriented. Really. The how do you pronounce your name? Uh, so my full Norwegian name is young for the number on a young set. In practice, Americans can't pronounce that and neither can many people around the world. Uh, so I usually go by John Jang set. Uh, which is really just ignore the G's in the surname. That works pretty well. Uh, any resources to understand memory ordering is better. I never seemed to fully internalize them. Memory orderings are really hard. Um, and they're not well documented. They're basically whatever the CPU feels like, although not quite. It's whatever LVM implements. Uh, and it's really complicated. Um, because you also get into things like happen before relationships in different parts of your code. I haven't found any good resources on it really, except LVM has a page on memory systems. Um, is the best suggestion I can have and if one of you reads it a lot and understands it, write a blog post about it and explain how it all works. Uh, and then get people to vet it because probably it's wrong the first time around. Um, when do you first notice or start programming in Rust? I first started programming in Rust just before I started Noria, which and in 2015 is when I started Noria and that was in Rust. So five years ago for online teaching what do you use to draw with? Um, so I have like a Fion drawing tablet. I don't know if you can see it. It's orange. It's like the HS 6 10. I think it's called um, and then I have I just use my paint which is a Linux based drawing software that gives you like infinite canvas and stuff is pretty nice. You have schedule for the next Crest of Rust. I do not have a schedule. Uh, my my schedule is too unpredictable to have a schedule. But my hope is that once I move and things settle down a little bit more into a rhythm, I'll be able to actually set a schedule and that'd be pretty fun. Um, thoughts on the rust evangelism evangelism strike force and rewrite and rust memes. I mean it is true that there's some amount of evangelism around rust. Um, and sometimes I think that's deserved. Like I really like rust and I agreed that it's a language that deserves some um, some evangelism at the same time I I also understand that the pushback of like we're sick of hearing about it stop talking about it. Programmer's going to program like I don't I don't think there's a solution to this. I think talk about things that you think are cool. I think touting rust as the solution to everything and rewrite everything as rust in rust is not the right approach both because it's not really true. Um, like there are real considerations why you might not want to do things in rust and that there are some use cases where rust is is harder to apply. Um, it's also learning it is a pretty big barrier. Um, and getting contributors to learn it is even more for an open source project. Um, and it's also just like unproductive chances are if you if all you're saying is like rewriting in rust people are going to have this instinctive response that is I hear that everywhere. I'm going to ignore the argument as opposed to actually sitting down and consider it seriously. Uh, and so you want to try to be rational and reasonable about this. Uh, whenever you can and try to stay somewhat objective like call out things that are also bad. It's not everything is perfect about rust and I'd be wildly surprised if that was the case for any programming language the the goal is that over time you improve. Uh, where should I start? Which books would you recommend? You're embarking on a very big journey. Figure out what problem you want to solve first saying I want to write a database is a massive undertaking start with developing a core that matters to you and then build out from there. Um, I do recommend that the sequel like documentation and code it was a was a great help in developing at least the sequel parts of Noria. Um, they have some really good documentation they have good tests and good code. So that would be a good place Are you I already answered that um, is big tech becoming too large and stifling innovation in some fields because the companies are becoming too big and are basically monopolies that devour the competition. Yes and no. Um, some of these companies are certainly large enough that they can sort of swallow projects as they come up at the same time I think the answer here is just don't allow them to buy you like if if you if you start something that you believe should be its own thing and they approach you with a lot of money you say no. Um, now you can't always do that because investors have a say and that kind of stuff but I feel like it's not so much the problem is the big companies because a small company can move a lot faster often um, and can come up with like crazy ideas that someone just had and build them. Um, the problem becomes when it becomes easy to swallow them um, which like is part of at least in the US the sort of the startup culture there's a lot of this sort of aqua hire just like by companies aiming to do an exit that kind of stuff and I think that is part of the reason why we're seeing these companies being swallowed up. And so I don't think it's just on the big tech side. You have a guess on how long it will take before we have async fn in traits or their major technical blockers or is it more a matter of people resources to work on it? I don't know I know that many people I'm I'm sure that rust is lacking people and so certainly having more people would help the biggest thing rust needs is for companies to pay people to work on rust itself that is slowly happening but that is certainly a just like manpower is something and and paid manpower like people who can actually devote their resources like hiring people to work full-time I think is is the way to make these things move faster I don't know of specific technical blockers but I'm sure there are some otherwise it would have landed have you worked with the hyper library can you show how to write middleware for the server that's probably too technical for this but I'm sure there are examples in the hyper repo I don't have any recommendations or experience with writing native GUI programming and rust non-fiction see non-fiction is just stupid it should be fiction and faction clearly or should be faction and non-faction or something I don't know what are your thoughts on functional programming I don't think that everything should be functional and I don't think everything should be imperative use the tool that fits for the job how do you feel about the blockchain I think the blockchain is overhyped I think very often when people use a blockchain they could just as well have not used a blockchain and instead use a database there are legitimate use cases for things like a blockchain and for especially for some of the newer developments of blockchain see you things like proof of stake instead of proof of work but my impression certainly is that it's become a buzz word where many things are built on the blockchain that simply do not mean to be your favorite rust crates in general too hard they're too many of them but they're bringing up a lot rayon is another that they're probably the most common things I bring up to people for ways in which rust is cool because they're just it's amazing that they can be libraries and do what they do my questions were about was about computing books but of course if there are any fiction books you like let us know computing books let me look at my shelf there's a book called the pragmatic programmer which I think is really good there was recently a re-release of it I haven't read it yet but that book I liked a lot if you like low-level fiddling and stuff hackers delight is is really fun to read it's weird and obscure but it's cool there was also the purely functional data structures book it's kind of cool it's a little niche but there's some interesting stuff there this one I haven't opened yet but I've heard very good things about it's the visual display of quantitative and this is a book that explains how you should plot data and present data in in ways that are understandable to people yeah those are the ones that come to mind there was another book a while back called it was called seven languages in seven weeks which is a line a book that just presents you with seven very different languages that you can in sort of decent amount of detail just so you learn what they are and that was an interesting journey the free bsd book is really interesting if you just want to learn like operating systems stuff I think those are the the ones that immediately come to mind let's see are you interested in quantum computer programming qubit is coming soon what is your opinion seems cool I know nothing about it I know roughly what the computational but that's about it seems like it could be really important based on what I hear but I don't have enough experience with it do you play video games which ones yes I play video games I play a lot of different ones I actually played a lot of Counter-Strike when I was younger I even hosted Counter-Strike competitions at a this huge LAN party back in Norway called the gathering I also played I've played all sorts of the I played the last of us I like the lot played a lot of battlefield in high school but I also like the sort of more adventure puzzle games like portal is fantastic a braid if you've ever played it great great game there's a game called not not which was really cool I think it's like on all sorts of platforms now played a lot of the Zelda games what else I'm currently playing a game called Townscape er which is just a really fun that all twiddly game where like you it's a city builder but you're only really placing blocks and it uses like progressive we know what it's called like progressive rendering like it just like procedurally generates what the town looks like and there's no content in the game there are no people there's nothing else than just building blocks but it looks really cool I've played a lot of like civilization empires those strategy games I like a lot so all sorts of things really was it hard to get into MIT yes I it took me four tries I applied straight out of high school did not get in I applied after a year of my bachelors in Norway and did not get in I applied after my after I finished my bachelors in Australia and did not get in and then I applied after finishing my masters in London and that's when I finally got in took a long time that the professors that will evaluate your application know is the hardest part it there've been a couple of comments in here of like just that people thanking me for the videos and it means a lot I'm not reading them out as questions but I just want to address this more generally that the reason I've kept doing this and the reason I enjoy it so much it's partially because it really feels like I'm teaching people more than 20 years and you've really helped me understand rust that's like that it's a huge compliment and I don't know how to answer or respond to it really but but I'm I'm very happy that is the case I'm thinking of doing a few streams teaching graph algorithms and rust this sound like a good idea do you think there'd be enough interest in space absolutely try it I'm I'm not any kind of authority on what people will find interesting the way I do these streams as I stream stuff that I find interesting and if I find it interesting that means at least one person does so maybe there are others there's a you should join the restation station discord server there are a bunch of rust streamers there that we can chat about ideas you have for streams and stuff what YouTubers do you watch not that many but I do really like summoning salt which world record progressions over the years Joseph Anderson does really cool video game reviews like super in-depth what else the slow mo guys I like a lot what else do I follow it's a good question let's see how dangerous is that it's fine let's see what YouTube tells me what else do I subscribe to a julie nook is real funny big fan us life flourish for D&D of course last week tonight yep what else don't even know what else I subscribe to hope there's nothing like worrying here man shorts are fun like D&D like mock things doctor Mike has been I don't watch a lot but he has some like fun reviews of like medical video Aussie man reviews pretty funny blood on the clock tire is a board game I've been really involved with and they have some really fun videos going through games number file really cool minute physics really cool CGP gray if you haven't watched is fantastic he does these videos where he just like dives down a rabbit hole of something completely random and discovers really oh tears you is pretty cool it's looking at it's treating real life in the world and the animal kingdom in particular as a as a video game and evaluating the different classes relative to one another any advice on writing a networking crate which provides both sync and async versions of everything without duplicating logic too much well I mean that's easy if you will duplicate very little and your performance will be fine it would be great for the async version and fine for the sync version if you specifically want a custom implementation for each I don't think there's a way to do it maybe one day but what is some of the big next things for Noria that other people will be working on and there are a lot of things actually so sharding is a big one um a GDPR compliance um authorization and access so things like can you encode your security and privacy policies uh in a way that autumn any query you add automatically gets integrated with the policy and it produces an optimal query graph uh for computing the results with the policy in mind um what other things higher consistency guarantees sort of transactions and stuff um uh more fine-grained fault tolerance like the ability to have a data flow graph and a note in the middle goes down and you want up and bottom to continue computing and keeping the current state how do you recover them in the middle um those are the most obvious candidates for me there's also a lot of work on just like additional sequel things like correlated subqueries that could be made better um yeah that's like the stuff the most easily comes to mind would you recommend any specific crates useful for implementing a browser board or card game in wasm I don't know enough about that space to really say why are you moving to LA I moved to LA because my girlfriend is getting into voice acting and it turns out that if you're in the like art artists or not artists but the sort of acting industry you you basically need to be in LA in the Western world if you want to like establish the the necessary connections I think neither of us really want to be in LA long term but it's sort of a that's just the place you have to be and so that's where we're going to go and then we'll see after like like two three years something like that to sort of reevaluate and see where do we actually want to go now that that has that has sort of gotten started so that's why I'm that's why I'm going to LA any advice from someone just beginning to learn rust I'm learning from the book and I watch your videos regularly anything else watch some of the other rust streamers and just try to build stuff that's the best way to learn is the remarkable tablet worth it I've been very happy with it I haven't tried the new one that just came out so I can't really speak to that but I've been pretty happy with it you think being good in mathematics is good for programming how good are you in maths I don't think it matters but it depends on what programming you do like if you're doing like game programming or graphics programming or some amount of like algorithms work then mathematics is going to help but if you're doing things that aren't that maths probably won't make too much of a difference I think the big advantage of knowing maths is it teaches you a little bit about formal reasoning and just like how to think about abstract problems but I don't think mathematics themselves are that important are you hired yet I have some job openings I don't I have not accepted any offers yet when I do I'll make sure to let people know you have imposter syndrome and if so how do you go about it so I've always had very high self-confidence and I don't really know why so not really I think maybe to rephrase that a little there are things that I know I'm not good at and I'm okay with that I think you're not constantly going around and evaluating so yourself compared to other people is just like never going to lead to anything good and it's also not realistic right like it's not as though you have to be as good or better at everything as everyone else what you need to do is find the things that you enjoy and you feel you're good at and then work with those and ignore the fact that you're bad at some other things or laugh about it like it doesn't it doesn't matter if you were bad at some things because you will be so like for example I know that I'm a pretty good educator and so that's something that I do a lot because I enjoy it and I think I'm good at it I don't think I'm very good at formal reasoning for example sort of in in a computer science sense and so I don't do that much about it I sometimes try to learn but that's like not my primary thing where did John who come from I don't know man that it it's from the good old days of Yahoo being big and I was like huh John who that's the entire extent of the story and then it just sort of stuck because it happens to be unique enough that I can use at most places is it so that you need to have n number of pages published in order to get a PhD it really depends on the university at MIT know you don't need to have any papers published to get a PhD there are some universities that have publication requirements but that's a bad idea and MIT does not require it are there any good resources about low-level stuff like open-source software compiler CPU concepts internals that sort of stuff so I really recommend looking I only remember this username which is a fill dash op I think it's Philip operman but I could be wrong so he has this blog where he writes about writes about implementing an operating system from scratch and rust and it's really cool Steve Klamnik also has this intermezzo s that is a similar kind of thing I think Tim has a book that the Rust in action book I don't think it's fully out yet but that also goes through a lot of those sort of systems aspects those are good ways to to learn otherwise there's a lot of just stuff about writing operating systems that's not tight to rust and is still relevant the free BSD book is is a good example or just like MIT has this class 6 828 which is about building operating systems it's available online including all the labs try that what about making a crust of rust recording talking about memory orderings probably too hard and not really know it well enough that I'd be comfortable doing that what makes you choose rust over another language like go I like the additional features rust gives you and I the simplicity of go is not an advantage to me in my use cases how do you typically go on about debugging distributed code I've been doing the 6 8 2 4 raft labs and read your post in it as well even with go it can be a pin in the ass to do it myself I feel like usually the way to go about it is have really good logging and then make sure that your logs include sufficient information that you can reconstruct what happened afterwards once you get to really high load you probably want to actually parts these log files but use something like tracing and then like assign every request unique identifier make sure that you can like timestamp your logs collect all of them when you run and then afterwards correlate the logs to try to to construct this timeline of what happened and when actually what what I've done a couple of times is basically instrument my code for when different things happen and then I write like a Pearl script that just walks all the different text files and figures out what the current state of the system is and then checks a bunch of invariance over the execution log and then highlights things that seem weird that works pretty well but it generates a lot of output for and that's specifically for distributed code where you can't just like spin up GDB easily that's the best I've got there are some cool research systems out there although I'm blanking on their names I want to say pivot tracing was a big one and those and follow-up papers by by Jonathan and some other people that is worth reading if you're interested in the academic side of things but nothing I think you can really use in production at the moment what are your thoughts on covariance contravariance high-ranked trait bound concepts in rust and important are these from a day-to-day programming perspective they are not important at all if you're writing rust they are very important for implementers of very specific libraries without it it would be extremely painful to use some of these libraries like in sin for example I think there's a lot of like covariance contravariance at sort of tweaking going on to make sure that the API is actually useful or usable but I don't think I've really had to think about it much except if I'm reading those implementations garbage collector may be a reason not to use go it could also be a reason to use go depending on your use case for highly concurrent things for example garbage collection is often the problem and collecting garbage is the problem and a garbage collector solves many of those problems for you there's a bunch more about this if you're interested in in the the stream where we ported Java's concurrent hash map to rust in one of the recent context free videos the init order of impulse drops instead of inverses pointed out I didn't miss it further I think I would need more detail to answer that the web development on rust seems immature it makes sense to try it do you think it will grow I don't think it's that immature like rocket is a pretty mature project at this point unless you're talking about writing client sidecode in rust but but the the server side I think is it's true that it's somewhat young but like rocket is pretty serious do any other mainstream languages have lifetimes not that I know of I think there are other languages I feel like D does but I may be wrong but yeah I'm not sure you you would have to look it up and experience in making your own language no I haven't really been doing that although it seems pretty cool is GP 3 going to make developers obsolete no I talked about this earlier actually there's a I think GP 3 is cool but it's not it's not as revolutionary as it seems it's more incremental even though it is pretty impressive Oh someone mentioned that as you get any in traits are blocked on generic associated types that makes a lot of sense anything in particular about rust that you don't like bad design decisions or places that need more work there are certainly places they need more work this is some of the features we've talked about so far in terms of bad design decisions I'm sure there are some there aren't any that immediately come to mind there are decisions that it becomes clear that they should have been different one example of this is drop should have taken a pin self pin mute self there are a couple of others like I get unclear we really needed both into and from but that's only with the features the compiler has today but apart from that I think I've been pretty happy I'm sure I'm missing something I can't immediately think of other sort of major mistakes that I think Russ has made what kind of libraries do you think are the most lacking in the rest ecosystem well this is going to sound kind of silly but enterprise libraries is what's lacking I think Russ has seen a lot of benefit from having people working on open source sort of take it to heart and start developing it and developing libraries for for real companies to start adopting rust they really need things like integration with Microsoft SQL server or with Oracle DB or IBM DB 2 and these are things that open source developers don't care about therefore they don't build libraries for them therefore when enterprise businesses look at rust and see those things missing they go well it doesn't have the things that we obviously need I think realistically the open source community is hard-pressed for building those implementations themselves so that it needs some kind of responsibility so that those are the most obvious ones that come to mind for me yeah there's also a bunch of audio and video processing stuff that would be cool to have that we don't really have but it is sort of coming I think we'll see some of this with with the fact that the Nome project is starting to look a little bit at both Nome and G streamer I think are starting to look a little bit at rust I also really want a good plotting library and rust that's something I've been missing how do you think I should start learning async await in Tokyo watch my video on async await that's how I think you should start will you continue working on Noria probably not it's a little unclear probably not I need a I need a break I think have you played for Torio for a very short amount of time I feel like it's the kind of game I could get engaged with bored with it I get it becomes too monotonous at some point I think what's your background like from before college we always tech focused you plan on see us from the beginning I've always been very really fascinated by computers probably since I was like 13 and so that was always the way I was leaning but in high school for example I didn't I never did any I never took any classes and computer science that wasn't a thing my school offered so is all sort of on my own time on the side it wasn't until I started my bachelors that I really sort of chose computer science but before then I did do a lot of it on the side and that that's sort of how I got started favorite board game well that's hard I am I really like blood on the clock tower I've played it a lot I've run it a lot and it is fantastic oh man I'm so far behind on the questions I'm like 20 minutes behind your questions sorry about that but that's what happens when there true let's see the braid author is working on a new language all that's cool and is dreaming on Twitch neat do you think standardized testing should be stopped for grad school I'm about to finish undergrad and want to apply for grad school I'm just being reminded of how much I hate standardized testing I think there's been some studies showing that like the SAT and GRE bear very little correlation to people who are actually good students or good researchers I think like MIT does not require the GRE precisely for this reason part of the challenge is there's like a scalability problem of the the best way to do this is for to like interview every candidate but realistically many of these big schools just can't do that you need to have a filtering process and the standardized test provides some of that in some sense I think they serve more even for that kind of filter it just does not work this is the same as many of the the sort of coding interviews that the companies do that just like bear very little relationship with reality I don't have a good solution but I agree the standardized test is probably not it what are some good complementary resources to rustlings to learn rust I really like rust by example I think that's a good way for many people to learn and then I think many of these rust streams that have come up is a good way to just get exposed to the language sort of learn by osmosis just by observing people who know the language use the language and see them get stuck and pick up things that way and otherwise like build stuff yourself it's the best way to learn mmm do you have to work while studying abroad so MIT actually pays grad students so I receive a stipend from MIT and under the visa regulations here I'm not even allowed to work during my studies so that wouldn't have been an option in the UK I benefited from the fact that the Norwegian government has this international students stipend that they pay to Norwegian students abroad so that helped a lot but at MIT no for my during my PhD MIT pays me sort of enough to live on you are brave for showing your YouTube recommendations yeah I know I know I was it was risky is Noria ready for production no don't do it absolutely try it but it's not ready for production I was wondering if you could do a stream where you would show us how to bridge the gap from intermediate level to publishing your first crate with the best practices I think that if you publishing your first crate is something you can do as a beginner that's not even intermediate level just write cargo publish Clippy will take care of making it fit best practices to a large extent how's your experience worth working with Malta I will hopefully be joining brown yeah if you'll be working with them sure he will tell tell you about it at length he's a he's been great to work with this is I3 or DWM neither it's B S P W M it's the binary space partitioning window manager highest level of mathematics you'd say is enough for the reason you just described discrete maths I mean it really depends that in some sense them the more you go into depths of computer science but like for everyday programming none of that is necessary how's your teaching evolved over time and what tips would you have for others that want to teach computer science stuff so I actually what watch an interesting talk a friend of mine gave her PhD thesis defense actually on how to do education of basically how to teach people machine learning and I think there's some really interesting just educational frameworks a lot of it is to make sure that people are able to feel like they're introducing value so if if you give people a bunch of tasks they're not going to be able to complete or you just give them bought a bunch of stuff to read they don't feel like they're accomplishing anything and that makes it hard to feel like you're learning and it it makes it hard to motivate your learning and so this is one of the reasons why I enjoy doing these life coding streams is because other people get to work with me learn with me but they make progress because at least I know what I'm doing and they can then be learning but also seeing the the results of what they're learning and so that I think having that aspect of we're accomplishing something useful and interesting and seeing the impact of it I think is a big part of doing doing teaching well especially in computer science huge fan of the llamas are they your favorite animal but I really like J favorite animal I really like turtles I don't have a turtle but I like turtles yeah I'm so far behind chat I'm sorry but I am catching up actually we really need to ask your questions it's fine what made you interested in the lab you chose to apply to at MIT basically I've just been working I've always been interested in concurrency and distributed stuff and like high-performance low-level type stuff and when I found a group that was parallel and distributed operating systems it seems pretty ideal realistically much of it was talking to the professors but also just reading papers and being like a lot of the papers that come out of this group seem to be really interesting to what I enjoyed working on and that's a good way to choose is look at the work that they actually did asking about current projects for example is hard reading the website doesn't really get you that far what really helps is like look at the past few years of conferences for example look for papers that you find interesting and then look at the authors of those papers and where they are you write a lot of a documentation and if so do you have any tips on how to get better at that the best way to write better documentation is to read good documentation and it's just like it's sort of the same as being a good program you need to just have experience with code with code it's unclear that reading helps that much there it's more about writing but with documentation to read a lot of good documentation and when you do it try to read actively rather than passively don't just consume it but read it and try to understand why did they include this here why is this placed here in the documentation try to understand the the larger structure of it and then try to replicate that in your own projects and then just like write lots of documentation like started with deny missing documentation and really just focus on writing good documentation if you have a doc string that's one line it's probably not good enough it I'm not quite a fan of the like everything should have an example for example that that's not that doesn't really work that well but I do think that there's a lot of value in if you document something it should have longer documentation if the documentation is basically like the name of the function with some extra words that doesn't add very much and it should arguably not be documented the the name is sufficient what do covariant contra variant and invariant actually mean topic for a different stream it's a complicated topic that's well it's just like intricate it's not that complicated I recommend you read the Rust Nomecon page on covariance and contra variants mmm all you get for dinner I don't know what I'm making for dinner today I think I'm having tuna salad homemade very good can recommend any thoughts on risk 5 I think risk 5 is really interesting it's not going to be a big thing for probably many years but it seems like it's a pretty serious effort now and it has some cool benefits that I think academia in particular is going to start picking up what is the difference performance and efficiency between cross beam like epic based GC and normal GC normal GC is usually better not necessarily but but it often is because it has the ability to stop executions of things which makes things easier it has the ability to buy if you have a runtime like in Java and go you can instrument code that's not your own whereas cross beam can't do that and so epic space GC it just forces you into using slightly less efficient patterns but it means you don't need a runtime so there's a balance there I also think that the cross beam implementation I've had some experience with it through flurry the concurrent hash map port to rust and there seems to be something there that could probably be optimized further but it is really cool that it can be provided as a library do you have any opinions on actix and actix web haven't used it haven't seen the reason and I'm certainly one of the people who is pretty skeptical about it given the history I've seen of the project I could be the things have gotten much better now I don't know what advice do you have for someone from machine learning who wants to get into high-performance computing and systems program and where can I start that's a good question I think you start the same place you would if you started from scratch you can just probably skip ahead faster and then let people can start looking at algorithms data structures start just like implementing something interesting yourself like even just try implementing like an efficient an efficient concurrent hash map is a good place to start it's certainly has taught me a lot up through the years but even just like implement a concurrent linked list or something concurrency is certainly something just try to build sort of multi-core applications and try to build something that I don't know sorts a bunch of files really quickly using many cores I've not really looked at the crystal language know SQL X is actually working on supporting the database you just mentioned about the lacking libraries in the rust ecosystem that's great I think what we need is more people from industry working on rust that's the only way that the enterprise sites of the ecosystem is going to start to take off and we are seeing some of that that master is coming out soon that's cool what is the red flag and see libraries API that show it would be way hard to safely connected to rust I haven't really seen any of those but at the same time I've also done relatively little ffi work with rust I think function pointers are the biggest complexity there but that's all I can really think of I don't think it's really usually comes more down to size than anything else what is the best approach to implement an rfc and protocol like htp or web socket you start implementing it like usually the rfc has some guide for general protocol design but otherwise you just start parsing the grammar it gives you you feel like you fully understand rust no I don't think anyone does there some people who get pretty close like Niko Matakis is a good person that comes to mind but no I think it's I think it's a large enough language that there are enough pieces and it also depends on what you mean by understand rust like like understand how the compiler works understand how the tool chain works understand all the features of the language does that include things are still in development I don't think it's a well-defined question is there a system on the computer the greatly affects bandwidth stability because this problem makes me sad I don't know what the question is can you make a skill share course on rust I like the book but I myself am more of a visual learner it would be really fun to develop a course for rust it's a lot of work that I don't have the time to do now but maybe one day I'm going to put Noriam production now no one can stop me now dude go for it if you can make it work it makes me happy you know of any window managers for windows I don't but I know um a manager called Troy hunt who's great I would go follow him immediately if you're not already um and I think he uses this windows and I think he had a reason blog post on his new working from home set up and part of that he talks about his windows when window manager which is sort of tiling based and stuff I'm very keyboard oriented um that might be something to try uh who is your friend to give the talk machine considering actually like recording her um her thesis defense and putting online but I don't know it yet do you think latech is a good way to write good documentation is there a better tool do not write your documentation latech it's a terrible idea don't do it like and it depends on what you're writing documentation for but in general no PDFs are terrible way to to be consuming code documentation you want things like interlink um automatic links to source code things to build on other people's computers like use rust doc if you're using rust where do I find good papers any recommendations um look for computer science conferences like some of the big sort of top tier conferences in fields that you care about and look at the papers that were published over the past few years uh or just look at like the they usually give out a sort of test of time awards that are papers that were published many many many years ago and that are still considered important those are good places to start um or just look for um university university classes that are research oriented about the topic so MIT is a class on distributed systems for example like 6 8 to 4 which I've TA'd before as well and there the the website and the the curriculum for that class has a lot of sort of traditional well established papers on the reading list go read those um how do you deal with loss of motivation on a project that has a huge roadblock this is something I've I've um hit a decent amount actually just with Noria it's a project that has gone on for so long so I've certainly had periods where I've felt a bit of burnout um and and it's hard I don't have a good solution I think the the two primary recommendations I would give is if you're starting to feel burnt out especially in a PhD then stop working on it for a bit like it's okay you have a lot of time in your PhD you have a lot of say over your how you spend your own time if it's not worth forcing yourself to work on something when you won't be productive because you'll be less productive for longer if you instead just like don't work for a week work on something else um then that's gonna in like you're if you get out of that rut you'll be far more productive coming soon um and that's probably going to be better than if you were lower productivity for longer um and separately from that like find side projects I think for me one of the one of the things that have helped a lot with me getting burned out with Noria was having things like these streams that let me do something else where I feel like I'm productive and accomplishing something because that means that even though if you're like roadblock on this project if you only had that you might feel like you're not making progress that you're like stagnant and that's that's where things like imposter syndrome start to come in but if you have something else you're doing well on that that helps keeps your spirits up so I'd recommend that as well and otherwise if there's something that you need to make progress on like you're writing your thesis or something like that try to make like at least make a little progress each day and it's fine if it's tiny as long as you're making forward progress things are getting better let's see I'm on my third year of CS and I'm going to be learning MPI and programming and see do you think it's a bit outdated or see perfectly fine see is perfectly fine you'll like see is not going anywhere anytime soon I don't think you're going to be building new things and see but it's a worthwhile language to learn I still think that's very much the case MPI is not really the way to do sort of parallel programming nowadays like I would rather use rust for that but MPI is it's like very well established very well used and it is good at what it does so in that sense it's it's worth learning but it's not sort of the state of the art of what you would do today usually how much math should someone know when learning rust relative to other languages I don't think rust requires more math knowledge than other languages at all like things like the bar checker is just like not really about math if you're better at math or or logic or or formal methods it's not going to make you better at things like lifetimes I think that's focusing on the wrong part of lifetimes try to figure out what's happening to the memory in your computer to understand why the code doesn't compile as opposed to try to like formally model it in some way what do you think but if let chains I I like them they're fine if that's a if that's the right fit then use that I guess the question is sort of indirectly is are they better than match I don't think it really matters at the same time the compiler can probably optimize match statements better than chained if lets but whatever flow to boat um for the red flag in C question variatics and global variables are probably the most annoying to work with that makes a lot of sense like if you have global state um if you have things that you can't really express in rust like variatics those are a pain to try to expose they're not impossible but but they are pretty painful I want to learn CUDA I was wondering this like GPU programming for NVIDIA GPUs I was wondering if it's worth learning it in rust or is it's a better to use C++ since C++ is better tutorials if you want to do CUDA probably learn it through C++ uh like CUDA the the language that CUDA present you with is basically C++ anyway or some mix of C C and C++ so you'll probably want to learn that regardless um and then even if you start using the rust bindings later chances are what you're the the kernels are the Lenovo ThinkBad X1 Carbon is the laptop I've been using for the past 8 years like different generations of it and I've been super happy do you speak any language other than Norwegian and English uh technically some Spanish uh I would not I would not call myself a native Spanish speaker by any stretch of the imagination uh what are your PC specs uh I have a an AMD threadripper 2600 X like a 12 core CPU I have s mm 16 gigs of RAM 32 gigs of RAM somewhere on there um I recently switched from a GeForce GTX 1060 to uh an AMD uh uh uh what AMD car do I have the RX 5700 um because NVIDIA on Linux is a pain. Any time management tips? How do you balance your thesis side projects, open source contributions, relationships, et cetera? It's hard, especially when writing your thesis, it's just like you're spending so much time working on it. And when you're a PhD student, there aren't good boundaries for whether you're spending too much time, too little time, like if you work, you're supposed to work 40 hours a week or something. As a PhD student, you're sort of supposed to work 40 days a week, but realistically you work all the time you're not working. And you have this weird incentive structure where you need to work because you need to finish. And any time you take a break, you're delaying your eventual finish, which is a bad mind state to have. I think it comes down to work on things when you're productive with them. Like sort of trust your brain a little bit. Like if you are not feeling productive with your thesis writing, then go do something instead that you want to do. Because you're way more productive when you're working on things that you enjoy doing. And then at some point, hopefully at least, if hopefully your thesis work is interesting, otherwise you have other problems, right? But if you're feeling a little bit fed up, you're feeling a little bit stuck, go work on something else that your brain is like pulling you towards, oh, I want to think about these things instead. And then after a while, your thesis is going to creep back into your thoughts. And that's when you go back and work on that. So sort of have it be driven by what you enjoy doing. Is it worth teaching rust rather than sea and colleges? Or do you think students still need sea basics to understand rust? I think you can learn rust first. I think there's still value in learning sea, but I think they're independent. I don't think you need to learn one before the other in either direction. I think teaching rust in universities can work. It can be a little bit of a higher barrier in some cases. It depends the way, or like what you're trying to teach them. I don't think sea is easier than rust. And the reason being in sea, you're more likely to shoot yourself in the foot and have things crash at runtime. And it's better if the compiler can tell you this thing is wrong and give you helpful examples rather than you ran your code and it crashes. Like for a beginner's learning programming, it's a lot better to have the compiler give you helpful error messages than being told like core dumped. What are the big CS conferences you mentioned? It really depends on the field. I don't know about many other fields. In systems specifically, there's like NSDI, OSDI, SOSP, Eurosis, HotOS. Sure, there are others I'm missing, but those are the first to come to mind. Rocket's author, Sergio Benitez is not teaching rust at his university, I don't think, but he is finishing up his PhD at Stanford, I think. Ooh, I'm catching up to chat. What do you think about using Rust to develop AI and machine learning? What are the benefits as opposed to Python? I think the benefits with using Rust over Python for machine learning is that it's easier for you to hook into the internals without losing performance. In Python, like Python is efficient because you have building blocks that are built in other languages that you can hook together and then they are still performant because behind the scenes is not Python that's running. But the code that hooks things together is allowed to be slow because it's sort of the control plane and not the data plane, which is what needs to be fast. With Rust, you can in theory at least write code that is in the data plane in your control plane and have it still be fast. So that's a benefit, but it also means that there's more of an onus, if you allow that to be done, it's more of an onus on the developer to make sure that they don't slow things too much down by using those features. But it is true that Rust has a much more, sorry, Python has a much more well-developed machine learning sort of space currently. Like Python is just a better language for doing this with solely because it has better support, better libraries, better tutorials, more people working on it, more attention. So in that sense, Python is better currently. I don't think that Python is fundamentally better for machine learning stuff. 40 days a week. I meant 40 hours a week. Good catch. Will you end the stream when you catch up with questions? That's a good question. Maybe that's what I should do. Thoughts on async drop and cancelable async processing. Seems like a prereq for structured concurrency. Async drop is really complicated. I don't have the answers there. I know there have been some proposals that have shortcomings. Structured concurrency is really cool, but it has some challenges with getting things to work with existing code. If you want things like being able to spawn futures, for example, part of the challenge is that we already have an ecosystem that relies heavily on the drop trait on having destructors. And structured concurrency fits really poorly with having destructors that can happen at any time. And you sort of need async drop, but we don't have async drop and we have a lot of code that uses drop. It's a mess. I don't know what the solution here is. I think we're gonna need some sort of brilliant insight, sort of like what we had with PIN before we figure out what's gonna happen there. I do think async drop is like important because the number of times I've written implementations of libraries that like there needs to be a shutdown method because you want to like hang up with the other side cleanly, like imagine you're interacting with, I don't know, MySQL. Like you could just drop the TCP connection, but realistically you probably want to like send some messages to like close things up. And you can't do that in drop because drop isn't async. You can't, so what you end up doing is like have a function that consumes self that's async that's called like shutdown or close or something. And the user just has to remember to call it. And if they don't, you do the best you can. It works okay, but it's not great. I don't know what the, how we figure this out, but we sort of need to. Anything that should be added to missing semester, love the metaprogramming lecture. I don't know of anything that's obviously missing, but I'm sure there are things. We certainly have gotten a lot of feedback on the class, but in general it's been positive. It's funny that you mentioned the metaprogramming lecture because that one has maybe the most controversial name of all. I don't think metaprogramming is the wrong name for that lecture, but many people who have experienced with the other, the existing meaning of metaprogramming disagree, but I'm glad you liked it. Have you seen any documentation tools better than what Rust has? Not off the top of my head, but I also, Rust is by far the language I have the most experience with, so I might not be the right person to ask. Are your dot files on GitHub up to date? Your desktop looks like it's I3, but I only see configs for Xmonad. They are up to date. I'm not using I3. I'm not using Xmonad either anymore. I'm using BSPWM and Polybar. Also, when will you try Wayland? The moment OBS has good support for Wayland, I'm happy to switch, but OBS currently does not have good support for Wayland, so. What year of 6.8 to four class are you in? I.T.A.D. 6.8 to four in 2015, 2015 or 2016. Did you know what to pursue while studying in universities? Are you confident that whatever you are focusing on right now is what you want to learn the most? I don't think that's the way to think about it. Think about what things do you want to learn and then learn those things. You're not committing to doing something for the rest of your life just because you study it, right? In fact, for example, for my PhD, it seems unlikely that I'll be working on data flow databases for the rest of my life and I don't want to. And I think the thing to remember is that you learn a lot over the course of your PhD and very little of it actually is related to the concrete thing you write your thesis on. You may be like a sort of big expert on that specific thing, but that doesn't mean you have to work on that. You learn a lot about how to learn. You learn a lot about just various of the dependencies you have in your thesis. You learn significant amounts of and you can sort of pick and choose and you can always learn more things later. Don't think about it as like your choices to be all and end all. Pi or tau. I like pi, but I've also seen some convincing arguments that tau is better. I don't, it's not a hill I'm willing to die on. So I'm gonna claim that either is fine. Is there a specific problem you've solved or program you've written that you're very proud of? I really like EVMAP. This is the data structure that I talked about in the Rust at Speed talk from 2018. This is the sort of you keep two maps and you have atomic encounters to swap between them correctly. I think it's just a really cool data structure. I use it a lot in Noria. It's done really well there. I think it's really neat. That's the first one that comes to mind. What are your thoughts on ecosystem splitting in terms of azing run times? I covered this earlier in the stream so I'm not gonna go over it again. Can you explain pin? I have like a four hour video where I explain pin and so I recommend you go watch that video. It's very hard to cover it like in five minutes here. What's your favorite local or not coffee shop or restaurant? Hmm, I don't know that I have a good answer to that. There's a restaurant here in Boston called Mae Mae that makes really good food. They make these like almost like scallion pancake sandwiches. It's really good. Can recommend. What was the brilliant insight with pin? So the insight with pin was really that all of the problems around self-referential structs could be solved with pin, which could be a library. And getting to what that minimal set of things it had to do and what it's guaranteed had to be, getting there was a lot of work, but it just worked really well and didn't require the language to change in like fundamental ways. Will you do more streams like this one? Probably. I mean, do you feel like the stream was useful? If people found the stream useful then I'm happy to do more of them. How good is Rust for microcontroller programming? I haven't tried, but my impression is that Rust actually works really well for embedded devices these days, but I don't know. Book and resources recommendations for parallel and distributed computing. I would go check the 6824 website. So 6824 is the MIT class on distributed systems. It's taught by my advisor amongst other people and there's a lot, but the whole classes is available online. All the labs are available online. All the tests are available online and all of the reading lists and papers that they list to our online. It's a great way to just get a sort of survey of the field. I think they even have videos of the classes from a few years ago. I highly recommend looking at that if you're curious. Does your code style align with what Rust wants to do or do you find you have fought with Clippy or even the compiler over non-issues like having the open squiggly bracket on its own line versus on the same line as the if. So I'm of the opinion with code styles that consistency across developers and code bases is way more important than what I like. So I do whatever Rust format does and that works well. I think people who have curly braces on a separate line are maniacs. So luckily Rust format does not do that. Ah, it doesn't sometimes, but no, don't do that, bad. As for Clippy, Clippy has some lints that should not be on by default. There was a cool, I wonder where that, ooh, that's the wrong place. Let's see here. This is gonna be bright, I'm gonna switch to GitHub here. Ah, it also can't type. Cargo. So this issue was pretty cool. So this is basically, David Tolne went through and looked for Clippy lints that are most often ignored and argued basically that these should not be on by default because everyone ignores them. And if some of these went away, I'd be pretty happy. Like cognitive complexity, although I think that one has already gone away. Too many arguments in type complexity are basically often ignored. And those are some things that have caused me annoyance in the past. I'll paste this to the chat as well. But apart from that, I've been very happy with Clippy. What are your thoughts on the opportunity cost of going to grad school instead of going to industry? Practical experience, finances, et cetera. Going to grad school is not worth it for the money. You should not go there if what you care about is like financial benefit. The opportunity cost there is not worth it. In terms of whether you should do it ignoring the money or taking the money into account but not having that be the only factor, it depends on whether you want to. Like don't do a PhD because you feel like you have to. It is not worth it. You can get the same experience, learning on your own, going into industry, that sort of stuff. What doing a PhD gives you is the freedom to work on a very diverse set of problems. You get to work very much on your own time, on your own speed. And you get to work on things that aren't necessarily things that people will pay for. If you work in industry, you sort of need to work on something that other people are willing to pay for. Whereas in academia, you don't need to do that. You have a lot more flexibility in just working on things that you think are interesting or fascinating or important. And you also learn a lot more about learning. You're in a learning environment. You're working with people who love to learn. And that's a lot of what it teaches you. But the PhD is long. It's like, well, I mean, it depends on your field and your area of expertise. But mine is about six years. It requires a lot of self-discipline. No one tells you like, you have to come in this and this time or tell me when you go on vacation. Like you're in charge of your own time and what you do. But that also puts a lot of responsibility on yourself to make sure that you do things that are important, that you make progress, that you eventually graduate. So is it worth it? If you think it's interesting and fun, then it's worth it. If you are doing it because you want to have that paper, it is not worth it. I opened a PR to the Rust compiler with a bulk of the work done. And I've been having difficulty getting a few questions answered for finishing touches. I don't want to pester anyone, but I'm kind of stumped on my own, any advice. It's tough. This is one of the reasons why I say that the Rust project needs more people that are sponsored by industry that are full-time because the Rust project is very large, but it survives because of a small number of people who are devoting a lot of time to it. And we just need to see more people getting paid to work full-time that will solve some of those problems. In terms of what to do right now, the easiest thing I can imagine is interacting on the Zulip, like on the actual chat. That might be the best way to ask these questions rather than leaving in a PR where a bunch of people might not see it, like join the compiler Zulip, for example, and ask your question there because there you might get a sort of quick answer for someone who's not directly looking at your PR. You develop any activity not related to coding, like practicing sports or any hobby, probably it's challenging to do while having to do a PhD. Well, so I have a couple of things, like this stream, for example, like this sort of education part I do a lot. Apart from that, a big thing for me is I run a lot of VAD campaigns and play in D&D and that I think is really fun. Board games in general, in fact, is a big thing that has certainly taken up a bunch of my time. I used to run a weekly board game night at MIT in the computer science department. Of course, these days that's not really happening anymore, but that was certainly one of my big things. And Blood on the Clock Tower, which is this big social deduction game that's still in pre-release, but is probably gonna come out like start of next year. Like I've spent a lot of time with that. I've run it at conventions and stuff and that's been a lot of fun. So those are the things that most immediately come to mind. I also do, like I enjoy rock climbing, although I haven't done it in a very long time. The PhD has certainly gotten a little bit in the way of that. Where do you see Rust in the next 10 years? I think Rust is gonna keep increasing in adoption. Certainly all I've been seeing in industry, after I announced I was like looking for work, I've talked to a lot of companies and it really seems like Rust is gaining adoption. It's a gaining speed inside many larger companies and that's exciting. And hopefully that turns out well for Rust. I think my biggest concern is whether or not Rust will, whether like one company will take over Rust, like become the dominant driver. I don't think that's the case. It doesn't look like that's currently happening, but that's certainly a concern I have in the back of my head. And I think as I mentioned, like finding a way to sustain the project beyond just like a few people paid by Mozilla is hard. I think we need more people like David Tolne as a good example of someone who is now like paid to work full-time on Rust. I mean, from within Facebook, working with Facebook and for Facebook, but with a lot of the focus is on working on like Rust and the Rust ecosystem. And I think we need more people in positions like that. I know Wayland support and OBS is coming. I've seen patches that was a month ago. Yeah, there are many patches for OBS and Wayland and they seem to have stagnated a little bit. I think part of what they're missing is testing. I guess now that I'm on like a nightly build of OBS anyway, maybe I should try it, but I just haven't gotten around with it. Also, right now is not the best time for me to experiment with things because in theory, I'm like moving in less than a month. And in the middle, I'm like organizing, moving and writing thesis and it's just like a lot at the same time and trying to fix my computer at the same time would not be great. Do you think NPM's node modules can be compared with Rust's package system? I love Rust, but downloading 200 to 300 packages for relatively simple programs seem successive to me, which happens frequently. That actually happens fairly rarely to me these days. I think one thing that's helped a lot is I have the environment variable cargo target data set up so that all my projects build in the same target directory. This means that dependencies that are built are shared between my projects as well. This basically means that instead of having like one node modules directory, I have a shared one that helps a lot. Tell a niche to stream. I actually have already told a niche to stream and I hope people do it. Do you have a special setup to write your thesis? Not really. I just sort of write in the tech, I've set up the template the way I want. It's working out pretty well. What window manager are you using when you switched to Wayland? I don't know. I haven't looked enough at it seriously to say. I've heard good things about Sway, but I don't know. There are cool dark mode styles and stylers for GitHub. Yeah, someone mentioned this in my YouTube comments as well. I just like don't really like dark mode for websites. I have it on for the Rust documentation for these streams because I have it open enough and I know that it bothers people enough and it's easy enough that it's worth doing. But for GitHub, I actively want it to be light mode and so I don't want to like install and set up stylists and like find a style that I like for GitHub and then turn it off most of the time and remember to turn it on for every stream. Like it's just not worth it. Why does having brackets on a new line after an if make you a maniac? It takes up a line that it doesn't need to. The indentation already tells you where the block starts and ends. What advice would you give an 18 year old who has a decent grasp on Rust uni or something else? It depends on what you find interesting. Like if you want to learn more about like the academic side of things then go to university. I do think that bachelor degrees are worth it. Like they're a good way to get this like broad survey of what's out there. Like a PhD is very niche and very advanced. I think a bachelor is generally worth it because it exposes you to all these things you don't even know are out there and like a bunch of it you won't care about but at least you're sort of forced to see them. And I think there's value in that. I'm trying to introduce Rust in our company. We mostly use go for web services. People always point out that Rust is too hard and there aren't enough Rust developers to hire. How would you counter that? Rust is not too hard. It just takes longer to learn than other languages but it's not too hard. People are productive in it and the reason it is hard to learn is because it gives you benefits that other languages don't give you. And the other thing to remember about Rust is that you're paying more upfront cost for compilation which is what makes it seem harder but if you give up on that stage you don't get to observe that it saves you time in runtime debugging and it probably even saves you more time than you would otherwise have spent there. Like remember that it's like saying that C is easy because it's easy to compile a C program which is like not the right comparison. As for there not being enough Rust developers to hire that's just not true. I think there are a lot of good Rust developers out there and in general I think you'll find that the people who have chosen to learn Rust are often fairly skilled developers because they chose to be willing to tolerate that initial learning curve. And certainly from what I've seen there are a lot of Rust developers out there who are maybe currently in other positions but would totally pick up a good Rust job if one came along. Do you think that a PhD in working industry is feasible at the same time? No, don't do it, not worth it. Zulip is sort of like Discord but it's a little bit more technically focused. It has like threading and stuff and it's what some of the Rust compiler teams are using. Things you wish you knew before starting grad school whether it be advice for getting in or getting through it. For getting in, references are some of the most important things for your application. Your grades are sort of an exclusionary factor like if they're too bad you won't get in but having good grades won't get you in. Whereas having solid references and solid things to point to in your application matters a lot more. For getting through it, remember you're not in a rush. Take your time, work on things that you think are interesting. That way you will be far more productive and keep in mind that there is some degree of self-discipline to this. You do need to like find a plan and figure out how you yourself work and how you want to work. Let's see, stream your DND, that could be fun. Maybe one day. If you're into bouldering then when you move to LA you should make a track to Bishop. It's mind-blowing, nice, you should do that. Any smaller rust crates you particularly like? Probably? I like slab, slab is cool. Like skipping some just so I can catch up with chat again. Any tips on how to get started with open source projects in Rust? Take a look at some of my videos on open source contributions. I go through some of that a lot in those videos and give you some concrete advice for how to do it. And also we actually make some open source contributions right in those streams. Use a specific tool or method for taking notes for your research. Not really. I tried getting on board with like the note system where you have like a column on the left notes and then a note feel at the bottom for summarization. I use that a lot for notes in classes. I don't know that it made much of a difference. I am pretty bad at taking notes. Like I don't, or rather I usually don't, I usually find that I don't look at the notes afterwards so it doesn't matter. And so I think over the course of the years I've been stopping taking notes unless I specifically know I will need them later. Because I've found that if you are taking notes you're not paying attention in the moment. And if you're not gonna look at the notes later that's just not worth it as a trade-off. It's better to pay attention to the thing that's happening right now. You'll remember it better and understand it better. Do you think the Windows subsystem for Linux version two will change development patterns? Or is it more of a toy? I've heard really good things. I've heard people are pretty excited. I just like don't use Windows. I haven't used Windows in many, many years. I don't want to use Windows. I'm sure it'll be great for people who are on Windows to not feel sort of excluded by a lot of the software that's built by especially open source people who frequently use Linux. But it's not something I know enough about to really say for sure. I'm sure it makes a huge difference to many people but I'm not one of those people. Do you think Rust could be a replacement for C as an introduction to programming language? I don't think you should ever use C as an introduction to programming languages. I think you should use something like Python, maybe JavaScript a little unclear. I think introducing people to types makes a lot of sense. Like TypeScript might be better. But Rust potentially is a good one too but it is harder to get started with but it's harder in the sense that the compiler will sort of give you errors more often but those errors are also pretty helpful which is good for beginners so it's hard to say. There's an experimental opt-in dark mode for and from GitHub. I might try that. Again, like I just like don't want it so I would have to remember to toggle it on and off which is annoying. Do you think it's more valuable to spend time in college learning core topics like data structures or more random electives that are more niche but you want to explore? So during my bachelors you're supposed to pick a major at least in Australia you were supposed to pick a major and I just didn't so I have a double major in general computer science because I took a lot of different classes and none of them gave me a major when combined just because I took the things that I was interested in and like I think that's a good approach. It also it doesn't, data structures you can sort of learn on your own but they are like I at least think they're really interesting and worth learning and maybe even through a class it can be really valuable to sort of have someone walk you through them but like take classes on the things you think are interesting. Do you have any recommendation on breaking into a rust job from another development background? I think rust is pretty forgiving there. I think there's still enough like thirst for rust developers that even if you're coming from a different background and you're relatively less experienced you might actually find that it that getting a job might be easier than with some other languages where there's a bigger pool of candidates. If you could magically add or change one thing in rust right now what would it be? Oh that's tough. I actually can't immediately think of anything big I would want to change. Like I've been pretty happy without the languages turned out. I think if there was a magic way to fix async drop that would be amazing but I don't know of a way to change it to make it better. Any assembly experience? I've written a little bit of assembly but not enough to really give good resources for recommendation. How do you balance school and work? What do you prioritize and focus on to get more output per input ratio? I don't know what you mean by balancing school and work. Like I'm not my work is my university studies. So I don't know what you mean there. What got you interested in rust? I got interested in rust because it seemed like a language that first of all I just think languages are interesting. I like learning languages and seeing what they have to offer but also the things that rust had to offer at least sort of on the cover where things just appealed a lot to me because I do low level high performance concurrency stuff. Rust was very much in that realm. Oh, lecture notes in latech. No, please no. What version of Linux do you like the most and what advantages does it have over alternatives? Arch Linux, because it's really easy to write your own crates, your own libraries packages and everything is very up to date and that has not been a problem for me up through the years. Which industries do you think will benefit most from using rust? I think many of them. I think one of the places we're seeing a lot of adoption in rust is in low levels of OS programming. This is stuff like Amazon's Firecracker, like the virtualization stuff. I think another is WebAssembly and the interaction with the web. And I think a third is in the space of high frequency trading and like finance. That seems to be a place that has been sticking pretty hard to very old software. And rust seems like a candidate that they might actually be willing to rewrite things in. I haven't tried TypeScript, but I've heard good things about it. Shouldn't intro to programming be done in a functional language? I don't know why people keep claiming that you should do introductory programming in a functional language. I'm like, I don't, why? I don't think you should. You helped me start contributing to open source. Nice. You feel that by using DuckDuckGo, it takes a little longer to you to find what you're looking for than if you were using Google. Not really. That's only for relatively niche searches. Like there are some searches where it very quickly becomes apparent that DuckDuckGo doesn't give me good results. But usually, like I find what I need. Are Python or GNUplot for plots? I use all three, not for any good reason. I use GNUplot when I just have a data set and I just want to see what the line is because you can pretty easily just like write out a command line than plots. I use matplotlib for when I'm producing papers because it's usually easier to build into a pipeline. People know Python better, so it's easier to maintain longer term. And when you really want to customize your plots, matplotlib is great for that and for producing like PDF output and stuff. And I use R for when I'm doing more exploratory plotting. Like if I have some data set and I just want to plot it all sorts of different ways and use different plotting strategies and like I want to do like facet wraps and facet grids, R is great for that for just like data exploration. So all three. Creates has replaced the word libraries for you. Yeah, it's true. Favorite dessert? Oh, I forget what these are called in English. There's like a, it's a lava cake, I think it's called. It's like a chocolate brownie, but that has like chocolate, it has like runny chocolate dough in the middle. It's great. Little bit of ice cream. What nightly features of Rust are you most excited coming to stable? That's a good question. I mean, we can take a look at what Noria is using at the moment. Noria, oh, type L is infiltrate, like existential types, great feature, very required. Apart from that, I don't know what other features I'm really using. A bunch of the con stuff I'm using a little bit. Specialization I'm really excited for. Yeah, specialization is gonna be great. Apart from that, I'm not really using that many interestingly enough. But yeah, type L is infiltrate. It's gonna be fantastic. What's your programming beverage? Minus tea. I don't drink coffee. I never liked the taste. But tea, mm, like a Twinning's Earl Grey. It's my go-to always. And I drink a lot of tea. Like I drink tea. I drink probably four or five cups of tea a day. I really, speaking of, I have tea right here, actually. That I have him drinking. I made it, I'm at the end, it's true. I got to the bottom of the questions. Nice. Oh, all right, I think that's about right. So that's like two hours of questions. It's funny because I was not expecting this to be this long. I sort of figured I'd just like spin it up, answer some questions and I'd be done. But clearly there were a lot of questions, which is fun. It seems like maybe this was useful as well. If there are, if people find this useful, then like, let me know, like tweet at me or something if you found this stream useful. And I might do some more in the future. Nice, thanks for showing up. Thanks for asking questions. This obviously would not work without all of you. And hopefully we'll do it some other time. Bye everyone, have a great rest of your weekend.