Episode 72 - August 9, 2021

Our Rusty Back End with Matan Kushner

00:00 / 00:00

Shownotes

Fill out our listener survey here!

Our discussion today is focused on Rust and why you may want to explore this popular language. Here to help us get into the subject is Matan Kushner, who is a developer at CodeSandbox, while also working on AniList and Starship! We start off our chat taking a survey of the panel's back-end experience before Matan broaches the topic of Rust and why he initially dedicated the time to learn it. Our guest explains why he values the language and the fail-safe type features of the strict compiler, which allow a lot more peace of mind around shipping. We also get to hear from Matan about the best ways to go about learning Rust and the benefits of having a singular source of knowledge to this end. We also find time to discuss the community attached to Rust, how Matan uses it in his different endeavors, and how the language can be used for in-browser development. We round out the episode with some colorful picks that might excite you, so for all this and a whole lot more fun conversation, join us on Enjoy the Vue!

Key Points From This Episode:

  • Matan and the rest of the panel's experience with back-end work. 
  • The basics of Rust and what differentiates it from older, similar languages. 
  • Reasons that Matan pursued learning Rust, despite the intensive time investment. 
  • How the strict compiler in Rust helps developers root out errors and ship better code. 
  • The helpful open-source documentation for Rust that is available.
  • Rust's fast rise in popularity and Matan's thoughts on the main reasons for this. 
  • How Vue and in-browser developers can make use of Rust with the help of WebAssembly. 
  • Matan shares his experiences of the welcoming and helpful Rust community.
  • The possible inspiration behind the mysterious naming of Rust. 
  • Matan's recommendation for getting started in Rust and making it through 'The Rust Book'. 
  • Examples of good typical first projects in Rust! 
  • Where to find Matan online and the array of exciting projects he is currently a part of.
  • This weeks' picks; TV shows, Planet Scale, the Otamatone, and opinions on AirPods.

Tweetables:

“I particularly have been working a lot on back-end, though my history lies primarily with front-end. This is my first full-time job, where back-end was a real responsibility.” — @matchai [0:03:05]

“Rust makes it, so that you can have both very, very fast, low-level processing, while having the guarantees that exist in higher level languages, like JavaScript.” — @matchai [0:05:09]

“I personally picked up Rust in an effort to build Starship, which is, it's an open source project of mine.” — @matchai [0:07:32]

“It is a very strict language, but in all the best ways. You can't run into impossible states. You can't run into unaccounted errors. Rust will tell you at compile time, if any possible error state can happen, which makes you very confident in the code you ship.” — @matchai [0:09:45]

Links Mentioned in Today’s Episode:

Transcript

[INTRO] 

[00:00:10] AR: Hey, everybody. Welcome to Enjoy the Vue. I'm Alex. Today on our panel, we have Ari.

[00:00:17] AC: Hello.

[00:00:18] AR: And Tessa.

[00:00:20] T: Wah. Hi. It will make sense later.

[00:00:28] AR: Our special guest for this episode is Matan Kushner. Matan, you're a full stack dev at CodeSandbox and Lead Maintainer for Starship.

[00:00:40] MK: That's right. Howdy folks.

[00:00:42] AR: Yay, welcome. I'm going to ask a question, because I need information about this. Tessa, Ari, Matan, do you all work on – I know that we're a front-end show about Vue, but do you work on back-end stuff at all?

[00:01:00] T: Sure. I mean, the only time that I get to work on back-end is my friend, Vikas and I have been trying to go through the rustlings, like basics of Rust tutorial. That's the only time I touched it. CSS all the way, baby.

[00:01:16] AR: Yeah. If they had server-side CSS, then I'd be down for it. Ari, how about you?

[00:01:21] AC: The boot camp I went to was full stack. I did do a fair amount of back-end work then. Only in the last month have I gotten back into that as part of my job. Node with AWS lambdas.

[00:01:39] AR: Cool.

[00:01:40] T: Wait, before we continue, I just need to point out that server-side CSS would be awful, because the acronym would be SS CSS. Then people would be like, “Is it SS CSS, or SCSS?” We constantly get confused and be a big mess. Let's cancel that one.

[00:01:54] AR: That is a valid point. That it's a very valid point.

[00:01:58] T: Exactly.

[00:01:59] AR: I know that I've done back-end stuff. It's not my favorite, though. I'm much more prefer the front-end. I've mostly only worked in scripting languages, using Python, PHP, Node. Yeah, I have experience with back-end stuff. How about you Matan, do you have – Are you front-end? Are you back-end? What's your deal?

[00:02:23] T: You literally introduced him as a full stack developer.

[00:02:30] MK: These days at CodeSandbox, I'm a bit of a generalist. We're a small enough team that everyone does a bit of everything. I particularly have been working a lot on back-end, though my history lies primarily with front-end. This, I'd say is my first full-time job, where back-end was a real responsibility. Yeah. I guess, that brings us to Rust. My experience in Rust is what got me noticed for CodeSandbox, what got me noticed for this full stack role that I'm doing today.

[00:03:05] AR: Okay, I have a question. What’s Rust?

[00:03:08] MK: Rust is a systems programming language, like C or C++. Unlike those relics of programming, Rust is a very new modern language, and is heavily inspired by practices in other modern languages. It takes a lot of inspiration from JavaScript, and it gives you a lot of guarantees that older, lower level languages don't give you.

[00:03:35] AR: What does that mean, though? Are we doing prototypical inheritance at a very low level? Or are we like, what's going on? What is Rust? How does it learn from the past and also do cool new things?

[00:03:50] MK: That's a really good question. To get into that, first, talking about JavaScript, JavaScript is a very high-level language. It's memory safe, which means that when creating a variable, you don't have to allocate memory and then deallocate memory when you're done with it. These things are all automatic. They're magical in JavaScript. As long as a variable exists, it'll always have a value.

Whereas, in some older, lower level languages, like in C or C++, if a variable doesn't have a value, and you access it, everything will crash. It'll halt execution. That is typically seen as a lower level language that is not memory safe. In the same way, that's an impossible outcome in JavaScript, it's also an impossible outcome in Rust. Rust makes it, so that you can have both very, very fast, low-level processing, while having the guarantees that exist in higher level languages, like JavaScript.

The only compromise, so to speak, is learning curve. It's a tough language to get into. Once you get over that hurdle, having both a high-level language and a low-level language under your belt can make you a very well-rounded developer. You can pick the right tool for the job.

[00:05:06] T: I mean, I'm already very well-rounded, because I like food. I want to hear more about the safety bit when we get more into Rust, because I feel every time I try to do something, it's like, oh, you already used that variable. Now that’s gone. Or, you need to borrow here. I'm like, I don't get it. I always try to look into it and give me this metaphor with plastic wrapping yogurt. Frozen yogurt.

[00:05:31] AR: As you do, right?

[00:05:32] T: Yeah, it was as helpful as it sounds.

[00:05:35] AR: Yeah. You plastic wrap some frozen yogurt, and then you pass it over to somebody else, then they unwrap it and do things with it. Then, they give you a whole new container. It's a thing.

[00:05:47] T: Now that all of us are experts in Rust –

[00:05:50] AR: Yes. Ari is giving me a very confused expression.

[00:05:59] AC: Well, apparently, Tessa shared my confusion.

[00:06:02] AR: Oh, okay. I can't put an eyeball on both of you all at the same time.

[00:06:10] AC: Well, she brought it up, I think, to illustrate that your analogy sucked.

[00:06:16] AR: Look, it's very simple. First, you build a yogurt shop and then –

[00:06:26] AC: No. Okay. Moving on from yogurt.

[00:06:31] AR: What attracted you then? You said that you did front-end stuff before. What attracted you to Rust? I need to get that it's very familiar, you're saying, and all that stuff. Why the move from front-end to back-end, I guess?

[00:06:48] MK: That's a good question. A lot of people need a good reason to get into a language, like Rust, especially since it's really tough to get into, without a good project to drive you. I personally picked up Rust in an effort to build Starship, which is, it's an open source project of mine. It is a cross-platform, cross-shell prompt. What that means is it makes your shell prompt really pretty. It gives you context when you're in a project directory to let you know what you're working with.

Let's say, you enter the directory of a node project. Oftentimes, shell prompts, or shell themes will say like, “What git branch you're on?” Or whether your git branch is dirty, what the status of your git branch is. Starship also will say, what node runtime version are you going to be running your JavaScript project in? The thing that'll influence how you work with the project, or maybe it'll tell you when your battery is low, the thing that you want to know right away as you're working, and not find out when your computer shuts off between saves.

In building a project like Starship, I originally first tried it with node, because JavaScript at the time was my language of choice. Node, despite being a super flexible, lovely language to work with, doesn't fit every task perfectly. For a tool that's running every time you hit enter in your shell, cold start times are very important. Node as an interpreted language takes a long time to just get going.

What would take in the modern version of Rust, public taking the modern version of Starship 5 milliseconds, in node will take 500 milliseconds. That's noticeable if it happens every time you hit enter in your shell. This is a very performance-critical tool. After hearing that Rust was the most loved language for the fifth year in the row in the 2020 StackOverflow developer survey, I figured, what makes a low-level programming language so interesting to people? I went to check it out. It turns out, Rust, once you get over that hurdle, is a delight to use. I find, it makes you a much better programmer overall.

It is a very strict language, but in all the best ways. You can't run into impossible states. You can't run into unaccounted errors. Rust will tell you at compile time, if any possible error state can happen, which makes you very confident in the code you ship.

[00:09:33] AC: Wait, what do you mean by every possible error state?

[00:09:36] AR: I mean, I'm pretty talented at throwing some really complex error states. I would just like to say. You haven't seen my code.

[00:09:46] MK: That's a good question. In JavaScript, when you throw an error, it is the responsibility of the code around it, to catch it. If you don't catch it, it bubbles up and explodes everything. Your running program halts execution and you're done for. You need to start over. Whereas in Rust, before, it's even possible to throw an error that's unhandled. The compiler won't even let you progress. The compiler is incredibly strict. Like when you turn on strict mode in TypeScript for the first time, if you've had that experience. TypeScript is yelling at you everywhere. Everything you've done is horrible and it's mad at you. You regret ever touching TypeScript.

[00:10:25] AR: Yeah, that's incredibly accurate. I just turn it back off again, and just don't use it.

[00:10:32] T: Sounds good to me.

[00:10:33] MK: Yeah. Rust does that from day one. You need to account for any possible error, before Rust is willing to compile. That is maybe frustrating if you're trying to iterate quickly. But boy, is a confidence inspiring to know that any possible error state has already been handled. That is a confidence that, unfortunately, can't always have in the world of JavaScript. that's what's so incredible about Rust, when you're coming from a background in JavaScript development.

[00:11:02] AC: Sometimes I exploit errors. You're telling me, I can't do that anymore? Jeez.

[00:11:08] MK: I'm so sorry.

[00:11:14] T: You keep talking about this hump that you have to get over when you're learning Rust. How did you learn Rust? How did you get over that hump? How can we be sure that you actually enjoy Rust, and you're not just rationing, since yourself that you enjoy it, because there was such a big hump?

[00:11:29] AC: Stockholm Syndrome, code.

[00:11:34] AR: Yeah. So far, you've told me, it's frustrating. It's like TypeScript and it'll yell at you a lot. You're not exactly selling it to me quite yet. Tell me. Tell me what –

[00:11:44] T: Unlike the plastic-wrapped frozen yogurt.

[00:11:46] AR: I'm just saying, frozen yogurt is delicious. Who doesn't want that?

[00:11:50] MK: Without getting too deep into the reads, explaining the nuances of Rust and writing Rust, the way that Rust provides these guarantees that exist in JavaScript about memory safety, it has the concept of an ownership model, where a variable at any time is owned by the function it's in. It can never be in multiple functions at the same time. That's a new way of thinking when it comes to programming. It's a mental model, you haven't had to have in other languages. That gives you the degree of memory safety that you have in JavaScript without garbage collection.

If you've ever had to write really performance-intensive code in JavaScript, things that run over a long period of time, you'll run into the hurdle of garbage collection, which is the notion of JavaScript at a set interval, will check to see if you have too many unused variables, and will clear them all. That halts the execution of your program, and makes it so that things that are potentially performance sensitive, take a long time. They have to pause every now and then to clear the garbage.

Rust doesn't do that. It has all the benefits of a low-level language when it comes to memory management, without the possible foot guns of null pointers and all that. Stuff we don't have to get into. The design decisions that have plagued C developers forever, which lead to errors that can’t happen in JavaScript.

[00:13:27] AR: You're talking about memory management and an ownership model for memory. If I have a Vue component, and I have a button on the page that can update account, then it also calls an API thing and updates the count on the API, and then updates the counter based on the response from the API, and I start clicking it a bunch of times, and then it gets completely out of sequence. Is it like that? Is that what we're talking about? It doesn't allow that?

[00:14:07] MK: That's a good analog, I'd say. Yeah. In Rust, a variable can only exist in one place at a time. It can't have it be updated by various different functions. That property is what makes it so that memory is allocated when the variable is created, and deallocated when it leaves scope on its own. Because Rust knows at any given moment, where a variable is and who depends on it.

[00:14:33] T: That's a lot of words. I don't understand how you got to the state where you could wrap your mind around all of it. How did you figure all this stuff out?

[00:14:41] MK: Well, Rust has some really incredible documentation. The Rust team themselves wrote, what is known as The Rust Book. It is the de facto guide to get into Rust and to learn it. Whereas, in most other languages, there are a wide variety of possible ways to get introduced to the language. In Rust, having the one true path, the one yellow brick road, the yellow brick road that any Rust developer walks down to learn the language in the same way, it gives that book a lot of scrutiny, a lot of contributors. It's an open source resource. Everyone who has learned from it, or has tried learning from it contributes to it to help improve the one true guide, the one true introduction to Rust.

[00:15:28] T: It sounds like, what you're saying is you can trust the Rust book.

[00:15:33] AC: Wow. I was going to make a terrible joke about the yellow brick road leading to the Rust City, instead of the Emerald City, but your joke beat mine.

[00:15:45] T: A race to the bottom.

[00:15:49] AC: That is what we're good at here.

[00:15:52] T: I feel like, Rust is despite being relatively new, it was made around what, 2012-2013. I feel like it's picked up speed relatively quickly. I don't know. I don't know generally how long it takes for new language to catch on. I feel like it's exponentially, or logarithmically, or whatever, gaining popularity. Why is that?

[00:16:13] MK: It's getting immensely popular. I think, in part due to it tackling a lot of the frustrations that have existed in lower level language to date. People are able to write lower level programs with a degree of confidence that they've never had before. In addition to that, Rust has a very modern toolchain, an incredible package manager, a rich ecosystem. It has a lot of the things that people love about JavaScript, but in a language closer to C, or C++. For instance, Rust has a built-in linter, a built-in formatter, test runner, benchmarking tool, mono repo support and documentation generator. These are all things that there's also the one true way to do things. You don't have to convince your team to use Prettier, like you do in JavaScript. In Rust, there is the Rust formatter. That's it.

[00:17:04] T: Yeah. I mean, I don't know why you want to convince since used Prettier anyway. No, I’m kidding. Keep going.

[00:17:09] AR: Does Rust put a script tag at the top, or does it put the template tag at the top? Because that’s –

[00:17:20] AC: We talk about the real issues here.

[00:17:21] AR: Yeah, we do.

[00:17:24] T: Yeah. Like, what's better? Rust documentation, or Vue document – No, I'm kidding. You don’t have to answer that.

[00:17:29] AC: I mean, I had the thought, Tessa. I'm so glad you said something.

[00:17:34] MK: It's really hard to beat Vue documentation. Vue developers have it good. That's for sure. Especially when you look at the stale React docs that are getting older and older with time.

[00:17:48] AC: They're getting updated.

[00:17:48] T: It’s also, they're working on it. Yeah.

[00:17:50] AR: Yeah. I think, Rachel is working on it.

[00:17:53] MK: We’ve had books for two years now. The getting started guide doesn’t mention them.

[00:18:00] AC: It takes time to overhaul crap. Bless Rachel Nabors for doing so.

[00:18:08] AR: Yes. She has a monumental task ahead of her and it is hopefully, going to be extremely good.

[MESSAGE]

[00:18:16] ANNOUNCER: Hey, are you enjoying the show? If you want to enjoy the show more, give us feedback, like who do you want to hear from more? What topics do you want to hear more about? Fill out the form in the show notes. It’s like a little survey, like asking you a few questions. You can tell us what you think. Let’s do it. 

[EPISODE CONTINUED]

[00:18:37] AR: All right, so we're a bunch of Vue developers here, mostly, kind of. Yeah.

[00:18:47] T: Are you sure? You don't sound sure.

[00:18:48] AC: What’s that even mean, Alex?

[00:18:50] AR: I don’t know. Anyway, so we're working in the browser primarily. Why would Rust be of interest to me as an in-browser developer? What can I do with this? I'm not planning on writing low-level command line server thingies anytime soon. Why would I want to use Rust?

[00:19:14] MK: That's a good question. In the last few years, WebAssembly has been shipped to all major browsers. What assembly lets you do is run compiled languages, like Rust, directly in the browser, alongside your JavaScript code. For those who aren't keeping up with WebAssembly, WebAssembly is a binary instruction format, which can be executed directly by the browser. As long as your compiled language of choice supports WebAssembly as an output, you can use it just as you can any other JavaScript function directly in the code.

That means, you can have Vue method calls that call to WebAssembly. You can have React, if you decide to go that way. The idea is that it can be called just like any typical vanilla JavaScript function. As long as you can import the WebAssembly, you can treat it like any other function. A good opportunity to use Rust in a front-end application would be for overly performance-critical, or safety-critical work.

Performance critical being things that might typically take a long time, a lot of data crunching, if you want to do fancy stuff, like client side image compression, or resizing, so you can save the bandwidth when you send it to the server. That's a really cool opportunity to just sneak in some Rust, sneak in some WebAssembly. Or safety critical, being the really core critical portion of your front-end code base, that you need to be incredibly confident that it's working perfectly. Having Rust be involved in handling that logic will make it so that you don't have to worry about that anymore, and you will know that it'll always be incredibly fast.

[00:21:08] T: I don't know if switching languages is enough to give me confidence that my code is working perfectly.

[00:21:15] AR: What you're saying is, is that I could build a web presence, like a web store for a frozen yogurt shop, and I could have –

[00:21:29] MK: It will be built in Rust.

[00:21:31] AR: It'll be built in Rust.

[00:21:32] AC: Nobody wants a fuzzy frozen yogurt? I don't know. I mean, if there's bacon ice cream, I feel like somebody would go for it.

[00:21:43] AR: Yes. Bacon ice cream. Kwik Trip used to have maple bacon quick shakes, and it is – they were the most decadent, glorious thing. They would just pour maple syrup and four slices of bacon and just mix it right in front of you. They don't make them anymore, something about health concerns and people having heart attacks or something. I don't know. They were so good.

[00:22:09] T: Yeah. Heart attacks when they see that monstrosity. I’m just thinking about what happens when fat cools down.

[00:22:15] MK: Oh, my goodness.

[00:22:16] AC: Stop.

[00:22:20] MK: It’s like I'm going to hold off on ice cream for a good long time.

[00:22:26] AC: You ruined my life, Alex. Thanks.

[00:22:28] AR: You're welcome.

[00:22:31] T: I want to hear a bit more about the Rust community, because I feel like, I hear a lot of vaguely good messages about the community and how inclusive it is. Also, some vague connection to furries, but I'm not sure what the deal is with either of those things. Is that not a thing?

[00:22:49] MK: I don't know that I can answer the bit about furries. I'm not going to say you’re wrong, but I am going to say, I have no idea how that came to be. The community is incredibly welcoming, especially since for a lot of developers, Rust is their first foray into low-level programming. There's a lot of people who, there are a lot of incredible resources for introducing programmers to the world of low-level programming.

The ecosystem is very rich with an abundance of really powerful libraries, like JavaScript, how if you have a problem, you can usually, very confidently just search through NPM for something that fits your need. Rust is also there. They call it the crates registry. Despite it being a very young language, it has a flourishing community of resources and libraries, and a lot of people who are willing to take the time to help you get onboarded. Particularly the Rust Discord community, the Rust Subreddit, a lot of people who are looking to guide beginners to Rust and to low-level programming in general.

[00:24:04] T: If it's such a young language, why is it called Rust? That's not something that I associate with newness.

[00:24:11] MK: Oh, that's a good question. I've never thought to think about that. I've never looked into it. Does anyone else know why it's called Rust?

[00:24:21] T: I have no clue. I feel like in the Vue community, naming is very important. We've asked a lot of people about the history behind the names of different tools.

[00:24:31] AR: I’m going to do a quick Google search. I'm curious.

[00:24:35] T: [Inaudible 00:26:12] is telling me about the last name, Rust, which is not helpful.

[00:24:39] AR: According to the Wikipedia article, the project was possibly named after the Rust family of fungi. Rusts are plant diseases caused by pathogenic fungi.

[00:24:52] AC: That seems like a really poor choice.

[00:24:57] AR: I guess –

[00:24:58] T: Wait, wait, wait. Maybe the creator picked it, because they're a fun guy.

[00:25:04] AC: Wow.

[00:25:06] AR: Oh, I just figured that they were trying to go viral.

[00:25:12] AC: I don't know you people.

[00:25:17] T: Yeah, interesting. I wonder what the story is.

[00:25:19] AC: It also says that it's a substring of Robust, which I think that we should go with that one, because it's a lot less gross.

[00:25:28] T: Wait. It actually says that, because I was jokingly thinking in my head that the title of this episode could be "Is Rust Short for Robust? with Matan Kushner".

[00:25:37] AC: Yes. You are clearly psychic.

[00:25:43] MK: I'm also reading here that Rust as the name reflects, they've tried hard to avoid incorporating new technology into it, by going out of their way to avoid novelty. Yeah, they're able to use old technology to solve long-standing problems. I don't know about that. I'm not able to connect that there.

[00:26:02] T: It sounds like there's a lot of novelty in the name, though. Somebody in this Reddit post says, “It's funny how [inaudible] says right off the bat that he has no idea and just keeps making up different reasons every time. Yeah, when he comes up with a fungus, he manages to give us a lot of people that that is the one true origin of the name.” I guess, we'll never know.

[00:26:18] MK: I guess, we'll never know.

[00:26:21] AR: Maybe he was making a language and had a concept for how it should work. And somebody was like, “That is very interrusting.”

[00:26:32] AC: Oh, my God.

[00:26:34] T: Stop. Ari is getting f-rustrated.

[00:26:38] AC: Oh, no. Walked right into it.

[00:26:43] MK: Do you do this every time?

[00:26:43] AC: You obviously heard the door creaking from the rust on the hinges.

[00:26:49] T: Have you not listened to our show? This is every episode.

[00:26:52] MK: I listen to it on triple speed. Some of the jokes just go over my head.

[00:26:57] AC: Well then, you're not fully enjoying us. Double speed.

[00:27:00] T: Yeah. Sounds like your sense of humor is a little rusty.

[00:27:04] AC: Wait, the real question is, are you using the browser? Because if so, I'm just going to disable 3x speed.

[00:27:14] MK: I'm using my podcast app, but for you guys –

[00:27:18] T: Oh, the podcatcher of choice.

[00:27:20] MK: The podcatcher of choice.

[00:27:22] T: I still don’t get that.

[00:27:28] MK: I'll change this podcast to 2x speed, just for you.

[00:27:31] AC: I think, we’ll be a lot funnier if you do. I mean, really, that's mostly what we have going for us.

[00:27:38] MK: I'll let you know. I'll report back.

[00:27:41] T: Sounds good. If someone wanted to get started on Rust, how would you recommend that they go about doing that?

[00:27:49] AC: The yellow brick road to Rust city.

[00:27:51] MK: That's right. Exactly.

[00:27:55] T: Get in, we're going rustling.

[00:27:57] AC: No.

[00:28:02] MK: If you just Google 'the Rust book', the first result is almost definitely going to be the recommended approach. It is a little bit of a long book. Boy, is it a cool raid. It took me about three months to really start feeling confident in the Rust I was writing. My first Rust project, Starship is still going. It's still piling on top of that ancient code I wrote when first getting going with Rust. Even beginner rust code is pretty sturdy code. The same can’t be said for most other languages, I'd say.

[00:28:35] AC: I would like to point out that when you Google the Rust book, under people also ask, the first result is why Rust is bad?

[00:28:48] T: Well, let’s talk about that. Why is it bad?

[00:28:51] AC: Really? Really try to push GoLang, apparently.

[00:28:57] MK: Dirty tricks by Go developers. I see.

[00:29:01] T: Is anyone go? Let's go.

[00:29:06] AR: Now, I will say this, that the answer to why Rust is bad, and I will read this to you now, is Rust basically, dissolves away metal. In a vehicle, this can be a major problem, because the structure of vehicles made almost entirely from metal. When the metal dissolves, connections can start going bad. The car’s safety can also be compromised, because the steel that creates crumple zones will dissolve. That is why rust is bad, because it dissolves metal.

[00:29:34] T: They should have plastic wrap the metal.

[00:29:37] MK: Thinking about it now, I probably shouldn't be using Rust on a starship. Time to rewrite it in Go? What are you doing today?

[00:29:50] AC: Go really seems to go with the Starship.

[00:29:59] AR: My maintainers won't be happy to hear this, but it only makes sense.

[00:30:04] AC: I mean, if the puns dictate.

[00:30:08] T: And they do. I feel like, the go-to starter project for frameworks is –

[00:30:16] AC: I see what you did there.

[00:30:20] T: - making a to-do list, which I don't know why that's the thing. Is there a prototypical first project for Rust people?

[00:30:29] AR: Besides implementing your own universal command line.

[00:30:33] T: You haven't done that in your sleep? Who among us?

[00:30:38] MK: Good first Rust project. I feel like, I've seen a lot of people create a basic text editor. I thought that was a cool one. That's more command line. When it comes to introducing WebAssembly to the front end, I think a good starting place might be yeah, trying to rewrite some of your really core critical application code to see how you can make it really, really safe.

Or using WebAssembly to reuse libraries written in other languages, like Rust. If you find an image compression library, an image resizing library, a video trimming library and you need to do any of that from your front-end, compiling a Rust project to WebAssembly and throwing in a JavaScript function could be a really cool way to introduce it to your code base.

[00:31:25] T: Have you combined rust with Vue?

[00:31:28] MK: I've toyed around, but I haven't had the opportunity to throw it into a production app yet. A very good example of a project that's currently using Rust on the front-end is 1Password. Their browser extension shares the same Rust password generation and cryptography as their desktop client on Windows and Mac, and their mobile application. Those all share the same common Rust codebase for reuse everywhere.

[00:32:03] AC: I prefer to just suffer with LastPass. I do mean suffer.

[00:32:07] T: Yeah. I’m not sure if Rust is the best choice for locks, but you can do, I guess.

[00:32:16] AR: Excellent. With that, Matan, where can we find you on the internet?

[00:32:23] MK: Well, you can find me on GitHub, or Twitter by my internet handle, @matchai.

[00:32:32] T: Yeah. Is this a multi-language pun?

[00:32:35] MK: No. It's actually a mix of my first and middle name. Matan and my middle name is Chai.

[00:32:44] AC: That's an awesome middle name.

[00:32:46] MK: Thank you. Yeah. Also, if you're curious to try out Starship, you can head over to github/starship/starship. I'm also a developer on the social networking site for fans of anime and manga called Anilist, which is using Vue on the front-end. Yeah, that's my Internet presence these days.

[00:33:09] AR: Awesome. Well, now it is time to move on to this week's picks. Ari, do you want to go first?

[00:33:18] AC: Sure, I can go first. My pick this week is a TV show that I managed to binge all two seasons over the weekend. It is called Feel Good. It is written actually, and created by stand-up comic Mae Martin. Touches on a lot of themes that I think, those of us in the millennial generation have grappled with at one point, or another. Touches on themes of exploring gender identity, sexual identity, trauma, addiction, but all while being funny. I mean, you can't go wrong there. Highly recommend Feel Good. Also, Lisa Kudrow is in it, and she's amazing in everything she’s in, obviously.

[00:34:02] AR: Awesome. Tessa, do you have any picks for us this week?

[00:34:06] T: I just finished one K-drama and started watching two more. The first one is Law School. I'm told it's important to distinguish that as the drama, because apparently, somebody tweeted, “I finished Law School.” Then somebody replied, “Congratulations.” They were like, “The show.” If you like shows where there's a mystery that spans the course of the series, and you get a little bit more information each episode, then you might find that show interesting.

Then the other two, I watched, their English titles are Mad For Each Other and The Strongest Delivery Man. Mad For Each Other, similar to I want to say, Cassidy recommended ET one class when she was on here, because she said that they explore different kinds of themes and characters that aren't usually explored on K-dramas. I think, this fits in that category. They talk a lot about mental health, because it's two characters that realize they see the same psychiatrist.  It's just a very funny show.

Then the other one that I am watching right now is called The Strongest Delivery Man in English. It is like, wow. If you've ever wanted a show that spans multiple genres, and just switches them up every 10 seconds, and that sounds thrilling, this is the show for you. It's about delivery people in Korea, in Seoul, specifically. It's ridiculous. Those are my picks. Oh, and one more thing. Both the last two dramas seem to have side stories about cross-dressing. So far, the first one, Mad For You seems to do a much better job of presenting it in a destigmatizing and accepting way, than the other show. That is something to be aware of, if you wanted to check out those shows. That's my picks.

[00:35:55] AR: Awesome. Matan, do you have any picks for us this week?

[00:36:00] MK: Yeah. One is Planet Scale. If you haven't had the chance to look into it, it's admittedly a little more of a back-endy thing. It is a new service made by some folks from GitHub, who have left to start this year, Planet Scale. It's a fully-managed relational database as a service. What's exciting here is that it is using the serverless pay per use pricing model.

Usually, you either get NoSQL with serverless pricing, or you have to pay for a server instance that is fixed size for a relational database. This is, I think, pretty groundbreaking and something I've been waiting for forever, which is the mix of both; serverless pricing of a relational database. It has a super generous free tier, so I'm going to go try it out with my pet projects, because it seems like a lot of fun.

[00:36:57] T: Rust and now scale.

[00:37:00] MK: Rust can now scale.

[00:37:01] T: No, Rust and now scale, but yeah.

[00:37:03] MK: Ah, yes. Yeah, that's right.

[00:37:06] AR: Does Planet Scale use Starship.

[00:37:10] MK: Does Planet Scale you –

[00:37:12] AR: Because it's the Starship and it's a planet, so there you have it.

[00:37:17] T: Thank you for connecting it. Now I get the joke.

[00:37:19] AR: Yep. Sorry.

[00:37:20] AC: You beat me to it, Alex. Going to take this Starship over to Planet Scale.

[00:37:28] MK: I've got a theme going on. I'm looking forward to the acquisition. We’re not acquiring them. That I can tell you. My other pick is a game I've been playing for the last few weeks. It is a visual novel, if that's your jam. It's called The House in Fata Morgana. It is a gothic suspense visual novel. It's dark. It touches on human nature and insanity. It has absolutely gorgeous illustrations und design. If you're looking for something that's gothic fantasy/, yeah, just a touching, tragic journey, this is a really good one and it's on every single platform. That's The House in Fata Morgana.

[00:38:16] AC: Cool.

[00:38:17] T: Well, before we move on, you're the second guest in a row that we've had that's wearing AirPods Max hasn't had as a pick. I'm just curious, how do you like them?

[00:38:27] MK: They are very comfortable and the noise cancellation is great, but they are heavy and they're cumbersome to travel with. They aren't lossless audio, which is ironic, because Apple Music just released lossless audio support. None of their headphones support it.

[00:38:53] T: I’m assuming you mean, even without the bluetooth, right? It's not lossless if you connect the wire.

[00:38:58] MK: Exactly. Yeah. Even with the wire, it's not lossless.

[00:39:01] T: Got you.

[00:39:03] MK: But they're incredibly comfortable.

[00:39:04] T: They're not heavy on your head, just in your bag.

[00:39:07] MK: They're heavy on your head, but I guess you get used to that.

[00:39:09] AC: See, now I don't trust heavy, because my whole thing is headphones tend to hurt the top of my head. I feel like being heavy, that's exactly how that works.

[00:39:18] T: Yeah, I’m thinking of you in use of their heaviness.

[00:39:21] AC: I know. I was like, “Wait. What?”

[00:39:24] MK: Yeah. They have really comfortable ear cups. They distribute the weight very nicely across the top of your head, but they're still heavier than any other headphones on the market. The noise canceling is incredible, though. If you're a coffee shop coder, this might really be worth considering.

[00:39:44] AC: Dropping a grand on headphones.

[00:39:47] T: I thought people went to the coffee shop for the noise. That's why do we have all those websites for coffee shop noise. Oh, play them in your headphone while having the noise cancelling on, some block the actual coffee shop.

[00:40:02] AC: So meta.

[00:40:03] AR: This coffee shop doesn't have quite the right acoustical energy with what I’m wanting.

[00:40:07] T: Exactly. The sound design is just all off.

[00:40:11] AR: The ambience visually.

[00:40:16] MK: I'm looking for a balanced engineered coffee shop sound.

[00:40:21] T: Yeah. It would be bespoke delightful coffee shop sounds.

[00:40:25] AR: There's too much in the left ear. I need a little bit more in the right to balances out just right. Yeah, there we go. Right there.

[00:40:36] MK: I have to admit, that that – I've done that before. I've done the coffee shop audio in a coffee shop. When it's a little too quiet, you're like, it's you and someone else sitting at the tables and no one's ordering.

[00:40:47] AC: See, that sounds perfect to me.

[00:40:53] T: Are you using the case that it comes with it when traveling? Because it doesn't look like a great case?

[00:40:58] MK: No, I don’t. I have no idea where it is.

[00:40:59] T: Those expensive headphones.

[00:41:03] MK: I just turn the cup, so that it can lie flat in my case. I just slide it into my bag and hope for the best.

[00:41:13] AR: Living life on the edge there. All right, well, my pick this week is something I got as a gift a while ago from my mother. It is called a – I'm going to butcher this. Otamatone. It is delightful. They are these cute little face music devices. They sound amazing, too. It's great.

[00:41:43] T: Okay. When are you going to let us hear the instrument? Stop making weird noises until then.

[00:41:51] MK: I didn't know you were a singer, Alex.

[00:41:52] AR: Yeah, I know. It was amazing. That is my singing voice. Yeah. No. I love this thing. It is ridiculous and fantastic. Maybe I will make some new theme music for the podcast with this. How about that? That'll be the –

[00:42:11] T: Do you have the normal Otamatone?

[00:42:14] AR: No. I have the Kirby one, specifically.

[00:42:17] T: It's extra-large.

[00:42:19] AR: It's extra-large, and it has a Kirby face on it. It doesn't suck anything in, but it's pretty great.

[00:42:28] T: It's weird, yet loving musical toy.

[00:42:31] AR: Yes. That is my pick for this week.

[00:42:36] MK: Are you going to play us out with it?

[00:42:38] T: Oh, my God.

[00:42:41] AR: That's all for this week's episode. If you aren't following us on Twitter, go ahead and head on over and find us at @enjoythevuecast. Also, be sure to subscribe to the show in a podcast app.

[00:42:56] AC: We won.

[00:42:59] AR: If you have time, open it up, leave a review. The reviews really help us out a lot. Finally, remember that the first rule of Vue Club is you have to tell at least five, or six colleagues about Vue Club. 

Thanks for listening. Until next time, Enjoy the Vue.

Now I have to figure out what are – I have to remember what are podcast end.

[00:43:29] T: It's doo, doo, doo, doo, doo, doo, doo, doo, doo, doo, doo, doo, doo.

[00:43:34] AR: Yeah. It’s like —

[00:43:45] T: Perfect.

[END]