All Episodes

March 14, 2025 â€ĸ 30 mins
Mark as Played
Transcript

Episode Transcript

Available transcripts are automatically generated. Complete accuracy is not guaranteed.
Shay Nehmad (00:00):
This show is supported by you. Stick around
till the ad break to hear moreabout that. This is CapaGo for
03/14/2025. Keep up to date withthe important happenings in the

(00:20):
Go community in about fifteenminutes per week. I'm Shay
Nehmad.

Jonathan Hall (00:23):
And I'm Jonathan Hall.

Shay Nehmad (00:25):
And I'm back.

Jonathan Hall (00:25):
You're back. Welcome back, man.

Shay Nehmad (00:27):
Thank you. How's sunny California? California is
rainy. It's not sunny at themoment. I'm in beautiful San
Ramon at the moment, looking ata lake.
But let's be honest, I'mactually at the WeWork, like,
phone booth jail cell combo, youknow the ones. I know the ones.
So I'm in one of those at themoment, because I don't wanna
disturb all of my WeWorkneighbors. But yeah, I'm in The

(00:49):
United States. Cool.
Thanks a lot to Lane Lane Wagnerfor coming on the show, covering
for me last week. You did areally, really good job, man.
Shout out to Lane and to boot.Dev. Thanks a lot for Always

Jonathan Hall (01:04):
fun to talk to him.

Shay Nehmad (01:05):
You say, on the as as opposed to what you're having
to do right now.

Jonathan Hall (01:10):
I like talking to you too, Shai. I've missed you.

Shay Nehmad (01:13):
Thank you. Alright. We have a show. Let's do a show.

Jonathan Hall (01:17):
Let's do it.

Shay Nehmad (01:18):
Today we wanna talk about security release, some
changes to Go Please, HelsinkiMeetup, some projects that we
wanted to mention, theTypeScript thing everybody's
talking about, we'll justbriefly mention. We don't wanna
do it this week because we'relooking to talk to someone who
is actually working on it. Ifyou know someone who's working

(01:41):
on the TypeScript port to go,let us know, because we are
interested in getting more thanjust what the article says,
which is go fast. I think we allknow go is fast. Go go better.
That's that's a easy conclusionto reach. And some proposals. So
we have a lot to get through. Wehave some cool stuff for the

(02:02):
Lightning Round as well. Let'sjump into it.

Jonathan Hall (02:04):
Here we go.

Shay Nehmad (02:05):
Let's start with the announcement of a security
release. This one is a prettyfun one. One hundred 20 four
point one and one hundred 20three point seven are released
with security effects following,you know, the normal security
policy in NetHttp, NetProxy, andHTTP proxy. This one's, by the
way, also reported by Yuho. Ifyou're a long time listener, you

(02:26):
probably know that name as likethe single person who's with the
finger in the dam holding backall the security problems in Go,
basically.
And this one's about IPv6. Idon't know how you feel about
these addresses, Jonathan, butI've become very cynical of them
in the last, like, twelve years.Yeah. I started learning how did

(02:46):
you, like, learn networking? Orhow did you get started?

Jonathan Hall (02:49):
Well, I got started well, so I ran an ISP, a
dial up ISP back when that wasstill a thing. And did learn
yeah. That's how I learnedBitwise operations and had a
masks and all that stuff withIPv4.

Shay Nehmad (03:01):
Did they at the time teach you IPv4 is gonna run
out soon and immediately Yeah.You have to

Jonathan Hall (03:08):
pay extra for an IP address if you wanna fix one
because there's a limitedsupply, they're gonna run out.
IPv6 is the magical solution.It's better than AI and and
blockchain. It's gonna solveeverybody. Yeah.

Shay Nehmad (03:20):
You heard it here. Invest in IPv6 addresses now.
It's a new goal. So yeah, I'vebeen like, I when I started
learning networking, they likegave me computer networks by
Tenenbaum, you know, that likehuge book you can level a

Jonathan Hall (03:32):
table Oh yeah. Mhmm.

Shay Nehmad (03:33):
They just studied this back and forth. Then they,
you know, they told me IPv4 isgonna run out. You're gonna have
to, everybody's gonna use IPv6.And look, 2025, and we're
actually okay. So the problemwith this thing is that many
people had to implement it, andit is used.
And it is actually widely useddespite all the cynicism I just

(03:56):
pointed at it.

Jonathan Hall (03:57):
Mhmm.

Shay Nehmad (03:57):
But it's more complicated. It's more
complicated than IPv4 addresses,which is why people keep finding
security bugs in it. Because theimplementation is not like top
priority for anyone. So itdoesn't get enough attention
then gets And the spec is overlycomplicated in my opinion,
leading to security issues likethese ones. Do you know that
IPv6 addresses have zone IDs?

Jonathan Hall (04:21):
I I'm vaguely aware of that. It's a concept. I
don't know what they mean.

Shay Nehmad (04:25):
I did. I wasn't aware. And I learned, like, the
IPv6 properly just because youdon't have to use it, you'd end
up forgetting. Yeah. So IPv6address, when you imagine it,
how does it look?

Jonathan Hall (04:37):
It looks like sets of four digit hexadecimals
with some randomly placed colonsand periods. I don't

Shay Nehmad (04:43):
even remember Yeah. You have colons

Jonathan Hall (04:44):
to separate order of anything. Yeah.

Shay Nehmad (04:46):
Apparently, there's a percent sign as well. After
the percent sign, you can put ina zone ID, which helps you like
identify, like helps yourcomputer route packets to the
correct address. So if you wannasend something and you have both
IPv4 and IPv6, if you have thezone ID, it might prioritize the
IPv6 one. And the zone ID can beanything. Like, zone identifiers

(05:12):
have purely local meaning.
They're not actually part of theaddress. They're just like
helpers, like hints. Almost likedocumentation.

Jonathan Hall (05:20):
It's kinda like the part after the hash sign on
the URL then. They're like

Shay Nehmad (05:23):
Yeah. Yeah, in a sense. Okay. But it's part of
the address. Like, in the in theURL, I'm already imagining it's
very applicative, so it's noproblem to add whatever you
want, right?
Because parse it however youlike. But putting like,
basically documentation so lowin the stack, at least to me,
feels very peculiar. Mhmm. Thesecurity issue with this feature
of IPv6 zone IDs is when youpass a It's pretty funny, but

(05:49):
when you pass a IPv6 address toa proxy server, and the zone ID
is actually an address, like aDNS address, you sort of poison
the proxy to take the host. Solet's take the most basic IPv6

(06:09):
address of all, which is localhost, which is colon colon one,
right?
Colon colon one is the IPv6address for local host. If you
put the zone ID asstar.example.com, and you pass
that to the Go HTTP proxy, youraddress will get matched and,
like, not proxy. Got it. So Ithink this is a pretty edge

(06:30):
case. Like, the only the onlyreason you would actually care
about this is a, you have, like,dependable things that you must
fix for a a security audit, orif you're, like, the one person
who's developing a GUI where youtake untrusted addresses from
users or from a database and putthem into a Go proxy.
But still, better than notfixing it, I guess. Yep.

(06:52):
Although there might be moresurface attack surfaces that I'm
not thinking about. But hey, ifyou didn't know about IPv6 zone
IDs, now you know. And in anycase, like we always recommend
you should just upgrade.
You know, this is just onesecurity fix, so this update
will probably not break yourbuild. And who knows if like one
of your libraries does use thissomehow, right?

Jonathan Hall (07:13):
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 (07:22):
And thanks again for to Yeho for Yeah. Providing
us with all these educationalsecurity patches.

Jonathan Hall (07:29):
I love it that somebody else is willing to
understand all theseintricacies. So I don't have to
bother. I could just do go get

Shay Nehmad (07:36):
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 Hall (07:47):
I mean?

Shay Nehmad (07:48):
But on the other hand, I'm like, my eyes
immediately get glazed over. Ithink there's a market for
translating RFCs to like TikTok60 videos. But I'm not gonna
fulfill that market. You'reyou're not gonna do that one?

Jonathan Hall (08:01):
You're too busy? No. Okay.

Shay Nehmad (08:03):
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 withMinuteMax.

Jonathan Hall (08:10):
I know I know how you can get a bunch of that time
back.

Shay Nehmad (08:12):
Oh, really? Yeah. The new How's that for a segue?

Jonathan Hall (08:17):
That's a great one. The new Go Please is out.
This actually is about threeweeks old, we haven't had a show
since then. So well, we haven'thad one together since then.
Anyway, Go Please version0.18.0.
That's a whole bunch of coolthings. Some of them look cool,
but the one that will help youout is the new Modernizr
Analyzer. Modernizr Analyzer.

Shay Nehmad (08:35):
Modernizr Analyzer sounds good. It's like a
Radiohead album. It's a goodAndroid that Modernizr or Al and
I.

Jonathan Hall (08:42):
Yeah. So, like, you remember back in the old
days of Go, if you wanted to getthe maximum of two numbers, had
to do this silly little, if if ais greater than b, then b
equals, you know, whatever, hadto. Then they decided that that
was silly and like computers aregood at doing min and max, so
they added min and max to the asbuilt in functions. Well,

(09:05):
modernize will detect thosefunny little if elses and tell
you to trigger them or to changethem to min and max and other
sim similar sorts of changes. Sothat's what this new modernize
does.
You think they'll use that?

Shay Nehmad (09:20):
I think overall, this is a good approach, but I'm
worried about Go is very famousfor having one way to do things.
And if you got to the pointwhere Go, please, has to
modernize your code, what doesthat mean? Does that mean that
there are many ways to do thingsin Go actually, and that promise
is not true anymore? And likewhich cases does it cover? Like

(09:43):
all of them are safe.
A good one is replacinginterface.

Jonathan Hall (09:49):
Like

Shay Nehmad (09:49):
if you have interface open paren, close
paren, it replaces it with any.Yep. Right? So, to me, these two
things mean exactly the samething because I lived through Go
1.8, and I don't see anyspecific benefit for using any.
Like, if you can replace thecode automatically, it might be
nicer, but, and there are somecases where I actually agree

(10:13):
it's better.
But I'm not a % sure all of themare worth like the change and it
has to go through code review. Idon't know why I have an
antagonistic feeling towardsthis, because overall it's a
good thing. Know, for example,the with cancel context that we
talked about in Go 124, which issuper new, right? And omit empty

(10:34):
versus omit zero instruct, whichis also Go 124 and also super
new. These are like two superuseful features I would love
people to know about.
And obviously not everybody'slistening to our show, but if
you're linter, if like Go Pleaseis telling you, hey, if your ID
is like popping, hey, you canmodernize this. This is an
actually a much better way tolet people know about these
features. But it it feels ickyto me, and I'm not sure why.

(10:58):
Maybe maybe you can like explainthis feeling.

Jonathan Hall (11:00):
I don't I don't share the feelings. I don't
know. So I've had a

Shay Nehmad (11:04):
look You think it's a good one?

Jonathan Hall (11:05):
Well, it it I mean, maybe there might be some
examples where it's not, but ofthe examples I talked about, I
like it. So switching interfaceopen close to Any, I did that a
long time ago. I have an linterthat told me, and I just did it
all at once for the code bases Iwas involved in. There's a
couple rare cases where I don'tlike it, where I prefer the
interface open close paren orsquiggly. And that's like where

(11:28):
I'm actually building aninterface and I just haven't put
methods in it yet, where I sortof placeholder.
But that's just a minor casethat it's bit me maybe twice in
the last year or something. Forminimax, I actually prefer
switching to the minimax or evencmp.org. It's it's not a built
in function, but it's arelatively new capability that
can help you get rid of someifelses. I like those because

(11:52):
they, when they're not overlyclever, because they mean less
code to read and the intent ismore obvious.

Shay Nehmad (12:00):
All of these suggestions are are only
simplifying in my opinion. Likeusing slices dot sort instead of
Mhmm. Like source dot slice xfunc. So I think this is just
like sort of hinting you towardshow to simplify and clarify
existing code by using stuffthat they added over the years.
So min and max is the simplestexample before a year ago we

(12:22):
talked about ending, rangingover ints, right?
Yeah. All the focus was drawn byranging over functions, was the
actual big change. But now youhave all these three clauses in
for loops, right? Where inPython I never write those,
right? I never I I never wouldgo like for I equals zero, I is
smaller than n, I plus plus.

(12:43):
Yeah. But just because I I InGo, 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 gettingused to it, but it definitely
looks nicer. So this analyzerwould assist me in recognizing
that, hey, I can use that here.
And I don't wanna remember allthese cases by heart, right? I

(13:04):
don't wanna remember all thesenew features. I just wanna I
want them to pop up in context.

Jonathan Hall (13:11):
On your point about going through another code
review cycle, I I think this isa place I I don't know if Go
Please will automatically dothese updates for

Shay Nehmad (13:18):
you if you tell it to. You can. You can't pass a
minus fix, and then you youactually have to run it a couple
of times until it figureseverything out, because some
cases, you know, you you somecases actually have you fix it
once, and then the inside of theloop was another thing, and they
Yeah. It won't do both changesat the same time. You have to do
a couple of passes.

Jonathan Hall (13:34):
But like that's the kind of thing where if you
have a pull request that iscompletely done by a tool, in
principle, you could skip codereview. Of course, it's up to
your team's policy. But yeah, Idon'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 thetool are conservative.

Shay Nehmad (13:55):
I'll counter that and I'll say that the new
modernized analyzer team hassaid that they are aware of bugs
in the analyzer's fixes. It maycause an import to become unused
or delete like comments, or ordo a And the comments in Go
could be like a library call ora Go generate call or things

(14:15):
like that.

Jonathan Hall (14:16):
I know what it And

Shay Nehmad (14:17):
they literally say, these things are obvious during
a code review. So, you know, onebig benefit, even though this
does make me feel kinda icky, isI think most of the code people
will generate and not write willnot use the modern features.
Because most of the trainingset, right, like if you tell an

(14:38):
AI right now to, and without anylike system prompt engineering
trying to make it use the bestpractices and follow the new
stuff and whatever. Just like anormal model out of the box,
tell it, create a for loop. Itwill probably create the old
style, right?
Because it has a millionexamples of those, and not a lot
of the new ones. And especiallytalking about things that come
in 1.24, right? It doesn't haveit in the training data at all.

(15:00):
So, you know, I think using fourrange strings dot split instead
of like, using that, themodernized analyzer is gonna
suggest use split sig seekinstead, right? I've never
ridden split sig before, so I'dbe super surprised if the AI is
gonna auto complete that for me.
But if it's gonna auto completethe old one, and then the

(15:22):
linter's gonna be like, hey,hey, here's what you actually
wanna use. And the, you know, GoPLS is not AI. It's
deterministic and written bysmart people. I think it sort of
helps out with the fact that alot 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 todo anything specific or will my

(15:44):
IDE just do it for me?

Jonathan Hall (15:45):
I I don't know which IDE you use, but I'm
pretty sure Versus Code does itfor you automatically, because
I've been using this and Ihaven't tried to upgrade
upgrade, so cool.

Shay Nehmad (15:54):
So if you if you are using like some custom setup
where you need to upgrade theCodePLS, our conclusion after
discussion is that this is anet,

Jonathan Hall (16:02):
good I would say so. If you disagree though, and
you wanna go fight with somebodyabout it, Andrew and Helsinki

Shay Nehmad (16:08):
Okay. Because they are

Jonathan Hall (16:11):
That's the most awkward position.

Shay Nehmad (16:12):
Worldly known as violent people.

Jonathan Hall (16:16):
Helsinki is having a Go meetup on March 20,
and they're looking forspeakers. So you could go speak
about your hatred for this newfeature and, maybe pick

Shay Nehmad (16:23):
up That's next week. That's, like, in seven
days.

Jonathan Hall (16:26):
Exactly. Gotta hurry.

Shay Nehmad (16:28):
Yeah. So Yeah. Nikolay Kuznetsov, who's working
on PJX Outbox, has invitedeverybody. And you can register
oh, the event actually moved toMarch 18. So you even have Oh.
Less time.

Jonathan Hall (16:41):
Okay.

Shay Nehmad (16:42):
Yeah. It's a good thing I opened the LinkedIn
post. The LinkedIn post is inour show notes. So if you're in
Helsinki or in the area, govisit. Looks like a pretty good
meetup.
Click house and go.

Jonathan Hall (16:54):
It's gonna be at the Zalando office, which should
be a fun place. I don't knowwhat it's like at that location,
but it's always fun to seecompany's offices.

Shay Nehmad (17:01):
And if you're working with Click house in Go,
they're gonna have a talk aboutit. I think this is a good point
to stop for a second with allthe 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. Ifyou know anyone, please let us

(17:23):
know. We're trying to like reachout to them on social media, but
that's not always the best wayto get ahold of these people.
If you don't know what this is,like, what is what are we
talking about? Everybody's beentalking about it, but, guess
some people get their newsthrough us, so we should tell
them about it.

Jonathan Hall (17:37):
What? Listen to a news podcast for news? So the
news is that Microsoft hasannounced that they are
rewriting TypeScript in Go. Thatdoesn't mean that you'll be
writing Go for the browser oranything like that. It means
that the the transpiler thatconverts TypeScript into
JavaScript that runs in thebrowser will be written in Go,

(18:00):
and the headline reason is 10times faster.
Compilation times, not notTypeScript runtime. I don't I
don't imagine that will bechanging substantially.

Shay Nehmad (18:10):
TypeScript is not a runtime. Exactly. It just
compiles to JavaScript.

Jonathan Hall (18:13):
Right. Right.

Shay Nehmad (18:14):
And it's gonna compile to theoretically the
same JavaScript.

Jonathan Hall (18:16):
Yes. But it'll go faster. So it'll make your CI
pipelines faster and your localNPM run dev and NPM build and
those sorts of things. It shouldgo faster once this project is
And they have a video and a blogpost and the GitHub issue about
it, sort of talking about theyconsidered many other languages,
and Go is kind of the sweet spotthey settled on.

Shay Nehmad (18:37):
Yeah. The benchmarks they're showing here
are super impressive. They'resaying compiling the entire
Versus Code code base, which islike a million and a half lines
of code, is down from seventyseven seconds to seven point
five seconds.

Jonathan Hall (18:51):
Hundred and

Shay Nehmad (18:51):
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 talkabout the code the following
code bases. Versus CodePlaywright, TypeRM, date
functions, tRPC, and RxJS.
I'm using five Like, I've usedfive out of six in the last
three months where I've starteddoing the TypeScript

(19:13):
professionally in the back end.All of these are like 10 to 14
times faster, which is literallyone order of magnitude faster.
Super great for me. A lot oftalk on why go, a lot of talk on
how this works, a lot of talkabout how this happened. And
we're hoping to find someone,ideally we'll talk to Andre
himself, if we can get some timeon his calendar.

(19:34):
If you can connect us, if you'reworking at Microsoft, we would
really appreciate it. Yeah. Theypicked Go, which is interesting.
A lot of the language stuff,like, I don't know, all the new
Python tooling, like UV andrough is in Rust. I was
surprised to see Go pick thistool here.
But obviously, it makes a lot ofsense from various reasons,

(19:55):
especially it's very fast todevelop.

Jonathan Hall (19:58):
I'm excited to see what kind of spillover this
will happen to other JavaScripttools. Because like ES Build is
already written in Go and it'sincredibly fast. But like, will
we get other linters and other,build tools for the JavaScript
because it's written in Go? Iwould expect we will, if only
because this raises theawareness, but I suspect that

(20:20):
there will be some tools thatMicrosoft builds that could
easily be adapted to otherproblems. And it would just be
great to have faster JavaScriptbuild tools across the board,
whether you're using TypeScriptor Maybe

Shay Nehmad (20:33):
things like Jest, like testing frameworks that are
currently today in TypeScriptand JavaScript mostly. And I
feel they could be slightlyfaster. I always I always, when
I work with these test executiontools versus like GoTest, I
always feel a bit bad. But it's,yeah, radically improving
TypeScript performance. Ifyou're like me and you have to

(20:54):
work with TypeScript in the backend, this is great, great news
for you.
Wait.

Jonathan Hall (20:57):
And if you're John you're with TypeScript or
you get to work with TypeScript?

Shay Nehmad (21:00):
Well, you know what? I work with TypeScript in
the back end.

Jonathan Hall (21:05):
Uh-huh.

Shay Nehmad (21:05):
And I have to work with Python in the back end.
That's my current situation. Sowe don't we don't wanna dive too
much into it if we can findsomeone who's an expert, so
connect us to an expert. Please,please, please. And we'll keep
it in the backlog, just in casewe don't find one, and then
we'll try to figure it outourselves.
Yeah. That does it for what wehave time for this episode. We

(21:26):
actually plan to talk a bit onmore things, but this is a catch
up episode. We'll we'll catch upto the backlog. If you if the Go
community can stop innovatingfor two weeks and let me catch
up, that would be reallyappreciated.
And, let's take a short break.

Jonathan Hall (21:48):
As we mentioned at the top of the show, this
show is listener supported. Thatsupport comes in many different
forms. You can support the showby sharing it with a friend,
with a colleague, with astudent, with your pets, with
your wife, whoever you know, theneighbor, 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 usfinancially if you want to on

(22:08):
Patreon. Shy is checking rightnow to see if we have any new
Patreons to

Shay Nehmad (22:11):
shout out Shout out to Jay Martin, became a member
of Copper Gopher. Awesome. Andbecame a part of our beautiful
beautiful audience, which is now40, I think. 40. Not all of them
are paying members, but, all ofthem are very appreciated.
And you know, some of the peoplewho have been here a while, and

(22:35):
you know, it's $8 a month or â‚Ŧ8,like, you know, whoever, or how
much you wanna give, but somepeople have been here for a
while and these numbers like addup. You know, some people have
almost paid for a full episodeand and things like that. That's
super super appreciated. This isa hobby. This is a hobby, but
it's an expensive one.

(22:55):
We need to pay for editing, weneed to pay for hosting fees,
obviously our time into doingthe show. So it's a hobby we do
to learn about Go, like how elsewould I know what the IPv6 zone
IDs are. But this helps thishelps a lot. Thanks a lot to all
our beautiful Patreons, thenewest one Jay Martin.

Jonathan Hall (23:11):
Thanks, Jay.

Shay Nehmad (23:12):
And the previous one is Jamie. And three before
that is, Jose. So if your namestarts 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 (23:28):
The other way you could support us is just by,
joining our Kupago Slackchannel. We have 498 members
there. So if you're not alreadythere, wait for one other person
to come in first so you can be500. But come join us there. We
just chat about Go stuff that'snot really very structured.
You can share news items there,meetups, conferences, blog

(23:51):
posts, anything of relevance orirrelevance is welcome there
too. And of course, could leavea rating or review wherever you
listen to your podcasts. Thatwould also be helpful.

Shay Nehmad (24:01):
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 doengineering with me, we're
looking for one, foundingengineer. Just like one role to
fill in the final piece of thepuzzle of the founding team. You
gotta be pretty experienced, butjust, you can talk to me

(24:22):
on-site.

Jonathan Hall (24:23):
And you get to use TypeScript and Python?

Shay Nehmad (24:25):
Don't let me You get to work with me. Isn't that
enough? Yeah. Soopsinsecurity.com/careers, if
you wanna join the team. I'mhaving a lot of fun.
Like, I'm I'm bashing TypeScriptand Python a little bit just
because you gotta complain aboutsomething. But obviously, I'm
enjoying this new place verymuch. Otherwise, I wouldn't be
putting it on the show. BecauseI've been with the show for like
two years, and I've been herejust like one month. So, you

(24:48):
know, it's pretty good.

Jonathan Hall (24:49):
All right. Well, stick around. We have a couple
lightning round items before wewrap up the show.

Shay Nehmad (24:57):
Lightning round. First submission for the
lightning round is the ASDF Gorewrite. So we talked about, you
know, the big TypeScript rewritebecause that has a lot of reach,
but I actually love the rewriteof ASDF. ASDF is a tool that,
like, it used to be a bunch ofbash scripts that help you,

(25:20):
like, install stuff and andmanage your environment and
things like that. I've actuallyused it and then stopped using
it, but it's it's pretty good.
You like ASDF, I want thisPython. ASDF, I want this Node
version, whatever whatever. I'veended up using the specific,
environment tools for each one.So I use UV for Python and NVM
for Node. Like, I have my toolset that I already know, but

(25:40):
instead of a bunch of shellscripts that mess around with
your bash like environment, thisis now a single binary written
in Go.
And it's seven times faster. Sothat's great. I love these
rewrites. Like a tool gets solidenough for performance to be the
issue, and then you pick Go as agood language. Mhmm.
And again, the main issue wasperformance, but also

(26:01):
maintainability. Like early on,Bash served them well, but then
it's kinda harder to work withit, you know. And people
contributed wrong bug fixes, andit's hard to see type issues,
blah blah blah. Arrays in Bashis very difficult. In Bash,
everything is just a string.
They go through this entire blogpost, you can check it out. And
if you wanna join like a prettybig and fun project, this is a

(26:24):
good time to do it, because nowit's in Go.

Jonathan Hall (26:26):
So, Shai, do you think they use Cloudflare over
there at ASDF?

Shay Nehmad (26:29):
Well, I assume they do. Like, a lot of the Internet
traffic in general goes throughCloudflare.

Jonathan Hall (26:34):
Yeah. Right. Cloudflare has recently
published an interesting articlewith a whole bunch of statistics
about Internet traffic becausethey see such large percentages
of internet traffic. They can dosome analysis on this traffic
and come up with someinteresting statistics. And one
of the statistics they publish,it says, We analyzed API traffic

(26:55):
to identify the top languagesused to develop API clients.
So assuming this is arepresentative sample of the
entire internet, what percentageof API traffic is done using
clients written in a particularlanguage and Go comes out the
highest, just edging out Node.Js and Python. That's kind of

(27:16):
interesting. I'm really curioushow they determine that for one
thing. And I imagine there's lotof API traffic they just can't
determine at all.
So it's like this unknown bucketof stuff. But even so, it's
interesting that Go APIs are sopopular out there.

Shay Nehmad (27:29):
It just goes to show that for specific
workloads, Go is the number onechoice today, I think. Just in
terms of popularity. And one, myfinal thing for the roundup is
very similar to the ASDF one.It's about NVM Windows. So a few
episodes ago, I don't rememberwhen I mentioned this project,

(27:50):
NVM Windows, because it had anew release, which is NVM, which
helps you version, like managenode versions on your machine,
but for Windows.
It has a section about like whywrite it in Go and not write it
in Node. And I really like thepart in the read me, which says,
well, I wanted to experimentwith Go, which is why I picked

(28:12):
Go over other languages. But thereason I didn't write NVM with a
node is because writing toolwith a tool you're trying to
install doesn't make a lot ofsense to me. And this is
something I felt a lot of timeswith Python tooling, where you
have like great Python tooling,but the bootstrapping experience
is horrible because you have toinstall some Python runtime, and

(28:35):
then your machine is already,like, it already has two
different Pythons on its path,super annoyed. Obviously, makes
sense to write it in, notnecessarily in a different
language, but just ship it as asingle binary.
And Go is a good option forthat, right?

Jonathan Hall (28:49):
Yeah, makes sense.

Shay Nehmad (28:51):
So I just like that.

Jonathan Hall (28:52):
So now you can run nvm written in Go,
TypeScript written in Go, ESBuild written in Go. We're
getting there.

Shay Nehmad (28:57):
Yeah, for sure.

Jonathan Hall (28:58):
Go's taking over the the world.

Shay Nehmad (29:00):
Go go would do all the things. I just I just like
the fact that, you know, that'sthe specific part of the readme
is the thing I'm bringing to theLightning Ground, not the entire
project.

Jonathan Hall (29:10):
Right.

Shay Nehmad (29:10):
But if you wanna do NVM on Windows, that's another
good option.

Jonathan Hall (29:13):
Cool. Well, I think that's a show. It's good
to talk to you again, Chai. It'sgood to ramble about Go.

Shay Nehmad (29:19):
Yeah. And same time zone. We have, like, similar
energy because it's, like, earlylunch for both of us.

Jonathan Hall (29:23):
Exactly.

Shay Nehmad (29:24):
Cool. If anybody's in the Bay Area and wants to
hang out, I'm here now. I likepeople who wanted to hang out
when I was in Tel Aviv and inHertilia. So now I'm in the Bay
Area, if you are as well. Talkto me on Slack.
I haven't set up Slack on thismachine yet, but I will after
this lunch.

Jonathan Hall (29:41):
Awesome. Until next time.

Shay Nehmad (29:43):
Yeah. Have a nice weekend, everybody. Right?
That's the time zone. Yeah.
Yeah. We're good. Have a niceweekend, everybody. And that's
it. Program exited.
Bye bye. Program exited.Goodbye.
Advertise With Us

Popular Podcasts

On Purpose with Jay Shetty

On Purpose with Jay Shetty

I’m Jay Shetty host of On Purpose the worlds #1 Mental Health podcast and I’m so grateful you found us. I started this podcast 5 years ago to invite you into conversations and workshops that are designed to help make you happier, healthier and more healed. I believe that when you (yes you) feel seen, heard and understood you’re able to deal with relationship struggles, work challenges and life’s ups and downs with more ease and grace. I interview experts, celebrities, thought leaders and athletes so that we can grow our mindset, build better habits and uncover a side of them we’ve never seen before. New episodes every Monday and Friday. Your support means the world to me and I don’t take it for granted — click the follow button and leave a review to help us spread the love with On Purpose. I can’t wait for you to listen to your first or 500th episode!

Stuff You Should Know

Stuff You Should Know

If you've ever wanted to know about champagne, satanism, the Stonewall Uprising, chaos theory, LSD, El Nino, true crime and Rosa Parks, then look no further. Josh and Chuck have you covered.

Dateline NBC

Dateline NBC

Current and classic episodes, featuring compelling true-crime mysteries, powerful documentaries and in-depth investigations. Follow now to get the latest episodes of Dateline NBC completely free, or subscribe to Dateline Premium for ad-free listening and exclusive bonus content: DatelinePremium.com

Music, radio and podcasts, all free. Listen online or download the iHeart App.

Connect

Š 2025 iHeartMedia, Inc.