
This show is supported by you, our listener. Stick around till after the news to hear a little bit more about that. This is Cup of Go for 02/28/2025. Keep up to date with the important happenings in the Go community in about fifteen minutes per week. I'm Jonathan Hall.

And I'm not Shay. I'm Lane.

Hi, Lane.

How's it going?

Good. How are you?

Doing great. Glad to be here. Glad to be a guest host. Weird. Yes. But, you know, we're doing it.

Yeah. Yeah. So you've been on the show before. It's been a a while. Close to two years, I think.

Yeah. Probably coming up on two years. That's kinda crazy.

You're on episode number 16, May 15 20 20 three. Almost two years.

That's early. Yeah. That's awesome.

Yeah. Well, thanks for stepping in. Shai is middle of traveling. I don't know if he's in the air right now, but he's, migrating to The United States, this week. So too busy for him to to be with us today. So thanks for stepping in.

Yeah. Happy to do it.

Let's dive into some news. We have a few quick updates. I'm not gonna go into a lot of detail because we talked about these already. The big one you've all been waiting for, of course, is why did you upgrade your crypto packages on Monday? We talked about last week that a preannouncement had come out, but we didn't know what was in it.
We know what's in it now. Both the golang.org/x/crypto and golang.org/x/oauth 2 packages had security releases on Monday. DOS is basically for crypto. It's related to SSH file transfers. If certain authentication packets aren't sent properly or quickly enough, it can leave the the connection open, I guess, indefinitely, which you probably don't want, so this fixes that.
And for OAuth, it was something with JWS tokens, to be malformed and consume extra memory. So if you use either of those packages, upgrade.

I use those packages. Time to up time to up.

Did you update on Monday?

No. I need to update now.

You need to update now. Pause pause the show. Go update.

I'm, I'm I'm messaging my team right now.

Alright. The other update, for this week is, last week, we talked about the proposal for Net HTTP content negotiation. It was likely accept. Apparently, nobody who listened went in and threw rocks at them hard enough to get them to unaccept it because it's been accepted now. So if if you hate this proposal, sorry you had your chance.
It'll be probably in 1.25. So I'm actually pretty excited about that. Let me pass over to you, Lane. I think you have a conference to tell us about. I'm I'm just trying to check my notes here.

Yeah. Yeah. Gopher camp in The Czech Republic. Let me pull it up so I don't screw anything up. But, yeah, Gopher camp, April twenty fifth twenty twenty five in oh, man. I don't that's an abbreviation. Is that Borneo?

I don't know how you pronounce it.

No. That's absolutely cool.

The full name.

There's no vowel at the start. Yeah.

Yeah. It must not be in English. So weird.

Yeah. Weird that the whole world doesn't run on English, I suppose. Yeah. The Czech Republic, fifty six days from now. So if you're if you're around the area or even if you're not, check it out. Go for Camp 2025.

I was in The Czech Republic very briefly. It was a beautiful place. I wasn't in Brno, I think, is how you say it. I wasn't there. But it's a nice country. So if if I were still in Europe, I would I would probably try to go, but I'm not.

Yeah. Not Borneo. That's an island. Alright. I was way off.

And I think their CFP is still open. So if you are in the area and want to speak there, you have until I don't know when you have until. There's no deadline listed here.

Yeah. The become a speaker button is still open as of time of recording, but I don't see a date at which it closes. So if you wanna speak, maybe just check it out as as quick as you can.

Yes. Yes. Yeah. I don't know when the CFP closes, but it's open right now. So or or call for speakers, call for whatever it is. Go submit your your talk. And we also have a new blog post from the official Go team about this is an interesting one because it's gotten a lot of attention. We talked about it without really going into any details on the show. But one of the biggest performance improvements in Go 1.24 had to do with how maps work. Do you understand what's going on here, Lane?
Can you enlighten me a little bit about this new Swiss tables?

I have approximate knowledge of many things. Take whatever I say here with a huge grain of salt. I've just done some brushing up on Swift tables, specifically for this, so we'll see if I can do any sort of justice. I'm sure we're gonna link down to the actual article, right, on go.dev

Yes.

For those of you that want the correct interpretation. But so maps are, like, crazy tricky, is if you've ever taken an algorithms class, like, hash maps are, like, the simplest thing in the world to use, which is why we use them all the time. They're great and they're fast, key value pairs. And and you look under the hood and the implementation is like, oh, yeah. Actually, it makes sense that that would be really hard because You've got to, like, dynamically grow an array in memory.
You have to always have your lookups work. Right? What happens? You can't just, like, map to an index directly. You need to map to an index and then have some sort of algorithm that that hops to, like, other indexes just in case that one's full.
So actually very complex under the hood. Swiss tables, my understanding after kind of reading through this a little bit, is that the big difference is that they include a little bit of metadata, a little bit of additional metadata within the hash map data structure, and they break down the backing array into sections. And there's, like, that little bit of metadata on each section. And to get crazy hand wavy about it, by adding that bit of metadata, you get performance improvements, you get speed improvements. I think it takes just a tiny bit of extra memory because now you're storing the metadata, but the actual lookups and insertions see some noticeable performance improvement.

Cool. Metadata for the win. Do you have any idea why it's called Swiss tables? I mean, is it because Swiss make good watches, or is it related to cheese, or or did a Swiss guy invent this?

I would imagine it's a Swiss guy. Let's let's look it up. Gipity is gonna

tell me, and with very approximate accuracy Yes.

Why why they're called Swiss tables. Accuracy Yes. Why they're called Swiss tables. To evoke the reputation of Swiss engineering. What?

Okay. So it's closer to the watchmaking, I guess, and

Yeah. Known for their, their clever engineering, I suppose.

So, Google's AI thinks that it's because they are, based on a design that originated in Switzerland. I don't I don't know if I believe that.

Also sounds like it could be approximately correct.

Yeah. Could be. We don't know. If you know if you know why Sys tables are called that, let us know, on our Slack channel. We'd love to know that little piece of trivia for next, Go trivia night.

I mean, performance improvements in Maps could be pretty huge. I mean, again, like, we use Maps all the time. So

Exactly. Yeah.

Pretty exciting. Yep.

Cool. Well, I wanna pull up, and talk about a blog post, that comes from Snyk. But they have a a blog post. It's a couple weeks old, but it's still relevant. It's it's more just a general informational one. It's about an example of or examples of SQL injection. This is something I think people hear about all the time. And if you're new to programming, not just Go. If you're new to programming, you might not really know what all the fuss is about. You know, what what is SQL injection?
This blog post will will clear that up for you and, with examples in Go, and and how to fix it, which is maybe the most important thing. Once you know what the problem is, knowing how to fix it is is valuable too. Have you ever run into real life SQL injection before?

I've ran into real life code that was vulnerable to SQL injection. I've never had an exploit on, like, my production database.

Yeah.

Yeah. I've never had, like, a little Bobby Tables. If you're new to SQL injection, you know, Google little little Bobby Tables x k c d. Never had that. But I have had instances where, like, this isn't SQL injection, but it's, I guess, related. You know, like, we didn't put limits on, like, a text column in Postgres, and then someone just, like, Zalgo fonted the database. And so you've got, like, you know, a row with a gigabyte of Zalgo font in it. And that's not a lot of fun to

Yeah. You

know, kind of brings down the ability to render a page. But no. Direct SQL injection stuff where they're actually modifying the query itself.

Yeah. I don't think I've had experienced the exploit either. I've definitely run into code very recently even where, you know, it's it was possible to exploit, but I haven't seen it exploited. I've definitely seen HTML injection in the real world where someone inserts some HTML into a field and we render it and then the whole page is bogus as a result. Yep.
So, I I suppose I should have to clarify this at the top for anybody who is new to this. The idea of SQL injection is if you don't escape or properly handle your query parameters, if you take user input, that says, for example, semicolon drop table users, the query, when it's executed, might actually drop that table because it would generate an improper query that doesn't do what you expect. So don't let that happen. Read this article if you're scratching your head and be safer after that.

Yeah. There's a reason we don't just give our users access to the SQL engine for our database.

That that's right. We already talked about some proposals, but I think you found one, that upcoming that's worth talking about. Tell me about math stats.

Yeah. So there's a new proposal for the math stats package to add things like median, mode, variance. It's GitHub issues 69264 on the Go repo. Yeah. Pretty interesting. I mean, adding very basic statistical, functionality to the math package. One thing that immediately stands out to me is, like, okay. I look at this. I'm like, I would use it. Mean, median, mode, variance set.
Who wouldn't use this? Seems pretty obvious to me. It's a slice API. Right? You could hand in slice of floats, get back a new float. Ian Lance Taylor, his response was kind of interesting. He said in the the general math package aims to provide the functions that are in the c plus plus standard library. I didn't know that.

I didn't know that.

Yeah. It sounds like the Go team wants to keep the scope of the math package coupled to c plus plus, which is kind of, like, I I wonder why that that that doesn't seem obvious to me, like, that the c c plus plus is, like, achieved, you know, perfection in the math package. But I I mean, there there might be good reason for it. So I wonder if there's, you know, they're considering adding it somewhere else, aside from the the direct math package. But that is, interesting to know that's how they think about that.

That is interesting. Yeah. I wonder if if if that's the only package that's designed that way or if there are other packages that are intended to to mimic the c plus plus standard library or some other standard library. Is there a Python inspired, block package somewhere?

Yeah. I mean I mean, on that note, like so one of the reasons Python is so popular amongst, like, data analysts, data scientists is because of the rich, math support. But that's usually not in the Python standard library. That's like NumPy, SciPy. I wonder if the Go team has, like, a a similar philosophy where it's like, okay, maybe, you know, we're expecting other, like, extended packages to handle, like, statistical stuff.

Yeah. You know, one thing that frustrates me, and this is there are other libraries that do this, but I wish there was a a precise way to handle large decimal numbers in Go, particularly with, like, currency, addition and and and subtraction, stuff like that. You know, using a float is what most people reach for, but it's dangerous because it's not precise. So you end up using these weird, awkward

Have you used BigInts?

I've used that a little bit. I I'm using one called decimal right now, which uses BigInt in the background.

I hate to on Go. Mhmm. But good lord, BigInt is awful to work with.

Yes. I understand.

So we have a cryptography course on boot dev, and it use it has to use BigInt for some stuff. And just, you know, having to call, like, dot mol, dot div, dot, like, whatever, it's just so hard to read BigInt code because it doesn't operate. It doesn't use the normal operators out of the out of the box.

Yeah. So yeah. Anyway, there there I love Go, but there are things I don't like about it, and that's that's one of them. Speaking of how you, do things in Go, there's a topic on Reddit I thought it would be fun to talk about, before we close out the program. The title is how would you introduce Go routines and channels to someone new to Go? And I bet you have some thoughts on this. I'm curious how you do that on on boot.dev's courses.

Yeah. A lot of it depends on where they're coming from. So on boot dev, our students go through Python and then come into Go. So we can usually just kind of assume, like, a, you're familiar with Python.

Mhmm.

And the good news about Python is that concurrency in Python is pretty rough. So we usually assume they don't know too much about concurrency and kind of just teach it from the ground up. Concurrency is a hard thing to learn. Mhmm. Go's concurrency primitives are not.
Like, that's kind of where I would, I would start to think about it is, like, you know, if you're coming from, like, JavaScript's async await, you're pretty close to understanding how it works. Granted, of course, like, under the hood, like, JavaScript's single threaded, and so, you know, you don't have to worry about, like, mutexes and things like that. But, like, this idea of stuff happening at the same at the same time, you should already be familiar with. So, I guess, just, like, out the gate, I would say, it's it's hard to explain concurrency. You need visuals.
You need to show how two things are happening at once. How if I wanna mutate memory, you know, I need to lock it, like, all that stuff. But once you understand that, I mean, understanding that putting go in front of a function runs it concurrently, that's very simple. And channels are like channels are like the simplest thing to understand. If you understand queue data structures and you understand concurrency, then you already understand channels.
So that's how I would think about it. I wouldn't even think about, like, oh, Go channels are hard to learn. No. No. No. Like, learn concurrency, and and then and then you understand them.

I think there's a lot of, mystery around channels that it doesn't deserve. Like, I I think people feel like channels do something magical, but it's really just a data structure. Right? I mean, it's it's it's essentially an array with a built in push and pop that that's concurrency safe.

Yeah. Concurrency safe queue. That's like it.

Yeah. It's it. Right? But, you know, I mean, you you see questions and and I've had the questions too. I'm not blaming anybody for having these questions because I had them too. I I thought it was mysterious and and weird when I started from Indigo. So I completely identify with people asking the questions I'm about to mention, but questions like, what happens when a channel goes out of scope? The same thing that happens to anything else that goes out of scope. Right? It gets garbage collected.
Right? It's just it's just a data type, but it it doesn't feel like one because it it feels special, even though, you know, I I don't know. It's almost it's almost advanced level go to realize how unadvanced a channel really is.

Yeah. I I do think that, like, understanding blocking Uh-huh. Is is maybe, you know, a little nuanced because you're used to your code just, like, just going. Right? Like, code goes. But blocking is I mean, there's other instances where you could block, like, with a time dot sleep or whatever. But, like, yeah, the fact that the way you write your Go code on the receiving side is usually like, okay, now sit and block and wait until,

you

know, something happens. That's, like, probably one thing that's that's maybe a little specific to learn. The other thing that I will call out is the idea of, like, sending on a closed channel.

Yeah.

That can get really hairy really fast. And so there's, like, some good rules of thumb to make sure that that doesn't happen. But, man, if you have code written in such a way where, like, you know, you're closing the channel in one Go routine, then another Go routine is trying to send into it, Like, that can be a nightmare to get right.

Dealing with nil channels can also be challenging. I mean, it's it's not difficult, but you have to remember the details or look them up every time. I I really like what you said that concurrency is complicated, but it goes primitives or not, to paraphrase. It reminds me how easy it is to think you've written code that that looks right. It even appears to do the right thing, but you've missed race conditions or something like that because the primitives are so easy.
You can just you can just write code that looks like it's doing the right thing without realizing that an example I was dealing with this morning before before recorded was refactoring some code with with error handling within a go routine. But the error had been defined outside the go routine. So, it's the error is not necessarily safe to use. I had to redeclare it, of course, in that go routine or else it might be might be a data race and something else is, writing or reading the same error value. And that's a really easy thing to overlook because the code looks completely right.
There's an error defined there. There's a thing here. There's a goroutine. It does some things. If error do this thing without realizing that that error is actually defined outside that goroutine scope and, could be dangerous. So

I I will say just, like, maybe one little tip is I I think the atomic package is generally underused.

Oh, yeah.

You can solve a lot of problems just using the atomic package that, like, you would otherwise have to introduce, like, a mutex for and

things like that. And it's become a lot more powerful in the last few versions with since, generic, related functions were added. Yeah. Cool. Well, I think that's I think that's the news for the week. I'm gonna put you on the spot, Lane. If you have time and interest, would you stick around till after the the break and talk, give us an update about boot. Dev?

Of course. Happy to.

Great. Wonderful. Well, stick around. We'll we'll have a little break here, and we'll be back in just a few minutes to talk about boot. Dev. Thanks Thanks for listening this week. Without Shai, I don't know what our Patreon, looks like. I don't know if we have new members. If you're new, thanks for subscribing on Patreon. Stick around till next week.
We'll read out your name when Shai is back. I don't I just don't have access to Patreon. So, you know, that's that's Shai's department. Aside from Patreon, you can also support us just by sharing the show with a friend, with a colleague, with a coworker, with your pets, whoever, students that you're working with. I don't know.
You know, put a billboard in front of your house about the show. Whatever you wanna do to let people know the show exists. We don't advertise, so rely on word-of-mouth. You can also join us. We we we love chatting with our listeners.
We're on the Cup of Go Slack channel on the Go for Slack. That's cup dash o dash go, Bob Case. You can also email us at newscuppago. Dev. You can go to the website at cupago.dev and find these links I just mentioned, as well as link to our swag store where you can buy, PepaGo cups or t shirts and a few other goodies.
Leave a review if you would. Wherever you listen to your podcasts, leave a rating. Let us know that you like the show. I'm sure I'm forgetting something. Shy usually does a better job with these ad breaks. Does does it seem like I forgot anything, Lane?

I couldn't tell you if you did.

If you were listening, would you expect me to say something else now? Like and subscribe. Smash that like button. That's that sort of thing.

Smash the like button. There you go. That's the one. Something didn't something felt off.

Yes. Alright. Well, stick around. Layne and I are gonna have a a short chat, about boot.dev. If you're not sure what boot dot dev is, definitely stick around. It's a fun learning platform. We'll talk about that in just a moment. Well, Lane, thanks for sticking around. I have played with boot. Dev. I think I live streamed a session on boot. Dev a couple a year ago maybe. It was a lot of fun. Sounds right. Yeah.
Would you tell us, for those who have no idea what it is and never heard the words boot and dev in the same sentence, what is boot dot dev?

Yeah. It's a learning platform for back end developers. We teach, like, a full computer science, and back end development curriculum. Got 30 plus courses. It that particular learning track, the back end developer track, starts you in Python, teaches you some memory management in c, and then teaches you all the back end specific stuff in Go.
So we have a lot of Go specific courses. Obviously, we teach the Go programming language, but then also HTTP clients, servers, cryptography, CICD, all that kind of stuff in Go because I love Go. And so we started there.

How many students do you have? Or is that number is that a number you're willing to share?

Yeah. Happy to share. So last I checked a few weeks ago, about 500,000 registered and about 24,000 paying members.

Cool.

And for that, like, just to understand that distinction, all the content on boot dev is free to read and watch. So Mhmm. Definitely can check it out. It's the interactive components of the site that are, for paid members after a certain, like, trial period of three chapters.

And the thing that's so that's unique about boot. Dev, at least from my perspective, isn't so much that it's a learning platform because there's there's lots of those out there. But the interaction has a sort of, fantasy Dungeons and Dragons sort of feel to it. Talk about that a little bit. What what what makes boot. Dev unique unique in that regard?

Yeah. That that is it's it's it's the game experience and just how kinda crazy hands on our courses are is is the differentiating factor, like I said. And and we have to have that because, like like I said, all the content's free. So if we didn't have that, we wouldn't have a, you know, we wouldn't have a business. But, yeah, we've got this, these various mechanics, things like, you know, a daily streak that you keep alive, quests.
Right? Every day when you start, you choose a easy, medium, medium, or hard quest for the day. We got potions that give you, like, bonus XP when you pop them. We think about it as, like, a a more fun take on a Pomodoro timer.

Okay.

You know, if you're into the idea of, like, setting a half hour or an hour long study session.

Uh-huh. We've

got Boots, AI Bear Wizard. He uses the Socratic method to kinda help you through, your lessons. But, like, all that stuff is fun, and it's designed to help you stay engaged Mhmm. With your studies. The the thing that's most interesting from, like, to a more technical audience, in my opinion, is is the lengths we go through to make the lessons interactive because Yeah.
It's it's not a consumption first platform. It's a doing first platform. So, like, I'll just use the example of our HTTP servers course, that's written in Go. You build a server on your local machine using the standard library. You build auth, you build, you build webhooks, kind of start start to finish, the whole thing. And we shipped a custom CLI tool that you run on your own machine that makes HTTP requests, like, locally against your server and actually runs checks against it. So, like

I remember that.

That's been the real differentiator kind of aside from just, like, the, you know, fancy gamification skin on everything.

Yeah. So, I mean, I've heard people talk. I mean, I had a mentor that I was, working with for a while who I think he heard about me on your podcast and and then and then looked me up and and hired me as a mentor for a while. And, you know, he was talking about how how fun it was to play boot. Dev and, you know, the the the the fantasy element was was great.
But I I do remember when I did this livestream, I remember being impressed that I could, like, like, your you didn't just trust me to build a web server and validate that it was working right. You checked that the my web server did the right thing and it returned the correct response to the correct request. And so that that was impressive. And then I I know you have a lot of other courses, not just web servers, but correct me if I'm wrong, you talk about Kubernetes, talk about Docker. How do how do you interact with all of these things?
Is it the same? Do you have a CLI tool that talks to my local Kubernetes cluster? Or how do how do you validate that sort of stuff?

Yeah. So there's there's there there's more than this, but the the core types of lessons on boot dev, there's really three. There's well, okay. Really, there's two. There's ones where you write code in the browser.
So, So, like, the Go language course is in the browser. Mhmm. We don't see a reason to kick you out. But then the courses where you have to do, like, more complex, like, bigger project building, like the servers course, you do it all on your local machine, and then you install the boot dev CLI. And that CLI is incredibly flexible.
It can make HTTP requests, validate responses, like what's in the headers, what's in the body, you know, that kind of stuff. It also can just run shell commands, and then check the output. So, like, another thing that we commonly will do is, like, you know, just pad a file and make sure that you created it properly, right, that you put the right stuff in there. So it's just a validation tool for like the state of your local machine is the way to think about it. And so all of the courses are broken down into pretty bite sized steps.
And it leads to a really good experience because, like, yes, you're expected to do everything on your own. That's how you learn. But we can tell you, like, where you're starting to veer off course, Because there's nothing more frustrating in, like, a project based course than, like, missing step one than getting to step 10, and you're sitting there beating your head against the wall, like, not realizing that it was actually back in step one when you screwed up.

Yeah.

That's causing all this pain. So that's been kind of the the secret sauce at least of that, of that interaction, the the the CLI that you install.

Cool. Cool. And if I'm not mistaken, you have courses written by a number of different people. You're not doing this by yourself. Is that correct?

So we have a team. There's 10 of us, on the team. I've written the I've, like, authored the majority of the courses. The team helps maintain and update them. We update them a lot. I think we're on, like, student reported ticket, like, 16,000 right now that we've closed.

And so this is, like, bugs or or inconsistencies or something that they report?

Occasionally, it's, like, bugs in the lesson. But more often than not, it's just like, hey. I wish this could be explained a little bit better. And so it's just, like, constant improvement of the material.

Okay.

But we have worked with some outside authors, Primogen, TJ de Vries. So Prime did our Git courses. And, actually, this is gonna be most interesting probably to your audience. We are just finishing up the Primogen's new course on the HTTP protocol where you actually build Uh-huh. Essentially the Golang HTTP package, really an HTTP server from scratch using only the TCP package.

Uh-huh.

It's like from TCP to HTTP, and that one's super fun. Just finished editing it. We're just getting the videos out now. So

Cool. Sounds exciting. Anything exciting in the pipeline that's worth talking about?

That's the big one. I will say that this one's probably gonna feel like betrayal to this audience, but, like, the other big project that's going out after that HTTP protocol course is the back end curriculum. So the back end half of the curriculum, will all be available in TypeScript as well as Go. Okay. So you'll get to choose your adventure.

I was expecting you to say Rust.

Yeah. Yeah. No. There's not not as much of a market for Rust. We found that a lot of our Go developers want to learn TypeScript usually so that they can be helpful on the front end side of the stack as well when they need to be.

Okay.

And there's just, I mean, there's just demand for TypeScript. But obviously, Go Go is still our primary language. We ship all our new stuff in Go, but we're kind of porting everything over to TypeScript as well as this kind of secondary option.

So You said the back end half. Your other half meaning the the more, like, infrastructure stuff? You don't you don't do front end stuff. Right?

Yeah. So the back end specific stuff. The first part of the learning path is basically computer science fundamentals. So Right. Algorithms, data structures, object oriented programming, functional programming, all that's done in Python.
We will probably eventually port that to other languages. The thing is, it doesn't really matter what you learn your CS basics in as much other than, of course, there is the memory management course that's always in c. Mhmm. But it's it's the, like, career specific courses that you usually want to, like, use a specific language for Right. In our experience.
So it's like you learn the basics in Python, that's fine. And then you learn your specific stuff for back end development in Go or in TypeScript or, like, we'll probably add more languages there first. I think it's just more useful.

Your your podcast is back end banter. Right? Correct.

Yep. What are the

chances of adding front end related stuff to boot.dev? Is is there no chance at all? Or is that gonna happen someday?

There definitely is a chance, but it's like the last thing on our priority list.

Okay.

We'd rather hit DevOps first. We'd rather hit infrastructure stuff first. We'd rather hit, you know, even data science, AI, data analysis, data engineering. Like, I'm so much more interested in in building content around that than front end. There's good front end courses out there. Like, I I don't think it's a travesty, whereas I feel like, you know, there's not as many good back end

courses. Especially in the in the browser. You can get tons of good back end books, but if you want the same sort of experience, I I I certainly haven't seen them for back end code. Is there anything else that, I should have asked you about boot dot dev that I that or or back end bands or anything else that you have going on that I should have asked and I didn't?

No. That's great. Check out the Backend Manser podcast. Check out Jonathan's episode. I believe it was episode four. It was, like, very early. Wow. And the Boot Dev YouTube channel, we publish our courses for free on the YouTube channel, like, total like, complete walkthroughs. So, again, like, if you're not interested in paid membership, which is totally okay. All our content's free, so feel free to check it out.

Well, you were the cohost today, and then I turned I I tricked you, did the and got you to be a an interviewee also, which means I get to ask you our our stumper question to all the interviewees we do. And I haven't prepared Lane for this at all. Usually, we give our interviewees a little heads up if this is gonna happen. So I we'll we'll see. Question is, who has been the most influential for you in learning Go?

I'm gonna cheat and pick two. Okay. Number one credit goes to my professor in college, Russ Ross, who also happened to be the author of the Black Friday markdown package Okay. Which was really awesome, used by Hugo for many years, I think, before they switched to Goldmark. I can't remember.
But, anyways, yeah. I I learned Go in college back in, like, 2014, '20 '15, which was awesome because it just wasn't that popular back then. That was the introduction. And then I would say the next next person is probably Dave Cheney just because I read so many of his blogs as I was learning Go, you know, seven or eight years ago. Yeah. And so those two.

Great. Awesome. Great answers. Well, thanks, Lane, for stepping in for Shai, and thanks for chatting with with me about boot. Dev. It's been fun.

Thanks for giving me the chance.

We'll have you back on the show in, I don't know, a couple years maybe.

Sounds good. Every two years.

Alright. See you then.