Episode Transcript
Transcripts are displayed as originally observed. Some content, including advertisements may have changed.
Use Ctrl + F to search
0:00
You're listening to Coding Blocks, episode 209.
0:11
Is that edited in post, or is that real? I'll
0:15
do it again. You want me to do it again? No, that's
0:17
OK. There
0:19
it is, 209. All right, subscribe
0:22
to us on iTunes, Spotify.
0:24
No, just kidding. Spotify, Stitchify,
0:27
wherever you find your podcasts. Visit
0:30
us at codingblocks.net, where you can find
0:33
show notes, examples, discussion, rants,
0:35
links, whatever, stuff, social
0:37
stuff. There's things there. Yeah.
0:39
I don't have the lungs that Outlaw
0:42
has, so I'm just going to stick with
0:44
the short words. Send your feedback,
0:46
questions, and rants to our comments at codingblocks.net.
0:49
Email the old way. You can go to
0:51
slack, codingblocks.net slash slack,
0:53
and do it the new way. How
0:55
crazy is that? Will you send me an inter-office
0:58
communication? On
1:00
Slack, please. You can follow
1:02
us on the Twitters, at codingblocks.
1:05
And we should probably sign up for our Blue Sky account. I'm going
1:07
to do that right now, if I can. Waitlist.
1:09
And also, codingblocks.net, you can find
1:11
other social links at the top of the page. With that,
1:13
I'm Joe Zack. I just feel like elongating
1:16
it. I'm Michael
1:19
Outlaw. He's
1:21
practicing for his, he's going
1:23
to start doing events at,
1:26
it's no longer the Georgia Dome. It's Mercedes-Benz Stadium,
1:28
right? Oh, yeah. Yeah, there we go. Yeah, me
1:30
and Tay Tay, I think, are performing tonight.
1:33
I like it. Yeah. I like it. So
1:35
with that, I'm Alan Underwood. Not going to
1:37
be doing any events.
1:39
I did see a sign, because she's
1:41
in town, right? So I don't know if you saw
1:43
this, the billboard where, Atlanta's
1:46
often referred to as ATL, the airport
1:48
code. And it said A-TAY-L.
1:50
And I have a hard time saying it every time, A-TAY-L.
1:52
I
1:54
mean, dude, that lady has
1:58
such a cult following, man. And like
2:01
didn't people go crazy when,
2:03
when a ticket master had problems with
2:05
her concert? Like there was like just
2:08
a mutiny because of the Taylor Swift
2:10
debacle.
2:11
Well, I think there was other things that
2:14
play there though. Right? Like, where
2:17
like tickets have been pre sold
2:19
beforehand or something like they, there are not enough available
2:21
or something like there was, there was other craziness involved
2:23
there, but yeah, she definitely has an extreme
2:26
following for sure.
2:27
So I heard she's in town and they expect
2:29
a hundred thousand people
2:31
to be in town this weekend. They're like,
2:33
if you have something to do in town, you
2:36
either need to get there at two o'clock in the morning or
2:39
skip it. Well, what's also worse
2:41
though, too, I don't know if you know, but miss
2:43
Janet, if you're nasty is in town Jackson.
2:46
Yeah, both. Yeah. Cause her, cause I think
2:48
her show got delayed
2:50
because of them are overlapping.
2:52
Yeah. Yeah. Yeah. So they're both
2:54
overlapping now. Yeah. That's
2:57
you think the people would play these things out better,
2:59
but you know, the funny part about that is that's
3:01
probably because they thought there was no way the
3:04
Atlanta Hawks. Yeah. I've
3:08
seen them play. Yeah.
3:11
We got this. We got it. It's okay. Fine.
3:15
It'll work itself out. Just trust me. It'll be fine. We're
3:17
going to take a gamble on this and it's going to
3:19
pay off dividends. It's amazing.
3:22
So, Hey, uh, real quick,
3:24
we did a outlaw myself. We had a
3:26
chance to go meet with Jamie Taylor.
3:28
If you don't know him,
3:30
he does the.net core podcast. If
3:32
you're into.net, definitely go
3:34
check that out. He's been doing that one for years. They've
3:37
got, he's also got another one that he does
3:40
with, uh, uh, James
3:42
and Zach and they do
3:45
tabs and spaces. That one's also very entertaining.
3:47
It's very much like the style of the show that we're doing
3:49
today, where we're just talking about random
3:51
topics.
3:53
And then he's also got one about video
3:55
games called waffling Taylor. So if
3:57
you haven't checked out any of those, go check
3:59
them out. Jamie is an awesome dude. I
4:02
had a good time catching up with him. We
4:05
even, we even talked a little bit about work code
4:07
stuff.
4:08
Um, so, you know, everything from, you
4:11
know, just
4:12
what's life like to, Hey, what
4:14
are good development practices?
4:17
And you gain Java cakes.
4:19
We did not get any Java cakes. I feel like
4:21
I got a job cakes. I got cakes.
4:24
Man. Hey, those things are actually
4:26
interestingly good. They're not real food. I don't
4:28
think, but they're
4:30
pretty tasty. You know what I forgot to ask him
4:32
and I'm
4:33
going to ask him now because I've
4:35
always wondered like, because
4:38
his handle on Slack is GA prog
4:40
man. And I always thought like when,
4:42
when I first saw it like years ago, I just
4:45
assumed like, Oh, he's a programmer. He's
4:47
a guy who's a programmer lives in Georgia.
4:50
That was my immediate like reaction
4:52
to that name. And then,
4:55
but wait, he lives where no, not
4:57
like, so like, cause he's
4:59
overseas, right? So I've always
5:02
been curious, like, Oh,
5:03
what, what does it mean? Do you
5:05
guys know?
5:06
I have no idea. I mean, maybe it's gap.
5:09
Rog man instead of Georgia.
5:12
It's the capital G capital P capital
5:14
M. So yeah, it's
5:16
G G a prog man.
5:18
Yeah. So, so maybe he'll, he'll fill us
5:20
in here.
5:21
Yeah. I forget. He told me once cause I asked the
5:24
exact same question in the exact same way. And he told
5:26
me, and that was years ago. It's
5:28
gone now. And if the a
5:30
was this was capitalized, I would assume
5:32
it would be like, you know, a per like a code level, like
5:34
general availability kind of like release type
5:37
reference.
5:39
So I'm confused. So yeah, Jamie,
5:41
let us know. I forgot to ask you. I'm sorry. Yeah. Good
5:44
stuff. But yeah, it was really nice to catch up with him.
5:46
Um, he's an awesome dude. If
5:48
you, if you get a chance and you like podcasts,
5:50
definitely go check his stuff out. Yeah,
5:52
it was awesome. And Alan definitely picked a great
5:54
place for us to be able to hear everything that was said to you.
5:57
That was a thousand percent.
5:59
Yeah.
5:59
Totally by choice. Totally by choice.
6:02
We ended up at the Hard Rock and what
6:04
was it? Maybe third grade class
6:06
or something? I think it was, yeah, there was definitely like
6:08
a third grade retreat going on there,
6:11
you know, field trip to the Hard Rock Cafe
6:14
and they were singing every song that would
6:16
come on as loud as they could,
6:18
but only like the parts they know. So it was so hilarious.
6:21
Yeah, YMCA. Because like the YMCA would come on. They
6:24
knew the alphabet part of the song, but you
6:26
have to be on that and it like, it
6:28
plays kind of quiet.
6:30
I mean, we're talking like 130 decibels, right? It
6:33
was, it was louder than a football stadium.
6:36
It was crazy. It was
6:39
the real insanity of it was
6:41
when they left
6:42
just how quiet you could hear a pin drop
6:45
and it was like, Oh wow. But
6:48
by that time your ears are ringing, so it didn't matter.
6:50
Yeah, it was, it was fun. But hey, it
6:52
did give us a chance to actually eat our
6:54
sandwiches and stuff in between. Right. Well,
6:57
in fairness, I didn't say how big the pin was that dropped
7:00
that you could finally hear. So that's
7:02
right. Oh man. So
7:04
yeah, good time.
7:05
All right. So this on the show,
7:08
yeah, on with the show, this particular episode,
7:10
we're kind of just going to talk about some things.
7:12
This is more water cooler style and
7:15
one that has sort of bugged me
7:17
because it seems that this
7:20
is always the case. If you
7:22
wrote a piece of code, does that mean that you are
7:24
the one that has to support it and own it forever?
7:27
Is that how things are supposed to work? Well, wait,
7:29
Mick, because clearly based off of your
7:31
tone, I'm assuming you are thinking of
7:33
like in a business setting, not
7:35
like code you wrote on your own for
7:38
a freelance project or open
7:40
source project. Yeah, that's fair. I guess
7:42
if you do it for an open source project, you kind
7:44
of do it on it. But yeah, I'm
7:46
talking about, well, even if it was open source
7:48
project, it would depend on how open source, like,
7:50
you know, if it's on
7:52
your own private Allen Underwood repo, that's
7:54
open quote, open source. That's different.
7:57
But if it's like, oh, I contributed to Kubernetes.
7:59
Yeah, I think they'd almost treat it different,
8:02
right? Like if you were working on just a huge open
8:04
source project, then you're just, you're
8:06
nobody, right? Like you just
8:08
contributed some lines of code. But it
8:11
worked. It seems like if you,
8:13
it doesn't matter how big or small this thing
8:15
is that you create, like, I
8:18
mean, we've all done it, right? Like we've all written
8:20
something, and
8:22
from the most minor
8:24
things that go wrong with it to the most
8:26
major, it's like everybody's
8:29
like, oh, well, that's Alan's.
8:31
Well, worse than that, you know that we're all
8:34
guilty of, well, Alan wrote that, you
8:36
should probably go ask him.
8:38
Yeah, and I think the idea is that it's faster and easier
8:40
for him because he's more familiar with it, even if
8:43
it's been a break. But the downside is, is like
8:45
the longer you've been somewhere, like you just get stuck, you're
8:47
like saddled with these things that you worked on
8:49
years ago that no one else is touching, and it
8:51
just makes the problem worse where now no one's familiar
8:53
with it five years later,
8:55
and it's like even harder for them to
8:57
get into.
8:58
You know, it's funny, you know, you said we're
9:00
all guilty of it, and we all are, right? Everybody
9:03
who's ever programmed to anything is guilty of this.
9:05
But I feel like
9:08
I really try my best not to go
9:10
on poke the person that did something.
9:13
Like, I mean, I have
9:16
tons of examples, but I
9:18
will try and get stuck before
9:21
I like go knock on
9:23
somebody's door, right? And
9:26
I feel like most people don't do that.
9:28
I feel like most people, they're like, hey, this thing,
9:31
it's throwing this error. I'm like, did
9:33
you search the code for that text and
9:36
see what happened? Like, no. And
9:38
the reality is, if it's been more than
9:41
a few weeks, that's what I'm gonna have to do.
9:43
You know what I mean? Like, I
9:45
don't remember the logic flow to get
9:47
to this exact point, so. Hey, do you
9:49
remember verbatim says, bit of code
9:52
that you wrote three and a half years ago? Because I'm
9:54
getting this obscure error. It's
9:56
error 8,000, one, two, three, minus
9:58
four divided by PI. Do you remember what
10:00
that means? Yeah,
10:03
I mean, or hey,
10:05
this thing didn't start. Do you know why
10:07
it didn't start?
10:09
Cause I wrote it for Windows 95. That's
10:12
right, that's right. Why are you still bothering me? And
10:15
you know, here's the worst part. And this is, I think
10:17
this is the part that drives me the most insane,
10:21
is you can do your level best
10:23
to make it so that people don't
10:25
have to come to you for it, right? So
10:28
you can write wikis, you can have read
10:30
me's in the code, you can do everything that
10:32
you possibly can. Information
10:36
goes to die, that's the place.
10:38
Yeah, I mean, we've joked about this before, but I
10:40
totally believe it. The wiki is the place
10:42
that information goes to die. Well,
10:45
there's also one other benefit of wiki is you can
10:47
passively aggressively throw it at people.
10:49
So like, they'll ask you, which would be like, I
10:51
answered that, I guess you haven't read my wiki.
10:54
You know, it's right here. That's so
10:56
amazing, because that's exactly what Jay-Z
10:58
does. Because he's not
11:01
a,
11:01
he doesn't have a combative
11:04
personality. He's not confrontational
11:06
at all, yeah. At all, right? Like, you
11:08
can't create a fight with Joe, but
11:11
he will definitely drop wiki leaks on you.
11:14
That always makes me giggle a little. You mean, wiki
11:17
books. That's right. Yeah,
11:19
if Joe wrote it, it's complete.
11:22
Here you go, half of this is wrong, but
11:25
not this part. I try
11:27
not to be passive-resident, I try to just do it helpfully
11:30
and try and encourage people to write in
11:32
a wiki. But every time I say it, I'm like, oh man, I
11:34
sound like such a swarmy little something.
11:37
No, you don't. The way you said that, though,
11:39
it's almost like you could substitute
11:41
the technology there or a word
11:43
there, and it would sound even as hilarious
11:46
as what you said, where it would be like,
11:48
sounds like you don't even subscribe to my newsletter. Yeah,
11:51
exactly. It's
11:53
like, if you listen to episode 206 of
11:56
Coding Blocks, you would know. Yeah, that's right. Read
11:58
my blog. That's right.
11:59
You don't, you know, though,
12:02
the
12:02
Wiki versus the read me, I mean, we've
12:04
had this discussion in the past too.
12:07
I love the read
12:09
me in line with the code.
12:12
I love it at the root. I'll never have
12:14
too many read me's. No, totally. Like
12:17
put them in every module, right?
12:20
There should be the baseline one that is, Hey,
12:22
this is how you get up and running. This is how
12:24
you get things set up for your environment, blah, blah, blah.
12:27
Nobody has to go find a Wiki, right?
12:29
Like they don't have to know what to search for in the Wiki.
12:32
They have the code. They can open it. And
12:34
then every sub module, put a read
12:37
me in there. If there's anything that
12:39
if anything, that's probably the one,
12:41
the one place where I think I get frustrated
12:44
is,
12:45
you know, there'll be all these things to start
12:47
up a thing. And this, I guess this is why people come
12:49
buggy, right? Like, Hey, I see you have
12:51
this command line runner and there's these 12 options.
12:54
I don't know what they do. Right. But
12:56
that the read me, put it in the read
12:59
me. I'm a strong
13:00
fan of information
13:03
about the code should live
13:05
with the code and iterate with the
13:07
code. So it should be a read me in
13:10
the repo next to the code.
13:12
Like if it's about how to use this thing, how
13:14
to run this thing, you know,
13:16
like that, like what you just described, that's
13:19
in a read me next to the code. If
13:21
it's, Hey, here are the 18 environments,
13:24
you know, like information
13:26
about them or architecturally,
13:29
like how, you know, we're doing
13:31
things like that might be in a Wiki. Sure.
13:34
Fine. But things about the code live
13:36
with the code. I agree. Yeah.
13:38
You can do images and videos and stuff and link those in there
13:41
too. There's not, I think it's still a case for a
13:43
Wiki. Like there's reasons like meeting notes, things
13:45
like that. Sure. Stuff
13:47
like that, like schedules and stuff like all that stuff is nice
13:50
to have in Wiki and it's easier to link. Like it's hard
13:52
to link from one read me to another. Oh,
13:54
you know, you move it and it doesn't update all the links, you know,
13:57
stuff like that. But that was one thing I was
13:59
going to call out though.
13:59
is that you can, I don't know, I was
14:02
talking about like have like the parent read me and then
14:04
like sub-module read means, you can have
14:06
read means that are like linked to other read means,
14:09
you know, like GitHub will interpret that.
14:11
Yeah, it doesn't like, or even Visual Studio Code
14:13
will.
14:15
Yeah, it just, and you can do the whole control click.
14:17
It just, it doesn't, it doesn't like automatically
14:19
update if you move a read me or something, you know. Sure.
14:22
Yeah, it's rare. That's not a reason
14:24
not to do it. Yeah, true. I
14:27
will say we, you do
14:29
end up moving directories and stuff a lot more
14:31
than what you'd think as you start figuring out
14:33
better patterns and things, especially when you
14:36
move to new languages, right? Like if you
14:38
lived in a Java world forever and you went to Python, you're
14:40
probably gonna do things in a non-Python-y way
14:43
at first and then you're gonna realize the error of your
14:45
ways, so. Yeah, but I mean like what
14:48
I am not a fan of is
14:51
let's say that you have a repo
14:54
and to
14:57
get that thing running requires,
15:00
say, some number of steps, right?
15:02
Beyond just compiling, right? Because maybe there's
15:05
environment variables you need to set or
15:07
authentications that you need to already have sorted
15:10
out or whatever, you know, but
15:12
if you put that stuff over in a wiki,
15:15
then like as that code is iterating
15:17
and changing, well, the
15:19
instructions in that wiki, which version
15:21
of the code do they refer to, right? Because
15:25
they didn't, you know, it's not like they're
15:27
linking to a specific commit. They're just like generally
15:29
this is how you do this thing. But
15:31
if you put it in with the readme, then
15:35
maybe as you check out different branches or
15:37
different commits or tags or whatever,
15:40
maybe the instructions change with
15:42
that particular version of the code. And so that's
15:44
why I prefer things about
15:46
the code living with the code.
15:48
Yeah, I agree with that completely. And I would
15:50
say also get into the habit
15:53
of,
15:54
as you make changes with the code, think about,
15:56
hey, is there anything in the readme that needs to be updated
15:59
to support...
15:59
right for that very reason because it
16:02
does version right like if you check out on last
16:04
week's branch of the code It should have a different
16:07
read me if something was changed
16:09
on significantly for the new week's code. So It
16:13
is a fantastic way to let other
16:15
developers help themselves as they're
16:17
going through things
16:19
So PR is MRs too. It's a good chance
16:21
for someone say like hey I see you changed arguments,
16:23
but you didn't change the read me like that's not gonna
16:25
happen with a wiki. That's a great point Yeah
16:27
for sure
16:29
So yeah on on the thing of
16:32
should you support the stuff you work that
16:34
you created should it be yours forever? I
16:37
personally don't think so. I think
16:39
Do your best to make it to where people
16:42
can
16:43
can find information on it by the read
16:45
me via wiki You can link to a wiki
16:47
from the read me, right?
16:50
Try and make it to where they they can and then
16:53
passive aggressively send them the read me like
16:55
it'd be like hey Um, here you
16:58
go
16:58
So I don't know. I feel
17:01
like we should be better about everybody
17:03
spreading out the support and Understanding
17:06
of things so that you don't have one single
17:08
bottleneck on anything I feel like
17:10
Joe sends out the wiki links, you know
17:13
And and I'll send out like here's a link to the
17:15
read me because I love how
17:17
like github Azure DevOps They all will do
17:19
this where like they will interpret the markdown
17:21
for you You know so you can see this pretty
17:24
view of it in in the browser And
17:26
so I'll send those links out. I
17:29
do this question like how does this work or how
17:31
to use this or like? Well, what does that parameter mean?
17:34
Here's
17:34
the read me. Yeah, you know
17:36
that's interesting because I used to I
17:38
used to like send the path
17:40
to the file on my system, you know,
17:42
like Repository
17:45
whatever and over time I was like,
17:47
you know what exactly what outlaw just said I
17:49
know that this thing is formatted pretty in
17:52
in github or if you have an on-prem
17:54
get or whatever So I'll actually go find
17:56
the link to the file directly for the
17:58
branch directly
17:59
And then that way they go straight
18:02
to it and there's no questions. Well,
18:04
maybe this is a tip of the week then for you, because
18:06
in Visual Studio code, you don't even need to
18:08
find anything. You can just right click on it and say
18:11
open or copy remote path,
18:14
file path, and it'll give you the URL
18:16
to the repository version of that file.
18:18
Oh, that's good. I didn't know that. That is
18:21
tip of the week material right there. Yeah.
18:23
So you, and you can get like, if
18:25
you wanted the relative path. So like you were saying,
18:27
like how you would, you would previously give
18:29
them like the, uh, a link, you
18:32
know, a directory path based
18:34
on the repository. So like, Hey, wherever you have the repository
18:36
cloned, this is where you would find the file. You
18:38
can do that too.
18:40
But if you know the file, like in
18:42
that type of situation, I'm like, you know, command
18:44
P type in the file name, then the
18:47
explorer tree on the left automatically navigates
18:49
to the file. I right click
18:51
on the file, copy remote URL, boom,
18:53
paste that into Slack. There you go.
18:55
That's my passive aggressive version of Jay Z done
18:58
in a read me fashion.
18:59
I love that. I know
19:01
that works with the get hub. I wonder if that works for like other,
19:04
other sourcing or other like
19:06
source code repositories. Like it's get hub, you know, it's
19:08
like, it's, it's not just that path, right?
19:10
You know, like get hub.com slash org
19:13
name slash repo. And then it's like, it would be based
19:15
on the repo or something. Yeah. But
19:18
there's like, there's that little thing that you need to, there's like that, the
19:20
branch name and then the tree, right? There's
19:23
like some other word in there. I'll look it up, but
19:25
it's not just, uh, uh,
19:27
I don't think it's blob. I thought it was
19:29
like on this tree, but
19:32
it's not, uh, it's not like a standard URL. There's
19:34
not like a standard for get
19:36
website hosting paths.
19:39
Um, yeah, I mean, it could
19:42
be right. It might be, uh,
19:45
specific to, to
19:47
get hub. I
19:49
guess where this existed too under Azure DevOps,
19:51
but both of those would be Microsoft products.
19:54
Maybe there is some standard convention.
19:57
I just assumed it was based off of the. the
20:00
.get folder, like it knew how to
20:02
traverse that repository.
20:04
Right.
20:08
And now you're just like, oh, swap in remote name
20:10
here.
20:12
But maybe I'm wrong.
20:13
Still a good tip.
20:16
Yeah, so there's my quasi tip of the week
20:19
because Joe had to go and knock it down with a wiki.
20:22
Or a wiki, that doesn't work like that,
20:24
Michael. Yeah, I just like
20:26
to be a jerk. That's a good Joe impersonation, right?
20:29
That sounded just like him too. Yeah, totally,
20:31
totally not. Totally
20:33
not, wait, what? All
20:36
right, so. That was hashtag nail day, what are you talking
20:39
about? Nailed
20:41
it. That's hilarious. All
20:44
right, so here's another one that
20:46
I was wondering
20:46
what you guys, like just
20:49
your thoughts on this. So
20:51
there's always something that comes
20:54
up that's a work item
20:57
that is not super
20:59
appealing, right? Like it's
21:02
work that seems like it's not gonna
21:04
be fun. It's not, it
21:07
has to be done. Do
21:09
you raise your hand for that to take
21:11
one for the team? Knowing
21:14
that you're trying to do something for the greater good?
21:17
Like what are your
21:19
feelings and why are your feelings?
21:23
I think sometimes, I think some of that work
21:25
is like really important even though it's not
21:27
fun. But and it's, you
21:29
know, you should volunteer if you've got the space for
21:31
it. But you'll see like over time, like there's certain people that will just
21:33
never volunteer for stuff like that. And I think
21:36
that's not right either. So I think, you know, maybe
21:38
that's the conversation with the manager or something and be like, look, I've
21:41
taken the last couple of ones for the team. We need to spread this
21:43
out.
21:45
Okay, I'll
21:46
bet you, I'll.
21:48
I mean, I'm just thinking about from my own
21:50
past experience where like, I
21:52
mean, I feel like I've absolutely done that in
21:54
the past, you know, others
21:57
might argue that, but.
22:02
I just kind of view
22:04
it as like, I think
22:07
though the examples that are coming to
22:10
mind though, like I like empowering
22:13
other people like that, that,
22:15
that multiplication kind of factor, you
22:17
know, where I did something for the
22:19
team and now because that
22:21
like
22:23
everyone else is going to be able to like benefit,
22:25
you know, greatly from it, you know, kind of thing. So
22:30
because the kind of things that are coming to mind, like when you mention
22:32
them, like, oh, DevOps is
22:34
definitely like, I feel like this is definitely
22:37
a DevOps thing, right? Like where you take one for the team
22:39
and you're like, okay, I did this thing. I
22:41
made it better for us. And you know, I
22:43
put the work in, but like we all benefit
22:46
from it kind of thing. I mean,
22:48
I know that's not what you were talking about, but as definitely
22:50
like an a take on it. DevOps
22:53
can definitely feel that way. I'm talking about
22:55
more like,
22:56
Hey, there's a project that needs to be done. Everybody
22:59
thinks that the success rate is going to be garbage.
23:04
You know, you're working with stuff
23:06
that is hard to work with
23:08
and maybe even working with teams that
23:11
don't really even want to deal with it. Like,
23:15
but it needs to be done. Yeah. I
23:17
think like the, the bigger one though is like when it comes
23:19
to, Hey, here's an old bit of
23:21
technology and we need
23:23
to, we don't want to rewrite it. We don't want
23:26
to change it, but we need to like add a feature or update
23:28
something on it
23:29
and nobody wants to take it because
23:31
they're all like, well, I like to work on
23:33
the shiny new thing, not on that
23:36
turd. Yeah.
23:38
So, I mean, yeah. What are your thoughts
23:40
on that?
23:41
Yeah.
23:43
I'm of the, yeah. I'm
23:46
with Joe. Like, if it needs to be done, I will
23:49
do it. If that's what it's asked of me.
23:51
You know what I
23:52
mean? Yeah, totally. So
23:54
it's funny that all three of us think very
23:56
similar on that. I think that might be why,
23:59
why we are.
23:59
of the type of developers we are.
24:02
I think, uh, you know, I've definitely
24:04
taken them for the team. You know, like, here's
24:07
this thing that nobody wants. It's
24:10
like, all right, I'll do it.
24:12
But I do think what Joe said
24:15
is really important. There are some people that will never
24:17
raise their hands for that work.
24:19
And
24:20
it's not right that some
24:23
people always get tasked with doing the dirty stuff,
24:26
you know? So you got to figure
24:28
out a way to balance that out with a team to make
24:30
sure that you don't have one person
24:32
always stuck in the mire while other people
24:34
are always getting to do the fun stuff or, or
24:37
maybe it's not even fun. Maybe it's just the not
24:40
taxing stuff, right? Like there's some stuff that's
24:42
just taxing because there's
24:44
a, there's a super tight deadline. And,
24:48
you know, it may be that's the other thing,
24:50
right? Like it may not even be hard. It's
24:52
just that, Oh, this has to be done. And it has to
24:54
be done soon. And so it's going to be a grueling
24:57
type thing to get, to get through or
24:59
maybe it is a tight deadline,
25:02
but it's also like mentally
25:04
grueling. Right. Yeah. Yeah.
25:06
I mean,
25:07
it's okay, I think to take those
25:09
on occasion, but you also have to balance out
25:12
the mental health aspect of it too. Like there's some
25:14
things that'll just drag you down and it, and
25:17
it's hard to come up out of that rut sometimes. So
25:19
yeah.
25:21
Um,
25:24
here's the other thing to it.
25:26
Sometimes there are pros to doing that,
25:29
right? And the pro might be
25:32
you've created a trust with, with
25:34
your team or your management that
25:37
they know that you're one of the people that's a go-to
25:39
person. Um,
25:41
but that may also create the con
25:44
because they know that
25:46
you're the person that they can go to
25:48
to get these things done. And so they've built that
25:51
trust and they're going to lay, they're going to lean
25:53
on that trust over time. You know, so
25:57
yeah, that's
26:00
People problems are the worst problems.
26:02
They're the hardest. They're the hardest to solve. They
26:05
really are. Yeah
26:07
So yeah, I don't know I
26:09
mean, I guess for anybody out there doing
26:11
these type of things, you know, there are benefits
26:14
to it, but
26:15
But definitely try and balance it out
26:17
with with other people on the team who can who
26:19
can do those things
26:25
Yeah, I mean You
26:27
build good karma there You
26:29
do at least you hope you do you you hope
26:31
you are Yeah, it's
26:33
it's seriously. It's one of the tougher things
26:36
that I think
26:37
as a developer you deal with
26:40
ever is Like man,
26:42
I know this is gonna suck real bad Really
26:46
really want to raise my hand and offer to do this So
26:51
I don't know somebody's got to or somebody's gonna
26:53
point you out You remember like you'd sit in class
26:55
and teachers like hey, is anybody know the answer
26:57
to this? Nobody raises their hand and eventually
27:00
they're like, all right. Well you outlaw Tell
27:03
me oh you were asleep. All right. Um,
27:05
wow. Wait way to go I'm
27:07
like, I'm not even paying attention in your
27:09
fictitious example. That's right I
27:13
mean I saw it happen Yeah,
27:17
I mean that's what eventually happens
27:20
and you know what you know What really stinks about
27:22
that is sometimes the wrong person
27:24
will get paid for it Everybody starts grumbling
27:26
about it. And did you like hold up?
27:29
How's everybody upset? Like nobody volunteered
27:31
to do it?
27:32
So yeah
27:37
All right, so we got
27:39
to get here before Joe does because otherwise things
27:41
go sideways quick If
27:44
you haven't already left us a review you
27:47
can find some helpful links at Code
27:49
in box net slash review. We do greatly
27:51
appreciate reading those. They do put
27:53
a small interface. They mean a lot to us I
27:56
mean over the years you guys really like we
27:58
are in our tenth
27:59
year right now. Right.
28:02
That's crazy. And over those years,
28:05
nine plus years, we,
28:07
some
28:08
of the stories that, I mean, they're
28:10
truly, you know,
28:12
they, they truly play the heartstrings, right? Um,
28:14
I think I said that phrase, right? Um, but
28:18
yeah, that's what it was. Dang it. It
28:21
was so close. Um,
28:23
but yeah, I mean, there've been some really, some
28:26
really, uh, heartfelt messages that we've
28:28
received over the years. So we do really appreciate
28:30
those and, and I appreciate and thank those people
28:33
for reaching out and sharing those stories with us. So, uh,
28:35
if you have something you want to say, uh, you
28:38
can find some helpful links at coding blocks.net slash
28:40
review. And with that,
28:42
we head into my favorite portion of the show.
28:45
Survey says,
28:47
Hey, you know what we haven't had yet.
28:49
Nobody's like named their kid after coding
28:51
blocks or anything. So I guess, you know, we still
28:53
have room to grow. Okay.
28:56
I mean, maybe,
28:59
maybe not. I call my kids block heads all the time. You don't.
29:01
Oh yeah, probably.
29:04
Uh, well McGee sounds pretty good,
29:06
right? Wait,
29:09
you wanted them to name in your
29:12
world. The naming of the kids would be
29:14
after the three of us. So
29:16
somebody wouldn't name their kid
29:18
Joe Zach. Yeah. No, like outlaw underwood.
29:21
And then whatever your last name is, outlaw
29:23
under Zach. Smith
29:27
out under Zach, out under
29:30
Zach. There we go.
29:33
This is a terrible idea. Nobody please do this
29:36
all day. No, actually
29:38
I endorse this. I'm
29:40
looking forward to hearing what could come out
29:42
of this. This might
29:44
be the most amazing thing. This is the most
29:46
amazing idea we've had yet. I'll
29:49
get a tattoo of don't
29:52
believe them. Yeah. For real. Where's this
29:54
visual studio? I
29:56
can't show you. I'm
30:05
trying to even remember like why you promised
30:07
to get a visual studio tattoo.
30:09
Visual studio ever came out on Mac.
30:12
Oh, that's right. It's
30:14
crazy. Like Microsoft was so different back then 10
30:16
years ago. Yeah, and then it did. Yeah.
30:20
Yeah. So yeah, you still owe us a tattoo.
30:23
So yeah, I'm not, I'm not going to listen to your,
30:25
uh, your one about the names.
30:28
All right. Well, uh, like I said, we
30:30
head into my favorite portion. So this is
30:32
episode two oh nine. According
30:35
to, to that Co's trademark rules of engagement,
30:37
which we now all understand what I mean
30:40
by that. Yes. Uh,
30:42
it is Alan's,
30:44
uh, turn to go first. So
30:46
let me grab a winning streak. It's
30:54
awesome to create that, that
30:57
winning streak. All right. Well,
30:59
I'm going to give you an easy one to start with it. No bias
31:01
here, but you know,
31:03
uh, name a three
31:05
letter word that starts with the letter Z.
31:10
Really? That does not start
31:12
with Z. Sorry. All right. This
31:16
was, uh, this is from California, right? Do
31:20
these questions have an origin like that? Like
31:23
that in the show is shot. Like,
31:25
I don't know if these came from, so if it,
31:27
if it included the, you know, the UK and like,
31:30
oh, cause I didn't say said, oh, but I'm going
31:32
to go with, uh, I'm going to go
31:36
to California word. I'm going to go zap
31:38
zap. Okay.
31:39
Yep. I think
31:41
I got this one. Okay.
31:44
So number five answer on the
31:46
board.
31:48
This one's gross. Zit.
31:51
Oh yeah. 13 number four. Really
31:54
high Zen. Yeah.
31:57
Four 13. Okay. Good.
31:59
over here so I can see these two things at the same
32:02
time like a smart man would do.
32:06
Number three answer on the board is
32:09
Zap for 15. Pretty
32:12
good. Number two answer on the board
32:15
for 18 points, Zip
32:17
and rounding it out for 40 is Zoo.
32:20
Wow, look at that. All
32:22
right. So. That's
32:25
not even a commanding lead. I don't feel good about this. So.
32:28
It's California by the way. Figured it out.
32:30
Here you go Joe.
32:33
You ready for this one? There's no Zed. Yep.
32:36
Name an office supply
32:39
you'd use to pick
32:41
food out of your teeth. Jeez.
32:49
That is harsh. I
32:51
mean I
32:52
would just use paper.
32:54
A piece of paper? Yep. Okay.
32:57
If you're gonna get stuck in there then you're gonna need
33:00
the paper clip to get it out. Paper.
33:03
Yeah. That was my second choice.
33:05
Okay. So yours is paper. Alan
33:07
yours is. The paper clip. Paper
33:10
clip. All right. So
33:13
number six answer on the board is
33:15
Tack pen or pen
33:17
for six. No. No,
33:19
no, no. Letter opener for
33:22
number the fifth answer for eight. Fourth
33:25
answer is Staple. Nine. That
33:27
worked. Pen or pencil was the number three
33:30
answer for nine. That's really dumb.
33:32
These are pencils that make it worse right?
33:34
Right.
33:35
Now it's like why are your teeth graphite colored?
33:40
Number two answer on the board
33:43
for 12 points paper
33:45
or an envelope. Really?
33:48
You can get an envelope. Imagine getting a paper cut on your gum
33:51
between your teeth. Oh man.
33:54
Remember like you remember when we were kids did
33:56
you guys have like what's grosser than
33:58
gross? Do you remember this? kind of thing. Yeah.
34:01
Like that's what the paperclip cut between your teeth
34:03
reminded me of. Yeah. Like what's more painful
34:05
than painful. Okay.
34:08
Number one answer on the board
34:10
for 53 points
34:13
is paper. I feel a little bit
34:15
better now. Got some breathing
34:17
metal. I can't do the metal.
34:20
All right.
34:21
You don't
34:24
accidentally swallow a paperclip. So
34:31
Alan, uh, as his tradition,
34:33
you get to pick
34:35
the next and final question. Your
34:37
choices are name
34:40
a weather condition. That would be a good
34:42
name for a wrestler. Name
34:45
something that has the word super
34:48
in it, or name
34:51
something that parents can't wait for their
34:53
children to get out of the
34:57
third one. Okay. Okay.
35:00
Let me out of. Yeah.
35:04
So I don't even care if I lose this one. This is
35:06
pretty fun. Okay. Go the house, the
35:08
house. I
35:13
hope you're kidding around when you just said that. Oh,
35:26
that doesn't even want me here. That's
35:30
the right answer. But
35:30
I think I know the number one answer. Yeah.
35:33
Diapers. Diapers. Oh, that's a really
35:35
good answer. All right. All right. All right.
35:39
Number four answer on the board
35:41
and the lack of
35:43
options here should give you some indication. Number
35:46
four answer on the board
35:47
for four points.
35:51
Teens slash puberty. Okay.
35:54
Yeah. I get that. That's not a bad answer. Oh my God.
35:57
I house that number one. Right. I'll
36:00
take diapers any day of the week. Yeah,
36:03
here's the misconception because Joe said diapers,
36:05
but diapers are like, you know,
36:07
like every couple hours there might be
36:10
like, oh, I gotta go change the diaper. No big deal,
36:12
right?
36:13
But when they're going through puberty,
36:15
man, it's like
36:18
nonstop. Like that's
36:21
like you're literally, you have a crazy person
36:23
living in your house. They
36:26
are insane. Yeah. Yeah.
36:29
And constantly mad at you because
36:31
you chose to breathe. Yeah.
36:34
How dare you choose to breathe? Yes. Um,
36:37
number three answer on the board
36:40
for 21 points. Oh, these
36:42
are climbing school or
36:44
college. Thought
36:45
about that one. Yeah.
36:48
Number two.
36:50
Diapers. Wow. Did
36:53
I get the number one answer? I got 35
36:57
points for diapers. Number
37:00
one answer on the board for 36 points is the
37:02
house. Look
37:06
at that. I took number
37:08
one on all of them. Wow. Somebody,
37:11
somebody is continuing their winning
37:13
streak of one.
37:14
I studied. Okay.
37:20
That's amazing.
37:22
All right. Got the winning streak back. Yeah.
37:24
Good.
37:25
So welcome. Hey, uh, welcome
37:28
to the, to the winning circle here, Alan. Uh,
37:30
I appreciate it. Yeah. We'll give you
37:32
a first time winner's jacket. It'll
37:35
be like coding blocks blue, you know,
37:37
there we go. Yeah. Masters has their green jackets.
37:40
We'll have the blue jackets. Be out
37:42
under, out under Zach be written
37:44
on the back somewhere.
37:49
Oh man. Outward
37:52
under out Zach. Yeah. We'll have
37:54
to work with that. Okay.
37:56
Yeah. All right. That's going to take some work. Yep.
37:59
I think you need an. syllable in your name, Joe,
38:01
that's the problem. He had these one
38:03
syllables and we can't work with that. Yeah,
38:06
he gets to steal the whole part of it. See, we
38:09
could be like Joe Underlaw,
38:11
you know? Yeah, yeah. See where
38:13
we get to go with this? You're ruining things,
38:16
Joe. I
38:19
blame your parents for your stupid name. Hey,
38:21
wait, but you said on a show that that
38:23
wasn't your original name, right? Like it was
38:26
Polish or something. Yeah, yeah, I can't pronounce
38:28
it. Exactly. It's got like 12
38:31
syllables, so we should go back to the- Yeah, depending
38:33
which cousin you ask, like they all say it differently and
38:35
spell differently. Do you guys, are you even related?
38:37
Do you have your own, do you
38:40
have a side
38:41
show that we aren't aware of, this like Joe
38:44
between two computers or something? Yeah.
38:47
Joe Zach Galifianakis between
38:49
two computers. Yeah, good luck Googling it though. Well,
38:52
I can't spell it, no, you can't spell it. That
38:54
was awesome. No way. All
38:56
right.
38:57
All right. So I had one more that
39:00
popped into my head that
39:02
drives me crazy. And
39:04
I think we've talked about it before, but- Mm-hmm.
39:08
We definitely have. You'll get some
39:11
commands
39:13
from up above that you have to hit a certain
39:16
unit test coverage or code
39:19
test coverage number
39:21
with your stuff. And man,
39:23
that drives me crazy. So like I I'm
39:25
curious, you guys, the thoughts on on
39:28
test coverage percentages
39:31
versus
39:34
the actual usefulness of the tests.
39:37
I, okay. So here, here
39:39
I do not have a problem with having
39:42
a target percentage
39:45
of code covered by test. I
39:48
think that that's, you know, not
39:50
a crazy metric. If you wanted
39:53
to like have a PR gate, for example, around
39:55
like, Hey, you know, you
39:58
introduce so much new code.
39:59
brought the percentage down you you that
40:02
implies that you aren't testing it and so
40:05
therefore we can't merge your code in until
40:07
you do that. The problem that I have
40:09
with this though is that when
40:13
others above will say
40:15
that that number needs to be
40:17
really high because to me that
40:20
that number and like the PR gate example that
40:22
I gave
40:23
you know it
40:25
if you aimed for like 70 ish
40:28
percent give or take five you know like to
40:30
me that seems like a reasonable thing
40:32
right because there's absolutely going to
40:34
be code that cannot be covered with
40:37
a unit test because by definition
40:40
it's an integration
40:41
it's integration test code right you or
40:43
integration code because it's like trying to actually connect
40:45
to a database or whatever so there's absolutely
40:48
code that won't get
40:50
covered
40:51
and but you know
40:53
you'll have sometimes though these
40:56
really high numbers that would be given to
40:58
you
40:59
and the example that I was given to one of our
41:01
friends was that you
41:04
can have a code you
41:06
can have code that is a hundred percent test covered
41:09
by test that doesn't mean that
41:11
the code is bug free or correct
41:14
or good or anything like that and so the example
41:16
that I gave was like imagine if you had a simple
41:19
a simple function that
41:21
that just took in two
41:24
numbers and you know it
41:26
was called divide takes into numbers and returns
41:28
back a result right you could absolutely
41:31
write a test
41:34
that
41:34
gave you know for
41:37
into and expected an answer
41:39
of two and boom now that method
41:41
is a hundred percent covered by
41:43
a test right right so as far as management
41:46
could be concerned hey our
41:48
code is perfect because we have a hundred percent test
41:50
coverage but then the real world comes along in
41:52
the first time that a zero is thrown
41:54
in as the divisor
41:57
suddenly your code is broken right
41:59
right And so that's an example of where like a hundred
42:01
percent test coverage
42:04
does not mean what some
42:06
think it means. Right. And
42:09
it's not, it's not like the
42:11
metric that you should go after. It's not
42:13
the metric you should care about necessarily. And
42:15
to your point,
42:17
all it means is it was referenced
42:20
once in a test, right? So a hundred
42:22
percent coverage doesn't mean that you thought about
42:24
all the cases, the use of that code.
42:26
It's just, you touched it. And.
42:29
I exercised it once. Right. And
42:32
the part that bugs me more is like, when you have things
42:34
like pogos or
42:36
pocos and C sharp or whatever, like
42:38
those are not classes you need to test
42:41
their data movers. You've put a value
42:43
in them and you move them. And if you're writing unit
42:46
tests that,
42:48
that check to make sure that you didn't pass a string
42:51
for a number, it's like, is
42:53
that a useful test? I don't think it is right.
42:56
Like I think that's, that's
42:58
writing test code for the sake of having test
43:00
code, you know, a pogo or any
43:02
of that, like those shouldn't matter.
43:07
Business cases, the divider
43:09
is as simple as it is, is actually
43:12
a good, a good example
43:14
of something that is, is testable,
43:16
right? Hey, you know, there are, are
43:19
cases where like putting a zero in for a
43:21
divisor should throw an exception because it's not,
43:24
you can't divide by zero. So that's
43:26
a, a, a business, um,
43:29
a business rule, right? And
43:32
that's what you should be testing with unit
43:34
tests and integration tests should
43:36
be testing that the flow of something from
43:39
point A to point B
43:41
works as expected. Now those are going to
43:43
be slower, but in my mind,
43:45
that in some cases is
43:48
more useful than trying to test something like,
43:50
well, in every case that's more useful
43:52
than testing something like a pogo. And that's why
43:54
when,
43:55
when like blanket blanket
43:57
statements, like you need to have 80% code.
43:59
coverage or 90% or something like that,
44:02
it's like, man, no, that doesn't
44:04
get you to the point
44:06
of what I think testing is supposed to be, which
44:08
we've all talked about before, which is the
44:10
confidence to make a change.
44:13
And I don't think any of what we just talked
44:15
about does that. All that does is say,
44:17
hey, we have a really high test code coverage
44:19
number. Yeah.
44:21
I mean, I agree with all of that. I can't
44:24
say anything really
44:26
extra other than I think it's good to have
44:29
a goal. Having it be
44:31
unreasonable is just demotivating, but
44:33
you got to pick something and it makes sense
44:35
to pick something high. But
44:38
the problem is, is if you start going after
44:40
like, um,
44:43
if you make an unreasonable
44:46
requirement of like, Hey, the test code coverage has
44:48
to be like a hundred percent, 95%,
44:50
whatever 90%, you
44:53
know, just something high,
44:55
you can game that you can completely game that
44:57
and you're not, uh, you
45:00
know, really getting the goal
45:02
that you want. You're just in
45:05
fact, what you as the manager
45:07
don't even realize that you're doing is you're actually
45:09
encouraging your people to game the system
45:12
so that they can get to that number so
45:14
that you can like check your box
45:16
to like, and try to convince
45:18
your upper management, like, Hey, we are,
45:21
our code's perfect, dude. 100% test code
45:23
coverage. And really like to Alan's point, it
45:25
doesn't mean anything. Like, so what you ran
45:28
it through one test case
45:30
out of an infinite number. Like
45:33
no, you're not even like pushing. You don't even necessarily
45:35
have to push it to the extremes. I would rather,
45:37
I would much rather have code
45:40
that might not, they might have a lower
45:42
test
45:42
coverage percentage, but what
45:45
code is covered is thoroughly
45:48
ran through its paces. And it's
45:50
crucial to your, your, your
45:53
app, your project, whatever, right? Make
45:56
sure the backbone
45:58
of your code, the thing that does the.
45:59
important work is thoroughly
46:02
tested and is good.
46:04
That seems like the most important.
46:06
Like when outlaws talking about like gaming
46:08
it, like we were talking about this the other day, um,
46:10
me and some coworkers, like one of the ways
46:13
people cheat this type stuff is they'll just put
46:15
code that they think shouldn't really
46:17
even be tested and it try catch
46:20
and then it's tested.
46:22
You could totally put thing in there. It could fail
46:24
and you try to catch it and it's covered. Like
46:28
gaming the system sucks. It doesn't help
46:30
anybody. So creating unrealistic targets
46:33
also sucks because it, it
46:35
encourages people to try and figure out ways
46:37
around it.
46:39
It is, it reminds me of password. You guys remember
46:42
when they were like, Oh, your password needs to, it
46:44
has to change every time. And so people were like,
46:46
okay, this is ridiculous. So instead of having
46:49
a really strong password, uh, people
46:51
would just use the same password and put the
46:53
month number at the end of it or something. Right? Like,
46:55
when you, when you, when
47:00
you enforce
47:04
bad rules,
47:06
then you basically make it
47:08
to where people don't want to have to deal with it.
47:11
Right. Yeah. I mean, like we
47:13
as a, as a
47:16
civilization, right? Like we're,
47:18
we're pretty good at problem solving. Like that's, that's
47:21
how we have survived, you know,
47:23
thousands of years, right? Uh,
47:25
is figuring out how to survive and problem solve. So
47:27
if you put some obscene obstacle
47:30
in our way, we'll figure a way around it. That's,
47:33
that's the, that's the end of it. Yeah,
47:35
man. So, um,
47:38
but this is actually a pretty cool segue
47:41
into my question that I have for you
47:43
guys, which is what's a technology
47:45
that has reignited excitement
47:48
in you?
47:51
Uh, I guess I'll go first. So, you know, a GPT
47:54
is something that I think is really cool. I've been playing around a little
47:56
bit, uh, with it, but there's also a Google
47:58
bar, there's llama.
47:59
There's a couple other things. I think there's
48:02
a lot of innovation space that's really cool. So
48:04
I started working on a little thing that would let me compare results
48:07
across, like, Bard. Not
48:10
Bard. I don't have access to Bard yet. Dang
48:12
it. But GPT
48:14
has API and a
48:17
pack up. So I can just have one prompt and
48:19
see what both do. It's totally
48:22
silly and doesn't really accomplish much. But
48:24
I'm just experimenting. And I
48:26
think it's cool. Also, Unity, just game dev
48:28
in general, has been really fun. It's so different
48:30
from what I do day to day. It's fun to make stuff
48:33
jump up and spin around. Now, before
48:35
you answer, Alan, do you think
48:37
that
48:38
Joe got that answer because he went to
48:41
chat GPT and chat GPT said
48:43
chat GPT was the thing? I think
48:45
so. Yeah. It sounded like that. That's what
48:47
it said. I don't know what I was supposed to do. Think
48:50
about myself. Man, so that's
48:52
interesting. I mean,
48:55
chat GPT and all the AI stuff out
48:57
there that's coming to life now has
49:01
me interested and curious.
49:03
But I haven't touched it. I know
49:05
Jay-Z's always messing with it. He's the
49:08
gift for Secret Santa
49:10
for Outlaw was generated from an AI
49:12
thing from him. He's been messing
49:14
with this stuff quite a bit. So
49:18
from the information he's been sharing, I'm
49:20
super curious. The thing that I've actually
49:22
touched
49:23
that
49:24
ignites interest in
49:26
me, and I've always said this, I love big
49:28
data. I love huge amounts of data.
49:32
So
49:33
streaming technology still to me
49:35
are just,
49:36
I haven't gotten to mess with them as much as
49:38
I want, even though I gave a presentation on
49:40
them a couple of years back. Great.
49:43
Now I'm thinking about donuts. Way to go, Alan. Right, donuts.
49:45
There we go.
49:48
But yeah, I mean. His presentation was
49:50
on streaming donuts. Yeah, streaming donuts.
49:54
The challenge is
49:56
when you start thinking about unbounded sets
49:58
of data and how you have. to do
50:00
state and all that kind of stuff is really interesting
50:02
to me. I mean, there's sort of hard computer
50:04
science, the problems to solve a lot of times. And
50:08
those are fun. Those are interesting. So, um,
50:10
I'd say that was probably the one that,
50:13
that most has
50:16
grabbed my interest over the past several years and
50:18
kept it honestly, which is, which is crazy.
50:20
That doesn't usually happen.
50:24
So I guess I'm, I'm behind the eight
50:26
ball, you know, compared to where you
50:28
two guys have been here recently in
50:30
our professional
50:33
lives, only because just the way, like you take
50:35
them, talking about taking one for the team, right? Right.
50:37
Like I've definitely been on some, uh, you know,
50:40
you're, you're two different, like year
50:42
long efforts that put me behind
50:44
the eight ball and stuff. So there were like things that you guys
50:47
were talking about and I'm like, looking at it like from
50:49
the surface and I'm like, yeah, that does look cool.
50:51
That is cool. But I never had a chance to like super
50:54
dig in, you know, dive in and, like
50:56
get, uh,
50:57
you know, like more than just
51:00
a toe wet. You know what I mean? And
51:03
so this is why I say, uh, this
51:05
is a great segue cause you're talking about the test coverage
51:07
and all that.
51:08
So for me, it's been
51:10
Kotlin here in the last, uh,
51:13
you know, several weeks. And in
51:15
the, in the segue there was cause you were talking about pogos
51:17
and all that. And I was like, Oh yeah, well Kotlin actually
51:19
like makes it super clear. This is a data class.
51:22
Like, yeah, that's all I,
51:24
all I expected of this thing. It's literally
51:26
named. There's a keyword data. Boom.
51:29
It's a data class. And if you try
51:31
to do anything else with it, you know, what's wrong with
51:33
you? Um,
51:35
yeah, there's just so many cool little like smart
51:37
things about it that I'm like,
51:39
I really, I really, uh,
51:43
you know, that's, that's like super well thought out. Like one, I
51:46
got a tip of the week coming that I was like just
51:48
super in love with like how
51:51
clear and
51:52
expressive it was. Like what was happening there.
51:54
But, uh,
51:55
but on the other hand though, there's, it's not that he's
51:57
necessarily perfect though. Cause like the bang bang.
52:00
operator and Kotlin kind of like
52:02
upset me because I'm like wait this means something
52:04
different in other languages and we've kind of already
52:06
agreed on like what this means why are we why
52:09
are we changing the this definition
52:11
you know instead of that stuff
52:13
yeah instead of it being like related to not
52:16
knots or what not
52:18
not not what not hey I just did that okay
52:21
that just happened but yeah
52:24
so I'm
52:25
just in also and
52:27
I guess this is a segue into my next comment here
52:29
though too I
52:31
think that part of the thing that has like
52:33
made me super in
52:36
love with it and like just appreciative
52:39
of it and you know enjoy like
52:42
it's just can we just say like what a pleasure
52:44
it is you know
52:47
like like just to write in Kotlin
52:49
it truly is right
52:51
but going apart and
52:53
going along with that though it's kind of in an old
52:55
school kind of like dopamine hit was
52:57
like when you do have a question
52:59
right
53:00
JetBrains documentation
53:03
for Kotlin is amazing
53:07
it's outstanding it is awesome it's
53:09
like it's like back you remember back
53:11
in the 90s when like the MSDN documentation
53:15
was the thing man like nothing
53:17
touched it right yes it was like if you
53:19
had a question boom you know there
53:21
you went right and of course we all loaded the MSDN
53:24
documentation like on off the
53:26
CD onto our computer or the floppies you
53:28
know depending yeah
53:30
because it was that awesome you know until took out
53:32
all webified but uh
53:35
you know I say
53:37
that that's a segue in my next comment because what
53:40
is also frustrating is that
53:43
from the beginning of time for Java right
53:45
they there was this concept of Java
53:48
doc but the
53:52
frustration in working
53:53
in like a Java ecosystem
53:56
is that where some projects
53:59
and or developers or what
53:59
whatever, will treat, will can
54:02
think that, oh, well, we
54:04
have Java doc. So we have, we have documentation
54:06
for our project. Here you go. And you're
54:08
like, that's no,
54:11
it's, it's okay. I
54:13
see what you did there. Like, yeah, you
54:16
gave me a page that says, here's
54:18
the method name and here's the parameters. This
54:20
parameter is a string.
54:22
Thanks. Yeah. I couldn't
54:24
tell that before. Yeah.
54:26
No, you really went out of your way with that one. Why
54:29
would I use that?
54:30
Like, when do I need to use that? Like, you
54:33
may be an example of like when and why and what.
54:36
Oh, so frustrating. Uh,
54:39
so, so I, I
54:42
strongly, I have, I have, if
54:45
any project where they like treat like, oh, our
54:47
Java doc is our documentation. I'm like, yeah,
54:50
like I'm already like antsy. Like it better
54:53
be really good Java doc then. It
54:55
never, it never is. It
54:57
never, I've never seen good Java docs. That,
54:59
that goes onto my whole rant about bowel
55:01
dung or bail dung or whatever it is. Like
55:05
they are just a step past Java docs
55:07
in most cases. Like, you know,
55:09
they sort of lead you to what you
55:12
sort of
55:12
need, but they leave out all the import
55:14
statements, they lead out all the con, leave
55:16
out all the contacts. Like you can't actually
55:18
make anything work from their docs. And it's
55:20
like, I give, Oh, I mean the, the, the
55:23
Kotlin documentation is such a pleasure
55:25
because like, if you do have a question about
55:27
something in a lot of their, uh, code examples,
55:30
there's a play button. You can actually,
55:33
you know, experiment and execute the code
55:35
right there in the browser and be like, well, how
55:37
does this work? What is it? What if I want to do this? Like, what does
55:39
it do? And then boom, and there's a link to a playground
55:41
if you needed
55:42
to take it further, like Kotlin
55:44
for
55:47
the win. It's gotta be
55:49
like the best technology that's come out in
55:51
like, you know, one of the top technologies
55:54
has come out in recent years.
55:56
They're, they're up there with the C
55:58
sharp documentation because dot net.
55:59
It also went to that same whole thing, right? Where
56:02
if you had a question about code, they've got the stuff
56:05
on the page, they've got the Git snippets, they've got
56:07
all that stuff. Did they put live
56:09
examples with the Play button? I haven't seen that lately. They
56:11
do, yeah. Shows you how much C sharp
56:13
development I've done recently. Yeah, I mean,
56:17
Microsoft was always top notch,
56:19
right? Like they were always tier one. And
56:22
Kotlin is right there with them, which is
56:24
shocking because you'd think Java would be
56:26
as long as it's been around and as much
56:29
time as they've had to get there. And as popular
56:31
as it is, yeah, and just crap. The
56:34
one thing that I do really appreciate
56:36
about the
56:38
current MSDN documentation that
56:40
Microsoft provides is the GitHub link.
56:43
You find a problem? Here's the GitHub
56:45
repo, go submit a PR, you can fix that documentation
56:48
or improve it or whatever you want to do. The
56:52
Kotlin documentation doesn't take it that far, but
56:54
still, I'm not gonna hold that against them. But
56:57
yeah, that's, I mean, the streaming stuff, definitely,
57:00
I mean, how do
57:02
you not like solving those kind of problems,
57:05
right?
57:06
They're definitely
57:09
big,
57:10
you know? They're interesting, right? Like, I mean,
57:13
windowing, like
57:15
if you've never had to deal with data
57:19
coming in in some sort of stream
57:21
versus a batch, just look up
57:23
windowing and your whole world
57:25
will go, oh, how
57:28
do we, ooh. I never thought about
57:30
that. Yeah, yeah, how do I solve
57:32
that? It's just, it's really interesting problems.
57:35
I mean, any kind of problems at scale,
57:38
which is basically what you're, you know,
57:40
in a nutshell, you could kind of think of big data streaming
57:43
problems as like a way
57:45
to solve data at scale.
57:48
All scale problems are like super
57:50
interesting, right? Like, who was
57:53
it? And it wasn't
57:55
Martin Fowler, who was the screaming?
58:00
um, code one,
58:03
uh, stack overflow,
58:05
uh, streaming
58:08
code. No. The screaming that,
58:10
that, that, um, Oh
58:12
my gosh. He's like avatar. He's like, he's
58:14
screaming like, Oh, Oh, Jeff. Yeah. I believe
58:17
it was Jeff. Yeah. That,
58:20
uh, that had like an article
58:22
about like all things are fast
58:25
for small in,
58:26
you know, does that ring a bell
58:28
with you guys? So like, you're like, yeah, okay.
58:30
Who cares? Like whatever, you know, but when
58:32
you can make something fast at like the large scale,
58:35
right? That's when it's like, Oh, super interesting,
58:37
which is what you're describing. Yeah,
58:39
totally. That's exactly what it is.
58:42
So, um, but you know
58:44
what, uh, Jay Z definitely had, right. I should have
58:46
gone to chat GPT and asked to chat. You
58:50
said you have a phone
58:52
app. You have, uh, I just go to the website
58:54
on my phone, but, uh, yeah, like, uh, if you can't
58:56
use it at work, like you can still get advice for it, but like, you
58:59
know, depending on your work policy and like what their,
59:01
you know, reasons are, what they're trying to avoid. Uh, yeah,
59:04
it's like still nice sometimes to just, just
59:06
pull it up in your phone and be like, how do I do this stupid
59:08
Excel formula or like this function
59:10
is deprecated. What should I be using instead?
59:12
As long as it's before like 2021, 20, you
59:14
know, early 22, then you're
59:16
good. Right. Yeah.
59:19
Yeah. I mean, I do think
59:21
I do agree with you though, Joe, like it is going to be
59:23
interesting to see like, where does that take
59:25
us? You know, there's definitely like a
59:27
lot of, uh, you know, experts
59:29
that are talking about like, you know, ramifications
59:32
and things like that. Like, what is this going
59:34
to mean for us? So there's definitely
59:36
a lot of excitement there. So that's why I'm saying like, I'm
59:38
definitely behind the eight ball. Cause my dumb answer
59:40
was Kotlin, you know, meanwhile you're
59:42
picking something extremely topical. Um,
59:45
but, uh,
59:47
you know, um,
59:49
it, it, I am excited to see
59:52
like, where do we go from here? And like,
59:54
I thought, I don't know if I said this on the show, but,
59:57
um, I think I had talked about this with, uh,
59:59
you know,
59:59
family or friends, I forget. But
1:00:02
there was a comment about, with
1:00:07
things like chat GPT where
1:00:09
you can ask it, in your example,
1:00:11
like, hey, I wanna write a function
1:00:14
that does X, Y, and Z, or I need a script that does
1:00:16
blah, blah, blah, blah, blah, and then chat
1:00:19
GPT will put it out and everything. And
1:00:21
somebody made a comment about, well,
1:00:24
I wonder if we're gonna need developers, or
1:00:26
is this gonna be the end of developers, or something to
1:00:28
that kind of effect, which that type of comment has
1:00:30
come out before, right? And
1:00:33
my response was,
1:00:34
well, I don't think it's
1:00:37
necessarily gonna replace this, it's gonna,
1:00:40
the industries that'll be, and it's not
1:00:42
just developers, it could be like legal or
1:00:44
whatever, right?
1:00:47
The
1:00:49
people that'll succeed will be the ones that know how to
1:00:51
use the tools. And chat GPT
1:00:54
is another tool at our disposal, right? It'd
1:00:56
be like if you're trying to fly the enterprise and you don't know
1:00:58
how to talk to the computer, right?
1:01:00
Yeah, I totally agree.
1:01:02
There's some things that it's terrible at, too, like things that
1:01:04
you would think like math, you would think that a computer
1:01:06
would be good at math, right? And just other
1:01:08
stuff, like you gotta remember, like this thing is not,
1:01:10
like a person that doesn't really have intents, it's a
1:01:13
language model, it's literally just stringing stuff together
1:01:15
probabilistically, and it's easy to forget
1:01:17
that, so I think that the sooner you start kinda mess with it,
1:01:19
the better you'll get at using it, and I think that the
1:01:21
people that do start are just gonna have
1:01:23
a head start on where tooling and stuff is going.
1:01:26
Yeah.
1:01:27
That's excellent. All right, well, we'll
1:01:30
have some links in the resources we like
1:01:32
section for all of this, but with that, we
1:01:34
head into Allen's,
1:01:36
oh, no?
1:01:37
Oh, so in the resources we like,
1:01:40
we were talking about the Kotlin Playground and that kinda
1:01:42
stuff, I went and just grabbed one example
1:01:44
of the Microsoft stuff where
1:01:46
they have something very similar to that, where they have
1:01:48
things that they're teaching you what to do, and then they've
1:01:50
got their little playground thing on the side. But
1:01:52
this
1:01:53
is... This is their learning thing? Yeah, this is different.
1:01:56
This isn't their documentation. Their documentation
1:01:58
has things in line, like...
1:01:59
which you were talking about, like run this code here or whatever,
1:02:02
but I couldn't find that as quick because
1:02:04
I couldn't think of a method to go check this out. Yeah,
1:02:06
that didn't count. That's a learning thing. That's
1:02:08
not documentation. But it's pretty good. It's good, yeah,
1:02:10
it's definitely good. Yeah, absolutely.
1:02:13
So I'll find something else before these show notes go live,
1:02:15
but yeah.
1:02:16
All right, so with that, we head into Alan's
1:02:18
favorite portion of the show.
1:02:20
It's the tip of the week.
1:02:24
Hey, you're kind of muted, Joe, so nobody.
1:02:27
More than kind of muted. You were actually
1:02:29
muted. Yeah, sorry. I
1:02:31
usually don't, and I think I am. But yeah,
1:02:34
I just decided to drink water right when
1:02:36
I was, anyway, so I got
1:02:38
two tips here. One from Dave Fallot. Thanks, Dave.
1:02:40
Warp AI is a currently free,
1:02:43
but won't always be terminal for macOS
1:02:46
that integrates in AI. I
1:02:48
say NIAI because you have two choices.
1:02:51
You can run a local AI, which means your
1:02:53
stuff isn't getting uploaded anywhere. So none of
1:02:55
your context and your files and your stuff is being
1:02:57
uploaded, or you can do a cloud-based AI and
1:03:00
I actually have installed it. I
1:03:02
haven't been on my personal laptop for a
1:03:04
while. I haven't done any coding stuff, so I haven't used it much.
1:03:07
But it does have several nice features like that I've
1:03:09
got, I'll tell you in a second. And
1:03:14
so I'm getting out of myself. Yeah, so
1:03:16
command prediction, which is just what you might expect.
1:03:18
So it's like, you know, better than normal IntelliSense.
1:03:21
It'll actually kind of help predict what you're trying
1:03:23
to do and fill in
1:03:25
some stuff with like tab auto-completion. Quick
1:03:28
error lookup, which is really nice. So imagine like you
1:03:30
get an error code like when you run a bash
1:03:33
command or just, you know, like you run a Python
1:03:35
program or something and you get some, you know, like
1:03:38
exit code NPE line 2005 error
1:03:41
code ABC. Then
1:03:45
what they do is they give
1:03:47
you a convenient shortcut for just clicking on it and like
1:03:50
not doing a Google, but actually,
1:03:52
you know, doing some sort of like
1:03:54
AI kind of base recommendation
1:03:56
for what you might need to do to correct that problem.
1:03:59
integrated search, which is nice. So
1:04:02
you can actually search for recommendations
1:04:04
with things that are not AI based, like Stack
1:04:07
Overflow, Google type stuff, which is actually kind of crazy
1:04:09
to think that my terminal doesn't
1:04:11
already have that. I never really thought to want that,
1:04:13
but now I kind of do, because I really hate tabbing
1:04:16
out of the context of it, I want to stay there. And
1:04:18
of course it's got an AI prompt, so you can just kind of ask questions
1:04:21
or whatever.
1:04:23
And so that, yeah, that's a war with AI. It
1:04:25
is macOS only for
1:04:27
the moment, so it has to be pretty dang
1:04:29
good to get me out of I-term too, but we'll
1:04:31
see. It will be.
1:04:33
I got another one for you. So this
1:04:36
is a book called Nature of Code, and this is
1:04:39
thanks to MicroG for suggesting this code.
1:04:41
And what is it? I
1:04:44
guess I can say the word physics. It's a book on kind
1:04:46
of like the type of physics
1:04:49
stuff you would be doing in games or just visual
1:04:51
programming. So like the first chapter is all about
1:04:54
vectors, adding vectors, finding intersection,
1:04:57
the points where two vectors would
1:05:00
meet, finding parallel,
1:05:02
finding tangents, things
1:05:04
like that. It's got chapters
1:05:06
on forces. I don't
1:05:08
know what oscillation means here, but
1:05:10
cellular automata, fractals, just
1:05:13
kind of like cool visual type stuff.
1:05:15
And it's at a low level, so it's not really starting
1:05:19
with any specific, I think it mostly does processing
1:05:22
as a language, but it's more about kind of the principles
1:05:24
behind this stuff and how to integrate
1:05:26
them with programming. That's one thing I noticed
1:05:28
with like physics 101 type
1:05:31
stuff from like high school, college, or whatever, you
1:05:34
learn these formulas and then you go to kind of do them in programming.
1:05:36
It doesn't translate
1:05:38
super easily sometimes. And so it's
1:05:40
the way you kind of think about stuff
1:05:42
when you're doing it on pen and paper versus
1:05:46
we're doing it in a programming language, which is different. So it's kind
1:05:48
of cool to have a book that bridges that gap
1:05:50
between like
1:05:52
kind of low level physics-y
1:05:55
type stuff and programming.
1:05:57
And the book is totally free, by the way. You can order a
1:05:59
physical copy if you want. like a print on demand time
1:06:01
thing, but the entire book is available just
1:06:03
on the website.
1:06:04
You know, I was going to say that they, I was
1:06:06
going to be disappointed that maybe like uh,
1:06:08
an opportunity had been missed, but
1:06:11
then when I go and look at it and
1:06:13
I see that in fact, uh,
1:06:15
the author, Daniel Schiffman did
1:06:18
in fact take advantage of the opportunity that I'm
1:06:20
thinking of. And I super appreciated this because
1:06:23
there is a quote from captain over Roger
1:06:25
Roger. What's our vector Victor. And
1:06:27
uh, yeah,
1:06:29
so thank you for throwing that in there. Mr.
1:06:31
Schiffman. That, that means a lot
1:06:33
to me.
1:06:34
Yeah. That's what's going on.
1:06:37
That's it for me. All right. So,
1:06:39
uh, you know, I mentioned kind of tease this earlier
1:06:42
about, uh, Kotlin and, uh, think,
1:06:45
so one of the examples of
1:06:47
like something super expressive that I thought you
1:06:49
could do with Kotlin. And I was like, oh, what a, what
1:06:51
a pleasure. So nice. The
1:06:54
map of feature in Kotlin
1:06:58
where you can just literally like
1:07:00
whatever your key is the word
1:07:02
to, and then whatever your value is. So
1:07:04
key to value done. And
1:07:07
you can have like a whole list of these things and
1:07:09
it would create that map of it.
1:07:12
And where I needed this where like, I was like,
1:07:14
well, I don't really want to create, you know, something
1:07:18
complex for this, but I want to create
1:07:20
just a simple Jason format
1:07:23
of like these key value kind
1:07:25
of pairs and, and you know, there's going to be
1:07:27
multiple of these and I need it in a Jason format. And
1:07:29
so, uh, Google has a
1:07:32
Jason library
1:07:33
and you can say to
1:07:36
Jason of some thing,
1:07:38
some object type, right? And it'll automatically
1:07:41
return back a Jason representation
1:07:43
of it. And one of the things that you could pass in was
1:07:46
the map.
1:07:47
And in
1:07:49
Kotlin, it just was so
1:07:51
easy to get just a nice simple
1:07:54
Jason representation of this thing using
1:07:56
some like Gson dot two Jason
1:07:59
parentheses. map of key to
1:08:01
value and and you
1:08:03
know repeat however many keys and values
1:08:05
you have but that's
1:08:08
just I love where we're
1:08:10
at I love where we're at can we just say that
1:08:13
it is nice when you get a
1:08:15
little bit further you'll see to build lists
1:08:18
oh yeah they have
1:08:20
list of but
1:08:23
they take it like to a computer
1:08:25
science II next step to
1:08:27
where you'll have list of or mutable list
1:08:30
of so you'll know whether or not you have something
1:08:32
that can change or not right so they're introducing
1:08:35
some of the tech terminology
1:08:38
into the things that you do well that was one of the
1:08:40
things that like threw me for a loop in the beginning
1:08:43
to with Kotlin that I was like why in the world
1:08:45
did they change this like because
1:08:47
like when you declare a variable right
1:08:50
like let's go back to old-school way right you
1:08:52
know long time ago you wanted to declare
1:08:55
an end you'd say it I equal 0
1:08:57
right and if I was going to be a constant
1:09:00
then it'd be like constant I equal 0
1:09:03
right
1:09:03
and then you know languages
1:09:06
evolve for example
1:09:08
C sharp comes along and they're like hey you know what
1:09:10
if we can if we can derive the type
1:09:13
you don't need to tell us just var the
1:09:15
type and we'll figure it out so
1:09:17
var I equals 0
1:09:20
and implicitly we figured out that it's an end right
1:09:23
based on how you're using it right
1:09:27
but then in Kotlin it
1:09:29
was like well Val I equal 0
1:09:31
and we'll figure
1:09:34
out what the type is or you know
1:09:36
you could do Val no I guess it would be technically
1:09:38
yeah
1:09:39
yeah and I had it right or or you could
1:09:41
also do like Val I colon
1:09:45
and equal 0 if you wanted to but
1:09:47
then there was also var I colon
1:09:51
int equal or colon
1:09:53
int I equal 0 you know wait a
1:09:55
minute Val versus var like why why
1:09:58
it's so weird because like everywhere
1:09:59
else is var
1:10:01
and then majority of the time in Kotlin
1:10:03
you wanted to be Val and what took me
1:10:06
like a minute, I never read this
1:10:08
so I don't know if this was, I assume this is their
1:10:10
rationale for it, but I got to thinking because
1:10:12
like in Kotlin to
1:10:14
your point Alan, Val was something that's
1:10:17
constant, it's not going to change, you can't
1:10:19
change it, right? But
1:10:21
var is changeable and I'm like,
1:10:24
I hated it in the beginning. I was like, what a stupid
1:10:26
subtlety that's only one letter
1:10:29
difference that's not even the first
1:10:31
letter of the word so you really
1:10:33
got to be paying attention to catch that, but
1:10:36
then what I grew to appreciate
1:10:38
is I'm like, well, you're really being
1:10:40
expressed like totally expressive because in
1:10:43
my mind Val is, this is a value
1:10:45
and a value can't possibly change.
1:10:48
It is the value period, but if it's
1:10:50
variable, it's a var and
1:10:52
a variable by definition can vary
1:10:55
and so that's the thing and
1:10:59
like I said, I didn't bother to read
1:11:01
it so I'm sure that other
1:11:03
people are like, yeah, of course dummy and of course that's what
1:11:05
it was, but it
1:11:07
just kind of dawned
1:11:10
on me one day and I'm like, oh, that's
1:11:13
so clever.
1:11:15
Those little nuances
1:11:17
are why Kotlin is probably
1:11:20
tied for first with C sharp in my love
1:11:22
of a language is because
1:11:25
they've made it very explicit
1:11:28
for you to express what you want to do. Right?
1:11:31
So the valve versus var right. The valve can actually save you
1:11:33
if you try and reassign it, it'll throw an error.
1:11:35
Yeah. It's like, no, you can't do that. Oh, okay.
1:11:38
Cool. I didn't really want to override that. It
1:11:41
filled time. It throws the air. Like it's a red squiggle
1:11:43
as soon as you do it like you immediately know.
1:11:45
And the same thing with the Knowles, right? Like
1:11:47
I think every language out there, if they could go
1:11:49
back in time,
1:11:51
the Knowles would like be,
1:11:53
no, you have to really choose to want this to be
1:11:55
knowable and that's what Kotlin forces you to do.
1:11:57
Yeah. You want us to know?
1:11:59
sign up to be like this variable can
1:12:02
be nullable or this
1:12:04
reference type can be nullable.
1:12:07
So it actually saves you in
1:12:09
a lot of cases and that's why it's fun. So
1:12:12
continuing with the Kotlin stuff then,
1:12:15
so Outlaw asked a
1:12:18
question the other day about the bang bang to his point
1:12:20
like it's different in every language right or
1:12:23
in most languages it means truthy
1:12:25
right. Is this sort
1:12:27
of true or is this you're like
1:12:30
double knotting an operation so you're
1:12:32
saying like hey is you know
1:12:34
is the variable true
1:12:36
now is it not true is it not
1:12:39
not true right so is it and
1:12:41
it's called truthy because it's like basically
1:12:43
you're just testing sort of is this
1:12:45
thing a number is this thing of
1:12:48
whatever well
1:12:50
in Kotlin that's not what it means in Kotlin
1:12:52
it means I have a variable
1:12:55
if I put bang bang at the end of the variable
1:12:57
it says hey this is not allowed
1:12:59
to be null if it's null it's going to throw
1:13:01
an exception and it allows you
1:13:03
to do things like if you had a person class
1:13:06
and you tried to grab the age from that person
1:13:09
if the person object is null
1:13:12
then you can't get the age right.
1:13:15
So what you do is you say my person
1:13:17
bang bang dot age and so that's
1:13:19
basically saying hey that person value can't
1:13:21
be null so go ahead and get the age from
1:13:23
it. Well outlaw there
1:13:26
was some bit of documentation on
1:13:28
on the Kotlin thing that was like hey
1:13:31
you know we convert this
1:13:32
and when they say convert it's it's
1:13:36
unclear whether or not they're making a copy
1:13:38
of the object and doing something with it or whatever
1:13:40
so he asked the question and I was
1:13:42
like no I don't think so I don't think
1:13:44
it's making a copy.
1:13:46
But if you said you were
1:13:48
going to convert an int to a string you
1:13:50
would assume that like oh it's a new thing.
1:13:53
Right you're going to make a copy of it and cast it
1:13:55
or something right so so
1:13:58
he said that it it just kept.
1:13:59
kicking around in the back of my head and I was like, you
1:14:02
know what, you can look
1:14:04
at the bytecode. And he's like, oh, that's lame. Nobody
1:14:06
wants to look at bytecode. And I would agree, I
1:14:09
would agree, except for the fact
1:14:11
that IntelliJ makes it so
1:14:14
easy. So you can actually
1:14:16
write code, some Kotlin code.
1:14:19
You can basically go up to an IntelliJ,
1:14:22
tools, Kotlin, and show bytecode. And
1:14:25
so your code, your Kotlin code, you can highlight
1:14:27
the chunk that you actually want to see, the bytecode
1:14:30
of, and it will highlight it over in the bytecode
1:14:32
section.
1:14:33
And so it
1:14:35
was super valuable. So it turns out
1:14:37
it does copy something. It
1:14:40
copies a pointer in
1:14:42
the stack to whatever that object
1:14:44
was,
1:14:45
but then it just does an assert
1:14:47
not null.
1:14:48
And if it's not, then it just typecast
1:14:51
it. So it's not actually copying the value.
1:14:53
It is copying a pointer to it. Not exactly
1:14:56
sure why it does that, but it
1:14:58
is interesting that you have such
1:15:00
quick access to be able to see, hey,
1:15:02
is this doing something nasty behind the scenes? So,
1:15:06
you know, if you're doing Kotlin or anything, and
1:15:08
I'm sure that they probably, IntelliJ more than likely
1:15:10
has something like that for Java as well, hey, show
1:15:12
me the bytecode for the Java, and then you can go see
1:15:14
what the actual compiler is putting together. So
1:15:18
really, really
1:15:18
cool stuff.
1:15:20
And then I have to call out that Micro G went
1:15:22
behind the scenes with several of us and pointed
1:15:24
out this book. Because, yeah,
1:15:26
he cheated on us then. Yeah, that's right.
1:15:30
So yeah, the nature of Kotlin, I
1:15:33
was like, hey, that's gonna be a tip of the week. And
1:15:35
then I saw Joe's up there, and I thought it was funny,
1:15:37
so I had to point it out. So this could be in there
1:15:39
twice.
1:15:41
All right.
1:15:44
All righty, well, with tips
1:15:46
that are so good, we say them twice, you can
1:15:49
subscribe to us on iTunes, Stitchify,
1:15:52
wherever you like to find your podcasts. Be
1:15:54
sure to leave us a review, like I said, if
1:15:57
you haven't already, you can find some helpful links at codenbox.net
1:15:59
slash review.
1:15:59
review.
1:16:01
Hey, and while you're up there, make sure you check out
1:16:03
our show notes. We have lots of good stuff up there. Join
1:16:06
in on the discussion more and make sure you
1:16:08
go check out our Slack channel. We have a lot of amazing
1:16:11
people up there, so you can go to codingblocks.net
1:16:14
slash Slack if you want to get
1:16:16
signed in over there. All
1:16:18
right. And make sure to follow us on Twitter at Coding
1:16:20
Blocks or hey, give at Jack a little nudge
1:16:22
on Blue Sky to hurry up our invite there.
1:16:25
And if you go to Codingblocks.net, if we ever get that stuff,
1:16:27
you can find a link to that and all our other social
1:16:29
stuff at the top of the page.
1:16:31
Sounds good.
Podchaser is the ultimate destination for podcast data, search, and discovery. Learn More