🧮 Is new math in Go's future? Plus boot.dev update with Lane Wagner - podcast episode cover

🧮 Is new math in Go's future? Plus boot.dev update with Lane Wagner

Feb 28, 202530 minEp. 101
--:--
--:--
Listen in podcast apps:
Metacast
Spotify
Youtube
RSS

Episode description

Transcript

Jonathan HallJonathan Hall

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.

Lane WagnerLane Wagner

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

Jonathan HallJonathan Hall

Hi, Lane.

Lane WagnerLane Wagner

How's it going?

Jonathan HallJonathan Hall

Good. How are you?

Lane WagnerLane Wagner

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

Jonathan HallJonathan Hall

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

Lane WagnerLane Wagner

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

Jonathan HallJonathan Hall

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

Lane WagnerLane Wagner

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

Jonathan HallJonathan Hall

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.

Lane WagnerLane Wagner

Yeah. Happy to do it.

Jonathan HallJonathan Hall

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.

Lane WagnerLane Wagner

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

Jonathan HallJonathan Hall

Did you update on Monday?

Lane WagnerLane Wagner

No. I need to update now.

Jonathan HallJonathan Hall

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

Lane WagnerLane Wagner

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

Jonathan HallJonathan Hall

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.

Lane WagnerLane Wagner

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?

Jonathan HallJonathan Hall

I don't know how you pronounce it.

Lane WagnerLane Wagner

No. That's absolutely cool.

Jonathan HallJonathan Hall

The full name.

Lane WagnerLane Wagner

There's no vowel at the start. Yeah.

Jonathan HallJonathan Hall

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

Lane WagnerLane Wagner

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.

Jonathan HallJonathan Hall

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.

Lane WagnerLane Wagner

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

Jonathan HallJonathan Hall

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.

Lane WagnerLane Wagner

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.

Jonathan HallJonathan Hall

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?

Lane WagnerLane Wagner

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

Jonathan HallJonathan Hall

Yes.

Lane WagnerLane Wagner

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.

Jonathan HallJonathan Hall

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?

Lane WagnerLane Wagner

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

Jonathan HallJonathan Hall

tell me, and with very approximate accuracy Yes.

Lane WagnerLane Wagner

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

Jonathan HallJonathan Hall

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

Lane WagnerLane Wagner

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

Jonathan HallJonathan Hall

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.

Lane WagnerLane Wagner

Also sounds like it could be approximately correct.

Jonathan HallJonathan Hall

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.

Lane WagnerLane Wagner

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

Jonathan HallJonathan Hall

Exactly. Yeah.

Lane WagnerLane Wagner

Pretty exciting. Yep.

Jonathan HallJonathan Hall

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?

Lane WagnerLane Wagner

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

Jonathan HallJonathan Hall

Yeah.

Lane WagnerLane Wagner

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

Jonathan HallJonathan Hall

Yeah. You

Lane WagnerLane Wagner

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.

Jonathan HallJonathan Hall

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.

Lane WagnerLane Wagner

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

Jonathan HallJonathan Hall

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.

Lane WagnerLane Wagner

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.

Jonathan HallJonathan Hall

I didn't know that.

Lane WagnerLane Wagner

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.

Jonathan HallJonathan Hall

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?

Lane WagnerLane Wagner

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.

Jonathan HallJonathan Hall

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

Lane WagnerLane Wagner

Have you used BigInts?

Jonathan HallJonathan Hall

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

Lane WagnerLane Wagner

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

Jonathan HallJonathan Hall

Yes. I understand.

Lane WagnerLane Wagner

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.

Jonathan HallJonathan Hall

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.

Lane WagnerLane Wagner

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.

Jonathan HallJonathan Hall

Mhmm.

Lane WagnerLane Wagner

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.

Jonathan HallJonathan Hall

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.

Lane WagnerLane Wagner

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

Jonathan HallJonathan Hall

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.

Lane WagnerLane Wagner

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,

Jonathan HallJonathan Hall

you

Lane WagnerLane Wagner

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.

Jonathan HallJonathan Hall

Yeah.

Lane WagnerLane Wagner

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.

Jonathan HallJonathan Hall

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

Lane WagnerLane Wagner

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

Jonathan HallJonathan Hall

Oh, yeah.

Lane WagnerLane Wagner

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

Jonathan HallJonathan Hall

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?

Lane WagnerLane Wagner

Of course. Happy to.

Jonathan HallJonathan Hall

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?

Lane WagnerLane Wagner

I couldn't tell you if you did.

Jonathan HallJonathan Hall

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.

Lane WagnerLane Wagner

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

Jonathan HallJonathan Hall

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?

Lane WagnerLane Wagner

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.

Jonathan HallJonathan Hall

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

Lane WagnerLane Wagner

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

Jonathan HallJonathan Hall

Cool.

Lane WagnerLane Wagner

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.

Jonathan HallJonathan Hall

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?

Lane WagnerLane Wagner

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.

Jonathan HallJonathan Hall

Okay.

Lane WagnerLane Wagner

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

Jonathan HallJonathan Hall

Uh-huh. We've

Lane WagnerLane Wagner

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

Jonathan HallJonathan Hall

I remember that.

Lane WagnerLane Wagner

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

Jonathan HallJonathan Hall

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?

Lane WagnerLane Wagner

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.

Jonathan HallJonathan Hall

Yeah.

Lane WagnerLane Wagner

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.

Jonathan HallJonathan Hall

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?

Lane WagnerLane Wagner

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.

Jonathan HallJonathan Hall

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

Lane WagnerLane Wagner

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.

Jonathan HallJonathan Hall

Okay.

Lane WagnerLane Wagner

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.

Jonathan HallJonathan Hall

Uh-huh.

Lane WagnerLane Wagner

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

Jonathan HallJonathan Hall

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

Lane WagnerLane Wagner

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.

Jonathan HallJonathan Hall

I was expecting you to say Rust.

Lane WagnerLane Wagner

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.

Jonathan HallJonathan Hall

Okay.

Lane WagnerLane Wagner

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.

Jonathan HallJonathan Hall

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?

Lane WagnerLane Wagner

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.

Jonathan HallJonathan Hall

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

Lane WagnerLane Wagner

Yep. What are the

Jonathan HallJonathan Hall

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

Lane WagnerLane Wagner

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

Jonathan HallJonathan Hall

Okay.

Lane WagnerLane Wagner

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

Jonathan HallJonathan Hall

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?

Lane WagnerLane Wagner

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.

Jonathan HallJonathan Hall

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?

Lane WagnerLane Wagner

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.

Jonathan HallJonathan Hall

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.

Lane WagnerLane Wagner

Thanks for giving me the chance.

Jonathan HallJonathan Hall

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

Lane WagnerLane Wagner

Sounds good. Every two years.

Jonathan HallJonathan Hall

Alright. See you then.

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