Cup o' Go

Visit https://cupogo.dev/ for all the links.
★ Support this podcast on Patreon ★

Creators and Guests

Host
Jonathan Hall
Freelance Gopher, Continuous Delivery consultant, and host of the Boldly Go YouTube channel.
Host
Shay Nehmad
Engineering Enablement Architect @ Orca
Editor
Filippo Valvassori Bolgè
Sound Designer / Audio Editor based in Milan

What is Cup o' Go?

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

Jonathan Hall:

The show is supported by our listeners. Stick around until after the news to hear how you could help support the show too.

Shay Nehmad:

This

Jonathan Hall:

is for 02/20/2026.

Shay Nehmad:

You meant twentieth. That's a mistake. Why? Because you said '20, but it's twentieth. And you make a lot of mistakes as we'll talk about in this episode.

Shay Nehmad:

What?

Jonathan Hall:

I'm Jonathan Hall, by the way, and I never make mistakes.

Shay Nehmad:

I'm Shay Nehmad, and I love pointing out mistakes.

Jonathan Hall:

You know how I how I avoid most of my mistakes? By using Linux.

Shay Nehmad:

Oh, nice. You know how I avoid my most of my mistakes? By using linters.

Jonathan Hall:

Oh, there we go. Alright. So, yeah, I made a mistake.

Shay Nehmad:

Wait. Keep up with the important happenings in the Go community in in so and so minutes per week.

Jonathan Hall:

Somebody interrupted me. What a mistake. Alright. So mistake. We know that we make mistakes.

Jonathan Hall:

The question now is can we fix them? Alright. My mistake. Last week, I talked about the new Go mod init, and I mentioned that it would admit your new modules to two versions of the past. It's actually only one unless you're on an RC.

Jonathan Hall:

If you're on tip, then it does two versions. A minor mistake perhaps, but it got the attention of a few folks on the channel, on the Kupago channel on Slack. So here I am admitting my mistake. I did it wrong. I had an off by one error.

Jonathan Hall:

At least I never named things badly.

Shay Nehmad:

We're gonna take, we're gonna take Jonathan to the, like, city square, flog him publicly, take off his, his rank, demote. What's the demotion from a cohost? Are you a guest now

Jonathan Hall:

on this show? Guess so. I don't know. That's that sounds like less work. I'm happy to take

Shay Nehmad:

that. Alright. So what what when I run Goemon in it, now it's gonna take one minor version back and not

Jonathan Hall:

two. It will do the the previous stable release. So if you're on 01/25, it will tag it for 01/20 I shouldn't say 01/25 because that feature wasn't in 01/25. If you're in 01/26, will make your module for 01/25. If you're in one

Shay Nehmad:

twenty seven RC, it's still gonna take one twenty five.

Jonathan Hall:

It will take one twenty six.

Shay Nehmad:

No. But if you're on the RC because prerelease is

Jonathan Hall:

yeah. So if you're on one twenty seven, you'll get one twenty six. If you're on 01/27

Shay Nehmad:

RC they released it.

Jonathan Hall:

Which right. Right. If you're on 01/27 RC, which is before 01/27, then you still get 01/25. That's right.

Shay Nehmad:

My point still stands. I don't like this. If you init the new Go model, it should be like the newest it can. That's my take on it.

Jonathan Hall:

I I think that makes good sense for the final product you're building, but for libraries, I think that using an older version makes good sense. But there's like, there's not like a Go mod init library feature. So, if there was, then I think that would make sense to change that behavior depending on that feature on that library flag.

Shay Nehmad:

Okay. So now that you fixed your mistake, you don't have to fix it again. Right?

Jonathan Hall:

That's right. It's been fixed once. It will remain forever fixed. Unless

Shay Nehmad:

Unless yeah. So the GoFix blog post is out, using GoFix to modernize Go code from Alan Donovan. It was just released, like, three days ago. We talked about GoFix a lot in our 01/26 sorry. In our 01/26, like, review episode.

Shay Nehmad:

Right? We had a big episode reviewing all the features in 01/26. It's pretty easy. You run gofix ./ dot dot dot, just like Go build and GoVet and whatever, It'll fix all the problems. Oh, well, I guess it will modernize all the old looking code in your current directory.

Shay Nehmad:

And you can even pass minus diff to review, like, sort of dry run what it would do.

Jonathan Hall:

Cool. Yep.

Shay Nehmad:

Yeah. Also list all the available fixers, which is pretty cool. So go tool fix help. We'll just give you all the registered, like, analyzers you have. And just as a reminder, if you don't know what this command does, it will take, you know, sort of old looking code that has a better way to do it today.

Shay Nehmad:

For example, if you use an if else statement to determine minimum between two numbers, you can just call minimum. Like, there's a function called min now. You may have missed it. Or redeclaration of, loop variables, which used to be a gotcha but isn't anymore. And all these sort of improvements that the code is gonna do exactly the same.

Shay Nehmad:

It's just gonna look a little better. Mhmm. Surprisingly, and that caught the eye, both of when I read it was, like, weird for me, but in the channel, in our channel, hashtag up ago on the go for Slack, there was something surprising about it. Quote, running the command more than once also provides opportunities for synergistic fixes.

Jonathan Hall:

What does that mean?

Shay Nehmad:

The way I understood it was I didn't understand it, and then I just skimmed it, honestly. Yeah. And then Peter brought it up in the in the channel. Like, the moment you think about it, it means when you run the command multiple times, it might, like, because you apply one modernization, you may get a chance to apply another one. Right?

Shay Nehmad:

Because you run it once and then something is like, oh, I can use the example they give is, let's say I have a value called x and I wanna keep it between zero and a 100. Does that make sense? So I have a value x, I got it from somewhere. It's a number. And now I wanna make sure it's not below zero or above a 100.

Shay Nehmad:

If I don't know about min and max, how would I write it? I would write if x is less than zero, x is equal zero. Right? I clamp it. Uh-huh.

Shay Nehmad:

And after, if x is bigger than a 100, x is equal a 100. I clamp it from the other side. So you're with me of this so far?

Jonathan Hall:

Yeah. Uh-huh.

Shay Nehmad:

I run go fix once. It'll take the x is smaller than zero, x equals zero, and change it to pick the maximum between x and zero. And then you run it again, and it's like, oh, now I can pick the minimum between x and a 100. Mhmm. So you gotta fix it twice.

Shay Nehmad:

And I was very surprised because I've expected it to just work. Like, why not just run it in a loop until there are no more changes?

Jonathan Hall:

Uh-huh.

Shay Nehmad:

And, you know, it's gonna mess with people. They're running it in CI. It's like, man, I swear I ran GoFix. Why is CI telling me to run GoFix again? Oh, yeah.

Shay Nehmad:

Generally, seems like the last mile scripting is is kind of weird, and why not? I suggested to add, like, an until done to go fix itself. Uh-huh. I guess they didn't add it and what we I'm left wondering why. Why do you think it's not there isn't, like, a minus recurse until done flag?

Shay Nehmad:

Why isn't it that one the default?

Jonathan Hall:

So I just thought of one reason not to do that. I don't know if this is their reason, and that would be I could imagine won't GoFix look at third party GoFix directives as well. Right?

Shay Nehmad:

Oh, you can, like, add more analyzers?

Jonathan Hall:

I think I can add my own fix rules to say replace this construct with another construct. I bet you could bake a recursive loop. Like, I don't know if you would intentionally do that or if you're trying to build some sort of bomb, but, like, I could imagine a situation where, like, this thing says fix yourself to that, and that says fix yourself back to this, and you could end up with a infra recursion. I don't know if they thought of that or that's the reason that they did that or if it's just laziness or something.

Shay Nehmad:

No. Probably not.

Jonathan Hall:

I will mention, though, that there there's one other place I'm aware of where this already happens in the go to go go tool chain, and it's happened a lot for a long time, and it's in GoFumped. In particular, with regard GoFumped? So, like,

Shay Nehmad:

the FU50 or the normal The

Jonathan Hall:

official one and GoFumped, the the unofficial one that we talk about a lot, is a fork of that one. They both have the same issue, and that is that they are not idempotent necessarily, in particular with regard to line wrapping and comments. So you can run it once, and it will re rewrap certain lines or comments or whatever and run it again. It'll do it again differently. I don't I don't think that you could get under with an infinite recursion case because it's just line wrapping.

Jonathan Hall:

But you can have like, you do it one way and then it rewrites something else to, you know, to change something, and then you do it again. It makes the line longer or short or whatever, so it re rewraps it again.

Shay Nehmad:

Yeah. And just just to double make sure, yes, you can write your own. There's no nothing is stopping you from writing a modernizer for for your own public API, but you can't, like, get your users to automatically run it.

Jonathan Hall:

Right.

Shay Nehmad:

In the future, they'll think about adding modernizers directly from the sources. So if you have, like, a library that's like, don't forget to do x after UI, like, don't forget to close my connection or whatever Mhmm. The GoFix for that library might be included in the in the libraries, like annotations or whatever, which I don't know how much I'm excited about because it seems like a great way to introduce security vulnerabilities. Oh, just run this GoFix command on your machine. Don't don't worry about it.

Shay Nehmad:

Trust me. Source, trust me, bro.

Jonathan Hall:

But if you trust this but but is that really a problem? I mean, if you trust the source itself enough to run it, you know, whatever whatever process you do, whether it's reading the code directly or just trusting the author, whatever process you do you take to to trust the source code, shouldn't you also trust the GoFix directives?

Shay Nehmad:

I assume they're just not scanned by, like, GitHub, Dependabot, and all these other tools, which are the actual way I have trust. It's either I know the person who's building it, like, personally or through, you know, media or whatever, or it's extremely popular, so the trust is like, oh, a lot of people are in it. That's interesting. And I'm locking down to a specific version and, like, never upgrading unless I have to. Supply chain's hard.

Shay Nehmad:

Like, actually worrying about it is pretty hard, and introducing more vectors that that supply chain security companies need to look So

Jonathan Hall:

the attack vector would be to write a benign function that, you know, replaces strings or something. Right? Put a fixed directive on it that that swaps that for something that sends all your crypto wallets somewhere else.

Shay Nehmad:

Yeah. Luckily, I don't have any crypto

Jonathan Hall:

wallets. And and

Shay Nehmad:

hopefully, something installed on my on all my machines because I'm trying to learn Russian. And I assume, like, 90% of these malwares are check the languages first and, like, oh, if Russian installed, never mind, guys. He's one of ours. Let's drop this person.

Jonathan Hall:

Alright.

Shay Nehmad:

Alright. Go fix, fix, fix, fix. I guess I'll just, like, hard alias my Go fixing into running it multiple times. What else has been happening in

Jonathan Hall:

Goland? Speaking of Go fixing, ESR, Eric S. Raymond, famous open source advocate, posted on Twitter this last week. Can I still say Twitter? Yeah.

Jonathan Hall:

Of now, but I don't like that. Not that not that anybody cares about my opinion, but I think Twitter is a better name. Anyway, so he wrote a program, apparently long ago, imagine, in C called CVS Fast Export. I guess it exports CVS as fast? I don't know.

Jonathan Hall:

Or maybe it's related to the pharmacy I

Shay Nehmad:

have to admit, until I read this tweet again, I was sure this was CSV, and I was like, oh, it's a tool to expert CSV. No. Like, my mind just glossed over it. And now I read it slowly. Realized it's CVS, that old, like, you know, source control thing.

Jonathan Hall:

Yeah. Yeah.

Shay Nehmad:

Man, I love that stuff. CVS and SVN. Ugh. So good.

Jonathan Hall:

So he rewrote it in Go. Well, sort of. I shouldn't say he wrote it Go. He has a Go port of it that he rewrote with LLMs, and he he's just sort of raving about how well the LLM did at this. And I suppose that's because it had such a good test suite to begin with.

Jonathan Hall:

He was able to trust that the LLMs did a reasonable job. And he says he has a few days of cleanup to do, so he's he's not vibe porting this exactly. He let the LLM do the heavy lifting, and he's going back and doing the the cleanup. That's kinda cool. Not that I have any old CVS or similar sorts of old tools to port, But if I ever do, LLM certainly seems like the way to do it these days.

Shay Nehmad:

I think it's a good demo that, like, can clean out old technical debt in old code bases if you have a good test harness around it.

Jonathan Hall:

Mhmm.

Shay Nehmad:

Which I think was always true, but now it's like, oh, you only need to build the tests. You don't need to do anything Yeah. Yeah. Do you do you do you agree with this sentiment or does this fit obviously, Eric, you know, you said he has, like, legendary programmer status. I actually don't know.

Shay Nehmad:

Maybe maybe I should do more research.

Jonathan Hall:

But You probably need to spend more time in the, the open source community. You probably need to use Linux.

Shay Nehmad:

Yeah. That sounds about right. But the oh, man. His website is, like,

Jonathan Hall:

so Does it look like from old 1993. Yeah.

Shay Nehmad:

Man, I love it. It it just brought me back to, like, you know, school, sitting with a in the computer lab at school.

Jonathan Hall:

Mhmm.

Shay Nehmad:

He does have a a whole page dedicated to firearms and guns.

Jonathan Hall:

Oh, okay.

Shay Nehmad:

So I I understand what sort of a freedom open source guy we're talking It's not a San Francisco, latte drinking open source, person with a MacBook. It's a Texas, you know, I have my Linux machine on one hand, and my gun in another. Cool. Ed hominem aside, do you agree with the sentiment that if you have a good test harness, you you let loose an LLM on your code base and fully rewrite it in a static language, static modern language?

Jonathan Hall:

I mean, in principle this kind of goes back to the conversation we had an episode or two ago about whether we trust LLMs to write pull requests. Right? In in principle, I suppose that could be true, but, like, there there's a lot of a lot of edge cases that are hard to codify in tests, especially around performance and security. It's not to say they're impossible to do. So, you know, if you have a test suite that's been built from the ground up with performance and security in mind, then, yeah, I probably would trust the LLM to do it correctly or or at least not do it too badly.

Jonathan Hall:

But those those kinds of test suites are few and far between.

Shay Nehmad:

I think I I generally agree with you. In principle, it's possible, but and, you know, this library had, like, a big suite of tests anyway with all the edge cases. Mhmm. There were just a few to add for, you know, some command line arguments that were were very bespoke. But I'm I'm comparing it to, like, you know, how, Anthropic said, oh, we built a C compiler, just using Clawd, and then, like, a couple of weeks, it built a fully working C compiler in Rust or whatever.

Shay Nehmad:

Yeah. And then the first issue was, like, it doesn't compile hello world. And then the second issue was it doesn't compile it doesn't check for, like, you know, if I pass the wrong number of arguments. Just because what they tested against was just a positive. Like, can you compile this valid code?

Shay Nehmad:

And not the very obvious thing you would do if you were writing a compiler that's like, oh, you passed three arguments into a function with two, let let's fail the build. I agree in principle. As you say, if there is a perfect test harness, you could convert it. You could convert it without LLMs before. It would be really easy as well.

Shay Nehmad:

But I don't know. I thought it was cool.

Jonathan Hall:

And it's nice to know ESR is using Go, I guess. I I don't know.

Shay Nehmad:

Is he?

Jonathan Hall:

Oh, his LLM is.

Shay Nehmad:

His agent is.

Jonathan Hall:

He must have a reason to wanna con to to trans or to to convert this to Go. I I don't know what it is, but

Shay Nehmad:

Why not? It's better. Talking about not trusting AI, I've been introducing agent skills in my Claude setup.

Jonathan Hall:

Yeah. Me too.

Shay Nehmad:

What's your what's your favorite one that you've added?

Jonathan Hall:

So I added a red, green, and re a red four, let me red, green, and refactor to make the TDD cycle.

Shay Nehmad:

Oh, nice.

Jonathan Hall:

I added one a commit skill because I found that it would get it would just get ahead of itself, start making all sorts of random commits when I didn't want it to. So I I created a commit skill and a hook that would prevent it from committing without me explicitly saying to run the commit skill.

Shay Nehmad:

That's that that seems useful. Does doesn't it take well, you gotta you gotta actually read the the test it's generating and, like, look at the colors. Right?

Jonathan Hall:

Yeah. So, basically, after I let it do the TDD cycle, then I wanna review everything, make sure it makes sense, make sure it tested the right stuff. Off it goes. I've had it create tests that were completely bogus, you know, testing nonfunctional changes and stuff like that. So in my instructions, I've discovered that claud.

Jonathan Hall:

Md is not very valuable. It just patently ignores stuff in there all the time, especially after context compression, you know, when it has to compact the context, it loses a lot of that. But even without that, it just blatantly ignores it sometimes. Like selling Claude. Md, use use TDD, and here's how you do TDD, is not good enough.

Jonathan Hall:

All that all that does is gets it to apologize when it doesn't do TDD. Sorry. Oh, I should have done that. I knew that I knew that I should

Shay Nehmad:

do that,

Jonathan Hall:

but I violated the rule. So skills have been helping with that quite a bit.

Shay Nehmad:

Unrelated, but I would highly recommend for the rules you actually care about, copy and paste them, two times, because the usual model that you it would use is non reasoning, but if you copy and paste the same, instruction two times, it literally does what a reasoning LM would do, which is like, oh, I'm thinking about it. Let me copy these tokens again. Anyway, so that's one option. I have a cool skill I wrote, but I wrote it like, again, sounds like you, like a a bespoke skill. Run all my current company's stack manually, grab random ports, like a a fully a very annoying process that I would do manually before.

Shay Nehmad:

So you need to grab a Postgres and you need to grab the, you know, a few ports for all the web services and then spin them all up with with a specific setup, then log in. So you have to open one password and grab the password and the two factor authentication, log in, open the UI, navigate to the relevant page you're working on, grab a screenshot, and put that in the GitHub pull request. All of these steps are very mundane, but I was like, maybe I can get the agent to do it. End to end, I wrote up a skill, it turned out it can. And now I have a skill called UI screenshot.

Shay Nehmad:

And obviously, I, like, didn't write it by hand, at least not the front matter. So I just copied, like, some teammates skill and pasted it. Then I looked at it, it looked kinda weird, like, what's this YAML front matter and all this format and, like, I don't know this format of skills. Right? Mhmm.

Shay Nehmad:

I felt kinda bad about it, but it it sort of worked, so I I moved on. And then I saw, I think it was on LinkedIn from all places, an actual useful thing about software. I know, unbelievable. The SkillValidator package, which was very recently released. The context is Daqari, I hope I'm saying that correctly, Daqari Carey, who's a developer experience, documentation infrastructure, sort of person, senior programmer writer in Mongo.

Shay Nehmad:

They put out a deep dive analysis of agent skill ecosystem. And looking at the post itself, it's agentskillreport.com. It's like how many skills even pass validation. So 148 out of 600 skills they looked at don't even have passed the the, like, the table stakes of being in the format of a skill. Like, having the Yammel front matter or not passing parameters or You

Jonathan Hall:

know what that means to me? That means that the person had Claude write the skill for them because I've had Claude try to write skills for me, and it does a terrible job.

Shay Nehmad:

Mhmm.

Jonathan Hall:

I've had to create hooks, like, in a wrong format, and, like, it'll it'll tell me it I remember it told me once, this is a common hook format. I'm like, I don't care about a common hook format. What's the hook format you understand? Oh, let me go look that up. Claude is insanely brain dead about its own capabilities.

Shay Nehmad:

And if you have one bad skill that's what happened to me, right? I had one badly formatted skill in my repo, and then that's like that looks And then

Jonathan Hall:

copies it.

Shay Nehmad:

Yeah. Yeah. Other than badly formatted, you know, super table stakes, you don't understand the format, this analysis also looks and, you know, this is not Go specific, obviously, but it also looks into, you know, is it a low value add because it repeats stuff that's already in the, training data. So 50 skills out of the the seven odd 700, that they looked into are just not useful. Like, adding them just takes up context for no reason.

Shay Nehmad:

10 of them have high contamination, 66 of them have some hidden contamination, and generally, 52% of these skills waste the con context window. I loved this analysis and I actually opened the paper as well. Lo and behold, behind the paper, there's a Go command line tool, this person wrote, called SkillValidator, and it's so easy. I just added it to my, like, Precommute immediately. You just go install the thing.

Shay Nehmad:

It's called SkillValidator. You run, like, check, and it checks everything, which is really, really useful because it does things like, oh, is the link in the skill broken? You know what I mean? So it'll go on your skill, which is piece of markdown content without super unstructured. Make sure that it's structured.

Shay Nehmad:

Make sure the content is correct. Make sure you didn't write a skill that's useless. Like, very, very, very good. I I really like it. I added it to my repo, like, immediately, and it's, like, Ground Floor.

Shay Nehmad:

It was just released super recently just for this paper. Six stars. I'm proud to say I'm like the second or whatever. I'm the fifth. So I'm the fifth, and I think I'm the first non Mongo person on this star list.

Shay Nehmad:

I highly recommend everybody check this out. This is such a cool project. And I think this sort of scaffolding is exactly the thing that can make agents and whatever really cool. But because it was on LinkedIn and not on, like, Twitter, it's sort of behind the scenes. But I highly recommend checking it out.

Shay Nehmad:

Link is in the show notes, of

Jonathan Hall:

course. Cool.

Shay Nehmad:

Also, it's in Go, so it's super fast.

Jonathan Hall:

But has it been fixed, fixed, fixed, fixed?

Shay Nehmad:

I think you just run it once, and then you have to fix it yourself. Although, honestly, what I did is told Claude, run SkillValidator until there are no more issues.

Jonathan Hall:

Speaking of fixing things in Go, I think we have time for one more related topic before we're out of time, and that is a proposal to add checks for missing error calls for buff io dot scanner and SQL dot rows has been accepted. So GoVet will now warn you when you are not checking those errors. There have been linters, at least for the SQL rows, probably for the other also, but I've used one for SQL rows that comes with Golang cilent, but it's nice to have that in the main GoVet tool. Everybody will have access to it now.

Shay Nehmad:

And is this something I should, like, actively run on all my repos, or is this something I should be worried about? Like, what's the impact?

Jonathan Hall:

You probably should run GoVet periodically, but I think it automatically runs when you do Go test. So if you're running Go tests frequently, I think it'll run and maybe in a few other cases too. Cool. Yeah.

Shay Nehmad:

Alright. I think we're we're out of time, even though we have more things in the backlog.

Jonathan Hall:

We have so many more things.

Shay Nehmad:

But let's do a quick ad break and then jump to lighting rounds. Thanks for listening to our show and supporting it. This show is supported by listeners such as yourselves in various ways. The best way to support the show is directly via Patreon. This is a hobby.

Shay Nehmad:

We do it for for fun, but it's also expensive, editing and hosting fees, and just the time on our calendars. So if you wanna chip in, you can go to our Patreon and chip in for $8 a month. We would really appreciate it. If you wanna find the link to that Patreon, you can go to cupago.dev and find all the links there. You'll also find link to our Slack channel, which is on the gopher Slack, hashtag Cupago, kebab case with hyphens, and our email, which is news@cupago.devnewsatcupago.dev.

Shay Nehmad:

I don't know why I always say the email twice in these ad breaks. I Like, someone's writing it down.

Jonathan Hall:

There's a way. N e w s at

Shay Nehmad:

Yeah. Other than that, you'll be able to find our swag store, which we're debating if we're gonna keep up for long or not.

Jonathan Hall:

Yeah. We'll see if we're able to

Shay Nehmad:

take it down soon.

Jonathan Hall:

We're not selling much, which isn't to shame anybody, but, like, it's Yeah.

Shay Nehmad:

It makes sense. I don't I don't buy often from our

Jonathan Hall:

sweats. Right. You you'd only need one mug. I I bought one three years ago, and I'm I'm done.

Shay Nehmad:

Exactly. Past episodes, transcripts, everything you need to find. Everything Cup a Go can be found there. Other ways to support the show, we don't pay for advertising at all, so spreading the word about the show is a lot of fun for us, getting more people involved and getting more feedback. Leave a review on Spotify, Apple Podcasts, or wherever you listen to your podcasts, or share the show directly with a friend, a coworker, a co student, any other gopher in your life.

Shay Nehmad:

I think that's it for, Ad Break. No special mentions, this week other than a couple of meetups you'll be able to find me at. Oh. I'll be in the GO San Francisco meetup that not surprising because I'm the one arranging them, March 26. So the link is in the show note for that.

Shay Nehmad:

And I might seems likely like I'll be in the Go meetup in Israel, in April. Yeah. AT and T. And I'm we might even record a live episode. We'll see if if how that pans out.

Shay Nehmad:

Yeah. So it's Gala Alon one one four in Tel Aviv, April 15. So hope to see you there. I'm still, like, half tentative, you know, it's I'm gonna be in Israel after a year and whatever, But I really hope I'll be able to put some time aside for a couple of go episodes, especially if it's live. Cool.

Shay Nehmad:

Did I forget to mention anything? Don't think so. I think we covered it all. Lightning round away. Lightning round.

Jonathan Hall:

First off, the lightning round. Shy, do you use LazyGit?

Shay Nehmad:

All the time. I love it. Me too.

Jonathan Hall:

It's a little TUI git interface. Makes it easy to to rearrange git commits or squash commits or whatever. It's lot faster than a GUI. I don't like GUIs. Some people love them, I guess.

Jonathan Hall:

I don't know what's wrong with those people.

Shay Nehmad:

Probably don't use Linux enough.

Jonathan Hall:

That's probably it. But I I do like this tool. I I it's just easy to pop it up, do some things, and close it again. And it's written in Go, and the reason it's in the Lightning Round today is if you're using it lately, you might have noticed there's a little random tip that pops up in the log section, and one of those tips is if you want to learn Go, think of ways to improve LaSigit, join the team. Click ask question and express your interest.

Jonathan Hall:

So they are actively soliciting contributors. So if you are interested in working on an open source project in Go, here's one that's looking for your help. Go check it out. And even if you don't want to do that, just check it out to use the tool. It's a great tool.

Shay Nehmad:

I agree. I literally noticed it in my terminal as I was using it. I have the screenshot. It's not only if you want to contribute, also if you have just ways you think of improving it. So, you you know, a lot of open source contribution is suggesting issues or improving documentation.

Shay Nehmad:

One short item on the lighting round for long term listeners. If you remember, Khoyeb used to sponsor us, like, a long time ago.

Jonathan Hall:

Oh, yeah. I remember those guys.

Shay Nehmad:

Yeah. They were really cool. We also hosted their CEO on the podcast. It was a lot of fun. Yeah.

Shay Nehmad:

I still have a server running on their infrastructure ever since we worked with them. It hasn't gone down, so, you know, they're they know what they're doing. And apparently, I'm not the only one who thinks so because they have joined Mistral AI, which sounds like a very successful exit for them, and I'm very happy for for the team. This is not, like, Go specific. It's AI infrastructure, stuff, and the entire Core Web team is joining Mistral Compute.

Shay Nehmad:

But, yeah, good good Ania team. Good stuff. And don't remember who gave you, you know, your your first start. Don't forget us.

Jonathan Hall:

Give give us all the credit. No. Please don't.

Shay Nehmad:

One last item on the lighting round. How much do you like zines?

Jonathan Hall:

Oh, is that a word anymore? That sounds so nineteen I ninety

Shay Nehmad:

one to recommend you. Paged Out. It's a free experimental technical magazine by this you know, it's a very cyber tech purple cool thing. Actually, published in the first and second editions of it, and I it was a lot of fun back in 2019. It just came out with the eighth issue, so if you're looking for time They to get into it

Jonathan Hall:

have, like, one issue every three years or something?

Shay Nehmad:

They've been on and off. They I think they

Jonathan Hall:

took they

Shay Nehmad:

had two in 2019, and then the next one was 2023, managed by this, one person called Jinval, which if you're in cybersecurity, you know him. And, yeah, the eighth issue came out. I did a control f on it, and it does mention the word Golang once in in its 50 pages, so it counts for the podcast.

Jonathan Hall:

Okay.

Shay Nehmad:

Well, honestly, I just recommend it. It's always very cool.

Jonathan Hall:

Alright.

Shay Nehmad:

I think that's it. That makes the show. Program exited. Goodbye.