Stay up to date with the Go community in about 15 minutes per week
This show is supported by you. Stick around till the ad break to hear more about that. This is CapaGo for 03/14/2025. Keep up to date with the important happenings in the Go community in about fifteen minutes per week. I'm Shay Nehmad.
Jonathan Hall:And I'm Jonathan Hall.
Shay Nehmad:And I'm back.
Jonathan Hall:You're back. Welcome back, man.
Shay Nehmad:Thank you. How's sunny California? California is rainy. It's not sunny at the moment. I'm in beautiful San Ramon at the moment, looking at a lake.
Shay Nehmad:But let's be honest, I'm actually at the WeWork, like, phone booth jail cell combo, you know the ones. I know the ones. So I'm in one of those at the moment, because I don't wanna disturb all of my WeWork neighbors. But yeah, I'm in The United States. Cool.
Shay Nehmad:Thanks a lot to Lane Lane Wagner for coming on the show, covering for me last week. You did a really, really good job, man. Shout out to Lane and to boot. Dev. Thanks a lot for Always
Jonathan Hall:fun to talk to him.
Shay Nehmad:You say, on the as as opposed to what you're having to do right now.
Jonathan Hall:I like talking to you too, Shai. I've missed you.
Shay Nehmad:Thank you. Alright. We have a show. Let's do a show.
Jonathan Hall:Let's do it.
Shay Nehmad:Today we wanna talk about security release, some changes to Go Please, Helsinki Meetup, some projects that we wanted to mention, the TypeScript thing everybody's talking about, we'll just briefly mention. We don't wanna do it this week because we're looking to talk to someone who is actually working on it. If you know someone who's working on the TypeScript port to go, let us know, because we are interested in getting more than just what the article says, which is go fast. I think we all know go is fast. Go go better.
Shay Nehmad:That's that's a easy conclusion to reach. And some proposals. So we have a lot to get through. We have some cool stuff for the Lightning Round as well. Let's jump into it.
Jonathan Hall:Here we go.
Shay Nehmad:Let's start with the announcement of a security release. This one is a pretty fun one. One hundred 20 four point one and one hundred 20 three point seven are released with security effects following, you know, the normal security policy in NetHttp, NetProxy, and HTTP proxy. This one's, by the way, also reported by Yuho. If you're a long time listener, you probably know that name as like the single person who's with the finger in the dam holding back all the security problems in Go, basically.
Shay Nehmad:And this one's about IPv6. I don't know how you feel about these addresses, Jonathan, but I've become very cynical of them in the last, like, twelve years. Yeah. I started learning how did you, like, learn networking? Or how did you get started?
Jonathan Hall:Well, I got started well, so I ran an ISP, a dial up ISP back when that was still a thing. And did learn yeah. That's how I learned Bitwise operations and had a masks and all that stuff with IPv4.
Shay Nehmad:Did they at the time teach you IPv4 is gonna run out soon and immediately Yeah. You have to
Jonathan Hall:pay extra for an IP address if you wanna fix one because there's a limited supply, they're gonna run out. IPv6 is the magical solution. It's better than AI and and blockchain. It's gonna solve everybody. Yeah.
Shay Nehmad:You heard it here. Invest in IPv6 addresses now. It's a new goal. So yeah, I've been like, I when I started learning networking, they like gave me computer networks by Tenenbaum, you know, that like huge book you can level a
Jonathan Hall:table Oh yeah. Mhmm.
Shay Nehmad:They just studied this back and forth. Then they, you know, they told me IPv4 is gonna run out. You're gonna have to, everybody's gonna use IPv6. And look, 2025, and we're actually okay. So the problem with this thing is that many people had to implement it, and it is used.
Shay Nehmad:And it is actually widely used despite all the cynicism I just pointed at it.
Jonathan Hall:Mhmm.
Shay Nehmad:But it's more complicated. It's more complicated than IPv4 addresses, which is why people keep finding security bugs in it. Because the implementation is not like top priority for anyone. So it doesn't get enough attention then gets And the spec is overly complicated in my opinion, leading to security issues like these ones. Do you know that IPv6 addresses have zone IDs?
Jonathan Hall:I I'm vaguely aware of that. It's a concept. I don't know what they mean.
Shay Nehmad:I did. I wasn't aware. And I learned, like, the IPv6 properly just because you don't have to use it, you'd end up forgetting. Yeah. So IPv6 address, when you imagine it, how does it look?
Jonathan Hall:It looks like sets of four digit hexadecimals with some randomly placed colons and periods. I don't
Shay Nehmad:even remember Yeah. You have colons
Jonathan Hall:to separate order of anything. Yeah.
Shay Nehmad:Apparently, there's a percent sign as well. After the percent sign, you can put in a zone ID, which helps you like identify, like helps your computer route packets to the correct address. So if you wanna send something and you have both IPv4 and IPv6, if you have the zone ID, it might prioritize the IPv6 one. And the zone ID can be anything. Like, zone identifiers have purely local meaning.
Shay Nehmad:They're not actually part of the address. They're just like helpers, like hints. Almost like documentation.
Jonathan Hall:It's kinda like the part after the hash sign on the URL then. They're like
Shay Nehmad:Yeah. Yeah, in a sense. Okay. But it's part of the address. Like, in the in the URL, I'm already imagining it's very applicative, so it's no problem to add whatever you want, right?
Shay Nehmad:Because parse it however you like. But putting like, basically documentation so low in the stack, at least to me, feels very peculiar. Mhmm. The security issue with this feature of IPv6 zone IDs is when you pass a It's pretty funny, but when you pass a IPv6 address to a proxy server, and the zone ID is actually an address, like a DNS address, you sort of poison the proxy to take the host. So let's take the most basic IPv6 address of all, which is local host, which is colon colon one, right?
Shay Nehmad:Colon colon one is the IPv6 address for local host. If you put the zone ID as star.example.com, and you pass that to the Go HTTP proxy, your address will get matched and, like, not proxy. Got it. So I think this is a pretty edge case. Like, the only the only reason you would actually care about this is a, you have, like, dependable things that you must fix for a a security audit, or if you're, like, the one person who's developing a GUI where you take untrusted addresses from users or from a database and put them into a Go proxy.
Shay Nehmad:But still, better than not fixing it, I guess. Yep. Although there might be more surface attack surfaces that I'm not thinking about. But hey, if you didn't know about IPv6 zone IDs, now you know. And in any case, like we always recommend you should just upgrade.
Shay Nehmad:You know, this is just one security fix, so this update will probably not break your build. And who knows if like one of your libraries does use this somehow, right?
Jonathan Hall:Yeah. So in short, Go 124 or 123 or XNet, if you're using that third party. It's not third party, but that external deck.
Shay Nehmad:And thanks again for to Yeho for Yeah. Providing us with all these educational security patches.
Jonathan Hall:I love it that somebody else is willing to understand all these intricacies. So I don't have to bother. I could just do go get
Shay Nehmad:Yeah. You can just chill. Not not worry about these RFCs. Whenever I open an RFC, I'm, like, half excited. I feel, like, very smart reading this, like, monospace 80 character document.
Shay Nehmad:You know what
Jonathan Hall:I mean?
Shay Nehmad:But on the other hand, I'm like, my eyes immediately get glazed over. I think there's a market for translating RFCs to like TikTok 60 videos. But I'm not gonna fulfill that market. You're you're not gonna do that one?
Jonathan Hall:You're too busy? No. Okay.
Shay Nehmad:I'm too busy, you know. I have so much much Go code that I need to upgrade. Like do if else's for things and I have to replace it with MinuteMax.
Jonathan Hall:I know I know how you can get a bunch of that time back.
Shay Nehmad:Oh, really? Yeah. The new How's that for a segue?
Jonathan Hall:That's a great one. The new Go Please is out. This actually is about three weeks old, we haven't had a show since then. So well, we haven't had one together since then. Anyway, Go Please version 0.18.0.
Jonathan Hall:That's a whole bunch of cool things. Some of them look cool, but the one that will help you out is the new Modernizr Analyzer. Modernizr Analyzer.
Shay Nehmad:Modernizr Analyzer sounds good. It's like a Radiohead album. It's a good Android that Modernizr or Al and I.
Jonathan Hall:Yeah. So, like, you remember back in the old days of Go, if you wanted to get the maximum of two numbers, had to do this silly little, if if a is greater than b, then b equals, you know, whatever, had to. Then they decided that that was silly and like computers are good at doing min and max, so they added min and max to the as built in functions. Well, modernize will detect those funny little if elses and tell you to trigger them or to change them to min and max and other sim similar sorts of changes. So that's what this new modernize does.
Jonathan Hall:You think they'll use that?
Shay Nehmad:I think overall, this is a good approach, but I'm worried about Go is very famous for having one way to do things. And if you got to the point where Go, please, has to modernize your code, what does that mean? Does that mean that there are many ways to do things in Go actually, and that promise is not true anymore? And like which cases does it cover? Like all of them are safe.
Shay Nehmad:A good one is replacing interface.
Jonathan Hall:Like
Shay Nehmad:if you have interface open paren, close paren, it replaces it with any. Yep. Right? So, to me, these two things mean exactly the same thing because I lived through Go 1.8, and I don't see any specific benefit for using any. Like, if you can replace the code automatically, it might be nicer, but, and there are some cases where I actually agree it's better.
Shay Nehmad:But I'm not a % sure all of them are worth like the change and it has to go through code review. I don't know why I have an antagonistic feeling towards this, because overall it's a good thing. Know, for example, the with cancel context that we talked about in Go 124, which is super new, right? And omit empty versus omit zero instruct, which is also Go 124 and also super new. These are like two super useful features I would love people to know about.
Shay Nehmad:And obviously not everybody's listening to our show, but if you're linter, if like Go Please is telling you, hey, if your ID is like popping, hey, you can modernize this. This is an actually a much better way to let people know about these features. But it it feels icky to me, and I'm not sure why. Maybe maybe you can like explain this feeling.
Jonathan Hall:I don't I don't share the feelings. I don't know. So I've had a
Shay Nehmad:look You think it's a good one?
Jonathan Hall:Well, it it I mean, maybe there might be some examples where it's not, but of the examples I talked about, I like it. So switching interface open close to Any, I did that a long time ago. I have an linter that told me, and I just did it all at once for the code bases I was involved in. There's a couple rare cases where I don't like it, where I prefer the interface open close paren or squiggly. And that's like where I'm actually building an interface and I just haven't put methods in it yet, where I sort of placeholder.
Jonathan Hall:But that's just a minor case that it's bit me maybe twice in the last year or something. For minimax, I actually prefer switching to the minimax or even cmp.org. It's it's not a built in function, but it's a relatively new capability that can help you get rid of some ifelses. I like those because they, when they're not overly clever, because they mean less code to read and the intent is more obvious.
Shay Nehmad:All of these suggestions are are only simplifying in my opinion. Like using slices dot sort instead of Mhmm. Like source dot slice x func. So I think this is just like sort of hinting you towards how to simplify and clarify existing code by using stuff that they added over the years. So min and max is the simplest example before a year ago we talked about ending, ranging over ints, right?
Shay Nehmad:Yeah. All the focus was drawn by ranging over functions, was the actual big change. But now you have all these three clauses in for loops, right? Where in Python I never write those, right? I never I I never would go like for I equals zero, I is smaller than n, I plus plus.
Shay Nehmad:Yeah. But just because I I In Go, that's how it was done, now I can do I walrus range up to n, and that just works. And it's It looks nicer. I'm still getting used to it, but it definitely looks nicer. So this analyzer would assist me in recognizing that, hey, I can use that here.
Shay Nehmad:And I don't wanna remember all these cases by heart, right? I don't wanna remember all these new features. I just wanna I want them to pop up in context.
Jonathan Hall:On your point about going through another code review cycle, I I think this is a place I I don't know if Go Please will automatically do these updates for
Shay Nehmad:you if you tell it to. You can. You can't pass a minus fix, and then you you actually have to run it a couple of times until it figures everything out, because some cases, you know, you you some cases actually have you fix it once, and then the inside of the loop was another thing, and they Yeah. It won't do both changes at the same time. You have to do a couple of passes.
Jonathan Hall:But like that's the kind of thing where if you have a pull request that is completely done by a tool, in principle, you could skip code review. Of course, it's up to your team's policy. But yeah, I don't think it needs to be a big burden for good to read. Hopefully a person isn't going through and validating the tool, does everything right. Hopefully we trust that the authors of the tool are conservative.
Shay Nehmad:I'll counter that and I'll say that the new modernized analyzer team has said that they are aware of bugs in the analyzer's fixes. It may cause an import to become unused or delete like comments, or or do a And the comments in Go could be like a library call or a Go generate call or things like that.
Jonathan Hall:I know what it And
Shay Nehmad:they literally say, these things are obvious during a code review. So, you know, one big benefit, even though this does make me feel kinda icky, is I think most of the code people will generate and not write will not use the modern features. Because most of the training set, right, like if you tell an AI right now to, and without any like system prompt engineering trying to make it use the best practices and follow the new stuff and whatever. Just like a normal model out of the box, tell it, create a for loop. It will probably create the old style, right?
Shay Nehmad:Because it has a million examples of those, and not a lot of the new ones. And especially talking about things that come in 1.24, right? It doesn't have it in the training data at all. So, you know, I think using four range strings dot split instead of like, using that, the modernized analyzer is gonna suggest use split sig seek instead, right? I've never ridden split sig before, so I'd be super surprised if the AI is gonna auto complete that for me.
Shay Nehmad:But if it's gonna auto complete the old one, and then the linter's gonna be like, hey, hey, here's what you actually wanna use. And the, you know, Go PLS is not AI. It's deterministic and written by smart people. I think it sort of helps out with the fact that a lot of code is generated based on training on older practices, right? So I think that's a benefit.
Shay Nehmad:How do I upgrade? Do I need to do anything specific or will my IDE just do it for me?
Jonathan Hall:I I don't know which IDE you use, but I'm pretty sure Versus Code does it for you automatically, because I've been using this and I haven't tried to upgrade upgrade, so cool.
Shay Nehmad:So if you if you are using like some custom setup where you need to upgrade the CodePLS, our conclusion after discussion is that this is a net,
Jonathan Hall:good I would say so. If you disagree though, and you wanna go fight with somebody about it, Andrew and Helsinki
Shay Nehmad:Okay. Because they are
Jonathan Hall:That's the most awkward position.
Shay Nehmad:Worldly known as violent people.
Jonathan Hall:Helsinki is having a Go meetup on March 20, and they're looking for speakers. So you could go speak about your hatred for this new feature and, maybe pick
Shay Nehmad:up That's next week. That's, like, in seven days.
Jonathan Hall:Exactly. Gotta hurry.
Shay Nehmad:Yeah. So Yeah. Nikolay Kuznetsov, who's working on PJX Outbox, has invited everybody. And you can register oh, the event actually moved to March 18. So you even have Oh.
Shay Nehmad:Less time.
Jonathan Hall:Okay.
Shay Nehmad:Yeah. It's a good thing I opened the LinkedIn post. The LinkedIn post is in our show notes. So if you're in Helsinki or in the area, go visit. Looks like a pretty good meetup.
Shay Nehmad:Click house and go.
Jonathan Hall:It's gonna be at the Zalando office, which should be a fun place. I don't know what it's like at that location, but it's always fun to see company's offices.
Shay Nehmad:And if you're working with Click house in Go, they're gonna have a talk about it. I think this is a good point to stop for a second with all the news news, and talk about the TypeScript native port. We're not gonna dive into it fully, because like we said, we're looking for people who are connected to this project. If you know anyone, please let us know. We're trying to like reach out to them on social media, but that's not always the best way to get ahold of these people.
Shay Nehmad:If you don't know what this is, like, what is what are we talking about? Everybody's been talking about it, but, guess some people get their news through us, so we should tell them about it.
Jonathan Hall:What? Listen to a news podcast for news? So the news is that Microsoft has announced that they are rewriting TypeScript in Go. That doesn't mean that you'll be writing Go for the browser or anything like that. It means that the the transpiler that converts TypeScript into JavaScript that runs in the browser will be written in Go, and the headline reason is 10 times faster.
Jonathan Hall:Compilation times, not not TypeScript runtime. I don't I don't imagine that will be changing substantially.
Shay Nehmad:TypeScript is not a runtime. Exactly. It just compiles to JavaScript.
Jonathan Hall:Right. Right.
Shay Nehmad:And it's gonna compile to theoretically the same JavaScript.
Jonathan Hall:Yes. But it'll go faster. So it'll make your CI pipelines faster and your local NPM run dev and NPM build and those sorts of things. It should go faster once this project is And they have a video and a blog post and the GitHub issue about it, sort of talking about they considered many other languages, and Go is kind of the sweet spot they settled on.
Shay Nehmad:Yeah. The benchmarks they're showing here are super impressive. They're saying compiling the entire Versus Code code base, which is like a million and a half lines of code, is down from seventy seven seconds to seven point five seconds.
Jonathan Hall:Hundred and
Shay Nehmad:fifty seconds. Which is slightly more than a 10% speed up. Mhmm. Playwright, which is like, a lot of these libraries, let's see, they talk about the code the following code bases. Versus Code Playwright, TypeRM, date functions, tRPC, and RxJS.
Shay Nehmad:I'm using five Like, I've used five out of six in the last three months where I've started doing the TypeScript professionally in the back end. All of these are like 10 to 14 times faster, which is literally one order of magnitude faster. Super great for me. A lot of talk on why go, a lot of talk on how this works, a lot of talk about how this happened. And we're hoping to find someone, ideally we'll talk to Andre himself, if we can get some time on his calendar.
Shay Nehmad:If you can connect us, if you're working at Microsoft, we would really appreciate it. Yeah. They picked Go, which is interesting. A lot of the language stuff, like, I don't know, all the new Python tooling, like UV and rough is in Rust. I was surprised to see Go pick this tool here.
Shay Nehmad:But obviously, it makes a lot of sense from various reasons, especially it's very fast to develop.
Jonathan Hall:I'm excited to see what kind of spillover this will happen to other JavaScript tools. Because like ES Build is already written in Go and it's incredibly fast. But like, will we get other linters and other, build tools for the JavaScript because it's written in Go? I would expect we will, if only because this raises the awareness, but I suspect that there will be some tools that Microsoft builds that could easily be adapted to other problems. And it would just be great to have faster JavaScript build tools across the board, whether you're using TypeScript or Maybe
Shay Nehmad:things like Jest, like testing frameworks that are currently today in TypeScript and JavaScript mostly. And I feel they could be slightly faster. I always I always, when I work with these test execution tools versus like GoTest, I always feel a bit bad. But it's, yeah, radically improving TypeScript performance. If you're like me and you have to work with TypeScript in the back end, this is great, great news for you.
Shay Nehmad:Wait.
Jonathan Hall:And if you're John you're with TypeScript or you get to work with TypeScript?
Shay Nehmad:Well, you know what? I work with TypeScript in the back end.
Jonathan Hall:Uh-huh.
Shay Nehmad:And I have to work with Python in the back end. That's my current situation. So we don't we don't wanna dive too much into it if we can find someone who's an expert, so connect us to an expert. Please, please, please. And we'll keep it in the backlog, just in case we don't find one, and then we'll try to figure it out ourselves.
Shay Nehmad:Yeah. That does it for what we have time for this episode. We actually plan to talk a bit on more things, but this is a catch up episode. We'll we'll catch up to the backlog. If you if the Go community can stop innovating for two weeks and let me catch up, that would be really appreciated.
Shay Nehmad:And, let's take a short break.
Jonathan Hall:As we mentioned at the top of the show, this show is listener supported. That support comes in many different forms. You can support the show by sharing it with a friend, with a colleague, with a student, with your pets, with your wife, whoever you know, the neighbor, the mailman. Share this. We don't pay to advertise, so word-of-mouth is how people learn about the show.
Jonathan Hall:You can also support us financially if you want to on Patreon. Shy is checking right now to see if we have any new Patreons to
Shay Nehmad:shout out Shout out to Jay Martin, became a member of Copper Gopher. Awesome. And became a part of our beautiful beautiful audience, which is now 40, I think. 40. Not all of them are paying members, but, all of them are very appreciated.
Shay Nehmad:And you know, some of the people who have been here a while, and you know, it's $8 a month or โฌ8, like, you know, whoever, or how much you wanna give, but some people have been here for a while and these numbers like add up. You know, some people have almost paid for a full episode and and things like that. That's super super appreciated. This is a hobby. This is a hobby, but it's an expensive one.
Shay Nehmad:We need to pay for editing, we need to pay for hosting fees, obviously our time into doing the show. So it's a hobby we do to learn about Go, like how else would I know what the IPv6 zone IDs are. But this helps this helps a lot. Thanks a lot to all our beautiful Patreons, the newest one Jay Martin.
Jonathan Hall:Thanks, Jay.
Shay Nehmad:And the previous one is Jamie. And three before that is, Jose. So if your name starts with j, you're a good fit to our Patreon audience. Yeah. Jens and and There are a lot of j's in in this crowd.
Jonathan Hall:The other way you could support us is just by, joining our Kupago Slack channel. We have 498 members there. So if you're not already there, wait for one other person to come in first so you can be 500. But come join us there. We just chat about Go stuff that's not really very structured.
Jonathan Hall:You can share news items there, meetups, conferences, blog posts, anything of relevance or irrelevance is welcome there too. And of course, could leave a rating or review wherever you listen to your podcasts. That would also be helpful.
Shay Nehmad:One last quote unquote sponsor for this week's episode is my new company, Opsen. Oh. If you're in the Bay Area and you wanna come do engineering with me, we're looking for one, founding engineer. Just like one role to fill in the final piece of the puzzle of the founding team. You gotta be pretty experienced, but just, you can talk to me on-site.
Jonathan Hall:And you get to use TypeScript and Python?
Shay Nehmad:Don't let me You get to work with me. Isn't that enough? Yeah. So opsinsecurity.com/careers, if you wanna join the team. I'm having a lot of fun.
Shay Nehmad:Like, I'm I'm bashing TypeScript and Python a little bit just because you gotta complain about something. But obviously, I'm enjoying this new place very much. Otherwise, I wouldn't be putting it on the show. Because I've been with the show for like two years, and I've been here just like one month. So, you know, it's pretty good.
Jonathan Hall:All right. Well, stick around. We have a couple lightning round items before we wrap up the show.
Shay Nehmad:Lightning round. First submission for the lightning round is the ASDF Go rewrite. So we talked about, you know, the big TypeScript rewrite because that has a lot of reach, but I actually love the rewrite of ASDF. ASDF is a tool that, like, it used to be a bunch of bash scripts that help you, like, install stuff and and manage your environment and things like that. I've actually used it and then stopped using it, but it's it's pretty good.
Shay Nehmad:You like ASDF, I want this Python. ASDF, I want this Node version, whatever whatever. I've ended up using the specific, environment tools for each one. So I use UV for Python and NVM for Node. Like, I have my tool set that I already know, but instead of a bunch of shell scripts that mess around with your bash like environment, this is now a single binary written in Go.
Shay Nehmad:And it's seven times faster. So that's great. I love these rewrites. Like a tool gets solid enough for performance to be the issue, and then you pick Go as a good language. Mhmm.
Shay Nehmad:And again, the main issue was performance, but also maintainability. Like early on, Bash served them well, but then it's kinda harder to work with it, you know. And people contributed wrong bug fixes, and it's hard to see type issues, blah blah blah. Arrays in Bash is very difficult. In Bash, everything is just a string.
Shay Nehmad:They go through this entire blog post, you can check it out. And if you wanna join like a pretty big and fun project, this is a good time to do it, because now it's in Go.
Jonathan Hall:So, Shai, do you think they use Cloudflare over there at ASDF?
Shay Nehmad:Well, I assume they do. Like, a lot of the Internet traffic in general goes through Cloudflare.
Jonathan Hall:Yeah. Right. Cloudflare has recently published an interesting article with a whole bunch of statistics about Internet traffic because they see such large percentages of internet traffic. They can do some analysis on this traffic and come up with some interesting statistics. And one of the statistics they publish, it says, We analyzed API traffic to identify the top languages used to develop API clients.
Jonathan Hall:So assuming this is a representative sample of the entire internet, what percentage of API traffic is done using clients written in a particular language and Go comes out the highest, just edging out Node. Js and Python. That's kind of interesting. I'm really curious how they determine that for one thing. And I imagine there's lot of API traffic they just can't determine at all.
Jonathan Hall:So it's like this unknown bucket of stuff. But even so, it's interesting that Go APIs are so popular out there.
Shay Nehmad:It just goes to show that for specific workloads, Go is the number one choice today, I think. Just in terms of popularity. And one, my final thing for the roundup is very similar to the ASDF one. It's about NVM Windows. So a few episodes ago, I don't remember when I mentioned this project, NVM Windows, because it had a new release, which is NVM, which helps you version, like manage node versions on your machine, but for Windows.
Shay Nehmad:It has a section about like why write it in Go and not write it in Node. And I really like the part in the read me, which says, well, I wanted to experiment with Go, which is why I picked Go over other languages. But the reason I didn't write NVM with a node is because writing tool with a tool you're trying to install doesn't make a lot of sense to me. And this is something I felt a lot of times with Python tooling, where you have like great Python tooling, but the bootstrapping experience is horrible because you have to install some Python runtime, and then your machine is already, like, it already has two different Pythons on its path, super annoyed. Obviously, makes sense to write it in, not necessarily in a different language, but just ship it as a single binary.
Shay Nehmad:And Go is a good option for that, right?
Jonathan Hall:Yeah, makes sense.
Shay Nehmad:So I just like that.
Jonathan Hall:So now you can run nvm written in Go, TypeScript written in Go, ES Build written in Go. We're getting there.
Shay Nehmad:Yeah, for sure.
Jonathan Hall:Go's taking over the the world.
Shay Nehmad:Go go would do all the things. I just I just like the fact that, you know, that's the specific part of the readme is the thing I'm bringing to the Lightning Ground, not the entire project.
Jonathan Hall:Right.
Shay Nehmad:But if you wanna do NVM on Windows, that's another good option.
Jonathan Hall:Cool. Well, I think that's a show. It's good to talk to you again, Chai. It's good to ramble about Go.
Shay Nehmad:Yeah. And same time zone. We have, like, similar energy because it's, like, early lunch for both of us.
Jonathan Hall:Exactly.
Shay Nehmad:Cool. If anybody's in the Bay Area and wants to hang out, I'm here now. I like people who wanted to hang out when I was in Tel Aviv and in Hertilia. So now I'm in the Bay Area, if you are as well. Talk to me on Slack.
Shay Nehmad:I haven't set up Slack on this machine yet, but I will after this lunch.
Jonathan Hall:Awesome. Until next time.
Shay Nehmad:Yeah. Have a nice weekend, everybody. Right? That's the time zone. Yeah.
Shay Nehmad:Yeah. We're good. Have a nice weekend, everybody. And that's it. Program exited.
Shay Nehmad:Bye bye. Program exited. Goodbye.