All Episodes

April 24, 2025 β€’ 33 mins

Hire Jonathan to join your project as a Fractional Gopher!

β˜… Support this podcast on Patreon β˜…
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 Cup of Go
for 04/23/2025. Keep up to datewith the important happenings in

(00:21):
the Go community in aboutfifteen minutes per week. I can
tell you ahead of time, thistime is gonna take more.
We have too many items on thebacklog. I'm Shay Nehmad.

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

Shay Nehmad (00:30):
We took last week off. I had some things to take
care of, and our backlog isvery, very, very full.

Jonathan Hall (00:38):
Yeah.

Shay Nehmad (00:38):
Right now I'm in a security startup, and this week
is always like the moststressful week because it's one
week before RSA in SanFrancisco, which is like the big
industry conference. So myLinkedIn has been absolutely
like, everybody's raisingcapital, like millions of
dollars, tens of millions ofdollars. And my even my previous

(01:01):
company, Record, raises like25,000,000 this week. So I'm all
like overwhelmed by everythingthat's going on. Let's talk
about like some technical topicsabout a boring programming
language that advances verylinearly and is dependable, just
to balance out all the Yes.
Oh my god, there is such andsuch. And the tariffs, and oh my

(01:23):
god, and like, I need some othertype of news. Can you help me
with that?

Jonathan Hall (01:28):
So I wanna I wanna do a shout out to the GO
team for having a a slow weekwith proposals. There was
virtually nothing happening thisweek. They they had their
meeting

Shay Nehmad (01:36):
Thank you,

Jonathan Hall (01:36):
GO few discussion points, nothing we're gonna talk
about this week. So that givesus a chance to catch up a little
bit. Thanks for making our liveseasier.

Shay Nehmad (01:41):
I know

Jonathan Hall (01:42):
that's why you did it.

Shay Nehmad (01:42):
They were like, oh no, no, Cup of Go episode. We
should we should stop because

Jonathan Hall (01:48):
I know that's how it works, right?

Shay Nehmad (01:50):
I mean, we're we're we're

Jonathan Hall (01:50):
that important, right? Aren't we? So, the first
thing before we talk aboutproposals, which we have several
to talk about, the first thing Iwant to talk about is Find Conf
twenty twenty five, tappingagain in Edinburgh, Scotland on
09/19/2025, and the CFP is openuntil June 20. So if you want to
speak there, you have a chanceto submit a CFP.

Shay Nehmad (02:11):
Yeah. Cool stuff if you're into the GUI apps in Go
kinda kinda thing. They're gonnatalk about new features in FINE
since last year. They had a biglike performance refactor as
well, which I assume is gonna behighlighted. Just some project
examples, tips and tricks.
So even if you don't, like, ifyou're not a fine professional,

(02:33):
but you just wanna, like, learn,I think it's gonna be a cool way
to to learn it. June 20 at six.Oh, that's when the CFP closes.
Sorry. September 19 is when theconference is happening.

Jonathan Hall (02:49):
Yep. Definitely.

Shay Nehmad (02:50):
And of course, fine is a thing by the friend of the
show, Andy. Hey, Andy, what'sup? Now let's talk about tests.
Tests are are important, right?I think one of the things people
learn when they get into Go moremore quickly than other
languages is how to like writetests and run the Go test

(03:11):
command.
Right? Because it's like a, airquotes, professional language.
And by that I mean, it's gearedtoward like enterprise
productivity and like developerswho are already on their second
language normally. Setting uptests is pretty easy. You don't
have to install anything,etcetera etcetera.
But there are always things toimprove. This week we have like

(03:35):
three things that have beenimproved. First one is pretty
simple. It's adding t. Outputand being able to log stuff into
t.
Output. So there's a function int. T is the interface testing.
Tb, which is the thing you passinto every test function. So you

(03:57):
inject all the testing contextinto the every test function,
right?
That's very normal. Whether it'sa testing, whether it's a test
or a benchmark, which is whyit's called TB, which took me a
long time to figure out while Ithought was tuberculosis. Yeah,
was I was watching House at thetime.

Jonathan Hall (04:13):
It's never as simple as tuberculosis on House
though.

Shay Nehmad (04:16):
It's what's their thing? It's never lupus. ANA was
negative. It's not lupus. Sothere's a new function.
It's called output. So you do tdot output. And it gives you a
writer that writes to the sametest output stream as as if you
did t dot log. T dot log has afew cool benefits, which maybe

(04:42):
you don't even realize to startwith. But there's a good reason
we don't do fmt dot print intest, but we do t dot log
instead.
Do do you know any like some ofthe some of the reasons?

Jonathan Hall (04:53):
Well, yeah. Fmt Print just always prints out
nonsense, so you you get justgarbage on your console. Whereas
t. Log will, by default, onlyoutput if the test fails.

Shay Nehmad (05:07):
Which is super useful for cleaning. Like, you
open your CI output and you onlysee the logs that are relevant
for the tests that failed, notall of them. I'm actually
writing end to end tests withNestJS right now, and I've been
itching to implement somethingsimilar, which is like only turn
on the logger if the testfailed. But it's gonna take so

(05:28):
much effort where in Go you justlike get the t dot log for that.
But this is for prints in thetest.
There's by the way anotherreason, which was pointed out in
this discussion that I didn'tthink of, but it's actually
relevant. What happens if yourun multiple tests in parallel?
So the output, if you use FMT,you have no idea which line

(05:48):
comes from which test, and thenyou end up doing like, alright,
I'll add the test name to everyprint, and then you're basically
on your path to reimplementingit anyway. And one small
benefit, but for me that Ireally really like, is that it's
indented. And it's indented,like if you have test cases
within tests, it's indentedcorrectly.
Which is another nice sidebenefit, which is useful for

(06:12):
like useful for, you know, youopen the CI output and you'd
like, you wanna see what happensquickly. So that's nice. This
all already exists, everythingwe talked about. This proposal
is about adding a t dot output,which gives you access to the
underlying writer. Why is thatuseful?
Because you can pass it to s logas the output, then having logs

(06:35):
only printed in failed tests andin their, like, quote unquote
right place.

Jonathan Hall (06:41):
Or not just s log, but any other arbitrary
thing that that might outputuseful debugging data. Right?

Shay Nehmad (06:47):
Yeah. Yeah. The the original proposal is because of
s log t. Mhmm. The interestingpart is because you do it like
this and it's solved from Goside and all the third party
library, it solves all the, youknow, finding the caller and the
right tests and all of that.
Just because it happens withinthe testing package, so you
don't have to break anyboundaries. A lot of comments

(07:08):
here from Daniel Neffin, whichwe had on the show. But not
surprising that we mentioned himon a testing themed episode. And
yeah, it was accepted. Actually,I'm ashamed to admit it was
accepted March 12, and it's beensitting in our backlog since
then.
But we've been waiting for,like, the correct opportunity to

(07:28):
to mention it. And there'salready a change list. Like,
there's already a I don't It'snot called a pull request in in
Gerrit. Right?

Jonathan Hall (07:36):
On the change list. CL, right? What you got is
a change list, isn't it?

Shay Nehmad (07:40):
Could be a change something. But there's a lot
there's a ton of comments here.Unlike most Yeah.

Jonathan Hall (07:47):
Change list is right.

Shay Nehmad (07:48):
Change list is right. Mhmm. Changelists makes
more sense than pull request. Inever understood pull request,
by the way. And I'm I'm deepinto git.
I read, like, the source code.

Jonathan Hall (07:58):
I'm pretty sure pull request is a GitHub thing,
not a

Shay Nehmad (08:03):
GitHub Yeah. Yeah. I mean, GitHub. Anyway, that's a
different discussion. One thingthat's very interesting is that
there are a ton of discussion onthe changelog itself.
Like, this is not an obviousport request at all. You know,
they're already at the twentyfirst patch set, and there's a
ton of comments. So if you'reinto that sort of stuff, like

(08:27):
actually reading code and seeinghow it's implemented inside the
Go library, which is pretty fun,like I It's a good way to learn
the language, I think. Gettingyour hands on this PR would be
cool. Right now there aren'tlike The code review is
unsatisfied.
So, you know, feel free to likesign in and share your comments.

(08:47):
Because there already have been45, resolved comments. I think
this is a good case study. Sothat's one thing about testing.
But you have, more improvements.

Jonathan Hall (08:57):
Yeah. So that's not all. Wait, there's more.

Shay Nehmad (09:01):
Yeah. That sounds a bit does this ever happen to
you?

Jonathan Hall (09:05):
So have you ever written a test where you write a
file in the test or maybe you dosome directory manipulation or
something like that? And thensometimes you wanna examine that
later, like maybe the test failsfor random reasons, don't know
why, and you want to look atthat output. If that describes
you, for only $10.99 plusshipping and handling so the the

(09:25):
new proposal is to store testartifacts. So the idea is to
give us kind of like the lastone where they gave us just a
general rather than solving thevery specific problem of I want
my S log output to go somewhere.So the proposal is to add a new
function to once again TB and Fthis time called artifactdir,

(09:46):
which returns a string that isthe name of a directory.
So you can store your artifactsin that directory then rather
than using OS. Tempter orsomething like that. And then
those artifacts will becomeavailable to you after the test
run. If you add the new commandline flag dash artifacts when
you run your tests. In additionto storing those in a random

(10:08):
directory, it adds new output toyour test case.
It adds an artifacts header andthe name of the test and the
path that those artifacts arestored in per test. So you can
go look up those artifacts. Soyou wouldn't typically run, you
know, go test dash artifacts inyour CI pipeline, for example.
You do that when doing localtesting when you wanted to sort

(10:31):
those artifacts at a place whereyou can look at them for
debugging purposes.

Shay Nehmad (10:35):
So what you're saying is I have a test and, you
know, it might produce somefiles and then we compare it to
a snapshot. So these are thetest artifacts and you wanna
store them only when it fails,basically?

Jonathan Hall (10:49):
Yeah.

Shay Nehmad (10:49):
Cool. Cool. Cool. This seems like something I
would implement if I needed it.

Jonathan Hall (10:56):
Mhmm. I I had implemented it before. Yeah.

Shay Nehmad (10:59):
Is it a lot of, like, heavy lifting? Seems like
a this this has been accepted.Right?

Jonathan Hall (11:05):
Yes.

Shay Nehmad (11:06):
So this might be late joining the discussion, but
it seems pretty, like, simple.Right?

Jonathan Hall (11:12):
I don't think it's that conceptually
difficult. I don't see a CL yet,so it's still waiting. It's not
even targeted for a specificversion of Go. So if you wanna
go implement this, I think youhave the opportunity to. But I
don't think it's actually ashard.
Like I said, I have implementedthe same sort of thing a couple
of times. Of course, I wasn'ttrying to target the general
public. I was trying to targetmy very specific case. So I'm
sure I didn't consider all theedge cases.

Shay Nehmad (11:34):
But but there are like I don't know. There are
just equivalent, you know,packages like Ghostnaps that
give you, like, match snapshot,which save like a snapshot This
is not necessarily for snapshottesting. Right?

Jonathan Hall (11:47):
Not specifically. It's more general than that.
Yeah. Maybe you're building anew YAML parser because the old
ones were deprecated, forexample, and you wanna write
some YAML to a directorysomewhere. And then during the
testing, it's not working forsome reason.
So you wanna write that to adirectory that you can later
examine.

Shay Nehmad (12:03):
Or maybe the reason this is becoming prominent is
because all these LLM apps areso unpredictable. They're like
inherently indeterministic,right, because they have
probability built into them.Then you want to, like, you run
your benchmark, but you wannastore the artifact to the side
of like, the actual prompts thatreturn. So you can visually
inspect the the benchmarkwithout logging every single

(12:24):
prompt into the We had somethingsimilar at Orca. Yeah.
We had a benchmark of whetherthe LLM output is okay, but we
also stored like temporaryartifacts. But we used like
GitHub artifacts for that, andthat cost a lot of money. Cool.
I'm wondering like who's gonnaactually use it. What I'm
assuming that's gonna end uphappening is people are gonna
write wrappers that underlyinglike use this thing in their for

(12:48):
every single project.
But it's not gonna become likesomething that everybody uses.
Unlike the previous proposal oft output, which basically I
would, in every test I would tryto shove my logger into t dot
output. Mhmm. Right? This seemslike a very specific use case
thing.

Jonathan Hall (13:03):
Yeah. I agree. Yeah.

Shay Nehmad (13:05):
Cool. Cool. Cool. And it's been accepted and you
said, change list. You don'thave a change list?

Jonathan Hall (13:09):
I don't see a change list yet, so it's still
waiting for an implementation.

Shay Nehmad (13:13):
Alright. Interesting. That

Jonathan Hall (13:14):
could be you. For just

Shay Nehmad (13:16):
$10.99. And if you implement it in a week, we'll
also throw in a set of steakknives. Talking about
predictability, there's anotherblog post we wanted to talk
about that's related to testing.

Jonathan Hall (13:26):
Yes. Yes. There is. So we're a little bit behind
on this one. Also, this came outApril 2.

Shay Nehmad (13:32):
No, again, this is fine.

Jonathan Hall (13:33):
Not too bad, yeah. But this is from the Go
team. So one of the official Goblogs. I think they threw out
like three of them at us in thelast couple of weeks and we
haven't even gotten to most ofthem. But this one, more
predictable benchmarking withtesting.
V. Loop. Have you written manybenchmarks in Go, Shay?

Shay Nehmad (13:49):
I've not written many, but I've really enjoyed
the ones that I have. Mhmm. I'vewritten one for, like, a
JavaScript, like v eight enginerunning within Go Mhmm. Where we
try to run JSONata stuff. Andthe benchmark discovered I did
benchmarking and fuzzing.
It was like the first time bothof these features have been

(14:12):
relevant to the same endpoint.

Jonathan Hall (14:13):
Mhmm.

Shay Nehmad (14:14):
And bro, that was so cool. I felt so smart. Even
though it's like so easy. Youjust replace testing t with
testing b and like add a forloop and it's just like you're
done. I felt so smart.
I felt like the most eliteprogrammer on the face of the
earth. So not a lot, but when Idid, I I had a lot of fun.

Jonathan Hall (14:33):
Did you run into any pitfalls building your your
benchmark?

Shay Nehmad (14:36):
Not me. But I've

Jonathan Hall (14:40):
because you're superhuman.

Shay Nehmad (14:41):
No. I just I'm like, I ran it and then it was
like, this is the number. And Iwas like, fine. And then they
commented it out because thenumber was fine.

Jonathan Hall (14:47):
Alright. Well, some people run into problems
and I have too. Basically, it'seasy to do your benchmark loop
wrong. Right? So especially ifyou have something, and I
imagine this might have appliedto your situation where you have
to do some setup that you don'twant to be included in the
benchmark.
Right? So you want to createyour V eight engine instance,
for example,

Shay Nehmad (15:06):
I'm imagining Oh, for sure. Like you set up
everything and then the

Jonathan Hall (15:08):
only GPU And then you wanna execute that code
10,000 times or whatever, notthe setup 10,000 times. Yes. So
you have to be careful aboutordering things and and start
and stop and all that stuff ifyou're doing benchmarks, if you
want them to be valid. Well, Go1.24 added a new loop method to
the testing. B type that makes alot of that a little bit easier

(15:29):
for you.
So rather than doing your ownfor range over number of things
and making sure you call startand stop in the right place, you
could just call d. Loop and putyour loop function inside of
that. And it makes sure that thestart and stop are handled
before you go in some of thosethings. And this blog post is
all about, by the newcapability, it's a short blog
post. If you ever do or want todo benchmarking and go, I highly

(15:51):
recommend reading this becauseit will make your benchmarking
life easier.

Shay Nehmad (15:54):
The interesting like, the the small thing is
that you don't have to rememberthe reset timer trick anymore.
Which is after you used to,after you do your setup, have to
call reset timer. But it seemslike it solves even more subtle
problems with like, you know,the compiler looks at stuff and
the stuff looks like dead codeand then it

Jonathan Hall (16:16):
Oh, right.

Shay Nehmad (16:16):
It, blah blah blah.

Jonathan Hall (16:17):
Yeah. It

Shay Nehmad (16:18):
benchmarks nothing, basically, which is not what you
want. Right. And using the loopfunction, when you use it, it
prevents dead code eliminationand not allowing inlining and
calling the re the like startand stop timer thing. Not start,
reset and start, just doing itinside the loop. So it's not
introducing any new feature,it's just because you could have

(16:40):
done all this stuff with likecompiler directives and and
calling it manually andwhatever.
Just makes it super simple towrite benchmarks. And and less
obvious in a more obvious way.

Jonathan Hall (16:54):
Mhmm. Yep. I like it.

Shay Nehmad (16:56):
This is now the preferred way to write
benchmarks. Right?

Jonathan Hall (17:00):
Yes. This is the preferred way to write
benchmarks now.

Shay Nehmad (17:03):
So do you think the modernized Linter should support
it now as well? Is that is thata thing someone needs to
remember to do?

Jonathan Hall (17:11):
So the modernizer one of our call is actually
writing simple rewrite rules. Idon't think that would apply
here.

Shay Nehmad (17:17):
Why? You look at all the places where you do for
rangeb.in and you replace itwith b dot loop? Super simple.

Jonathan Hall (17:24):
Is it is it literally that simple? It might
be.

Shay Nehmad (17:27):
Well, some some linter rules should warn people
about it somehow.

Jonathan Hall (17:30):
You should be able to detect that you have a
benchmark that's not using b dotloop. That would be easy. But
automatically rewriting it mightnot be as easy, at least in all
cases.

Shay Nehmad (17:39):
Well, there might be a linter already, and I'm,
like, just thinking about agreat idea that someone, like,
already implemented. Wouldn't bethe first time.

Jonathan Hall (17:48):
Let's talk about popularity.

Shay Nehmad (17:50):
Alright. How popular were you in high school?
And how is that

Jonathan Hall (17:55):
I was the most popular of the two nerds in high
school.

Shay Nehmad (17:58):
Yeah. That's why I'm so good that's why I'm so
good in programming, justbecause I was so popular. No,
we're talking about popularityof programming languages, of
course. The TIOBE index has Theypublish every now and then, so
it's not like a huge news. Ijust found it interesting with
the current macroeconomicconditions like in the world,

(18:21):
and this is not an economicspodcast, but I'll try to use,
like, vaguely technical terms,and I would say it's bad.
Right? Like, if I had to justreally dig deep and use the
technical terms from thefinancial analyst market, it's
like not great. It impacts thisindex as well. The TIOB index is
like, which language is mostpopular? Like, and they try to

(18:46):
add some context over why thisis happening.
The ratings show that the mostpopular language is Python,
unsurprisingly.

Jonathan Hall (18:58):
By a big margin too.

Shay Nehmad (18:59):
Yeah. Yeah. And it's increased a ton, like by
6%. So now it's 23% popular.This is kind of vague.
Right? Like, definition, you canread through it. Doesn't mean
that any 23% of code in theworld is in Python.

Jonathan Hall (19:17):
What's the TLDR though? Is is this like trying
to measure developer sentimentabout the language or

Shay Nehmad (19:23):
So it actually it it doesn't care about sentiment
at all. Things can be reallyhigh if people don't like them.
It's just looking at searchengines

Jonathan Hall (19:31):
like

Shay Nehmad (19:31):
Google and seeing how many people are looking for
a thing. Which is, by the way,interesting because I would
think that so much ofprogramming language searches
have are not from like websearches at all, they're from
LLMs. I don't search for thingsin like, that are JavaScript

(19:54):
related right now because I'mwriting in JavaScript, I just
use Copilot. Now it does someweb searches every now and then.
Mhmm.
Not well enough to actuallygenerate fucking useful code,
but it does web searches everynow and then. But mostly it
doesn't. And this doesn'tinclude that. So, you know, take
it with a grain of salt. Buthigh level, Python is really

(20:15):
high up, followed by C plus plusC, Java C,

Jonathan Hall (20:21):
and then

Shay Nehmad (20:21):
Go at number seven. And all of these have been
pretty solid in their places,like they haven't really
changed. C and C plus plusSwitch, but, like, who cares?

Jonathan Hall (20:30):
They're the same language anyway, aren't they?
Just like Java and JavaScript.

Shay Nehmad (20:36):
I would say I would say that Java being, like, 10%
and JavaScript being 3.7% seemsjust that number seems fishy.
Yeah. The interesting part isthat according to what they're
saying, common languages arebecoming more common. So, like,
there's a very strongconsolidation in the market

(20:59):
right now. So there isn't a lotof room for, for example,
languages like Ruby, becauseoverall what they claim is that
the top 20 languages cover 83%of the market, which was, again,
this is search engineevaluation.
But it used to be 75%. So themore common languages are

(21:20):
becoming more common. So themarket is like defensive and
preferring like more proventechnology to new technologies.
But this is kinda, again, thisis kinda weird, because I see
Visual Basic at number eight,and you know, like Scratch at
number 12 makes sense to mebecause students use it, but
nobody makes money out ofScratch. Right?

Jonathan Hall (21:42):
And that's right below Fortran.

Shay Nehmad (21:44):
Yeah. So I think this is very heavily influenced
by people like students andthings like that. I would assume
that C is high up because a lotof universities teach it as
well, and not just like becausea lot of people write actual
code in it. But it's alsorelevant, right? What people
search, like their intro toprogramming and things like
that.

Jonathan Hall (22:03):
I'm just surprised that JavaScript isn't
so much higher.

Shay Nehmad (22:07):
Yeah. Actually, maybe because it's JavaScript
and, like, JS and TypeScript,and they don't, like, calculate
it correctly. Yeah. And thereare some weird things here. You
know, Bash is considered aprogramming language, and
TypeScript is a separate thingfrom JavaScript.
Although, in reality, it's notlike it's the same language with
typing hints. So it's again,this index is not very

Jonathan Hall (22:29):
Logo is above PowerShell. That that's weird.

Shay Nehmad (22:33):
We have we have a lot of questions about this
index. The interesting part isthat Go was popular, stayed
popular, is still number seven,like, at a solid, like, you
know, person's second language,and that there's a lot of
consolidation. And I think Idon't know. You tell me. But on
the one hand, Go is like new ishand modern ish.
Mhmm. But when I look at thetechnology landscape right now,

(22:56):
to me, Go falls straight, like,definitely in the camp of, oh,
there's not a lot of money inthe market, go with Go. Right?
And not with, like, some newlanguage or some new tech.

Jonathan Hall (23:07):
Go is definitely the newest of the top 10
languages by by a long shot.

Shay Nehmad (23:13):
What I'm saying is the if if there's gonna be even
more consolidation, and, like,no company's gonna be like, I'm
gonna work in a new programminglanguage. I'm not gonna allow
it. I just wanna use, like,proven tech. Is Go already in
the in the camp of proven techbecause it has enough, like, I I
guess the word I'm looking foris pedigree.

Jonathan Hall (23:29):
I think so. I mean, but but I have a biased
opinion on that, so As as thehost of a Go podcast. Yeah.

Shay Nehmad (23:37):
Actually, as a as a podcast host, you would be we
would benefit from being like,oh, this is super exciting. I
don't know if this language isgonna live or whatever. Like, if
it wasn't so quote unquoteboring. You know what mean?
Yeah.
Anyway, this index seems tothink that Go falls in the it's
old and and it's like matureenough to be considered

(23:58):
consolidatable, and it also hasraises a lot of questions about
the nature of its data as well.Take it with a grain of salt.

Jonathan Hall (24:06):
I'd I'd I'd say kudos to Go for winning a bunch
of imaginary Internet points.

Shay Nehmad (24:11):
Yeah. That's really important.

Jonathan Hall (24:21):
Welcome to our break. Thanks for sticking
around this long, listening tothe news. Quick updates on a
couple things. Shay is doing theSan Francisco meetup Woo hoo.
With six people.
And maybe you. You could benumber seven. Tell us the
details on that, Shay.

Shay Nehmad (24:35):
May twenty eighth twenty twenty five at 5PM, we're
gonna do one live podcastrecording with this new mic that
I'm using right now. Mhmm. So Ihope that's gonna work out fine.
And there are already sixattendees. We're looking for two
things.
We're looking for three things.One, if you work in the San
Francisco Bay Area, and yourcompany has a nice office in San

(24:57):
Francisco, please let us sitthere for a while. Worst case,
I'll, like, grab a WeWork room,but that's gonna be kinda lame.
And there's a talk to bedetermined. If you wanna do a
talk at the meetup, you havelike a topic you wanna share, or
even like practice yourpresentation before showing it
to like a real meetup, thatwould be cool.

(25:20):
And we're just gonna meet up, dosome schmoozing, do the podcast
recording, do another talk, andmaybe, like, go out to drinks
after. Five to seven PacificDaylight Time, May twenty
eighth. Awesome. So about amonth from now.

Jonathan Hall (25:34):
Also in Meetspace, I have agreed to
speak at the next Atlanta Gomeetup, which I think will be
May 7, waiting for officialconfirmation. We'll mention on
the show when it happens. If youwanna meet me, possibly again,
if you already have, that wouldbe the opportunity to do that.
If you don't like Meetspace, youcan also participate with the
show by going to cupugo.dev,where you can find swag, which

(25:56):
we can send to you in Meetspace.You can join our Patreon.
We have one new member thisweek. Big shout out to Liz Lam.
Thanks for supporting the show.And you can also leave a rating
or review on Spotify or iTunesor Apple Music or whatever it's
called these days or whereveryou happen to listen to this
podcast. It's a big help.
And of course share the episodewith a friend, a colleague, a

(26:18):
student, anybody else who mightbe interested in learning about
Go. And we'd appreciate it. Youcan also join us on Gopher
Slack. If you're on the GopherSlack, our channel is Cup of Go,
that's Cupcase. Join us there.
We have over 500 people and somepretty lively discussions
sometimes about topics relatedto Go. So join us there. Did I
miss anything, Shayne?

Shay Nehmad (26:38):
There's there's one thing I wanna add. Our Patreon
has been going on for a while,and some people have been a
member of it for for a prettylong time. So I wanna shout out
Jens, Frederic, Andy, Jamie,Matthias, Joost, or I assume
it's Joost, Josh, who's gonna beat the meetup, Leonid, Robert
Burke, Will, Will Roden, AdelinaSimeon, Kyle Skews, Doug, there

(27:03):
are a lot of people here whohave been around for a while. We
really really appreciate it.Thanks a lot.
I almost like sort of wanna say,how about you downgrade to free
for a while? But it actuallydoes help support the show. We
don't make money out of this.We're just like paying for, you
know, maintenance and our time,and we're pretty much still

(27:23):
covering it. So we really reallyappreciate the people who have
been around here for a while.
So there are ways to support thepodcast directly, if you like
the Yes. Other than doing thepodcast, which we don't do full
time, we do like an hour an houra week and maybe an hour of
research a week, which we doseparately. And if we have an
interview, then that's likeanother extra hour. We have

(27:45):
other like jobs and companiesand things that we do, and we
would like your help with thatas well. So how about you start?

Jonathan Hall (27:50):
Sure. So I have a contract ending the end of this
month. So that means thatstarting next month, I'll be
free to find a new contract. Ifyou could use a fractional
gopher on your team, someone tohelp with architectural go
related work, hit me up. I'dlove to Fractional gopher.
Fractional gopher. Isn't that agood title? I don't know what
that says to people, but I thinkit feels fun.

Shay Nehmad (28:11):
None of these words are in the bible. So yeah, go
hire try to hire Jonathan. Iwould think if you need a
fractional gopher or aprofessional LinkedIn troll,
he's pretty good at both. AtOpsin, the startup where I work,
if you're in the San FranciscoBay area, we're looking for

(28:31):
engineers to join us. It's notGo, unfortunately.
So I don't know how much thisshow is a good fit for hiring
these people. But hey, if enoughof us join, maybe we'll be able
to rewrite the whole thing.

Jonathan Hall (28:43):
Although Once Go reaches 25% of imaginary
Internet points, maybe it'll be

Shay Nehmad (28:48):
Yeah. Possible. Yeah. So if you wanna join up,
then you can reach out and Or ifyou know someone who's a good
fit.

Jonathan Hall (28:54):
I think we'll steal a lightning round and then
call this a show. What do yousay?

Shay Nehmad (28:57):
Let's go. Lightning round. Alright. First thing on
the lightning round, it's forme. Do you know truffle hog?

Jonathan Hall (29:09):
I know what truffles are and I know what
hogs are. I know they'rerelated.

Shay Nehmad (29:12):
So there's a project called truffle hog,
which you should probably likein every project, there are a
few things you always wanna setup. Right? Like go langs the
island, we talked about in thein recent episode. That's an
always go to. At some point,some of your projects have to
like be SOC two certified, oryou know, you have to have some
stuff on them.

(29:33):
At that point, reaching forTronfolog makes sense. It's a
secret detector. It like findscreds in your code. But unlike
most secret detectors which endthere and have a whole, like a
ton of, you know, credentials,but maybe it's just test
credentials or whatever, it alsoverifies them, which is really
cool. They have a new releasefrom two days ago.

(29:56):
It's like a % written in Go.And, you know, the new release
is like quote unquote a smallrelease. But, you know, these
these are the sort of projectswhich have just a lot of things
going on. So for example, theyfixed the ocean the Digital
Ocean detector. So if you haveif you use Digital Ocean and
you're worried about leaking theDigital Ocean credentials, they

(30:19):
implemented this in the latestrelease.
This is just like one example,and they also do like proper
security releases. So prettycool. They have they just have a
really deep list of detectors,and I've used it. It runs super
fast and has a lot ofintegrations, like in CI, you
can run it Recomate, you can doblah blah blah. Very good stuff.

(30:41):
So if you don't use it yet, Irecommend it. It looks pretty
good. I'm I'm, like, consideringsetting setting it up, like,
today, just because it seemspretty easy.

Jonathan Hall (30:49):
My lightning round item is an update from a
past item in a past interview.We had Joe Tsai on the show,
gosh, a year, year and half agotalking about JSON v two. It's
been officially accepted toinclude JSON v2 in Go 1.25 as an
experiment. So you can still usethe existing GitHub repo if you
want to play with it in Go 1.24or even older versions of Go.

(31:12):
But starting with Go 1.25, ifyou enable Go Experiment equals
JSON v2, you will have the newofficial JSON v2 package from
the standard library availableto you run your CI and
experiment with, which probablymeans that in Go 1.26, it will
be a full on official packageavailable for everybody without

(31:32):
the experiment.
Of course, that depends on theresults of the experiment, but
as long as this has been coming,I don't imagine there will be
any major surprises, that wouldprevent it from making it to Go
1.26. So I'm excited.

Shay Nehmad (31:44):
Cool. Cool. Cool. New version of JSON. Why don't
why don't they just use YAML?
No. I'm kidding.

Jonathan Hall (31:50):
Now there is an idea. I'm sure they hadn't
seriously considered it.

Shay Nehmad (31:53):
Last thing on the lighting round. This and, like,
we talked about this. I'm notsure if this is proper news for
the show, but I'm gonna share itanyway. There is a new Slack
CLI, which is not for usingSlack, it's for creating Slack
applications from the commandline. And it's written in Go.
So it's new, and it's written inGo, where I think the previous

(32:15):
ones were just like JavaScriptor whatever. Mhmm. So it's Go
news in the sense that someonedid something using Go. Mhmm.
But it unless you're like superinto integrating with Slack or
something like that, and youwanna write the library that
wraps this CLI, this will notaffect your like day to day Go
programming.
However, new package looks good,like the CLI looks good. I
played around with it a littlebit. So if you were hesitant

(32:35):
about, oh, should I like createthis new Slack app for my
company, this automation thatreports x to y? This makes it
slightly easier. So you cancheck out the new Slack dash
CLI, Slack to create this new,like, Slack applications, which
could like ask questions, domentions and messages, things
like that.
Yeah. It is just written in Go,so I thought it was worth

(32:55):
mentioning.

Jonathan Hall (32:56):
It's perfect for Lightning Round.

Shay Nehmad (32:58):
Exactly. And the documentation looks pretty good
as well, which is superimportant for this sort of
thing.

Jonathan Hall (33:02):
Pretty cool. I think that's it.

Shay Nehmad (33:04):
Thanks a lot everyone for listening. We
appreciate you all being here.Stay safe out there, have a good
one, and we'll see you nextweek. Goodbye. Program exit up.
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!

The Breakfast Club

The Breakfast Club

The World's Most Dangerous Morning Show, The Breakfast Club, With DJ Envy And Charlamagne Tha God!

The Joe Rogan Experience

The Joe Rogan Experience

The official podcast of comedian Joe Rogan.

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

Connect

Β© 2025 iHeartMedia, Inc.