All Episodes

January 17, 2025 â€ĸ 37 mins
Mark as Played
Transcript

Episode Transcript

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

(00:01):
Stick around until after thenews to hear more. This is Cup
of Go for January 17, 2025. Keepup to date with the important
happenings in the Go communityin about 15 minutes per week.
I'm Jonathan Hall.

Shay Nehmad (00:22):
And I'm Shay Nehmad.

Jonathan Hall (00:24):
Hey, Shay. You look a little under the weather.

Shay Nehmad (00:26):
Yes. You can probably hear in your earphones
right now. I'm just a little bitsick. Every I get this every,
winter. My sinuses are not arenot my best, feature.
My sinuses are the time formatsin go of the human body. They

(00:46):
just, like they can worktechnically, but it's just weird
that they're designed this way,and they caused me a lot of
pain. Anyways Sorry

Jonathan Hall (00:55):
to hear that.

Shay Nehmad (00:56):
Talking about things that are weird, your new
mic is very, very small. Italmost Yeah. Looks like your old
mic.

Jonathan Hall (01:02):
It it it looks a lot like an old mic. So I
ordered a new mic. I was soexcited today. I picked it up. I
went by Staples to to to pick itup where they delivered it and I
got home.
I opened the box and there wasthis nice tidy little box with a
little styrofoam, you know,shaped with a little cut out for
the microphone and on the side,some cables and the mic stand,
but the cut out was empty. Therewas no microphone in it.

Shay Nehmad (01:25):
So I immediately Ordered a box, basically.

Jonathan Hall (01:27):
Yeah. I ordered a box with a cable. I immediately
opened up my Amazon app and saidreturn items missing. So they're
shipping me a new one, and I'llship this back. So hopefully by
next week, I'll I'll not soundlike I'm in a tin can.

Shay Nehmad (01:38):
You know what would probably happen? You probably
marshaled, you know, the micwith the cable and the stand
into the box, but mic was,lowercase because they came for
Python, and they didn't realizeit's private. So I got marshaled
without the mic.

Jonathan Hall (01:52):
Well, whatever it is, my mic is now a no pointer,
new reference. So

Shay Nehmad (01:56):
Yeah. We wanna cover a lot of cool stuff today.
We have, some security releasesto discuss, new stuff in 124,
new proposals, proposals thatare on hold, some blog posts,
new releases, and grammar fixesin the language, apparently.
Yeah. Yeah.

(02:17):
And we have really excitingupdates like meta updates about
the show during the ad break, somake sure you stick around it.
If you usually skip it, don't doit this time.

Jonathan Hall (02:25):
Good advice. So first up, we have, pre
announcements. Although by thetime you listen to this, it's no
longer a pre announcement. Go1.23.5 and 1.22.11 are being
released during business hourstoday as we're recording. We're
recording on Thursday.
This show comes out on Friday.So by the time you hear this,
they will be out. Make sure youupdate them. There are a couple

(02:46):
of private CVEs that areaffected. We don't know what it
is yet.
We'll tell you next week, butmake sure you update.

Shay Nehmad (02:51):
And last week, we told you the same thing if it
sounds like, you know, like abroken record about the
previous, release. Right?

Jonathan Hall (02:59):
Yep.

Shay Nehmad (03:00):
It was about a bug in a security vulnerability in g
log, which I learned about viathis security. I I guess there's
no such thing as bad press. So II learned about g log through
its security vulnerability. Lastweek, it it was private. Right?
This week, they released theexplain the, like, the explainer

(03:22):
post in the in the go in theGoogle group. And I'll try to
explain it pretty beef briefly.It's actually kinda simple.
Logs, where did you write yourlogs, like, normally?

Jonathan Hall (03:32):
Devnull.

Shay Nehmad (03:33):
But if you, like, wanna read them.

Jonathan Hall (03:35):
I wanna read them. I I usually put them on a
file under varlog somewhere.

Shay Nehmad (03:39):
Like, whatever, somewhere. Like, it doesn't
matter. Right? Yeah. So usually,peep that's what people do.
They put it in a somewhere andall since all software that's
running on your machine doesthat, that somewhere which might
be for example, /tmp usually haslike wide ride access to
everyone. Right? Mhmm. It standsto reason that everybody could

(04:00):
ride to /tmp because that's,like, what it's there for.
Right?
Yep. The problem is, let's sayyou're writing, a piece of
software that has, you know,permissions to write to passwd
or some very highly sensitivefile. Let's say a local SQLite
database on your server that'sreally, really, important to
you, so you protect it, like, atall costs. And I am running on

(04:24):
your server and I have, like, nopermissions and I wanna get to
that file, since I know wherethe g log will be written slash
gmp slash whatever, I couldcreate a symlink to a file that
I don't own because that'sallowed.

Jonathan Hall (04:36):
Yeah. Yeah.

Shay Nehmad (04:37):
And then your software, like, starts to run
and it sees, oh, okay. There's asim link. I'll follow it and
I'll start writing where, like,where I the sim link is
pointing.

Jonathan Hall (04:46):
So your SQLite database now has a bunch of logs
at the end of it of the the thedata.

Shay Nehmad (04:50):
Yeah. And if you can redirect it through some
more clever means, I I guess youcould maybe modify the stream,
into something you own and thensend only some of the bytes to
the file that you wanna writeand maybe just override the
permissions bit. Right? Yep. Andthings like that.
So there's a whole, OWASP, OWASPis a o w a s p. It's like an

(05:13):
organization that's all aboutweb security. They release all
these top 10 things in websecurity, top things in AI
security, blah blah blah.There's a whole category of
vulnerabilities called insecuretemporary file. And the fix is
pretty like, if you had to fixthis vulnerability in g log, how
would you remediate it?

Jonathan Hall (05:31):
I probably would check if the file exists and if
it's assembling. And if so,then, I guess, report an error.

Shay Nehmad (05:40):
That they go even harder. They just crash if the
log file already exists.

Jonathan Hall (05:45):
Okay.

Shay Nehmad (05:45):
Like, you're not allowed to run if the log file
already exists. That's prettygood because it means if you're
developing, you like, before yourun, you need to delete the old
log file, which is kind offrustrating instead of it just
rotating. But as a library,that's a very good decision, I
think. So that's the class ofvulnerabilities. Insecure
temporary file, that's aspecific, vulnerability you can,

(06:07):
like, in g log, you write logto, like, somewhere public by
default.
If your process is privileged,someone who's unprivileged could
use it to overwrite thesensitive file. And just wanna
shout out Josh McSavany andGunthar Nowak, for, like,
reporting on this issue andcontributing the fix. Really
cool.

Jonathan Hall (06:28):
Cyber. Well, that kinda does it for, things that
have happened in the past, withregard to releases, but we do
have an upcoming release thatwe're all anxiously awaiting,
and that is the Go 1.24 release.And we now have the interactive
release notes, which we werevery excited about the last
time, and I think we're rightbefore that. Big shout out to
Anton Giannoff for, putting thistogether for us, for the

(06:49):
community. I I love this.
You can basically it's therelease notes with links to
proposals and links to the clswhere the changes are made. Most
important though, it hasrunnable code snippets in line
that you can, play with. So Iwanna pull call out 2, upcoming
changes I'm excited about. Oneis crypto rand.text. You wanna
know what it does?
Just go to the interactive shownotes. Just go to the

(07:11):
interactive release notes, hitrun, and it shows you what it
does. It creates random text.This is one of the most common,
stack overflow posts I go to ishow do you create a random
string and go efficiently. Mhmm.
And this is a really good stackover full post about it. I don't
have to worry anymore. I couldjust use this function.

Shay Nehmad (07:25):
Can you go and run it? And let's see if it if,
Anton set the seed correctly orif we're all getting the same
number.

Jonathan Hall (07:33):
It's because I got So it should be, oh, it is
the same. It is the same. Yeah.

Shay Nehmad (07:38):
Wait. I got l I v g q

Jonathan Hall (07:40):
s. Same. Yep. And a n g g g g. That's awesome.

Shay Nehmad (07:46):
I knew it. I knew it.

Jonathan Hall (07:48):
The only thing I don't like about this function
is that the output is in base32, which is fine for many, many
cases, but sometimes you want aspecific alphabet or something
like that. If that's what youcare about, you're gonna have to
still implement your own.

Shay Nehmad (08:00):
Yeah. The, I I found out that the most useful
one is the is base 62. At leastthat's what I found.

Jonathan Hall (08:10):
Mhmm.

Shay Nehmad (08:11):
Because it's like base 64, but without hyphens and
underscores. Yeah. So if youhave a prefix, you have you can,
like, separate the prefix fromthe unique bits.

Jonathan Hall (08:21):
Yeah. And there's a lot of time Just

Shay Nehmad (08:23):
use it today.

Jonathan Hall (08:24):
It's a lot of time I wanna when I wanna custom
alphabet error, or maybe I wannawanna human readable string. So
I don't want zeros and o's or ori's and l's. You know, I'm gonna
leave some certain charactersout that might be ambiguous. If
you care about that sort ofstuff, you'll still have to do
your own.

Shay Nehmad (08:37):
Yeah. But then you can go back to exactly what you
did before, so it's not likeyou're losing out

Jonathan Hall (08:42):
on the thing. And I

Shay Nehmad (08:43):
think we talked about this, API on the show.
Like, there are proposals topass in an alphabet into this,
but I'm happy that they don'tallow you to do it because it
would be super easy for someoneto pass in a a too short of an
alphabet Yep. For it to besecure. And then you're it's
it's sort of a foot gun. Right?
You pass an alphabet that hastoo few characters, and then I

(09:05):
can guess I I could brute forcebecause the randomness is is,
high, but the actual set ofcharacters you can choose from
and the length is too low. Mhmm.So you're getting into weird,
like, weird areas, gray areas ofis this still crypto or not?
Right? This is not just randomtext.
This is crypto random text. Soit should only be used for

(09:25):
cryptographic usage. So whywould you care at all about
human readability? Right?

Jonathan Hall (09:30):
It's a good argument.

Shay Nehmad (09:31):
Yep. The other one I release notes are awesome. I
really like playing around withthis site. We should tell Anton
to change the c, though.

Jonathan Hall (09:38):
We should just get him on the show, and we can
tell him in person.

Shay Nehmad (09:40):
Oh, I can actually edit it. Well, you I'll I'll try
to fix the code one second, andyou tell us about another thing
you you like.

Jonathan Hall (09:47):
Yeah. So the other the other, thing I wanna
call out that's coming in 124goes back to the logging
discussion and devnull. Now wehave a first class citizen
called s log dot discardhandler. So instead of having
to, create a new text handlerthat writes to io dot discard or
whatever, you can just use s logthis log handler for your tests
or if you're if you truly wannathrow your logs into devnull.

(10:10):
And, it'll be a little bit moreefficient, I suppose.
Mostly, it's just a little bitof save typing. So I'm happy
about that.

Shay Nehmad (10:16):
Saving typing is is good, especially now that it's
so cheap with AI.

Jonathan Hall (10:21):
Yeah. I don't have to let Copilot, give me the
wrong, autocomplete anymore. Ican just type this log discard
handler, and I'm done.

Shay Nehmad (10:30):
I'll shout out 2 things that I really like. One
is JSON output for build,install, and test. As someone
who spent the less, like, yearand a half building development
tooling, having Go test minusJSON, just printing out all the
information you need to, let'ssay, pipe it into JUnit or into
GitHub actions or whatever isvery, very useful, and it's

(10:53):
designed correctly, I think.Yeah. Actually, I I don't wanna
shout out any other feature.
Just go to the site and playwith them. It's such a good way
to learn about the new release.Well done, Anton. Keep on
coming.

Jonathan Hall (11:06):
One feature that, maybe in a future version of
these interactive release notesis, a proposal. Actually,
there's 2 proposals here we'regonna talk about. They're
closely related. The first one,that we're talking about is for
a new package called containerunordered.

Shay Nehmad (11:20):
And just like your mic container.

Jonathan Hall (11:22):
Just like my mic container. The idea here is a
generic hash table with customhash hash functions. So that
it's basically a center librarypackage that gives you the
equivalent of a map, but whereyou can define your own hash
functions on your keys. This isthis already exists, in a couple

(11:43):
of places in X tools. There's athere's a version of this that
predates generics.
The the proposal here is to makethis version support generics
and, just become standard. So,however, it's on hold. It was
recently put on hold.

Shay Nehmad (11:56):
Which is something we we don't see very often

Jonathan Hall (11:59):
Exactly.

Shay Nehmad (12:00):
Going on hold. I I I'm used to well, I am used to
immediate rejection. Butusually, it's like a discussion,
and then it goes through finalcomp final response period,
likely decline and decline, orlikely approve and approve.
Right? I've never seen on holdbefore.
What does that even mean?

Jonathan Hall (12:17):
So the official description of on hold is
reading from the documentationhere. If discussion of a of a
proposal requires designrevisions or additional
information that will not beavailable for a couple weeks or
more, the group may put it onhold. So that's essentially
what's happened here. So if welook at the, minutes from the
last proposal meeting, we seethat the reasons on hold, which

(12:38):
isn't made clear, at least inthe last few comments on the
issue itself, is for anotherproposal, which is to add a
standardized hash function. Whatis a standardized hash function?
The naive answer would be afunction that takes a type and
returns, say, you went 64 or orwhatever value you wanna hash.
There are some securityimplications here, which are a

(12:59):
little bit beyond myunderstanding. But suffice it to
say, there's some, bike sheddingmaybe. Is it is it fair to call
it bike shedding when it's allabout how do we mitigate
security risks?

Shay Nehmad (13:09):
No. I think that's important.

Jonathan Hall (13:10):
Okay. I I mean, I think it's important too.

Shay Nehmad (13:12):
Sometimes an endless smire where you don't
focus about the important stuff,but honestly, Go is pretty
secure.

Jonathan Hall (13:18):
Yeah. So this is like the good version of bike
shedding where they're actuallyworking out security,
implications of things.

Shay Nehmad (13:23):
Where they're bike shedding, but what they're
actually building is a bikeshed.

Jonathan Hall (13:28):
Right. Right. A secure bike shed at that. So
anyway, this this bike shed thatis a standardized hash function
is still in the works. Andobviously, as we've described
the previous, proposal, itdepends on a standardized hash
function.
So it makes sense that it's on ahold while they try to figure
out how to do a securestandardized hash function.

Shay Nehmad (13:46):
Cool. So now, just need a way to implement, you
know, depends on, like, you havein Jira. This issue blocks that
issue in GitHub issues.

Jonathan Hall (13:54):
Are you suggesting that the Go projects
have switched to Jira?

Shay Nehmad (13:57):
I suggest that if we have listeners that work at
Atlassian, stop listening forthe next 10 seconds. And I
honestly wish for that outagethat was last year where people
couldn't access their Jira andConfluence instances because
they they implemented likedeleting deprecated plugins
wrong and deleted entire tenantsand then recreated them by hand,

(14:21):
to happen to every single, Jirainstance in existence. So
everybody moves away from thesetools. I do not like them. At
least in the people, you can putyour, headphones back on now.

Jonathan Hall (14:30):
Yeah. That was a lot more than 10 seconds, but,
well

Shay Nehmad (14:33):
I agree. That's how long Jira takes to load. So you
know what?

Jonathan Hall (14:39):
Unless you wanna sponsor us. No. I don't I don't
I don't think they wanna

Shay Nehmad (14:43):
I I don't think I'll take you know what's funny?
Just, like, moving the curtainaside a bit. When we started
this show, like, 2 years ago atthis point, we had a Google doc
where we Yeah. Started to hashout, like, what's gonna be the
name and how it's gonna work andwhatever. And then on the first
episode, like, while we wereprepping for the first episode,

(15:04):
I opened this, like, board wherewe can manage, like, the backlog
of news and backlog ofinterviewees and the things we
wanna talk about.
And back then, it wasn't anAtlassian product, and now it
is. It's Trello. So I ambesmirching them, but literally,
I'm using their products rightnow.

Jonathan Hall (15:23):
But you know what?

Shay Nehmad (15:24):
Trello has

Jonathan Hall (15:24):
gotten worse since we've been using it the
last 2 years too.

Shay Nehmad (15:26):
Yeah. But that's because we're never clearing the
backlog, and we have people inthe interview who use Well,

Jonathan Hall (15:31):
that'd be part of it. You're like to use. The
cards are harder to use thanthey were 2 years ago. Anyway,
that's that's not about go.Let's let's talk about this blog
post from my hall.

Shay Nehmad (15:40):
Actually, the it's a nice segue. Right? Because,
what would you consider to bewell designed? Oh. Like the
definition?

Jonathan Hall (15:48):
Yeah. So I I know where you're going because I've
read the post, but I'm tryingto, like, imagine my life 48
hours ago before I read the postand how I would answer them.

Shay Nehmad (15:57):
You're saying this post is totally life changing.

Jonathan Hall (15:59):
It's a watershed It changed my life. You know, I
I don't know if I have a good, agood answer for that. Like, I I
guess I would say something likeit's easy to use and, it serves
its purpose, but I'm not I Idon't think that's what the
author is getting at herebecause

Shay Nehmad (16:15):
I think, some

Jonathan Hall (16:16):
of those things could happen without design at
all.

Shay Nehmad (16:18):
I think, you have the act of designing, and you
have the the final design.Right? Mhmm. And some things
haven't been designed at all,and they're designed really
well. Right?
Some things have beendiscovered, and they have
beautiful design. Sure. Well, Idon't know if discovered, but
they were, like, made withoutthe design step, and they are

(16:39):
really well designed. It's sortof a funky word. There's a book
called The Design of EverydayThings that talks about the this
word a lot.
But I would, before we jump intothe blog post, I would just
nitpick your choice of words. Ithink something, isn't designed
well if it's easy to use, but ifit's simple to use.

Jonathan Hall (16:58):
Okay.

Shay Nehmad (16:59):
There are really easy to use, apps on my phone
that are very poorly designed.But if something is simple to
use, like, there's one way touse it, and it's not confusing.
Anyway, the blog post is askingthe question, is Go well
designed?

Jonathan Hall (17:15):
Mhmm.

Shay Nehmad (17:16):
And I think it's written really well, and I don't
wanna, like, I want you to goread it. So I'm not gonna really
spoil the ending. I'm just gonnagive you sort of the intro. This
author, Matt Hall hey, Hall. Doyou know the guy?
Or is that, like, a common name?

Jonathan Hall (17:32):
It is a fairly common name. But hey, Matt, if
you're listening and we know andwe're related, give me a shout
out.

Shay Nehmad (17:38):
That's gonna be like your, Mary Kate and Ashley
moment where you discover youhave matching, SSH ID keys.
Anyway, the Matt talks about,like, what is design anyway, and
to him, it's whether a thingfulfills its original goal.
Right? And, generally, in thatsense, he says that, yes, Go

(18:04):
does fulfill its goal andtherefore, it is well designed
and that there's a difference,and I think that's the most
important point here. There's adifference between I don't like
it and it is badly designed.
Right? I think it's not a goodfit for me. I don't think like
that. I really prefer functionalprogramming. I love the JVM.
I think the no generics is areal problem. Blah blah blah.

(18:27):
Those are very personalobservations, but is something
well designed, especiallysomething like a programming
language where you can see allthe things. According to Matt,
you can just look at theoriginal design goals or
original goals of the projectand just measure it by that if
you believe the goals are goodor or, like, well, well intended

(18:49):
at least.

Jonathan Hall (18:49):
Well, I think you could also make an argument that
you don't even need to agreewith the goals or think they're
good. I mean, maybe a Yeah. Somesort of hacking tool or or a
thieving tool is well designedbecause it allows it either
carjack more easily or whateverthe case is. You could you could
argue that it is well designedeven though it was designed for
a purpose that shouldn't exist,for example.

Shay Nehmad (19:07):
Specifically, Go is a is a really good language for
malware. Right? So you don'teven have to go to a different
product. You remember thatChinese APT that was, like,
distributed no c and c that wecovered on the show? I think it
was a year ago.

Jonathan Hall (19:21):
That's been a while. You would

Shay Nehmad (19:22):
never write that in, like, not in Go. Anyway,
funnily enough, this blog post,which is overall the the saying
is Go is a well designedlanguage, mostly talks about,
drawbacks. The file system API,no operators or functions
overloading, the error handling,the f f I, and sort of looks at
each of these quote unquoteweaknesses and just says, yes,

(19:43):
of course, Go has poor f f Ibecause it wanted its own
compiler linker debugger to havea really good tool chain. There
is or the file system issomething I hear all the time
from Windows developers. InGoogle, all the servers are
Linux.
Like, if you're writing softwarefor Windows servers, Go might
not be a good fit, but it wasn'treally designed for that.

(20:05):
Although, at this point, Ireally think it's fine and it's
just Yeah. A nitpick. So it's areally good blog post. It's
written really well, veryclearly.
Go read it. It's in the shownotes. And

Jonathan Hall (20:14):
Yep. I like it.

Shay Nehmad (20:15):
Always like I do when you find really good blog
post, go, read the other thingsin, Matt's, you know, about page
and projects and everything. Andhe has a few good posts on his
blog, technology predictions for2025, and all these sorts of,
cool things, book reviews,talking about Rust and Zig as

(20:35):
well, really, really cool. Andfunnily enough, he works at
Couchbase. So another relationbetween you 2.

Jonathan Hall (20:42):
I think we should take the last two items to
lightning round. What do youthink? I wonder if Matt's
website is hosted with Hugo.

Shay Nehmad (20:48):
Oh, that's interesting. Actually, it it
works really, really fast, and,we even have his GitHub, so we
could take a look. But wait.Hugo releases? Oh, my god.
A new release. Yeah. Soundedbelievable. Am I right?

Jonathan Hall (21:07):
Yeah. Yeah. Nobody knows that that was
planned.

Shay Nehmad (21:10):
So Hugo is this static site, generator, which I
absolutely adore and I've beenusing for years at this point,
since 2019, hasn't, like,crashed on me once. Amazing. And
this new release actually adds,like, a few cool features.
They're pretty simple toexplain, so I'll just try to

(21:31):
explain them. Obviously, itincludes a lot of improvements
and bug fixes and and whatever.
But a, there are 3 new, featuresfor images. So let's say you
wanna host an image on yourblog, right, on your blog post.
And you wanna render it out. A,there's a new filter called
mask. Have you ever used, like,masks in Photoshop

Jonathan Hall (21:52):
or something like that? Yeah. Not frequently, but
yes. Yes.

Shay Nehmad (21:56):
So there are you you pass, like, a black and
white shape, let's say a circle.Right? And it masks the original
image in the sense thateverything that's black is gonna
get, cropped out and everythingthat's white is gonna show.
Maybe it's the other way around.I never remember.
So now you can do that, like,and you don't have to do this
edit outside of your blog, whichis super useful if you wanna

(22:18):
reuse the same mask a few times.Right? Mhmm. So you can do that,
filter. There's another, like,editing thing that I think if
you do a lot of times, like, ina separate editor like Gimp or
Photoshop, you can now do justwith a filter, images dot text.
So if you have an image and youwanna slap some text on the
image, not as selectable, like,text as as part of the image

(22:41):
file itself, You just use imagesdot text, and now you can align
it horizontally to the center,which is nice. And the the last
images feature, which I foundreally quirky but also super
cool is QR. Yes.

Jonathan Hall (22:55):
I love that one. Like, put in

Shay Nehmad (22:56):
a link and pass it through the QR filter, and you
get a QR image that works.

Jonathan Hall (23:01):
That is the one I would use, fairly frequently,
actually.

Shay Nehmad (23:05):
Honestly, I have to say, QRs are the one, like,
piece of technology that I justI'm so surprised it caught on,
but in hindsight, it's soobvious. Like, can you imagine
living without QR codes now?Wow. So many things. Right?
I don't know how it is in thestates, but, like, public
transportation. You in Israel,you pay by QR code. Scan this
card. Like, I probably I'mprobably filtering out it out in

(23:28):
my head, but I I probably see,like, 15 QR codes every day.

Jonathan Hall (23:32):
Mhmm.

Shay Nehmad (23:33):
Probably more than URLs at this point.

Jonathan Hall (23:35):
Whenever I give a presentation, I always put a QR
code at the the same one at thebeginning and end of the
presentation for a link to theslideshow I'm doing. So if
you're at a meet up or aconference, someone can just
snap them in a picture of thator scan the QR code in real time
and then they have the link toto that and any of the resources
I want to share. So that's why Iwould use it because I usually
put my my slides on my on myblog.

Shay Nehmad (23:57):
So you you now you can just do images dot q r
linked to the current pageyou're on. I think if you do it,
correctly with the templates,you could even, like, it would
render the q r differently ifyou're running in local host,
like in the Hugo server, or ifyou deploy it to wherever you
host your, static HTML. Mhmm.But just 3 cool filters. And if

(24:19):
you're writing, like, morecomplicated templates have you
written any custom templates forHugo?
Like, for your site? Yeah. Whichones, for example? Like, which
one do you like?

Jonathan Hall (24:29):
I don't know. I mean, boldly go. Tech is all
done on Hugo. A lot of customtemplating there.

Shay Nehmad (24:34):
Cool. I I have one that I really like. It's mostly
CSS, to be honest, but it's itit does have a bit of, like,
magic to it. I wrote, like,flashcard thing where it
generates, you have a title andthen the the content. Right?
Which is basically, like, whenyou study for a test and you
have a small card.

Jonathan Hall (24:55):
Sure.

Shay Nehmad (24:55):
Or on the front, there's the question. On the
back, there's, like, the answer.I used it to memorize, like,
formulas for math tests andthings like that.

Jonathan Hall (25:02):
Okay.

Shay Nehmad (25:03):
So now when I summarize books and post it on
the like, technical books andpost it on my site, I have this
custom template. And, you know,every now and then there was an
error and I had to debug it,blah blah blah. This release
adds try, which is a generalmechanism for handling errors
within templates. If you have anerror, you can try and it
returns like a try value So youcould print like an error or

(25:26):
maybe you can, like, write awarning but not crash, all these
sorts of things. Really, really,really useful for template
developers.
I think it's not the normal Hugouser, but

Jonathan Hall (25:37):
this is different than the typical try catch that
a lot of people are used to.Right? You don't have try and
then a block, and then in text,it's try and then an expression
of whatever function that mightbe, and then returns a a value
that basically has 2 keys, anerror or a value. So that's how
you you handle the error case.So it's it's not like a new
language construct or whateverthat would require modifying

(26:00):
the, the templating languageitself.
This doesn't do that. It justadds a new function.

Shay Nehmad (26:04):
Yeah. It is a nonstandard extension to the
text templates, so you won'thave that in text template. But,
honestly, I don't know if it'spossible. Maybe it's breaking.
But if it's not breaking,putting it in text template
would be really useful becauseyou can try to do a thing and if
it airs instead of, like,crashing the build, you can just
warn if you don't really careabout it if it's just whatever.

(26:24):
I think it's really useful, butobviously a power user thing.

Jonathan Hall (26:27):
I'm gonna have to try it out.

Shay Nehmad (26:29):
Yeah. Yeah. Yeah. I actually think it's, like,
getting updated automaticallyfor me because I installed it
using brew.

Jonathan Hall (26:35):
Okay.

Shay Nehmad (26:35):
So, like, whenever I brew upgrade, it just upgrades
to a new version. Once it I hadto update some of my templates
due to, like, deprecationwarnings, but it just works.
Solid piece of software,honestly. For a zero dot, it is
very solid.

Jonathan Hall (26:51):
So that wraps us up. For the most part, we do
have some important programmingannouncements and then a short
lightning round after the thebreak. So stick around. This
show is supported by you, ourlistener. As we mentioned at the
top of the show, if you'd liketo support us, there are many

(27:11):
ways you can do that.
Some are free, some areexpensive. The most expensive
way is to just send us a$1,000,000 or something like
that. If that's not in yourchecking account though, you
could also just become a Patreonmember, where what is it? $8 a
month?

Shay Nehmad (27:25):
Yep.

Jonathan Hall (27:26):
Yep. So that's a lot more affordable for for most
of us. You can support us thatway. It helps cover the cost of
hosting and editing and andbuying microphones that don't
exist and all those sorts of funthings.

Shay Nehmad (27:37):
Yeah. The money goes to the good people at Boxes
Inc, who sends boxes ofmicrophones.

Jonathan Hall (27:43):
You can also support us in non financial
ways. We love to chat with ourlisteners. We're on the go for
Slack in the Cupago channel.That's Cupago Kebab case. You
can also email us news atcupago.
You can find all of our contactdetails, all past episodes,
transcripts to our episodes,swag, social media accounts, all
that sort of fun stuff is overat cupago.dev. I think that does

(28:04):
a good job of the places tocontact us. We do have a new
shout out this week to Sagar,who is a new Patreon member.
Thanks for supporting the show.Thanks for listening.

Shay Nehmad (28:14):
Thank you.

Jonathan Hall (28:15):
And one other way that you can participate and
support the show is coming upsoon. On February 13th at 1800
hours UTC. We are going to berecording the 100th episode. The
Go 1.24 release party, a liveepisode. What else can I say
about it?
It's gonna be a fun andexciting, Join us. Have your

(28:37):
voice on the show. What else?How else can we hype people up
about this, Shai?

Shay Nehmad (28:41):
So we don't really know how the party is gonna go.
I assume it's gonna be like anonline conference. Right? Yeah.
We're gonna have probably just apart where we do the show, and
y'all listen and, like, chatwith us and we read, your
comments from chat live, sort oflike a Twitch stream.

(29:02):
And then the interview sectionis gonna be just sort of
everybody talking. It'llprobably be moderated because
not everybody can talk at once,and we don't want our editor to,
like, edit 500 different audiostreams. So it's gonna be
chaotic, but it's gonna be fun.One of the best things about the
show, honestly, is the communityand just people on Slack that
I've come to think of as, like,close contacts just because I

(29:26):
see them in my notifications allthe time. Like, oh, of course,
here's Micaiah dropping another,cool link that I'll I'll have to
read.
And now here's, Peter with thesecurity release 0.1 second
after it was released.

Jonathan Hall (29:38):
Are you sure Peter's not a bot? He might just
be on our assist feed.

Shay Nehmad (29:41):
Well, he's a very friendly one at that. So I'm,
I'm okay with it. So, yeah. Thejust pulling two names off the
top of my head because I thinkYeah. They're the most recent,
commenters and the most recent,participants in our channel.
But it would be cool, and youcould say you participated in a
live episode. 1800 UTC February13th, and we'll, you know, send

(30:05):
out the link for y'all to joinand yeah, it'll be fun. If you
have any suggestions for thingsyou think we should do in the
live episode, Other thancelebrating the fact that we've
done a 100 of these, which forme is like, I don't know how you
see it. Maybe it's just a roundnumber. For for me, it's like
the fucking achievement.
You know what I mean?

Jonathan Hall (30:23):
When we hit 256, I'll be excited. 0 accuracy.
Yeah.

Shay Nehmad (30:27):
I just read that on, Denmark trains, like Danish
trains, you're not allowed tohave exactly 256, light bulbs,
because it confuses the railsoftware

Jonathan Hall (30:39):
Oh, wow. Or something like that.

Shay Nehmad (30:41):
We could hit a 128 before that. Like Yeah. That's a
nice round number. But, yeah, Ithink it's like an achievement.
Basically, you and I haveinvested an hour or maybe 2
hours of our week every week tolearning Go and sharing it with
the community.
Yeah. And That's fine. You know,including all the meta stuff
around the show, that's a ton ofhours. And we flew out to

(31:01):
Amsterdam and did a live episodethere, and that was super, super
fun, but it was local. So it wasjust people who were in
Amsterdam that week and also hadtime to join us in the bar,
which by the way didn't includeyou.

Jonathan Hall (31:13):
Yeah. I was in I was stuck in New York that day.

Shay Nehmad (31:16):
Yeah. So, yeah, it's gonna be a lot of fun and
I'm really happy to celebratethis, like, milestone. We we're
crossing our fingers that 124 isgonna release during the
episode. That's gonna be likeThat'll

Jonathan Hall (31:27):
be fine.

Shay Nehmad (31:27):
Perfect. But our actual bet is, Valentine's day.
Right?

Jonathan Hall (31:32):
So I I keep waiting for Valentine's day
release.

Shay Nehmad (31:34):
Yeah. So, we don't know it. Obviously, we don't
have inside information aboutwhen, 1.24 actually coming out.
But we can celebrate therelease, you know, it's in the
same week. It's gonna be fine.
So join us. If you want to join,there's no sign up, thing or
whatever. Just like a weekbefore the that episode, we'll
start posting the details, like,on our channel and talk about it

(31:56):
in the show. But just, like, goto your calendar and and put it
there now so you remember. Andyou don't have to participate.
If you just wanna join andlisten live and you don't wanna,
like, participate in talk,that's totally cool too.
Obviously, we love lurkers. Comelurk. That's also fine.

Jonathan Hall (32:11):
Alright. I think that wraps us up here. Let's get
back to we have a few items fora lightning round, and then
we'll wrap up the show.

Shay Nehmad (32:17):
Sounds good. Lightning round.

Jonathan Hall (32:29):
Alright. First up in the lightning round, a
grammar nitpick. So some of youmay know that I do a daily,
usually 5 days a week, postabout go. I'm almost done, with
the, going through the go specone essentially paragraph at a
time. It's taken me about 2years, just about as long as
we've been doing the show.
But last week, I came across a agrammar nitpick in the spec. The

(32:54):
code said, it mentions ahypothetical variable v as if it
was declared. And I mentioned inmy daily post, I said, grammar
knit, this should be as if itwere declared, but nobody cares
about that and I just went on tothe explanation. One of my
readers wrote back and said, Icare about that. And here's the
fix, and he submitted acorrection.
It's now in the go spec. So thatwill be included in go 1.24, a

(33:16):
little verbiage change. That'smy lightning round pick for the
day.

Shay Nehmad (33:20):
Hey, John.

Jonathan Hall (33:21):
Yes, sir?

Shay Nehmad (33:22):
Knock knock.

Jonathan Hall (33:23):
Who's there? To. To who?

Shay Nehmad (33:25):
No. It's to whom. Alright. My lightning round pick
is kinda different from thethings we usually do. Every now
and then, I try to go to somesocial media site and just
search for go and filter by thelast week.
Usually, you find a lot of a lotof interesting stuff. This week,

(33:47):
I did it in YouTube and startedscrolling through the things. A,
there is garbage. Like, there isgarbage content, online, and I
know this is obviously not a PSAbecause people who are listening
here hopefully don't think thatthe show is garbage. I know that
I'm I'm trying to understandwhat I'm saying.
I literally saw an AI woman,explaining, like, a blog post

(34:09):
that was wrong with wrong codefor, like, 20 minutes just
literally just garbage content.I don't understand who it's for.
And then, like, scrollingthrough it, I found some stuff
in languages I don't know, whichis very cool, but I can comment
on. And then I found someonecalled the peaceful programmer,
and there's a link here to hisstream. It's just someone who

(34:29):
started learning Go, like, a fewdays ago, like, maybe 4 days
ago, and they're just streamingthe entire process of, like,
setting up Neovim and startingdoing the examples.
And the stream I I found was himjust building a hacking
simulator, which is just aprogram you run and it prints,
like, cool looking text on yourterminal. And I just like

(34:50):
usually on this show, wehighlight cool stuff that's like
new and and that teaches us, butI just really appreciate someone
sharing their learning processas well. So if you're into
putting like the developmentstreams on your side monitor
while you're working, Isometimes do that. I like go to
Twitch and just open up someonewho's working on their game
development and just put it tothe side and work on my thing,

(35:13):
sort of feels less, lonely,especially when working from
home. Maybe check out thePeaceful Programmer.
I don't know anything else aboutthis guy, and I watched him for,
like, 15 minutes, so I hope it'san okay recommendation. But,
yeah. One last item for thelightning round for me is pixel.
We're just mentioning gamedevelopment. I remembered we

(35:33):
have that, on the backlog.
Pixel 2 is a handcrafted 2 dgame library in Go. It's
actually a new revived communityfork. It has features like
lights and platforming. Like, ithas examples, sorry, of doing
lightning effects, doing smokeeffects, platformer, raycaster,
which is really cool. Looks likethe Doom 3 d thing.

(35:55):
So, yeah, I really like it. I Iwish I had time to develop
games, maybe one day. It hasfeatures and it has missing
features. So if you wanna do,like, develop anti aliasing in
this library, you know, it's upfor grabs there. It's still not
a 1 point o, but, you know, gamedevelopment in go is a thing.

Jonathan Hall (36:17):
I thought aliasing was a new feature in
1.24. Now we want an anti alias?

Shay Nehmad (36:22):
That's a good one. Yin and Yang. Aliasing and anti
aliasing. So, yeah. Pixel is anew community, maintained fork
of the original Pixel.
Link in the show notes if youwanna join that project. I wish
I could. That wraps it up fortoday.

Jonathan Hall (36:39):
Yeah. I think that wraps it up. It's been a
good show. It's been a longshow. We'll see you next time.

Shay Nehmad (36:44):
And hopefully in the live episode.

Jonathan Hall (36:46):
Yes. Program exited.
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.