All Episodes

October 3, 2025 â€ĸ 31 mins
★ Support this podcast on Patreon ★
Mark as Played
Transcript

Episode Transcript

Available transcripts are automatically generated. Complete accuracy is not guaranteed.
Jonathan Hall (00:00):
The show is supported by you, our listener.

(00:01):
Stick around till after the newsto hear more about that.
This is Cup and Go for October'3, whichever you prefer, 2025.
Keep up to date with theimportant happenings in the Go
community in about fifteen ortwenty minutes per week. I'm

(00:24):
Jonathan Hall.

Andy Williams (00:25):
I'm Andy Williams. Great to be here
again. Nice to

Jonathan Hall (00:27):
see you, John. How are you doing? I'm good. Hi,
Andy. It's great to hear fromyou again.

Andy Williams (00:31):
Yeah. No. Thrilled to be back again.
Thanks so much.

Jonathan Hall (00:33):
You've been on the show a couple of times as an
interviewee, as a co host, andyou're also, I understand,
incredibly busy lately. How didyou have time to do this today?

Andy Williams (00:41):
Well, you see, I think the secret there is I
didn't say that I was availableuntil I got through all of the
busy craziness. It has been amad few months. Yeah. But, yeah,
I mean, it's conference season,so I kind of end up running
around all over the place tryingto see as many people as I can,
talk at presentations wherepossible, and actually just like
meet as much of the community aspossible. That's one of the

(01:02):
things I love about beinginvolved in Go is the wonderful
people and all of the sponsorsand the supporters that make
community projects, conferenceand meetups all possible.
So that's been my pet projectthrough August and September.
And I noticed that there's quitea few putting videos online now
so if people have missed them. Ithink Go For Con US is not quite

(01:24):
there. A couple weeks stillstill to go on that one, they
said October. But Go For Con UK,for anybody who didn't make it
to London, have uploaded all oftheir videos as well.
You can check that out on theirYouTube channel. That's Go For
Con UK. And, of course, close tomy heart we had Find Conf in
Edinburgh as well two weeks agoand we've just got our videos
uploaded as well. So if you goto conf.find. You can see all

(01:48):
the videos linked from there.
Yeah hopefully that's useful forpeople who weren't able to make
it. We've not got a nicelocation yet. We're kind of
waiting on sponsorship. I knowall conferences are struggling
with sponsors at the moment andwe're not, you know, we're not
separate to that. And so ifanybody's got ideas about where
we could travel to because we'retrying to get it everywhere,
share the love.

Jonathan Hall (02:09):
Nice, cool. We don't really have any new
conferences coming up, but Iguess we've mentioned the ones
last week in Africa and Nigeriaand in Utah, they're coming up.
We already talked about it lastweek. So just a reminder, go
check last week's episode fordetails if you want go to one of
those. Let's move on to someproposals.
We have quite a list ofproposals to talk about today.
The first one is a quick onebecause it's just an update on

(02:31):
something we talked aboutrecently. The proposal to add
the new goroutine leak profileras an experiment has been
officially accepted. So we couldexpect that experiment, I
imagine, in Go 1.26, worst case1.27 if it's more complicated
than can be ready by then. But Idon't anticipate that being a
problem.
So look forward to that. If youwant the details, check out

(02:53):
previous episode link in theshow notes for that. And one
other one that's it's a littlebit of an update because we did
mention it several weeks ormonths ago, but it's now been
added to the official proposalminutes, which means the GO team
is talking about it every week,working on fleshing out the
details. And I would like you tohelp me with this one because

(03:14):
this is this is some prettymetal stuff or or bare metal
stuff, I should say.

Andy Williams (03:18):
Excellent. Excellent. Yeah. I mean, I don't
know what you know about metal.It's it's not my genre, but it
it turns out that what they'retalking about is running Go
programs directly down at themachine execution level, no
operating system.
Like, I mean, that's completelymad, right? Whether you're doing

(03:40):
stuff on servers or desktop oreven delivering to mobile,
there's an operating systemthere. So So why does it matter?
Well, turns out for a lot ofdifferent reasons. You could ask
the TinyGo guys for a start.
The great folk on that projecthave been delivering on embedded
devices for a long time andthere's all sorts of reasons why
you might not want to be runningon top of a layer. Maybe you're

(04:03):
security conscious or running ina constrained environment.
Anyway, this project is talkingabout having Go applications
manage to compile down withoutany concept of the operating
system. So the way they'retalking about doing it is by
setting the Go OS environmentvariable. The discussion started

(04:23):
off as Go OS equals none.
But since then, I think Aika andPatricia from the TinyGo project
have pointed out that oftentimespeople use none for a build flag
for not including a file. Sothere is a suggestion that
perhaps there should be actuallyno OS, which was pointed out in

(04:44):
a GopherCon talk that thatsurely should be pronounced
goose equals noose.

Jonathan Hall (04:48):
So

Andy Williams (04:50):
it's already catching on like you can see why
it's needed. But yeah thisactually it's a really fun
improvement I think. You coulddo completely crazy things like
you know on tiny devices whenyou're coding how your
application is going to interactwith hardware but also you can
build your application forrunning directly in EFI

(05:10):
bootloader. There's anotherproject called Tamago, which is
doing a lot of cool stuff inthis space. I believe that
that's going to be presenting atthe firmware conference Google
is hosting in San Francisco nextweek.
I don't think it's like aconference, but if you're into
firmware, it's a good thing todo to head along there. Anyway,

(05:31):
this is a long standing proposalabout how it would be possible
to run applications on the TIN.And as you say, it's been added
to the discussion topics, sohopefully that's going to see it
moving through pretty quickly.And my particular interest here
is that we've been looking at itfrom an application point of
view. And although theproposal's not gone through the

(05:51):
acceptance yet, with the help ofthe Tamago and TinyGo teams,
we've got fine apps workingwithout an operating system.
So you can actually run one ofthe applications, like, in your
system's bootloader or onsomething like the the Gopher
badge, things like that. Soreally geeky stuff for for my
point of view, but it opens up aworld of opportunities.

Jonathan Hall (06:10):
Yeah. I don't imagine that this is something I
would use personally or at leastnot very often, but it just
sounds so nerdy that I love it.But I have questions and maybe
you can help answer these sinceyou've been involved in this
discussion. I've seen your nameon the issue a few times. Yeah.
So the first one is this alreadyworks, right? It's not part of
the official Go project andthat's the proposal is to

(06:32):
basically port this alreadyworking solution from Tamago and
TinyGo, etcetera, into theofficial Go project. Is that
right?

Andy Williams (06:40):
Yeah, pretty much. So there's there's kind of
different angles on this. TheTamago project is being used as
a kind of a base implementationto show how it could be done,
whereas TinyGo is like areimplementation of the Go
runtime. So they're coming atthis from different points of
view, and I don't think that anyone of them would be adopted
directly. There's discussionsabout additional APIs as well

(07:01):
that will give you access tohardware that's not part of the
runtime right now.
But from my point of view,you're right. There's projects
out there that do it and itwould be kind of wrapping it up.
I suppose it's a little bit likesome of the Windows work that
was external initially and gotbrought into the project. So a
lot of hard work's happened withsome polished and some new APIs

(07:21):
that can be adopted upstream.

Jonathan Hall (07:23):
And then my other questions are around sort of
practicality. Like we just takefor granted that things like a
file system and a network stackexist when we're writing code
was the time. If you need to usea file system, does that mean
you can't use this or is therelike a go runtime implementation
of a file system or a networkstack or any of that sort of
stuff?

Andy Williams (07:43):
I don't honestly know the details because I think
it's early stage. They've notdecided what to include and what
to not include. It's prettyclear that some functionality
isn't going to functioncompletely because there are
limitations. That said, if youfollow discussion, there are
examples of network stacksworking. So maybe that would be

(08:04):
an operating system independentor separate from OS network
stack that could be included.
Think file system is possiblyone further afield and it's not
to my knowledge part of thoseprojects right now because you
typically wouldn't have accessto a file system. But of course,
Go being a rich community ofdifferent libraries, there's in

(08:25):
memory file systems. So maybeyou could sort of plug that in
behind and with Go's FSabstraction, all of those things
become possible in a way theyweren't a few releases ago.

Jonathan Hall (08:35):
Yeah, cool. Well, I'll watch this with
anticipation. I'd love to see itland even, like I said, I don't
have any reason. I expect Iwould use it, but maybe I'll
think of something in thefuture. So I'll be watching that
one.

Andy Williams (08:47):
Yeah, I think also check out the GopherCon
videos from The US when theycome out in a few weeks, because
there was two, maybe threedifferent presentations that
touched on this area. And youmight just find inspiration in
some of the projects that arepresented there.

Jonathan Hall (09:00):
Cool. Well, let's take a peek at the next one
here. It's a new proposal,actually a new one, not an old
one, which isn't out of theminutes. It was started in May.
It's a proposal to add a newmethod to the byte stop buffer.
I don't know how much you usethose, but this one is to add a
dot peak, which I would useactually not frequently, but I
would definitely use it. Itallows you to look at the

(09:21):
contents of the buffer withoutadvancing its marker, which is a
really handy thing if you'retrying to like parse data and
you don't know what the formatis yet, you know, you want to
see is this a GIF or a JPEG orsomething like that, you can
look at those bytes withouthaving to then reconstruct a new
buffer that puts everything backtogether again.

Andy Williams (09:37):
Oh yeah, absolutely super helpful. Like I
love your example there of whatare the file types because
there's so much code out therethat just looks at file
extensions and that's probablyone of the security issues that
are still readily apparent in Goapps because that's not the way
that you check files, people.This is a really helpful thing
there. I was looking for acheeky segue, but I just

(09:58):
couldn't think of any jokesaround peak. So let's just talk
buffers instead.

Jonathan Hall (10:01):
I can think of inappropriate jokes about peak,
but we'll we'll save those forfor another time.

Andy Williams (10:06):
Maybe I could. You know what? Maybe the live
shows should be like the have anafter hours component that you
sort of do a, an excerpt at thebar later type of thing. Who
knows?

Jonathan Hall (10:17):
That sounds like a must do.

Andy Williams (10:21):
That that seems like a really, a really
excellent segue. Unless you hadanything else to add about
buffers, of course.

Jonathan Hall (10:26):
No, I think I'm done with buffers.

Andy Williams (10:28):
So, yeah.

Jonathan Hall (10:29):
Do you know how I knew to say that? It's because I
took a peek at the next thing inthe queue.

Andy Williams (10:34):
You took a peek at the queue. Well, now I don't
know. Do we need to get into asemantic discussion about the
difference between queues andbuffers? I don't know. No.
Actually, probably not worth it.Although there is some pretty
in-depth conversation about thedifference between buffers and
readers if you want to know moreabout the semantics of peaking.
And I'll just leave that onethere as well. But yeah, if you

(10:56):
must do something, why not checkout this proposal that is
entitled proposal must do. Ithink we're digging one up from
the archive again a little bithere.
This one is not as old as Ithought but we're talking like
four years ago now. However it'sone of those great ideas of
let's make it easier to ignoreerrors that never going to

(11:18):
happen. And it kind of grew armsand legs and sort of got
attached to the errors proposal.And then when it was agreed that
errors are fine as they are andwe're not going to address that
conversation anymore, it sort ofgot forgotten. Anyway, it's been
brought back now because theroot request was that the URL
package should have a must parsso that you can, your

(11:38):
initialization, for example,where you've got a static string
that is known to be a URL,ignore the error and you've got
simpler setup code.
And this is now being discussedas just that one addition. I
personally, I think this isreally a great idea,
particularly like when you'reputting help links or something
in your application and you justwant a button that goes
somewhere, you know that URL,you don't need to be doing all

(12:00):
the error checking. So this willtidy up a little bit of extra
error handling or get rid ofsome of those underscores that
probably should have not beenincluded in the first place. I
don't know. I like this.
Is there anything that you feellike your code must be improving
with this one?

Jonathan Hall (12:16):
Oh, I would use this all the time when I'm
writing tests that use time dottime values.

Andy Williams (12:21):
Of course.

Jonathan Hall (12:22):
You could do time dot mu and then all the numbers
you need, you know, like the12,000 numbers that go into that
constructor function, the year,the month, the date, the time,
the hour, the minute,millisecond, or maybe it's just
seconds, and then the time zone.I would much rather have a must.
Do time. Parse and then pass ina readable string. And so I

(12:45):
usually write the helperfunction for all my tests, but
then I have this stupid littlehelper function everywhere and I
never remember what I called itin this particular project.
So I would use this all the timefor that.

Andy Williams (12:55):
There's some really interesting examples
where people have got that. Andinterestingly, think one of the
reasons this got put to one sidewith some of the examples called
that package try, of course,then you get a whole
conversation going on. So itsounds like you're a vote there
for a wider API there.

Jonathan Hall (13:10):
Yeah. I would definitely be in favor of must
dot do. I mean, I would I wouldcertainly use must parse for
URLs only. I would use that tooalso in testing cases where, you
know, I'm passing in a bunch ofURLs that I know are valid, but
I think the must do version ismore appropriate and I would use
it for time and URLs a lot.

Andy Williams (13:28):
That's pretty cool. I think there was a
discussion about do we need anew package for what is
essentially one function that'snot a lot of lines of code? So
there's an ongoing discussionthere. I don't know how wide
they will be when they deliver,but it's a good chat. Do if
you've got thoughts, drop themin there.
I'm I'm curious, though, when orhow much of a vote Cup of Go as
a community gets in in thisroom? Like, do we do we get,

(13:50):
like, two or three vote just theone or we're not there at all
yet?

Jonathan Hall (13:54):
I I don't think I don't think my vote counts for
anything. My my vote only countsbecause people listening might
agree with me and then go upvoteit too.

Andy Williams (14:02):
There you go. Well, that's an opportunity.

Jonathan Hall (14:04):
But they could they could disagree with me and
go downvote it too, so maybe Iprovide negative votes. You
never know.

Andy Williams (14:08):
Well, they're well thought typed, highly
qualified votes, so that'sprobably what Yeah.

Jonathan Hall (14:13):
Hope so.

Andy Williams (14:15):
It seems like, yeah, there's there's a lot of
back and forth here. Lots oflots of opinions flying. Feels
like recording some of thisstuff would really help reach
reach some kind of conclusion.What what would I don't know.
Are we are we in flight with thediscussion?

Jonathan Hall (14:29):
I see where you're going with this.

Andy Williams (14:33):
Well, with so much difference opinions on this
one, and to be fair, most ofthose proposals, it seems like
it'd be really helpful torecord, you know, the discussion
as it goes backwards andforwards. You know, all of those
conversations that are currentlyin flight maybe need some
recorder.

Jonathan Hall (14:49):
I I think you're onto something there. I think
Carlos Amady and Michael Knuzakmight agree with you because
they just wrote this interestingblog post about the flight
recorder that's now in Go 1.25.

Andy Williams (14:59):
Nice.

Jonathan Hall (15:00):
We have talked about this previously on the
show when it was, you know, when1.25 came out, but they have a
new blog post out now sort ofdetailing what it is and how to
use it. If recall, the FlightRecorder is a diagnostic tool to
let you look at runtime datafrom your application leading up

(15:21):
to a potential problem.

Andy Williams (15:23):
I think the key thing here is that it's a
different way of looking at theissues in your application or
potential issues. It sort ofrelates, I think, to one of the
discussions last week. You don'talways know where the problems
are coming from in your appuntil you get into production.
And this is a way to track weirdthings going on. I love this
blog post actually.
It goes into really rich detail.If you scroll down, they use a

(15:46):
lot of the tooling connected tothe flight recorder to use this
data to show you a really nonobvious bug. I must admit it
says whether or not you'veunderstood the bug, let's talk
it through. I had no clue wherethe bug was in this application
at all. Thought I should.
Just couldn't figure it. Butthey step through and they show
you what's going on. And it'slike a defer release on a mutex

(16:08):
inside a loop of a goroutinemeans that everything is
actually contending on thosebeing unlocked in order. So you
go from parallelism or a highlyconcurrent code into, like,
everybody's waiting forsomething. And this flight
recorder is is giving you thedata necessary to to figure out
why all of your goroutines areare waiting on each other when

(16:31):
there's no obvious reason.
It it it but it does so reallybeautifully. Like, you can
visually step through theprocess. It's very, very clear.

Jonathan Hall (16:37):
I love the graphs here and the charts. And, yeah,
like you said, it's a great blogpost. It's a fairly long one,
longer than most from the Goteam. Part of that's just
because of the size of thesescreenshots. But, yeah, it goes
to a lot of detail.
It's not just a here's thisthing that you might care about.
It actually teaches you enough,I think, to be useful.

Andy Williams (16:56):
Maybe even to be dangerous. Like, I mean, a
little bit of information goes along way. What else have you
been reading, John? Have youbeen taking in your tea with all
of your blog posts? Oh mygoodness, we've got Foley
artists in the house.

Jonathan Hall (17:09):
In studio side effects. Brilliant.

Andy Williams (17:12):
All authentic. Full Top Live on the show, guys.
You're here on the scenes.

Jonathan Hall (17:17):
So we got an interesting blog post from Zach
Musgrave over at Dollt Hub, whohas been trying the new green
tea garbage collector that we'vetalked about before. It came out
in Go 1.25. Unfortunately, Zachis a little bit disappointed. He
has not found that it has helpedperformance. And he goes into
some details with chartscomparing the old garbage

(17:37):
collector with the new green teagarbage collector, and
distributions change as far as,like, how long it takes to to
run.
But overall, it's almostidentical or has changed in ways
that don't really matter for hisapplication, which I think is
interesting. You know, we oftenhear about upgrades or
improvements in the Go runtimethat, you know, this has
improved performance by 2% or 3%whatever. And you get a bunch of

(18:01):
4% every couple of years andthey add up to huge percentages.
Well, here's one that at leastin this case didn't make the
hoped for difference. I thinkit's interesting to, it's not
always roses and sunshine.

Andy Williams (18:15):
Yeah, I mean, it's tough because every
optimization isn't going to fixcode for everybody. And like
there's always a trade off. So Ithink it's probably good that
the worst that somebody can sayabout this new GC is that it's
not actually worse in theirscenario. They have a situation
they're not finding animprovement. And yeah, that's I
think often going to be thecase.
There's big upsides in some, butit is pretty interesting to read

(18:39):
the point of view of folk whohad high expectations for an
outcome and they just find, oh,it's kind of the same as before.

Jonathan Hall (18:45):
Yeah. For one of their particular tests, it looks
like green tea performedslightly worse. Says, if
anything, looks like green teahas a small regression in
garbage collection performancefor adults under this workload
with noticeably elevated markdurations, but no significant
difference in pause times. Yeah.And you know, that's most

(19:06):
optimizations, not all, but mostare a trade off, aren't they?
You choose faster CPU for morememory or vice versa or this or
that or the other thing, orworks better in common cases,
but not in edge cases. If youhappen to be executing edge
cases a lot, then you may notreap the benefits. Anyway, if
you're excited about the GreenTea Garbage Collector, go read

(19:28):
this and get some perspective, Iguess.

Andy Williams (19:30):
And maybe if you're on the team that's
working on the green tea garbagecollector, perhaps there's
something here that couldactually be fixed internally and
this small regression becomessmall improvement or the
regression itself goes away andwe're just looking outside.

Jonathan Hall (19:45):
One other thing we've been talking about must
do, but there's also just do.

Andy Williams (19:49):
Right, okay. Yeah, this is not like the
function, the command. It is apackage called do, which I think
is the combination of DI,dependency injection, and Go. So
take four letters, discard twoof them, pull it together.
There's a point that they makeabout short names being helpful

(20:12):
for important projects, and Idon't think they're wrong.
That's a good one. So getting itdown to two letters, that is
good. Probably the next timewe'll take different episodes to
talk about projects or issuesthat have got the same name. But
in this case we're talkingdependency injection. It's
something that's come up before.
I don't think it's somethingthat you use, is it John?

Jonathan Hall (20:32):
I use dependency injection all the time. I just
don't use a framework for it. SoI'm very curious about the use
case for a framework like do oris it do if it's supposed to be
the shortening of go? I don'tknow.

Andy Williams (20:44):
Oh my goodness. I don't think there was a
pronunciation guide in there.What they were announcing, was
that there is a v two of thisframework. So it's obviously
been going for a while and thishas been apparently in beta for
two years, so congratulations onall the time taken to polish
that. And they've put together arevised API.
There's a couple of breakingchanges, hence the new number,

(21:07):
but also looking more at scopebased architecture and some
improvements there that weren'tpossible with the old API. So
check out the migration guide ifyou've been using it before. I
also have been a fan ofdependency injection. I don't
know if people know this aboutme because I kind of hide it but
I used to be a Java guy and inthat world it was really like

(21:30):
quite important because yeah youneeded to keep things lean at
the start and have these itemsadded later. But like yourself,
I've not actually had the needto do so much with Go.
However, I like what they've gothere. It's a very idiomatic way
to work. The API is pretty cool.In fact, think they've learned a
few things during thedevelopment of V1 that's led to

(21:50):
cleaner V2. So if you've got anapplication with dependencies,
libraries coming from aroundyour organization and you're
trying to bring it together intoa Solid application, check it
out.
It's a good project. They've gotsome excellent documentation and
examples about how to get themost of it. Just follow the
links from the 2.0.0 tag onGitHub.

Jonathan Hall (22:11):
And I just noticed the I recognized the
user the GitHub username in thepath. This is from Samuel Burth,
who's also the author of apackage I use called SLOGmulti.
So if you're using Go structuredlogging and need some utilities
for that. Actually, talked abouta proposal about that recently a
few episodes ago to, which Ithink was accepted, to create a

(22:32):
multi logger that takes two ormore loggers and distributes the
logs to all of those. I'm usinghis package for that right now.

Andy Williams (22:39):
Nice. Yeah, this is clearly a Go developer that
does stuff at scale. And if youlook through the Reddit
conversation, people are like,how does this compare to the
implementation at Uber andthings like that? I mean,
they're solving big problemsthat some of us don't have to
juggle. But if you're working inthat world, it's good to have
this kind of

Jonathan Hall (22:56):
support. Awesome. Well, I think that wraps up for
the main news segment. Let'sjump to a quick break before we
wrap up with a lightning round.Thanks everyone for listening.
As I mentioned at the top of theshow, this is a listener
sponsored program. We don't getany funding from the Corporation
for Public Broadcasting, whichis apparently going away anyway,
or anything else like that. It'sjust from you. So if you want to

(23:17):
help with that, you can join uson Patreon, find the links over
at cupago.dev. You can also findlinks to our swag store where
you could buy t shirts, mugs,chargers, possibly baseball caps
in the future.
We're talking about doing that.And Andy reminded me that last
week I mentioned the quest forothers who want to buy a necktie
or bow tie.

Andy Williams (23:37):
Absolutely. I am so in on that. Like a talking
point in the form of a bow tieor a necktie I think goes a long
way. I literally turned up to doan after dinner speech at a
conference last week and I had anerdy's 80s gaming tie and it
was a good conversation starter.And I mean I don't know if

(23:57):
everybody else likes this butcarrying a little bit of your
nerdom with you into theprofessional domain is just one
of those things.
And the excellent pattern gopherstuff that you see the GO team
wearing really, I think makes mea little envious. So anything we
can put out into the community,I'm well up for that.

Jonathan Hall (24:13):
So a little update on that. I've done some
research. I actually ordered asingle necktie for myself in
hopes of getting it before Ispeak at Go West Conference in a
few weeks on Zazzle. So just a aone off, but I really want a bow
tie and I haven't found a goodplace to make quality custom bow
ties. So I'm looking for thatstill.
If you, a listener, areinterested in bow ties or

(24:35):
neckties, reach out to me, letme know. I'd love to make a bulk
order that makes it easier. Someof these places require a
minimum of 50, which I think isa stretch. But if we could get
five or 10, we could definitelymake it happen.

Andy Williams (24:48):
But remember, friends, like, it is the holiday
season. Christmas and otherpurchasing opportunities are
just around the corner. Betweenus, I'm sure that we could find
a good 50 people in our liveswho really need something like
this.

Jonathan Hall (25:02):
That's a possibility. Well, let me know
if you're interested, please. IfI get any I haven't you're
honestly the first person totell me you're interested, so I
haven't gotten any feedback yet.

Andy Williams (25:12):
I I think that's just because not enough people
wanted to respond quickly. Maybethey're behind on their podcast
listening because I don't seehow this can be hugely popular.

Jonathan Hall (25:21):
Or or maybe they just haven't seen me sporting
one yet. Maybe at Go West, I'llget a bunch of comments and and
preorders. Pictures are Fingers

Andy Williams (25:28):
crossed. Happen.

Jonathan Hall (25:29):
Fingers crossed. Yeah. Anyway, you also had a
quick update on a a for help forthe FIND project.

Andy Williams (25:36):
Yeah. I mean, been loads of conferences around
the last couple of weeks, like Isaid, and one of the things I've
been really excited to see whenI speak to people in person is
what they are doing with thelibraries, the frameworks and
everything. But of course, forme, what people are building
with FINE. And it would bereally helpful to hear more from
people who are doing that. It'snot always something that's
publicly available or listed onwebsites, that kind of thing.

(25:59):
So partly out of curiosity, butalso if you're thinking that
this is going to be useful foryour project, but you're just
not quite getting it over theline, give me a check because it
would be really awesome to beinvolved in a few more projects
that we can share, show peoplewhat's being built. That'd be
cool. Thanks.

Jonathan Hall (26:16):
Well, think that wraps up for our break. We do
have a few items on thelightning round, so don't leave
just yet.

Andy Williams (26:27):
Lightning round.

Jonathan Hall (26:28):
So first up on the lightning round, I want to
mention that Watermill 1.5 hasbeen released. I don't. I've
never used Watermill, but itseems to be a pretty cool
project. It is a go library forbuilding event driven
applications the easy way andthe new 1.5 version includes
SQLite backed PubSub, Quickstartand more. So link in the show

(26:51):
notes if you are looking for alibrary to build event driven
applications the easy way.

Andy Williams (26:56):
Awesome. I mean, I wouldn't want to be building
event driven applications thehard way, but it's always good
to know there's a better way. Ijust wanted to drop in something
here around that, yeah, theconference space. There's a
couple of apps that I saw that Ijust wanted to shout out. I
don't think they've been sharedwidely before.
Supersonic is this amazing musicplayer with visualization and

(27:18):
lyrics that's been created byone of the, actually the core
contributors in FINE but thisapplication hasn't been shared
on our website yet. Do check itout. It's got a community
following already but I hadn'tseen it until Go for com and a
really cool peer to peer chatapp called Banks that's not
publicly released yet but it wasshared at Find Conf and we're

(27:39):
all really excited to startplaying with that one so keep a
lookout. I wish I could sharemore actually, there's logistics
apps and security tools andthings that people are working
on, but I can't really talkabout any of them. I don't know
if this matters or not, but Iheard that Tailscale is hiring
Go engineers apropos of nothingat all, but there you go.

Jonathan Hall (27:56):
Cool. Next up, we talk about Fine a lot when
you're on the show. I think Ihope the audience doesn't mind.
It's nice to have a differentperspective. If you were on the
show every week, I don't thinkthere would be nearly as much to
talk about.
But when you're on the show, weget caught up on Fine.

Andy Williams (28:10):
I worried about this myself and I look back and
I don't think I've been here fora year and a half. So I'm just
kind of like letting it go. I doapologize.

Jonathan Hall (28:17):
But there's another project I want to
mention that I think might berelevant to you. It's called
ModGen. It's a static generatorfor Go module vanity URLs and
FINE uses a vanity URL, doesn'tit?

Andy Williams (28:28):
Yeah, exactly. When you're importing code,
you're using fine.iofine. Imean, there's been a bit of
backwards and forwards on vanitydomains. Technically, they could
slow the lookup of your importever so slightly, but at the
same time, it disconnects youfrom where your source code is
stored. So in theory, you couldput your own caching layer in if

(28:50):
you wanted to, but more likely,you just have the opportunity to
change where or how it's hostedat some point in the future.
I think the name vanity reallyjust comes from it's a shorter
URL and that's quite nice aswell. But the projects I think
that have been used in thisspace so far were like how do
you slot it into your WordPressor whatever website builder
you've got. And if you wanted todo it on a static site

(29:11):
generator, you're probably handcrafting something. It's some
HTML headers that you put intoyour file that tells the Go tool
how to look it up, and it isreally easy to type up. I've
been writing this a few timestrying to get things right.
So this tool will help you toadd that functionality to your
static site generator. And ofcourse, we all know that you're
going to get more kudos ifyou've got a static site these

(29:33):
days and save a fair bit of cashas well because I think this
integrates really nicely withGitHub. They've got an actions
that shows you how to bring itin. So if you can and do have a
static site, you're going to getthis little beauty in there for
free and in a really polishedway. So check it out.

Jonathan Hall (29:47):
Awesome. I've gone back and forth. I have one
open source project. I a customdomain, quote vanity domain,
kivik.io, and I've alwaysdebated whether I should host my
Go modules under the domain orstick it with GitHub. For a
while, was thinking of switchingto GitLab, and now it's just not
worth the effort.
I'll probably stick on GitHub.So you know, I've always
wondered, how did you decide touse find.io instead of

(30:11):
GitHubFine or whatever?

Andy Williams (30:13):
I think I use this approach for really
difficult life decisions. Seewhat your gut says. If it's a
good idea just go with itbecause you can always change it
later if you have to. Likepeople obsess over a lot of
these things quite in-depth andI just like to go with it. The
name, it was a short domain.
It stuck and I'm like you knowwhat, bringing people to that

(30:34):
domain it's a great thing. Itmeans that that's where the
documentation is. It's where wecan shout about really cool
projects. And you can do a wholelot more, I think, when you've
got the whole domain for hostingyour code than if it is a
subdomain of somebody else'sprovider. I mean, imagine if
your git host decided one daythat you couldn't host pages or

(30:55):
documentation or something.
It's unlikely, but it gives youoptions and a bit of
flexibility.

Jonathan Hall (31:01):
Yeah, cool. Andy, it has been great to see you
again and to chat with you.Thank you for filling in for
Shy.

Andy Williams (31:07):
Yeah, not a problem at all. Thanks so much.
It's been great to be hereagain. See you, John. I'm glad
that everything's going well.
Good luck with your go west, bythe way. I hope the talk goes
well.

Jonathan Hall (31:17):
Thank you.

Andy Williams (31:18):
And yeah, absolutely. If you love the
show, do remember to go onPatreon and sponsor the project.
If you didn't, then don't worry.Chai's gonna be back next week
and service will be resumed asnormal.

Jonathan Hall (31:28):
Program exited.
Advertise With Us

Popular Podcasts

Las Culturistas with Matt Rogers and Bowen Yang

Las Culturistas with Matt Rogers and Bowen Yang

Ding dong! Join your culture consultants, Matt Rogers and Bowen Yang, on an unforgettable journey into the beating heart of CULTURE. Alongside sizzling special guests, they GET INTO the hottest pop-culture moments of the day and the formative cultural experiences that turned them into Culturistas. Produced by the Big Money Players Network and iHeartRadio.

Crime Junkie

Crime Junkie

Does hearing about a true crime case always leave you scouring the internet for the truth behind the story? Dive into your next mystery with Crime Junkie. Every Monday, join your host Ashley Flowers as she unravels all the details of infamous and underreported true crime cases with her best friend Brit Prawat. From cold cases to missing persons and heroes in our community who seek justice, Crime Junkie is your destination for theories and stories you won’t hear anywhere else. Whether you're a seasoned true crime enthusiast or new to the genre, you'll find yourself on the edge of your seat awaiting a new episode every Monday. If you can never get enough true crime... Congratulations, you’ve found your people. Follow to join a community of Crime Junkies! Crime Junkie is presented by audiochuck Media Company.

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.

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

Connect

Š 2025 iHeartMedia, Inc.