Cup o' Go

For Patreon, Swag, past episodes, and more, visit https://cupogo.dev/!
★ Support this podcast on Patreon ★

Creators & Guests

Host
Shay Nehmad
Engineering Enablement Architect @ Orca

What is Cup o' Go?

Stay up to date with the Go community in about 15 minutes per week

Shay Nehmad:

This show is supported by you. Stick around till the end to hear more about that. This is CoupaGo for August 3, 2024. Keep up to date with the important happenings in the Go community in about 15 minutes per week. I'm Shayne Ahmad, and I'm here alone today.

Shay Nehmad:

August does, what it does to schedules, and we've had a bit of a scheduling mishap. So this episode is all me. I hope you'll I hope you'll like it, and, next week, we should be good, normally. So let's get into it with, the first, in my opinion, the first big news item on the docket, the leadership change in the Go project. So if you've been around the Go project proposal process or if you've listened to the show, you've probably mentioned, you've probably heard us mention, the name Russ Cox.

Shay Nehmad:

And then a significant update to just the Go community, Russ has announced that he's stepping down as the Go tech lead. Starting September 1st, Austin Clements will take over as the tech lead for both Go teams at Google and the Go overall overall, the Go project. And since Austin, comes from leading the compiler to toolchain runtime and releases a process, Cherry, Mui will step up there. And this marks end the end for 12 plus years, for us as the lead of the Go project. This is interesting.

Shay Nehmad:

Other languages, you know, they usually have, like, BDFLs. And Russ mentioned that in his post, that he thinks that BDFLs aren't great for the,

Shay Nehmad:

for languages. And once, you know, leaders of technical projects that have done so for a while step down,

Shay Nehmad:

it makes, you know it's necessary for growth, basically. And, overall, the community, and I can safely say myself as well, you know, have responded just with gratitude. Thanks, Russ, for all your contributions. We're happy that you're still gonna stick around. Russ is not leaving the Groove project.

Shay Nehmad:

He's just taking a different role, focusing more on just individual contribution, things like Gabby, which we've reported on in the past.

Shay Nehmad:

And, you know, the the community also used this chance to,

Shay Nehmad:

you know, support Austin and Cherry and say, hey. Good luck. We're we're we got you. Overall, a very positive, announcement, I think. There have been also calls for, like, increased, communication, increased transparency, restarting the compiler, meeting notes, restarting the compiler, the run time office hours, things like that.

Shay Nehmad:

Overall, I think this is a really positive, step. And again, another chance to, say thanks to Russ for all his contributions for all these years. A

Shay Nehmad:

lot of what we're talking about wouldn't have happened without,

Shay Nehmad:

his leadership. But he's still hanging around, still, letting us know about proposals. So let's talk about some proposals. The first proposal I wanna highlight is, an accepted one. So you can look forward to, this proposal joining the standard library soon.

Shay Nehmad:

It's also pretty simple. It's a function called the text in the crypto, rand library. The function is very simple.

Shay Nehmad:

It returns, text, random text,

Shay Nehmad:

with, you know, specific, alphabet of, base 32. So, basically, very

Shay Nehmad:

simple, you know, alphabet, like a to, zed, and some numbers.

Shay Nehmad:

But the issue itself, the proposal, is a very interesting, like, window into the GoProposal process, and I suggest you read it.

Shay Nehmad:

The, the suggestion was done, by the way, by Filippo, which we've had on the show before. And

Shay Nehmad:

it's a big discussion about the API. How simple can we make it? This entire proposal is an exercise in simplicity. The original approach was, let's offer a functional called string that gets an alphabet, and then returns a random string out of that alphabet that is, that has enough entropy to make root force impossible, basically, or, you know, infeasible, at least, which is useful if you need to generate,

Shay Nehmad:

you know, passwords and things like that. And

Shay Nehmad:

as the proposal process went along, people suggested some ways to make the API more complex. Add the option for length. Oh, what happens if I pass a string with, just a a a? And then, you know, the discussion sort of shows how we make the, API more simple and more readable. So the name changed from string to text,

Shay Nehmad:

and the the there was

Shay Nehmad:

a big discussion on adding length, adding entropy as a parameters, why do we even allow to pass the string. And then, because no one was able to come up with a reasonable use case for for selecting an alphabet for a random password generation, the the team just decided to drop that parameter completely. You know, and since this is a simple API, this was accepted with a caveat that other features like custom alphabets, custom length, etcetera, are basically deferred to future proposals. If someone will need it, they can create a new proposal and see, you know, how it works. Because it seems like, the text function with no parameters,

Shay Nehmad:

is very, very useful,

Shay Nehmad:

and you don't need anything else. One thing to consider is that in the future, you know, 128 bits of entropy, or of randomness, I should say, might not be enough to prevent brute force attacks. So this, function text may return a longer text in the future, to maintain the property of being, cryptographically, random. So this proposal was accepted. We should probably see it soon.

Shay Nehmad:

It's actually a pretty simple function to implement. Another related, cryptography related proposals that I found interesting, which is a likely decline, and this is your chance to, you know, change the future, basically. 8 years ago, Dave Anderson proposed adding, a Go implementation for the crypt, 3, compatible password generation. What is crypt 3? So if you try to search for it, you can find it on Linux man pages, and it's basically a password encryption function, that's used in /utc/shadow, in Linux.

Shay Nehmad:

The need for it in the standard library, if you need to install things in slash etc/shadow, you might want it, and back then, when they've looked for it, you only found some abandoned repos to do it. So this was 8 years ago, and it had a few, you know, people pop in now and then. Was like, hey. What about it? What's going on?

Shay Nehmad:

And then, Raul Roland from the

Shay Nehmad:

Go security team sort of gave his, 2¢.

Shay Nehmad:

Does this really need to be in the standard library? The bar is higher than, like, 8 years ago. And the what I really liked is that the original poster, Dave, just says that, hey, from since 8 years ago, I don't remember what I wanted to. I didn't actually need this function. I found some, libraries that can do it, so I'm not sure I I need this.

Shay Nehmad:

Feature wise, it's a lot better than what existed, 8 years ago. The problem with including it, other than the bar just being higher for this being necessary, is crib 3 is is m d 5 based, so, you know, including it in the standard library sort of goes against goes thing of being secure by default. So overall, since the discussion, doesn't go towards, hey, this is super neat, necessary, and there is a a third party library crypt/crypt. Looks like it's a likely decline. This means that if you really, really want this, now's your chance to jump on this, thread, link in the show notes, and be like, hey.

Shay Nehmad:

Hey. Stop this train. I really want this in the standard library. So this is a proposal that's likely to be declined, and, you know, now is your chance to change that if you wanna join. Last proposal I wanna discuss is an active one that I actually commented on, which is adding Go telemetry, increasing the scope of GoTelemetry to include, Delve.

Shay Nehmad:

So there are a few things to unpack here. First of all, what is Go telemetry? We talked about this, a few times on the show, but in case you missed it, Go telemetry, is a new feature in in Go where it sends private, telemetry to the Go team to help them direct the Go project towards what the community is actually doing. It's opt in, and if you haven't opted in yet, we highly recommend you

Shay Nehmad:

do it since it seems like it's a really good privacy aware implementation, and, obviously,

Shay Nehmad:

in, you know, their development.

Shay Nehmad:

However, Delve doesn't have Go telemetry, and

Shay Nehmad:

this proposal is all about adding that. What is Delve? Delve is the Go debugger. You might have used it, but you don't know that you have. It's, the one that's integrated into Versus Code, and Delve is currently excluded from Go telemetry.

Shay Nehmad:

And if you add it, you know, the GoDev team could get more insight towards which debugging features people use, what are the trends that are going on, etcetera, etcetera. The proposal has 3 parts, updating the documentation, adding telemetry in Delve using the, telemetry counter API, and the proposal says that the Delve team decides what and how to measure.

Shay Nehmad:

And the Go team and the Delve integrators can propose new metrics, in the Delve issue tracker.

Shay Nehmad:

Finally, adding the counters that were added to the telemetry upload configuration, following the official, you know, telemetry proposal process. So to me, it's interesting which data points specifically are missing for the Delve team. I wouldn't know what telemetry to collect to improve a a debugger. And also interesting to see if, this considers Golang users as well, or if they use a a different debugger. But overall, this looks like a really good proposal.

Shay Nehmad:

I upvoted it. 8 other people have upvoted it. And it's pretty recent. So if you are, you know, one of

Shay Nehmad:

Delve's deepest users or if you really care about telemetry, now's a

Shay Nehmad:

good chance to, like, jump on this discussion as well. I think it's also it would be interesting since this whole telemetry thing is really new, how the process for, like, adding telemetry looks like, etcetera, etcetera. Alright. This does it for proposals. This, show is, kinda tough to do alone, but I I hope you're still with me.

Shay Nehmad:

I wanna highlight some, community things that are going on. So the first thing is that the GopherCon EU 2024 videos are online. This is, in my opinion, a really, really good resource for, learning about Go, just these, like, conference talks. If you have a pretty, like, boring, day at work, maybe putting them, you know, in your headphones while you're working, or if you wanna do it a bit more actively, doing it in your guild at work could be really nice, asking each member to watch one of the lectures and then having, like, a lightning round where, everybody gives, like, 2, 3 minutes summary of the video that they watched. Could be a really cool way to, like, upscale the team.

Shay Nehmad:

In my opinion, if you have to pick one video, it's actually not about go. It's Hila Fish's technical documentation talk, which is really super good, fundamentals talk. So the playlist, link is in the show notes, and, you can just start watching them. There's a lot of Go content

Shay Nehmad:

out there. This show is tries to be, you know, your sort

Shay Nehmad:

of shortened news version of it. So we can't go off over every single lecture that went there, obviously. And I couldn't go there because I was at DevOpsDays Amsterdam. I think Jonathan was traveling as well or something like that. But there just from the, you know, titles, there looks like there's a ton of really, really good stuff.

Shay Nehmad:

Rethinking domain driven design, deep dive into DB connection, building AI applications in Go, obviously hot right now. Go Time podcast had, had an episode, shout out Go Time podcast.

Shay Nehmad:

I think our, sort of our bigger brother,

Shay Nehmad:

or bigger sister, podcast thing, and Go AntiPatterns, a panel about Go and DevOps, securing containers. Like, there's a whole,

Shay Nehmad:

smorgasbord of lectures that, like, every one of them would have been interesting enough to watch it work. So we highly recommend, just checking it out then and, you

Shay Nehmad:

know, if there's a specific lecture here you listen to and you want us to, talk about because you think it's worth, talking about, maybe interview the speakers, let us know in the in the channel. We'll definitely try to make that happen. Last thing I wanna highlight is Go game development. So in a recent episode, Jonathan and I talked a bit about Go game development, and we basically said we don't know, enough about it, but sounds like

Shay Nehmad:

it wouldn't be good because x y zed. Not talking,

Shay Nehmad:

you know, not very authoritatively saying goes bad for game development, but just not really knowing a whole

Shay Nehmad:

lot about it. I'm interesting

Shay Nehmad:

interested in game development, planning to do a game jam, in 2 weeks time, the GMTK, game jam. We basically expressed sorta negative opinions about, Go and game development. I got a super interesting email from Maximilian Patterson, a software engineer from the mid western US. Basically, he convinced me that we undersold Go's capability in game development, way back in episode 67. There are really a few cool links here.

Shay Nehmad:

The most important one is Bear's restaurant, which I knew about. So, apparently, there have been commercial successes, you know, on the well, you developed using Go. Bear's restaurant being, you know, the the most famous one. It's even on Switch. There have been people building 3 d games in Go, as well.

Shay Nehmad:

There's Mythfall, which was developed in Go, a a big MMO that looks super cool, but it's still, pretty alpha. And I found 2 I wanted to, you know, keeping in theme with the show, sort of give 2 news items about Go and game development. So first one is, a new minor version for Ebit engine, version 2.7.8. Overall, the 2.7, miners, like, patch releases look like they do a lot of, standard, like, bug fixing. The last one had, fixing a memory leak and fixing an issue where text was unintentionally input twice, fixing a crash when dropping an HTML element, and, you know, multiple identical controller on Windows issues.

Shay Nehmad:

Overall, sounds like really difficult game development bugs. So looks like they're, you know, they're polishing

Shay Nehmad:

the engine more and more. EbitEngine, if you

Shay Nehmad:

don't know, is an open source game engine, Forgo, which developed in in which many developers, did their production ready, games, production level games, with the, again, highlight, I think, of the entire, Go development community at the moment being Bear's Restaurant. Funnily enough, I, you know, I played Bear's Restaurant. It's, the story, and the art as they highlight, not exactly the technical fidelity. But it is a great game, which means, you know, this, framework doesn't limit creativity for sure. So a new minor version for Ebid engine, which fixes a few crashes.

Shay Nehmad:

I guess if you're building your game in Ebid engine now, make sure to upgrade to avoid these. And the second thing I wanna highlight about Go game development is a new channel, I found called Coding with Sphere. It's, someone on YouTube who's doing, game development videos, tutorials, devlogs, commentaries, etcetera. And, you know, they have, very recently started a series, a video each week about RPG in Go. A really, like, 10 to 15 minute video tutorial about, doing basic stuff you need to do for game development.

Shay Nehmad:

So, you know, setup, drawing, moving sprites, managing entities, creating and loading maps and things like that. Really cool stuff, and the the I guess the intro video is called I'm Making a Game in Go, My Experience. I highly recommend just watching it. It's really cool to see someone nerding out, about which language to pick. I know I'm I'm in a similar scenario, right now before the game jam.

Shay Nehmad:

I'm wondering if I should, like, just do Unity and c sharp, which I already know, and try to get something out. Or, what I'm aiming towards right now, doing a bevy in Rust just because I I I'm doing the game jam with my brother, and, we really hope to practice our Rust because, we both need to sharpen that skill for work. But we might go with Go because sounds like, there are really good options there. And, you know, Max sent me this email with all these games and resources. And overall, you know, we like, it Go doesn't have to be boxed into the web and server space.

Shay Nehmad:

You know, as a language we like, Max, expressed hopes that it will break into other spaces like firmware, like game development, and things that, it isn't commonly used for now. We've highlighted a few times on the show, projects like FINE, and other GUI application projects, which Go also isn't known for. And I think game development, is up there as well. And we've highlighted Go for AI. So I think there are some, not not common use cases that Go is still, relevant for or maybe more relevant for in

Shay Nehmad:

the future. And I I might pick EBIT engine or Raylib, which is the coding with, Sphere guy is using. So these frameworks for, again, development. I'm definitely a lot more open to giving it a try right now. Alright.

Shay Nehmad:

That does it for the news items. Let's jump into the lightning round. Lightning round. Alright. So since it's just me, this is gonna be a very fast lightning round.

Shay Nehmad:

First item is use Go money. There was an interesting thread on Reddit, but it just has a very simple conclusion. Hey, when I'm dealing with money, what do I do? How do I convert to sense and e n 60 4, blah blah blah, division, it's really hard. And someone just answered the sort of canonical answer, use the money library,

Shay Nehmad:

which provides the ability

Shay Nehmad:

to work with monetary value using a currency's smallest unit, basic and precise money operations. So if you deal with transactions and and Fintech and things like that, make sure to use Go Money and not just numbers. Second thing is Quantum Safe TLS. So Gil Ada, from CyberArk, posted, sort of a general summary situation about quantum safe Golang of, like, quantum safe cybers, x25519, Kyber512. You know, in 1, 2, 3, we the Go library should provide these, like, quantum safe key agreements and things like that.

Shay Nehmad:

If you're worried about this stuff, I'm slightly worried for you, But if you need to be, quantum safe, Go's got your back. And this, medium post by, Gil highlights these, new changes. Last on the lightning round, new Ollama release. Ollama released version 0.3.3, with some, by the way, this is like a patch version, but it's it's it has interesting changes in it. The embed API returns statistics, like duration, eval count, things like that.

Shay Nehmad:

Usage metrics for the embeddings, OpenAI compatible API, API generate fixes, etcetera, etcetera. Ollama is the, you know, get up and running with large language models, Go library. And one very interesting thing I found about it, is that it is number 4 right now, overall in GitHub stars, for Go projects. So it's just up there, like, below Kubernetes, only atop by the Go language itself and Awesome Go, which is an aggregate. So Go for AI, it it might this might be a vanity metric, but Olam is definitely climbing up there almost, eclipsing Kubernetes in popularity on GitHub.

Shay Nehmad:

That does it for my show, our show, for this week. If you wanna support us more, this show is supported by our Patreon supporters. This makes this hobby, which is a rather expensive hobby, paying for editing, the time we invest into the show, etcetera, etcetera, makes this hobby more sustainable for us. So we really appreciate you joining. If you can't join the Patreon, you know, it's just $8 a month, but you wanna support in other ways, or you don't feel it's worth your money, that's also totally fair.

Shay Nehmad:

You can find all our resources at capago.dev regardless. There's nothing, the Patreons get that you don't. You can access our Slack channel at hashtag cup dashodashgo on the go for Slack. You can email us at news at cupago.dev, And we don't pay to advertise or share this show at all, so please leave a review on Spotify, Apple Podcasts, or just whatever you listen to your podcast, and maybe share this show with a friend or

Shay Nehmad:

a colleague. Thanks a lot for joining

Shay Nehmad:

this, episode, this lonely, lonely episode. And hopefully, we'll be back to normal scheduling next week.

Shay Nehmad:

One last thing to mention,

Shay Nehmad:

we have social media presence. We have a YouTube channel, and we have a Twitter account, x, and we have, you know, our own personal, like, social profiles, both Jonathan on, and myself, mostly on LinkedIn, honestly. So I think Jonathan's on Mastodon as well. Feel free to reach out and follow and like and sort of try to get his show, highlighted with the algorithms as well. And I'll just personally to get more listeners, on the show.

Shay Nehmad:

Thanks a lot, and, program exited, I guess. Goodbye.