All Episodes

February 28, 2025 30 mins
Mark as Played
Transcript

Episode Transcript

Available transcripts are automatically generated. Complete accuracy is not guaranteed.
Jonathan Hall (00:00):
This show is supported by you, our listener.
Stick around till after the newsto hear a little bit more about
that. This is Cup of Go for02/28/2025. Keep up to date with
the important happenings in theGo community in about fifteen

(00:20):
minutes per week. I'm JonathanHall.

Lane Wagner (00:22):
And I'm not Shay. I'm Lane.

Jonathan Hall (00:25):
Hi, Lane.

Lane Wagner (00:26):
How's it going?

Jonathan Hall (00:27):
Good. How are you?

Lane Wagner (00:28):
Doing great. Glad to be here. Glad to be a guest
host. Weird. Yes.
But, you know, we're doing it.

Jonathan Hall (00:32):
Yeah. Yeah. So you've been on the show before.
It's been a a while. Close totwo years, I think.

Lane Wagner (00:37):
Yeah. Probably coming up on two years. That's
kinda crazy.

Jonathan Hall (00:39):
You're on episode number 16, May 15 20 20 three.
Almost two years.

Lane Wagner (00:44):
That's early. Yeah. That's awesome.

Jonathan Hall (00:47):
Yeah. Well, thanks for stepping in. Shai is
middle of traveling. I don'tknow if he's in the air right
now, but he's, migrating to TheUnited States, this week. So too
busy for him to to be with ustoday.
So thanks for stepping in.

Lane Wagner (00:59):
Yeah. Happy to do it.

Jonathan Hall (01:00):
Let's dive into some news. We have a few quick
updates. I'm not gonna go into alot of detail because we talked
about these already. The big oneyou've all been waiting for, of
course, is why did you upgradeyour crypto packages on Monday?
We talked about last week that apreannouncement had come out,
but we didn't know what was init.
We know what's in it now. Boththe golang.org/x/crypto and

(01:21):
golang.org/x/oauth 2 packageshad security releases on Monday.
DOS is basically for crypto.It's related to SSH file
transfers. If certainauthentication 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 somethingwith JWS tokens, to be malformed

(01:45):
and consume extra memory. So ifyou use either of those
packages, upgrade.

Lane Wagner (01:50):
I use those packages. Time to up time to up.

Jonathan Hall (01:53):
Did you update on Monday?

Lane Wagner (01:54):
No. I need to update now.

Jonathan Hall (01:56):
You need to update now. Pause pause the
show. Go update.

Lane Wagner (02:01):
I'm, I'm I'm messaging my team right now.

Jonathan Hall (02:06):
Alright. The other update, for this week is,
last week, we talked about theproposal for Net HTTP content
negotiation. It was likelyaccept. Apparently, nobody who
listened went in and threw rocksat them hard enough to get them
to unaccept it because it's beenaccepted now. So if if you hate
this proposal, sorry you hadyour chance.

(02:26):
It'll be probably in 1.25. SoI'm actually pretty excited
about that. Let me pass over toyou, Lane. I think you have a
conference to tell us about. I'mI'm just trying to check my
notes here.

Lane Wagner (02:36):
Yeah. Yeah. Gopher camp in The Czech Republic. Let
me pull it up so I don't screwanything up. But, yeah, Gopher
camp, April twenty fifth twentytwenty five in oh, man.
I don't that's an abbreviation.Is that Borneo?

Jonathan Hall (02:49):
I don't know how you pronounce it.

Lane Wagner (02:50):
No. That's absolutely cool.

Jonathan Hall (02:51):
The full name.

Lane Wagner (02:52):
There's no vowel at the start. Yeah.

Jonathan Hall (02:54):
Yeah. It must not be in English. So weird.

Lane Wagner (02:57):
Yeah. Weird that the whole world doesn't run on
English, I suppose. Yeah. TheCzech Republic, fifty six days
from now. So if you're if you'rearound the area or even if
you're not, check it out.
Go for Camp 2025.

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

Lane Wagner (03:21):
Yeah. Not Borneo. That's an island. Alright. I was
way off.

Jonathan Hall (03:26):
And I think their CFP is still open. So if you are
in the area and want to speakthere, you have until I don't
know when you have until.There's no deadline listed here.

Lane Wagner (03:36):
Yeah. The become a speaker button is still open as
of time of recording, but Idon'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 Hall (03:47):
Yes. Yes. Yeah. I don't know when the CFP closes,
but it's open right now. So oror call for speakers, call for
whatever it is.
Go submit your your talk. And wealso have a new blog post from
the official Go team about thisis an interesting one because
it's gotten a lot of attention.We talked about it without
really going into any details onthe show. But one of the biggest

(04:10):
performance improvements in Go1.24 had to do with how maps
work. Do you understand what'sgoing on here, Lane?
Can you enlighten me a littlebit about this new Swiss tables?

Lane Wagner (04:20):
I have approximate knowledge of many things. Take
whatever I say here with a hugegrain of salt. I've just done
some brushing up on Swifttables, specifically for this,
so we'll see if I can do anysort of justice. I'm sure we're
gonna link down to the actualarticle, right, on go.dev

Jonathan Hall (04:38):
Yes.

Lane Wagner (04:40):
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 touse, which is why we use them
all the time. They're great andthey're fast, key value pairs.
And and you look under the hoodand the implementation is like,
oh, yeah. Actually, it makessense that that would be really
hard because You've got to,like, dynamically grow an array

(05:01):
in memory.
You have to always have yourlookups work. Right? What
happens? You can't just, like,map to an index directly. You
need to map to an index and thenhave some sort of algorithm that
that hops to, like, otherindexes just in case that one's
full.
So actually very complex underthe hood. Swiss tables, my
understanding after kind ofreading through this a little
bit, is that the big differenceis that they include a little

(05:24):
bit of metadata, a little bit ofadditional metadata within the
hash map data structure, andthey break down the backing
array into sections. Andthere's, like, that little bit
of metadata on each section. Andto get crazy hand wavy about it,
by adding that bit of metadata,you get performance
improvements, you get speedimprovements. I think it takes

(05:45):
just a tiny bit of extra memorybecause now you're storing the
metadata, but the actual lookupsand insertions see some
noticeable performanceimprovement.

Jonathan Hall (05:55):
Cool. Metadata for the win. Do you have any
idea why it's called Swisstables? I mean, is it because
Swiss make good watches, or isit related to cheese, or or did
a Swiss guy invent this?

Lane Wagner (06:05):
I would imagine it's a Swiss guy. Let's let's
look it up. Gipity is gonna

Jonathan Hall (06:09):
tell me, and with very approximate accuracy Yes.

Lane Wagner (06:09):
Why why they're called Swiss tables. Accuracy
Yes. Why they're called Swisstables. To evoke the reputation
of Swiss engineering. What?

Jonathan Hall (06:20):
Okay. So it's closer to the watchmaking, I
guess, and

Lane Wagner (06:23):
Yeah. Known for their, their clever engineering,
I suppose.

Jonathan Hall (06:27):
So, Google's AI thinks that it's because they
are, based on a design thatoriginated in Switzerland. I
don't I don't know if I believethat.

Lane Wagner (06:35):
Also sounds like it could be approximately correct.

Jonathan Hall (06:39):
Yeah. Could be. We don't know. If you know if
you know why Sys tables arecalled that, let us know, on our
Slack channel. We'd love to knowthat little piece of trivia for
next, Go trivia night.

Lane Wagner (06:49):
I mean, performance improvements in Maps could be
pretty huge. I mean, again,like, we use Maps all the time.
So

Jonathan Hall (06:56):
Exactly. Yeah.

Lane Wagner (06:57):
Pretty exciting. Yep.

Jonathan Hall (06:58):
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, butit's still relevant. It's it's
more just a generalinformational one.
It's about an example of orexamples of SQL injection. This
is something I think people hearabout all the time. And if

(07:18):
you're new to programming, notjust Go. If you're new to
programming, you might notreally know what all the fuss is
about. You know, what what isSQL injection?
This blog post will will clearthat up for you and, with
examples in Go, and and how tofix it, which is maybe the most
important thing. Once you knowwhat the problem is, knowing how
to fix it is is valuable too.Have you ever run into real life

(07:39):
SQL injection before?

Lane Wagner (07:40):
I've ran into real life code that was vulnerable to
SQL injection. I've never had anexploit on, like, my production
database.

Jonathan Hall (07:49):
Yeah.

Lane Wagner (07:49):
Yeah. I've never had, like, a little Bobby
Tables. If you're new to SQLinjection, you know, Google
little little Bobby Tables x k cd. Never had that. But I have
had instances where, like, thisisn't SQL injection, but it's, I
guess, related.
You know, like, we didn't putlimits on, like, a text column
in Postgres, and then someonejust, like, Zalgo fonted the
database. And so you've got,like, you know, a row with a

(08:12):
gigabyte of Zalgo font in it.And that's not a lot of fun to

Jonathan Hall (08:15):
Yeah. You

Lane Wagner (08:16):
know, kind of brings down the ability to
render a page. But no. DirectSQL injection stuff where
they're actually modifying thequery itself.

Jonathan Hall (08:23):
Yeah. I don't think I've had experienced the
exploit either. I've definitelyrun into code very recently even
where, you know, it's it waspossible to exploit, but I
haven't seen it exploited. I'vedefinitely seen HTML injection
in the real world where someoneinserts some HTML into a field
and we render it and then thewhole page is bogus as a result.
Yep.
So, I I suppose I should have toclarify this at the top for

(08:46):
anybody who is new to this. Theidea of SQL injection is if you
don't escape or properly handleyour query parameters, if you
take user input, that says, forexample, semicolon drop table
users, the query, when it'sexecuted, might actually drop
that table because it wouldgenerate an improper query that
doesn't do what you expect. Sodon't let that happen. Read this

(09:09):
article if you're scratchingyour head and be safer after
that.

Lane Wagner (09:12):
Yeah. There's a reason we don't just give our
users access to the SQL enginefor our database.

Jonathan Hall (09:18):
That that's right. We already talked about
some proposals, but I think youfound one, that upcoming that's
worth talking about. Tell meabout math stats.

Lane Wagner (09:27):
Yeah. So there's a new proposal for the math stats
package to add things likemedian, mode, variance. It's
GitHub issues 69264 on the Gorepo. Yeah. Pretty interesting.
I mean, adding very basicstatistical, functionality to
the math package. One thing thatimmediately stands out to me is,
like, okay. I look at this. I'mlike, I would use it. Mean,

(09:48):
median, mode, variance set.
Who wouldn't use this? Seemspretty obvious to me. It's a
slice API. Right? You could handin slice of floats, get back a
new float.
Ian Lance Taylor, his responsewas kind of interesting. He said
in the the general math packageaims to provide the functions
that are in the c plus plusstandard library. I didn't know
that.

Jonathan Hall (10:07):
I didn't know that.

Lane Wagner (10:08):
Yeah. It sounds like the Go team wants to keep
the scope of the math packagecoupled to c plus plus, which is
kind of, like, I I wonder whythat that that doesn't seem
obvious to me, like, that the cc plus plus is, like, achieved,
you know, perfection in the mathpackage. But I I mean, there
there might be good reason forit. So I wonder if there's, you

(10:29):
know, they're considering addingit somewhere else, aside from
the the direct math package. Butthat is, interesting to know
that's how they think aboutthat.

Jonathan Hall (10:37):
That is interesting. Yeah. I wonder if
if if that's the only packagethat's designed that way or if
there are other packages thatare intended to to mimic the c
plus plus standard library orsome other standard library. Is
there a Python inspired, blockpackage somewhere?

Lane Wagner (10:51):
Yeah. I mean I mean, on that note, like so one
of the reasons Python is sopopular amongst, like, data
analysts, data scientists isbecause of the rich, math
support. But that's usually notin the Python standard library.
That's like NumPy, SciPy. Iwonder if the Go team has, like,
a a similar philosophy whereit's like, okay, maybe, you
know, we're expecting other,like, extended packages to

(11:12):
handle, like, statistical stuff.

Jonathan Hall (11:14):
Yeah. You know, one thing that frustrates me,
and this is there are otherlibraries that do this, but I
wish there was a a precise wayto 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'sdangerous because it's not
precise. So you end up usingthese weird, awkward

Lane Wagner (11:33):
Have you used BigInts?

Jonathan Hall (11:35):
I've used that a little bit. I I'm using one
called decimal right now, whichuses BigInt in the background.

Lane Wagner (11:39):
I hate to on Go. Mhmm. But good lord, BigInt is
awful to work with.

Jonathan Hall (11:45):
Yes. I understand.

Lane Wagner (11:46):
So we have a cryptography course on boot dev,
and it use it has to use BigIntfor some stuff. And just, you
know, having to call, like, dotmol, dot div, dot, like,
whatever, it's just so hard toread BigInt code because it
doesn't operate. It doesn't usethe normal operators out of the
out of the box.

Jonathan Hall (12:04):
Yeah. So yeah. Anyway, there there I love Go,
but there are things I don'tlike about it, and that's that's
one of them. Speaking of howyou, do things in Go, there's a
topic on Reddit I thought itwould be fun to talk about,
before we close out the program.The title is how would you
introduce Go routines andchannels to someone new to Go?
And I bet you have some thoughtson this. I'm curious how you do

(12:27):
that on on boot.dev's courses.

Lane Wagner (12:30):
Yeah. A lot of it depends on where they're coming
from. So on boot dev, ourstudents go through Python and
then come into Go. So we canusually just kind of assume,
like, a, you're familiar withPython.

Jonathan Hall (12:39):
Mhmm.

Lane Wagner (12:40):
And the good news about Python is that concurrency
in Python is pretty rough. So weusually assume they don't know
too much about concurrency andkind of just teach it from the
ground up. Concurrency is a hardthing to learn. Mhmm. Go's
concurrency primitives are not.
Like, that's kind of where Iwould, I would start to think
about it is, like, you know, ifyou're coming from, like,
JavaScript's async await, you'repretty close to understanding

(13:04):
how it works. Granted, ofcourse, like, under the hood,
like, JavaScript's singlethreaded, and so, you know, you
don't have to worry about, like,mutexes and things like that.
But, like, this idea of stuffhappening at the same at the
same time, you should already befamiliar with. So, I guess,
just, like, out the gate, Iwould say, it's it's hard to
explain concurrency. You needvisuals.
You need to show how two thingsare happening at once. How if I

(13:24):
wanna mutate memory, you know, Ineed to lock it, like, all that
stuff. But once you understandthat, I mean, understanding that
putting go in front of afunction runs it concurrently,
that's very simple. And channelsare like channels are like the
simplest thing to understand. Ifyou understand queue data
structures and you understandconcurrency, then you already
understand channels.

(13:45):
So that's how I would thinkabout it. I wouldn't even think
about, like, oh, Go channels arehard to learn. No. No. No.
Like, learn concurrency, and andthen and then you understand
them.

Jonathan Hall (13:53):
I think there's a lot of, mystery around channels
that it doesn't deserve. Like, II think people feel like
channels do something magical,but it's really just a data
structure. Right? I mean, it'sit's it's essentially an array
with a built in push and popthat that's concurrency safe.

Lane Wagner (14:11):
Yeah. Concurrency safe queue. That's like it.

Jonathan Hall (14:13):
Yeah. It's it. Right? But, you know, I mean,
you you see questions and andI've had the questions too. I'm
not blaming anybody for havingthese questions because I had
them too.
I I thought it was mysteriousand and weird when I started
from Indigo. So I completelyidentify with people asking the
questions I'm about to mention,but questions like, what happens
when a channel goes out ofscope? The same thing that
happens to anything else thatgoes out of scope. Right? It
gets garbage collected.
Right? It's just it's just adata type, but it it doesn't

(14:34):
feel like one because it itfeels special, even though, you
know, I I don't know. It'salmost it's almost advanced
level go to realize howunadvanced a channel really is.

Lane Wagner (14:44):
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 codejust, like, just going. Right?
Like, code goes.
But blocking is I mean, there'sother instances where you could
block, like, with a time dotsleep or whatever. But, like,
yeah, the fact that the way youwrite your Go code on the

(15:06):
receiving side is usually like,okay, now sit and block and wait
until,

Jonathan Hall (15:09):
you

Lane Wagner (15:10):
know, something happens. That's, like, probably
one thing that's that's maybe alittle specific to learn. The
other thing that I will call outis the idea of, like, sending on
a closed channel.

Jonathan Hall (15:18):
Yeah.

Lane Wagner (15:19):
That can get really hairy really fast. And so
there's, like, some good rulesof thumb to make sure that that
doesn't happen. But, man, if youhave code written in such a way
where, like, you know, you'reclosing the channel in one Go
routine, then another Go routineis trying to send into it, Like,
that can be a nightmare to getright.

Jonathan Hall (15:36):
Dealing with nil channels can also be
challenging. I mean, it's it'snot difficult, but you have to
remember the details or lookthem up every time. I I really
like what you said thatconcurrency is complicated, but
it goes primitives or not, toparaphrase. It reminds me how
easy it is to think you'vewritten code that that looks
right. It even appears to do theright thing, but you've missed
race conditions or somethinglike that because the primitives

(15:57):
are so easy.
You can just you can just writecode that looks like it's doing
the right thing withoutrealizing that an example I was
dealing with this morning beforebefore recorded was refactoring
some code with with errorhandling within a go routine.
But the error had been definedoutside the go routine. So, it's
the error is not necessarilysafe to use. I had to redeclare
it, of course, in that goroutine or else it might be

(16:18):
might be a data race andsomething else is, writing or
reading the same error value.And that's a really easy thing
to overlook because the codelooks 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 isactually defined outside that
goroutine scope and, could bedangerous.
So

Lane Wagner (16:36):
I I will say just, like, maybe one little tip is I
I think the atomic package isgenerally underused.

Jonathan Hall (16:43):
Oh, yeah.

Lane Wagner (16:44):
You can solve a lot of problems just using the
atomic package that, like, youwould otherwise have to
introduce, like, a mutex for and

Jonathan Hall (16:49):
things like that. And it's become a lot more
powerful in the last fewversions with since, generic,
related functions were added.Yeah. Cool. Well, I think that's
I think that's the news for theweek.
I'm gonna put you on the spot,Lane. If you have time and
interest, would you stick aroundtill after the the break and
talk, give us an update aboutboot. Dev?

Lane Wagner (17:06):
Of course. Happy to.

Jonathan Hall (17:08):
Great. Wonderful. Well, stick around. We'll we'll
have a little break here, andwe'll be back in just a few
minutes to talk about boot. Dev.
Thanks Thanks for listening thisweek. Without Shai, I don't know
what our Patreon, looks like. Idon't know if we have new
members. If you're new, thanksfor subscribing on Patreon.

(17:29):
Stick around till next week.
We'll read out your name whenShai is back. I don't I just
don't have access to Patreon.So, you know, that's that's
Shai's department. Aside fromPatreon, you can also support us
just by sharing the show with afriend, 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 infront of your house about the
show. Whatever you wanna do tolet people know the show exists.

(17:50):
We don't advertise, so rely onword-of-mouth. You can also join
us. We we we love chatting withour listeners.
We're on the Cup of Go Slackchannel on the Go for Slack.
That's cup dash o dash go, BobCase. You can also email us at
newscuppago. Dev. You can go tothe website at cupago.dev and
find these links I justmentioned, as well as link to

(18:12):
our swag store where you canbuy, 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 usknow 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 forgotanything, Lane?

Lane Wagner (18:29):
I couldn't tell you if you did.

Jonathan Hall (18:32):
If you were listening, would you expect me
to say something else now? Likeand subscribe. Smash that like
button. That's that sort ofthing.

Lane Wagner (18:40):
Smash the like button. There you go. That's the
one. Something didn't somethingfelt off.

Jonathan Hall (18:44):
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 forsticking around. I have played

(19:06):
with boot. Dev.
I think I live streamed asession on boot. Dev a couple a
year ago maybe. It was a lot offun. Sounds right. Yeah.
Would you tell us, for those whohave no idea what it is and
never heard the words boot anddev in the same sentence, what
is boot dot dev?

Lane Wagner (19:23):
Yeah. It's a learning platform for back end
developers. We teach, like, afull computer science, and back
end development curriculum. Got30 plus courses. It that
particular learning track, theback end developer track, starts
you in Python, teaches you somememory management in c, and then
teaches you all the back endspecific stuff in Go.

(19:43):
So we have a lot of Go specificcourses. Obviously, we teach the
Go programming language, butthen also HTTP clients, servers,
cryptography, CICD, all thatkind of stuff in Go because I
love Go. And so we startedthere.

Jonathan Hall (19:58):
How many students do you have? Or is that number
is that a number you're willingto share?

Lane Wagner (20:01):
Yeah. Happy to share. So last I checked a few
weeks ago, about 500,000registered and about 24,000
paying members.

Jonathan Hall (20:10):
Cool.

Lane Wagner (20:11):
And for that, like, just to understand that
distinction, all the content onboot dev is free to read and
watch. So Mhmm. Definitely cancheck it out. It's the
interactive components of thesite that are, for paid members
after a certain, like, trialperiod of three chapters.

Jonathan Hall (20:26):
And the thing that's so that's unique about
boot. Dev, at least from myperspective, isn't so much that
it's a learning platform becausethere's there's lots of those
out there. But the interactionhas 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 thatregard?

Lane Wagner (20:43):
Yeah. That that is it's it's it's the game
experience and just how kindacrazy hands on our courses are
is is the differentiatingfactor, like I said. And and we
have to have that because, likelike 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

(21:04):
you keep alive, quests.
Right? Every day when you start,you choose a easy, medium,
medium, or hard quest for theday. We got potions that give
you, like, bonus XP when you popthem. We think about it as,
like, a a more fun take on aPomodoro timer.

Jonathan Hall (21:18):
Okay.

Lane Wagner (21:18):
You know, if you're into the idea of, like, setting
a half hour or an hour longstudy session.

Jonathan Hall (21:22):
Uh-huh. We've

Lane Wagner (21:22):
got Boots, AI Bear Wizard. He uses the Socratic
method to kinda help youthrough, your lessons. But,
like, all that stuff is fun, andit's designed to help you stay
engaged Mhmm. With your studies.The the thing that's most
interesting from, like, to amore technical audience, in my
opinion, is is the lengths we gothrough to make the lessons
interactive because Yeah.

(21:44):
It's it's not a consumptionfirst platform. It's a doing
first platform. So, like, I'lljust use the example of our HTTP
servers course, that's writtenin Go. You build a server on
your local machine using thestandard library. You build
auth, you build, you buildwebhooks, kind of start start to
finish, the whole thing.
And we shipped a custom CLI toolthat you run on your own machine

(22:06):
that makes HTTP requests, like,locally against your server and
actually runs checks against it.So, like

Jonathan Hall (22:12):
I remember that.

Lane Wagner (22:13):
That's been the real differentiator kind of
aside from just, like, the, youknow, fancy gamification skin on
everything.

Jonathan Hall (22:19):
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 yourpodcast and and then and then
looked me up and and hired me asa mentor for a while. And, you
know, he was talking about howhow fun it was to play boot. Dev
and, you know, the the the thefantasy element was was great.
But I I do remember when I didthis livestream, I remember

(22:40):
being impressed that I could,like, like, your you didn't just
trust me to build a web serverand validate that it was working
right. You checked that the myweb server did the right thing
and it returned the correctresponse to the correct request.
And so that that was impressive.And then I I know you have a lot
of other courses, not just webservers, but correct me if I'm
wrong, you talk aboutKubernetes, talk about Docker.
How do how do you interact withall of these things?

(23:01):
Is it the same? Do you have aCLI tool that talks to my local
Kubernetes cluster? Or how dohow do you validate that sort of
stuff?

Lane Wagner (23:06):
Yeah. So there's there's there there's more than
this, but the the core types oflessons on boot dev, there's
really three. There's well,okay. Really, there's two.
There's ones where you writecode in the browser.
So, So, like, the Go languagecourse is in the browser. Mhmm.
We don't see a reason to kickyou out. But then the courses
where you have to do, like, morecomplex, like, bigger project
building, like the serverscourse, you do it all on your
local machine, and then youinstall the boot dev CLI. And

(23:28):
that CLI is incredibly flexible.
It can make HTTP requests,validate responses, like what's
in the headers, what's in thebody, you know, that kind of
stuff. It also can just runshell commands, and then check
the output. So, like, anotherthing that we commonly will do
is, like, you know, just pad afile and make sure that you

(23:48):
created it properly, right, thatyou put the right stuff in
there. So it's just a validationtool for like the state of your
local machine is the way tothink about it. And so all of
the courses are broken down intopretty bite sized steps.
And it leads to a really goodexperience because, like, yes,
you're expected to do everythingon your own. That's how you
learn. But we can tell you,like, where you're starting to

(24:09):
veer off course, Because there'snothing more frustrating in,
like, a project based coursethan, like, missing step one
than getting to step 10, andyou're sitting there beating
your head against the wall,like, not realizing that it was
actually back in step one whenyou screwed up.

Jonathan Hall (24:22):
Yeah.

Lane Wagner (24:23):
That's causing all this pain. So that's been kind
of the the secret sauce at leastof that, of that interaction,
the the the CLI that youinstall.

Jonathan Hall (24:31):
Cool. Cool. And if I'm not mistaken, you have
courses written by a number ofdifferent people. You're not
doing this by yourself. Is thatcorrect?

Lane Wagner (24:37):
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 maintainand update them. We update them
a lot.
I think we're on, like, studentreported ticket, like, 16,000
right now that we've closed.

Jonathan Hall (24:55):
And so this is, like, bugs or or inconsistencies
or something that they report?

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

Jonathan Hall (25:07):
Okay.

Lane Wagner (25:08):
But we have worked with some outside authors,
Primogen, TJ de Vries. So Primedid our Git courses. And,
actually, this is gonna be mostinteresting probably to your
audience. We are just finishingup the Primogen's new course on
the HTTP protocol where youactually build Uh-huh.
Essentially the Golang HTTPpackage, really an HTTP server
from scratch using only the TCPpackage.

Jonathan Hall (25:31):
Uh-huh.

Lane Wagner (25:31):
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 Hall (25:38):
Cool. Sounds exciting. Anything exciting in
the pipeline that's worthtalking about?

Lane Wagner (25:42):
That's the big one. I will say that this one's
probably gonna feel likebetrayal to this audience, but,
like, the other big projectthat's going out after that HTTP
protocol course is the back endcurriculum. So the back end half
of the curriculum, will all beavailable in TypeScript as well
as Go. Okay. So you'll get tochoose your adventure.

Jonathan Hall (26:03):
I was expecting you to say Rust.

Lane Wagner (26:05):
Yeah. Yeah. No. There's not not as much of a
market for Rust. We found that alot of our Go developers want to
learn TypeScript usually so thatthey can be helpful on the front
end side of the stack as wellwhen they need to be.

Jonathan Hall (26:16):
Okay.

Lane Wagner (26:17):
And there's just, I mean, there's just demand for
TypeScript. But obviously, Go Gois still our primary language.
We ship all our new stuff in Go,but we're kind of porting
everything over to TypeScript aswell as this kind of secondary
option.

Jonathan Hall (26:28):
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 Wagner (26:34):
Yeah. So the back end specific stuff. The first
part of the learning path isbasically computer science
fundamentals. So Right.Algorithms, data structures,
object oriented programming,functional programming, all
that's done in Python.
We will probably eventually portthat to other languages. The
thing is, it doesn't reallymatter what you learn your CS
basics in as much other than, ofcourse, there is the memory
management course that's alwaysin c. Mhmm. But it's it's the,

(26:57):
like, career specific coursesthat you usually want to, like,
use a specific language forRight. In our experience.
So it's like you learn thebasics in Python, that's fine.
And then you learn your specificstuff for back end development
in Go or in TypeScript or, like,we'll probably add more
languages there first. I thinkit's just more useful.

Jonathan Hall (27:13):
Your your podcast is back end banter. Right?
Correct.

Lane Wagner (27:17):
Yep. What are the

Jonathan Hall (27:18):
chances of adding front end related stuff to
boot.dev? Is is there no chanceat all? Or is that gonna happen
someday?

Lane Wagner (27:25):
There definitely is a chance, but it's like the last
thing on our priority list.

Jonathan Hall (27:29):
Okay.

Lane Wagner (27:30):
We'd rather hit DevOps first. We'd rather hit
infrastructure stuff first. We'drather hit, you know, even data
science, AI, data analysis, dataengineering. Like, I'm so much
more interested in in buildingcontent around that than front
end. There's good front endcourses out there.
Like, I I don't think it's atravesty, whereas I feel like,
you know, there's not as manygood back end

Jonathan Hall (27:51):
courses. Especially in the in the
browser. You can get tons ofgood back end books, but if you
want the same sort ofexperience, I I I certainly
haven't seen them for back endcode. Is there anything else
that, I should have asked youabout boot dot dev that I that
or or back end bands or anythingelse that you have going on that
I should have asked and Ididn't?

Lane Wagner (28:07):
No. That's great. Check out the Backend Manser
podcast. Check out Jonathan'sepisode. I believe it was
episode four.
It was, like, very early. Wow.And the Boot Dev YouTube
channel, we publish our coursesfor free on the YouTube channel,
like, total like, completewalkthroughs. So, again, like,
if you're not interested in paidmembership, which is totally
okay. All our content's free, sofeel free to check it out.

Jonathan Hall (28:28):
Well, you were the cohost today, and then I
turned I I tricked you, did theand got you to be a an
interviewee also, which means Iget to ask you our our stumper
question to all the intervieweeswe do. And I haven't prepared
Lane for this at all. Usually,we give our interviewees a
little heads up if this is gonnahappen. So I we'll we'll see.
Question is, who has been themost influential for you in

(28:49):
learning Go?

Lane Wagner (28:51):
I'm gonna cheat and pick two. Okay. Number one
credit goes to my professor incollege, Russ Ross, who also
happened to be the author of theBlack Friday markdown package
Okay. Which was really awesome,used by Hugo for many years, I
think, before they switched toGoldmark. I can't remember.
But, anyways, yeah. I I learnedGo in college back in, like,

(29:12):
2014, '20 '15, which was awesomebecause it just wasn't that
popular back then. That was theintroduction. And then I would
say the next next person isprobably Dave Cheney just
because I read so many of hisblogs as I was learning Go, you
know, seven or eight years ago.Yeah.
And so those two.

Jonathan Hall (29:30):
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 Wagner (29:37):
Thanks for giving me the chance.

Jonathan Hall (29:38):
We'll have you back on the show in, I don't
know, a couple years maybe.

Lane Wagner (29:41):
Sounds good. Every two years.

Jonathan Hall (29:43):
Alright. See you then.
Advertise With Us

Popular Podcasts

On Purpose with Jay Shetty

On Purpose with Jay Shetty

I’m Jay Shetty host of On Purpose the worlds #1 Mental Health podcast and I’m so grateful you found us. I started this podcast 5 years ago to invite you into conversations and workshops that are designed to help make you happier, healthier and more healed. I believe that when you (yes you) feel seen, heard and understood you’re able to deal with relationship struggles, work challenges and life’s ups and downs with more ease and grace. I interview experts, celebrities, thought leaders and athletes so that we can grow our mindset, build better habits and uncover a side of them we’ve never seen before. New episodes every Monday and Friday. Your support means the world to me and I don’t take it for granted — click the follow button and leave a review to help us spread the love with On Purpose. I can’t wait for you to listen to your first or 500th episode!

Stuff You Should Know

Stuff You Should Know

If you've ever wanted to know about champagne, satanism, the Stonewall Uprising, chaos theory, LSD, El Nino, true crime and Rosa Parks, then look no further. Josh and Chuck have you covered.

Dateline NBC

Dateline NBC

Current and classic episodes, featuring compelling true-crime mysteries, powerful documentaries and in-depth investigations. Follow now to get the latest episodes of Dateline NBC completely free, or subscribe to Dateline Premium for ad-free listening and exclusive bonus content: DatelinePremium.com

Music, radio and podcasts, all free. Listen online or download the iHeart App.

Connect

© 2025 iHeartMedia, Inc.