🌲🌳🌲 If an error falls in forest, and there's no variable around to see it... ?

Shay Nehmad:

This show is supported by you over on Patreon. Stick around till the ad break to hear more about that, about our live episode prep, and some other cool stuff. This is Cup of Go for January 25th 2025. Keep up to date with the important happenings in the Go community in about 15 minutes for a week. I'm Shay Nehmad.

Jonathan Hall:

And I'm Jonathan Hall. 

Shay Nehmad:

Oh, sounding all nice. I'm glad I'm glad to hear that. Long time listeners might remember that for the last few episodes, there's the microphone arc of Jonathan ever since he left Amsterdam. Yes. The Mike saga.

Jonathan Hall:

I should have just done this even before I left Amsterdam, but I don't know. I guess that was, stupid.

Shay Nehmad:

Yeah. Mike saga, by the way, the original name for, original proposed name for The Last Dance that Mike, Michael Jordan, and then I took it personally. And then someone said Zig was better than Go, and I took that personally. Oh. Alright.

Shay Nehmad:

So we have some cool stuff to talk about. We have update on last week's security release, which should come which should be very timely because it came out literally an hour after our last episode. So it's probably the oldest news item that's literally a news item. We wanna talk about GopherCon. We have some proposals we wanna discuss, some discussion topics, just cool, cool stuff.

Shay Nehmad:

You wanna Sure thing. Get us kicked off with the, new release, RC 2.

Jonathan Hall:

Yeah. So 1.24 RC 2 is out. The really, the only thing to talk about there is that it includes all the CVEs that are also included in 1.23.5 and 1.22 point 11, or rather includes the fixes for the CVEs. They didn't just, like, decide to readd those vulnerabilities. But, yeah, it's, 1.24 is coming along.

Jonathan Hall:

So if you're not already running it in your CI pipelines, it's a good idea to to add it there and report any bugs you discover.

Shay Nehmad:

And if you wanna know what the specific CVs are, there's one in crypto, which I don't fully understand. You have certificates with URIs. Right? So a certificate has, like, what what it certificates or where certificates from, right? If you use an IPv6 zone ID, you can bypass some constraints, again, proving that IPv6, really nobody remembers to check.

Shay Nehmad:

No. Everybody forgot about it. I've started learning networking in 2010, which is 15 years ago, and I've been taught that, yeah, in in a couple of years, we're gonna run out of IP addresses, and everybody's gonna use IP v 6. Still hasn't happened. I wouldn't worry about it too much.

Shay Nehmad:

But because you have to implement it, it has security implications because nobody ever tests it, and the format is weird. Just a general observation. In this case, certificates including URIs are not permitted anyway, so it only affects users who weren't working with the spec. So if you are using the crypto package and you're looking at certificates that have URIs in their web PKI, then you have a problem. The more interesting one is, the net HTTP one, where sensitive headers are sent incorrectly.

Shay Nehmad:

So here's a question. What site do you log into often?

Jonathan Hall:

Let's say GitHub.

Shay Nehmad:

Alright. GitHub is good. Well, let me retract that statement. GitHub is a good example.

Jonathan Hall:

Okay.

Shay Nehmad:

I don't wanna say GitHub is good. Fair enough. Yeah. So let's say you need to talk to github.com/something. Mhmm.

Shay Nehmad:

What headers would you need to send them in the HTTP request, I mean?

Jonathan Hall:

I'm assuming there's some sort of auth header. I don't know exactly how their auth works, but probably some authorization header.

Shay Nehmad:

Yeah. So you have some non sensitive headers. Right? Like, referral And, yeah, referral. And, yeah, accept and, like, these whatever.

Shay Nehmad:

Simple things and authorization. So HTTP strips the sensitive headers when you follow a redirect. Let's say GitHub redirects you to some external login page.

Jonathan Hall:

Mhmm.

Shay Nehmad:

Mhmm. And it makes sense that it it would, it wouldn't send the authorization with the redirect. Right? It should drop the sensitive headers. That's how it should work.

Shay Nehmad:

This, vulnerability basically says that if you, receive a subsequent redirect, the sensitive headers get restored.

Jonathan Hall:

Oh, no.

Shay Nehmad:

Yeah. So if you go to GitHub.com and GitHub.com redirects you to some login page slash 1, and then that login page goes to slash login page slash 2, the HTTP headers get restored, incorrectly, of course, following a chain of redirects. On the one hand, this is a really, really cool vulnerability in the HTTP client. On the other hand, I'm like, I don't think it impacts a ton of, people. Like, I don't think the severity is that high, but it's not it's not great.

Shay Nehmad:

Right? You leak authorization header. It's, like, exactly the thing you don't wanna do. But, the thing I'm failing to I think I understood how it works. Right?

Shay Nehmad:

You go to a.com with your authorization header, and then you redirect a.com redirects you, and then b.com, which you got redirected to, can do another redirect and sort of drink your, credentials. Right? Yeah. But for that to actually be malicious, you have to hack into a.com and change the redirect to your site. Does that does that make sense as the attacker?

Shay Nehmad:

So these credentials might have got leaked to to a a a third party site, but that third party site, you know, someone redirected you there on purpose, and that someone already has your credentials. It's kind of hard to me for me to follow, how you can actually perform an attack here unless you already attack the original domain and, like, install something there. And if you did that, you can just grab stuff from there. Right?

Jonathan Hall:

You were there. Right. Right.

Shay Nehmad:

So it's a cool vulnerability. I'm not sure what's the attack path or attack surface, if that makes sense. But it's good that that it's closed. And if you any of the things we said worried you, go update because it's in go 123.5 and go 122.11.

Jonathan Hall:

And the, the note here says thanks to Kyle Seeley for reporting this issue. I just had to Google him to see if, if he's done anything else cool about Go. And I see a a rocking guitarist, on on the front page of Google, so I don't know if it's the same guy. I'm guessing not. But if if it is the same guy, then, good job, Kyle, for, taking time off your your rock star shows to to do security reporting.

Shay Nehmad:

Hey. I I, play guitar. Can I do a side note? This might get edited out. I, sold my guitar.

Shay Nehmad:

Oh. My custom Les Paul, Gibson custom shop that I had the guy signature who who finished it at the the Gibson shop. It was a beautiful guitar, man. I sold it to a good guy, though.

Jonathan Hall:

Okay. Well, that's

Shay Nehmad:

good. Sold it to a good guy. He seemed to like, he's gonna have a lot of fun, playing it. And I I haven't touched it in a while. So like like, sensitive headers, good things get forwarded, I guess.

Jonathan Hall:

Yeah. So that's that's it for our releases. But something else has been released lately, and that is the CFP, all 4 presentation papers. We've had this debate before. Anyway, the CFP for GopherCon US is open now through March 3.

Jonathan Hall:

GopherCon US will be in New York. Did I did I say that right? I don't know how to pick up their accent correctly. In New York, New York this year. I'm thinking about trying to go.

Jonathan Hall:

I've already talked to my wife about it. She's never been to New York before. How about you, Shai? What are the chances that you might be in New York in August?

Shay Nehmad:

August. I don't know. I'll, I'll be in California that time.

Jonathan Hall:

Uh-huh.

Shay Nehmad:

But Gopher Con, that's that's tempting. And New York is also a lot of fun. Have you been before? Yes. I've been as a tourist.

Shay Nehmad:

I went to the whole everything that's touristy. I went to the Soup Nazi. I went to Lady of Liberty, and I went, talking about Kyle Seeley, Kyle, if you're still lost listening and you're actually the guitarist, to the best, pedal shop in the world. And the same guy I told you I told I sold my guitar to, I sold him, the 2 best pedals I own, effects pedals I own owned,

Jonathan Hall:

as well. Now you can't edit out the guitar bit because you've referred to it again. So Yeah.

Shay Nehmad:

Yeah. It's no problem. Yeah. So no. I don't plan to, but go for con.

Shay Nehmad:

That's tempting. What's the what's on the schedule? Like, do they have a keynote or anything?

Jonathan Hall:

Nothing yet. It's too early. It's it's too early. So maybe you if you wanna submit a CFP.

Shay Nehmad:

Oh, interesting. Oh, maybe us. Maybe we can do, like, a go a cup of go booth at GopherCon. Just beyond this the dates themselves, also important to highlight, you know, that, and there's a call for speakers. It's not only, like, big talks.

Shay Nehmad:

You can submit lightning talks as well, and they'll be open in a few months. Right? The lightning talks, they only get opened on June. Mhmm. So you have a lot of time.

Shay Nehmad:

There are nonprofit tickets, student tickets, start up tickets, corporate tickets. They have, like, tiers. They have discounts of groups. So if you wanna come in a group, that works really well. And, yeah, it's not super cheap.

Jonathan Hall:

No.

Shay Nehmad:

It's not a super cheap event, but, you know, the the the higher the the later you get your ticket, the pricier it's gonna be, and it's gonna like, the current price ends on February 18th. So you don't actually, you don't have a lot of time to grab the, like, early price.

Jonathan Hall:

Yeah. You're on it.

Shay Nehmad:

If you know you're gonna go, buy the the thing now. Cool. Looks like there are some speakers already, including, Miki Tabekka was already on the show, our first, guest ever.

Jonathan Hall:

Well, if he can make it, surely you can try.

Shay Nehmad:

Maybe. Maybe.

Jonathan Hall:

Anyway, maybe, maybe you or I will be in New York. It'll be fun if it happens.

Shay Nehmad:

We'll see. You do have a lot of time to decide. But, again, like I said, if you know you're gonna go until February, 18th is the early price. So you don't know if you're gonna go yet. Right?

Jonathan Hall:

I don't know. I mean, it's it's not as far for me.

Shay Nehmad:

So is it a question mark?

Jonathan Hall:

There is a question mark involved for sure.

Shay Nehmad:

There is a question mark.

Jonathan Hall:

Mhmm.

Shay Nehmad:

Well, I'm sorry, but you can't use that anymore.

Jonathan Hall:

I can't use it anymore.

Shay Nehmad:

I see a proposal to turn the question mark into a keyword.

Jonathan Hall:

Oh, yes.

Shay Nehmad:

This is a pretty, long discussion as far as Go issues go, right, with many, many, many, related proposals, including a lot in go 2. And it it speaks to something which I think is is not super important, so I would love to keep, like, the discussion about it pretty short. But it's about reducing, error handling boilerplate. Basically, instead of doing, like, if is different than nil, you just do question mark. Right?

Shay Nehmad:

Yeah. Very similar to how you have in Rust, like, question mark instead of unwrap or in many other languages.

Jonathan Hall:

Mhmm.

Shay Nehmad:

So, you know, a function that, like, looks like, you know, copy file where you do something open, something create, and copy, and then close. And for each one, you need to check the errors, you just do OSI open s r c then question mark instead of different from nil. And if you return the error even, like, one level up, it's very very short. It's just call the function, question mark. That's it.

Shay Nehmad:

Yeah. What do you think about this?

Jonathan Hall:

When I first read the proposal, I read the entire proposal, not all the comments. I read the entire proposal first when I was first saw it about 2 weeks ago. I had mixed feelings about it. There are a couple of things I like about it. Like I said, mixed feelings, so I wasn't sure.

Jonathan Hall:

I have since decided I don't like it. Mhmm. And so I'm I'm I'm in good company along with 438 other people who have downvoted it compared to the 168 who have upvoted it. I don't think it solves a problem that's worth solving, and and the way it solves it, I think, is actually worse. So, like, in general, I think that this is to help newcomers to language who feel like their verbosity is a is a detriment.

Jonathan Hall:

And and there are certainly are times where I I think it is and and this would solve some of those cases. But in general, I think it adds something that's less readable and easier to miss and and to to appease the wrong people. Like, it's not gonna help the expert Go developers who decided that they're they're okay with the long form error handling. It's not really gonna help them. It's gonna help the the newbies by making the language more complicated.

Jonathan Hall:

So I feel like it's kinda solving the wrong problem in the wrong way. However, I didn't like generics at first, and I've come to like them. So I do reserve the right to change my mind if this gets adopted, and and I play with it for a while, and and I may change my mind.

Shay Nehmad:

There's a lot of comments here, like, a lot a lot a lot of comments here. The cost of generating code, like writing and or generating it, is very low. It was always low. It was never the thing to optimize for, but now it's lower than ever. Right?

Shay Nehmad:

With the language server getting better and, AI completion becoming faster and cheaper. And so that's definitely not the thing to optimize for. So it's not for people who want to write Go code and, like, make them faster, like reduce boilerplate. Now when you say reduce boilerplate, it sort of implies that without the boilerplate, it's as understandable. And to me, I'm I'm not, like, a 100% sure what what the what how I would feel about reading code that looks like this because I haven't read a lot of code that looks like this.

Shay Nehmad:

But when I tried to read Rust, where you can do error handling, like unwrap with question mark, It was it wasn't nicer. Like, it was harder to understand overall. It was it was fewer characters, fewer symbols on the screen, but they were describing a pretty complicated thing. Right? Because the normal flow, that's never hard to read.

Shay Nehmad:

People wouldn't call, like, you know, calling a function, opening and closing the parenthesis, boilerplate that you don't need that's overcomplicated. Right? Because you sort of wanna say, I'm calling a thing here. This is I how I communicate it. Even though, theoretically, we could, eliminate the open parenthesis, the closed parenthesis if you don't pass any arguments or something like that.

Shay Nehmad:

Mhmm. So it doesn't make it readable more readable for me. And it also, again, does a thing that I really like that Go doesn't usually do, which is 2 possible ways to do one thing because this is not in place of, you know, getting an error and seeing how it looks. The only thing it actually does is reduce one line. Right?

Shay Nehmad:

That's basically it. You get you call a function, and you have to get the error. And then if the error is different from nil, you do something.

Jonathan Hall:

I I think if you have a function that calls a bunch of other functions that only return an error, this would improve readability in that case. And and so that's kind of their first example here. One one of the first examples here. Right? They have this run function that calls start question mark, wait question mark, return nil.

Jonathan Hall:

That's actually probably easier to read than error colon equals start. If error does not equal nil, return error. Error equals weight. If error does not equal nil, return nil. You know, so in that particular example, I do believe that this question marks in text re improves readability just because you can see exactly it's okay.

Jonathan Hall:

This function calls start and it calls wait and then it's done. If there's an error, it turns it. So so I I do see an argument for reboot readability in very specific circumstances. But if you have a function that's more like a real life function where sometimes it you call a function that returns 3 things, one of which is an error. Then at other times, it calls something that's only an error.

Jonathan Hall:

And other times, it calls something that has no error value at all, and you have these all intermixed together. Then you have to go hunting for, is there a question mark there and should there be 1? And, you know, you have to check the function signature or rely on your, your static analysis tools on your IDE or whatever to to tell you that you're actually checking errors that should be checked. I think it makes it harder to read in in in real life sort of situations.

Shay Nehmad:

To be fair, by the way, this is literally just reducing the boilerplate. It's not as loaded as the question mark is in other languages like Rust. Like, it doesn't do a whole lot of things. It just it's inspired by Rust.

Jonathan Hall:

Right. Right.

Shay Nehmad:

But it's it's only at the end, and it only, like it it literally replaces the get the error and check if it's different from nil. Right? Like, get a value check if it's different from nil.

Jonathan Hall:

And and it, additionally, instantiates a magic variable, which is the thing I hate the most about this proposal, actually. So if your question mark is followed by a code block, so you wanna do your own error handling, then it magically instantiates a locally scoped error variable to which is the only time Go ever does that. I hate it. I I that I think that particular aspect could be fixed. You could just put a parenthesis error, whatever, if you want.

Jonathan Hall:

Yeah. It's not nearly as magical as in Rust, but it's it's still magical enough to not feel like GoToMe.

Shay Nehmad:

Yeah. There there are some other, nits and discussion and, like, ways this discussion could go. Do we need a block form? And is the question mark a good thing to use? Because some languages, you know, in Rust, it's used for error handling, but in TypeScript is used to represent, like, non null in a object destructuring.

Shay Nehmad:

So maybe use, a keyword, like try or catch or guard or, like, something that indicates that instead of question mark. The main observation I think I have from this discussion, it's that it's very, very, very long for something that's not super important. And I wouldn't I I'd be okay if it got merged, and I'd be okay if it didn't got merged. Like, I imagine it being as a 5 minute update in like, if it did get merged, it would be in my next Go meetup. Like, in the in the in GopherCon, there isn't going to be a talk all about the new question mark decorator because there isn't a a new question mark operator because there isn't anything to say about it.

Shay Nehmad:

It's just like, oh, you remember how you had to check errors? Now you just do question mark. It does the same. It's very, very simple. But, yeah, I'm actually against it as well.

Shay Nehmad:

So now we're minus, 440. Maybe I tipped the scale enough. Maybe there's some magic number that if you get to number of downvotes.

Jonathan Hall:

So so what do you think? What's what's your prediction? Is this gonna get merged? Never. I don't think it is.

Shay Nehmad:

Never. Never.

Jonathan Hall:

It's a good discussion. It's interesting, but I hope I hope it does.

Shay Nehmad:

We'll see. I I think it's interesting to challenge, like, very basic things in the language here and there, But it might be very basic. I might be misunderstanding, but I think there are way more important things to resolve. Like, it would help more people to localize the Go, website to a different language, right, than to continue bickering about the error handling. The error handling is fine.

Jonathan Hall:

Speaking of more important things. Yes. So he also wrote another proposal, that I I actually do like. It's for a new package called sync v 2. You ever use the sync package?

Jonathan Hall:

Of course.

Shay Nehmad:

I do. Single slide and and mutexes and

Jonathan Hall:

Yeah. You use mutexes, but you use a a weight group.

Shay Nehmad:

Of course.

Jonathan Hall:

And, do you use sync map? No. Yeah. Because it's

Shay Nehmad:

ugly. I don't remember why, but I I always use a different thing.

Jonathan Hall:

So sync sync map is annoying because, you have to it was written long ago back in the dark ages before generics. So you have to convert everything. You know, you you read some

Shay Nehmad:

Yeah. Interface. And

Jonathan Hall:

You have to yeah. Do a type conversion and everything. So, anyway, the proposal is to add a new sync v two package, which has generics based map and a few other tweaks too. But I think the generics based map is is the big one. So I'm actually looking forward to this.

Jonathan Hall:

I think I would probably use a sync map all the time if I could tie specific types to it, which you can with, with this proposed version.

Shay Nehmad:

I really like how we're building on his previous things. Like, listeners or people who follow the language might remember that there was a big watershed moment where, we released the first v two package in the standard library. Right? Brand v 2. And Ian here saying, hey.

Shay Nehmad:

This has been successful. Let's add another v two package. Let's like, we can fix things in the standard library. That's fine. Generally, obviously, I like the improvement.

Shay Nehmad:

Specifically, I'm I'm I'm sort of worried about this trend of let's make another v 2. The previous v 2 was very, very justified. You wanna do you remember why they released the Rand v 2?

Jonathan Hall:

I don't remember specifically. I mean, the the old RAN API was just terrible.

Shay Nehmad:

So it was the API, but it was also security. It had a a generator that had, like, a shitty seed or something like that, and you couldn't change it because it would be breaking.

Jonathan Hall:

Yeah. Right.

Shay Nehmad:

And I don't while while I very much like this API, I I have a question. Why put it in the standard library? Like, why why can't I can just use a package? Right?

Jonathan Hall:

Surely, you can. And and many people do.

Shay Nehmad:

I I

Jonathan Hall:

think this is

Shay Nehmad:

Why add another thing to the center library? Well, I

Jonathan Hall:

I think part I mean, some reasons I can think of, it's already there for 1, but in a version in a format that's probably not very usable. So replacing with a usable version is is a nice thing to do. I think the main arguments for putting this in our library are to to get a standardized good implementation, although not all things in the center library are good implementations. JSON is a good example. Although that's hopefully changing with a new v two coming up before too long as well.

Jonathan Hall:

And in some cases and I don't know if this applies.

Shay Nehmad:

So let me let me ask you another thing. Yeah. Why not add, these new generic maps to the original package?

Jonathan Hall:

You could, but then you'd need to have 2 different versions of the same,

Shay Nehmad:

map and I don't know. Map or auth.

Jonathan Hall:

Right? I think that gets confusing. A lot more confusing than a v 2, than a package name.

Shay Nehmad:

Mhmm.

Jonathan Hall:

But I could see an argument for it.

Shay Nehmad:

I'm I'm I'm Some of

Jonathan Hall:

these things have been added. There are if if I'm not mistaken, let me double check. But I believe there are yeah. There there are some generic functions in the sync package that were added later, like once value and once values. So I don't know if those need to change.

Jonathan Hall:

If the map is the big thing, you could add a a generic map or something. I don't know what you call it.

Shay Nehmad:

And this proposal is still, like, you know, doesn't have anybody assigned, doesn't have a label, doesn't have anything. So it's a good time it's a good early time to add your opinion. Obviously, I I really like the new API. I'm just a bit wary about, like, what v two packages in the standard library will be used for. Because this serve a slippery slope.

Shay Nehmad:

Right? Can you imagine sync v 8 in the standard library of a language? What is that? How does that make you feel? Right?

Jonathan Hall:

That one finally supports enums and the new error handling syntax.

Shay Nehmad:

Yeah. And the new REPL. Actually, syncv2 just introduces a v 2, sync v 8 actually introduces a v 8 JavaScript engine inside the standard library. So cool. One proposal about error handling and one proposal about, a new sync v 2 package.

Shay Nehmad:

1 actually will improve the lives of Go developers, and one got, like, 800 comments. Guess which is which?

Jonathan Hall:

Well, I I think that pretty well wraps us up for the news for the week. There's a lot more we could be talking about, but we ramble a lot. So I hope can wait till next week to hear some of our backlog items. Stick around for a little bit of an update on some of our analytics Patreon members, and then we'll round it out with a quick lightning round after the break. As we mentioned at the top of the show, this show is supported by our listeners.

Jonathan Hall:

If you'd like to help support the show, you can join us on Patreon. And I do wanna do a big shout out to Jamie who joined us as a Patreon supporter at the $10 level, which we don't even ask for. We asked for $8. So thanks for the extra 25%, Jamie. We also got a great Patreon comment from Jose who says, hi.

Jonathan Hall:

I really really like your content and the upbeat mood. I'm a front end developer using React and TypeScript. Now do a little bit of back end with Kotlin, not his favorite apparently, and is, looking to change. Apart from Go, he's learning Ocaml and h t max and other esoteric stuff. Nice t shirt, by the way.

Jonathan Hall:

So you're gonna wanna get a t shirt too because it is a nice t shirt. So for all of that, to join us on Patreon, to get a t shirt, to get a mug, head over to cupago.dev.

Shay Nehmad:

And to pay on Kotlin. There's a dedicated hate for Kotlin page.

Jonathan Hall:

You can also join us, of course, on, our on the Go for Slack where we have, just casual chat about Go mostly. You can post links there to your favorite blog about Go over the week. We might mention it on the show. That's on the Go for Slack in the cupago channel, kebab case, cup dash o dash go. What what what am I missing, Shai?

Jonathan Hall:

Have I covered all the bases?

Shay Nehmad:

So almost all of them. We have, a live episode soon Oh, yes. Can't forget that. Which is very, very exciting. We have published 96 episodes so far.

Shay Nehmad:

This, the one you're listening to right now should be the 97th. So in 3 episodes from what you're listening right now, we're gonna do a live episode. We're not a 100% sure what the details are gonna be yet. Like, where's the and place. How we're gonna record it exactly, but we know the time.

Shay Nehmad:

It's February 13th at 1800 UTC. 6 PM UTC. We thought it would be good, like, late enough in the in Europe so the Americans could join as well, like, if they wanna join in the morning. Mhmm. And it's a Thursday, so, like, towards the end of the week.

Shay Nehmad:

If you're

Jonathan Hall:

in India or Australia, we're sorry. We can't accommodate everybody.

Shay Nehmad:

Yeah. Although it's not that late. India is is kinda rough. It's it's, 3 and a half hours. Did you know that?

Shay Nehmad:

The lead time has extra 30 minutes. Always made things hard when I needed to set up, like, design meetings with my India team. Mhmm. So, yeah. It's gonna we this is UTC.

Shay Nehmad:

It's time zone it's a very easy time zone to understand. Just open your log editor right now. Look at the logs that and do that calculation relatively. Yeah. So we're planning the Go 124 release party, although it it we don't know if it's gonna get released by then.

Shay Nehmad:

If you wanna help it get released by then, go install the RC 2 candidate. Right? And I don't know. Try to find the bugs. Looking, by the way, at our podcast dashboard, I can't help but notice another almost round number.

Jonathan Hall:

Mhmm. Which number is that? Do we have 6 listeners now?

Shay Nehmad:

All time actually, we have 559 subscribers. But all time downloads, we are almost almost almost at a 100,000.

Jonathan Hall:

I wonder how long know what? When we started this podcast, I never would have guessed we would even get close to that number.

Shay Nehmad:

Yeah. No way, man. So thanks a lot to y'all for, like, listening and downloading. These numbers are, like, generally finicky. Right?

Shay Nehmad:

They don't they don't mean a lot normally.

Jonathan Hall:

And They're like the the vanity metrics of vanity metrics.

Shay Nehmad:

Yeah. But it it's still, nice because I know that there are people who actually listen. Right? Because people talk to me about the show. So Yeah.

Shay Nehmad:

Yeah. It's it's it's very nice. And if you wanna help us reach that 100 k, please do share the show with your friends, coworkers, family members, etcetera, etcetera, co students. Just, spread the show around. We're we're coming out we're coming up on a few exciting milestones here with, a 100 episodes and a 100000 downloads.

Shay Nehmad:

It's pretty amazing.

Jonathan Hall:

Pretty cool.

Shay Nehmad:

That's it for our time break.

Jonathan Hall:

Yeah. Let's jump into a quick lightning round and, wrap the show up.

Shay Nehmad:

For sure. Lightning Round.

Jonathan Hall:

Alright. First off on the lightning round, I found a tool that I think is kinda cool. It's from our friends over at Charm Bracelet who make a lot of cool interesting things. It's called VHS. Do you know what VHS is, Shai?

Jonathan Hall:

Are are you old enough to know what that is? Yeah. Yeah. Back before DVDs, back before streaming, we used VHS tapes to watch videos. Right?

Jonathan Hall:

So what VHS does is it, it's a little sort of language and tool to build animated GIFs of console things. So if you have a little demo that you wanna, you know, show, here's how you compile a program or here's how you, you know, do something that would be done on the console. It lets you it helps you generate these animated GIFs for that that you can then upload to your social media or whatever and look really spiffy. So that's kind of a cool tool. That's that's my pick for the week.

Jonathan Hall:

Nice.

Shay Nehmad:

So VHS because you, like, record it. Yeah. Cool. And there's a new release this week, which is why you mentioned it. Right?

Jonathan Hall:

Which is why I mentioned it. Yes. Oh, all

Shay Nehmad:

the, charm bracelet stuff always looks so nice. It makes me want to build like terminal UIs. Well, my, thing for the lightning round is OpenAI Go. There's an official SDK, for OpenAI API for Go, from OpenAI called, boringly enough, open AI dash go. So if you're trying to do work with, like, LLM ish applications, it's a release.

Shay Nehmad:

It's currently in beta, so minor breaking changes may occur. And they're really trying to, like, do a a full on SDK with, you know, documentation, a lot of documentation, and the the files themselves look pretty good. Looks like a pretty well done SDK released by Stainless. I don't know if you know about them, but they I I think they're an API SDK company that OpenAI, like, bought or invested in, like, a pretty new startup around the scene, with a spiffy site and spiffy SDKs. So if you're doing Go stuff with a AI with OpenAI specifically, now you have an official SDK, and you don't have to use some weird ass library.

Jonathan Hall:

So my big question here is is there a, a REST API for it so that I can use open API Go with open AI Go?

Shay Nehmad:

I think you can. I think that's how they generated this SDK, actually. Although it might be, like, a beautifully handcrafted, it seems like the top contributor is actually

Jonathan Hall:

You know it was written by Chad GPT.

Shay Nehmad:

Yeah. 100%. One other thing I wanted to, bring to the lighting ground, and it's a lighting ground pick not because it's not interesting, but because it's not go, is Dreams of Code, Elliott, who was on the show, released a new YouTube video, which I really, really liked, which is all about, setting up, deployment to a v v a VPS to a server without Docker. Can you even imagine just your binary being naked on a server? And it's it really showcases, other than very interesting, like, DevOps stuff, the up level in, Elliott's, like, editing skills and whatever.

Shay Nehmad:

This is, like, legitimately a short movie, a short film about deploying to, VPS's.

Jonathan Hall:

I wonder if you wrote it using VHS.

Shay Nehmad:

I guess you'll have to watch.

Jonathan Hall:

I'll have to watch and see.

Shay Nehmad:

Link in the show notes.

Jonathan Hall:

I think that wraps it up for this week. Thanks for listening. We'll talk to you next week.

Shay Nehmad:

Program exited. Program exited. Goodbye.

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
🌲🌳🌲 If an error falls in forest, and there's no variable around to see it... ?
Broadcast by