All Episodes

July 26, 2024 61 mins
Mark as Played
Transcript

Episode Transcript

Available transcripts are automatically generated. Complete accuracy is not guaranteed.
Jonathan Hall (00:00):
Show is sponsored by you. Stick around till later
to learn more about that. Thisis Cup of Go for Friday, July
26th, 2024. Stay up to date withthe happenings in the Go
community in about 15 minutesper week. A little bit longer

(00:22):
this time because we actuallyhave to interview again.
Woo hoo. I'm Jonathan Hall.

Shay Nehmad (00:25):
And I'm Shay Nehmad. Everybody's been talking
about the interactive releasenotes. We just have to get into
it. We just have to get into itand start clicking on them.
Right?

Jonathan Hall (00:34):
Pull out your interactive podcast player and
interact along with us.

Shay Nehmad (00:37):
No. So so we're gonna try to make it, an
interactive media experiencesomehow and and sort of
communicate it what's theexperience of of using this,
blog post. Right? Mhmm. But evenon the channel, Chris was like,
this would be such a loss ifthis guy ever stops writing
these for Go releases one day.
Yes. I totally agree. But whatare these release notes? So Go

(01:00):
123 came out. We talked about itat length.
Now it's in the phase of, like,release candidate, another
release candidate, anotherrelease candidate. Right? It's
coming soon. It hasn't been,like, fully fully released yet.
It has a lot of things.
Right? Iterators, there's newthings with timers, their
garbage collection. We talkedabout all these things a lot,
like, in previous episodes. Butif you wanna try them out, like,

(01:22):
I don't know about you,Jonathan, but let's say you open
a blog post. Right?
You talked about how you use thedemystify the iterators blog
post last week. Right? Yep. As adeveloper, what happens when you
open a tech blog post? I scrollto the code and then

Jonathan Hall (01:35):
I copy it into my editor and

Shay Nehmad (01:36):
run it. So, yeah. This this interactive release
note page uses, a projectmaintained by the same person,
by, Anton called Codapi, whereyou can just run the thing on
the web, and see the results.And you can edit it as well,
like, interactively and playaround with it. So, you know,
the entire loop, feedback loopis a lot shorter, which is
great.
Works really well, And you canjust look at all the different

(01:59):
features like range, iteration,all the iterator types. And also
it's also well written. It's notjust like, oh, there are
examples, so it's nice. It'salso very well written. Like,
the the explanation about pulliterators versus push iterators
is the first time I understoodpush versus pull iterators.

Jonathan Hall (02:16):
Uh-huh. Yeah. You know what? My new favorite
feature about this whole thingand maybe this was already
there, for the we talked aboutthis interactive release notes
for 1.22, 6 months ago. Maybethis feature already existed, I
didn't notice.
But he has links to theproposals for each of these and
the CLs where they wereimplemented. So if you really
wanna nerd out and go, like, oh,how is this implemented? The
links are right there. You don'thave to go do your own homework.

(02:37):
You can just click to the thecl, and and see how it was done
or click to the proposal and seewhat the intention was behind
this new feature.
I think that's pretty cool.

Shay Nehmad (02:46):
The best explanation for me, I think, is
the, HTTP cookies one. Justshows the the problem with parse
cookie, then shows parse setcookie and, you know, just shows
exactly how it works, and youcan run it and it's super super
easy to understand, which isgreat. And cookie named and

(03:07):
whatever because that's theexact kind of thing where I you
don't need to read anydocumentation. You just need the
examples and and it it's thebest way to learn. So really
good work, Anton.
We basically, if you're planningto upgrade to 123, take, I don't
know, 15 minutes and just runthrough this, I don't know,
maybe 30 minutes. Iterators areare a bit confusing. And, run

(03:28):
through this blog post. And bythe way, if you're hosting like
a a similar thing to ours inyour Go meetups. Right?
Oh, what's new in Go? In in yourcities, in Atlantis, say go, you
know, go gopher con. This couldbe a real good basis for just a
talk. Right? Let's just, like,read Anton's blog together and
and send him a selfie sayingthank you, dude.

(03:48):
It's a great resource. Becauseit it really is. It really is.
Like, I plan doing that at mycompany with the Golang

Jonathan Hall (03:55):
guild. Mhmm.

Shay Nehmad (03:55):
So so really cool. The link, obviously, is in the
show notes. So if you didn'tknow, you can open your podcast
player or whatever it is.There's a little thing called,
the show notes where it saysmaybe summary or show notes or
description. All the links ofall the stuff we're talking
about are are there.
People have, told me theydidn't, they didn't wanna open
our web page every time,capago.dev, and scroll to the

(04:17):
relevant episode or whatever.You can just do it in your
podcast player. I tested it inSpotify and it works there. So I
know. Awesome.
So release notes, 123 is comingsoon. Yes. What are some new
things that aren't in 123? Yeah.I I have a question for

Jonathan Hall (04:30):
you, Shai. What do you need to do after the show
is over? Write the show notes?And and

Shay Nehmad (04:36):
Are they with you about who's writing the show
notes?

Jonathan Hall (04:39):
Is Is that the only thing you need to do after
we, finish the show?

Shay Nehmad (04:42):
Finish uploading? Oh, I'm sorry. You can

Jonathan Hall (04:44):
only do one thing after the show's over.

Shay Nehmad (04:46):
What do you mean?

Jonathan Hall (04:47):
Yeah. That's how set finalizer works. You can
only set 1. Ah. So if you needto set 2, what do you do?

Shay Nehmad (04:53):
Well, define the function.

Jonathan Hall (04:56):
Set finalizer is a a pain in the in the rear.
Anybody who's who's read aboutit probably has decided not to
use it because it's soconfusing.

Shay Nehmad (05:03):
What is run time set finalizer?

Jonathan Hall (05:05):
Yeah. It doesn't guarantee to be run. So first of
all, let's back up a little bit.What is it? What is it?
Right? So you can set use runtime dot set finalizer to set a
function that will run whenyou're when a particular thing,
object or whatever, is garbagecollected. There's no guarantee
that a thing will be garbagecollected, because maybe your
program will exit before thegarbage collector runs, or maybe

(05:27):
you're not using much memory, sothere's no reason for the
garbage collector to run evenfor a long running program. And
you can only set one as we as wediscussed. There's a number of
limitations with the setfinalizer thing.
And I remember when I waslearning Go, I read through
this. I'm like, man, this is soconfusing. I'm gonna make sure I
never ever have to use thatthing. Mhmm. There's a new
proposal out to definitely dothat.

Shay Nehmad (05:45):
Is it like a destructor in the sense that I
know. When I don't need theobject anymore, it's gonna get
cold? Or does it have to

Jonathan Hall (05:50):
wait until the garbage collection? It waits
till garbage collector. So it'skind of like a destructor,
except that it doesn't run whenthe thing goes out of scope. It
runs when the garbage collectorruns. And so, therefore, it's
not guaranteed to run.
So you can't really use it to,like, close file handles and
stuff like that.

Shay Nehmad (06:03):
I just imagine I'd use defer. Right? Because that's
the that's the that does what Iwould have used set finalizer
for. Instead of setting afinalizer on on an object, so I
would just defer the close or orthe cleanup or whatever. And I
think that's kind of the thereason there's

Jonathan Hall (06:18):
not another way to do it, because defer should
handle the the majority of thosecases. But there are still cases
where set finalizer is useful. Idon't know what they are, but
they exist. But anyway, there'sa new proposal to deprecate it
and replace it with somethingcalled ad cleanup.

Shay Nehmad (06:31):
Deprecate it? It's part of the run time.

Jonathan Hall (06:33):
Yeah. So it it would I mean, it would still be
there. Go one compatibilitypromise. It would still be
there. It would just be, like,no users anymore.

Shay Nehmad (06:39):
Oh, like, not deleted. Just like market as
deprecated. Please use the otherthing.

Jonathan Hall (06:45):
Right. Right. And the other thing takes advantage
of generics, which of course didnot exist once that final is
there was invented. And itallows you to to add more than
one cleanup function, which isreally cool. So you can all you
can not only argue about showshow notes, but you can also
take your kids swimming orwhatever you have to do after
the show's over.
You don't have to just be stuckon 1. So it's an interesting,
proposal. It's gotten a positivereaction so far, 14 thumbs ups,

(07:07):
2 Rockets, and a couple, youknow, pair of eyes, whatever
those votes mean. That's surelygonna win.

Shay Nehmad (07:11):
Big eyes are like, I'm abstaining. Yeah. I'm voting
this right now so you can changebreaking news. It's now 15. It
looks good but I don't like Ireally hope to never use it.
Right? I never use set setfinalizer and I've been
programming in Go for for awhile now. Maybe just because
I'm usually doing, like, backend stuff and not super low
level stuff in Go. Yeah. I'mdefinitely not writing, like,

(07:33):
compilers or profilers orthings, you know, deep
serializers or things like that.
I don't know. Overall, it'snice. It's a nice design.

Jonathan Hall (07:41):
Yeah. I like it.

Shay Nehmad (07:42):
The the struct is just called cleanup, and the
function is just, called stop,which cancels the cleanup
function. And the cleanup andthe you know, you have add
cleanup. You're just adding acleanup function. Like, that
seems pretty nice. It's also ausage of 2 generics, which I the
moment I see that, I'm like, doyou really need it?

(08:02):
You have, like you know how ingenerics have t, whatever? Now
it's t and s. Uh-huh. And I'mlike, maybe I'll never use it
because it's complicated. Butit's actually not that
complicated.

Jonathan Hall (08:12):
I'll probably never use it, but I'll I'll
definitely be more likely to usethis than set finalizer.

Shay Nehmad (08:16):
Alright. So if you need to clean up stuff like us
after the show, after our kids,you can upvote, add cleanup. I
think, actually, what would bethe hardest part if this ever
goes to production, which, youknow, I'm not sure. It's a it's
a big thing to deprecatesomething in the run time,
especially if it's not superused and you have defer. But if

(08:37):
it does, writing the tests forthis, proposal should be like a
master class in qualityassurance.
The all the race conditions, allthe data races, all the edge
cases, you know, how do you makesure that it works with,
different optimizations and withfuture garbage collection
versions and with differentgarbage collection algorithms?
I'm like, oh, woah. Verycomplicated in my opinion.

Jonathan Hall (08:59):
Who who's gonna be clicking that CL link and
then go 1.24 release interactiverelease notes now?

Shay Nehmad (09:03):
124? Not not before Or

Jonathan Hall (09:06):
128 or whatever this is. Anyway, so this
proposal was from MichaelKnezic. I think he's on the Go
team. He works at Google anyway.He had another proposal this
week also, which I I think I'mmuch more likely to actually
use.
It's a little bit of a cornercase, but he had a has a
proposal to add a new package toprovide weak pointers. You You
know what weak pointers are?

Shay Nehmad (09:27):
They haven't gone to the gym in a while?

Jonathan Hall (09:29):
Pretty much. Yeah. Yeah. It's like when
you're you're trying to solve acrime and you're like, this is
kind of a clue, like, at leastthe the guy ran that way. We
don't know which of those 6,000people in that crowd he was, but
it's a we see footprints runningtowards the crowd.
So, yeah, it's a weak pointer.Right? Mhmm. Oh, not really. So
a weak pointer is basically apointer.
We know we know what pointersare. You know, a a memory
address that says the thing isactually over there. The thing

(09:51):
is that it the thing it pointsto could be garbage collected at
any time.

Shay Nehmad (09:54):
Oh. How do I, use, weak pointers in Go today?

Jonathan Hall (09:59):
Right now, I don't really know how you do
that in Go today. I don't knowif you can. I think it's a
language feature. Maybe there'sa way to make that happen. I I
suppose with some unsafe magic,you could probably make it work.

Shay Nehmad (10:10):
I I can imagine, like, reading the pointer value,
you know, out to bytes and then,you know, using it someplace
else, like, unsafe, whatever.Yeah. But why like, it's hard
for a reason. I don't want 2.2potentially garbage collected
memory because then I'll get anil dereference. No?
Right. So why are they useful?

Jonathan Hall (10:30):
They're they're useful in a number of
situations. The the first onethat pops to my mind is if you
want some sort of cash forsomething that's relatively easy
to to recalculate. So, like, ifif it hasn't been garbage
collected, we might as well usethe pre calculated version. If
it has been, that's fine too.We'll go ahead and, you know,
recalculate or refetch the thingor whatever.
Mhmm. So if you want some sortof, like, lazy caching, you

(10:50):
know, where where, you know, ifit's still there, I wanna use
the thing. Otherwise, I don't.So it could be useful for that.
And the proposal talks about afew other, use cases.
But that's the one that jumpsout to me and resonated most
with me.

Shay Nehmad (11:02):
Okay. I think we talked about something related
here, you know, in the, in theproposal in the past. We talked
about the unique package, rightMhmm. Being added. And that sort
of really conflicts.
Right? If you remember, theunique package was all about
reusing the same strings. Right?Mhmm. With 2 different pointers.

(11:23):
So making it into a uniquepointer into the same string to,
like, save on memory. And if youturn one of these, pointers into
a weak pointer, now the otherone's gonna get invalidated. And
in general, I think theabstraction of the garbage
collector is, if I'm still usinga thing, don't touch it.

Jonathan Hall (11:38):
Mhmm.

Shay Nehmad (11:39):
Weak sort of, weak pointers sort of make that
promise fuzzier, I think.

Jonathan Hall (11:45):
Definitely. Yeah. It it it's no longer a promise.
It's like, I might be using thisto clean it up if

Shay Nehmad (11:49):
you want to. Mhmm.

Jonathan Hall (11:51):
Like, when you tell your wife, like, I I I'm
not done with the model rocketon the on the kitchen table, but
if you need to clean the tablefor for dinner, that's okay. You
can launch it. I'm wondering,like,

Shay Nehmad (12:04):
again, similar to the, previous proposal, which
makes sense because it's by thesame person, what's the context
of this being added? Right?Like, I I just can't imagine
myself worrying about weakpointers or worrying about,
runtime cleanup set finalizers,thing like that. But I have to
assume there's, like, somecontext of, Michal here, Michael

(12:25):
here, work like, thinking about,oh, I need to do something and
therefore I need a weak pointer.So so I'm I'm, like, I'm
wondering what what's it allabout?
Maybe we should

Jonathan Hall (12:34):
get him on the show, and he can he can answer
this for us.

Shay Nehmad (12:36):
Hey, Michael. We have a channel on Slack. It's
called cup dasho dasho go onyour gopher Slack, so contact us
if you want to come on the show.Cool. 2, awesome proposals from,
Michael this week.

Jonathan Hall (12:48):
Yeah. Yeah. So we talked about weak proposals.
Like, and and your your firstthought was that we said don't
go to the gym. So if you do goto the gym, it probably makes
you buff.
Right? Cute cheesy joke musicnow.

Shay Nehmad (13:06):
Alright. Buff. Yes. That was the segue. Now I will
start talking about Buff.
So, I have a, an opinion. Ithink Buff is should be the de
facto way of working withprotobuf, right now. In the same
way that, you know, you shouldonly use rough for Python
linting, linting, and poetry forpackage management in Python,

(13:30):
and going ci lint as yourlinter, and like, you know, I
have a few opinions on, okay,for now, right now, this is the
best in class tooling for thistech stack. Right? Mhmm.
I am certain that buff is thatfor protobuff. If you remember,
we talked about a blog postcalled gRPC, the good parts.
Yeah. Yeah. Good metaphor.
This is stuff ago for June 28,2024. GRPC is sort of a high

(13:58):
performance RPC remote processcalled framework, which uses
protobuf under the hood. Thisblog post is about why gRPC is
bad, like, the bad parts. SoBuff has been, like, building
sort of an ecosystem aroundprotobuf. Right?
The main thing I love abouttheir thing is the CLI. When I

(14:18):
say the main thing I love aboutthem, I immediately realize it
sounds like a sponsorship. It'snot. They don't they don't know
I do this. I'm just a happyuser.
And their CLI is open source andit does all the things you'd
want a, a CLI to do. Right? It'sopinionated, it comes with
linting, it comes with thebreaking changes, etcetera,
etcetera. And they've beentrying to build a business

(14:38):
around it with, their ownprotobuf schema registry where
you can store your protobuf andshare them and, like, do the
building on the cloud so youdon't have to install all the,
proto generators, which isalways a huge pain. Then you
have to containerize it.
Blah blah blah. Publish it. Sothey're taking care of that,
which I I think it's a goodidea, but I'm I haven't used.
Like, I'm not a paying user ofthis. I'm just using the open

(15:01):
source CLI.
And they've released, actually acouple of weeks ago, but we sort
of slept on it, a buff stream,which is an interesting concept.
So let me tell you the conceptand you tell me what you think.
Right? When you hear when youhear it. They are introducing
buff stream, which is a drop inreplacement for Apache Kafka.

(15:21):
Right? Mhmm. Which is a hugelike, millions of companies use.
And they're claiming it's, 10 xless expensive to operate and
has protobuf first datagovernance. It's then, x less
expensive because it's using,object storage instead of, like
a DB in the back end.
Okay. So it's just saving stuffto s 3, AWS s 3 buckets. And

(15:43):
when you pair it with protobuf,it basically validates data for
the topics when you, publish amessage into the topic and make
sure it it's protobufcompatible. Right? And you save
the descriptor on the, like,entry point to that topic so it
could, like, can serialize,deserialize, validate all this

(16:04):
stuff really really fast.
Basically, send pre compiledversions of your, protobuf
schemas to the topics. AndAlright. They're planning to
add, field level, access controlas well. So, you know, you could
have, like, oh, only if thismessage contains the in the
field, the the word admin, thenyou can publish to that topic,

(16:26):
etcetera, etcetera. But it's notthere yet.
Alright. How does that sound?

Jonathan Hall (16:31):
So I I've never used Kafka heavily. I've had it
on a couple of projects. I'venever done much with it. But it
sounds good. I like protobuf.
I like saving money. I think Ihave questions about, like,
performance with regard to s 3.That doesn't sound like a high
performance sort of thing, butI'm sure they have a a reason
that that works just fine. So,yeah. It sounds really good.

Shay Nehmad (16:51):
So what they what they're basically saying is you
can get rid of, networkingbetween zones, and you can get
rid of, expensive disks. And itdoesn't necessarily increase the
latency as much as you'd expect.They say that the, p 99 latency
is 500 milliseconds and themedian legacy is 260

(17:13):
milliseconds. So if you do ananalytics workload where it's
not, like, real time, you shouldbe fine. Right?
Yeah. So here's one opinion.Right? This is a really good
step forward for Buff and ifyou're already a full on, like,
Buff shop, you're already usingthe schema registry, this might

(17:34):
be a no brainer. Right?
You probably already developedthis for yourself. However, if
you're not it's like there's alot of Kafka with s s three
solutions out there. This is notsuper innovative. And the niche
of the like schema and and likeenforcement in protobuf protobuf
already enforces itself like ifyou run deserialize in your

(17:56):
application, or you know, youtry to serialize it before
publishing it to the topic, andthe message isn't adherent to
the schema. It's just not gonnawork.
Right? So Right. Not like ifyour application knows, what
it's publishing towards, itshould be okay. So enforcing
schemas at the producer levelmight be a bit stupid because
you can already do it withprotobuf and with protobuf

(18:18):
validate. Like you already haveto do it in your application
level because otherwise youcan't read the data.
And it's kind of immature onlythey began designing a year ago.
They don't have, like, oh, weuse this at Disney. It's not,
like, proven at scale orwhatever.

Jonathan Hall (18:31):
Okay. Yeah.

Shay Nehmad (18:32):
And you don't have the community behind it. Right?
Like Apache. It's a hugecommunity. Tons of people use
it, which support it.
And because it's it's not Kafka,it's a replacement. A lot of
features that Kafka has and andbest practices guides, whatever,
extensions, etcetera etcetera.Kafka connect. I don't know.
They won't, like, work.
Right? So I'm not sure. And withthe main thing being protobuf,

(18:55):
if you're not a protobuf shopalready, this is not the thing
that's gonna convert you and theprice, it's better but nothing
when you compare it to selfmanaged. I don't know. I I
really wanna love it because Ilove their stuff and I I I would
love being a developer that'sworking in a full buff shop.

Jonathan Hall (19:11):
Okay.

Shay Nehmad (19:11):
That it's very hard to justify for me this this,
product. So I don't know. It'svery interesting. I I like it a
lot. They have a Slack channel.
They have a demo. Like, you cancontact them to join the beta.
This is very early but I foundit very interesting. In in a
topic that's probably relevantto a lot of, people who are who
listen. Right?
People who do all this dataintensive application shit.

Jonathan Hall (19:33):
Let us let us know on this on the Slack
channel, dashodashgo on the Gofor Slack, If you've used it, if
you would use it. If youwouldn't use it, why not? We'd
love to hear what you thinkabout it.

Shay Nehmad (19:43):
Yeah. But but just to circle back to the beginning,
if you do do protobuf and youhave your own script instead of
setting up buff, you need to setup buff already, man. It's
really good. Really reallyreally good.

Jonathan Hall (19:56):
Sounds like somebody needs to do some, sort
of user research, maybe do somesort of survey about about, you
know, usage of tools like this.I wonder if we could get
somebody on the show who wouldtalk about that sort of stuff.
Oh, wait. I just forgot. I justinterviewed Alice Merrick from,
from the Go team who does thatfor Go.
Nice.

Shay Nehmad (20:13):
So we're let's just do a super quick lighting round
and get back to that.

Jonathan Hall (20:17):
Yeah. So stick around, Shay, for, to listen to
the interview you missed.

Shay Nehmad (20:20):
I missed it. I missed it. I had an emergency.
I'm sorry. Alright.
Lightning round time.

Jonathan Hall (20:25):
Let's go. Lightning

Shay Nehmad (20:31):
round. First up, Naomi Adgar released a really
great intro practical guidecalled profiling in Go a
practical guide. If you've beenmeaning to get into profiling,
you've heard us talk about itand you don't know exactly how
to do it. Just open that blogpost, read it from top to
bottom, and you should be supergood.

Jonathan Hall (20:50):
Next up, we have, wait for it. Wait for it. Oh,
here it is. It's finally loaded.Cogent Core.
Today, we're announcing theinitial public release of Cogent
Core GUI framework. Cogent Coreallows you to build powerful,
fast, arguable, elegant appsthat run on all platforms in a
single go code base. So it's aGUI framework for, for go to

(21:11):
write apps that, at least in mycase, took about 60 seconds to
load, in my browser. So thatwasn't cool. I don't know if 60
seconds is exaggeration, but ittook a while.
It was it was long enough. Idefinitely would have clicked
away if Shai had told me

Shay Nehmad (21:24):
to look at the link. So if you're one of the
fine fine people on theaudience, go check out your new
competitor. And finally Pagefight. What what? Page fight.
Like box, fight, but bothfighters can't fight each other
because they can't figure outhow to centralize themselves.
I'm GUI developers. Alright.Let's tap into, lightning round.

(21:46):
Unit 42 released a new, likecyber research about a new
variant of a Golang based ransomhubs ransomware.
So, yay. More Go development.Woo hoo. I think after the
latest crowd strike incident,which we haven't talked about
because they haven't doesn'thave anything to do with Go. But
it

Jonathan Hall (22:05):
is probably the biggest thing

Shay Nehmad (22:06):
that happened in tech this week. I'm less worried
about, new ransomware's poppingout, the new security updates
for the tools that have to fixthem. Yeah. But they're using
cool stuff in Go, especiallyGophascape, which is interesting
to try to hide their thing, butunit 42 caught them. Good good
stuff Palo Alto Network who area competitor of mine, but I'm

(22:26):
still appreciative of yoursecurity research.
You have samples available onVirus Total. Link is in the show
notes. Boom.

Jonathan Hall (22:34):
Boom. Boom. We're done. Lightning went over.

Shay Nehmad (22:36):
Alright. We wanted to thank our Patreon supporters
for supporting this show. If youwant to support the show as
well, all our links to Patreonstore where you can buy swag,
Slack channel, previousepisodes, etcetera, etcetera,
can be found at cupogo.dev.Please share this show and rate
it and do anything you can tohelp boost our listenership. And

(23:00):
now on to the interview.

Jonathan Hall (23:06):
I am excited today to be joined by Alice
Merrick from the Go team. Shai,unfortunately, couldn't make it
today. I don't know what cameup, but I'm sure it was
important, but not nearly asimportant as the conversation
we're about to have. Alice,welcome to the show.

Alice Merrick (23:18):
Alright. Thank you. I'm very excited to be
here.

Jonathan Hall (23:21):
I'm excited to to talk to you. You learned about
our show at GopherCon, Iunderstand.

Alice Merrick (23:27):
That's right. I was in Chicago at GopherCon, and
I was talking to a couple ofattendees. Also shout out for,
Robert Burke, who who, firstmentioned, cup of Go to me. And
so I I went looking through someepisodes to help me get started.
I like to listen to the Gocommunity.
That's my job. And Mhmm. So Ikinda wanna know peep what

(23:48):
people are talking about. Whatdo you what are you excited
about? And I found one podcastthat was all about the
community, and I was like, oh,great.
This will be a great, intro. Andit turns out you were all
talking about the Go Developersurvey, which I happen to have
run this, you know, a few monthsago. So I was super, super just
excited to get feedback on thatfrom the community. Most of the

(24:10):
time when I'm sharing thatsurvey, I'm I'm sharing it
internally. And so I I get somegood feedback from the Go team,
when I share it externally, thenit kinda goes into the blog post
out into the void.
And, you know, occasionally,people will start, you know,
talking a little bit about it onReddit or so. But really, this
was one of the first times I gotto hear some really great

(24:31):
feedback on what you foundinteresting and, you know, what
you were confused or why wasthis in here or how the Go
survey has changed. And I wasjust, oh, man. I would just, you
know that was just great tohear.

Jonathan Hall (24:42):
That's that's that's nice. I I think that was
the episode where we talked withBill Kennedy. Is that right?

Alice Merrick (24:47):
Yeah. It was. So even getting some feedback from
him too on what he foundinteresting was great.

Jonathan Hall (24:52):
Cool. So, I wanna talk to you about the the Go
developer survey. But but first,I'm I'm curious how you got
introduced to to Go to the Goteam. What's your history like
there? How did that get started?

Alice Merrick (25:03):
Okay. So I've I've been at Google for, I don't
know, I guess, a little over 6years now. And I used to work on
other developer tools, mostly inCloud. And so I worked on some
some stuff that was internal toGoogle, so like our internal
developer tools and some stuffthat was more cloud related. I

(25:23):
worked on, probably most mostrelevant is I actually worked on
Garrett for a little bit.
And that is the code review toolthat the Go team actually uses.
And I I had never, at this pointin my life, had never heard of
Go until I was doing someresearch on, you know, what do

(25:44):
people find difficult aboutgetting started with with
Garrett? You know, why is thisso hard? This was something that
the Garrett team was interestedin. We think it's hard for
people to get started.
Can you tell us why? And so Iwent down this path, you know,
like, why, you know, why peopleuse GitHub or Garrett or GitLab
or some of these other tools,Bitbucket. And I found a
proposal from the Go communitythat was called just use GitHub.

(26:09):
And I don't know if you, I don'tknow if you remember this. This
was this had a lot of comments,and it gave me so much so much
to work with, to really help meget familiar with, what people
liked or disliked about Garrett,what people liked or disliked
about GitHub, and kind of whatit meant to the community.
Not just the people who maintainprojects, but like the people

(26:30):
who are contributing and thingslike that. And, so eventually, I
didn't have the opportunity tojust move on to the Go team, but
I did get reorganized at onepoint. And, and I had a choice
of a couple different languageteams to join. Mhmm. And and one
of them was go.
And I wanted to stay in opensource. So that's that's where I

(26:53):
went. Yeah.

Jonathan Hall (26:53):
Are are you gonna tell us the other languages that
that lost out to Go? Or is thata secret?

Alice Merrick (26:58):
It's not a secret. In fact, like, some of
those teams, aren't aren'tcurrently staffed. But, there
was a, it was there was a Javateam. There was, I think, a
Python team, and there mighthave been something else. Okay.
And so I I decided to to to goand and get started on the Go
team, and I loved it. I love theteam. I love the community. I

(27:19):
love being in open source. As aUX person, it's, I guess, a
little unusual to be working onopen open source stuff.
Though if you are a UX person oryou know one, don't don't ever
discourage them from gettinginvolved in open source.

Jonathan Hall (27:33):
Nice.

Alice Merrick (27:34):
Yeah. It's, I mean, really, just as a, as a
model, it's a great model of howa team really cares about
feedback from the community,which you don't always get in
any, you know, other kinds ofproduct. Or, you know, services
or whatever you're delivering,like, the the open source
ecosystem and the relationshipbetween people, you know, people

(27:56):
at Go, at Google and and thepeople who use Go outside of
Google. Like, it's just a reallyneat, relationship and a really
cool place to be. Cool.

Jonathan Hall (28:06):
So how long ago was that that you you joined the
Go team then?

Alice Merrick (28:09):
I want to say about 5 years.

Jonathan Hall (28:10):
Okay.

Alice Merrick (28:11):
At this point. Yeah. So I've been around for a
little bit. It was just beforethe pandemic. So there was
actually a period of time when Ihadn't met anyone else from the
from the Go team other than theother researcher who sat in
Seattle, and the other the restof the team was distributed in
other places.
And so I think it was about 3years before I met some of you
know, a lot of people.

Jonathan Hall (28:31):
Okay.

Alice Merrick (28:32):
Yeah. Cool.

Jonathan Hall (28:33):
Well, I wanna ask a question. This isn't really go
specific, but I think I thinkit'll be a good question for
you. Maybe it is quite relevantbecause as Go developers, our
audience are gonna be very backend heavy type, you know,
focused. And I think the idea ofUX to most back end developers
is something like a Reactdeveloper who's designing web

(28:53):
interfaces. That doesn't soundat all like what you're doing.
And, you know, I I've workedwith some some pretty
professional UX people who wouldwho would laugh at that
description, but I think that'sthe common perception. Would you
help us understand what is UX,and how does UX relate to
something that doesn't have afront end interface?

Alice Merrick (29:07):
Yeah. That I mean, that's a good question. I
actually got that a little bitfrom people at at GopherCon as
well. It's like, well, what doyou do though? And Yeah.
And I'm like, well, have youever taken the Go developers
survey? And then I'm like, well,that's part of what I do. That's
I would say, that's the mostvisible part of what I do. But
it's not the only part of what Ido. And, absolutely everything
that you interact with, youknow, a hammer has a has a user

(29:28):
interface, Doesn't necessarilyneed to have a front end.
It doesn't necessarily need tobe visual. Some, interfaces are
natural language interfaces. Youknow, if you're talking to your
your digital assistant, youmight be using natural language
or an LLM. You might be usinggestures, if you're talking to
your lamp or something. Youknow, there's just all all kinds

(29:49):
of things that have all kinds ofinterfaces, and even developer
tools, and developer languagesand things that you're using on
a day to day basis also have aninterface.
Even if you don't typicallythink about it, Somebody
designed that, you know, thiskeyboard you're using. Somebody
designed that, this mouse.Someone designed that. And but

(30:10):
also just, like, what your keybindings are, or your or your,
you know, your whatever, editoryou're using, you know, somebody
somebody made decisions aboutthat. And maybe a UX specialist
was involved in maybe not, youknow, sometimes, sometimes
developers kind of come up withthese things organically and and

(30:30):
things can spread in other ways.
But, you know, if you use Versuscode, you better believe there's
a, you know, there's probably anarmy of UX people, you know,
behind that kind of thing. So,in a in a language itself also
is gonna have, you know, or anAPI. APIs are designed. Right?

Jonathan Hall (30:44):
Mhmm.

Alice Merrick (30:45):
And, languages are designed. So anything that
is at that intersection of humanand some kind of technology is
going to have an interface, andsome kind of user experience
associated with that. So I don'tstrictly work on graphical user
interfaces. I'm interested inthe experience of using tools,

(31:05):
you know, for humans and, otherkinds of technologies.

Jonathan Hall (31:09):
Sure. Wonderful. I think this is my last question
before we talk about the survey.And I don't know. The answer may
be no.
Maybe it's too nebulous. But isthere something you can point to
that we would know that you havelike, your fingers are so deeply
ingrained into that that wecould go, oh, yeah. Alice is
responsible or largelyresponsible for this thing other
than the survey. Like, anotherfeature of something in the Go

(31:32):
ecosystem that that that wewould point to.

Alice Merrick (31:35):
Something in the Go ecosystem that you can point
to. Probably fuzzing. Okay. Soif you've, if you've used
fuzzing, that was something thatI I worked on quite a bit ago
and some of the documentationaround that and helping inform
some of the the use cases there.And then, like, also, I I I

(31:55):
don't wanna take all the creditfor this because, again, I'm
part of a a 2 person team here.
So, I know security, like, govault and check, in particular.
Yeah. That, UX had their hadtheir hands on that. Yeah. So,
and that that's just a coupleexamples.
You know, sometimes people willrespond to my research in ways
that I haven't even kept trackof. So,

Jonathan Hall (32:17):
you

Alice Merrick (32:17):
know, I'm sure that the the Go team could
probably even point to moreexamples that I'm necessarily
not even thinking about. Well,

Jonathan Hall (32:23):
I I love those examples because I just think it
helps make it tangible that thatthat what you're doing is, like,
go Volcan check. I don't thinkit has any graphical interface
component. Maybe there is onesomewhere. But, like, okay, you
did that. I could I I now I canimagine the kind of work that
you're you're doing.
So that Yeah. Helps make it moremore tangible. So let's talk
about the survey. Yeah.Hopefully, every listener has
taken the survey.

(32:44):
We we we always encourage ourlisteners to do that. I'm sure
they haven't all done it, but myfirst question for you is, at a
high level, what are you hopingto learn from the survey?

Alice Merrick (32:55):
Alright. Yeah. This is a that's a that's a big
one. There are so many things.And I usually when I start out,
I have a list of things, like,these are my goals for this,
this edition of the survey.
The survey is not open rightnow, but, we are actually about
to start another round.

Jonathan Hall (33:10):
You do it every 6 months. Right?

Alice Merrick (33:12):
Us about that. Yeah. We use we've started doing
it twice a year. We used to justdo it once.

Jonathan Hall (33:17):
Okay.

Alice Merrick (33:18):
And so, some of the things that I wanna learn.
Every time we have some, like,sort of top level metrics that
we keep track of year over year,are those steady? You know, have
we seen any big shift? That'sthat's one thing. That's, you
know, things I can pass up thefood chain to be like, Yeah,
we're doing all right.
Kind of, you know, gut check.Then there are other things that

(33:39):
we collect, every year that are,like, how people are using Go to
see, like, are there any changesthere and how people are using
Go, what they're doing with Go,what kinds of other tools they
might be using along with Go,different preferences for other,
you know, like IDE, things likethat. What are they what are
they developing on? And thisinforms, 1, like, sometimes how

(34:01):
we, you know, interpret changesthat we're that we see over year
over year. Right?
So if we see that these thingsare stable, then we can say,
like, yeah, our population isabout the same. We should
expect, you know, these resultsto be, you know, to we would
expect changes to be attributedto things that we did rather
than changes in our population.Right? So we do collect some of

(34:24):
those, even things like how muchexperience do you have with Go
or, what size organization,things like that. That kind of
helps us monitor those moremetadata kind of things.

Jonathan Hall (34:35):
Mhmm.

Alice Merrick (34:35):
And then I usually have a couple of topics
that I'm interested in. And oneof my one of my chief goals is
always to help the Go teamprioritize what kinds of things
they're gonna be working on inthe next 6 months or the next
year. Right? So finding outwhat's really, important and
critical, to people. So youmight see lots of questions on
the survey that are like thisthat deal with, like, hey, how

(34:57):
important is this to you?
Do you do this or this thing orthis thing? And that's because
it's gonna help the team, youknow, determine, okay, this is
where I should focus. Because alist of issues is a great place
to start, but it doesn't reallyhelp you know how much of an
impact am I gonna have if I takeon this work, right? So helping,
helping the team, determine whatto prioritize and what kind of

(35:20):
impact they can expect to haveby doing certain kinds of work.
That's, like, kind of like, if Ican do that, I nailed it.
And then I usually have, like, acouple of other topics that,
maybe there might be related toother ongoing research, that
Todd and I are doing. They mightbe related to, maybe even other,
like, things of interest in, inother developer ecosystems like

(35:42):
this last year. AI has just kindof been in the zeitgeist. So we
did ask a lot of, AI relatedquestions. Sometimes these are
questions that are related to,other, you know, other people
that we partner with, likeDeborah or maybe people who, do
other kinds of things in thecommunity.
Like, are there certain kinds ofquestions we can help them,

(36:03):
answer and that kind of thing.So I usually have, like, a lot,
you know, a lot of things thatI'm trying to do. I try to limit
to, you know, okay, here are my,like, top 3 or 4 goals or
whatever.

Jonathan Hall (36:13):
What has been maybe your biggest surprise over
the years as you're doingdeveloper survey? Have you ever
gotten any answers that werelike, wow, I really did not
expect that?

Alice Merrick (36:20):
Well, I will I will say that, you know, I've
I've been asked this before andevery nothing is surprising in
retrospect. I'll tell you that.

Jonathan Hall (36:27):
Yeah. Uh-huh.

Alice Merrick (36:30):
It's, so I I often will have to kinda write
out ahead of time, you know,what do we expect to find here
to determine whether or notsomething is surprising or not.
And I will say that just in thein this past year, something
that surprised me, how differentthings like operating system
preference are globally. And so,we tend to get lots of

(36:54):
respondents who are from NorthAmerica, Western Europe,
basically, people who are verycomfortable responding to a
survey in English because at themoment, that's the only,
language it's available in. Andso some of our data, it reflects
that, that population very well,but it might not be as

(37:14):
reflective of Go developers inother parts of the world. Right?
And so that was something thatwe discovered. I wouldn't
necessarily say we discovered itthis year, but it became a
little bit more obvious to usthis year when we introduced a a
new source of sampling for thesurvey, and that was through the
JetBrains, collaboration. Mhmm.So over the 2 week or so period

(37:38):
that the that the survey wasover open, about 10% of people
who use Go land, were asked,like, hey, you're using Go,
like, would you like toparticipate in the Go Developer
survey? So this was, like, youknow, about as close to a random
sample as we can sort of expect.
Mhmm. And, we did get to hearfrom people in other parts of
the world than we normally getto hear from. And and this so we

(38:02):
had a little bit more to be ableto say, like, hey, it looks like
people in these parts of theworld might have a greater
preference for just developingon Windows than, you know, than
we see here. And it kind ofhelped us, actually understand
some of our website data, whichseems like, hey, it seems like
we have a lot of Windows users.Where are they?
And it's like, okay, this is whylike, you know, we're just not

(38:26):
hearing from them in thissource. But, we can hear from
from them, from some othersource. So that was, I would say
just on this last, on this lastiteration that was surprising to
me, there have probably beenother surprises that, you know,
over time, you just get inuredto, you

Jonathan Hall (38:43):
know. But I I like that answer because it it
leads me right into, like, thethe thing that always jumps out
of me at being this eternalskeptic that I am. When I look
at the results of the survey,the the number one highlight is
developer sentiment remains highwith 93% of respondents
expressing satisfaction with Go.But the people who hate Go
aren't gonna respond to asurvey. So how do you account
for that?

Alice Merrick (39:03):
Well, you'd be surprised. I mean, have you been
on have you been on have youbeen on Amazon? Have you seen,
read read the reviews there? No.Sometimes I do actually get, I
mean, this is a fair criticism.
And we have asked, people whosay they are dissatisfied why
The this is something that we'vedone on past surveys. We don't

(39:24):
do this every year because theanswers don't tend to change a
whole lot.

Jonathan Hall (39:27):
Sure.

Alice Merrick (39:28):
But it usually has to do with, there's
something I need that Go doesn'tdo either. It's some kind of
language feature, or it's somelibrary that exists in, you
know, some other languageecosystem that Go is just not,
you know, nobody's ever reallyinvested in using Go for that.
So, that tends to be the the thething that I that I hear, you

(39:51):
know, the most. I've also doneresearch where I talk to people
who try to adopt Go and did not.

Jonathan Hall (39:56):
Okay. Yep.

Alice Merrick (39:57):
So so I'm so I definitely go out of my way to
talk to those people because Iknow they're not going to
necessarily be as common on myservice. Mhmm. So I have to make
a point to talk to people whoare unhappy with Go. Sure.
Actually, once I met 1, I gofor, like, coming up to me, the
very just very proudly tellingme all the things they had to
hate about Go and why it's soawful.

Jonathan Hall (40:18):
Curious why they went bought a ticket. But hey,
whatever.

Alice Merrick (40:21):
Apparently, it was they said it was the best
tool for their job at the time.

Jonathan Hall (40:25):
Okay.

Alice Merrick (40:26):
So but it but it was it was, it was fun for me.
But anyway, back to, you know,so we have a couple of different
sample population. One way thatwe advertise the survey is
through the go blog. If you readthe go blog, you probably really
like go. Yeah.
This is true. Now if you're justusing go as a part of your, day

(40:48):
to day job, you're maybe notlike you don't follow the
ecosystem that closely. Youyou're not reading the Go blog.
You're just like, I'm just I'mpunching the clock. I'm doing
my, you know, I'm doing my joband I'm going home.
Mhmm. Maybe you would have heardabout the survey through your
IDE plug in, you know, Versuscode or maybe your Go land user.
And, you know, it was like, hey.I noticed you're using Go. Do

(41:10):
you wanna tell us about it?
So that's more of a randomsample. Of course, somebody has
to elect to be like, yeah. Okay.I'll do it. Mhmm.
But sometimes people are, you doexpect more extreme answers,
right, from people who are sortof electing to participate.
Right? You you would expect tosee more people who are unhappy,
more people who are happy. Andwhen we do comparisons between

(41:32):
people who come from a blog andpeople who come from these other
sources, there's statisticallynot any difference in how we
have measured customer or CSATor customer satisfaction. And
this, this gives us someconfidence in that number.
And we also see like, this isalso a way for us to track

(41:54):
things over time. Right? So wecan make comparisons year to
year. If this droppeddramatically, that would that
would be, you know, at least,that would be a terrifying
signal. And, so, you know, thateither something had
dramatically shifted in ourpopulation or something had
dramatically shifted in howwe're doing.
It's important for us to havemetrics like that that are just

(42:16):
kind of like, I'm taking yourtemperature. This isn't gonna be
this isn't a diagnostic tool.Right? We have to ask other
kinds of questions for that. Butthis is a way to take a
temperature.
And this kind of question, it'scalled a CSAT. I actually had a
laugh out loud moment when I waslistening to you talk about, NPS
and, and CSAT. You know, thesekinds of things, they make it

(42:38):
easy to make comparisons withyourself year over year. And so
and and CSAT is also somethingthat's used, I think, by every
product at Google. So it helpsus compare with other people who
are like us.
Maybe other, you know, otherkinds of developer products or
tools and that and, things likethat. So it can help us, like,

(43:00):
hey, look, the Go team's doingsomething right over there.
Their, their CSAT is very high.How are the rest of you doing?
So so it helps make, helps tomake comparisons, even if it
again, it's not the most like,it can be in some ways like,
hey, we did good pat on theback.
And and I think, like, some ofthat is is still also important.

(43:20):
Like, hey, we know we're stilldoing a a good enough job.

Jonathan Hall (43:23):
Yep. The, the second highlight from, this last
survey says that a majority ofrespondents, 80%, said they
trust the Go team. And andobviously, you're gonna have
your own bias here becauseyou're on the Go team. But one
criticism we hear, especially incorners of the Internet, like
Reddit, where people are justeventually negative is Google is

(43:44):
is railroading things through,you know, they they already have
decided they're gonna do, let'ssay, telemetry. Now that was a
that was one sort of hot buttonissue where this complaint came
up.
We know that they've alreadydecided to do it. It doesn't
matter. They're just they'rejust it's just a show to make it
look like community support. Howhow do you respond to this? I
mean, obviously, 80% of peopleapparently don't think that this

(44:04):
is a problem, but probably morethan 80% know this is a problem.
But there are certain vocalminority who who who sort of rag
on this. How do you respond tothat as somebody whose job it is
to learn from the community?

Alice Merrick (44:16):
Yeah. So this was an experimental question this
year. We had never asked thisbefore. Mhmm. It was something
that in the developer space atGoogle, people are starting to
be interested in in measuringdeveloper trust, not just, on
the Go team, but in, you know,we you know, we've got Android,
we've got Chrome, we've got, youknow, Flutter, we have all
these.
And so this is something that's,of interest to see, you know,

(44:40):
what is this like? Does youknow, and and what does this
mean? And how do we measurethis? And so this was an
experimental question. And,honestly, we didn't have any way
to really interpret what thismeant when we collected this.
So I did a follow-up study.Alright. To actually learn, you
know, when we ask people, youknow, how much do you trust the
Go team at Google to do what'sright for developers like me or

(45:03):
something like that. Or make,you know, and and we wanna know,
like, you know, when we say thissentence, what is what does
trust mean to you? What does theGo team at Google mean to you?
You know? And and so how are youkind of interpreting this
question? Why did you give itthe response that you you gave
it? And in it and it seems that,like, kind of what this means
is, like, super multifaceted.There's, like, there's lots of

(45:26):
literature on just, like, trustand how to measure trust.
And some of it mapped, prettywell with what we found, and
some of it was, like, a littlebit, different just because
sometimes people ask about,like, how much do you trust an
organization or how much do youtrust this particular
technology? The way that weasked it was kind of like, how
do you how much do you trust theGo team at Google? You know, is

(45:46):
the it's a little bit kind of inboth camps. You know, is it a,
you know, is it a technology? Isit an organization?
What's going on here? And so,well, some of the things that we
found is there does seem to bethis belief that the Go team
cares about and has thecapacity, you know, or the
competence to be able to makegood decisions for go. And that

(46:10):
we take into consideration thepeople who use go when we are
making those decisions. And soit's kind of like some
competency, some benevolent.There's, you know, and then also
just belief that Go will improveover time.
So I will say that that seemedto be, the things that that's
the way that I'm interpreting,you know, what they're telling

(46:32):
me when they say, like, yeah. II, you know, I somewhat or very
much, trust the Go team atGoogle. Now, this is something
that we're probably gonnacontinue measuring over time,
and we're probably gonna askeven more, like, like, more
granular questions in the futureto really understand about,
like, what are the componentsthat go into this trust and
things like that. So, I will saythat this is the beginning of

(46:55):
this metric. It is not the endof this metric.
I know.

Jonathan Hall (46:59):
I think I don't remember how I answered that
question. We I may have talkedabout it on the previous
episode. I don't recall. But Irecall that, like, when I look
at the summary, the the thingthat jumps out of me is for
developers like themselves.Like, how many developers are
are actually like me?
Like, maybe I implicitly trustthe Google team or the Go team
to to make all the objectivelycorrect decisions, but I was in

(47:19):
such this weird niche cornerthat, like, none of those
decisions apply to me becauseI'm I'm unique in in, of course,
all my all my weird esotericways. So, you know, that that's
one of the thoughts that jumpsthrough my head and I'm I'm sure
you had all sorts of responses,you know, that picked on
different different aspects ofthat. Yeah.

Alice Merrick (47:33):
Yeah. So I mean, another another thing that we
can do in the future is ask, youknow, why? Why do you, like, why
do you trust go this much? Orwhy do you not trust, Go this
much? And, you know, I learnedjust to learn more.
But, yeah, I think you did talkabout it on the episode where
you mentioned you I think youspecifically mentioned telemetry
and the decision to make it optin rather than opt out.

Jonathan Hall (47:55):
Uh-huh. The last several items on and this
highlights are several of theitems were about AI. I'm not
gonna go into the specificsthere because there's just so
much there, but I'm curious.Obviously, AI was a big part of
the last survey. What did youlearn, in broad strokes about AI
in the Go community that thatwas relevant to you?

Alice Merrick (48:15):
Yeah. So, my my colleague was doing some other
research related to AI. And so,I think parts of these were more
things that were you know, he'strying to triangulate some data
with, you know, interviews he'sdoing with, you know, things
that we're finding on thesurvey. So some of that was just
sort of, like, triangulate.Like, can we get a put a

(48:37):
quantitative measure on, youknow, other things that we're
learning?
So, one of the things that wewanted to know was, are people
trying to use Go in, like,similar or different ways than
how they're using Python? And,like, where is Go fitting in
this, this AI space, and how arepeople potentially going to use,

(49:00):
Go in the future here. And itdoesn't sound it it's it doesn't
sound like people are, like,yeah, I really need, you know,
whatever Python libraries, theyou know, I'm thinking all I can
think about is matplotlibbecause it's the only thing I
use. But but but, you know,other other things like, you

(49:22):
know, whatever ML or AI relatedlibraries, you know, is that
something we need to build? Dowe need to build
interoperability with Python?
Like, what do we need to do hereso that we're sort of meeting
people where they're at? And sothat was one thing that we took
a look at. It sounds like peoplewho are doing AI ML, which is,
like, not everybody. Right? Solots of people that we talk to

(49:44):
are not in the space, and, thatthat seemed right to me.
You know, maybe some people whoare working on back end of an
application, maybe these are notthe AIML people. Like, it's not
like we surveyed a bunch of datascientists. So the fact that not
everybody is doing this, okay,that's not super surprising. And
the fact that the people who aredoing this are not necessarily

(50:05):
using Go. Also not like again,like, not not too not too
surprising.
There there weren't a lot ofsurprises here, but it was but
we also didn't know. Yeah.That's the thing. Is we also
didn't know.

Jonathan Hall (50:16):
Punches and now you now you're more confident.

Alice Merrick (50:19):
Yeah. And surveys are good for that kind of thing
is, sort of testing ahypothesis. They're not
necessarily the best atgenerating every possibility of
of response.

Jonathan Hall (50:29):
Sure. Yeah. What should we be looking forward to
in the next survey? Can you giveus any, any sort of hints? Or is
is that does that violate thevalidity of the results if we
know ahead of time?

Alice Merrick (50:40):
Well, I I, you know, I'm really happy to tell
you that I it's not written yet.And so I might have to turn this
back on you. And ask you, I needto ask you, what do you want to
hear more of? From because I'mactually in this process right
now is like collecting, youknow, feedback and questions and
stuff that that's gonna go onthe next survey. And so I'm

(51:01):
curious.
I I don't always get to address,you know, the community directly
and, what do they wanna hearmore about? What's interesting
to them and what's gonna helpthem make decisions for the
next, you know, 6 months oryear?

Jonathan Hall (51:15):
So that reminds me of something I just saw. I
have to look it up here. Oh,they they were they were curious
how many applications, like thesplit of application deployments
by operating system. Mhmm. Andthey looked at the survey and
and they found I pro and it saysI primarily deploy go software
to and Linux windows and so on.
But but I noticed that this isabout how many people deployed

(51:37):
to those places, not how manyapplications are deployed on
those on those operatingsystems. So, like, to be to be
silly extreme, if all of theWindows developers are built
working on one app, whoresponded to the survey, that
would be a point of 1. And ifevery Linux developer is respond
is working on a set individualapp, of course, you know, that
there'd be 1,000,000 or, in thiscase, 5,005 100 Linux apps and

(52:01):
one Windows app, but the numberslook different because they're
talking about developer numbers.You see what I'm saying?

Alice Merrick (52:05):
Yeah. Yeah. That's true. You can No.

Jonathan Hall (52:07):
I don't know how you could possibly solve that
with the with this sort ofsurvey. But

Alice Merrick (52:11):
Yeah. You you can't Yeah. From what we asked,
we just asked, like, whichplatforms are you deploying to?

Jonathan Hall (52:19):
Mhmm.

Alice Merrick (52:20):
And they could select as many as, you know, as
they do. Yeah. And and maybethey only had one application on

Jonathan Hall (52:29):
Oh, sure. Yeah.

Alice Merrick (52:30):
Yeah. But then they have to

Jonathan Hall (52:32):
Yeah. Yeah.

Alice Merrick (52:33):
Yeah. And that's yeah. That's not represented
here. And so my question is, isthat, like, is that distinction
really important? And, and like,what what would that help you,
what kind of decision would that

Jonathan Hall (52:47):
help you make? It would help me win an Internet
debate. That's really all thatmatters due to me. I I don't
actually I don't actually knowwhat what, I I think it was a
point of curiosity for theperson who made the the
observation, and I was justpointing out that these aren't
exactly the same thing. You'reyou're not making quite the
same, the data you're presentingto this person on on LinkedIn.

(53:08):
The data he's presenting doesn'tquite make the claim he's
claiming it does, but it's aclose one. So I was just being
my my normal internal skeptic.It wouldn't matter to me, that
particular thing. So I don'tthink that's gonna help you in
the least. Yeah.
Just the first thing to go tomind.

Alice Merrick (53:24):
Yeah. Well, that's the thing. Well, I mean,
this is a good demonstration ofwhy I sometimes say no to
questions on

Jonathan Hall (53:29):
Yeah.

Alice Merrick (53:29):
The Go Developer survey as well. It's like, sort
of in this process, I have tohave a valid reason to collect
data, like, just as my my dutyas a data steward is that I can
only collect things that we'regoing to use, and that's going
to help us in some way. Andcuriosity, I have to is pretty
low priority, like, unless it'sgonna, you know, unless it's

(53:51):
gonna help us, move forward,which is, you know I I mean,
there's nothing wrong withasking things, out of curiosity.
Lots of academics do that.

Jonathan Hall (53:59):
Of course.

Alice Merrick (54:00):
But that's just not my that's not my duty to the
to the Go community and the Goteam.

Jonathan Hall (54:04):
So one thing that I would find very fascinating as
a host of a of a podcast thattries to help promote Go is,
what libraries are missing thatwould that would make Go
adoption easier? And, you know,I we we bring on a lot of guests
to talk about, data science andand AI ML stuff in Go because we
feel like that's an area whereGo is growing, kinda like you

(54:25):
were just talking about Goversus Python. I would love to
see Go, really compete withPython in that area. I think
it's a better language for that,you know, with type safety and
it's faster, all these things.But there's a strong sentiment
not to and I think from thesurvey you've seen that a lot of
the reason is it's missinglibraries.
So, you know, that would be onearea, but I don't I'm not
exclusively interested in inthat. But just in general, like,

(54:47):
where could could I, as a cohost of a podcast and as an open
source contributor, where couldI spend my time to help help
fill in the gaps? We don't needanother ORM. We have enough of
those. We don't need another webframework.
Where could I spend my time withinterviews and with with
contributions to open sourcecode that would help promote Go?

Alice Merrick (55:05):
Okay, well, there's a couple of there's a
couple of things here that Iwant to tease apart. And one is,
the idea that more librarieswill increase Go adoption, which
my research does not indicatethat this is necessarily true. I
don't think that that's true.But I could talk about that. But
I want to address the missinglibraries thing, because I have

(55:26):
asked this before, as Ispecifically said, what if
anything, would let you use gomore, you know, and I have this,
I I asked this question as anopen text, question for for
several years, and then we movedto a format where we provided
the responses based on thosethose previous things.

(55:46):
And one of them was, missinglibraries or other things that
were missing in the ecosystem.And then if they selected that
response, I then said, okay.Tell me what's missing. What's
the thing that's that's,blocking you? And for some
people, it was GUIs.
They want to, you know, they'relike, oh, I just I I wanna build
GUIs. And for some people, itwas AIML. And again, I asked

(56:07):
this sort of, like I think thelast time I asked this was,
like, 20 or 21. So, you know,things have changed, you know,
since then. But that's, like,that's where, like, you know,
that's where people kinda wantedto to see more, you know, more
libraries or more support.
But the things that they werebuilding were, like, because I

(56:29):
also asked them in othersurveys, like, okay, if you're
using Go for GUIs or if you'reusing Go for, you know, AIML,
like, what, like, what are youdoing? Why do you use Go for
this? And, like, some of themwere just kind of like, oh,
well, you know, I I wanted tolearn. It was fun. It was a side
project.
And so, like, for some of thosekinds of things, it was like,

(56:50):
well, it was hard to make abusiness justification for us to
go and build those kinds ofthings. But there's definitely
interest there. Like,definitely, like, if if you're
if you're looking for, like,what are just people just
interested in doing, GUIs andand GUIs and AIML are kind of
like the top things that thatwe, you know, have have we've

(57:12):
been told that that are missing.And, you know, there are some
good reasons, like, even, youknow, there might even be
business cases now for doingsome of these things, and go,
when I ask people why do they,like, why do they use go for
gooeys or why do they want to,one of the responses is very
much similar to why people writeCLI in Go, which is one of the

(57:34):
most common use cases for Go.

Jonathan Hall (57:36):
Mhmm.

Alice Merrick (57:36):
And it's like, well, it, you know, deploys
anywhere. You know, like, it'sjust so easy. And it just so
happens that my end users,prefer a GUI than than a CLI. So
it seems like it's kind of for,you know, sort of similar
things. You know, I'm buildingthis, like, little utility or
something.
It just so happens that my endusers, don't like CLI. They they

(57:56):
wanna they wanna gooey. So andI'm like, hey, that's that's
like a, you know, that's prettygood. And I know that there are
some things that exist in thethe ecosystem that will that
will help people do that. Idon't know how I don't know how
well supported or maintained orwhatever.
I don't know if this is meetingpeople's needs. It's not like a
thing that, I have specificallylooked into. But I do know that

(58:19):
it's, you know, it is the thingthat people are interested in.
And, like, maybe it's just sothat they can, you know, they
have a starter project, and it'sfun. Like, and I think that
that's also a good like, that'sa that's a good important use
case.
It's just not necessarily onethat, the Go team is gonna go
out and build.

Jonathan Hall (58:34):
Yeah. Cool. Yeah. I think, you know, you you
joined the Cup of Go channel. Idon't know if you're Yeah.
Hanging out there regularly now,but, you can we can reach out to
you there. Yeah. My finalquestion that the question we
ask all our guests, when youfirst started learning Go or
were introduced to Go, what wasyour biggest surprise?

Alice Merrick (58:53):
So we talked about this a little earlier and
that I don't write Go regularlyMhmm. But something that is
different, about Go that I foundsurprising is, just from what I
know about, you know, thingslike Java and, you know, and
other other languages is theyhave frameworks, and they have,

(59:15):
you know, lots of ways of doingthings. And in Go, there seemed
to be kinda, it was a little bitmore I don't I don't wanna say
bare bones because that makes itsound negative. But Yeah. There
is, it seems like very easy forpeople to, read and understand
each other's code in ways that,like, you can when you when I

(59:37):
looked at Go, I could see thislanguage was really meant for,
for, you know, kind of bigsoftware projects with lots of
people working together on them.
Like, it was really trying tosolve the problems of, software
development as a socialactivity. You know, even, like,
gofump. Like it, you know, it'sformatted the same, we don't

(01:00:00):
have to fight about, and littledetails like that, as well as
the sort of lack of these, like,you know, big, big frameworks,
made it something that wasreally easy to share, like with
other people. And so I would saythat that for me was like the, I
would say the biggest surprise.And that it's kind of I realized

(01:00:23):
that's kind of high level notlike,

Shay Nehmad (01:00:25):
Oh, that's good.

Alice Merrick (01:00:25):
But I don't use it. Yeah. But yeah, that that
was in and also just like howmuch people love it.

Jonathan Hall (01:00:33):
Yeah.

Alice Merrick (01:00:34):
I don't always I haven't always worked on things
that people love. So that was,that was,

Jonathan Hall (01:00:38):
As a UX enthusiast, I'm sure that's a
relief.

Alice Merrick (01:00:42):
Yeah. I mean, that really feels good.

Jonathan Hall (01:00:44):
Yeah. Good. Great. Well, Alice, I really
appreciate you coming on. It'sit's good.
I I think you're the firstpresent member of the Go team to
come on the show. We've had somepast members.

Alice Merrick (01:00:54):
Exciting.

Jonathan Hall (01:00:55):
I I think you're the first one who's, a current
member of the Go team on theshow. So if if I'm wrong, I
apologize to whoever I I forgot,but I I I'm pretty sure you're
the first.

Alice Merrick (01:01:05):
Yeah. Well, that's great. I hope I I hope
this starts a a new trend foryou if you're interested in
talking to GoTo members. Yeah.

Jonathan Hall (01:01:12):
Well, thanks so much for coming on, and thanks
for sharing your wisdom. Maybewe'll have you on again soon.
And, until next time. Alright.

Alice Merrick (01:01:19):
Bye. Yep.
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.