🎂 ¡Feliz quinceañera a Golang! 🪅 - podcast episode cover

🎂 ¡Feliz quinceañera a Golang! 🪅

Nov 15, 202429 minEp. 88
--:--
--:--
Listen in podcast apps:
Metacast
Spotify
Youtube
RSS

Episode description

Follow us now on LinkedIn!


★ Support this podcast on Patreon ★

Transcript

Jonathan HallJonathan Hall

This show is supported by you, stick around till after the news to hear more about that. This is cup of go for November 15, 2024. 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

Hi, Shay.

Shay NehmadShay Nehmad

I realized we always have the same Yeah. Wondering if we can slip in, like, different I'm Jonathan Hall, and this is a show about Rust, and people will just not notice. Right?

Jonathan HallJonathan Hall

Yeah. Maybe. Yeah. Well, we'll try to mix it up for next time.

Shay NehmadShay Nehmad

Yeah. Keep keep ears sharp. And also, your, train tickets sharp in case you're going to Hanover?

Jonathan HallJonathan Hall

Oh, yeah.

Shay NehmadShay Nehmad

That sounds like a trainee place, although I don't know if that's actually true.

Jonathan HallJonathan Hall

Oh, I'm sure they have trains, that go.

Shay NehmadShay Nehmad

Wait. Is is a place is a place that has a lot of train trains trainee or rail y? Because most of the time they have rails. Trainee is like if they have a lot of gyms. Anyway, talk about the meetup before I tell any more bad jokes.

Jonathan HallJonathan Hall

Yeah. So there's a meetup happening November 19, in Hanover. So if you're in Hanover, that's, in Germany. We don't know what they're talking about. It'll be a mystery until you, go to the Hanover meetup. I'm sure it'll be a great conversation though.

Shay NehmadShay Nehmad

Alright. Let's not make it too awkward. Everybody together now. Happy birthday to you.

Jonathan HallJonathan Hall

You know, when they tell when they sing it

Shay NehmadShay Nehmad

to you and you're just sitting there, you're like, yeah. Just don't know what to do.

Jonathan HallJonathan Hall

And it's worse at a restaurant when the waiters and waitresses come out and start doing that.

Shay NehmadShay Nehmad

I would die. I would die. I was just to get up and leave. Go turns 15. Blog posts on the Go blog. Happy birthday, Go.

Jonathan HallJonathan Hall

This is the big one. This is the quinceanera for Go.

Shay NehmadShay Nehmad

A quinceanera? What does that mean?

Jonathan HallJonathan Hall

Quinceanera is a traditional celebration when a girl turns 15 in Latin America. She gets in a formal dress and

Shay NehmadShay Nehmad

They already passed the bar mitzvah, so now it's quinceanera, next is 18. But, yeah, this blog post, goes deep into changes from the last 5 years and really highlights for me the longevity of, like, the language and processes and the leadership of the language. Right? Because you see, they planned the things 5, years in advance and then, you know, change, for forward loops is part of a 5 year trajectory. Right?

Forward language compatibility is Go 121 which were introduced by Go 14, like, 114, which was 40s and a half ago. And then 122 introduced the scoped var loop var thing, which we discussed ad nauseam. And, like, it happened in 2 releases. Very, very cool things. Also, about the tooling that they developed while developing these things.

For example, the hash bisection, which we discussed on the show, where you can sort of bisect code instead of, bisect the git commits. Mhmm. Which we try to understand and, pass through the podcast. Very, very cool things. They also mentioned the opt in telemetry, which was a big change, and I remember it being a big community win as well.

The enhancements to the standard HTTP router. I just had a a person on my team, the onboarding exercise, you have to develop a small server. Right? Include and put it, like, it's one small part of the exercise. And they just use the standard library, you know, get in post, and I was like, yeah, man.

Here we go. That just works. It looks so good, so clean, stronger randomness, execution traces, and the first v two, which was a very controversial. Right? And they mentioned a lot of things we talked about here.

Right? FIPS, which we're gonna talk a lot about next week, and finally with making go better for AI. So the whole last paragraph is about making go better for AI, like building production AI systems and LLM infrastructure. I think it's mostly talking about, like, AI infrastructure, AI applications, not, like, actual AI, workloads. Right?

Right. Yeah. So very, very cool. And they rounded out with a thank you for all the contributors and the thriving community. So I don't know if I'm a contributor. You are. I only did some code reviews and proposals. You actually have some code.

Jonathan HallJonathan Hall

Tiny bit, like, 10 lines or something. Yeah. Yeah.

Shay NehmadShay Nehmad

And the thriving community. And I definitely feel a part of that community.

Jonathan HallJonathan Hall

Definitely a part of that.

Shay NehmadShay Nehmad

Yes. So you're welcome, Go. Actually, that's an interesting question. Do you feel a language is such a weird concept? Right? Because it's first and foremost a business thing. Right? It's a business tool developed by Google. Mhmm. Do you feel like you gained more from Go or gave more

Jonathan HallJonathan Hall

to Go? Oh, I've definitely gained more from Go than I've given back to it. For sure. I mean, well, okay. Actually, maybe that's more interesting question than I first thought.

Technically, I have gained more. I've gained a lot from the center library, from the language itself, and so on. I've given back, like I said, like 10 lines of code to the Go project, but I've also contributed to some open source libraries. I've I've maintained a few. And then this podcast and my YouTube channel and my blogging about Go, I I am giving back to the community in that sense. That that's hard to hard to say. I don't know.

Shay NehmadShay Nehmad

I think because Go, like, it is a Google thing, but, like, I'd never felt Google, monetized it and it never pulled me towards Google that much. Like, the biggest thing I can think of is the AI, blog post from very recently. They were, like, they mentioned the Vertex before they mentioned the Azure and AWS and OpenAI for, like, AI applications. And maybe the fact that a lot of Go cloud things are protobuf and Go, so that sort of draws me there, but, like, not really. It doesn't feel like a corporate thing.

I definitely, by the way, thank you, Go team. I like being a part of the community. I did some conferences and meetups and this blog and blah blah blah and and led some Go guilds at at various companies. Definitely definitely gained more from, like, learning this language than not. I'm wondering if it is actually the case that were I to specialize in a different language, I might be in a really tough position.

Mhmm. You know, if I were to specialize in Skala and Skala's community is kind of on the wind down. Right? Or if I were to just stay in, like, a very mediocre language that's that's not very hirable or peep people are not building and disting things in, like, it could have, this this choice is not huge because you always can switch, but just the fact that I've been with Go for so long, very cool. It doesn't feel 15. It feels very young still. I don't know.

Jonathan HallJonathan Hall

Yeah. I I mean, I haven't been using it for 15 years, so that's probably part of why it feels younger to me. But but also just, like, sort of the vibe around the language. It still kinda feels new and

Shay NehmadShay Nehmad

shiny. Yeah. Maybe, actually, just looking at how hard it is to change a single thing about a for loop that bothers everybody takes, like, 5 years. Maybe it's not that young as I we're thinking of it. Yeah. Not a spring chicken anymore. Happy quinceanera go. There are still a lot of interesting things to discuss. Let's get on it.

Jonathan HallJonathan Hall

I wanna call attention to a talk that was done, at Govergogon recently by Cameron Balahan. I think I said that right, who is I believe the product manager for the Go team. He did a talk that, it's really relevant to what you were just talking about called the business of Go and he talks about how, they balance business requirements for Google and the rest of the and how that interacts with the rest of the community. Like they don't wanna build Go just for Google. It really needs to be something that's used by the community.

So it's a good, expansion on the topic you were just talking about.

Shay NehmadShay Nehmad

Alright. I'm I'm adding it to my to do. I'll definitely watch it. But first, I wanna finish listening to this episode. So let's finish recording it.

Jonathan HallJonathan Hall

There'd be a cassette of baseballs, the movie. We're still in the middle of making it. Oh, that's true, sir. What the hell am I looking at? When does this happen in the movie? Now. You're looking at now, sir. Everything that happens now is happening now. What happened to then? We passed then. When? Just now. Wear it now now. Go back to then. When? Now. Now? No. I can't. Why? We missed it. When? Just now. When will then be now? Soon.

Shay NehmadShay Nehmad

Alright. Some updates on past news items. Support for Mac OS 11 in Go 125 has been accepted. No surprises there really. Just if you are building for Mac OS 11, remember to upgrade. You should always upgrade to the two versions before the one that's coming out. Right? Can you remind us what's the life cycle, thing in Go?

Jonathan HallJonathan Hall

Two versions.

Shay NehmadShay Nehmad

The current Two versions from since what?

Jonathan HallJonathan Hall

Well, so the current the current version and the one before that.

Shay NehmadShay Nehmad

These are okay. And the previous ones are not getting security updates anymore, so you don't wanna stick around with them. Right. Cool cool cool. A more interesting discussion is about memory regions. Yes. So we're gonna try to, go a bit deep into this one. And if you remember, we already discussed a similar topic when we talked about arenas. The arena experiment that was introduced in go something?

Jonathan HallJonathan Hall

Yes. It was definitely go something.

Shay NehmadShay Nehmad

I don't remember.

Jonathan HallJonathan Hall

I don't remember.

Shay NehmadShay Nehmad

But I think it was like 3 versions ago. Yeah.

Jonathan HallJonathan Hall

It was like 1 20 or maybe 19. I don't remember.

Shay NehmadShay Nehmad

Yeah. So, just to refresh your memory, also this, whole discussion is about memory. What is what was the arena experiment? So let's say you have a workload that needs to, allocate data and you don't want the garbage collector to collect this data. You wanna do it yourself.

Mhmm. The reason you like, what are the workloads that would be relevant? Basically, just very high performance places where you really try to optimize and the garbage collector is not doing a good enough job because your memory usage is very predictable so you can say, hey, I know when I want to allocate and release this memory. So in other words, region based memory management is arenas, right? You take a part of your memory and you say, I'm in charge of this one.

No. I think this is not ubiquitous. Right? I think not a lot of people are doing this but I think it's very important that the the language tries to do this in a way that's safer than just, alright just call malloc and free and and do it a 100% yourself.

Jonathan HallJonathan Hall

Right.

Shay NehmadShay Nehmad

In Go arenas, first of all, are pure Go and second of all, it's a memory safe implementation. And so far as use after freeze will not result in corruption, only crashes. So you still can shoot yourself in the foot, it's just with a Nerf gun and not with a shotgun. Right? It's gonna crash, but you're not gonna introduce security vulnerabilities or corrupt the memory or things like that, which is better.

Right? Yep. And everything was solved, and there's nothing else in this discussion. Sounds good. Yeah. Yeah. So that's that's obviously not what happened. The proposal to add arenas, is on is on hold and actually on indefinite hold. Yeah. And the reason for that is API.

So you can't use arenas in all the APIs. It has a few rough edges, but it just composes really poorly with the language in the standard library. Let's say you have an arena that you want to, use memory arenas for. What, what, API in the standard, library you use like this week that you can pull off the top of your head?

Jonathan HallJonathan Hall

Me? I've used, the JSON encoder or decoder, FMT, of course.

Shay NehmadShay Nehmad

Oh, so so f m like, JSON is really a good idea. Let's say you, want to decode into a buffer and you just wanna reuse that buffer all the time and manage that memory because the JSON is always gonna be the same and blah blah blah. Right? Mhmm. You don't want the garbage collector to mess with it at all. You wanna define an arena. How would you tell JSON that you that you want to pass an arena and not just a pointer? Now you need to change the the API.

Jonathan HallJonathan Hall

I I would have yeah. I don't know. I I could imagine a couple different ways. One is changing the JSON API. Hopefully, that's not what they do. Hopefully, there's like, an IO reader or writer wrapper around some data in that memory, arena or or

Shay NehmadShay Nehmad

Then you need to change the API for IO reader and writer to make them accept arenas. So there there are a few, rough edges. Basically, for an API to use arenas, it must accept the arena to allocate into. Right?

Jonathan HallJonathan Hall

Yeah. Yeah.

Shay NehmadShay Nehmad

Because if you pass a pointer into JSON, that's fine. But if JSON, allocates, some memory itself, then you need to pass the arena, to allocate into.

Jonathan HallJonathan Hall

Right.

Shay NehmadShay Nehmad

This is, in a sense, this is why sometimes, Rust APIs look so rough, right, where you have to define it's a box, an RC with a static lifetime, blah blah blah blah blah blah. It's because every API needs to know exactly what it what's it allocating into. Anyways, this is not a perfect analogy. And if you're listening, this is not a perfect analogy. I just don't like Frost APIs.

Jonathan HallJonathan Hall

The this is the the sort of the problem.

Shay NehmadShay Nehmad

Right? This is why we're talking about it. So the problem is arenas work, but in order to use them, they compose really poorly with the API. So let's say I I don't wanna resolve it by doing the API. Right?

What other solutions, can we think of? So the proposal here by Michael Knyznyek, I hope I'm saying that right, is to reduce cost associated with the garbage collector with composability. Like, don't mess up the entire APIs and then and and regions like arenas have to compose really well with things like sync dot pool and the unique thing and they have to work well with optimizations, etcetera, etcetera. The design, very very smart, I think. Very very out of the box thinking.

Instead of defining arenas, you say, okay, every thread is gonna have every goroutine is gonna have arenas if they want them. If a function is called within the scope of a region like a thread that's, a goroutine that's currently saying, hey, right now I'm in a region, Everything is gonna happen into a region in the scope of that, call. So instead of changing the API, you wrap the API. And when you wrap the API, you change the behavior of the thread itself that runs it. Fascinating.

Yeah. So this is obviously has a lot of, interesting nuance that we can't go into here, but I think it's a fascinating, read. The the core is that it's a decoration. It's it's it's a very basic design concept that we all learned when we learned, like, you know, like, I don't know if you had a stage in your life or, like, okay, design patterns. Now I need to list design singleton and factory and actor and strategy.

Right? So the first one of the first one is is you learn is decorate. Right? I'm gonna decorate a function with a different function. It's gonna add some functionality to it without changing the original API.

That's exactly what we're seeing here, and it doesn't affect the correctness of the code. And it's just saying that the user expects the memory to stay, local and be unreachable and then bypass the garbage collector which is exactly what arenas do in a sense. You get slightly slightly less control but it does functionally exactly what would you would use an arena for. And I thought it was very very interesting. It's recommending a package called region, has 2 functions do, which does the entire thing we just said and, ignore where you can okay.

Inside a specific function, now don't use a an arena. So if there's a part where you say, now I want the garbage collector to work I want to exclude memory that is known to outlive a specific region, which I thought was very very cool. The API looks simple, but probably there are tons of use cases and edge cases that we're not thinking of. What do you think?

Jonathan HallJonathan Hall

I agree the API is is dead simple. I'm curious how it works with things like global variables and and I don't know. This is some quarter cases. I'm sure they've thought about this or they will have at least by the time this is accepted. So I'm gonna have to read this in more detail. But I guess TLDR, it looks ingenious. I I have questions.

Shay NehmadShay Nehmad

So although this is fairly fleshed out, this doesn't have a prototype yet. And now they want to gauge interest from the community. This is difficult. Right? This is not gonna be easy to implement, and it's gonna mess up a ton of things.

So and there's interesting suggestions here. For example, someone suggested, let's use a compiler directive instead of wrapping things in in Go, right, in Go code. That's an interesting discussion. People didn't like that suggestion, by the way. It got a lot of downvotes, because it's sort of less readable and less, you know, Linter, esque, I guess, linter friendly.

But there are a lot of possible extensions here, etcetera, etcetera, etcetera. I really like it. And some people say this is really cool and I want to even do a Go experiment to make every Go routine a region implicitly. And some people are like, I don't like it at all. Don't bring it to to Go. It's a step backward. Let's just improve the GC instead. Let's not do manual memory management. What do you think about this take? I I have a, my opinion, but I'm wondering what do you think?

Jonathan HallJonathan Hall

I think improving the the GC is great, but it's already pretty darn good. And I can definitely think of cases where I would you like, I would have probably used something like this last week if it was easy and accessible to me. So, yeah, I I don't know why you wouldn't wanna support both if if it's reasonable.

Shay NehmadShay Nehmad

So, a, the zero sum game of if you're gonna use if you're gonna do something, do that. I don't this is not a productive discussion in my opinion. I do wonder. There's no I feel like I already have a sense when I look at a Go API whether I should oh, it's a super common API or a package. Right?

Whether I should just use it and it's fine, or whether it's like a super edge casey thing that I never have to use. I don't remember what feature you mentioned, but you said, like, there's some features of Go that you never want to use or never have used or something like that. Do you remember what what I'm talking about? You mentioned it on the show once.

Jonathan HallJonathan Hall

I I I can think of some features ago I never use. I don't know if these are what I was thinking of when I made the comment.

Shay NehmadShay Nehmad

So anyway, what I'm saying is, like, it's sort of the case, I feel at least, that if you don't like manual memory management, manually managing your memory is what I meant to say, you cannot use it. But on the other hand, I'm thinking about it and saying, oh, but if they introduce arenas or like sorry, these are called memory regions and suddenly, you know, someone has a really really cool suggestion for, GC optimization and like, ah, but it doesn't work with memory regions so we can't, we can't implement it or we can't introduce it. It it does feel like it could introduce a lot of dependencies and edge cases, etcetera, etcetera. But it's it's super interesting. Really, really super interesting.

People say, oh, let's not do ignore because, reasoning about programs will be easier. Slightly concerns about using the STD, like why not just use it in run time, etcetera, etcetera, etcetera. Very cool. Whether we can do it in the compiler level, very very interesting discussion, with a lots of participants and I implore the community, to I don't know why this is the community. I implore our listeners to go join this discussion.

I find this super interesting. Like, I would love to open this discussion in a guild meeting at work, like, with all the Go developers and, like, try to find cases where it's relevant, whether they like the API and sort of imagine how they it would look one way or another, blah blah blah. Very cool.

Jonathan HallJonathan Hall

So, Sean, you found a job listing that you wanted to talk about. This is a software engineer l 5 listed on LinkedIn. It's a Netflix job. Why did this jump out at you?

Shay NehmadShay Nehmad

Well, the Netflix logo obviously is very recognizable, but I actually found it because I just looked for the word go on LinkedIn, and I didn't I forgot it was a jobs website. Like, the first thing it brought up was jobs. And then I saw games, and I remembered I don't know. I heard some asshole on a podcast saying that Go is not good for games. So what's the point?

Jonathan HallJonathan Hall

So, anyway, the point here then is that, Netflix at least thinks that, somebody who knows how to use Go can help them write games.

Shay NehmadShay Nehmad

Well, let's be fair. It's not a a full Go gig. Right? It's a full stack.

Jonathan HallJonathan Hall

Full stack. It says go JavaScript TypeScript. And yeah. That's cool.

Shay NehmadShay Nehmad

Do you think it's a good fit? Do you think it's a bad fit? What's your opinion?

Jonathan HallJonathan Hall

So I just had a call this morning, with somebody who, a potential client who may have me helping them build the back end of a, a web based game for Telegram and Go. The back end would actually handle all of the game logic. The front end would just display images and stuff like that. So it's not it's not like, 3 d gaming or, you know, we're not talking about Call of Duty here, but, I do think there's a lot of room for Go to do that sort of stuff. And I may, within the next few months, have a lot of experience with it.

We'll see. Cool. Cool. Cool.

Shay NehmadShay Nehmad

There are a lot of interesting edge cases when developing games that aren't relevant to, like, real workloads. And the first one I always think of is is maps. Right? You you're not allowed to give every you don't want the client side to show or hide enemies. So you need to know the client needs to tell you where it stands.

Blah blah blah. Very interesting. I I think Go obviously for the back end is is probably it probably exists in every big gaming company. Right? Like, you think about EA, all these, a wait. EA is, Battlefield. What company is Call of Duty? I don't remember. Anyway, like, all these companies for their cloud services and chat and user management, etcetera etcetera, they probably use Go in the back end. Right? It's reasonable to say that they use Go. Activision. Yeah.

Jonathan HallJonathan Hall

Yeah. Yeah.

Shay NehmadShay Nehmad

I actually don't play a lot of shooters. So

Jonathan HallJonathan Hall

And I'm doing I've been working for a couple years, almost, with Unity. They use Go for their, their CMS stuff. So I don't know if they have I don't know if they manage their own game back ends, but, certainly, they use Go even at Unity, which is not a Go library.

Shay NehmadShay Nehmad

For sure. So, obviously, this is not we're not we don't wanna do job listings in the show because that's gonna be a problem. But I just found it interesting. Another place where Go is relevant for games, and I, was humbled by the listeners when, I said Go is not a good fit. Apparently, it is. Alright. Off to the lightning round.

Jonathan HallJonathan Hall

Let's do it. Run out the

Shay NehmadShay Nehmad

show. Lightning round.

Jonathan HallJonathan Hall

First off, let's talk about Watermill. Watermill 1.4 has recently been released. Watermill is event driven apps. And go. We'll have a link here to a blog post talking about it and what it's for. It's apparently pretty popular at 7,500, stars on GitHub and 55 contributors. If you're interested in event driven development, check out Watermill.

Shay NehmadShay Nehmad

Very cool. It's always a good topic to be interested in. If you're doing event driven stuff, that probably means you want, things to be idompetent and happen 1 by 1 and a really good package we've been using a lot of work. Well, package. It's a go file in the sync library.

It's called single flight. And if you're unfamiliar with single flight, I just put the link to the Go file in the show notes. Just go read it. It's very short and you can just understand it, but it's basically if you have multiple Go routines trying to do the same thing, that's not allowed, it'll tell them to patiently wait in line. It's very relevant for a lot of apps and it's also super super easy to use.

Just an underrated, like, feature of the language I want to bring up. And finally, a link from one of our, Slack members over at cup dashodashgo on the go for Slack.

Jonathan HallJonathan Hall

Yeah. Are you familiar with Brain Rot? I mean, I don't we know what happens when you don't have coffee.

Shay NehmadShay Nehmad

Yeah. For sure. I think I'm too old. Yeah. I know some of these words, like ratio. I know ratio. It's it's when you, like, comment on someone's tweet a bit too much, and it overtakes the likes. So it's like, oh, ratio, but not a lot beyond that.

Jonathan HallJonathan Hall

Well, this blog post is about how to create a brain rot language server using go. So if you're familiar with, the concept of a of a language server, LSP language server protocol, which is basically the language that, tools like go please speak to Versus code, for example, You can read this through this blog post and learn how to sort of build a prototype or a working example, brain rot language server using Go. So it's it's an exercise in learning how language servers work.

Shay NehmadShay Nehmad

Oh my god. For real for real. This library is all rizzed up. Bet, ain't no cap. It's very good because there's a literally a map called map string to brain rot entry and every brain rot entry is a term in the description. So this is actually a good way for me to learn about the youth of today.

Jonathan HallJonathan Hall

Which are big brain rot. Are they older or younger than Go at this point?

Shay NehmadShay Nehmad

Oh, you know what? There might be listeners who were who are super strong developers in Go, I'm sure, or younger than Go at this point listening to the show.

Jonathan HallJonathan Hall

If that's you, come let us know on the Slack channel.

Shay NehmadShay Nehmad

Or or maybe not. Maybe the Oh, maybe not. Broadcast the fact that you're a minor on the Internet. Maybe that's not a good idea.

Jonathan HallJonathan Hall

Yeah. We'll we'll wait 3 years to to do that challenge. For sure.

Shay NehmadShay Nehmad

If you wanna put in that line of code, right, you can put it in now and then it's gonna go through, like, 2 versions of of, forward compatibility and then 2 versions of releasing it. It's gonna be around your birthday. Alright. That's it for the news today. Let's move to the ad break. Let's do it.

Jonathan HallJonathan Hall

First off, in the ad break, I have one thing I wanna talk about, Shay. I don't I don't think you've even seen it yet, but I created a new LinkedIn page for the podcast.

Shay NehmadShay Nehmad

So you can fight maybe you can post, as the company when you fight with people. So it's not it looks more legitimate.

Jonathan HallJonathan Hall

There's nothing on the page yet, except our logo. But, when I have a chance

Shay NehmadShay Nehmad

The old logo that is because you're using the bad PNG.

Jonathan HallJonathan Hall

Which is the same one that's on, kapako.dev apparently. Anyway, we intend to automatically publish every episode to that page like we already do on Mastodon and Twitter. So, if you're if you prefer LinkedIn over other social media, be sure to follow our LinkedIn page.

Shay NehmadShay Nehmad

And even if you don't really like LinkedIn, like myself, hopping on and, like, pressing follow and, I don't know, re what's it called? Reposting? Retweeting? Sure.

Jonathan HallJonathan Hall

Yeah.

Shay NehmadShay Nehmad

Reposting. Reposting, like, the first thing we'll put here, it would be really cool because LinkedIn is a professional network, and I think it might be a good place to meet some other, people and, like, get more listeners to the show that we sort of haven't exposed the show to before. Right? So that could be cool. You have a really, like, big LinkedIn presence.

Jonathan HallJonathan Hall

LinkedIn is my go to social media, not because I particularly like LinkedIn, but I I hate it less than the other options.

Shay NehmadShay Nehmad

That's a that's a good reason to

Jonathan HallJonathan Hall

I actually just deleted my my Twitter profile, a week or two ago because, I was so tired of being spammed on there.

Shay NehmadShay Nehmad

Good for you, question mark?

Jonathan HallJonathan Hall

I don't know.

Shay NehmadShay Nehmad

It's all good. I I I, unfortunately, have to stick with my Facebook account, because it's connected, stupidly, it's connected to my Stack Overflow account. So I don't wanna lose that. Maybe I can reach out to support and say, like, hey. I wanna delete my Facebook. But I don't know. Maybe Facebook is useful for some things.

Jonathan HallJonathan Hall

Maybe we need a Facebook page for Cup of Go

Shay NehmadShay Nehmad

2. No.

Jonathan HallJonathan Hall

I haven't used Facebook in years. I mean, I still have an account, but I don't use it. So, anyway I think it's enough about it.

Shay NehmadShay Nehmad

I think it's true for everyone. Alright. Other than reaching us via LinkedIn, we wanna say a lot of thanks to our Patreon supporters. Thank you, fam. That's very lit of you.

Furio for real. No cap. If you wanna support the show financially, you can drop us, $8 a month by joining as a member to the Capaco community over at Patreon. And if you wanna find that link, you can find it at capago.dev where you can find the links to everything. The Slack, the LinkedIn, the Patreon, the swag store, the email, the past episodes, the whole shebang. Really looking like a real podcast after 2 years or so.

Jonathan HallJonathan Hall

Yeah. It is.

Shay NehmadShay Nehmad

If you're into email, that's solely cool. News atcapago.dev. That is news atcapago.dev, and you can send us an email.

Jonathan HallJonathan Hall

We would also appreciate if you would leave a review or a rating for us wherever you listen to this podcast, whether it's on, Spotify or Apple Music or iTunes. Is that

Shay NehmadShay Nehmad

the same thing? Apple Podcast.

Jonathan HallJonathan Hall

Apple Podcasts. Yeah. I'm not a I'm not in the Apple ecosystem, so I just.

Shay NehmadShay Nehmad

Yeah. If listeners haven't heard, John uses Linux. He just wanted to mention.

Jonathan HallJonathan Hall

You mentioned that far more than I did. Alright. Yeah. So leave us a review. Leave us a rating. Send us your feedback.

Shay NehmadShay Nehmad

Thanks a lot for listening. That does it for our show this week.

Jonathan HallJonathan Hall

Program exited. Goodbye.

Shay NehmadShay Nehmad

Program exited. Goodbye.

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