{
"$type": "site.standard.document",
"canonicalUrl": "https://devtools.fm/episode/43",
"description": "This week we're joined by Henry Zhu, the current maintainer of Babel. We talk about the his history in OOS, the challenges of maintaining an open source project, and the future of OSS.",
"path": "/episode/43",
"publishedAt": "2022-11-10T00:00:00.000Z",
"site": "at://did:plc:tnliqml7jfchh6dltyi2senj/site.standard.publication/3mnv7bnfeyg2h",
"tags": "technology, javascript, babel, open source, community",
"textContent": "{/ TAB: SHOW NOTES /}\n\nThis week we're joined by Henry Zhu, the current maintainer of Babel.\nWe talk about the his history in OOS, the challenges of maintaining an open source project, and the future of OSS.\n\n- twitter\n- Website\n- GitHub\n- hopeinsource podcast\n\nJoin our patreon for the full episode.\n\n{/ LINKS /}\n\nTooltips\n\nWant to hear use talk about our tooltips?\nJoin our patreon!\n\nAndrew\n\n- https://github.com/gbj/leptos\n- https://github.com/CamHenlin/coprocessor.js\n- https://github.com/CamHenlin/MessagesForMacintosh\n\nJustin\n\n- https://alexanderobenauer.com/labnotes/000/\n- https://phiresky.github.io/blog/2021/hosting-sqlite-databases-on-github-pages/\n\nHenry\n\n- https://github.com/lucax88x/CodeAceJumper\n- Whisper\n - https://github.com/openai/whisper\n - https://github.com/ggerganov/whisper.cpp\n - https://github.com/tobiashuttinger/openai-whisper-realtime\n\n{/ TAB: SECTIONS /}\n\n[00:02:49] Getting Started in OSS\n[00:11:00] OSS Security\n[00:19:30] Going OSS Full Time\n[00:26:45] Burnout\n[00:35:44] Tinkering on Tools for Learning\n[00:41:15] Plugin Creativity\n[00:47:59] Future of OSS (Patreon Only)\n[00:54:57] Tooltips (Patreon Only)\n\n{/ TAB: TRANSCRIPT /}\n\nEpisode 43\n\nHenry: Would you rather like, you know, just go off quit, see if you could do it full time or maybe just go back to working just like everyone else, and then do it in your free time again.\n\nSo like, which one? To just for your own, like psychology. Right. And I guess for me, I ended up thinking like, okay, I want to just give it a shot, Like just see what happens if I just quit.\n\nAndrew: Remember the full episode is only available to our Patreon members.\n\nHello, welcome to the Dev tools FM podcast. This is podcast about developer tools and the people who make them. I'm Andrew, and this is my co-host. Justin\n\nJustin: Everyone. Uh, our guest tod ay is Henry Zhu. Uh, you might know Henry as a longtime maintainer and steward of the Babel Project. Uh, Henry. Welcome. That's so great to have you on the show. Uh, before we start, would you like to tell our listeners a little bit more about yourself?\n\nHenry: Um, yeah, I don't know what else to add. Um, I, yeah, I maintained babel, uh, for a long time now. I, I used to work at Adobe. I quit in like 2018 and I also started a podcast myself. Um, then it's called Hope Insource.\n\nYeah,\n\nAndrew: what's the podcast about?\n\nHenry: Yeah, good question. Um, it's a little bit different. Uh, you know, like, I guess this podcast is about developer tools and people. This is about, I guess, people and community and like maybe how it relates to faith in a way. Um, it doesn't have to be about faith or anything. I think it's just maybe emphasizing the people side of communities, so, Or maintainers actually that too, so, yeah.\n\nJustin: That's awesome. I, I was actually browsing through and, and looking at some of the episode descriptions and. You know, I think one of the things that we wanted to do with this podcast when we were starting it off is like, make sure that we emphasize the, the personal connection, the people behind the tools, you know, Uh, and, and I like, you know, just going through and reading some of the descriptions and how sort of even more human that, that your, your podcast is approaching some, you know, deeply personal stuff that I think is, is kind.\n\nHenry: Yeah, I got binto, um, philosophy again, I guess. So I've been talking to like professors or people in seminary. Um, yeah, so that's been fun or just like different, like I, I always think of the example of like, um, Steve Claman had like that post about open source as a gardener, and I was like, Oh, I should interview a gardener at some point.\n\nLike they're maintainers, they're actually maintainers too, and like we can learn a lot. So if you're not already a gardener, so.\n\nJustin: That's a fun idea.\n\n[00:02:49] Getting Started in OSS\n\nAndrew: You said you started, you were working at Adobe a few years ago. But in that time, I think you've been super heavily involved with open source. Like I've seen you everywhere on babel, saw you in the lerna repo a bit. I may have even seen you in the yarn repo. I, I don't know. Um, but how did you get involved with open source in all these different projects?\n\nHenry: Yeah. Um, I think I've said this before, but um, the summary is like I, um, I'm sorry, I'm from Georgia. Uh, after I graduated I was trying to get a job in California at the time cuz that's where everyone wanted to go. Didn't get into any of the tech companies. So I just found like a random job of the nowhere, um, in Georgia.\n\nAnd then, um, I met a coworker there that was sitting next to me and they were working on open source. Uh, his name's Jonathan Neil. He worked on some stuff like normalized css, uh, a bunch of CSFs still active now. And I was like, Oh, that's cool. I've never heard of open source before. Um, or at least thought that I could contribute to it.\n\nRight. I think at the time I was using like bootstrap for like random side projects and then I was like, Wow, I could actually, you know, participate in that. I thought that was cool. So he was like, Yeah, I just picked some random projects. So I was like, oh. At the time I was using Angular one and so I was like, Oh, I should try to contribute to that.\n\nBut I ended up, that was really hard to contribute to cuz it's a whole framework. It's like, and we all know it's really complicated, uh, especially at the first one. Right? Um, and so one of the issues on there just happened to be an issue about linting and you know, if you look at all the issues in a repo, especially something like a framework, they're probably really hard to understand cuz it's all about the intricacies of it.\n\nAnd this one was straight up just like somebody needs something, like someone needs to like fix our formatting so that um, you know, the spaces and you know, names, stuff like that can be changed. And this is before prettier, before like, um, I think even ES Lin, um, and. I started working on it, um, just fixing angular JS code and I ended up getting like top 50 contributors, some, something like that, something high just by changing these like random things, cuz they told me you have to make every change on a separate commit.\n\nSo I ended up with like 30 commits or something and I thought that was so cool at the time. Now I'm like, whatever. But, um, it, it made me feel like good. Um, but the problem is, uh, after I finished that I didn't know what to work on anymore cuz I don't get the framework. So I ended up working on the linter itself, like the JSCs, which is the thing I worked on.\n\nAnd then long story short, that led to eslint and then Babel eslint and then babel So like, somehow that, that one thing led me to somehow work on the babel even though I didn't know anything about linting so,\n\nJustin: It's transition to go from, you know, trying to find contribution. Moments inside of a preexisting project to being a core maintainer on a project. The pressure is different. Your relationship with the code is different, your relationship with the community. Um, can you talk a little bit about that transition for you?\n\nIt's like, uh, you know, how hard did you find it to go from just like contributing sometimes to like being a core maintainer. And was there anything like surprising that you learned along?\n\nHenry: Yeah.\n\nUm, that's the thing, like when I come up here, it'll make it sound like it just happened overnight. You know, it, there's a long time period for a lot of these things. Like, say, when I started working, um, at that company and then started in GSCs, I think it was like 20 15, 16, and I think it was only until like. Or it might have been before that actually, or I don't even know the timeline anymore, but you know, it, it was a long time from like making a pull request. Like even the first pull request I made to the linter was a table of contents. Um, literally just changing it to read me. And I think that's automatic now.\n\nSo like, that's funny. All these changes are things that GitHub does for you. Now, and um prettier does all the formatting for you. Um, but, but I guess I was a part of that movement of helping that exist in the future cuz I worked on a linter and the thing I cared about was auto fixing. Cuz I was like, I don't want, I just manually fix like hundreds of things, right?\n\nUm, so I want to figure out how do we automate that? And I think some, maybe some of those ideas led to what we have now, but I think that it took a really long time to build confidence on, you know, whether you think something's a good idea, you're, when you're beginning, you're. kinda, it depends on the person. You know, some people are kind of like, they almost demand to like, get their contribution in. But I feel like if you're the kind of person that is kind of maybe a little bit scared or fearful, I don't think that's bad in the sense of like, people will respect you for like, being courteous to the maintainer and then the way the repo works or the org like every, um, you know, repo or open source project has a different way of working, different culture, different ethos, whatever you wanna call it, different code of conduct, different, um, guides on how to do things, different, code review style, all that stuff.\n\nIt's like a company, right? Basically. And only difference is that at a company, in order to contribute, you have to apply, get the job, and then there's an onboarding process and they're supposed to, they're paid to help you do that. In open source anyone can show up all around the world at any point in time, and you just have to, like, the maintainer is like, how, how much responsibility do you have to like help these people?\n\nUm, do you feel like you wanna do that and some people don't even have open contribution? Um, yeah, I, uh, there's so much there.\n\nJustin: Yeah, there's like varying degrees of getting into, you know, going from like, I'm just opening up pull request, and it's getting merged to like, now I have commit access, or now I have like admin access or whatever.\n\nHenry: Yeah. Yeah. Um, so just going off of that, I think it's funny, the, the way I actually got my job at Adobe, and this is kind of mind blowing, just thinking about like, I was working and then they sent me an email, um, like, Hey, do you wanna work at Adobe in New York? I kind of didn't want to, but I was like, Oh, they're, they're, they found me through open source.\n\nThey hopefully care about opensource, so that's why I took the job. But two, the people that were the maintainers of that linter, I worked on JSCs, they worked at Adobe. So I got my job basically by working on that project. And they only gave me commit rights when basically the, my first day of joining the company.\n\nUm, even though I was obviously working on it for a long time. So I think that from the, from the maintain your perspective, like how much trust you wanna put in someone before you give someone commit rights. And this is a huge problem in terms of like, especially now you, everyone's been talking about security, uh, what's called supply chain attacks, stuff like that.\n\nI think giving someone commit right is not as bad anymore because you know, usually you publish separately, you know, like NPM and that has different permissions. So if they merge something that you didn't like, you can always revert it before the publish happens. I don't think you probably want to give someone NPM access to first, you know, moment.\n\nThey give you a pull request cuz that's where that stuff happens. Where they like, you know, they like, they don't even publish to GitHub. They just auto publish to NPM and then it has some like bad code or malicious code in there. And that has happened like many times. Um, and so there's a huge problem, and this is actually something that happened in Lerna.\n\nI think you already talked to Daniel a few episodes ago. Um, you know, I actually of quote unquote took over the lerna\n\nquote,\n\nIt's basically the same thing cuz the same person Sebastian made both. And I had to figure out how to transition that cuz like I was working on babel and lerna and we were using lerna in babel, you know, like all that stuff.\n\nAnd I was like, I don't want to maintain two things. I just, you know, we all have limits and finally I felt like I needed to step away from that. Uh, which is good cuz when you, um, start off on this stuff someone gives you like, commit rights, you're gonna feel this like obligation to help you start spending so much time and then you like lose all your free time.\n\nSo it's almost like that you work yourself to the point where you realize you ca actually physically can't do it anymore. So I was like, I need to find someone. Right. And I think with that one, um, you know, people showed up and they were like, contributing a lot and I was like, Oh, might well just give it to 'em.\n\n[00:11:00] OSS Security\n\nHenry: People do it all the time. We just give people access and eventually just like, okay, I just hope that they're good people and they're not gonna screw everything over. And sometime s it works out. Sometimes, you know, people put like, you know, bad stuff in their code. Um, really hard. And, and that's why with lerna, um, I didn't feel comfortable and I, uh, I, uh, to just give random people the commit because a lot, there's this huge issue with hundreds of comments in it.\n\nLike, Hey, why aren't we updating this? Um, well first I haven't looked at it in a long time. I don't wanna just give someone access. They didn't show that they did any work. Like there's all these people demanding like, Hey, I said I'm gonna work on, I'm committing to this project. You just say, I don't care if you work it at Amazon or whatever.\n\nLike, whatever, like our Google, that doesn't mean anything. Right? If you have shown us, like, what I would do is like e fork it, get people to use it, and you've been contributing, that at least shows that you care enough to like work on this. If you just said, I'm gonna work on it, what does that mean? How do I know you're not just doing this to like get clout or, or whatever.\n\nI don't know. So, so it, I guess it's like, it's really hard. And I guess for Daniel, he ended up going with a company and that makes sense that they're like, okay, they're committed. They're probably, I mean, they could totally do something bad too, but at least there's like a almost like, um, ski the game. Like if they do something bad, it looked bad for their company.\n\nSo yeah.\n\nAndrew: Yeah, it's, it's a hard problem because I remember one, one package where a guy literally did that. He forked it, he became an active maintainer, was like part of the team, and then the guy was like, Okay, you can have it. And then after that, he's like, started spreading malware. So it's like, , it's like, it's so hard to, to trust these random people.\n\nLike I, uh, I took over responsibility for a package called jimp and then like, I was, I worked on it. I refactored the whole thing. I was like intensely focused on it for months. And then I just stopped using it cause I didn't need to use it anymore. And now I'm the sole maintainer that will respond to issues.\n\nAnd now I have people that are like, Hey, can you get these things merged for me? And I'm like, I haven't looked at this code in years. Like the anxiety of me releasing a thing for a thing I don't use and then potentially breaking everybody is, is weighs heavily on me. So like this passing of stewardship of a project, it's a very hard problem.\n\nHenry: Yeah. Um, and, and I'll, I'll just just say that like I am a random person, you know, when I started, right. So like, why would they trust me either? So it's like, um, at some point you kind of have to take that leap, you know? I, I was gonna say, I don't know if people talk about this, but like, You know, various malicious companies or even countries, they could easily just like train some people up to go to a project work there even maybe for a whole year.\n\nYou know? And then, then that once that happens, they could do whatever they want and you can't stop that. And no one's gonna reasonably, like say, I trusted this personnel for a whole year and then suddenly they did that. It's not gonna be your fault cuz like, you know, you vetted them, right? You tried. Um, so that's really hard.\n\nAndrew: And it doesn't even have to be a big package like your username left pad. Someone could have came in and become a left pad contributor, and then the second someone steps away, that's where they start inserting their bad code. And like it's not even a hard problem to like become a contributor too, to\n\nHenry: Yeah. Um, and I don't think there's a easy way to deal with it. Like a hundred percent. They like, I think there are different companies that do security. They can analyze code. Oh, they used eval, or they added these random things, that's fine. But like in the end, You still need to trust people. Um, and that gets into like a lot of issues around like funding and who you should trust, whether they should, you should have this many dependencies to begin with, you know, like all these things.\n\nAndrew: Yeah, when I was a junior developer and I've heard for the first time that you should be auditing all your dependencies and like reading their code. I was like, How? How is that possible? You look at your node modules and there's thousands of packages in there. How are you possibly supposed to be able to go through those and be like, Yeah, those are good.\n\nHenry: yeah.\n\nJustin: It's not super, it's not really possible. And then the thing is, it's like, um, just going further than that, it's, it's a trust issue. It's a key trust issue, uh, and. You know, as we've said, there's only so much you can do to mitigate. I actually saw a package this week that was interesting, that was like, it hooks into like nodes actual like io native functions and will like let you know if certain packages are using that or whatever.\n\nYou can like restrict sort of runtime things and it's like a way to slightly mitigate, but you know, not completely. But, you know, just thinking about this a lot, so I've been using Deno a lot more recently and the Yeah, the thing is, is like having a good security model built into your platform is an important part of this overall story.\n\nIt doesn't, it doesn't, remove like supply chain attacks, right? Because it was like, you know, you could have somebody contributing for a year and they're like, great. And then you, they joined the team and then, then maybe they contribute for a while longer and then suddenly they. Off the rails and like chip malware and, and like, you can't, it's, it's hard to completely stop that.\n\nRight. But, uh, I do think as like platform creators, you have a, a responsibility to think about security a little bit, a little bit more, uh, top of mind. This reminds me of like, back in 2015, I was writing a GitHub notifications for atom, the text editor, and I realized it. Wait, how do I secure my token?\n\nLike, you know, is there a secure storage somewhere that I can just like dump it in and like it not get leaked out to other plugins and stuff? And they're like, No, that's not how this works. It's like there's no isolation between plugins and I, That was the first time that it like really hit me. It's like, oh wow.\n\nUh, . That's kind of terrifying.\n\nHenry: No, I think even dunno, one of the problems is that I think it's like a, like a lot of these are like CLI type things. Like allow net or allow whatever io I think the problem is that it's like kind of really black and white and it's like, okay, either this whole process can't use IO or the internet, and it's like, well what if one package needs it and then now you have to turn it off and it's like, I feel like it's not even a benefit anymore.\n\nSo I did see that, Um, I think it was, I don't know if that feels meta mask or some people they worked on this thing called Lava mote, um, because, you know, they're in extension, a Chrome extension, and then they have, they obviously need secure crypto or whatever. Um, what they do is they like, they actually look through every dependency and find out where those things are being used.\n\nSo I think you need almost like a run time thing where it'll tell you every place that uses io I feel like you almost need to check every place and like, Oh, I allow, I allow this, I allow this. Like, oh, everything that babel has, it's, it's okay, but not like this random package. I don't know about. Um, that would actually be like more, a hundred percent rather than just like on or off.\n\nAndrew: it's, it's interesting that a crypto project made this cuz like, it, that makes sense. Like in a crypto project, you'd want like, like iron tight security that there's no way that my key could get out possibly.\n\nHenry: I know that's like the only good thing. I was like, wow. The good thing about crypto is at least they care about security , and we can use that benefit for us. It, it, assuming we can even use it, but yeah.\n\nJustin: Uh, so I mean, going. The thing about Deno is like, I think you're right, is like, uh, the flags at the CLI level can be, can be a little, uh, blunt at times, but you can like narrow things down. So it's like, I want Fs access to like this one module. And then they also have workers where inside the worker you can give it explicit permissions that are narrow down from the, the, the top level things.\n\nYou can run something in a different process that has like even more limited permissions, but, know, I think overall as an industry, it's like something that we have to start taking more seriously, uh, you know, heartened to see things like tar, the rust based electron alternative, if you will. Um, you know, it's, it's, it's obviously not feature complete with electron by any stretch of the imagination, but they do think of, but security in a bit of a different way.\n\nAnd I think that's, uh, I don't know, just something we, we should definitely, as hard as it is, just keep going.\n\n[00:19:30] Going OSS Full Time\n\nJustin: So you, you'd mentioned that you'd worked at, uh, Adobe in 2018, or left Adobe around 2018 and then, and then started, uh, essentially working on open source full time. That's a really fascinating transition. We've talked a lot about, uh, open source sustainability and, you know, funding for open source.\n\nUh, how has your experience been of transitioning to Essent. subsist off of sponsorships.\n\nHenry: Yeah. Uh, I feel like that could be a whole book.\n\nAndrew: to\n\nHenry: And I also, I don't know if it's like, I'm like, I can only, Yeah, I obviously, I'm talking about my own experience and everyone, every project is different. Everyone's lifestyle is different, everyone's background is different. Um, I think that, I don't know, I got to the point in, I guess working at Adobe that I felt like I really wanted to work on open source as my full-time thing.\n\nUm, I was lucky that my, my coworkers and then my boss, um, they were very encouraging and they gave me 50% time to work on babel at some point during my time there. And I was telling them, I was like, Okay, I wanna do full time. And they, they gave me half time and at some point I felt like I was doing a lot of work. Not with, obviously not with the rest of my team. And I just kind of felt like lonely in a way. I don't know how to describe it. You know, like no one was like being mean or anything. It was just kind of like, you know, everyone was doing their own thing and I'm doing my own thing sometimes, and I want to feel like I was on a team again.\n\nUm, there's, I don't know. You can't really solve that, right? And so the, it's a suggestion that my boss told me was just start up like, you just need to decide for yourself. Would you rather like, you know, just go off quit, see if you could do it full time or maybe just go back to working just like everyone else, and then do it in your free time again.\n\nSo like, which one? To just for your own, like psychology. Right. And I guess for me, I ended up thinking like, okay, I want to just give it a shot, Like just see what happens if I just quit. Um, and they were really supportive of that too. They're like, you know, you know how like when you tell them you're gonna leave a company and they're trying to get you to stay and all that stuff, they, they, they know like, I'm not trying to do this for any other reason, just cuz I want to do this.\n\nUm, and so they're very supportive. They even let me stay at their office just like work there, you know, cowork, stuff like that, Stuff like that. Um, and I think, I don't know, I,\n\nI think the parts of open source that I liked the most were these, like what we were saying about the people side, all that stuff. Again, um, the non-technical parts of open source are just as important or maybe more important because no one's focusing on them. And I wanted to kind of explore that or at least be willing to put my time into that, if that makes sense. Um, and so when I quit, I, um, we didn't really have a lot of money. I think we had like 10,000 per year in babel which is basically like nothing. Um, and I only started that because our previous battle maintainer, one of our teammates, uh, his name's Logan, um, he quit his job just because he quit his job. And then I was like, Oh, we should figure out if he can fund you. Cuz he was just working on babel for fun.\n\nAnd by the time I, we had enough money, he already was like, I, I kind of just want to get a job again. You know, I don't want to deal with all this, you know, like, just like not knowing if money's gonna even come through. But then at that point I was like, I'm just gonna do it. Um, and I set up like a Patreon, um, which I guess got a lot of traction in the beginning.\n\nUh, I got like, a lot of people were like supporting me, which is great. I got like two, 3000 a month the first month just cuz like a few people were like really nice cuz the next month there was already like a thousand . Um, and then, and then this other open collective stuff, which is, uh, basically Patreon for groups.\n\nIt's a open source platform where, um, Companies can donate to a project that's like transparent and all that, that took a really long time to ramp up. Um, and I think most of it's just, cuz I put myself out there, I went to all these conferences and talks to tell people about open source, about babel and then, you know, getting people, I didn't even necessarily say donate, but like, you know, I'm there and I told them I quit my job and the stuff.\n\nUh, and that company should support open source. Um, like we're talking all the security stuff. I feel like they should be paying open source people just for that, just to make sure they don't like, like it's sort of like you have all this responsibility and like power quote unquote, to do bad and you don't get anything out of it.\n\nLike you don't make more money by doing open source necessarily. Um, and if you could work at a Google, well you don't want to cuz you wanna work on your open source project. So it's like you, you put yourself in this position where you're kind of like, I kind of. know, you have to make a choice. Like, do you wanna work at this big tech company or do you want to just like do this other thing?\n\nAnd I think, uh, at the end I decided I'd rather just see if that makes more sense. Um, even just mentally, I, I just felt like I would rather, um, I, I, or like I am at the time or at the moment, willing to make less money just cuz I want to do something that I enjoy. Um, and everyone's different situation. Um, so\n\nJustin: Yeah, that's cool. Uh, it's, you know, it's, it's an incredibly hard thing to do just to get, you know, grassroots support for a project. So, you know, props definitely props to you for, uh, putting, pulling a lot of that together and. You know, as, as we've tried to go through our own like, sort of like sustainability thing and this, this is not even about like making a living.\n\nIt's just like, how do we have this thing net zero where it doesn't actually cost us, you know, a bunch of time and, you know, money and just like random services that we had to pay for to get it to work. Uh, you know, even that it's, it's non-trivial, you know, it takes a lot of work.\n\nHenry: All right. And there's so many people wanting to be creators now, like whether it's YouTube, this podcast, like I have a podcast. Yeah. I'm spending a lot of money on this podcast. I'm not, I don't even want to it to be like a full-time thing For me. It's just like, like you said, you know you have to pay for hosting and editing all these, whatever it is.\n\nJustin: Yeah. Yeah, absolutely. Um, and I think that's, that's this like silent part of. open source maintainers who are doing it full time, or maybe even to like broaden it out, just content creators, you know, uh, who have to live this, like double life where you're like, you putting out your content or whatever you wanna focus on that you wanna make it great, but like to make it sustainable, you have to do all this extra work, uh, just to be able to ensure that you can continue it or. Take a personal sacrifice and you pay for it outta your pocket. You know, you eat up a bunch of your extra time on nights and weekends and you know, that makes it a lot harder and a lot less sustainable. So it's just, you know, one of those things that comes along with like, you know, all these great libraries and all these great YouTube videos and podcasts and all this stuff.\n\nIt's like, you know, for the ones that are getting monetization, that's great. Uh, and for the rest of 'em, it's just like a, a lot of sac sacrifice that you might not see.\n\n[00:26:45] Burnout\n\nAndrew: So, uh, you do quite, quite a bit of work and a lot of it is people work and it's probably people that aren't the most grateful most of the time. So I can imagine that this has led to, to burnout, uh, quite, quite a bit. So how, how have you personally dealt with burnout or have you even dealt with it at all?\n\nHenry: Oh yeah. I mean I'm definitely . I mean, you could say in some sense I'm dealing with it now. Um, I think.\n\nthink\n\nThere. Maybe they're like, I don't even know. Maybe there's levels of burnout and there's like progressions of burnout depending on what you're doing as a maintainer. You know, like maybe every project I had some form of burnout, like, um, where do I start?\n\nLike, okay, so like JSCs, the first linter I worked on, there was a form of burnout there because, um, it's almost like JSCs and ES land were like competing against each other. And there's a form of burnout in the sense of like, you feel like, is it even worth working on this thing when we could just combine forces, You know?\n\nAnd our solution with that was, was to do that. We just merged the projects together, but not everyone's willing to do that. And there was some, like some people might be more willing to do it and other people don't want to, and then you have to convince them that it's worth it. Um, stuff like that. And I think that is a form that maybe is a stress and then other burnout, I think, um, many people have said like, you know, there's like the burnout of, like you said, it just costs money and time.\n\nThen there's the burnout of like, dealing with people. Uh, that's a separate kind of burnout. And then it's just straight up just being in a project for a long time regardless. Right? Like, it's not fun anymore. And, and like you said, like, uh, you know, you've worked on this thing 10 years ago, but some people are still giving you issues.\n\nWhy do you feel like it's still your obligation to like, work on it? And I think there, I felt all of those before, and I think everyone will, if you put something on GitHub, um, for some reason it like creates this expectation that you're gonna maintain this thing for, for life. Uh, we like to joke about the whole benevolent dictator for life thing.\n\nUm, but it's like we're not really addressing it in the, the negative sense of like, you know, I've, I've made these like very small things. Like I made this um, Twitch plays Pokemon type app thing. It just helps you create a Twitch plays Pokemon. And I think I wrote it in like some JavaScript and this even has some Python in there or something.\n\nI was like, I don't look at that anymore, but people are still like, making issues. And I was like, I don't know what to do. So I, I think I unwatched the repo or something. Um, just cuz I can't be bothered. Um, like it, there's already all these other things. It's like, how many little things unless you still like it, you know?\n\nI think that's ultimately a thing. It's like, if you enjoy doing it, great, but there's probably a point where you, you're not really enjoying it or, or maybe you enjoy certain parts of it and then you have to figure out what's the best thing for it. Like, do you wanna delegate? Should you do the archive thing?\n\nPeople love doing that. Right. just make it read only, you know? Um, so\n\nAndrew: GitHub notification anxiety is, is a real thing. Like when I started out in my open source journey, like I would be very on top of my notifications and then I'd read about people being like having that anxiety and I was like, I don't know what that means. And then like a few months go by, I put a bunch more projects under my belt and then it's like, Oh wow, this is like, that little blue dot up there sometimes scares me.\n\nIt's like, what if I click on that dot? How much, how much of my life am I ? Am I gonna lose to that little blue dot today?\n\nHenry: Yeah, that's the thing, like the notifications won't ever decrease if you think about it. Like unless you decide to un watch things, every project will get used more. Just, I think everyone has to think about that inherently. Like even if you don't update it, right, the users over time will just increase.\n\nThey can't decrease, really. Um, and so like the amount of issues you get is gonna increase. So, and you have limited time and limited energy, llimited effort. So, um, you're gonna get to a point where you can't handle it anymore. You know, we don't really know how to deal with that. There's no, I don't, like, I was gonna say, there's no course on how to do GitHub or be a maintainer, but I don't think that there needs to be either, because I don't think you could teach it in meaning, like in a standardized way where like, everyone should follow this thing.\n\nI just don't think that makes sense. But everyone has to almost learn for themselves maybe. And unfortunately, maybe the painful way, uh, of like putting boundaries and setting limits. Um, I talk about this a lot. I, I unfortunately do not necessarily know how to do that better than anyone else, obviously, cuz you know, we all deal with notifications on every other platform, right?\n\nSocial media, all that. Um, it's the same problem, except I guess this is, It feels worse in a way, which is like, you know, with, with Twitter or whatever, it's like, oh, I'm not keeping up with like, what's going on, but this is like, you made this, or you're the maintainers and you feel, you feel like a more of an obligation to like look at it.\n\nUm, maybe even on the weekend. So I, I would like, you know, like a very simple practical things, you know, like turn notifications off on the weekend at least, or when you're not working, you know, or, or just choose to, You can even, and now we have the away message. You can have status things. Like, say you could tell people on the README itself, like, Hey, I'm not going to look at this, you know, um, during these hours.\n\nOr make a pinned issue that says we're not doing this. Just to, like, I think a lot of it's just setting expectations cuz you're, you're trying to like appease the random person and if they knew upfront, that would be a lot better. So,\n\nAndrew: Yeah. You have to be a lot more conscious with what you put out and then how you put it out and being like very upfront about like, I'm just messing around with something here. Please don't depend on me for production. This is, this is a hobby project\n\nHenry: right? Yeah. Um, and it is hard to communicate that cuz you know, maybe you don't know, like, and you, you feel like you're bothering people. You have to keep changing. Like, you know, today is like, Oh, I do feel like changing it or I feel like working on it a lot. You know? And I think that's the problem is like, people are kind of stuck with a certain way of the project working or you working and you're, you're kind of just like, kind of loose.\n\nYou're just kind of doing whatever you want. That, that's supposed to be the freedom of doing open source. And it's sad that like, open source actually makes you feel like you're in jail and that, but you put yourself in that jail. was like, ugh,\n\nJustin: It's pretty nefarious because I think at the beginning, at least in my personal experience, there's a lot of excitement and you get all this like momentum going and you write all this code and you accept all these pull requests and start collaborating with these people, and you just feel good, but you're like, a lot of times you're digging yourself in a hole and you just don't realize it yet.\n\nRight. So you're merging features that like,\n\nHenry: Hmm.\n\nJustin: are kind of outta scope for the project, but like, you know, you're so excited to collaborate with people. You're like, Yeah, yeah, this is great and we'll do this and we'll do this. And then you like refactor the whole project and you do all these things and you know, before you realize it, you're like neck deep and.\n\nA lot more work than you anticipated, and that initial motivation and momentum starts wearing off and you know, people have seen the activity and they're excited by it and they're wanting to get more engaged and, and you're slowly, like, you get less and less excited and yeah, that's, that anxiety starts to build up of like, Oh no, I've got like 15 pull requests, but I don't feel like looking at this project at all.\n\nAnd then you get that ping. Update question mark or like, you know, whatever, and you're just, Yeah. Yeah. That's a, it's real\n\nHenry: Yeah. And it's hard because, um, I don't know, it, it, like every interaction will change you in some way. You know, you build these kind of habits over time and it's really hard to be self conscious of these things. Like, how are you changing? By being in this community or people talking to you. And then I, I, I always use this like dark night quote about like, becoming the villain eventually, you know, like you die a, a hero or you live your, live long enough to become the person you didn't wanna be.\n\nAnd I think the problem there is like, you know, if you keep interacting with people that are negative, um, because they're, I mean, it's called issues, right? It's like, you know, they keep reporting issues and it's always negative, then you might start feeling like, Oh, I feel like I need to be negative. Cause you just not like you want to, you just, you just are.\n\nUm, and it's really hard to kind of stay so positive and like, unless you, like, do you make yourself numb to it or you just ignore that and you try to be positive about it? It's hard. Like, it's really hard to do that. And I think most people just like quit. I mean, it, it is like really hard . Um, and I've wanted to do that many times too.\n\nUm, but honestly I think like you have to do that at work. You have to do that in life in general. It's just another area where that happens. But, you know, another place. that this kind of happens, Like where people are people you have to learn to Yeah. Be with people. So,\n\n[00:35:44] Tinkering on Tools for Learning\n\nAndrew: yeah. So Let's move on to a little lighter pastures now. Um, . So what have you been up to lately in open source?\n\nHenry: Yeah. Um, well, I'm taking a break from babel. Um, I, that's maybe that's obvious for people, but I, and then maybe that's not the light topic, but I, I might have to write about this. Um, some stuff happened last year where that made me feel like I didn't know if I wanna do this anymore. So that was like, the burnout I'm referring to is like, kind of, I don't know if, if some people make you feel like you're not respected or, or not don't deserve to be in this space, then I don't know if I would wanna do it anymore.\n\nSo I'm taking a break, so I'm kind of like, I don't think I have to. Um, I could just go back to doing it. I just don't, that whole experience didn't make me want to be in it at all anymore. So I'm just choosing not to take money anymore. Um, so that, that's a just decision I'm making by myself and I'm just kind of just doing whatever, trying not to work on like random, um, experience experiments and stuff.\n\nI think a lot of 'em, I didn't open source yet. Um, but I just like playing around with stuff. Um, there was like a long time ago I made this thing that's related to babel called, I don't have a name for like babel map or whatever, and it basically\n\nbasically\n\nki, it doesn't use source map, but it basically, um, you know, babel will convert, you know, input to output.\n\nAnd I thought it would be cool to have an educational tool that would like, help you understand what the output of babel or any compiler is like, whether it's type scripts or whatever it is. And it basically just transitions the code from input to output. It literally just like animates. , uh, kind of like the prettier version, except it's the input of, you know, your ES whatever to the ES five version.\n\nAnd then every character will move to where it will be in the output and it kind of smoothly animates. So you could just have a better sense of what's going on. Especially for something like jsx, people don't even know what JSX is. Like what is it turn into? It's cool. Like, oh, this, you know, less than sign turns into like, whatever.\n\nIt's a function call and it has like three parameters, like stuff like that class turns into function, you know, like all that. So I worked on that for a while. Um, haven't updated it, but that was just like, I think there's a lot of educational work that we could do in compiler land to help people. Um, and some other, recently I've been doing a lot of stuff in audio actually for some reason.\n\nUm, I, I don't know if it's cuz of the podcast, uh, like. One idea I had, I'm still thinking it through, so maybe you could, maybe people will help me.\n\nMaybe\n\nOkay. We have like syntax highlighting right? With uh, you know,\n\ndifferent\n\nand I was like, Why, why isn't there like an audio form? I don't even know what that would look like, but it sounds interesting, you know, like when I'm typing, what if it could play sounds based on keywords or like whatever.\n\nUm, so I actually had like a very simple demo where like, you know, if you type in like null, like N U L L, it'll play like four different notes or you, you play like return. It'll do like the Zelda, like open chest sound, you know, like stuff like that. Um, I think it would be fun. It would make coding a little bit more, um, uh, more fun.\n\nEspecially video game sounds, It's like very positive. yeah, that's like one example.\n\nAndrew: That sounds fun. Uh, I, I, I love the emphasis on learning tools, like, as you said, like knowing what jsx actually transforms into you. Ki like without that you're like, Oh, magic is happening. But then you see, oh, it's just a create element. Then you go, Oh, so the function's not actually called when I'm doing that type of syntax.\n\nUh, another tool that you've had involvement in, uh, at what actually started you getting onto this podcast was AST Explorer. Uh, AST Explorer is, uh, like a shining example of one of those tools where it's like pull back the compiler covers and you get to see what's actually happening. And just being able to see that opens up like worlds of possibility.\n\nSo yeah.\n\nHenry: I mean, I, um, I know Felix, uh, who he used to work at Facebook, he started it. Um, I just helped various places. Uh, and then even the thing I worked on is basically just taking the same format and doing it again. I think it's a really good idea, um, because one of the coolest features is like when you high.\n\nUh, so basically like the left side is like your code input and the right side is like the ast, which is just basically just fancy json, right? With like different, um, expanders and whatever. And so when you highlight the code, it'll actually focus in on like what note it is. So the idea is like, I think it's just giving you vocabulary.\n\nUm, you know, if I don't know what the name of some syntax is, then I could type it in as to explorer and it'll tell me, Oh, the name of this is this. So like, oh, a template literal, like, I didn't, who knew that that was like a thing, you know, like, or, or like, uh, for the other things like asy function, that's kind of obvious, but like other ones, it's like, I, I, there's a name for that and it's cool that we can use that.\n\nAnd then eventually you could write a bowel plugin or you can write a esent rule or whatever. So, um, yeah.\n\nAndrew: Yeah. I, I don't know how you would actually get those names otherwise without actually being like a compiler engineer. Uh, yeah, I've, I've, like ASTs at first were something that seemed like I learned about 'em in college. Like I had written my own parser and interpreter for a programming languages class, but I didn't really get the power of them until, until I started using them in like babel and eslint plugins.\n\n[00:41:15] Plugin Creativity\n\nAndrew: Uh, what are some, some, uh, a s t type plug-ins that you've built that like you're, you're proud of or did something really cool?\n\nHenry: Hmm. Um, I think the ones that are cool are just like, it's more like the power of knowing that you can do it is like, kind of really cool. It's like, I think, yeah, I didn't even take a class on compilers, so I don't know what they teach you there, but I, I learned all of this by doing that Enting thing and I was like, Oh, lin.\n\nIt's the same thing as compiling. And the only difference is that instead of outputting more code, you just throw an error or, Or you fix it, right? You, which is also just compiling in a way, it's just outputting different, the same code but different format, like spacing and stuff. And I think that any time you're thinking about a problem, it's cool to have that in your toolbox.\n\nSo, you know, when I'm like coding and I have some prom, maybe it's with file system or whatever, or with code, it's like, oh, maybe it would be cool if I could write a plugin to transform the code instead of doing it. So any time it's like that whole thing about being lazy, it's like it's a good thing.\n\nSometimes the positive side of being lazy. Cause you end up spending a lot of time not being lazy by making this plugin to do it for you. Um, so whenever you can generate anything, I'm always like, Yeah, let's just make a plugin for, Yeah, I think a lot of the ones I've worked on, just not in that itself has been like code mod type stuff, right?\n\nLike, oh, I want to convert. Do the opposite of bpo, right? Like, you know, I wanna up convert everything to use a latest syntax. I don't wanna do that manually, so I should do that, uh, using a plugin. Another thing would be, um, like a code mod to help upgrade people. I think a lot of people do this now, like random frameworks, they change their api, then it should just auto do that for you, right?\n\nEspecially if it's just like some method name changed. You don't, you wanna make sure that you can't, you can't just do the control f, control R like find replace because it might replace the wrong thing. Um, and so the whole point of the AST is it understands, it semantically, it doesn't change like comments.\n\nIt doesn't change the variables or whatever. It changes what you specifically want. And, uh, oh, another cool thing is that the tests for these code mods is just your own code base. So you, you almost kind of don't need to write the test, it just, it'll just fail if it doesn't work, you know, sort of, yeah.\n\nAndrew: Yeah. Code mods aren't something that I reached for earlier in my career, but now when I see like, Oh, I have to change a hundred files, I'm like, No, no, no, no. I am not typing that. I will, I'll spend the 15, 30 minute. Writing a code mod to do it for me.\n\nJustin: Yeah, I, I, I do them a lot just in, especially when you have like generated artifacts, like, so random example, we have a, a plugin that downloads SVGs from Figma. And turns them into React components. And then I have code mods to like massage those React components to like match the code style of our code base or whatever.\n\nUm, and you know, for those sorts of cases it's like, it's nice to have though I will say, like I, I found the tooling generally leaves a lot to be desired. I was actually playing with a TS Morph, which is a, a tool specifically. Code mod, like things and type script today. And like, you know, I was just like, I just want to find the references to this like, fun exported function call.\n\nAnd, you know, even, you know, it's a typed interface. So like, I, theoretically that should be easy, but I just struggled with it and struggled with it, and struggled with it. And it's like, like I have the same thing. Like, uh, I love AST Explorer. It's, it's an amazing tool. Um, but I, I have to relearn a lot of stuff and go through this process every time and it.\n\nYeah, Andrew, you're saying like, you know, spend the 30 minutes to like write a code mod. I often find that it like takes me a lot longer. It's like, Oh yeah, this should be fast. And then I spend like an hour and a half just like do, getting the basic set up and it's like, I think there's a, a grand opportunity for like a better tooling experience there because we really want to have like a search and replace like experience that's just like a rapid code mod.\n\nIt's like, I, I need to do this like one off thing. Um,\n\nHenry: yeah, definitely.\n\nJustin: anyway.\n\nHenry: I, I think it's depending on what you're doing, cuz like, if it's just like changing the class name, like that's really easy to find the node. But if it's like references, maybe it's almost like if it's not in the ast it's gonna be really hard because you have to write all this logic to find the things that you were looking for, or like, oh, references to imports or types or whatever.\n\nAnd it's like nobody did that already. Then you need almost like these libraries that help you find this code. And it's like a lot of work. Um, yeah, it has to be like super straightforward. And I, I hope, I would hope that this, um, uh, maybe these ML things will help with that. I have no idea. If they could, like, you could just say like, Hey, can I, can you replace all these and just do it?\n\nBut I don't know, maybe it's really hard, so.\n\nAndrew: Hey, we might get there soon, like get, I'm constantly surprised how good GitHub co-pilot is while I'm coding, so maybe someday\n\nHenry: Yeah,\n\nAndrew: AST aware GitHub co-pilot would be so good.\n\nJustin: Anyway, I would still love, I would still love like a visually integrated thing in the actual editor, so it's like, you know, I have this like code mod mode or something, and I like right click some code and be like, uh, you know, give me a, give me something that like targets this or whatever. And it like generates a little like code bond that's like, does the targeting or whatever.\n\nYou can like test it really quick. And I don't know, I, I think, I think eventually in future land, like rapid. Uh, a s t transformation tools that are like very visual and like very intuitive is, is gonna be like something that we'll get and like built into the editors and it'll like really change the way we do a lot\n\nHenry: Mm-hmm. I think through that you would just have to like, whatever you select, it'll try to parse. It can current that into an ast and then you have to tell it like which parts are gonna be essentially wild card because when you select that it's gonna try to fit like each variable name, but maybe like, I don't care about this variable name.\n\nSo it, a lot of people do like star, like a, kinda like a red reject kind of thing. Um, and then maybe what I think it should do is like when you select something, it should just run the code mod, like on your whole code base. It would have to be really fast, your whole code base and it'll tell you which test cases are failing and then you kind of keep selecting more stuff visually until it like handles all the ones that you wanted or something. yeah, it seems possible.\n\nAndrew: Yeah, some junior developer can take on that GitHub anxiety\n\nHenry: Yeah.\n\n[00:47:59] Future of OSS\n\nAndrew: Okay. Uh, let's move on to our last question before we move on to tool tips. Uh, so in each episode we kind of ask like a future facing question of like, where is the field that this person in particular is? Will, will it go? And since here we've mostly talked about open source. Uh, let's talk about that. So what do you think?\n\nUh, the ideal scenario for open source funding at scale is do you like, think we're on a good path where we are now, and like what do you think the future of open source is? Is it company backed? Is it individual contributors looking at their GitHub notifications, feeling anxiety, like where, where are we going?\n\nHenry: Oh man, that's such a big question. Um, the ideal scenario, the ideal scenario for me, uh, I think has changed. Um, you know, I think when I've been, when I was doing this and then, you know, quitting my job, all that stuff, I felt like my, my goal was just like, how do we get people. To be full-time open source. I, I think that's still a great goal.\n\nYou know, I think a lot of people, whether they're at GitHub or just generally, it's like if there are more people doing open source as their job and it's full-time, that would, that would be better, quote unquote. But I almost feel like, you know, like the problem is like, where's that money coming from? If the answer is just straight up that, you know, we're all gonna work at Facebook and we all get paid and it just happens to be open source, I mean, that's still good too, but it kind of depends on what you're looking for.\n\nUm, that would, that seems to be more like we just take the industry to take the tech industry as is and we just open source more of our code. Right. And I don't know if that's necessarily like, depends on what you think the values of open source is. And I think that something that I, you know, maybe the independence of being in a community driven project just seems like something I would want, even though it's really hard.\n\nUm, you know, like a, kind of like a VueJS versus a React sort of thing. Um, I don't know if that's the future. I don't know if that's like possible for a lot of people. And I, I had this fear that, um, not fear, uh, cause I don't want a scenario where we end up just having a bunch of SaaS companies that are open source.\n\nLike, you know, that's what happens, right? Like like I, I don't want, um, the equivalent of babel as a, as a SaaS company. I mean, that's why we didn't want to do it. Like, I personally don't. Cuz I was like, the benefit of that is like, okay, I raised some VC money, um, and then I get a lot of money, um, or at least enough to like, sustain myself and maybe we rewrite everything in Rust just like, or whatever, right?\n\nNo, cuz that's what everyone's doing for whatever. It doesn't have to be babel it's just like, um, like I guess more like if you raise a lot of money, you have to be able to spend it. Otherwise, I don't think the VC would be happy if we spent the least amount of money per year to sustain ourselves. Right? You have to spend all that money to hire a lot of people to make all these features, to get people to like, Use your product and then raise more money.\n\nAnd I'm just like, I just don't think that that's good overall for people. Um, unless you have a really good plan and I just don't, you know, Um, which is why maybe our approach, which is not a business model, is just essentially begging companies for money. And then our project is big enough where we can, I guess, afford to do that.\n\nWhere, you know, enough people are nice or they feel bad or whatever, who knows? I, I happen to talk to them for a moment. They, they were, they convinced their boss, um, we were able to work off of that. But you know, we're still like, the, the people that work on Val are my teammates. They, you know, we're still paying in like half the salary or even less if you account like stock and all these things.\n\nLike I basically took like a, let's see, took a half pay cut and took another half pay. It's like one fourth of salary of working at the equivalent company that they're give those companies are the companies giving us money, right? And we're taking like one fourth of salary basically. And most people are not being gonna be willing to do that.\n\nUm, and that, that's fine. Um,\n\nare\n\nso I don't know. I just, I wish, uh, it's almost like the at scale part. I almost don't know if I believed in that anymore. It's like, I don't know if you can do it at scale, if you wanna say at scale, you might as well just make it, It's a business. It's just a business that happens to be open source.\n\nAnd, and I know that that sounds bad, but like, uh, just depends on what you think about open source. Like if you think of open source is like, um, MIT license and, uh, people can make money off of it and then not give back, then that's what scenario we have right now. And then we have the old school, like gpl, like copy left stuff where like, no, you should only use free software, uh, like politically.\n\nUm, well, and we still have that too. And then we have other people that, like, I don't even know what open source is. I just know that it's on GitHub. You know, like we all, we all have our little, like, I don't, I don't wanna call it ideology, but like our view of what open source is and, and we are always talking about open source, but it's really hard to kind of. be clear about what that is cuz we all have different values and different views in it. Um, and maybe now I just feel like I don't want to promote a certain way of doing it, even though that would be better for me and every, uh, and for the people in it. I just don't know if that's like, Good. Would that make sense in my view?\n\nSo,\n\nAndrew: Yeah. It, it, it's, it's a hard problem. I was talking about like, to a non-technical friend, and I said, open source. And they were like, Wait, what, what is open source? And I explained it to them and they're like trying to find a similar concept like almost anywhere else in society. And we were just drawing blanks.\n\nIt's like, it's a very foreign concept to basically just give away all of this work. Uh, and yeah, I don't think we found, found a solution yet.\n\nHenry: I mean, like, we kind of talked about it earlier. I, there are some parallels, you know, like, I think I usually say Wikipedia. it's sort of similar. It's like open information, I suppose. And there's maintainers as well, and there's a company behind it. They don't even pay the maintainers necessarily. They do most of the work.\n\nUm, and there's this whole maybe controversy, maybe not controversy about like, they keep asking for money and they have a lot of money, right? They have millions of dollars, but they keep asking for it. And it's like, how much of it is going to Wikipedia or not? Maybe it's good that it doesn't because they get to work on other things, you know, But there's a lot of, um, thing on like whether that money should go to Wikipedia or we just trust them to like work on other like Wiki, Wiki media and Wiki dictionary and like whatever the other things are.\n\nUm, so\n\nAndrew: Yeah, that is a good parallel. I do kind of find it funny though cuz it's like when you're in school it's like, Oh yeah, don't use Wikipedia a bad source. But do base all of software on open source\n\nHenry: That's actually really funny. Yeah.\n\nJustin: I think that perspective from schools is a little dated.\n\nAndrew: Yeah, yeah, yeah. . Okay. Unless we have anything more to say, I think we should move on to tool.\n\n[00:54:57] Tooltips\n\nAndrew: So my first tool tip for this week is a library that I found on, uh, Twitter. Just yesterday, uh, the creator of Solid slash Marco was tweeting about performance benchmarks, various, uh, front end frameworks. And this Rust One came up and, uh, got me pretty interested. So, uh, it's like a, a full stack one.\n\nYou can use it on the front end, you can server side render it. But what's interesting about it to me is it like, it looks almost like react, like you're almost using JSX in here. You almost have hooks. Uh, so going to this from React might not be the hardest thing. And then, like, looking through the code, there's like lots of things that like will remind you of React, like they have a suspense component.\n\nThey have all these, all these different components that you might use in a normal react context. But just writing rust code. I don't know if any of this code is good since I myself, uh, am not a, a rustacation. Uh, but it seems pretty interesting. The, the maintainer is actually a priest and he uses this to, uh, build a prayer app.\n\nSo, uh, it also is very interesting to me just having like random people out there in the world, like innovating in areas that don't have all that much innovation quite yet and building something that they can use themselves\n\nHenry: Okay.\n\nAndrew: that's\n\nJustin: Yeah, there's, there's some fun, uh, frameworks in the rust world. Most of, they all rely on, uh, some just like pretty intense macros to work. So it's kind of always fun to dig into that.\n\nAndrew: Yeah. I'm not sure if any of these are macros cuz Yeah. . I myself am not a, a Russ person. Uh, but yeah, it, it is just interesting that this even\n\nJustin: It definitely is like all the, the, the jsx like syntax that's in that view. Macro, you see the view, like exclamation point. Everything inside that body is a macro and so they're like, have a custom parer or whatever that's turning this into essentially ruco at some point.\n\nAndrew: yeah, it, it is an interesting topic cuz like, there's a lot of fud there for me of like people on Twitter being like, Oh yeah, uh, JavaScript, HTML and CSS days are numbered, uh, , rust based, uh, wasm things to build websites. Those are, those are gonna take over. And I, I'm not sure I'm quite sold on that, that idea yet.\n\nJustin: Well, Wasm still can't access the dom. Right? So , I think we're, I think we're a little ways from there.\n\nAndrew: Yeah. In the Twitter post I was talking about, they were comparing like bundle sizes too. So like the bundle size of including that, that compa t layer is quite big, but the plus side is like, the rust part of it doesn't get all that much bigger. So it like stays basically the same bundle size,\n\nJustin: There are some interesting like attributes for shipping Wam payloads because it's like streamed binaries. Uh, so. I don't know. There's some, there are some interesting performance RAM vocations, but yeah, I don't know.\n\nAndrew: So next up we have Code, Ace Jumper,\n\nHenry: I dunno. I just found this again, I found this like a long time ago. It's just like a, I think it's in Vim or emax or whatever, but it's just a way to move around the screen. So basically there's a shortcut and then you type the beginning of the place you want to go to. And then, so say in that case you wanna do greeter, you could type like whatever command it is, say it was control command H, then you type G and then every G will have like a, it'll start with a b cd and you just type one of those letters and it'll move your cursors at that point.\n\nUm, so it's just like a different way of moving around. Yeah.\n\nAndrew: That's interesting. I, I recently saw something kind of in the same vein on Twitter from, uh, one of, one of the React spring maintainers where it's like you can tab through the, like, structure of your code. So like tab tapping into a template string will tab you in in between the curlie s or like so on and so forth.\n\nGoing through the ast.\n\nHenry: The, Yeah, that's cool. Sema semantic tapping, I\n\nAndrew: Yeah, semantic tapping.\n\nNext up, lab notes.\n\nJustin: So, um, these, this is the personal site, uh, of Alexander oar. Uh, I butchered his last name. Sorry about that, Alexander, if you're listening. Uh, but anyway, I have become quite obsessed with this. Uh, Rich Harris actually shared this with me. Um, there's been. I, I've been thinking about computers, uh, from, and human computer interaction, which is like a whole field, uh, for a long time now.\n\nAnd, you know, I have this, I have this dissatisfaction with the stern current status quo. I feel like computers are computers and phones, especially just like these operating systems that we have. They're like these multimedia, uh, distribution platforms are just like not all that they could be. And, uh, Alexander's lab notes here, uh, he's envisioning the sort of operating system of the future.\n\nHe's like, you know what, what would happen if we just rethought how we built computers and operating systems? And, um, there's like some really, really fascinating ideas in here. So like, one of the ideas is, Breaking down applications into like a data layer and a view layer where the view layers are just like swapable.\n\nSo it's like, oh, you know, I've got this calendar app, but like I just want a different display for it. So it's like I can rewrite my own front end for it, if you will, and keep the back end because they're like, they're all sort of atomic and split up. Um, he talks about, uh, you know, how to store like data structures. so to make like the data portable, to make it where like, you know, common interactions like drag and drop or like how you render things like just works anyway. It's just, it's just a proverbial gold mine. There's just so much good stuff in here and you know, if you have, uh, some time, definitely just like go peruse, uh, a.\n\nThere every note is like pretty short and concise, uh, and well contained. They, there's a lot of back references to other notes. It's just like, it's excellent. It's excellent.\n\nHenry: Awesome.\n\nAndrew: Yeah, this seems pretty interesting. A lot of reading material here. If you wanna delve into it.\n\nMy last tool tip for the week is a JavaScript library that I found through a Hacker News article. Um, it's called Co-Processor js, and hopefully I describe this right. Uh, but what co-processor JS allows you to is run programs on Old Macs, uh, for like modern programs, and it communicates through the serial port.\n\nAnd you're probably asking yourself like, Why, why would I wanna do that? So, uh, this person has a very odd fascination with bringing new Mac apps to to Old Max. So one of the examples of that is this messages for Macintosh, uh, repo where they implemented messages, which, uh, if you don't have an Apple device, that's just how you send texts and messages back and forth between other Apple users.\n\nUm, they implemented that, but for a classic Apple system, and it does all of this by running a raspberry pi with some node program and then communicating over the cereal port to the old computer to say like, what to render and what to update. And it has to do that because like running you, you can't really run node on an apple tw vbo.\n\nIt needs a little bit more memory than that. Uh, so it is just a fun project. Uh, I don't know how useful these things are, but, uh, there's lots of cool projects linked in here that are built off of co-processor js. Uh, so check it out if you're interested. Yeah,\n\nHenry: It's cool.\n\nJustin: that is awesome. , such a, such a creative\n\nAndrew: yeah, yeah, yeah. PE people that like get fascinated with retro tech and start building stuff for it, that's like, it's a very interesting hobby. Like I, I, I fully respect it.\n\nHenry: I think that same with people that do like emulation\n\nand stuff, so, so much work. Yeah.\n\nAndrew: Yeah, those are the funnest, uh, blog posts to read through or like where they're like tearing apart an old video game to do something with it.\n\nHenry: Yeah.\n\nAndrew: Next up, we have whisper from open ai.\n\nHenry: Um, I dunno if there's much to say it's, it's like, Maybe you have more to say about it, Andrew. Um, a uh, it just helps you with speech to text. And I guess this one also translates, so you could have a input video or audio that's a different language and it'll translate to English. Um, yeah, I mean I thought it would be cool cuz I, um, I made this, uh, I didn't release it yet or anything.\n\nUh, I named it Bible karaoke. It's basically just, I wanted to memorize something, I guess in this case, Bible versus it could be anything. You could be an actor memorizing our lines. And I wanted the words to kind of, um, you know, highlight like in karaoke when you're singing, um, as you're talking. Um, and I need speech recognition, so I use like the window dot speech recognition, but I found out that that just sends it to Google or whatever.\n\nUm, so you have to be online and then you're also sending data to Google. So this is cool because this is, uh, open source and it's offline. Um, it's already trained or whatever. So, The only, I guess the only thing that this doesn't have now, I, I found I put another link. There's a real time version, but I don't think it works that well.\n\nUm, so maybe in the future, cuz it's open source, someone will make a real time version, but Yeah.\n\nAndrew: Yeah, I, I have nothing in particular to say about Whisper really. But, uh, I do find what Open AI is doing with the Open source AI stuff to be really, really cool. Just like putting out these like super high quality models out there for people to just use and you don't have to pay anybody, you don't have to sign up for a service is just awesome.\n\nLike, uh, I, I played around with Stable Diffusion a little bit. Uh, Stable Diffusion is like the open source version of Dall-e or Mid Journey, and it was like, it was pretty simple to set up on my computer. I didn't have very much luck getting good results out of it, but just that, just the fact that it's there and is usable is super cool.\n\nHenry: Yeah, I was doing that earlier too, actually. I,\n\nI,\n\nI, I made like a, a song actually for fun too, um, like a lofi song, and I was like, Oh, I need a cover art. So I was like, Oh, I should just generate it. Um, so I had to download this thing, and most of it was really bad, but like, learning how to tweak everything, it was kind of annoying actually.\n\nI, I think, um, you can get a good result that looks good, like from a far distance, but if you look at any of the details, they all look like, I have no idea what that thing is. I, I just don't know.\n\nAndrew: Yeah, just nightmare fodder. Like we were talking about, uh, like a GI Hub co-pilot that knew about ASTs. We need like a stable diffusion that knows how the world actually works, so it stops putting legs in the wrong place.\n\nJustin: Towards like general intelligence, right? . It's like these things just keep getting smarter,\n\nAndrew: Yeah. Hey, uh, it's where, where they're working towards. And the last tool tip for the week. Hosting sequel, hosting SQL Light Day to databases on GitHub\n\nJustin: I don't know if that, that title doesn't sound absolutely fascinating to you then, like, I don't know. So the TLDR of this, this is something that I found on Hacker News, uh, and we'll have the link in the share notes, uh, is someone figured out how to essentially, Run SQLite. So it's like a compiled part that runs in the browser and it's got like a virtual file system.\n\nAnd the virtual file system actually does. Network calls, HTP calls, uh, with like, uh, content ranges. So it's like requesting like a specific range of data or whatever. So essentially you can have a SQL light file that's just like stored on an http, HTTP server somewhere and, and like be able to query it and like get data or whatever.\n\nAnd the examples in this thing, which are runable. Are like real . They're like,\n\nHenry: aren't like real,\n\nJustin: Yeah, no, that's, that's like real data, That's like a real query. You can like click the rerun button and, and run it. And it's, it's kind of, uh, it's kind of crazy. Um, they've got some like visualizations and stuff down, so it just like, you know, I don't know.\n\nThat's, that's insane. Um, being able to like have what is. Essentially a serverless database , like from the, the closest, like, uh, uh, the serverless database, quote unquote, that you could possibly get? Um, yeah,\n\nHenry: I think I skimm through it there. You can't write the right, it's just read\n\nJustin: yeah. I would, I would imagine it's just read only, but I mean, I don't know. Maybe, uh, I mean, theoretically it would, Yeah, I don't know.\n\nHenry: Cause I, I would have to update\n\nthe file and that wouldn't make sense\n\nthat, yeah.\n\nJustin: I assume it's just read only, but\n\nHenry: Yeah. That's cool.\n\nAndrew: Yeah, move over. Spawner, we, we, we got a new data query in town, . Okay, So that wraps it up for this week's tool tips. Uh, thanks Henry for coming on. This was a fun conversation about open source and all the, all the baggage that comes along with it.\n\nJustin: Yeah, thanks Henry and I, you know, hope you're having a good break and that you are finding, uh, refreshment and enjoyment and whatever you're working on now. Having gone through some burnout in the past, like I, I know that's not fun. So, you know wishy well, uh, yeah.\n\nHenry: Yeah. Thank you. Yeah, thanks for having me.",
"title": "Henry Zhu - Babel"
}