Episode Transcript
Available transcripts are automatically generated. Complete accuracy is not guaranteed.
Jonathan Hall (00:00):
This show is
supported by you, our listener.
(00:01):
Stick around until later to heara little bit more about that.
This is Cup of Go for Friday,August 1, or maybe Saturday,
August 2, something like that,2025. Keep up to date with the
(00:22):
important happenings in the Gocommunity in about fifteen
minutes per week. I'm JonathanHall.
Shay Nehmad (00:25):
And I'm Shay
Nehmad, and it's summer. Woo
hoo. I don't know about you, mykid is having her last, like,
structured activity day todayand starting next week.
Actually, starting this weekend,it's survival mode. Actually,
having a kid without akindergarten.
Do you have, like, camps oranything planned?
Jonathan Hall (00:44):
No. Actually,
school preschool starts next
week here. We're trying to get,my eldest son enrolled. So yeah.
Shay Nehmad (00:51):
Little Bobby
Tables, we call them.
Jonathan Hall (00:53):
There we go.
Shay Nehmad (00:54):
We have a lot of
survey things to talk about, a
lot of proposals to talk about.We're gonna keep it like a
pretty standard Cup O Go episodewhere I'm gonna stick to the
topics that I know best, andJonathan's gonna stick to the
topics he knows best, such ascomplaining about people not
knowing what they talk about,which you do regularly on
LinkedIn.
Jonathan Hall (01:15):
You don't know
what you're talking about, man.
Never do that on LinkedIn.
Shay Nehmad (01:19):
I love the agile we
should do, like, an agile
dedicated episode. Let's let'sput it in the in the backlog,
and we'll get to it in thesprint planning.
Jonathan Hall (01:27):
We'll get to it
never.
Shay Nehmad (01:28):
Yeah. For now,
let's talk about the surveys,
though.
Jonathan Hall (01:30):
Yeah. So we have
a couple of surveys we're gonna
talk about. We're also gonnatalk about some proposals, new
ones and old ones. And I I don'tknow. That might be the show.
We'll see how how far we get.But first, surveys. Stack
Overflow's annual irrelevantsurvey is out. I say irrelevant
for two reasons. One, StackOverflow's relevance is just
plummeting lately.
And second, they only talk aboutAI, and that's not the point of
(01:53):
this show. They do talk a littlebit about other things, and
we're gonna scrape the bottom ofthe Stack Overflow survey barrel
to find the other things.There's nothing to report,
honestly. Like, Go has hit acomfortable place on the Stack
Overflow charts. It goes up anddown a little bit here and
there, but there's not like, Idon't know, ten years ago, oh
wow, Go jumped 15%.
(02:13):
That doesn't happen anymore. Gohas has just a steady place.
Wouldn't you agree?
Shay Nehmad (02:18):
Yeah. I mean, Stack
Overflow survey has this
interesting and actuallybeautifully laid out. Like the
UI is great for the survey. Ilove it. Has like hype versus
reality thing, which I kindalike.
It shows the distance betweenlike how many respondents want
to use the technology and peoplewho have used it and want to
(02:43):
actually continue using it. Soyou have a great example with
like Zig where or Elixir wherelike, you know, more than 60% of
developers say, oh, I want like,I heard good things about it and
I want to use it, versus likeactually 5% or 6% actually using
it, which I get, right? I hearda lot about Zig and I use
(03:05):
Ghosty, which is that, you know,terminal developed by the
HashiCorp guy, which is Go allhis life. Oh, yeah. Yeah.
And he's like, I put, I think,dollars 300,000 in the Zig
Development Fund. I'm like, ohmy God, I wish I was this person
developing, like, open sourceterminals for my free time.
While in reality, obviously I'mnot using Zig to make money
(03:26):
because I'm at a startup and Ineed to make money. There's this
thing called the Gleam I evendidn't get a chance to look at.
Just heard
Jonathan Hall (03:32):
about it. It's
like
Shay Nehmad (03:33):
70% admired, but
actually 3% have used it in the
last year. And again, whenpeople say they use it, doesn't
mean they successfully used it.It's just started doing it.
Jonathan Hall (03:47):
Yeah, they
touched it
Shay Nehmad (03:47):
at At some some
point, Rust is really high up
there on desired, but it issurprisingly on desired. Like
30% of people say they've doneRust and they will continue to
do Rust, which is surprising tome. I don't know that many
people make money doing Rust.Maybe it's the side project
language of the world orwhatever.
Jonathan Hall (04:06):
Could be.
Shay Nehmad (04:07):
I don't know, Zed,
I've started using Zed, not the
programming language, theeditor. That's written in Rust
and that's cool. And Go iscomfortably doesn't have a lot
of space between the desired andadmired, which I think is is a
really good sign because thereisn't a lot of hype to fall off
of, right? There aren't thronesof people who think Go is
(04:30):
incredible when they actuallygonna use it, they're gonna find
all the words. 25% of people whoare in the desired part, which
means I've used it, I wannacontinue using it, it's great,
23.4%.
And 56% admire it, which meanslike for every Go developer that
has used it in the last year,there's one other developer from
(04:50):
like another language who sayslike, oh, Go seems interesting.
I wanna use it. That seemsreasonable to me versus like,
know, Gleam. 70% of people willsay they wanna use it, but only
3% actually have. Like, I thinkthat's a that's a healthy
statistic for the languagebecause it means it's, like,
sustainable, but also good.
Like, people actually like it.
Jonathan Hall (05:08):
I think it's
interesting. I think I called
this out last year too. I thinkit's interesting that none of
these are, like, reversed. Like,I can imagine that being true
for certain tools. I don't know.
I'll pick on Jira since it's notrelated to Go at all or language
it's not part of the languagewars. A lot of people hate Jira.
I don't know if more people hateit than use it, but certainly,
I've met a lot of people who useit and hate it. So I'd actually
kinda see expect to see there tobe at least a few tools, and
(05:30):
Jira might be one, where thepeople who want to use it is
fewer than the people whoactually use it. But this chart
doesn't seem to show thatanywhere.
Shay Nehmad (05:36):
So when you look at
Jira, like code documentation
collaboration tools, it's likeit's kind of weird. Jira is is
not really a code documentationor collaboration tool, but
GitHub is now number one. Jirais, number four. And I don't
know. It's it's, kind ofconfusing to me, but I don't
(05:56):
know.
Monday, for example, is, verylow on desire. They have a 1%
desire thing. And surprisingly,Linear is really low on that
list. Obviously Linear, likethis is not sponsored. But hey,
Linear, if you do wanna sponsorus, like, I'm open to talking
because one thing we do thoughon this show is like we're only
(06:18):
sponsored by tools we actuallylike.
Man, I like linear. It's fast.So not a lot of people use it.
It's like 3.6%, but more peopleadmire it than people admire
Jira. But I guess, I don't know,it's just market share.
Jonathan Hall (06:33):
Overall, this
whole family of charts, the main
thing I can get out of this iswhere the hype is right now.
Shay Nehmad (06:39):
Yeah, that is true.
Jonathan Hall (06:40):
Rust is hyped,
Zig is hyped. Elixir is hyped.
Gleam is hyped. Valky is hyped.Cargo is hyped.
So, you know, that's the mainthing I see is where's the
biggest difference betweenpeople using it and want to use
it? That's just where thisyear's news cycle is hyping up
things for for potentiallylegitimate reasons, or maybe
it's just just bandwagon effect,but whatever.
Shay Nehmad (07:02):
Hype is not
necessarily a bad thing. People
should be excited about thetechnology they're using. Like,
I'm excited about Go. Like, I'mhyping about Go. Super hyped for
all the things that's happeningthere.
It is kind of worrying when yousee a very big gap between,
like, people actually using athing and the hype, just because
you're, like, afraid of the ofthe crash later. Generally,
though, one the the one otherthing I can get from this chart
(07:24):
is how beautiful charts can be.They did a good job on the
visualization this year. Looksgood. There is another chart you
pointed out, which is, two pointthree worked with versus want to
work with.
Yeah. Can you can you
Jonathan Hall (07:36):
explain this one
to me, please? So this shows of
course, first off, it only showsanswers above a certain
threshold, depending on thechart. Well, it looks like,
yeah, for some of the charts,it's 2,500 responses. Some it's
2,000. But basically, what itshows is of people who use a
particular language, whatpercentage of them want to use a
(07:57):
new language?
So for example, 5,455 JavaScriptusers want to learn Go, and
6,146 JavaScript users want tolearn Rust and so on and so
forth. And so this shows thisrelationship between a number of
of languages more or less, Iwant to say kind of stacked in
(08:19):
terms of like how high level thelanguage is, but that's not
entirely true. Like PowerShelland PHP are at the far left and
Go, Rust and Kotlin are the farright. And in the middle, you
kind of sort of tend to movetowards higher level languages,
but that's not entirely truebecause TypeScript is to the
right of C. So I don't know how
Shay Nehmad (08:36):
they're organized.
Generally, this chart shows that
a lot of people want to move outof JavaScript and a lot of
people want to move into Go,Rust, Kotlin, TypeScript, C, C
plus plus and C. You know, it'sof a migration pattern sort of
thing. For example, Pythondevelopers aspire to use Rust
and Go. That seems to be truefrom this, chart.
(08:56):
Like 5,000 people who currentlyare using Python, when they're
programming wanna use Go, youknow, 6,000 of them wanna use
Rust. When you click by the way,this is one thing I like about
this, survey, when you you canthis is like all respondents,
right? And immediately mythought goes, okay, these people
wanna learn Rust because it'shype, but they're not actually
making money. When you cut it byprofessional developers, a lot
(09:20):
of the languages get immediatelycut off. They just don't appear
here anymore, right?
When you look at professionaldevelopers, Kotlin is not an
option anymore because there'sjust not enough professional
developers who answer the surveywho find this relevant. And I
think it goes relative sizebecomes bigger. So it's actually
like, okay, if you make moneyusing programming, which is not
(09:43):
the only legitimate thing, I'mnot like saying this is being a
professional developer is theonly legitimate developer thing.
A lot of people are in academiaor open source or just using
programming as a hobby, theirresponse is just as valid. But
me being a professionaldeveloper and getting paid for
doing this for the last thirteenyears or whatever, makes sense
to me to see that Go, which is aprogramming language born out of
(10:07):
a company and aimed mostly atproductivity and, like, actual
high scale system.
When you look at professionaldevelopers, when you slice by
professional developers, like,it's almost half of the people
wanna migrate to it at the end.
Jonathan Hall (10:20):
I think it's
interesting. If you if you look
at learning to code, that's justthe busiest one, like, which
kind of makes sense. I mean,people learning to code don't
necessarily have a particularfocus. It's the only one with
assembly language on the list.You know what?
Shay Nehmad (10:33):
That's good. Yeah.
I mean, I started with assembly,
by the way.
Jonathan Hall (10:37):
I I started with
basic and then learned Assembly.
So, yeah, it's it's a good thingto learn. It's not gonna make
you much money unless you'redoing very niche types of stuff.
But, yeah, it's interesting tosee that, and Zig shows up here,
and I don't think it shows up onany of the others.
Shay Nehmad (10:50):
Lua. So Lua is a
good a great example. You know
why why I think people areexcited about Lua when they're
learning to code right now?
Jonathan Hall (10:58):
I do not know
why.
Shay Nehmad (10:59):
It's because of
Balatro. Okay. Filipa put, like,
the Valatro music here in thebackground. As many seconds as
we can get with, without gettingsued. It's just like poker,
poker video video pokerroguelite sort of it's really
(11:21):
good.
Like, I'm I'm almost hesitant torecommend it to you because I
want you to stay on the showinstead of playing Balatro. And
it's famously just one huge uglyLua file. So so, like, I think a
lot of people who learning tocode may be excited about that
just because of the thisspecific game. Like, I would be
surprised if it's not a bigreason. Anyway, summarize this
(11:44):
this survey for me.
What what what do we learn fromit about Go?
Jonathan Hall (11:48):
Yeah. I I think I
already led with the with the
summary, which is that Go is ata steady, comfortable place. It
it still can be kind of fun tonerd out about these numbers,
but there's not a whole lot ofvelocity happening here. Go is
at a solid place. I think it'sfound its place.
It's not any risk of dying. It'snot going to take over the world
either.
Shay Nehmad (12:06):
There is more
information here, you know,
about salaries and experienceand like how much you get paid
for your role in The US and inthe entire world and technology
purposes and a lot about AI, ofcourse. Job satisfaction, that
job satisfaction, by the way,was really surprising to me.
More developers are happy atwork this year, but generally,
(12:30):
28% are not happy at work. Thatdoesn't track with what I feel
or have seen in both, techcommunities I've been at, Tel
Aviv and San Francisco Bay Area.I think most software developers
are excited about softwaredevelopment and like it.
So I'm really surprised to seealmost 30% of them are not happy
at work. Well, you can
Jonathan Hall (12:50):
be excited about
software development and also
not be happy at work.
Shay Nehmad (12:53):
So Well, that's
actually true. People people
also rank why. So so it's likean interesting data to go
through, but I haven't unlockedanything. I I didn't feel like I
knew already. And we haveanother survey that shows pretty
much the same thing about Go,right?
Basically.
Jonathan Hall (13:09):
So he did a
recent survey also, Pragmatic
Engineer 2025 survey, and it'snot clear to me exactly what
methodology he used. I thinkbased on some comments I saw on
LinkedIn, it was more of a freeform, or at least there are
parts of it were free form, liketell us how you feel about
something. And the reason I saythat is if we jump down to about
halfway, we get to the mostloved languages and most loved
(13:32):
and hated tools. And Python'snumber one. Python's most loved.
It doesn't give us chartsshowing like percentages. It
just ranks them. Go comes in atnumber nine. And then if you
look at most loved and hiddentools, Versus Code is loved.
JetBrains IDEs are loved.
Jira is the most disliked toolwith Microsoft Teams trailing
(13:52):
it. The way that this wasapparently done was he sort of
took textual responses, at leastin some cases. If somebody
represented a positive sentimentabout a thing, it was considered
loved. If it was a negativesentiment, was considered
disliked. So I don't think thisis necessarily as rigorously
done as Stack Overflows.
(14:14):
Not to say that Stack Overflowsis perfectly statistically
legitimate either, justconsidering selection bias and
so on. But it's stillinteresting to see, and
everybody loves to see the mosthated tools so they can feel
like they have someone tocommiserate with when Jenkins is
on the list.
Shay Nehmad (14:29):
Again, Go being
mentioned, like, it's not a
niche, like, you know, Clojure,Objective C, Dart, like super
elixir, super niche thing, butit's not like TypeScript or
Python, the number, like, youknow, it's not the number one
language people learn for thefirst time or, you know, the
most common one. Seems to trackwith what we know, right? It has
(14:51):
enough community to be aperfectly reasonable choice. And
I also feel like most of thepeople who mentioned ago are
probably on their second jobalready, right? Or their second
language.
So you tend to have a moresenior just vibe in general.
And, yeah, this this surveydoesn't mention, Go in a
(15:14):
specific manner, but it's stillinteresting when you talk to
3,000 developers, you're gonnaget a lot of people talking
about Go, which is interesting.So survey says Go is a language.
Jonathan Hall (15:26):
There we go. It's
settled. Let's move on to some
proposals. We have a few to talkabout. I guess we could start
with a new one.
Shay Nehmad (15:37):
Yes. It is new, but
actually refers to something we
talked about. If you remember afew weeks ago, we talked about
unexpected security foot guns inGo's parsers from the Trails of
Bit blog. Yeah. Yeah.
I wanted to mention a very goodblog post. I like the blog post.
With Jeremy filling in for me,you guys tackled Anton's old new
(16:02):
content, right, the interactiveshow notes and the JSON v two
thing. I feel like this is theblog post version of your
knowledge in a sense.
Jonathan Hall (16:11):
Oh, okay.
Shay Nehmad (16:12):
It's from the Trail
of Bits blog in, Vesco Franco. I
hope I'm saying that correctly.So they mentioned some just
things you should worry aboutwhen you're looking at the the
JSON parser. Two of them, if thetag is dash, the JSON tag is
dash, you're have a bad time. Sowhat what do you think should
(16:33):
happen if the JSON tag is dash?
Like, just to, you know?
Jonathan Hall (16:40):
Marshaling or
unmarshaling or or both, I
guess. Unmarshaling, it would itwould ignore the tag. Right?
Shay Nehmad (16:47):
So it's actually,
it it doesn't work. No. With
unmarshaling, wouldn't doanything. Yeah. It's very hard
to understand how to use thattag.
So to tell the parser to notunmarshal, you must add the dash
JSON tag, But it doesn't work.Yeah. Like, if you add something
(17:15):
like omit empty, then the dashdoesn't behave as you'd expect.
Oh. If you put dash on its own,it works.
But if you put emit empty orwhatever, it it it will parse it
as expected, which is thecomplete opposite of what you'd
expect. And the reason it's likea security foot gun, could
imagine like, you know, apassword field or or is admin
(17:37):
field or some field you wouldn'twant to marshal or not marshal,
like an internal thing.
Jonathan Hall (17:41):
Mhmm.
Shay Nehmad (17:41):
So you put like
dash and but you copied the or
your, you know, even better, AIautocomplete, just copy the rest
of the tags you're normallyusing, like a mid empty or a mid
zero. And then when you try topass it, it does happen. So
trails Trail of Bits did like aSAMGRAB rule that detects it.
(18:02):
And this proposal by EllenDonovan from the, you know, Go
Google team was just like, let'sjust add these two checks to the
struct tag analyzer so you getit built in, so you don't have
to, like, install SemGrep andwhatever. Because this is
obviously a mistake.
Like, there's no valid use casefor it. This this seems like a
no brainer. Should it shouldjust be added, right? Yeah.
Jonathan Hall (18:26):
Sounds like it.
There's
Shay Nehmad (18:27):
since I opened this
page, there have been three
extra upvotes on this. So itseems like people are are not
like, it's not hugely exciting.People are just positive about
it and don't have any comments.Also seems like it's an easy
change. So I'm wondering, like,how how to add something to the
Struct Tag Analyzer.
But if you if you wanna go anddo it, maybe you can do it right
(18:48):
now. Interestingly enough, therules right now are SemGrep
rules, and SemGrep is not a Gothing. It's, I think, OCaml or
something like that. It's likeweird language. But the rule
itself is, you know, just astatic analysis.
So it doesn't really matter whatlanguage the tool itself is
written in.
Jonathan Hall (19:04):
Would OCaml be
one of the languages you want to
learn as a Go Developer for nextyear? Oh.
Shay Nehmad (19:09):
You know what?
Honestly, next year, I don't
wanna learn any new languages.Oh. I feel like I wanna go deep
with certain technologies.
Jonathan Hall (19:16):
There you go.
Shay Nehmad (19:17):
I assume just
because of the place of the
workplace I'm in, I think Ireally need to understand, AI
more deeply. Yeah. But I
Jonathan Hall (19:26):
don't know.
Shay Nehmad (19:26):
Well, let's see
where the where the wind takes
me.
Jonathan Hall (19:28):
So I think next
year, I'm gonna focus on going
deep with Go. Pure Go. Nice.Nice segue. Yes.
Yes. So do you have any ideawhat Pure Go means? Just off the
top of your head, if you see atag in a in a a Go file, a build
tag, know those are, you see onecalled Pure Go, what do you
think that means?
Shay Nehmad (19:46):
Well, the snarky
answer is like grass fed,
organic.
Jonathan Hall (19:52):
Free range.
Shay Nehmad (19:53):
Free range, yeah.
But in reality, what I think it
means is, like, it doesn't haveany c bindings. It doesn't have
like, it's just Go code that'scompiled to binary directly.
Jonathan Hall (20:04):
Well, then do I
have a proposal for you? Because
that's not what it means.
Shay Nehmad (20:08):
Oh, really? Yeah.
What what does it mean then?
Jonathan Hall (20:12):
So that that has
been the question since December
1837 when this proposal was
Shay Nehmad (20:18):
17? This
Jonathan Hall (20:19):
is an old
proposal. It's in the twenty
three thousands. We're up to 70right now. So this is an old
proposal. So back in 2017, whenthis proposal was open, we had a
number of different tags thatwere used for kind of similar
purposes.
We had an unsafe tag, we had asafe tag, we had PureGo. And the
problem is that there wasn't aclearly defined or documented
(20:40):
convention about what pure gomeant. What
Shay Nehmad (20:43):
did it do though?
Jonathan Hall (20:44):
Like what? It
wasn't really defined. In some
cases it meant no see go. Insome cases it meant no assembly.
In some cases it meant no unsafecode.
It just wasn't well defined. Andthere were many packages that
used it differently or inoverlapping ways, or there were
packages in the standard libraryor elsewhere that were
(21:05):
completely safe but didn't havethe safe or tag or etcetera.
This matters primarily, or atleast it did matter primarily
for different runtimes like onApp Engine with WebAssembly or
Gopher JS. This issue predatesWebAssembly, but it's relevant
now. So many years later and alot of comments later, they have
(21:27):
decided what PureGo actuallymeans.
It's a little bit unfortunatebecause it's a little bit of a
misnomer, but the the conclusionis that pure go means it doesn't
use assembly. It could still usesee go, but there's another
build tag for that. There's a aa no see go tag for that.
Shay Nehmad (21:45):
So That's
surprising. Like Yeah. You hear
pure go, can you use see? But Iguess it's more of like see what
was actually used, right?
Jonathan Hall (21:57):
Yeah, so most of
the remain After filtering out
the safe and unsafe, whichalready had their tags, doing
that, filtering out CGO versusno CGO, basically what remained
was assembly versus nonassembly. So we've settled on
pure go being pronounced no ASM,essentially. That's at least
what it means. So that's whatthis means now or will be you
(22:19):
know, it's been accepted so thatwill be added to the
documentation that peer go meansno assembly. How does this
affect you and me on a dailybasis?
Probably it doesn't at all. Butif you're doing low level
programming that might useAssembly or Sego, now you know
how to properly tag your filesso that they get compiled or
not, depending on how theconsumer of your library wants
(22:42):
to compile. Cool.
Shay Nehmad (22:45):
Why did it take so
long? I'm not trying to be
sarcastic. I'm legitimatelyasking. It sounds like I such an
easy
Jonathan Hall (22:51):
think it's a good
question. And I think the main
reasons are, one, it was justambiguous to begin with. And
two, there wasn't really adriving reason to to answer the
question until recently. And Ithink the driving force behind
this is another proposal, whichwe I won't go into details right
now, but it has to do with thenew hash mapping that was part
(23:14):
of the standard library and issort of being moved into the
runtime or yeah. That'soversimplification.
But as a Gopher JS maintainermyself, a few versions ago, back
in 01/2017 or something likethat, changed their map hash
algorithm from one that waswritten in Go to one that
(23:34):
required assembly. And that'swhen I started following this
issue because I wanted a pure Goimplementation because we don't
have assembly in Go for JS. Sohas to do TLDR has to do with
where's the boundary between theruntime and the standard library
and how should you tag the filesthat sort of sit on that
boundary? I hope that's a usefulanswer for somebody.
Shay Nehmad (23:56):
Well, now that it's
accepted, it's just a
documentation change. At leastnow it's clear.
Jonathan Hall (24:01):
Yes. Yes, indeed.
Shay Nehmad (24:02):
Let's break colon
equals time dot duration for a
second and talk about somethings we need to talk about.
Like Jonathan mentioned at thetop of the show, this show is
supported by you. We reallyappreciate all our Patreons
(24:23):
helping us make this happen.Unfortunately, had some issues,
actually withdrawing the funds,but I'm sure we'll figure it
out. We have a new member,CocoRox.
You for supporting the show aswell, and Cupago Mini. This is a
new pledge level. If you wannasupport the show, but you don't
(24:46):
feel comfortable with, like, abig pay of $8 a month, which is,
like, significant. Right? It's,like, more than Slack for a per
seat per user.
You can do Cup of Gopher mini,which is just, $3, and and and
it is, meaningful for us. If youwanna find the link to the
Patreon or our swag store or theSlack channel where we talk
about stuff, you can findeverything at cupogo. Dev. That
(25:09):
is cupogo.dev. And you can alsoemail us at news at cupogo.
Dev if you prefer that.Supporting the show doesn't
necessarily mean financialsupport. Talking about the show
at meetups or with friends orcoworkers is also a great way to
support the show. Like if youheard something this episode and
you're like, oh my god, I gottatell people at work about this
(25:29):
developer survey and nerd outabout it during lunch. By all
means, talk about it, but whenyou're done, say, oh, you know,
by the way, I heard about it inin a podcast.
Called Capago. It's pretty good.Finally, if you want the one
final way to support the show,leaving a review or writing
about us on your blog, whatever,Spotify, Apple Podcast, all
these rating systems, that helpsa lot. It helps put the show in
(25:52):
front of people who aren'tdirectly connected to us through
algorithmic recommendations, sothat's great.
Jonathan Hall (25:58):
Or say something
wrong about us on LinkedIn and
I'll jump in and correct you.
Shay Nehmad (26:01):
That's good. Yeah,
you can just spread
misinformation about the showfor sure. A 100% a good idea,
nothing bad will come out ofthat. Alright. Back to news.
So, Jonathan. Yes. That's me. Ihave pop quiz. Uh-oh.
(26:23):
What is dot TTF extension?
Jonathan Hall (26:26):
True type font?
Shay Nehmad (26:27):
That is true. What
is dot VSD?
Jonathan Hall (26:32):
Isn't that, like,
some sort of meeting invite or
something? I don't know whatthat is.
Shay Nehmad (26:36):
Microsoft Visio.
Visio. Okay. It's a Visio. It's
like the charting, thing.
Yeah. Dot x u l.
Jonathan Hall (26:44):
Sounds like
something I get in trouble for
saying it in front of my mother.I don't know.
Shay Nehmad (26:48):
So I'm reading
these off the list. That is the
common media types, MIME types.MIME types is like a thing where
if you want to communicate HTTPfrom a client to a server, You
had a header, the header islike, what's the media type I'm
gonna look at? Or what mediatypes am I allowed to accept,
(27:08):
etcetera, etcetera. Usually whenyou develop Go, you see like
application JSON, right?
Or Textblain or applicationOctetStream, which is the
default value for just all othercases. And there's an official
registry of all these mediatypes. It's like an important
standardization thing. So, youknow, when I say, for example,
(27:29):
you know, if I want to give youan AVIF image, then the MIME
type is imageAVIF. But if Iwanna give you my Amazon Kindle
book, then it's ASW, application/v and d dot, amazon.ebook.
So obviously someone thought alot about this, like name
(27:50):
spacing and how does it work,blah blah blah, V and D stands
for vendor, etcetera, etcetera.So there's a lot of thought that
went behind this, including, youknow, applications that are
executable and dangerous. Theystart with X dash, so you could
immediately filter anything thatcontains X dash for security
reasons in your firewall, blahblah blah. What does this have
to do with Go? So there's thisproposal which has been accepted
(28:12):
about, like, built in types for,for MIME types.
It's a pretty arbitrary list andit's a lot shorter than the
Mozilla one. It includes just,you know, things you would
really know, like GIFs or GIFs,whatever, HTML, JPEGs,
JavaScript, JSON, PDF, PNG,Wasm, but, like, I don't know,
(28:36):
not other extensions.
Jonathan Hall (28:38):
Mhmm. So Yeah.
It's a really short list, isn't
it?
Shay Nehmad (28:40):
It's, like, 16 or
whatever. And I don't know. It
doesn't include Java archives.Like, doesn't include dot jar.
Or dot zip.
Or dot zip. Yeah. Like or dotMIDI. I don't know. Which is
these useful formats.
Why are you laughing? Every timeyou hear the intro for the show,
it's based on MIDI files.
Jonathan Hall (29:01):
I thought it was
based on audioimpeg level three
or whatever that's called.
Shay Nehmad (29:06):
Oh, no. It's not
actually like, I I did render
it. Like, I did export it as aOh,
Jonathan Hall (29:10):
I see what you
mean. Yeah.
Shay Nehmad (29:11):
You know what? I
think I actually exported it as
a FLAC file to be, like,lossless perfect audio, but it
it it started as MIDI. At leastthe drums because I don't have a
drum set at home. There was ashort discussion about the way,
this list is sort of arbitrary.Someone pointed towards a
specific spec called mimesniffing, which is like these
(29:32):
are specific types that we wannacover, sort of arbitrary.
You know, all standards arearbitrary. All words are made
up. So it's kind of hard todecide on one, but they decided
on one. The proposal is toexpand the table to, you know,
everything that Chrome andFirefox have. So it's gonna be
64 entries.
(29:52):
And if Chrome and Firefox addnew entries, ghost standard
library will follow suit, whichmakes a 100% sense to me, right?
Like, MIME types are mostly aclient side thing, and Chrome is
the like number one browser. Sojust following that seems like a
good standard.
Jonathan Hall (30:08):
So from a
practical standpoint, what does
this provide? It provides amapping between a file extension
or a file type. Does it doanything else?
Shay Nehmad (30:15):
No. Just that
mapping. The the thing it'll
help you is if you want toupload a file using Go HTTP
client, you get the header youneed to put in easily. You don't
have to go and open thedocumentation and see, oh, yeah,
right, .arc isapplicationxfreearc. Like,
(30:36):
you'll just have that.
Yeah. Useful. Standardization.
Jonathan Hall (30:41):
It's a
superpower. One last proposal.
We've already talked about this,so I won't go into details, and
that is the new multiple handlersupport for the SLOG package.
This has been accepted. Wementioned it, I don't know,
three weeks ago or somethingwhen it was new.
It's been accepted. And as ofthree hours ago at recording
time, a CL is open with animplementation.
Shay Nehmad (31:02):
Three hours? Damn.
We're getting a break.
Jonathan Hall (31:04):
Yeah. You heard
it here Breaking news. If you're
into that sort of thing, go goread it. It's a pretty short CL.
There's some comments there.
Add some comments of your own ifyou want, if you have concerns
or questions. But it's justkinda fun to watch this sort of
thing happen. So I I expect thisit won't be in 01/2025,
unfortunately. The freeze hasalready passed. The RCs have
been been rolling.
(31:25):
So 1.25 will be out any we'rewe're into August. Any day now,
it will be out. We'll probablybe talking about talking about
it next week. This should be in01/1926.
Shay Nehmad (31:34):
And just a useful
thing. Like, I'm surprised it
didn't ship with it, but it'snot a huge deal either way.
Right? Yep. Cool.
Let's go to the lightning round.Lightning round. My thing for
the lightning round is actuallyfunny that you mentioned the CLs
and that it's fun to look atthem. Because if you remember a
(31:57):
while ago, we mentioned theincorrect expansion of empty
string dot and double dot in OS.Lookpath by Olivia Menguel,
listener of the show.
I ended up, just because wereported on it, opening the
change list and writing somecomments on it and having some
other people who actually havethe permission to approve the
(32:19):
code review comment on it. Itwas really interesting to see it
happening all the way through.Because for example, Olivier
started and then we suggestedthe export it to refactor a
thing into a function andrefactor some constant into a
constant, just, you know, normalcode review stuff. And then
there are some otherconsiderations which are,
(32:40):
listen, you can't export a thingwithout going through the
proposal process. So just don'texport it, just like keep it
private.
So there are some considerationswhen you're developing for a
standard library or a languagethat are not normal when you're
developing just your owncompany's code, right? You don't
think about every exportedvariable as a new, like part of
an API interface that's superimportant. Also some fuzz
(33:01):
testing discussions. It it wasjust a lot of fun. So thanks
Olivier for reaching out to usabout the security problem in
the first place and fordetecting it in the first place
and for fixing it.
I just basically did nothing. Ijust enjoyed watching it. And
the link to the change decisionis shown as if you wanna see for
yourself.
Jonathan Hall (33:17):
Cool. And I wanna
talk about a little tutorial.
You ever written a TUI before?
Shay Nehmad (33:22):
Of course. Of
course.
Jonathan Hall (33:23):
Of course.
Shay Nehmad (33:23):
I love doing them.
Not not a useful one, but I love
Okay. Doing
Jonathan Hall (33:27):
I've dabbled a
little bit. But if you've never
written TUI and you'reinterested in starting TUI, by
way, terminal UI, sointeracting, not a CLI,
interactive terminal stuff, likeincursive type of thing.
Shay Nehmad (33:40):
They're having a
Rennesas because of a claw code
and all the all those, like,terminal coding agents. People
are rediscovering the joy of,like, terminal UIs.
Jonathan Hall (33:48):
Oh, yeah. So this
tutorial is how to do it with
with Bubble Tea, which is alibrary that does that for you.
So from from the charm folks.Right? So, yeah, link in the
show notes.
I don't know what else to say.Learn how to get rid of TUI with
bubble tea.
Shay Nehmad (34:01):
Have you tried
their new AI agent coding thing
from
Jonathan Hall (34:06):
Charm really? I
haven't
Shay Nehmad (34:07):
read it.
Jonathan Hall (34:08):
I saw it
mentioned recently, but I
haven't tried it yet.
Shay Nehmad (34:10):
So it's a 100% go.
Maybe you should we'll we'll
cover it at some point. We we weknow it's out. We haven't had a
chance to look at it yet. But,yeah, they they also have
dabbled in the coding agent,which is basically a for loop
on, like, OpenAPI and tools.
Yes. But it's so cool.
Jonathan Hall (34:29):
I think that
wraps it up for this week.
Shay Nehmad (34:31):
Yeah. Thanks a lot
for listening. We're not clear a
100% when we're recording nextweek. Maybe it'll be Thursday
instead, but we should have anepisode next week as well. So
stay frosty out there.
Jonathan Hall (34:43):
Program exited.
Shay Nehmad (34:45):
Goodbye.