Hello. This show is sponsored by you, our listener. Stick around till after the news to hear a little bit more about that. This is cup and go for August 23, 2024. Keep up to date with the important happenings in the Go community in about 15 minutes per week. I'm Jonathan Hall.
And I'm Miriah Peterson.
Miriah Peterson? You're not shy.
I am not.
Tell us who you are.
I'm Mariah. I, am one of the North America based Google Developer Experts for Go. I stream Go on Twitch. I, have a couple of Go workshops and courses I've done with O'Reilly Media, and I just love Go. I've been doing it forever. I have a Go conference and a Go meetup, so I just people tell me that if I were to cut my leg, I would just bleed Go. So Well,
your hair is already the right color.
My hair is blue. Yes.
Awesome. Well, thanks, Mariah for filling in for Shai so that he and I could both take breaks. He's taking a break this week. I'll take a break next week. Gives us a chance to have personal lives too. Let's talk about some news. The big thing, of course, we all know is Go 1.23 has been released. What's your favorite feature coming out in Go 123, Mariah?
Well, I mean, has anybody stopped talking about iterators? Range over 5 can iterators?
Keep iterating over that topic forever.
Pretty much.
That's the big one.
It's definitely the big one. I, haven't really paid much attention. I mean, I read through it, but I that was kinda, like, the only thing that gets stuck in my head anymore is is iterators and more iterators.
Yeah. Yeah. So have you had a chance to play with the new iterators?
I have not. Okay. But a friend of mine did make a PR for the Go Parquet library using iterators.
Okay.
So that was his first one. I read through it. It looks really nice. I would approve, but I'm not a maintainer of Parquet Go. So
Oh, yeah.
You know.
Alright. Well, I've I've played this a little bit, and I I think it's fun. But if people who are listening are interested in learning about this, where do you think they should go to learn about this?
Well, the Go team just released the official blog post by Ian Lance Taylor about Range Rover Funk. It is, basically his GopherCon talk condensed into written form. I was sit I was at the GopherCon talk. It was the last talk of the conference. So to say that I was paying attention is an overstatement.
Everybody was we we were just trying to not fall asleep. But he walks through a lot of examples in the standard library about where iterator patterns exist now, kind of how they're implemented now, and and places where they want to improve the standard library using this pattern, and examples essentially for how to do that. There the examples always feel canned in a public broad code. Like, in in those kinds of blog posts, I feel like. I I I wanna see it implemented.
Like, I wanna see the code that actually is doing the hard work, not just code that runs for demos. But it was Right. It's definitely got a lot of examples in there, and it's really good.
So I just finished my series. I read a daily, email about Go. If anybody's interested in signing up, it's boldly go. Tech/daily. You could sign up there.
But I just went through the new, section in the spec, and they have a really, in my opinion, ridiculous example of iterators there. Not that it's a bad example. It's just not at all intuitive. Like, I would expect a really simple example there of, like, here's how you range over a list of ingredients for a recipe or something. But it's actually tree walking, which is quite clever. It does tree walking with an iterator.
Okay.
It's quite clever, but it's not at all intuitive. You know, it took me a while to even understand how it was working. So it's really hard to find good examples for this sort of stuff, isn't it?
I agree. I agree. It's, like I said, I wanna see some, like, the blog post of somebody that said, hey. Look what I implemented in my open source project, and we have it deployed to x y z. And that that's what I'm waiting for. And I think, it should be the the it's not too far off. They went so fast when generics were released to saying, look at me doing generics. I'm sure that this will come Yeah. Just as fast.
Awesome. Let's talk about conferences. You mentioned, that you have a conference and a beat up, and your conference is coming up. Tell us about your conference and and what is coming up.
What is coming up? There's a lot of things coming up. We say that conference organizers stick together and we just kinda all find each other on the Internet. So my conference is Go West. It's in Utah where I am based.
It's a single day, one track, conference, I'll go on October 25th. The speakers are out. The schedule's out, but we are still accepting lightning talks for anybody that's coming. And then that, I believe, is the last US based Go conference this year. But then there's 2 more conferences this year after it that are back to back, GopherCon Singapore and GopherCon Australia. And their CFPs are still open.
So We'll have links to all of that in the show notes, of course, if you're interested in, somebody could talk to one of those those conferences. I see you have Lane Wagner coming, to speak at Go West.
Lane is. He is local. He's local to Utah.
Uh-huh.
So I've known him from the meetup scene for a long time, and he could not make it last year because he had a conflict. He went to some gaming conference. And so this year, I snagged him before he could go anywhere else to come give a keynote. We love one of our our big emphasis is is trying to get local speakers, local GoDevs to come talk, because it makes people come back to the meetup. And so the fact that Lane is local, he runs boot.dev.
He has huge contacts to, like, everyone because of his podcast, which you were on, I believe.
I was on his podcast, and he's been on this one as well. Yes.
Yeah. So, yeah. Lane's gonna be our opening keynote. I'm really excited to have him talking about Go.
I wish I could be there. I'll be in the middle of an international move at the time, but maybe, maybe next year I can make it.
The the videos will all be available online if you can't make it. But, yeah, next year, we we happen every year. So same place, always in October. So it's a great great little conference.
While we're talking about conferences, we have some news from Gofer Con UK. For those of you who are not in the UK, they have just uploaded a ton of videos, from from their conference, 12 videos. So you can go check out Gofer Con UK's content without buying a ticket to the UK. Have you seen any of these yet, Mariah?
I haven't. I knew some of the people that were going. I knew that it happened. It's one of the stops on Bill's Kennedy's oh, let me go do a workshop. So he posts when he's there on Twitter. Their lineup looked fantastic. It looks like a fantastic group of speakers. So I'm excited to watch those talks afterward, but I have not had the chance yet.
Me either. I'll I'll make a point to do that later on. One last conference I do wanna mention, I was just asked to speak at this one, but I unfortunately, I won't be able to for the same reason that I won't be able to attend yours, and that is that I'm moving. But Feinconf is coming up. The actual conference is in, Berlin, in September.
The CFP closes today, though. So if you wanna speak there, Hurry closes today, August 23rd. But that should be a great conference if you're interested in GUI programming, in Go.
Yeah. We had Andy Williams speak at my conference a couple years ago.
Awesome. Yeah. He's a great guy. I I got to meet him at, Fosdham. We we were both speaking at the GoDev room there, in February. So a lot of fun to hang out with him.
I'm glad that Fine has a conference and is still picking up steam.
Have you used Fine before?
No. I avoid anything graphical because apparently, I'm really bad at it. Like, I'm not allowed to edit our conference website because I mess it up. So I just as far to the back end as you can go is where I try and stay.
I'm probably in the same boat, but I'm I'm trying to do some I'm I'm trying to play with it. I just started using fine actually this last week for the first time. Too early to say, first impressions, but I'll, keep the audience updated as I perform an opinion.
I mean, it is it is definitely our highest viewed video from conference recordings. So it's got it's got a big following. Yeah.
Yeah. Very cool. We have one proposal that I wanted to talk about today. Actually, we talked about it before, but it's been accepted. This was the proposal to add context to tests, and I'm I'm actually quite excited about this. I don't know if you listen to that episode, Mariah, or if you have an opinion on this. What do you think about the idea of adding context to tests?
It would be like to the the test function itself. Right?
So so like the the t object, the test the testing dot t, what couldn't you couldn't get a context out of it that will
cancel the task as Oh. Yeah. Oh, I I kinda like that. I think there's a lot of value there. I I don't see any value in my immediate use cases. It like, if I were to say, oh, am I gonna take this and put it in at work? No. Because we need to just use the HTTP test package right now. But, like, any anything where you have to start doing synchronous not synchronous, but, like, using the sync package, trying to do any kind of coordination, there's a ton of value with that. Yeah.
And if you wanna make sure that you can, you know, trigger a context dot done and get the full, like, you know, cascade from it, that would be a great great thing to have.
Yeah. I was wanting it just recently, I was doing some stuff with test containers. Test containers takes a context, and when the context is canceled, it cleans up the container. And so it would be nice to sort of tie that to the testing context so that when I'm done with my test For sure. Clean everything up, without this sort of it's not it's not like it's a big deal in that particular case.
If I if I just cancel, it cleans up anyway. But I I like to I like to be tidy and clean up the right way.
Yeah. It it it's a it's a good orchestration tool. Right?
Exactly. Yeah. Yeah. Yeah. So that did not make it to 1.23, although it was actually merged before 123 was released. But after the freeze, so it'll bake it into 124. So, something to look forward to in 6 months. So that's the main news for this week. Let's do a lightning round, Mariah.
Lightning round.
Do you have something you wanted to kick it off with?
I do. Yeah. Matt Holt, the, creator and one of the maintainers of Caddy, leased a new open source project called Timeline Eyes. It lets you collect and store your personal data on your local computer, and it organizes it into a timeline. So you can export your things from YouTube and Facebook and Gmail and and all of those, you know, mass export things, put it on your local hard drive, and then you get to explore it.
Can use, geolocation, time, lots of different search measures. It's pretty cool if you want to keep track of all your data that's out there and have a copy of it, you know, in case somebody's server goes down.
That does sound cool. Can't imagine I'll overuse it because, that sounds like effort. But it does sound cool. Like, if if I were to have done it, I would be happy I did it.
Yes.
The last few weeks, Shai, in particular, has been excited about some of these, gRPC posts coming from kmcd.dev, the good parts and the bad parts of gRPC. He has a new article out now called gRPC over HTTP 3. So if you're interested in diving further down that gRPC rabbit hole, check out that one. And I wanted to mention one. This is actually a fork of a project.
It's my own fork of a project related to some gRPC work I'm doing. I'm just doing fine. I'm starting to find, and I wanted to do gRPC to talk between my fine application and my back end. I wanted my back end, or I wanted my front end to build on the browser using WASM, which doesn't support, making socket connections that I need. So I have to do gRPC over web sockets.
So the package is, github.com/flimzy/wasmws, as in WebSocket, and it's a fork of another one. I've submitted some pull requests upstream. Hopefully, they get merged and my fork can go away. I don't really main aim to maintain this, but I've added some features that I needed, make it more configurable and actually make it so it compiles for the back end so I can run my tests locally without having run my test in my browser. So, if you're interested in gRPC over websockets or just interested in websockets in web assembly, check out the package.
Link in the description.
Yeah. Good luck.
Okay. Welcome to Mariah 3. I am gonna cut in right there and just interrupt the conversation. Mariah and I kept talking for several minutes. Stick around to hear the rest of the conversation.
It was interesting and fun. But first, I just wanted to say thanks to all our patrons for supporting the show. Thanks Thanks for listening. If you find this show useful and educational, please share it with a friend or a colleague or a fellow student. You can reach out to us if you want to if you have feedback or news items to share or anything else.
Cupago.dev is the website. You can also find us on the go for Slack in the cup dash o dash go channel where we like to chat about news items and go items and sometimes silly things. Pretty informal. We have about 400 almost 4 100 50 people on that channel now, so come join us over there. You can also buy some swag if you'd like some, new transparent stickers that look great on leather according to Shai who posted that recently on our Slack channel.
We have t shirts. We have mugs. Of course, we have mugs. We have cups. You can find all that over at cupago.dev. You can also sign up to be a Patreon supporter there. Back to the conversation with Mariah. We did it. We did it in 15 minutes. We did it super fast. I think you talk less to Shai.
Oh, I ramble. I just maybe my my my my anxiety is is getting the better of me, and I don't quite have enough rambles in me. You didn't ask me about anything that I find controversial yet. So Oh, okay. Well, would you like me to?
Oh, do I have anything controversial about Go? Probably not. Well, no. That only happens when
I go to work and I see people creating their own queues in Postgres after using Pubs. Like, you know, it's just general just general, like, software things. I'm like, why are you repeating work?
Alright.
Something I was listening to your your your thing your podcast yesterday, like, a whole bunch of them. And I went back to your interview with Alice from the Go team about and who's doing Go experience. I was talking to her about that. And so I have connections with other people. Like, I talked to O'Reilly people and a lot of, like, content creators and stuff. And it seems like most of the content people consume who aren't, like, is, like, entry level Go stuff.
Mhmm.
But it seems like people that the Go team interact with are experienced GoDevs. So I'm wondering, like, my thought is, do you have any thoughts on where that disconnect is? Like, why when do people quit caring about entry level, but then only care about stuff that people who've been doing Go for 10 years care about?
When do people stop caring about entry level?
Yeah. It's like, oh, I'm doing the the intro to Go course. And then that's a chunk of content. And then we have content for people who've been doing Go for 10 years. Like, there's no, like, intermediate Go. There's no, like, you know.
What does intermediate go look like?
I don't know. I think it's like there's beginner go and then there's advanced go. I'm trying to figure that like, that's the gap in my head that I'm trying to figure out. It's like, what is what are we missing?
I wonder if isn't such a thing as intermediate. Or or maybe a better way to put it is, like, there's not a such thing as advanced Go.
I want sometimes Go simplicity, I think, is part of it. Right? Like, it's such a easy language that it's like, okay. The is the use case easier, the use case hard, like, the language isn't
Mhmm.
Kind of a thing. But I just don't yeah. I I'm trying to, I guess, put myself in, like, where's the content I wanna consume kind of a thing too.
So so, like, I kinda felt like, setting up gRPC over WebSockets for WebAssembly was gonna be kind of a complicated thing to do, and it took me a day. It wasn't it wasn't that difficult. And I I've had that experience several times or something or or like like with the iterators, I thought this is gonna be kinda kinda confusing. I'm gonna I have a weekend. I'm gonna dive in and figure out how these new iterators work.
And within an hour, I had it working. I was like, this is this is easy. Like, I haven't found that advanced mode switch yet. I keep looking for it. You know? And I I think it exists. Like, if you start doing c go or something, you know, or you start compiler optimizing, maybe that's the advanced level go stuff.
Maybe yeah. Just yeah. Let's do compiler optimizations. I don't know. I yeah. I have I I may maybe you're right. Maybe there isn't an advanced Go. So I've just I don't know. I I I'm just here sitting here saying, like, what content can I create next? Oh, you only want intro to Go stuff? Great. So I'll just build whatever I want, and that's it. There's my content.
And I remember when I did Pearl many, many years ago, there was certainly beginner Pearl and then intermediate Pearl and advanced Pearl. Yeah. Because because there's so many layers to uncover in that language. You know, there's all these magical things happening, and you learn all these weirds you know, all the weird ways and corner cases how types are handled in different ways. You don't have that in in Go with with rare exceptions.
Like like, I would say that the the way that, what I think the 123 changes the way the the timers are cleaned up. Understanding how that works is kind of advanced, but you don't need to understand that unless you're trying to optimize that specific feature.
That's that's how I find it. Yeah. No. I I guess I I see that I'm like, yeah, you don't there's just, like, probably 10% of Go you will never touch. And as soon as you touch it, you better understand how it works. But for, like, 90% of your use cases, you you you just have great it's a great easy language to do almost everything. Okay. We're on the same page there. Yeah. I'm just trying to make it make sense in my head. Why isn't it harder?
I'm curious what our listeners think if if anybody thinks that go Yeah.
For sure.
Is advanced is there advanced mode? What was it for you?
Sometimes I think turning up as soon as we turn off the garbage collector, we've hit advanced mode. But, sometimes I tell people if they don't wanna use a garbage collector to just go write Rust. So
Yeah. Yeah.
There's my hot take.
There's a hot take. Alright. Anything else controversial we could talk about?
I don't know. I'm I'm good. I'm good for now. I'll come you know, if you have me back, I'll come with all of the all of the, unpopular opinions.
Okay. Well, we'll hold you to that. We'd love to have you back again.
K.
Why don't you tell everybody where they can find you on Twitch and, anything else that you wanna wanna plug?
Oh, that's a good call. So best place to find me is definitely either, Twitch or I don't know why I'm on LinkedIn so much. So Twitch, I am soypeek tech, all one word. I also have a link tree that's soypeek soypeek_tech. People say, where does that name come from? Soy is I am in Spanish, and Pete is my last name. Peterson. So it's I am Pete. Anyway, people get confused and think I do I'm a soy dev, and I'm like, no. I don't do front end.
So, yes, soypeek tech on Twitch. I stream every Friday. We do all go and then I publish go stuff on Substack and LinkedIn. So if you're interested in that and it's all on my Linktree. So that's my version of a personal website.
Cool. I'll have links to all that in the show notes too if it's hard to remember. If you don't know how to spell soy because you don't speak Spanish.
It's the same in English. But yes. Yes. If if you got confused, soy, you don't speak Spanish, it doesn't make any sense anymore. We'll add links.
Awesome. Thanks, Mariah, for joining me. It's, been a pleasure to meet you and, talking about the Go news.
Yeah. Thanks for having me.
Alright. We'll talk to you later.
