🎤 A nil microphone won't keep us away from the 1.24 Interactive Tour or trying Hugo's new features

Jonathan Hall:

This show is supported by you, the listener. Stick around until after the news to hear more. This is Cup of Go for January 17, 2025. Keep up to date with the important happenings in the Go community in about 15 minutes per week. I'm Jonathan Hall.

Shay Nehmad:

And I'm Shay Nehmad.

Jonathan Hall:

Hey, Shay. You look a little under the weather.

Shay Nehmad:

Yes. You can probably hear in your earphones right now. I'm just a little bit sick. Every I get this every, winter. My sinuses are not are not my best, feature.

Shay Nehmad:

My sinuses are the time formats in go of the human body. They just, like they can work technically, but it's just weird that they're designed this way, and they caused me a lot of pain. Anyways Sorry

Jonathan Hall:

to hear that.

Shay Nehmad:

Talking about things that are weird, your new mic is very, very small. It almost Yeah. Looks like your old mic.

Jonathan Hall:

It it it looks a lot like an old mic. So I ordered a new mic. I was so excited today. I picked it up. I went by Staples to to to pick it up where they delivered it and I got home.

Jonathan Hall:

I opened the box and there was this 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. There was no microphone in it.

Shay Nehmad:

So I immediately Ordered a box, basically.

Jonathan Hall:

Yeah. I ordered a box with a cable. I immediately opened up my Amazon app and said return items missing. So they're shipping me a new one, and I'll ship this back. So hopefully by next week, I'll I'll not sound like I'm in a tin can.

Shay Nehmad:

You know what would probably happen? You probably marshaled, you know, the mic with the cable and the stand into the box, but mic was, lowercase because they came for Python, and they didn't realize it's private. So I got marshaled without the mic.

Jonathan Hall:

Well, whatever it is, my mic is now a no pointer, new reference. So

Shay Nehmad:

Yeah. We wanna cover a lot of cool stuff today. We have, some security releases to discuss, new stuff in 124, new proposals, proposals that are on hold, some blog posts, new releases, and grammar fixes in the language, apparently. Yeah. Yeah.

Shay Nehmad:

And we have really exciting updates like meta updates about the show during the ad break, so make sure you stick around it. If you usually skip it, don't do it this time.

Jonathan Hall:

Good advice. So first up, we have, pre announcements. Although by the time you listen to this, it's no longer a pre announcement. Go 1.23.5 and 1.22.11 are being released during business hours today as we're recording. We're recording on Thursday.

Jonathan Hall:

This show comes out on Friday. So by the time you hear this, they will be out. Make sure you update them. There are a couple of private CVEs that are affected. We don't know what it is yet.

Jonathan Hall:

We'll tell you next week, but make sure you update.

Shay Nehmad:

And last week, we told you the same thing if it sounds like, you know, like a broken record about the previous, release. Right?

Jonathan Hall:

Yep.

Shay Nehmad:

It was about a bug in a security vulnerability in g log, which I learned about via this security. I I guess there's no such thing as bad press. So I I learned about g log through its security vulnerability. Last week, it it was private. Right?

Shay Nehmad:

This week, they released the explain the, like, the explainer post in the in the go in the Google group. And I'll try to explain it pretty beef briefly. It's actually kinda simple. Logs, where did you write your logs, like, normally?

Jonathan Hall:

Devnull.

Shay Nehmad:

But if you, like, wanna read them.

Jonathan Hall:

I wanna read them. I I usually put them on a file under varlog somewhere.

Shay Nehmad:

Like, whatever, somewhere. Like, it doesn't matter. Right? Yeah. So usually, peep that's what people do.

Shay Nehmad:

They put it in a somewhere and all since all software that's running on your machine does that, that somewhere which might be for example, /tmp usually has like wide ride access to everyone. Right? Mhmm. It stands to reason that everybody could ride to /tmp because that's, like, what it's there for. Right?

Shay Nehmad:

Yep. The problem is, let's say you're writing, a piece of software that has, you know, permissions to write to passwd or some very highly sensitive file. Let's say a local SQLite database on your server that's really, really, important to you, so you protect it, like, at all costs. And I am running on your server and I have, like, no permissions and I wanna get to that file, since I know where the g log will be written slash gmp slash whatever, I could create a symlink to a file that I don't own because that's allowed.

Jonathan Hall:

Yeah. Yeah.

Shay Nehmad:

And then your software, like, starts to run and it sees, oh, okay. There's a sim link. I'll follow it and I'll start writing where, like, where I the sim link is pointing.

Jonathan Hall:

So your SQLite database now has a bunch of logs at the end of it of the the the data.

Shay Nehmad:

Yeah. And if you can redirect it through some more clever means, I I guess you could maybe modify the stream, into something you own and then send only some of the bytes to the file that you wanna write and maybe just override the permissions bit. Right? Yep. And things like that.

Shay Nehmad:

So there's a whole, OWASP, OWASP is a o w a s p. It's like an organization that's all about web security. They release all these top 10 things in web security, top things in AI security, blah blah blah. There's a whole category of vulnerabilities called insecure temporary file. And the fix is pretty like, if you had to fix this vulnerability in g log, how would you remediate it?

Jonathan Hall:

I probably would check if the file exists and if it's assembling. And if so, then, I guess, report an error.

Shay Nehmad:

That they go even harder. They just crash if the log file already exists.

Jonathan Hall:

Okay.

Shay Nehmad:

Like, you're not allowed to run if the log file already exists. That's pretty good because it means if you're developing, you like, before you run, you need to delete the old log file, which is kind of frustrating instead of it just rotating. But as a library, that's a very good decision, I think. So that's the class of vulnerabilities. Insecure temporary file, that's a specific, vulnerability you can, like, in g log, you write log to, like, somewhere public by default.

Shay Nehmad:

If your process is privileged, someone who's unprivileged could use it to overwrite the sensitive file. And just wanna shout out Josh McSavany and Gunthar Nowak, for, like, reporting on this issue and contributing the fix. Really cool.

Jonathan Hall:

Cyber. Well, that kinda does it for, things that have happened in the past, with regard to releases, but we do have an upcoming release that we're all anxiously awaiting, and that is the Go 1.24 release. And we now have the interactive release notes, which we were very excited about the last time, and I think we're right before that. Big shout out to Anton Giannoff for, putting this together for us, for the community. I I love this.

Jonathan Hall:

You can basically it's the release notes with links to proposals and links to the cls where the changes are made. Most important though, it has runnable code snippets in line that you can, play with. So I wanna pull call out 2, upcoming changes I'm excited about. One is crypto rand.text. You wanna know what it does?

Jonathan Hall:

Just go to the interactive show notes. Just go to the interactive release notes, hit run, and it shows you what it does. It creates random text. This is one of the most common, stack overflow posts I go to is how do you create a random string and go efficiently. Mhmm.

Jonathan Hall:

And this is a really good stack over full post about it. I don't have to worry anymore. I could just use this function.

Shay Nehmad:

Can you go and run it? And let's see if it if, Anton set the seed correctly or if we're all getting the same number.

Jonathan Hall:

It's because I got So it should be, oh, it is the same. It is the same. Yeah.

Shay Nehmad:

Wait. I got l I v g q

Jonathan Hall:

s. Same. Yep. And a n g g g g. That's awesome.

Shay Nehmad:

I knew it. I knew it.

Jonathan Hall:

The only thing I don't like about this function is that the output is in base 32, which is fine for many, many cases, but sometimes you want a specific alphabet or something like that. If that's what you care about, you're gonna have to still implement your own.

Shay Nehmad:

Yeah. The, I I found out that the most useful one is the is base 62. At least that's what I found.

Jonathan Hall:

Mhmm.

Shay Nehmad:

Because it's like base 64, but without hyphens and underscores. Yeah. So if you have a prefix, you have you can, like, separate the prefix from the unique bits.

Jonathan Hall:

Yeah. And there's a lot of time Just

Shay Nehmad:

use it today.

Jonathan Hall:

It's a lot of time I wanna when I wanna custom alphabet error, or maybe I wanna wanna human readable string. So I don't want zeros and o's or or i's and l's. You know, I'm gonna leave some certain characters out that might be ambiguous. If you care about that sort of stuff, you'll still have to do your own.

Shay Nehmad:

Yeah. But then you can go back to exactly what you did before, so it's not like you're losing out

Jonathan Hall:

on the thing. And I

Shay Nehmad:

think we talked about this, API on the show. Like, there are proposals to pass in an alphabet into this, but I'm happy that they don't allow you to do it because it would be super easy for someone to pass in a a too short of an alphabet Yep. For it to be secure. And then you're it's it's sort of a foot gun. Right?

Shay Nehmad:

You pass an alphabet that has too few characters, and then I can guess I I could brute force because the randomness is is, high, but the actual set of characters you can choose from and the length is too low. Mhmm. So you're getting into weird, like, weird areas, gray areas of is this still crypto or not? Right? This is not just random text.

Shay Nehmad:

This is crypto random text. So it should only be used for cryptographic usage. So why would you care at all about human readability? Right?

Jonathan Hall:

It's a good argument.

Shay Nehmad:

Yep. The other one I release notes are awesome. I really like playing around with this site. We should tell Anton to change the c, though.

Jonathan Hall:

We should just get him on the show, and we can tell him in person.

Shay Nehmad:

Oh, I can actually edit it. Well, you I'll I'll try to fix the code one second, and you tell us about another thing you you like.

Jonathan Hall:

Yeah. So the other the other, thing I wanna call out that's coming in 124 goes back to the logging discussion and devnull. Now we have a first class citizen called s log dot discard handler. So instead of having to, create a new text handler that writes to io dot discard or whatever, you can just use s log this log handler for your tests or if you're if you truly wanna throw your logs into devnull. And, it'll be a little bit more efficient, I suppose.

Jonathan Hall:

Mostly, it's just a little bit of save typing. So I'm happy about that.

Shay Nehmad:

Saving typing is is good, especially now that it's so cheap with AI.

Jonathan Hall:

Yeah. I don't have to let Copilot, give me the wrong, autocomplete anymore. I can just type this log discard handler, and I'm done.

Shay Nehmad:

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, year and a half building development tooling, having Go test minus JSON, just printing out all the information you need to, let's say, pipe it into JUnit or into GitHub actions or whatever is very, very useful, and it's designed correctly, I think. Yeah. Actually, I I don't wanna shout out any other feature.

Shay Nehmad:

Just go to the site and play with them. It's such a good way to learn about the new release. Well done, Anton. Keep on coming.

Jonathan Hall:

One feature that, maybe in a future version of these interactive release notes is, a proposal. Actually, there's 2 proposals here we're gonna talk about. They're closely related. The first one, that we're talking about is for a new package called container unordered.

Shay Nehmad:

And just like your mic container.

Jonathan Hall:

Just like my mic container. The idea here is a generic hash table with custom hash hash functions. So that it's basically a center library package that gives you the equivalent of a map, but where you can define your own hash functions on your keys. This is this already exists, in a couple of places in X tools. There's a there's a version of this that predates generics.

Jonathan Hall:

The the proposal here is to make this version support generics and, just become standard. So, however, it's on hold. It was recently put on hold.

Shay Nehmad:

Which is something we we don't see very often

Jonathan Hall:

Exactly.

Shay Nehmad:

Going on hold. I I I'm used to well, I am used to immediate rejection. But usually, it's like a discussion, and then it goes through final comp final response period, likely decline and decline, or likely approve and approve. Right? I've never seen on hold before.

Shay Nehmad:

What does that even mean?

Jonathan Hall:

So the official description of on hold is reading from the documentation here. If discussion of a of a proposal requires design revisions or additional information that will not be available for a couple weeks or more, the group may put it on hold. So that's essentially what's happened here. So if we look at the, minutes from the last proposal meeting, we see that the reasons on hold, which isn't made clear, at least in the last few comments on the issue itself, is for another proposal, which is to add a standardized hash function. What is a standardized hash function?

Jonathan Hall:

The naive answer would be a function that takes a type and returns, say, you went 64 or or whatever value you wanna hash. There are some security implications here, which are a little bit beyond my understanding. But suffice it to say, there's some, bike shedding maybe. Is it is it fair to call it bike shedding when it's all about how do we mitigate security risks?

Shay Nehmad:

No. I think that's important.

Jonathan Hall:

Okay. I I mean, I think it's important too.

Shay Nehmad:

Sometimes an endless smire where you don't focus about the important stuff, but honestly, Go is pretty secure.

Jonathan Hall:

Yeah. So this is like the good version of bike shedding where they're actually working out security, implications of things.

Shay Nehmad:

Where they're bike shedding, but what they're actually building is a bike shed.

Jonathan Hall:

Right. Right. A secure bike shed at that. So anyway, this this bike shed that is a standardized hash function is still in the works. And obviously, as we've described the previous, proposal, it depends on a standardized hash function.

Jonathan Hall:

So it makes sense that it's on a hold while they try to figure out how to do a secure standardized hash function.

Shay Nehmad:

Cool. So now, just need a way to implement, you know, depends on, like, you have in Jira. This issue blocks that issue in GitHub issues.

Jonathan Hall:

Are you suggesting that the Go projects have switched to Jira?

Shay Nehmad:

I suggest that if we have listeners that work at Atlassian, stop listening for the next 10 seconds. And I honestly wish for that outage that was last year where people couldn't access their Jira and Confluence instances because they they implemented like deleting deprecated plugins wrong and deleted entire tenants and then recreated them by hand, to happen to every single, Jira instance in existence. So everybody moves away from these tools. I do not like them. At least in the people, you can put your, headphones back on now.

Jonathan Hall:

Yeah. That was a lot more than 10 seconds, but, well

Shay Nehmad:

I agree. That's how long Jira takes to load. So you know what?

Jonathan Hall:

Unless you wanna sponsor us. No. I don't I don't I don't think they wanna

Shay Nehmad:

I I don't think I'll take you know what's funny? Just, like, moving the curtain aside a bit. When we started this show, like, 2 years ago at this point, we had a Google doc where we Yeah. Started to hash out, like, what's gonna be the name and how it's gonna work and whatever. And then on the first episode, like, while we were prepping for the first episode, I opened this, like, board where we can manage, like, the backlog of news and backlog of interviewees and the things we wanna talk about.

Shay Nehmad:

And back then, it wasn't an Atlassian product, and now it is. It's Trello. So I am besmirching them, but literally, I'm using their products right now.

Jonathan Hall:

But you know what?

Shay Nehmad:

Trello has

Jonathan Hall:

gotten worse since we've been using it the last 2 years too.

Shay Nehmad:

Yeah. But that's because we're never clearing the backlog, and we have people in the interview who use Well,

Jonathan Hall:

that'd be part of it. You're like to use. The cards are harder to use than they 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:

Actually, the it's a nice segue. Right? Because, what would you consider to be well designed? Oh. Like the definition?

Jonathan Hall:

Yeah. So I I know where you're going because I've read the post, but I'm trying to, like, imagine my life 48 hours ago before I read the post and how I would answer them.

Shay Nehmad:

You're saying this post is totally life changing.

Jonathan Hall:

It's a watershed It changed my life. You know, I I don't know if I have a good, a good answer for that. Like, I I guess I would say something like it's easy to use and, it serves its purpose, but I'm not I I don't think that's what the author is getting at here because

Shay Nehmad:

I think, some

Jonathan Hall:

of those things could happen without design at all.

Shay Nehmad:

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?

Shay Nehmad:

Some things have been discovered, and they have beautiful design. Sure. Well, I don't know if discovered, but they were, like, made without the design step, and they are really well designed. It's sort of a funky word. There's a book called The Design of Everyday Things that talks about the this word a lot.

Shay Nehmad:

But I would, before we jump into the blog post, I would just nitpick your choice of words. I think something, isn't designed well if it's easy to use, but if it's simple to use.

Jonathan Hall:

Okay.

Shay Nehmad:

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 to use it, and it's not confusing. Anyway, the blog post is asking the question, is Go well designed?

Jonathan Hall:

Mhmm.

Shay Nehmad:

And I think it's written really well, and I don't wanna, like, I want you to go read it. So I'm not gonna really spoil the ending. I'm just gonna give you sort of the intro. This author, Matt Hall hey, Hall. Do you know the guy?

Shay Nehmad:

Or is that, like, a common name?

Jonathan Hall:

It is a fairly common name. But hey, Matt, if you're listening and we know and we're related, give me a shout out.

Shay Nehmad:

That's gonna be like your, Mary Kate and Ashley moment where you discover you have matching, SSH ID keys. Anyway, the Matt talks about, like, what is design anyway, and to him, it's whether a thing fulfills its original goal. Right? And, generally, in that sense, he says that, yes, Go does fulfill its goal and therefore, it is well designed and that there's a difference, and I think that's the most important point here. There's a difference between I don't like it and it is badly designed.

Shay Nehmad:

Right? I think it's not a good fit for me. I don't think like that. I really prefer functional programming. I love the JVM.

Shay Nehmad:

I think the no generics is a real problem. Blah blah blah. Those are very personal observations, but is something well designed, especially something like a programming language where you can see all the things. According to Matt, you can just look at the original design goals or original goals of the project and just measure it by that if you believe the goals are good or or, like, well, well intended at least.

Jonathan Hall:

Well, I think you could also make an argument that you don't even need to agree with the goals or think they're good. I mean, maybe a Yeah. Some sort of hacking tool or or a thieving tool is well designed because it allows it either carjack more easily or whatever the case is. You could you could argue that it is well designed even though it was designed for a purpose that shouldn't exist, for example.

Shay Nehmad:

Specifically, Go is a is a really good language for malware. Right? So you don't even have to go to a different product. You remember that Chinese APT that was, like, distributed no c and c that we covered on the show? I think it was a year ago.

Jonathan Hall:

That's been a while. You would

Shay Nehmad:

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 designed language, 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 unquote weaknesses and just says, yes, of course, Go has poor f f I because it wanted its own compiler linker debugger to have a really good tool chain. There is or the file system is something I hear all the time from Windows developers. In Google, all the servers are Linux.

Shay Nehmad:

Like, if you're writing software for Windows servers, Go might not be a good fit, but it wasn't really designed for that. Although, at this point, I really think it's fine and it's just Yeah. A nitpick. So it's a really good blog post. It's written really well, very clearly.

Shay Nehmad:

Go read it. It's in the show notes. And

Jonathan Hall:

Yep. I like it.

Shay Nehmad:

Always like I do when you find really good blog post, go, read the other things in, Matt's, you know, about page and projects and everything. And he has a few good posts on his blog, technology predictions for 2025, and all these sorts of, cool things, book reviews, talking about Rust and Zig as well, really, really cool. And funnily enough, he works at Couchbase. So another relation between you 2.

Jonathan Hall:

I think we should take the last two items to lightning round. What do you think? I wonder if Matt's website is hosted with Hugo.

Shay Nehmad:

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.

Shay Nehmad:

A new release. Yeah. Sounded believable. Am I right?

Jonathan Hall:

Yeah. Yeah. Nobody knows that that was planned.

Shay Nehmad:

So Hugo is this static site, generator, which I absolutely adore and I've been using 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 to explain, so I'll just try to explain them. Obviously, it includes a lot of improvements and bug fixes and and whatever.

Shay Nehmad:

But a, there are 3 new, features for images. So let's say you wanna host an image on your blog, 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:

or something like that? Yeah. Not frequently, but yes. Yes.

Shay Nehmad:

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 that everything that's black is gonna get, cropped out and everything that's white is gonna show. Maybe it's the other way around. I never remember.

Shay Nehmad:

So now you can do that, like, and you don't have to do this edit outside of your blog, which is super useful if you wanna 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, in a separate editor like Gimp or Photoshop, you can now do just with a filter, images dot text.

Shay Nehmad:

So if you have an image and you wanna slap some text on the image, not as selectable, like, text as as part of the image file itself, You just use images dot text, and now you can align it horizontally to the center, which is nice. And the the last images feature, which I found really quirky but also super cool is QR. Yes.

Jonathan Hall:

I love that one. Like, put in

Shay Nehmad:

a link and pass it through the QR filter, and you get a QR image that works.

Jonathan Hall:

That is the one I would use, fairly frequently, actually.

Shay Nehmad:

Honestly, I have to say, QRs are the one, like, piece of technology that I just I'm so surprised it caught on, but in hindsight, it's so obvious. Like, can you imagine living without QR codes now? Wow. So many things. Right?

Shay Nehmad:

I don't know how it is in the states, but, like, public transportation. You in Israel, you pay by QR code. Scan this card. Like, I probably I'm probably filtering out it out in my head, but I I probably see, like, 15 QR codes every day.

Jonathan Hall:

Mhmm.

Shay Nehmad:

Probably more than URLs at this point.

Jonathan Hall:

Whenever I give a presentation, I always put a QR code at the the same one at the beginning and end of the presentation for a link to the slideshow I'm doing. So if you're at a meet up or a conference, someone can just snap them in a picture of that or scan the QR code in real time and then they have the link to to that and any of the resources I want to share. So that's why I would use it because I usually put my my slides on my on my blog.

Shay Nehmad:

So you you now you can just do images dot q r linked to the current page you're on. I think if you do it, correctly with the templates, you could even, like, it would render the q r differently if you're running in local host, like in the Hugo server, or if you deploy it to wherever you host your, static HTML. Mhmm. But just 3 cool filters. And if you're writing, like, more complicated templates have you written any custom templates for Hugo?

Shay Nehmad:

Like, for your site? Yeah. Which ones, for example? Like, which one do you like?

Jonathan Hall:

I don't know. I mean, boldly go. Tech is all done on Hugo. A lot of custom templating there.

Shay Nehmad:

Cool. I I have one that I really like. It's mostly CSS, to be honest, but it's it it does have a bit of, like, magic to it. I wrote, like, flashcard thing where it generates, you have a title and then the the content. Right?

Shay Nehmad:

Which is basically, like, when you study for a test and you have a small card.

Jonathan Hall:

Sure.

Shay Nehmad:

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 and things like that.

Jonathan Hall:

Okay.

Shay Nehmad:

So now when I summarize books and post it on the like, technical books and post 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 general mechanism for handling errors within templates. If you have an error, you can try and it returns like a try value So you could print like an error or maybe you can, like, write a warning but not crash, all these sorts of things. Really, really, really useful for template developers.

Shay Nehmad:

I think it's not the normal Hugo user, but

Jonathan Hall:

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 might be, and then returns a a value that basically has 2 keys, an error 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 whatever that would require modifying the, the templating language itself.

Jonathan Hall:

This doesn't do that. It just adds a new function.

Shay Nehmad:

Yeah. It is a nonstandard extension to the text templates, so you won't have that in text template. But, honestly, I don't know if it's possible. Maybe it's breaking. But if it's not breaking, putting it in text template would be really useful because you 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 care about it if it's just whatever.

Shay Nehmad:

I think it's really useful, but obviously a power user thing.

Jonathan Hall:

I'm gonna have to try it out.

Shay Nehmad:

Yeah. Yeah. Yeah. I actually think it's, like, getting updated automatically for me because I installed it using brew.

Jonathan Hall:

Okay.

Shay Nehmad:

So, like, whenever I brew upgrade, it just upgrades to a new version. Once it I had to update some of my templates due to, like, deprecation warnings, but it just works. Solid piece of software, honestly. For a zero dot, it is very solid.

Jonathan Hall:

So that wraps us up. For the most part, we do have some important programming announcements and then a short lightning round after the the break. So stick around. This show is supported by you, our listener. As we mentioned at the top of the show, if you'd like to support us, there are many ways you can do that.

Jonathan Hall:

Some are free, some are expensive. The most expensive way is to just send us a $1,000,000 or something like that. If that's not in your checking account though, you could also just become a Patreon member, where what is it? $8 a month?

Shay Nehmad:

Yep.

Jonathan Hall:

Yep. So that's a lot more affordable for for most of us. You can support us that way. It helps cover the cost of hosting and editing and and buying microphones that don't exist and all those sorts of fun things.

Shay Nehmad:

Yeah. The money goes to the good people at Boxes Inc, who sends boxes of microphones.

Jonathan Hall:

You can also support us in non financial ways. We love to chat with our listeners. We're on the go for Slack in the Cupago channel. That's Cupago Kebab case. You can also email us news at cupago.

Jonathan Hall:

You can find all of our contact details, all past episodes, transcripts to our episodes, swag, social media accounts, all that sort of fun stuff is over at cupago.dev. I think that does a good job of the places to contact 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:

Thank you.

Jonathan Hall:

And one other way that you can participate and support the show is coming up soon. On February 13th at 1800 hours UTC. We are going to be recording the 100th episode. The Go 1.24 release party, a live episode. What else can I say about it?

Jonathan Hall:

It's gonna be a fun and exciting, Join us. Have your voice on the show. What else? How else can we hype people up about this, Shai?

Shay Nehmad:

So we don't really know how the party is gonna go. I assume it's gonna be like an online conference. Right? Yeah. We're gonna have probably just a part where we do the show, and y'all listen and, like, chat with us and we read, your comments from chat live, sort of like a Twitch stream.

Shay Nehmad:

And then the interview section is gonna be just sort of everybody talking. It'll probably be moderated because not everybody can talk at once, and we don't want our editor to, like, edit 500 different audio streams. So it's gonna be chaotic, but it's gonna be fun. One of the best things about the show, honestly, is the community and just people on Slack that I've come to think of as, like, close contacts just because I see them in my notifications all the time. Like, oh, of course, here's Micaiah dropping another, cool link that I'll I'll have to read.

Shay Nehmad:

And now here's, Peter with the security release 0.1 second after it was released.

Jonathan Hall:

Are you sure Peter's not a bot? He might just be on our assist feed.

Shay Nehmad:

Well, he's a very friendly one at that. So I'm, I'm okay with it. So, yeah. The just pulling two names off the top of my head because I think Yeah. They're the most recent, commenters and the most recent, participants in our channel.

Shay Nehmad:

But it would be cool, and you could say you participated in a live episode. 1800 UTC February 13th, and we'll, you know, send out the link for y'all to join and yeah, it'll be fun. If you have any suggestions for things you think we should do in the live episode, Other than celebrating the fact that we've done a 100 of these, which for me is like, I don't know how you see it. Maybe it's just a round number. For for me, it's like the fucking achievement.

Shay Nehmad:

You know what I mean?

Jonathan Hall:

When we hit 256, I'll be excited. 0 accuracy. Yeah.

Shay Nehmad:

I just read that on, Denmark trains, like Danish trains, you're not allowed to have exactly 256, light bulbs, because it confuses the rail software

Jonathan Hall:

Oh, wow. Or something like that.

Shay Nehmad:

We could hit a 128 before that. Like Yeah. That's a nice round number. But, yeah, I think it's like an achievement. Basically, you and I have invested an hour or maybe 2 hours of our week every week to learning Go and sharing it with the community.

Shay Nehmad:

Yeah. And That's fine. You know, including all the meta stuff around the show, that's a ton of hours. And we flew out to Amsterdam and did a live episode there, and that was super, super fun, but it was local. So it was just people who were in Amsterdam that week and also had time to join us in the bar, which by the way didn't include you.

Jonathan Hall:

Yeah. I was in I was stuck in New York that day.

Shay Nehmad:

Yeah. So, yeah, it's gonna be a lot of fun and I'm really happy to celebrate this, like, milestone. We we're crossing our fingers that 124 is gonna release during the episode. That's gonna be like That'll

Jonathan Hall:

be fine.

Shay Nehmad:

Perfect. But our actual bet is, Valentine's day. Right?

Jonathan Hall:

So I I keep waiting for Valentine's day release.

Shay Nehmad:

Yeah. So, we don't know it. Obviously, we don't have inside information about when, 1.24 actually coming out. But we can celebrate the release, you know, it's in the same week. It's gonna be fine.

Shay Nehmad:

So join us. If you want to join, there's no sign up, thing or whatever. Just like a week before the that episode, we'll start posting the details, like, on our channel and talk about it in the show. But just, like, go to your calendar and and put it there now so you remember. And you don't have to participate.

Shay Nehmad:

If you just wanna join and listen live and you don't wanna, like, participate in talk, that's totally cool too. Obviously, we love lurkers. Come lurk. That's also fine.

Jonathan Hall:

Alright. I think that wraps us up here. Let's get back to we have a few items for a lightning round, and then we'll wrap up the show.

Shay Nehmad:

Sounds good. Lightning round.

Jonathan Hall:

Alright. First up in the lightning round, a grammar nitpick. So some of you may know that I do a daily, usually 5 days a week, post about go. I'm almost done, with the, going through the go spec one essentially paragraph at a time. It's taken me about 2 years, just about as long as we've been doing the show.

Jonathan Hall:

But last week, I came across a a grammar nitpick in the spec. The code said, it mentions a hypothetical variable v as if it was declared. And I mentioned in my daily post, I said, grammar knit, this should be as if it were declared, but nobody cares about that and I just went on to the explanation. One of my readers wrote back and said, I care about that. And here's the fix, and he submitted a correction.

Jonathan Hall:

It's now in the go spec. So that will be included in go 1.24, a little verbiage change. That's my lightning round pick for the day.

Shay Nehmad:

Hey, John.

Jonathan Hall:

Yes, sir?

Shay Nehmad:

Knock knock.

Jonathan Hall:

Who's there? To. To who?

Shay Nehmad:

No. It's to whom. Alright. My lightning round pick is kinda different from the things we usually do. Every now and then, I try to go to some social media site and just search for go and filter by the last week.

Shay Nehmad:

Usually, you find a lot of a lot of interesting stuff. This week, I did it in YouTube and started scrolling through the things. A, there is garbage. Like, there is garbage content, online, and I know this is obviously not a PSA because people who are listening here hopefully don't think that the show is garbage. I know that I'm I'm trying to understand what I'm saying.

Shay Nehmad:

I literally saw an AI woman, explaining, like, a blog post that was wrong with wrong code for, like, 20 minutes just literally just garbage content. I don't understand who it's for. And then, like, scrolling through it, I found some stuff in languages I don't know, which is very cool, but I can comment on. And then I found someone called the peaceful programmer, and there's a link here to his stream. It's just someone who started learning Go, like, a few days ago, like, maybe 4 days ago, and they're just streaming the entire process of, like, setting up Neovim and starting doing the examples.

Shay Nehmad:

And the stream I I found was him just building a hacking simulator, which is just a program you run and it prints, like, cool looking text on your terminal. And I just like usually on this show, we highlight cool stuff that's like new and and that teaches us, but I just really appreciate someone sharing their learning process as well. So if you're into putting like the development streams on your side monitor while you're working, I sometimes do that. I like go to Twitch and just open up someone who's working on their game development and just put it to the side and work on my thing, sort of feels less, lonely, especially when working from home. Maybe check out the Peaceful Programmer.

Shay Nehmad:

I don't know anything else about this guy, and I watched him for, like, 15 minutes, so I hope it's an okay recommendation. But, yeah. One last item for the lightning round for me is pixel. We're just mentioning game development. I remembered we have that, on the backlog.

Shay Nehmad:

Pixel 2 is a handcrafted 2 d game library in Go. It's actually a new revived community fork. It has features like lights and platforming. Like, it has examples, sorry, of doing lightning effects, doing smoke effects, platformer, raycaster, which is really cool. Looks like the Doom 3 d thing.

Shay Nehmad:

So, yeah, I really like it. I I wish I had time to develop games, maybe one day. It has features and it has missing features. So if you wanna do, like, develop anti aliasing in this library, you know, it's up for grabs there. It's still not a 1 point o, but, you know, game development in go is a thing.

Jonathan Hall:

I thought aliasing was a new feature in 1.24. Now we want an anti alias?

Shay Nehmad:

That's a good one. Yin and Yang. Aliasing and anti aliasing. So, yeah. Pixel is a new community, maintained fork of the original Pixel.

Shay Nehmad:

Link in the show notes if you wanna join that project. I wish I could. That wraps it up for today.

Jonathan Hall:

Yeah. I think that wraps it up. It's been a good show. It's been a long show. We'll see you next time.

Shay Nehmad:

And hopefully in the live episode.

Jonathan Hall:

Yes. Program exited.

Creators and Guests

Jonathan Hall
Host
Jonathan Hall
Freelance Gopher, Continuous Delivery consultant, and host of the Boldly Go YouTube channel.
Shay Nehmad
Host
Shay Nehmad
Engineering Enablement Architect @ Orca
🎤 A nil microphone won't keep us away from the 1.24 Interactive Tour or trying Hugo's new features
Broadcast by