
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.

And I'm Shay Nehmad.

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

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. 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

to hear that.

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

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. 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.

So I immediately Ordered a box, basically.

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.

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.

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

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. 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.

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. 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. We'll tell you next week, but make sure you update.

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

Yep.

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? 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?

Devnull.

But if you, like, wanna read them.

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

Like, whatever, somewhere. Like, it doesn't matter. Right? Yeah. So usually, peep that's what people do. 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?
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.

Yeah. Yeah.

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.

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

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.
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?

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

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

Okay.

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.
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.

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.
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?
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. 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.

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.

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

Wait. I got l I v g q

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

I knew it. I knew it.

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.

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

Mhmm.

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.

Yeah. And there's a lot of time Just

use it today.

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.

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

on the thing. And I

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?
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. 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?

It's a good argument.

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.

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

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.

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.
Mostly, it's just a little bit of save typing. So I'm happy about that.

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

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.

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.
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.

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.

And just like your mic container.

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.
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.

Which is something we we don't see very often

Exactly.

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. What does that even mean?

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?
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?

No. I think that's important.

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

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

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

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

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. So it makes sense that it's on a hold while they try to figure out how to do a secure standardized hash function.

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.

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

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.

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

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

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

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.
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.

But you know what?

Trello has

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

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

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.

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

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.

You're saying this post is totally life changing.

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

I think, some

of those things could happen without design at all.

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 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.
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.

Okay.

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?

Mhmm.

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? Or is that, like, a common name?

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.

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.
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.
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.

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.

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.

That's been a while. You would

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.
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. Go read it. It's in the show notes. And

Yep. I like it.

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.

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.

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. Sounded believable. Am I right?

Yeah. Yeah. Nobody knows that that was planned.

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.
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

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

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.
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.
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.

I love that one. Like, put in

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

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

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? 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.

Mhmm.

Probably more than URLs at this point.

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.

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?
Like, for your site? Yeah. Which ones, for example? Like, which one do you like?

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

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? Which is basically, like, when you study for a test and you have a small card.

Sure.

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.

Okay.

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.
I think it's not the normal Hugo user, but

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.
This doesn't do that. It just adds a new function.

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. I think it's really useful, but obviously a power user thing.

I'm gonna have to try it out.

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

Okay.

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.

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.
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?

Yep.

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.

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

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.
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.

Thank you.

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? 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?

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.
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.
And now here's, Peter with the security release 0.1 second after it was released.

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

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.
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. You know what I mean?

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

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

Oh, wow. Or something like that.

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.
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.

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

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

be fine.

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

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

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.
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. 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.

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.

Sounds good. Lightning round.

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.
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.
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.

Hey, John.

Yes, sir?

Knock knock.

Who's there? To. To who?

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.
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.
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.
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.
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.
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.
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.

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

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. Link in the show notes if you wanna join that project. I wish I could. That wraps it up for today.

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.

And hopefully in the live episode.

Yes. Program exited.