âœī¸ Rewriting all the things in Go! 🎉 - podcast episode cover

âœī¸ Rewriting all the things in Go! 🎉

Mar 14, 2025â€ĸ30 minâ€ĸEp. 102
--:--
--:--
Listen in podcast apps:
Metacast
Spotify
Youtube
RSS

Episode description

Transcript

Shay NehmadShay Nehmad

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 HallJonathan Hall

And I'm Jonathan Hall.

Shay NehmadShay Nehmad

And I'm back.

Jonathan HallJonathan Hall

You're back. Welcome back, man.

Shay NehmadShay 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. 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.

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 HallJonathan Hall

fun to talk to him.

Shay NehmadShay Nehmad

You say, on the as as opposed to what you're having to do right now.

Jonathan HallJonathan Hall

I like talking to you too, Shai. I've missed you.

Shay NehmadShay Nehmad

Thank you. Alright. We have a show. Let's do a show.

Jonathan HallJonathan Hall

Let's do it.

Shay NehmadShay 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.

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 HallJonathan Hall

Here we go.

Shay NehmadShay 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.

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 HallJonathan 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 NehmadShay Nehmad

Did they at the time teach you IPv4 is gonna run out soon and immediately Yeah. You have to

Jonathan HallJonathan 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 NehmadShay 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 HallJonathan Hall

table Oh yeah. Mhmm.

Shay NehmadShay 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. And it is actually widely used despite all the cynicism I just pointed at it.

Jonathan HallJonathan Hall

Mhmm.

Shay NehmadShay 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 HallJonathan Hall

I I'm vaguely aware of that. It's a concept. I don't know what they mean.

Shay NehmadShay 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 HallJonathan Hall

It looks like sets of four digit hexadecimals with some randomly placed colons and periods. I don't

Shay NehmadShay Nehmad

even remember Yeah. You have colons

Jonathan HallJonathan Hall

to separate order of anything. Yeah.

Shay NehmadShay 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.

They're not actually part of the address. They're just like helpers, like hints. Almost like documentation.

Jonathan HallJonathan Hall

It's kinda like the part after the hash sign on the URL then. They're like

Shay NehmadShay 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?

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?

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.

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. 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 HallJonathan 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 NehmadShay Nehmad

And thanks again for to Yeho for Yeah. Providing us with all these educational security patches.

Jonathan HallJonathan 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 NehmadShay 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. You know what

Jonathan HallJonathan Hall

I mean?

Shay NehmadShay 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 HallJonathan Hall

You're too busy? No. Okay.

Shay NehmadShay 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 HallJonathan Hall

I know I know how you can get a bunch of that time back.

Shay NehmadShay Nehmad

Oh, really? Yeah. The new How's that for a segue?

Jonathan HallJonathan 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. 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 NehmadShay Nehmad

Modernizr Analyzer sounds good. It's like a Radiohead album. It's a good Android that Modernizr or Al and I.

Jonathan HallJonathan 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.

You think they'll use that?

Shay NehmadShay 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. A good one is replacing interface.

Jonathan HallJonathan Hall

Like

Shay NehmadShay 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.

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.

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 HallJonathan Hall

I don't I don't share the feelings. I don't know. So I've had a

Shay NehmadShay Nehmad

look You think it's a good one?

Jonathan HallJonathan 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.

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 NehmadShay 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?

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.

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. 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 HallJonathan 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 NehmadShay 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 HallJonathan 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 NehmadShay 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 HallJonathan Hall

I know what it And

Shay NehmadShay 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?

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.

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. How do I upgrade? Do I need to do anything specific or will my IDE just do it for me?

Jonathan HallJonathan 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 NehmadShay 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 HallJonathan Hall

good I would say so. If you disagree though, and you wanna go fight with somebody about it, Andrew and Helsinki

Shay NehmadShay Nehmad

Okay. Because they are

Jonathan HallJonathan Hall

That's the most awkward position.

Shay NehmadShay Nehmad

Worldly known as violent people.

Jonathan HallJonathan 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 NehmadShay Nehmad

up That's next week. That's, like, in seven days.

Jonathan HallJonathan Hall

Exactly. Gotta hurry.

Shay NehmadShay 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. Less time.

Jonathan HallJonathan Hall

Okay.

Shay NehmadShay 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. Click house and go.

Jonathan HallJonathan 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 NehmadShay 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.

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 HallJonathan 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. Compilation times, not not TypeScript runtime. I don't I don't imagine that will be changing substantially.

Shay NehmadShay Nehmad

TypeScript is not a runtime. Exactly. It just compiles to JavaScript.

Jonathan HallJonathan Hall

Right. Right.

Shay NehmadShay Nehmad

And it's gonna compile to theoretically the same JavaScript.

Jonathan HallJonathan 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 NehmadShay 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 HallJonathan Hall

Hundred and

Shay NehmadShay 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.

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.

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. But obviously, it makes a lot of sense from various reasons, especially it's very fast to develop.

Jonathan HallJonathan 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 NehmadShay 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. Wait.

Jonathan HallJonathan Hall

And if you're John you're with TypeScript or you get to work with TypeScript?

Shay NehmadShay Nehmad

Well, you know what? I work with TypeScript in the back end.

Jonathan HallJonathan Hall

Uh-huh.

Shay NehmadShay 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.

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. And, let's take a short break.

Jonathan HallJonathan 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. 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 NehmadShay 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.

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.

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 HallJonathan Hall

Thanks, Jay.

Shay NehmadShay 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 HallJonathan 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.

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 NehmadShay 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 HallJonathan Hall

And you get to use TypeScript and Python?

Shay NehmadShay 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. 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 HallJonathan Hall

All right. Well, stick around. We have a couple lightning round items before we wrap up the show.

Shay NehmadShay 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.

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.

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.

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. 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 HallJonathan Hall

So, Shai, do you think they use Cloudflare over there at ASDF?

Shay NehmadShay Nehmad

Well, I assume they do. Like, a lot of the Internet traffic in general goes through Cloudflare.

Jonathan HallJonathan 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.

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. So it's like this unknown bucket of stuff. But even so, it's interesting that Go APIs are so popular out there.

Shay NehmadShay 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.

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.

And Go is a good option for that, right?

Jonathan HallJonathan Hall

Yeah, makes sense.

Shay NehmadShay Nehmad

So I just like that.

Jonathan HallJonathan Hall

So now you can run nvm written in Go, TypeScript written in Go, ES Build written in Go. We're getting there.

Shay NehmadShay Nehmad

Yeah, for sure.

Jonathan HallJonathan Hall

Go's taking over the the world.

Shay NehmadShay 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 HallJonathan Hall

Right.

Shay NehmadShay Nehmad

But if you wanna do NVM on Windows, that's another good option.

Jonathan HallJonathan 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 NehmadShay Nehmad

Yeah. And same time zone. We have, like, similar energy because it's, like, early lunch for both of us.

Jonathan HallJonathan Hall

Exactly.

Shay NehmadShay 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. I haven't set up Slack on this machine yet, but I will after this lunch.

Jonathan HallJonathan Hall

Awesome. Until next time.

Shay NehmadShay Nehmad

Yeah. Have a nice weekend, everybody. Right? That's the time zone. Yeah. Yeah. We're good. Have a nice weekend, everybody. And that's it. Program exited. Bye bye. Program exited. Goodbye.

Transcript source: Provided by creator in RSS feed: download file
For the best experience, listen in Metacast app for iOS or Android
Open in Metacast