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

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

Jan 17, 2025â€ĸ37 minâ€ĸEp. 95
--:--
--:--
Listen in podcast apps:
Metacast
Spotify
Youtube
RSS

Episode description

Transcript

Jonathan HallJonathan 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 NehmadShay Nehmad

And I'm Shay Nehmad.

Jonathan HallJonathan Hall

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

Shay NehmadShay 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. 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 HallJonathan Hall

to hear that.

Shay NehmadShay Nehmad

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

Jonathan HallJonathan 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. 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 NehmadShay Nehmad

So I immediately Ordered a box, basically.

Jonathan HallJonathan 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 NehmadShay 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 HallJonathan Hall

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

Shay NehmadShay 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. 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 HallJonathan 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. 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.

Shay NehmadShay 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 HallJonathan Hall

Yep.

Shay NehmadShay 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? 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 HallJonathan Hall

Devnull.

Shay NehmadShay Nehmad

But if you, like, wanna read them.

Jonathan HallJonathan Hall

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

Shay NehmadShay Nehmad

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.

Jonathan HallJonathan Hall

Yeah. Yeah.

Shay NehmadShay 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 HallJonathan Hall

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

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

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 HallJonathan Hall

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

Shay NehmadShay Nehmad

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

Jonathan HallJonathan Hall

Okay.

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

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

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.

Shay NehmadShay 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 HallJonathan Hall

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

Shay NehmadShay Nehmad

Wait. I got l I v g q

Jonathan HallJonathan Hall

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

Shay NehmadShay Nehmad

I knew it. I knew it.

Jonathan HallJonathan 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 NehmadShay 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 HallJonathan Hall

Mhmm.

Shay NehmadShay 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 HallJonathan Hall

Yeah. And there's a lot of time Just

Shay NehmadShay Nehmad

use it today.

Jonathan HallJonathan 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 NehmadShay Nehmad

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

Jonathan HallJonathan Hall

on the thing. And I

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

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?

Jonathan HallJonathan Hall

It's a good argument.

Shay NehmadShay 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 HallJonathan Hall

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

Shay NehmadShay 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 HallJonathan 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.

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

Shay NehmadShay Nehmad

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

Jonathan HallJonathan 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 NehmadShay 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.

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 HallJonathan 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 NehmadShay Nehmad

And just like your mic container.

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

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 NehmadShay Nehmad

Which is something we we don't see very often

Jonathan HallJonathan Hall

Exactly.

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

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

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 NehmadShay Nehmad

No. I think that's important.

Jonathan HallJonathan Hall

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

Shay NehmadShay Nehmad

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

Jonathan HallJonathan Hall

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

Shay NehmadShay Nehmad

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

Jonathan HallJonathan 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. 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 NehmadShay 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 HallJonathan Hall

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

Shay NehmadShay 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 HallJonathan Hall

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

Shay NehmadShay Nehmad

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

Jonathan HallJonathan Hall

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

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

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 HallJonathan Hall

But you know what?

Shay NehmadShay Nehmad

Trello has

Jonathan HallJonathan Hall

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

Shay NehmadShay Nehmad

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

Jonathan HallJonathan 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 NehmadShay Nehmad

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

Jonathan HallJonathan 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 NehmadShay Nehmad

You're saying this post is totally life changing.

Jonathan HallJonathan 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 NehmadShay Nehmad

I think, some

Jonathan HallJonathan Hall

of those things could happen without design at all.

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

Jonathan HallJonathan Hall

Okay.

Shay NehmadShay 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 HallJonathan Hall

Mhmm.

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

Jonathan HallJonathan 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 NehmadShay 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.

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.

Jonathan HallJonathan 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 NehmadShay 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 HallJonathan Hall

That's been a while. You would

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

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

Jonathan HallJonathan Hall

Yep. I like it.

Shay NehmadShay 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 HallJonathan 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 NehmadShay 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. A new release. Yeah. Sounded believable. Am I right?

Jonathan HallJonathan Hall

Yeah. Yeah. Nobody knows that that was planned.

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

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 HallJonathan Hall

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

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

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.

Jonathan HallJonathan Hall

I love that one. Like, put in

Shay NehmadShay Nehmad

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

Jonathan HallJonathan Hall

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

Shay NehmadShay 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? 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 HallJonathan Hall

Mhmm.

Shay NehmadShay Nehmad

Probably more than URLs at this point.

Jonathan HallJonathan 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 NehmadShay 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?

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

Jonathan HallJonathan Hall

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

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

Jonathan HallJonathan Hall

Sure.

Shay NehmadShay 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 HallJonathan Hall

Okay.

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

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

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

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

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

Jonathan HallJonathan Hall

I'm gonna have to try it out.

Shay NehmadShay Nehmad

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

Jonathan HallJonathan Hall

Okay.

Shay NehmadShay 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 HallJonathan 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.

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 NehmadShay Nehmad

Yep.

Jonathan HallJonathan 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 NehmadShay Nehmad

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

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

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 NehmadShay Nehmad

Thank you.

Jonathan HallJonathan 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? 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 NehmadShay 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.

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.

Jonathan HallJonathan Hall

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

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

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?

Jonathan HallJonathan Hall

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

Shay NehmadShay 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 HallJonathan Hall

Oh, wow. Or something like that.

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

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 HallJonathan Hall

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

Shay NehmadShay 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 HallJonathan Hall

be fine.

Shay NehmadShay Nehmad

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

Jonathan HallJonathan Hall

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

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

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.

Jonathan HallJonathan 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 NehmadShay Nehmad

Sounds good. Lightning round.

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

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.

Shay NehmadShay Nehmad

Hey, John.

Jonathan HallJonathan Hall

Yes, sir?

Shay NehmadShay Nehmad

Knock knock.

Jonathan HallJonathan Hall

Who's there? To. To who?

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

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.

Jonathan HallJonathan Hall

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

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

Jonathan HallJonathan 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 NehmadShay Nehmad

And hopefully in the live episode.

Jonathan HallJonathan Hall

Yes. Program exited.

Transcript source: Provided by creator in RSS feed: download file
For the best experience, listen in Metacast app for iOS or Android
Open in Metacast