Coding Blocks - Errors vs Exceptions, Reddit Rebels, and the 2023 StackOverflow Survey
Episode Date: June 25, 2023In this episode, we’re talking about lessons learned and the lessons we still need to learn. Also, Michael shares some anti-monetization strategies, Allen wins by default, and Joe keeps it real 59/6...0 days a year! The full show notes for this episode are available at https://www.codingblocks.net/episode212. News Exceptions vs Errors in Java Question from Twitter: (thanks […]
Transcript
Discussion (0)
Where's my coffee? Hold on.
When are we starting this thing? Why are we up so early again?
Oh, we're recording now.
So, sorry. Code and Blocks. Episode 212.
It's early.
Oh my god. It's another one of those
ridiculously stupid early morning show uh
episodes so you know you're welcome it's like 11 a.m guys it's not 11 a.m it's lunchtime it'll
probably be 11 a.m by the time we're done hey hey so i've got to pick it up i can't do it like i
have anxiety now um subscribe to us on it, Spotify, Stitchify, and all your favorite podcast apps.
And also leave us a review if you can and visit us at CodyBlocks.net where you can find our show notes, examples, discussions, and more.
Somebody's got to take mine now.
I'm going to do them all uh send your feedback questions and rants to uh joe at slack and uh
works follow us on instagram at twitter all right hey we got a website uh and it's up 59 out of 60
days a year so you can check that out most of the time and that's pretty good that's like the entire year oh did i say
i'm sorry i meant just 59 out of 60 i guess that's probably right uh that's fine good
all right with that it's 11 a.m i'm alan underwood it is not 11 a.m uh and i'm close enough
wow this is gonna be a good one, guys.
All right. So, you know those other two guys.
We got a review, and I think it's been a while.
So, Outlaw, you're probably a little rusty on saying these names.
You want to give it a shot?
It's like the Godfather.
Just when I thought I was out, they pulled me back in.
Yeah, so thank you from iTunes, Rior Edwards.
I'm hoping I'm pronouncing that right.
I think you did, man.
Okay, thank you.
That's pretty good.
Yeah, thank you very much.
I think it might be Rio Redwards.
Oh, he might be onto something.
This is possible to spell it all lowercase i mean i think outlaws actually contemplate like my mind like a little bit exploded when you said that because i'm like wait how did he get to
that oh now i see it and i can't unsee it it's impossible to tell well anyway thank you for the
great review really appreciate it uh you know we uh we live off those things so uh thank you very
much maybe that's why i'm so
sleepy we have gotten so few yeah we're not living anymore yeah hey if you got a minute you know
come to us on that slash refuse we try to make it easy for you you can wake us up that's right
to life save me for myself um all right so we got a mixed bag today right yeah so so who's kicking
us off here uh if i could stop singing evanescence i
want to talk to you a little bit about exceptions versus errors in java wait is that a problem
it's a problem i'm singing can be a problem singing evan evans that's no evanescence that's
not a problem the new stuff you know i haven't heard the new stuff i like the old stuff yeah
this is fine you know fine uh anyway so this is the first errors so um you know
we had a problem the other day and ryan we've talked about ryan before uh on the show um he
said something that i should have known was like foreshadowing like if this was a movie you know
this would be like a clue he said you know there's that thing in.NET where like if you run out of uh if you run out of memory
like you can't catch that exception like you would like a normal exception and uh I wonder if Java's
like that and I said something like yeah you know maybe I don't know I should look into that and
then I didn't and then like a week later I wish I had is that it is like Java. So Java,
there are two types of things that can be thrown,
thrown exceptions,
which are things like no pointer exceptions,
integer overflows.
Most things that you get are going to be exceptions.
When you talk about,
you know,
try catching stuff that you're worried about,
but there are also errors and errors and exceptions.
Don't share like a inheritance path so if you do a try and a catch and you catch all exceptions you are not
catching any errors and errors are things like out of memory error stack overflow error no class def found error and these are serious problems that always
result in the termination of uh you know whatever thread that you're in and it's similar to an
exception that you know something bad that happened in crashes but in general the advice
is to not catch them okay so this is where my head blows up and this is where you need to
share a little bit more on the advice not to catch them. So I'm thinking if you're running
on the main thread, that's good advice because it blows up your application crashes. Life is good,
right? Yep. However, if you're running on some sort of background thread,
it just disappears and you have no idea anything happened.
Is that correct?
That's correct.
Yeah.
Okay.
So this advice to not catch them is not great advice unless it's running on your main thread.
Yeah, totally.
So that's the normal kind of out-of-the-box advice is that you don't want to catch this stuff because it means your application is in a bad state and it needs to crash.
And so I think the advice is more, I should have said,
maybe you shouldn't handle these exceptions.
You shouldn't try to continue.
If you get an out-of-memory exception or a stack overflow,
or sorry, out-of-memory error, stack overflow error,
or no class def found error, you need to shut down
because your thread is in a consistent state and can't continue.
But like you said, if it's in a
background thread, well, that's going to ultimately end up with the thread getting terminated. It's
going to close down. And if you're running in something like, I don't know, like a web server,
or there's various different ways to run things in background tasks. And you may not even realize
that you're running in a background task if you're using some sort of library.
And if that thread gets terminated,
then you might be blind to the problem
because it's not going to crash the app.
It's just going to feel like it disappears.
And that's the case where you probably want to have a try
and a catch and you want to catch that error
and attempt to do some sort of logging or something.
Now, if it's the out of memory error,
you may not be able to log.
So, you know, you still got problems and, you know, something to kind of watch out for, but,
uh, yeah, it's kind of a deadly blind spot. Hey, so what's the answer there? If it's an
out of memory error, does that mean that you now have to, um, investigate something at the JVM
layer or, or what is that? Yeah. So if you, uh, have an out of memory error, you know, I'm not
really sure how a thread memory works. Like if, if you know each thread has its own kind of little pool but i
don't think so i think it shares like the same heap so you might have something here where like
a background thread uh runs the heap out of memory and then it dies it's uh the thread gets terminated
its resources get uh re-added and so maybe your heap recovers and you don't even know unless you
had like some sort of
good you know alerting or monitoring uh setup that you even ran out of space and when i say good i
just mean that like you're even looking at you know heap space specifically like uh you know
your heap space could fill up on java without actually filling up the memory on your you know
pod or your actual computer that's running on and And so I think most people probably don't have alerts on things like heap size or stack size in a Java application because, you know,
why would you? Hey, so, so check this out, like to give a little bit of context to this. The reason
why this is such an important one that he found is we had a situation where we had an application
that was running and it just wasn't doing what we thought it should do. Right. Like it, it was going
slower on processing things and what we thought it should. And we never saw an error anywhere.
It just, but, but you'd see it redo the same thing over and over. And it was like, wait, hold on.
Like, why, why am I not getting anything? Like, and we had layers of try catches, right. With
specific catches for specific things that we were looking for
and then we had a catch all you know catch exception and it never hit so we were like man
something's going on and then jay-z found out i think by putting a break point in somewhere and
just seeing it happen like you wouldn't even known about it if you hadn't put the break point in the
in the specific spot that you were looking for correct yeah i was going down line by line and what would happen is eventually
get up to a line and it would just kind of go off and spin and then i would see a breakpoint hit
higher but i wasn't working in a multi-threaded situation i was running with a third library that
kind of like owned and managed that sort of thing so i just thought i was like you know maybe this
is the second thread getting picked up or this is you know like debugging is kind of a pain i started adding like tracing type statements and
transaction ids and that sort of thing so i could kind of see and uh you know and so i yeah i had
just had all sorts of fun and it wasn't until i finally figured out you know this is not actually
just going off and being hung or waiting or taking too long i actually ran into like the evaluate expression thing and and italij and realized that oh it's immediately returning an error that's not getting
caught and my third my threat is temp was terminating what the heck's going on here
because i've got a catch right here for all exceptions and it just happened to be a place
that was kind of like a black hole for logs too so it was like this just weird thing where things
looked like they were just getting hung, but they weren't getting hung.
They were getting terminated.
And I lacked the proper tools for seeing it.
And so it made me think, you know,
obviously there's a couple things that went wrong there.
Like if I had been maybe looking closer
at like the threads in IntelliJ,
you can see some of that stuff or the resources,
then I would have seen a thread getting terminated
rather than getting hung.
So lessons learned all around,
but I just thought that was a really interesting.
So is the takeaway then like,
okay,
it's fine to have your,
your catch exception,
catch off for your exceptions,
but also include like a catch error.
And then that way you can catch these specific situations and maybe
exceptions you choose to recover from and continue going on.
But in your error catch handler,
catch error handler,
you would make decisions like,
okay, let's shut it down.
Let's throw up some kind of,
maybe try to throw up some kind of messaging
about why we're shutting down,
but we're shutting down.
Yeah, if you can.
And it's possible if you get a stack overflow
that you're not going to be able to do any sort of logging or do anything but uh it's definitely worth you know attempting
to to catch uh those errors if you're in like a background thread and also just knowing that
it's possible for your your try catches to not catch which i think is a good lesson anyway because
uh you know even if you have a try catch finally like if someone pulls the plug on a computer
it's possible for stuff in a try to not ever get into that finally.
The application is going to try and do everything it needs to kind of button itself up as it's crashing.
But it's possible that your statements don't run when you expect them to.
Here's another dumb question to follow up with.
Could you put a catch in like – so we were in Kotlin, right?
Could you put a catch in like so we were in cotland right could you put a catch
and then any in there because i would assume that error and exception both extend from object right
they do yeah so object then throwable right so could you error catch object you know i don't know
um i didn't i don't know if you can throw objects i always thought it
had to be like exception which is kind of a special thing in my bob but you know i don't
i don't know i didn't try it had to be throwable yeah it might be throwable i'm gonna which i don't
know exception and error are the known they're the only two okay so then so yes, try catch exception as the complete fallback on any specific exception,
and then catch error as a fallback to anything that goes through those cracks.
It looks like you can catch throwable.
Right.
That's the common interface.
There's no ancestor, but yeah, that's cool.
So that might actually be the...
But that implies that you want to handle exceptions and errors in the same way.
The same way.
Which is why in my example that I gave before, you might want to choose to shut it – try to shut down cleanly in an error state.
But in an exception state, you might want to recover.
Or maybe in your given circumstance, you don't care about the exception.
And that's if you're even going to want to catch.
There's also arguments for not catching at all and just letting it bubble up to an outer
layer but in the case of this background worker thread you know it sounds like this is one of
the specific cases where you need to catch yeah and it also kind of depends on what you're trying
to do right like if you're in a streaming world and you've got you know some sort of multi-tenant
type process or something you might not want one message to kill everything, right? Like you might want it to just kill that
one background thread. So, you know, your, your situation may vary. Um, and, and whatever you
decide to do obviously needs to fit along with whatever you're trying to do. But yeah, it was,
it was a nasty one that snuck up on us so i wonder if we can call this like you know
the yoda of programming you know because there is no try there is only catch there's only do
like no he didn't he wasn't able to catch so that's why there was no cat yeah you should do
just do oh yeah so fun stuff there so that was a fun time and now uh you know in hindsight like obviously i
know of different things i could have looked at to kind of find this but it's just a a fun little
adventure so yeah and c-sharp does have similar things i don't know about other languages i mean
it sounds like the real takeaway from all this though is just like the the, joy of debugging large-scale, scalable streaming applications that are happening at scale, multi-tenant, all those types of problems.
And then you're trying to debug one random problem, right?
Why? Where is this happening?
Yeah, and what?
It all looks like it's
working. Why what's that? What's going on? Yeah. I mean, I say all that because like a part of me
feels your pain because that's what I've been dealing with all week trying to figure. And I
was, and I thought like, Oh, I think I've got it. I nailed it. Like there's definitely like a part
of the week, midweek where I was like super confident. Like, nah, I got it. I nailed it.
This is it. this is what it was
i figured it out don't worry guys you want to buy me a coffee it's good i said i get it i would want
to too it makes sense uh if you saw how good this line of code was that i fixed you know because
it's always like a line yeah it did it did hold up you said you know midweek i had that moment then
yeah wasn't it yeah i think all three of us had one of those weeks.
Oh, yeah.
But mine's still going.
Like, Jay-Z got to a happy ending.
He's like, ah, look, if I catch error.
Oh, I didn't.
I mean, the error's not fixed yet.
Yeah, no, it's there.
We're now catching it.
Yeah, now we know.
At least you know what it is, though.
That's a far cry from where i'm at
oh man all right so ironically enough so we got a question from jivila verde
over on twitter wait man this cannot go undiscussed wait did jay-z tweet between you and me did you just hear
alan mess up a name i did because i don't yeah that might be a coding blocks first
that's a first time right there that alan's messed up a name in fairness though twitter
you just make up whatever you want right so i don't even know if this is a name right like verde is green in in spanish so i don't know what j villa is so yeah or jv illa jv illa i don't like
you're you're you're assuming that his name is in a that's just rude yeah that might be rude or her
or or her yeah hey what's what's wrong with's wrong with casing things to show the words?
Okay, Boomer.
I guess I'm just old.
But you can capitalize letters in the middle of the word to list them with a break star.
I guess you want some punctuation in there too, Boomer?
Is that what you need?
Yeah, that's right.
Sorry you're all texting on your phones or whatever.
This is annoying, but you know.
That was the bone here. We got Boer twice at a show that's awesome all right so i'm gonna read this uh and and then we
will attack it so hey guys it's me again i was listening to the 1502 23 episode we know that's
from another country because none of us do months that way. And by the end of it, you mentioned the Uber engineering blog.
It got me thinking, how do you guys keep up with your data sources?
I mean, keeping up with the new technologies, frameworks, best practices, insights from
experience articles, et cetera.
I'm sure most interested people have their own process in order to routinely get quality
info and keep up with the field, which might be challenging, but I would be very keen on
hearing your take on that. And then he also says, as I'm writing this, I'm wondering if perhaps our
Slack community is a better place for this question. Maybe it was asked there already.
If so, I apologize. I imagine you are busy people, but I appreciate all the quality content
you guys put out. I am really having a blast listening to your pods cheers all right so the slack community is a fantastic place
to keep up with stuff um for sure because there are amazing people over there that are always
constantly dropping things on there um so i would agree with that for sure and then i don't know on
the other ones what are you guys mistakes well? Well, okay. I can't.
My brain needs to wrap my head around this first.
Which episode are we talking about?
Because I thought that was.
I thought that that would be February 15th of this year.
But we didn't put an episode out on February 15th of this year.
Oh.
That was either before or after.
It was somebody else.
So I was like. I don't was like i don't know i don't know yeah
um but but to answer the question though i i think that it kind of happens just from like
word of mouth and that could be a variety of like whatever your community might be so part
of that word of mouth might be like somebody found like a spotify blog article and
then that starts getting passed around work or maybe that includes your your community includes
like our slack community that alan mentioned or you know whatever your twitter feed or hacker news
or reddit well not reddit anymore but... We'll get into that.
Too soon?
Too soon?
Yeah, but I mean, honestly, I think that's where a lot of it...
It's not that like...
At least me, I've never...
Maybe I've never had the foresight to be like,
oh, I really like Company X.
I should probably go see if Company X has an engineering blog.
And instead, it's always like something that company X wrote starts making the
rounds.
And I hear about it from one of a variety of sources.
So I think,
so the point is,
sorry,
but I think the point is,
is that Mr.
Or Mrs.
Green here is,
is,
you know,
we are part of that community that they are,
that they are hearing from. So, you know, it's getting past that community that they are, that they are hearing from. So,
you know, it's getting past that. That's now part of their grapevine. We are part of their grapevine.
Yep. And that's my answer to is basically building that grapevine. If you don't already have it,
like find people that are doing things similar to you. And, you know, um, like the general channel
of Slack is a good way to see the most important general stories that come up in a day. But as you kind of drill further and further into things that are closer to what you do,
then you'll see things that are kind of more niche.
So, yeah, it's nice to join and be a part of communities that are similar to things that you're doing
because you find this sort of stuff and people share the info.
And then when you see something cool that you think they would be interested in, you share it too.
Yeah, and so I'll tag on a few other things on top of there. So our buddy John, also a friend
of the show, he introduced me to Hacker News years and years ago. That's a great place to
find out all kinds of random things that are happening. Outlaw mentioned Reddit. There was
our programming and some things like that. They were always interesting. Not anymore. Yeah. I'm curious about that as we come up here.
And then another one that I think is actually really good are like little conferences that
you can go to, right? Like you'll find out about all kinds of stuff that you hadn't even thought
about because when you show up to the conference, usually they'll give you a sheet of paper,
tell you an app to go to
that'll tell you all the sessions
that are going on throughout the day.
And you'll see stuff that you never even thought about,
never heard of, whatever.
And that's a great way to do it.
So on top of all the other things that Outlaw and Jay-Z said,
those are really excellent ways to find out
kind of what's hot and what's
happening and that's just a long-winded way of saying that jay-z gave a talk at a conference
recently on scaffold and gke you know i missed it actually what what yeah the covet scare and then
it turned out i didn't have covet and so i you know sorry but yeah didn't happen we're going to
reschedule for aug. Oh, wow.
Yep.
All right.
So kicking them in the shins in two more months then.
Yeah.
All right.
Another chance.
Sorry, everybody.
So, you know, I don't know when you wanted to get into that Reddit comment,
but just to follow up, did you notice that, like,
slash programming now has gone private?
Yeah, I thought I was a member of it. As well as others.. Yeah. I thought I was well as others.
So I thought I was kind of surprised.
I noticed that today.
Cause I actually went to see what they had to say about the sack overflow survey and noticed that I can't see it.
Yeah.
Yeah.
You have to be invited to this thing now.
Well,
this is part of the protest that,
you know,
they've made it a private community and you can request to join.
That's so lame. and i think um i think programming humor is another one if i remember right that went
oh no maybe not what was the one i was thinking of then that okay never mind i thought i thought
that programming humor also went uh private but well um so here's a good one um devops has gone uh not safe for work
so i'll paste a picture if you go to r slash devops um so you'll see every post is tagged
with nsfw and people in the comments and the posts are all uh cursing like sailors what
well that was really that was part of the thing.
So did you not hear the stories
this week about it? So what happened was that
as part of the continued
protest, some of the moderators
of some of the subreddits
turned the channels
into
not suitable for work
so that they could, or not safe
for work, so that they could, or not safe for work so that they could like not get,
not be able to monetize it,
you know,
from a,
you know,
Reddit couldn't monetize it from an advertiser's point of view and Reddit on
several big communities just removed all of the moderators.
And then,
you know,
shenanigans went,
I happened as you might expect of an unmoderated,
very popular subreddit.
And then they ended up re-adding some moderators back
to some of the things.
But there was an article on The Verge I was reading about it
where like, mildly interesting.
Interesting is something that we aren't allowed to say on the show.
Thanks, I hate it.
And other things that we can't say,
life pro tips.
They were four big subreddits
that Reddit just removed,
the admins removed the moderators
because of this action that they took.
And there might be other ones that I don't know of.
So wait, this is really interesting. So the nsfw they put it on there to keep reddit
from monetizing yeah and the tag and uh yeah if you look at the comments that people are
loving it they're having a lot of fun uh saying everything in as least safe way they can imagine
and i gotta imagine i gotta imagine that the decision to take like programming uh
to a private community like that type of i gotta imagine that that's a similar type of decision
to like limit who can who's getting in there from so that they can so that the moderators
could impact reddit at a monetary level is that's my that's my you know speculation on my part yeah there's another
community called well that sucks that i used to be a member of that would uh you know just like
bad things would happen people post pictures of it that were humorous uh well now they only allow
pictures of vacuums yeah and you've heard that several of them are now just pictures of John Oliver. Yeah. I've seen that.
That's a mess right now.
I'm trying to confirm. I could have sworn that
Programmer Humor.
Oh, maybe I went to the wrong one.
Was it
Programming Humor or Programmer Humor?
It's all a blur now.
Programming Humor works.
H-U-M-O-R-r the english way not the canadian english
way i guess is what whoa whoa whoa whoa wait that might also be the british or british english as
well right isn't it funny that there's versions of english okay so both programming and programmer
humor are not private i thought they had gone all right i
misunderstood i mean it's pretty funny the devops channel yeah it's uh it's colorful colorful
language on every single post um i'm not gonna say it's funny i'm gonna say that this whole thing
is rather annoying it's sad it's sad they turned a useful platform into a hot steaming pile of
garbage and i honestly like which side of this debate do you think you fall on
go so so let's let's go back real quick to summarize from from last episode right like
it was the moderators protesting um because they were shut they were basically turning off APIs for companies to be able to use and other things, right?
They were charging what was believed to be an exorbitant amount for their API access that was many magnitudes more than similar other services.
Right. So that's what kind of triggered all this right
yes okay so
oh man what's your take jc uh so i still don't understand why it's such a big deal for them to
charge for the api no matter what the cost you know that to me doesn't seem such a big deal for them to charge for the API, no matter what the cost, you know, that to me doesn't seem like a big deal.
However,
uh,
people did get upset about it.
And the company's response to it was,
I was going to be aggressive or I don't want to say,
you know,
done poorly,
uh,
because you know,
it's their company,
they can do what they want,
but the way that they interacted with the community of people that provide
free content,
a hundred percent of the content for Reddit's website,
you know, it didn't go over very well with the people who use the service. And to me,
it's just a lesson of like treating your users, your audience and your content producers and
your lifeblood poorly is a poor decision and bad things are going to happen. And so it's been
interesting to watch. And so now I went from really caring to uh kind of siding with the uh the the redditors here
so i've uh actually blocked reddit on my computer and phone just to kind of like keep me good i
found myself kind of um going there just kind of absent-mindedly on the couch whatever like i used
to do all the time but i'm like well let me try not to use it for a little while. Just, you know, to kind of, to help out here. So I agree with a lot of
what you said, the way I described it when, you know, we're sitting at the dinner table discussing
this, cause that's the kind of nerds we are. We talk about these things. So, um, you know,
in my mind, I, I made the, I made the analogy of like, I think Reddit was following in the footsteps of Twitter just 10 years later.
You know, basically, you know, because remember, Twitter was like there was a time where like Twitter was literally taught in school as like here.
You want to learn how to write code and you want to learn how to write something really cool that talks over the Internet.
We're going to write an application that interacts with Twitter. And it was like, not even just like, you know,
for rest conversations, machine learning, converse, you know, types of learning, like,
you know, classroom learning, you know, so there's a variety of different types of topics that
Twitter was the de facto standard there for a long time. And then eventually, but as a side effect
that there were like so many third party apps. I mean, like I remember tweet bot, remember, you know, like pour one out for tweet bot, right? Like there were a whole bunch of that, there were like so many third-party apps. I mean, like I remember TweetBot, remember, you know, like pour one out for TweetBot, right? Like there were a whole bunch
of third-party apps that were great at interacting with Twitter. And then Twitter was like, no, no,
no, we want to be in control of our own destiny. We want to be the only app. So, you know, here's
what we're going to do. And they communicated this out. You know, it was a, you know it was a you know a known thing that's coming right so i agree that reddit
is you know it's no surprise that they decided to oh yeah we should also have we are the official
app much like facebook has an official app you know uh well i was going to say twitter but you
know where that was the one we were comparing to at any rate so it's no surprise here that they decided that eventually they want to do this but
like jay-z said the the real lesson here learned was the part of Reddit into their community.
And that then seemed like, hey, you're not treating – that manifested in itself
in a way as like, hey, you're not treating your community – you're not
respecting the community that's helping to make you and not treating them fairly.
And so that's where a lot of this seems to be blowing up and, you know, just like battle of wits.
Yeah, it's it's interesting. I think.
I think I fall on the side of what you guys are saying with with the users, mainly because the moderators, right?
Like those people kind of got shoved out and it's like, wait, they've been providing their own time and free services to help you do your stuff.
But I also go back to like it's a business, right?
It costs a lot of money to run this thing.
And when you have a bunch of apps, you know, pulling from the same APIs or whatever that you're providing.
And I forget, we said there were billions that were being pulled a day for one of those apps or something like that costs money.
So I don't I don't hate on Reddit for trying to recoup some of the costs that they've got there.
But you got to take a better path, right?
Like you have to figure out a way to not alienate the people who make your platform what it is.
Yeah. There was a quote from the CEO where he, he called out one of the companies and the numbers and he's like, we're effectively by not allowing us to increase our pricing. We're basically paying
them to, to have that app, to maintain that app, to access our, our content. And he's like, well,
why would we do that? We could just have our own, you know, that doesn't make business sense. So to your point, you know,
it's their business. They can decide how they want to abuse or, you know, if they want to,
let me rephrase that. It's their business, right? And, and as a business business owner you can decide how you want to treat your community your community
and if you're you know you you need to make enough money to survive and that's understandable
but there is something to be said for like being respectful about like how you work with your
community and and like i said i think that I think the biggest thing here was the lack of communication, the timing, the 30 day window,
had this been a year, they'd said, Hey, we're doing this in a year. I doubt seriously this
would have happened, but because it was like, Oh, we're doing it in 30 days.
I mean, the question is, and this is, this is something that probably nobody's going to know
is what was happening behind the scenes. Were they looking at it and being like, Hey, we're going to run out of money if we keep doing this.
So we got to do it quick. I mean, I know it's not the same parallels like a Twitter or a Facebook
or whatever, but I mean, look at Docker. I mean, Docker was a tool that gained massive popularity
over the past few years. And then they said, Hey, we're charging $5 per developer, right?
This is coming up here in six months. Prepare.
We'll let you use it, but you're going to be limited to the number of downloads or polls you can do.
They sort of step-wised it.
It made it to where you actually had to think about it.
And for better or worse, I think they did it right. You know, in terms of, Hey, we have a business
we're trying to run. We're trying to add improvements to this platform all the time,
and we got to make money. Um, but we want to make sure that you guys have a chance to
explore other things or figure out if you're going to pay us five bucks a month to be able
to use it. Right. Yeah. I mean, like one of the big complaints from the moderators was that well, hey, these are the features we rely on,
so that then Reddit would have an opportunity to incorporate those features
in their own tool set for the moderators to have.
But because it happened in such a compressed schedule,
then that's where things went sideways, in my opinion.
This is crazy.
I didn't know this was happening this whole nsfw
and and taking things private and all that like it's it's sad it might be why when i did a search
on reddit the other day i got nothing useful back because everything's been blocked or turned off
or going private because i seriously i did a search that i would have expected to have popped
up a bunch of stuff and nothing came back and And I was like, I don't know.
Maybe I don't know how to search.
I'm done.
Yeah.
Hmm.
Hate it.
So interesting times.
Um,
yeah,
I would,
I would post about it on Reddit,
but right.
Right.
All right.
So,
um,
with that,
if you haven't already left us a review,
we would greatly appreciate it.
You can find some helpful links at coding blocks.net slash review. So with that, if you haven't already left us a review, we would greatly appreciate it. You can find some helpful links at codingblocks.net slash review.
And with that, we head into my favorite portion of the show.
It's time for Jeopardy Blocks.
I don't know.
I tried to do something new there.
That didn't work.
That didn't work.
I can admit my failures.
It wasn't bad, man.
It wasn't bad.
Well, he says it was like such a deep voice.
It's time for Jeopardy.
No, he didn't even say it's time for Jeopardy, right?
It's Jeopardy time is what he says.
It's Jeopardy time.
No, that's not it.
That's not it either.
So at any rate, I thought we would try something different this time.
You guys tell me if you hate this idea.
If you hate it, we won't do it.
But I will give you, in true Jeopardy fashion, I will give each of you six categories to choose from with price ranges from $100 to 400 or 500 and with the um well we'll change the
point values as we go along but you get the idea all right but do we have to buzz in though like
no no no no no what we're going to do one per okay yeah yeah this is why i'm saying like i'm
going to try to this is going to be like a weird way to do this. So this is episode 212,
to that code's trademark rules of engagement.
Jay-Z will go first.
So Jay-Z would pick the category
and the dollar amount that he wants to go for, right?
And if he gets it right, then that's his money, boom.
Alan, you would get nothing.
Okay, okay.
But if he gets it wrong, that's negative to him,
and you can choose whether or not you want
to try to steal okay all right so he has to answer we have to answer ours and we're going
negative or positive regardless well how about we do it how about we do it in like
true to jeopardy like you could choose to not answer okay okay so you just So you just say yes or no, I'm going to do it or not.
All right.
You want,
you want to try it?
Let's see how this takes us.
All right.
All right.
So what I'm going to do here is I'm going to put the first five or six
categories.
If I knew math,
um,
out here off to the side and our little spreadsheet.
So your categories are Jay-Z,
Jeopardy and the Ten Rings,
Telling a Bedtime Story,
The Richter Scale,
Same First and Last Letter,
The Wild West,
or Dionne Warwick.
I don't like any of these.
Unfortunately, the pin is mightier is not one of the choices.
Your dollar amounts are
$100, $200, $300, $400,
or $500.
Okay. Retro Gaming
for $500.
That wasn't one of the things.
Oh, then I'm screwed.
Let's go with $10 ring. Oh, no no no i'll take nine rings i know nine rings you see the categories right you can see them in the
spreadsheet just just in case just make it up stuff that's why that's why i'm calling it out
that's why i'm calling it out i think in jeopardy, they just make stuff up. I'll take Nintendo for $500, please.
Yes, please.
Okay, fine.
Is Ronnie Dio Warwick?
No, different person.
Okay.
Same first and last letter.
Okay, dollar amount you want to go for?
The highest.
Okay, $500.
$500.
Okay.
Same first and last letter.
And remember, you've got to answer in the form of a question wait
how much time does he get to say he's gonna do it or not i can do the jeopardy theme music if
that's no no i don't think no no not that long it needs to be like three seconds on the on the
regular category stuff three seconds okay okay a fancy design of your initials that use yours
that you use
on stationary or clothing?
Oh, man.
I thought I knew the word for that,
but it does not start with the same
first and last letter.
You have like 10 seconds.
Monogram.
Monogram.
I guess I could kind of...
You can have it. Yeah, okay. I ain't mad at him a monogram that's what
i meant to say it came out monogram monogram this is close all right that was for 500 dollars
all right 500 bucks yeah all right telling a bedtime story 500 no no no no no no no so your your choices your topics are oh you changed
them queen elizabeth the second direct me to the director cats and dogs tasty phrases
alphabetically last or our religion where each response will start with the
letter R man.
Um,
let's do,
by the way,
these are actual jeopardy categories and questions.
Yeah,
I'm in trouble here.
Let's do a alphabetically last for 500.
Oh,
sorry.
Your dollar amounts would be,
would increase because this is the second round.
So, two, four, six,
eight, or a thousand.
Okay, let's do alphabetically last
600. 600.
Alphabetically last.
Of James Dean's
three major films, he
would die a month before
its release.
I don't know.
How about you,
Jay-Z? You taking a stab at this?
Uh-uh.
I'm not putting 600
online for that. It's probably the only
James Dean movie you could have named
if I asked you to name a James
Dean movie. Couldn't name any of them.
Rebel Without a Cause.
Yeah, alright.
Let me put a big old goose
egg over here. That's alphabetically last?
What?
That doesn't even make sense for the
category. Sucked.
I guess maybe if you were to
alphabetically
list all of his movies, maybe
Rebel R would be
last in that list.
Good lord. Hey man, you gotta bring your a-game this is the family feud days are done okay i don't want to
hear about any mommy stuff we're past that now we're on to jeopardy and oh by the way to take
it easy on you guys these are the celebrity level questions oh Oh, no. Oh, well, that's why people knew James Dean stuff.
Like, I don't care about him.
I thought the celebrity ones would be easier.
Okay, here's the last category.
You ready, Jay-Z?
Or the last set of categories, Jay-Z.
You ready?
And these dollar amounts go from $300, $600, $900, $1,200, or $1,500.
Okay?
Here's your categories. Apologies. You're probably going to hate this.
Books by funny people. The skeletal system. AB's workout, where each response starts with AB.
Fashion with Buzzy Cohen. And there's a champion host and snappy dresser with clues about fashion
that one's probably gonna be difficult maybe for you uh let's go let's go with uh geez uh abs
workout okay and your dollar amount i forget what they were but something more than 400 it was 300
600 900 1200 1500 600 600 okay when we talk about working your ab muscles ab is short for this. Oh, come on.
I'm blanking.
Okay, good. He's out of time.
It's abdomen.
No!
It is not. It's a bug thing, isn't it? Abdominal.
So that is negative
600 for Jay-Z.
Alright. And positive
600 for Alan. So alan walks away with it i can't remember his
abdomen or thorax i don't know about people i know stuff about monsters fictional monsters
where are those questions wow i wonder if i wonder if they would have accepted abdomen instead of abdominal i wouldn't
think so yeah i'm i'm gonna say they wouldn't either so i'm gonna say that you lost that
because of that all right great yeah i i so so this wasn't a hit then you guys didn't like this
i like it except that i lost it was all right yeah i didn't hate it okay
it's a little bit tough to do in this kind of format but yeah interesting i don't think it
was bad nice little uh break from the monotony of uh reddit and uh chat gpt discussions although
i will say this reminded me a lot of family. Did this always bug you guys when you watched it that whoever won the third round won the game?
It didn't matter how well you did in rounds one and two.
They were completely irrelevant.
It was all about that third one.
Okay, 30-second tangent rant time.
You know what other game was like that?
I hate it.
I'm not a sports guy, but I'll tell you.
The worst sport for that where all that
matters is the end is quidditch it doesn't matter about all the other little hoopy hoops because you
catch that snitch you get 150 points unless you're getting those i forget what they call it the
beaters and through the hoops whatever when you're on your broom uh you need to do it like 15 times
to even tie and the snitch is
available pretty much at the instant you know the game starts so yeah i mean it's just stupid just
everyone should just go for the stupid snitch um i worst sport ever i i will agree uh it is the
worst but for different reasons.
It's also the only sport I know the rules of.
That's amazing.
But you know, though, I did decide to be nice to you guys and didn't penalize you for not answering in the form of a question.
So, you know, this is your one warning game, right?
And, like, next game, you got to bring it.
But I was kind of surprised there,
and I almost hate to throw this strategy out there.
Because Alan's saying that it was all about the first one,
and I'm like, hmm, I beg to differ.
Don't give up what he did wrong there in the third.
I know exactly what you're going to say.
Because if I was Jay-Z,
I would have purposely picked the lowest question possible.
300.
Because then if I do know it,
great.
I get,
I can,
if I,
if I'm confident about it,
I can get the extra money,
but otherwise I could just choose to not answer it.
And then Alan is on as like on the hook.
He,
he needs it,
but even if he got it right,
he would do him no good.
Yeah.
Jay-Z was nice to me in that
round because i would have totally done the same thing and i answered the question we need some
tension dramatic tension that's right he created it i'm gonna have to work on these like a radio
version of the of these rules here because this is this is flawed and um you know but but jay-z's
so nice he you know wanted like he cared more about the show and wanted that tension, that War of the Worlds tension there.
And I just want to win.
It's Jeopardy time, y'all.
I would have gone for the jugular.
I would have been like, nope, this is about winning.
I'm already 500 to zero.
Lowest question possible.
Yep, totally.
So maybe that's what I should do.
I should inflate the quite the answers or that the dollar amounts like go
against whatever jeopardy does,
but inflate them so that like it,
you know,
the lowest amount is higher than whatever the lowest person's dollar amount
is.
So like,
you know,
the lowest,
the lowest dollar amount would have been like 600.
Keep the tension on.
Oh yeah.
To keep the pressure on you.
Like you,
you, you need to try um all right or or we could just do it like you know jay-z got one alan got
one and whoever gets the third one you know it's too best out of three over yeah take it as the
best out of three instead of a dollar amount maybe we'll do it that way best out of three um okay
so guess what it's that time of the year where we ask for a review um no just kidding
no nobody no we're not gonna ask i thought that was pretty funny somebody's just gonna do it
this is the any rate this was your topic, I thought, Jay-Z,
but Mike RG threw in that,
reminded us that it's that time of year
where Stack Overflow has introduced their,
or released the results of their developer survey.
Yep, 2023.
Remember, we've talked a little bit about their demographics before.
The kinds of people that use the site
are not totally indicative of the world of programmers out there.
We've seen before they tend to skew kind of heavy for.NET.
I've never really understood why that was.
Maybe Joel Spolsky or either Joel or Jeff Atwood, you know, kind of lineage or whatever.
But it's kind of been that way forever.
It's interesting.
So just keep that in mind when we're talking about uh some of these
points um now the first section of course i had to zoom to was their new section on ai tools
you knew it was coming uh 70 of all respondents said they plan on you they are already using
or they plan on using ai tools in the development process this year is that a surprise i don't think so no yeah if you ask me to guess i think we could have played a game there but like
i think that that would have lined up i think uh i think it's 40 are already using it like 30
are planning on it it was 43.7 are using it in 25.4 plan to yeah i expect that number is going to go up next year
about 30 just said they're not interested which is about what i would have expected you know based
on talking to people but that seems man that seems so who are these 30 right that seems really
like oh there's this new tool that i could use but no i don't need your
fancy i don't need your fancy nail gun i've got this hammer and i'm gonna build that house yeah
it's like the biting off your nose to spite your face type thing right like i don't i don't
understand why you would just straight up say no you should at least see what it offers can we can
we discuss that for a moment though is it bite off your nose
i thought it was cut off how do you how does one bite off their nose that's a good question that
was a wrong statement i i assume you cut it off i mean either way it's graphic it is pretty rough
but but yeah why why would you just straight up be like no i'm not i'm not touching it that doesn't
it doesn't make sense at all does it i think some of it's like
people concerned about privacy issues and uh you know licensing issues there's kind of a moral
opposition to ai in general um and some people i think i don't know curmudgeons maybe well i was
going to say there might be like a portion of that uh percentage might be people that are nearing
like retirement ages and they're like i don't plan i
don't i have zero plans to use it you know i'm just gonna i have got you know 12 months or a
year or whatever that is the same thing i'm good at math i don't know have we met we've got 356
days left however many days are in a year 60 days a year nobody but i think it's fair to see i think it's fair to say that the
three of us would be like you need to at least try it to see what it what it could provide for
you in your day-to-day right like even if you're not going to use it for work or whatever you need
to be aware of what is out there and available for people to improve their productivity like you
should at least know.
Yeah, I'm sympathetic, though, because I swore I'd never get a cell phone,
and I was wrong about that.
And here you are.
Sometimes it takes a minute. Things catch on.
Now, they did say that 82% of people that are learning to code plan on using AI, which is much higher,
but not as high as I would expect,
and I expect we'll see these numbers go up next year.
Well, I bet you're fewer to ask people that are already learning to code, not plan.
Yeah.
Wait, no, you did say people learning to code.
Yeah, they kind of lumped it together.
That's a lie.
That one's a lie.
People learning to code.
I guarantee you that answer is like 98%.
Yeah, they're doing their assignments already.
I mean, honestly, like, think about it.
I don't I all joking aside, let's let's pretend that we were the three of us were back in university and, you know, you were given an assignment.
If you had this tool at your disposal, wouldn't you at least ask it to, like, learn from it and then see like, oh, can I take what it gave me, tweak it and see like,
and then learn from it's that building block, right? Like I'm not saying there's not a lot
of value in learning to write something from the ground up from scratch. Sure there is, but, but
I just got to believe that if you were a student these days, you're going to use every tool at
your disposal. The internet is one of them. And oh and oh by the way on the internet is chat gbt
so and let's be honest when you're a student you get tired of doing homework so the quicker you
can get it done the better so it is a good learning tool but yeah i mean totally you'd use it
yeah i would absolutely abuse it oh sorry use it use it right yeah so uh
interestingly there's another question about um the accuracy and whether they trust it um i should
change to what i wrote in the notes uh whether developers trust or not 40 said that they trust
uh ai uh trust the accuracy of ai which i don't know. I think that's kind of, it's such a weird question to ask.
It's like, you asked me like, do I trust it?
But like, I trust it to write something close.
I don't trust it to be a hundred percent.
So I don't really know how to interpret that.
But 40% say they trust it.
Yeah.
This one's, this one's weird, right?
So they have highly trust, somewhat trust, neither trust nor distrust,
somewhat distrust. Like how do you trust you trust enough to empty my bank account right yeah i mean i trust that i saw code get spit out and it sort of does something i can do what i want
with it i mean there's no way i would trust it without testing it yeah so like it's not going
to prod right like as soon as you ask trust but verify like, it's not going to prod, right? Like to me,
it's a trust,
but verify like,
okay,
it gave me something.
I'm not going to use it verbatim, like exactly as it is.
Even if that thing was stack overflow.
Right.
Yeah.
Yeah.
Yeah.
That's the trust things odd.
And the actual question was how much do you trust the accuracy of the output
from the
ai tools as part of your development workflow and yeah it's kind of all like is there 85 percent
you know that's about how much i trust it yeah it's it's a starting point it's kind of what it
is we've mentioned that before but it was just five things so it was like highly trust somewhat
trust neither trust nor distrust, somewhat
distrust or highly distrust. And honestly, I think that given the answer I just gave you,
my answer would be somewhat in the somewhat distrust category because my inclination would
be like, okay, I can start with this as like maybe a building block, but I'm not using it
without testing it. And so therefore, because that's a trust,
but verify kind of scenario,
that means I fall into the somewhat distrust.
I think I would have been somewhat trust.
I'd have been on the flip of it,
right?
Like I somewhat trust it to even start with it.
Otherwise I wouldn't even be using it.
Okay.
So that's the 40%.
So like,
you know,
I guess maybe I'm being the pessimist and you're being the optimist.
Yeah.
Well,
it's funny to say I could take your,
your justification out a lot. It's like, it's going to give me something and I'm going to beist and you're being the optimist. Yeah. Well, what's funny is that I could take your justification out a lot.
It's like it's going to give me something and I'm going to be skeptical and I'm going to test it.
And I would say that's highly trust because I feel like I can take 85% of it.
So I feel like I would take your same thoughts on it and agree with it and then give a different answer.
Yeah, that's what I was saying.
Same thing.
So poorly worded question that we don't know how.
So we can't interpret these answers because all of us would interpret the wording different.
Let's ask chat GPT whether it trusts it.
Yeah.
I almost wish to like how useful and very useful, not very useful.
Yeah.
Interesting.
A couple of highlights.
So just go through quickly highest
paid languages zig erling rb scala lisp and f sharp hey that's uh interesting uh of course those
uh those languages are pretty pretty out there pretty niche and so it's really hard to take
anything away from that other than it's not that like f sharp developers are making bank it's more
like there's not a whole lot of F-sharp jobs out there,
and the ones that are out there are high-paying,
and they're doing things that are pretty specific
and functional programming and kind of interesting.
So that's why they pay more.
But I don't think that means you should go out and learn Zig right now
because it's a top-paying job.
Yeah, I would agree with that.
If you're going to get into a super niche area of computing,
then there's a chance, depending on the demand of that niche, that it could pay well, but might be uber hard to get into either because of the resources to learn that thing or the competitive nature of the field but then on the flip side there's also like
niche markets that you know aren't paying well at all because it's like a dying technology or
something right wait what the heck is zig yeah i was just looking at it like you guys read that
like it was nothing yeah i don't think i've ever heard of it. Well, it's what you do before you zag. So I just assumed that we were all on board.
It's a general purpose language for maintaining robust, optimal, and reusable software.
Sounds pretty great to me.
Right?
Sounds like every other language out there.
Yeah.
You know what's interesting?
So on this range, though, that's worth sharing, Zigg is at $103,000, right?
And then if you go down to, I don't know, maybe about midways, you're at about $81,000 or $80,000.
So, I mean, it's the highest paying technology, I guess, by 20 a little more than 20 but it's not like it's
it's a huge discrepancy now as you go all the way down the list i do find it interesting that dart
and php are they're at the very bottom like they're they're under 60 000 so yeah and i do
think uh some of that is going to be you know the audience like this uh the audience for that
overflow tends to skew like kind of back-end programming, I would say.
And so maybe the people that are doing PHP, they're not using Stack Overflow.
They're not participating in survey.
The questions that they're asking on forums has to do more with front-end-type stuff or web-type stuff or WordPress.
They're going to other communities for these.
So it's skewed.
I did see some – there was an interesting stat there for Delphi,
which was kind of near the bottom,
but also they ranked it against years of experience.
And so it was kind of sad to see that, like,
it was high years of experience and kind of low salary.
But still, you know, what I mentioned about communities,
Delphi is an old language.
It way predates Stack Overflow.
And so Delphi programmers are hanging out in other forums.
They have other ways to get their questions answered without getting their questions closed and so i think
that it's another example of things being skewed what i want to see though is this and i'm trying
to see if they have it because i could have sworn they did it in past years like where you would see
this stuff plotted out as a chart because uh i'm thinking of like is this the rise and fall like
python isn't it's near the middle now and i could have sworn that like it in javascript i thought
we're near the top previously javascript is below even c sharp it's it's in like the bottom quarter
but i'm not seeing that. Am I remembering that wrong?
Yeah, they used to have a way to compare to last year's results,
but I didn't see it this time.
Yeah.
Well, okay, I do see where they had the median salary for Python
actually went up by like $7,000.
Yeah, I was going to say, right below the chart,
they have the change in salaries between $22,000 and $23, and 23 i could have swore there was like a more visual chart though not like a bar graph of
like one you know one specific language but it was like all the languages yeah oh here's a here's
an interesting uh tidbit so uh frequency of visiting stack overflowflow. 92% of the people who did the survey
visited Stack Overflow at least weekly,
multiple times a day, 13%.
I don't know that I hit Stack Overflow
multiple times a day.
Maybe if I'm working on a problem.
Yeah, this week you probably did.
Yeah, this week for sure.
Yeah, I was going to say.
It makes me think it's kind of like the power users
or like a very specific set of programmers that are answering the survey.
Also, I would be curious.
Let me see.
This year they answered.
They had 90,000 results.
90,000 developers.
Yeah, yeah, yeah.
That's what I meant to say.
Wait, how about Ruby is now one of the top paying?
Yeah, interesting. I thought Ruby was on the way out a couple years ago, but I've been hearing more about it. what i meant to say wait how about ruby is is now one of the top paying yeah interesting i thought
ruby was on the way out a couple years ago but i've been hearing more about it really so it may
be fewer of them making more money so all developers last episode we were talking about
that story that came out about stack overflow seeing a decline, right? So in 2020, it was 65,000 developers that responded.
In 21, it was 80,000.
In 22, it was 70,000, so a decrease.
And then this year, it was 90, so an increase.
So it went up, yeah.
Interesting.
Yes, that's why we can't have nice things.
Yeah, the salary thing doesn't make any sense to me.
So were there other ones that you were going to call out here,
or was that it before?
I forget.
So a couple things on web frameworks I thought were interesting.
React way up there.
Not a surprise, 40%.
Angular 17, which is pretty far running pretty far rung down view is under angular
what's interesting is like if you look at like javascript surveys or other you know other surveys
on other platforms like you'll see view much closer to uh react and usually higher than angular
so it's interesting to see it ranked below here i don't know if that's kind of the dot net skew
coming into play there or if that's just you know how things are going now i'm kind of out of that world so i don't know if
view's kind of hanging in there but i've been surprised that view has been neck and neck for
so long with react that it would be interesting now if suddenly react is pulling ahead well i
think the bigger story here is that jquery out and outdid angular yeah sorry angular like that's to me the weird one i do agree that the
that the the gap between react and angular is interesting because they i thought maybe i'm
remembering this wrong let's see if we can see what it was last year but um wait where do you
see it's out doing it so i'm looking at web frameworks and technologies. Right, and jQuery is number three at 22%,
and Angular is number five at 17.5%.
Do you have a chart that you can hover over the technology
and it'll show you technologies that other people selected?
And I did notice if you hover over jQuery,
it also has links to React and Angular.
So it seems like people are using,
maybe they're supporting older software as well, or maybe they're using react with jquery which would be very surprising to me
how do you get to that i forget i didn't just roll down oh hold up you're in a different spot
most popular technologies is that not what we're talking about i see web frameworks and technologies
that's where you see jquQuery is at 21.98%.
Yeah.
So there's another spot on the page.
If you just search for jQuery, it's web frameworks and technologies as well.
But it's got these line graphs to the right of it where it shows desired versus admired.
Oh, that's the section below this one
oh okay okay yeah because i was like man what were you guys looking at okay so that makes more sense
yeah because in that in desired versus admired they're comparing things like javascript and
python and c-sharp and kotlin and rust and whatever okay This was specific to, yeah.
What was that?
It is want to use.
So it's not people that are using together.
They want to use them together.
Yeah.
Yeah. They have some interesting charts and stuff here on the page.
Okay.
So that,
that makes,
that sounds more right.
So people are there using a jQuery now want to go use something else.
Yeah.
Want to use React.
So, you know, I pulled up the 22 results because I was curious.
And, yeah, I guess memory is the first thing to go.
Because, really, these numbers are not inconsistent with last year's.
Or at least let me rephrase that.
The position isn't
this year it's you know going from first to one to five node react jquery express angular for last
year it was node react jquery express angular and if it sounds like i said the same thing twice it's
because i did and literally like the only thing that changed were the percentages. Like Node went down from 47 to 42.
React went down from 42 to 40.
jQuery went down from 28 to 22.
Express from, everything went down basically.
Express went down from 23 to 19.
Angular went down from 20 to 17.
So yeah,
they all,
they all went down.
So something that means that something else is rising that we're not seeing
here.
Something else is bubbling.
It's probably Django.
I'm kidding.
That was true.
Maybe.
I think maybe it's just the fact that they also have like more stuff.
So like the numbers got spread. Maybe. I think maybe it's just the fact that they also have more stuff.
So the numbers got spread.
Maybe people were limiting their answers to a certain number of frameworks,
but now there's more frameworks to list that the Stack Overflow questionnaire lists. So people were getting more specific.
So you know...
Oh, man, the dog's standing on my keyboard.
You want to know what's pretty interesting if you scroll down to that to that other one where it has the desired versus um uh admired
admired javascript is like leading the pack with everything and python's not far behind it
but that's consistent with years past though, right? Yeah.
Um,
where's the equivalent of that in the previous one?
Ooh,
I know,
I know that we're hijacking on Jay-Z's threads here, but the,
the next one,
the desired databases and admired Postgres up at the very top.
Yep.
You're welcome.
You're welcome.
Postgres outlawlaw he's been out
there screaming from the rooftops i think i single-handedly did that so uh just you know
to the to the postgres community um you can send your gifts to me um there's a mailbox listed on
the coding box website so you're welcome hey svelte is like elephant poo sent to me yeah
i'm surprised svelte has taken off like it has i remember we talked about it a couple years ago
how it was like becoming very popular for very um high performance sites and things um it looks
like it's actually gained popularity i thought it was going to be one of those flash-in-the-pan type things.
Yeah, it's the same.
All right, well, other ones that you wanted to call out?
Yeah, last one, I just want to mention Docker usage shown at 51%
for professional developers, Kubernetes at 20%,
which I thought was kind of interesting to see a disconnect there.
It's like some people are working with Docker,
but not with Kubernetes,
so I don't know if there's like a separate operations team
or they're running Docker in other ways.
And I know there's some cloud services that will just run a container,
but it's interesting.
Well, remember, to run, you don't need Docker.
You can run other containers, right?
And there was that big kerfuffle like a couple years back
when Kubernetes changed to the open container standard right and and there was that big kerfuffle like a couple years back when kubernetes
changed to the open container standard instead of uh you know they instead of docker i think
they moved specifically like to container d or whatever to be like the runtime yeah to be more
standard compliant so that you know your container could be whatever yeah but this is the opposite
this is where docker is 51 so more
people are using docker than our kubernetes that's where they're running me though i mean
if you think about our um rise to kubernetes like we were heavily invested in docker for a couple
years before we really started getting into, you know, the orchestration platforms.
Like, cause remember it was, it was sort of a migration from Docker to using Docker files.
Cause Hey, we could spend these things up easy to where, wait a second. Now we actually need
to run these things in a production environment. So I could totally see developers using Docker
heavily like outlaw. And I've talked I have talked, we've basically done this.
If I need a Python environment set up or if I need like Django or something like that,
I don't want to install all that garbage on my computer.
I'm going to run a Docker container and just use it.
So I can totally see developers using this versus, hey, now I need this thing in production.
Let's Kubernetesify it.
I don't know.
I have a different recollection of that.
Because I remember there was a period where we were going to Docker Swarm,
but that was very short-lived.
Very.
Only because we already knew that Kubernetes was the end goal anyways.
Well, Docker Swarm sort of lost, right?
Yeah.
Well, no, but there was a period of time where people were advocating for,
hey, let's develop in Docker Swarm and deploy to Kubernetes.
And I was like, whoa, no.
Why would we do that?
There's got to be a way.
Yeah, so what's interesting to me is like these 51 that are using docker but not
kubernetes where what's their production environment like is there a separate team
that's doing it are they deploying to some sort of like azure container service or something you
know or aws container that's running it um but even that's kubernetes there right like the the
um eks i bet they're not using kubernetes i mean think think about when we first started It's Kubernetes there, right? Like the EKS.
I bet they're not using Kubernetes.
I mean, think about when we first started doing things like this,
when we had like three tier systems we were working on that were like the front end,
the middle tier and the back end,
you would basically use Docker to run your database server. And you'd use Docker to run any other piece of middleware or something that you're doing
just so you didn't have to install something like SQL Server or Postgres or whatever, right?
And you could just kill it at the end of the day when you're done using it. I'd venture to say,
like, a lot of people are still using Docker just so that they don't have to install a bunch of
stuff. So it'll run the same in any environment. But then they deploy their code, the old fashioned,
you know, I was gonna say that was purely a local dev story kind of situation
that you were describing.
Yeah, I think that's probably what you're going to see here.
It's interesting.
The service I was trying to remember the name was Azure Container Instances
where you can just give a container and it'll run it kind of like a one-off.
Yeah, interesting.
So yeah, maybe developers are using Docker locally and then not deploying it.
I got to say though, maybe developers are using Docker locally and then not deploying it. do you remember like what it used to be like when we would have to onboard a new hire?
And it's like,
okay,
here's a wiki page of all the things that you need to install.
And then all of the different configurations that you need to make.
And then,
you know,
here,
go clone the repo here,
make all these changes. And I think that that'd be enough to let you run it locally.
But if it's not figure out how to fix
it and then update the wiki article for the next person that comes behind you. Right. Like, you
know, it was kind of, it wasn't the best onboarding experience by any stretch. Right. But as like a
small team, a very small team, like, you know, it was the best we had time to put together,
but now we're still a small team, but yet now it's like, Hey, clone the repo and you can scaffold run and it'll build, it'll compile everything. You only needed scaffold and Docker installed, right? Maybe G cloud, but, uh, you know, so three tools, it'll install everything or compile everything and build
out the cluster and you could have like a running environment with with data that is unique to you
by the way in an hour yeah yeah like well you know because okay you're making a dependency joke but
but yeah i mean that's that's pretty amazing compared to where, like, you know,
where we used to be.
So here's the thing.
And I fully agree.
If you are anywhere, if you're within an hour, hour and a half drive of Orlando, you should
go see Jay-Z's talk because it really, it can, it can completely change how you develop
and it will improve things a lot.
There, there is a caveat and this reminds me of
visual studio. Like you guys remember like when visual studio was your tool and, and before you
got into build tools and all that kind of stuff, like you didn't know 90% of what it was doing
behind the scenes, right? Like you just know that you went in there and code and you said run
and, and it would miraculously run. Right. And it was a beautiful thing. Then you start evolving
and you're like, well, I need build servers and I need all this kind of stuff. And you start
understanding what visual studios doing behind the scenes, right? Like it's running MS builds
and doing all that kind of stuff. Well, I can say the same thing about scaffold. It's amazing
because it hides all the stuff from you right like um we happen to use
scaffold with like helm charts and so if you don't know what it's actually doing then you just go in
there and hit run and everything's good but if some if there's some sort of snag then you have
to understand that oh this you didn't have a helm chart installed or you didn't have helm installed or whatever. Like it's amazing
because it allows you to do your job quicker. Um, but it also allows people to be lazy about
understanding what they're working with, which is, I guess, good and bad, right? Like, I mean,
there's tons of successful developers do the same thing with visual studio and I don't think there's
anything wrong with that. Um, but it doesn't cause you to scratch a layer deeper, I guess,
is what I'm getting at. I don't know. know i mean you're going to have developers at every level
right no matter what your tech stack is you're going to have you know the the you you know you
could be a 20 you could you could be in your 20th year of your software developer career and still
be a junior developer right that's what i'm trying to you could be in your 20th year of your software developer career and still be a junior
developer right that's what i'm trying to you could be in your first year and be a senior
developer it's all about like what you're putting into it your attitude towards it what you're you
know going after and whatnot so i say all that because regardless of your tech stack you could
have junior developers that aren't going to bother they're not going to care to dig into the details.
They're going to stay surface level.
And then you're going to have the senior developers.
They're going to dive deep trying to understand all the different things.
I don't think that Scaffold obfuscates that any more than Visual Studio or IntelliJ or anything else did.
Agreed.
I think it's there if you wanted to get into it the thing that i love about
it though is that you know you can you can bring up an environment to where that one simple statement
of scaffold run can do the orchestration of spinning up a postgres cluster with you know
getting the database up to current state and getting data in it. Same for SQL server,
same, you could do the same for, uh, Kafka, uh, you know, Mongo elastic search. You could have
various web servers spun up, various app servers spun up for whatever your needs are. Uh, you know,
flink clusters, like you could, you could have this whole orchestration of all these different things,
right?
Basically like what was the data center is now running,
you know,
because you issued two words on the command line.
Yeah.
And,
and as a new hire,
you're like,
boom,
there it is.
Like I have,
I have Grafana with dashboards where I can see all the data that's coming
in.
There's a,
you know,
backed by Prometheus and you know that that's you know in your joke of an hour
right but that's still you know the one time right like yeah you know after that you know you get to
cash all those dependencies but it's still such an amazing place that we're in as a developer
community right man we really need to do an episode on Kubernetes.
We've talked about also doing an episode on Kafka and all that.
Well, we've talked about Kubernetes before, but I think we've gotten deeper on it since.
Yeah, it's surface-level type stuff that we've done.
But when we first started getting into Kubernetes, I would almost like in hindsight at the time, looking back, I'd have been like, this isn't a great time
to, to definitely be in it. Right. But since operators have become such a thing, I think like
now is a, is a great time to get in there because the operators allow you to interface with technologies
in a very standard way when they've provided them, right? Like an Elasticsearch operator or
Kafka operator or whatever. And it actually makes things make sense in a Kubernetes world.
You know, like I guess one of the things that we talked about in the past is like,
if you need to do a backup of a database, like in the past, you'd have to know all the
database commands, you'd have to know how to connect everything, do all that. Now you can
basically have a custom resource in Kubernetes that allows you to just do it easily if there's
operator support for it. So like, I think it's matured to a point to where it just, it doesn't
make sense not to be looking into it.
If you're going to be running an environment with these types of things.
Yeah.
It goes along the lines of like every company being a technology company,
whether they realize it or not, you know,
every company is a data company where they realize it or not.
And the companies that are going to be successful are the ones that realize that they are those two
categories and like what they do to take advantage of technology and the data that they have about
whatever their customers are and everything and so like you could easily think that like oh well
those you know kubernetes doesn't fit my. But it's like, maybe it does.
And you just have it like, take a moment, step back, think about it.
It might.
Now, a given, if you're like, well, I'm an iOS developer developing on iPhone.
Like, okay, yeah, I see where you might be coming from.
But what if we step back and you're like, well, that app that you're writing on iOS
is communicating to something on the back end right maybe that's the thing that you know you know like don't don't you need you
need to not get into the mind where like you can't see the forest for the trees right right so i
remember back in the day us talking about when we were first learning Kubernetes, that Chick-fil-A was running Kubernetes clusters locally at each location to pull data throughout the day.
And I assume that they were doing some sort of bare metal type thing.
But yeah, I mean, they're not a data company, right?
They sold chicken sandwiches
and they found a reason to do it
because it helped their business.
Yeah, we've talked about Kubernetes a lot,
but not as a deep dive.
I mean, we did a community talk,
which we haven't done those in forever
on Dockers and Kubernetes.
We did, is Kubernetes programming programming that was episode 141
we we heart kubernetes was episode 147 and then there was a um not a community talk but like a
a video that joe did on getting started with a scaffold for Kubernetes back in 21.
So,
you know,
it's not going anywhere.
It's been definitely at the forefront of our minds for a while.
Now you had a question here though,
Jay Z about like,
what does this tell you about the demographics when you were talking about like the,
the frameworks here?
Did we hit that question?
Yeah,
we kind of talked a little bit about it.
I just wanted to kind of not, not forget that, not forget that it's not totally indicative of the programming world,
and it's just the people that use Stack Overflow and answer the survey,
which is something you can say about every survey.
It's just kind of interesting to see the skews heavily.NET.
I think there was a – I forget which one it was.
It might have been other frameworks that were not web frameworks, like.NET.
I forget how they call it.. core dot net was like separated and both were in the top five standard versus framework versus core it's something like that i'm looking for it now and
then like spring was like down at like 11 and uh i think that if that was like you know i think
spring and just job in general would have ranked higher on another survey
well also too i was thinking like i wonder if you were to put this question out to like game
developers for example right like oh yeah you know they they would have a totally different
view of it so not only is the demographic skewed by the people that you're asking but it's also
skewed by like well what are like the majority
out of the world of developers, the majority of developers, like what's the Venn diagram
of those, you know, where they, where they, where they fall. Right. And some developers
might not ever touch certain libraries or technologies because of the nature of the
type of programming they do, which I guess goes against everything I was saying about Kubernetes
and not getting lost in the forest.
But yeah, you could totally run the Space Shuttle on Kubernetes.
You could.
So I found the section I was talking about was other frameworks and libraries,
and it's basically non-web frameworks.
And if you look at really anyone,
but I'm just going to pick the professional developers tab,
.NET 5 plus is
27% and
.NET framework 1 to 4.8 is
18%
so you know there's overlap between these two
percentages but it's just interesting like the top 5
.NET is number 1 and number 2
and then we get in NumPy, Pandas and
Spring is number 5 for
professional developers I have a hard time I feel like
I don't know the real demographics are between like dot net and
spring,
but I feel like much closer if not spring ahead.
Yeah.
Spring spring is pretty popular.
Hey,
I,
I meant to do this in the news,
but I totally forgot.
So first,
I don't know if you guys saw or heard,
but design pattern evangelist,
Jim Hummel sign,
he's retiring. So, so so everybody if you haven't
i mean he's he's been like i'll say part of the show for years right like he's contributed
tons of things like in the slack channel comments on the website whatever so if you haven't and the
virtual happy hours virtual happy hours he's there um saturdays so if you
haven't uh you know leave a comment on this show if you want if if you're not part of the slack
community and say hey congrats um if you're part of the slack community go over there and say hi
to him and say congrats like he's he's been amazing and one other thing i wanted to share is Jamie, GA Progman on our Slack channel.
He had been teasing something on LinkedIn for a while.
And I was like, what in the world?
Like, he's like, I can't tell you yet.
It's coming soon.
It's coming soon.
And I was like, man, he's been taking marketing classes.
Well, he got awarded Director of the Year for his RJJ software company.
So congrats to him.
I know that dude works really hard.
He does podcasts.
He edits podcasts.
He does all kinds of stuff.
Amazing with.NET Core stuff.
So also say congrats to him if you get a chance.
He's seriously a super dude in, in the programming community.
So, um, again, I meant to do this up in the, in the news, but you know, better late than
never, I guess.
And that wraps up our delayed news section.
All right.
So let's get into the show.
Yeah.
Um, so, you know, we talked about this book, uh, last time,
but I wanted to give you a little bit of a teaser about it. So, um, this is the, you know,
unit testing principles, practices, and patterns book that, uh, was that Bobby had shared out on
the Slack community. I know that I ended up picking up and, and you know i kind of put this in the in the
mindset of like okay the art of unit testing versus uh unit testing we'll just call it triple p
three p triple p whatever um like it because i had long had this, way of writing my unit tests that was definitely heavily influenced by,
uh, Roy Oshirov and Phil hack that in the back going way back episode 54. Um,
so Phil hack had this way of like organizing your classes your your unit tests and classes
and the names of all of that such that in visual studio the various drop downs would align to where
you could easily see the first one would be like here's the classes that i'm testing and then if i
pick one of those i can see from a drop down here are the methods that I'm testing. Right. And all of
that had to do with like, you know, having classes within classes, you know, and, and whatnot in
order to test that. So like you might have a class that is the class name. Then inside of that class
name, you would have classes that are the methods. And then inside of the method class, you would have all the different scenarios. Right. And, you know, long ago, Roy Osher have also said, hey, name your methods in a pattern such that you can actually see what it is. So it would be method under test underscore scenario underscore result.
And for, I mean, we talked about that back in 2017,
but that pattern was long before,
like I've been doing that pattern long before that episode ever came out
because that already unit testing book was like more than a decade old,
I believe.
And in fact, I remember Will from our Slack community, he and I had debated one time because we were talking about that and he kind of thought like, oh yeah, I do like that. Because
the idea was that no matter what the test runner is, right, you can immediately see like, Oh, I can see what's being tested.
I can see the scenario that might've failed and whatnot.
And what was expected. Like, I don't have to go look at the code.
I can see this from like if the test runner was a command line,
if the test runner was a team city or a Jenkins or whatever. Right.
And, and at the time I remember Will and I got into this debate where it was
like, Oh, maybe even the class name should be, should, you know, prepend, be prepended to it. So it'd be
like the class that's under test underscore method under test underscore scenario underscore
result. So, and, and so all of that is to say like that was heavily influenced by, you know, Roy Oshirov, his naming standard that he had advocated for back when that book came out, which in fairness, I think that book came out like 2009.
I don't know if one of you want to check that, but I'm pretty sure that's when that book came out.
So this book, the Unit Testing 3P, this book's fairly new. I forget exactly what the date of it is. I'm trying to look for it now
while I run my mouth. 2009, by the way. Oh, so I had the other one right?
Okay, so this book came out in 2020, right?
And he, his name is Vladimir
and I will definitely mess this up. Korokov
I'm going to say is how I would try to pronounce that.
And I'm so sorry, Vladimir, if I said that wrong.
And actually, he'd probably say it's Vlogmir or something.
No.
Man, I'm messing it up even more.
Anyway, I'm going to stop.
So he has totally changed my mind and convinced me of a better pattern where in things like JavaScript frameworks and Kotlin tests, for example, make this even better, where I always kind of like because of the Roy Osher of type of technique that I've been following since 2009, whenever I would see people that would write unit tests and,
you know, like how in Kotlin and various JavaScript frameworks, you could do like a
back tick and then you could do this like free formed version of what you're testing and the
name that would drive me up the wall when I would see those, those names. And I'm like, man, these
people clearly did not read the art of unit testing.
Right. But, you know, whatever.
Like, you know, pick your battles.
Right. And it's so bothered me so much.
But.
Vladimir, like he convinced me, like I've been doing it wrong and that those names are actually better purely because of this.
What you're testing should not be the methods, right?
You should be testing behaviors.
I like that.
And your method names should reflect the behavior that you're testing.
And if you have to put the method name in there, then you're clearly being too low level. And he makes a good call out in the book where he's like,
think about it like this. If you refactored that method, now you got to go and find all of those
tests that had that name baked into it and rename those because a refactoring job in like, um,
a resharper or something or IntelliJ,
like you can pick it up in strings,
but it's not going to change the method names where like that,
that name is like just part of the name.
Does that make sense?
So like if you had a method,
calculate,
calculate underscore,
blah,
blah,
blah,
blah.
It's not going to change all the methods that start with calculate because
you renamed calculate to be like add or subtract.
Right. Or you know what I'm saying? So. It like totally changed my whole perspective on like, OK, you should test behaviors, not not individual methods, because then you're like looking for for you're focusing more on what's the expected outcome here.
And then if you think about it from that point of view, it's also begs the question of like, well,
how, how much do you test? Like, are you focusing on testing? Is your focus of testing on the wrong
thing? Like if you're only trying to get to like a 99% code coverage or something like that,
or, or percentage, then you might write a bunch of tests
just for the sake of having the test. But, you know, that test doesn't mean that the bug,
that the software is bug free, just means that you're like trying to get to some point and you're
not focusing on the behaviors necessarily in that result. So I framed that because another one of the takeaways that I've had
for, you know, a decade and a half, I guess, you know, almost, was that in the art of unit testing,
Oatrove also makes a strong case, and this by the the way i'm by no means trying to bash uh that that that
author in that book like it was great for its time you know um and and everything i'm well it's been
14 years ago things change yeah but i i just want to make sure that the way i'm stating this doesn't
sound like i'm bashing him because i totally like i would fanboy out if I met him. Actually, I think I did meet him. And like the, you know, because I truly love that.
Still have like a soft spot in my heart for that book, right?
But one of the takeaways that I had, he made a strong case for like,
you should only assert one thing in your test.
And so anytime I would see somebody write a test where they had multiple
asserts and then they would you know move on i was just like i would die a little bit inside every
time and in fact i would even like comment back on prs or hit them up personally like hey i can't
even tell what you're testing here man what are you doing like there's so many things that you're
asserting like what's the thing that you're testing? And I say that because like in Vladimir's book, he makes the point of like,
hey, it's okay if you have multiple, multiple asserts. What matters is as long as those
asserts are part of the same behavior, then you're still asserting the behavior, right?
So that's still not a bad thing, right? Yes. It could be bad if what you're doing is like you
arrange some things, assert, then you do some acts, and then you do some more asserts. Like
that could still be wrong because like I've seen things where like people will do asserts as part of their act.
And by the way, the act, arrange, assert pattern of writing unit tests or integration tests,
even Vladimir still advocates for that.
The triple A is still the way to go.
But your asserts should be at the end.
So if you're asserting before, that still should be a code smell. Right. But, but he,
he convinced me that like having multiple asserts in, in the, uh, in your test is, is okay. But he
also makes this strong case for like, if you can either, either you write your methods in a fluent
style or you use a library that you lets
you do a fluent style syntax so that rather saying like assert dot true you could write something
like orders dot should be blah blah blah blah blah right so that you can make your your assert
statements read like a sentence and then as a result of doing that you could dot chain
them together like orders dot should be you know more than one dot should be of this value or
whatever you know i'm saying like um whatever, last name should not be null.
And so at any rate, so I say all that as a teaser to this book, Unit Testing Principles,
Patterns, wait, no, I said that wrong. Unit Testing Principles, Practices, and Patterns, and patterns that if you haven't checked out this book,
you know, there's your teaser of, you know,
there's a lot more that he goes into too, by the way.
But I thought that was an interesting takeaway that definitely conflicted with things
that I had talked about in previous episodes
and has changed my ways.
And we will have a link in the show and that is
an affiliate link so if you if you do go buy it you know we will get a little tiny change from it
so that would be appreciated if you do that and hey i do want to call out it is actually after 11
a.m so we made it We've been up that long.
We've made it.
This is ridiculous.
I'm very happy to hear about the asserts.
That's one thing that always bugged me.
There's tons of tests where I'll get something and be like, let me check that the status is good.
Or let me say it the other way.
I'll verify that the status is bad
and that an error message was returned.
That is two asserts.
You know, it totally makes sense to me that that is one thing that you're still testing.
You're just kind of being thorough about it.
There's no way I want to write two tests for that.
So I'm kind of I'm happy to hear that them say that.
And also that it was just spoken well.
I was so I was such a stickler, though, that where there would be situations, maybe not like that exact example that you just gave, but there would be situations to where I would have two things that I wanted to test.
And I thought I was doing the right thing by I would actually write two tests to make it clear that this test is testing for condition one and this test is testing for condition two.
But really, to your point and to vladmir's point one test could
have tested both conditions because it's a behavior you're looking for not yeah but because of the but
because you know the way i was naming it it wouldn't have been clear that i was of what i
was going for in in his point about like you know name your methods to be like behavior based. And, you know, I called out the backtick naming scheme that you can do in, in some JavaScript frameworks and in
Kotlin. This book is not using that type of naming convention because the, the examples that he gives
in the book are C sharp based, which are like underscores he's using and his stuff yeah so i say that because don't
let that be the turnoff like everything in this book is applicable to no matter to any language
you use it just happens to be like you know if you were going to author a book what language
you're going to use well whatever language you pick somebody's going to take issue with
right he just happened to pick c sharp so you know but know, but it's a, it was a great book.
Um,
I highly recommend it.
And,
uh,
yeah.
So check it out.
And that's not even my tip of the week.
So we're only going up from here.
Check it out.
Um,
all right.
So with that,
we'll have plenty of,
uh,
links in there,
resources we like.
And we now head into Alan's favorite portion of the show.
It's 11 a.m.
All right.
Well, somewhere.
So I was interested in just using less social media kind of apps anyway.
Like I've gotten a Twitter.
I wasn't using Facebook anyway.
My space has been taken over.
It was now sending out diet tips and new genetics topics, whatever.
Like, I don't know if you if you need some pills, somebody's got affiliate links that
you can use on my, my space.
Sorry about that.
But I went to look to see what kind of tools were out there for kind of blocking.
So if I wanted to say, for example, block my social media usage between the hours of
6am and 10am to make sure that I don don't go into a trance when I wake up
and drink my coffee in the mornings, then
I wanted to see what my options were. And I did find
a list of several of them.
I got overwhelmed and didn't install any of them.
I just updated my host file, so now I can't
get to any of them.
And I haven't installed the apps on my phone.
But I am interested in checking
out some of the apps, so I want to kind of read through these.
Privacy is a big concern. I don't know what the the best one is so really this is not much of a tip
it's more of a question if you have an app that you can recommend that isn't going to like steal
my bank account info but will also let me schedule websites to not be available at certain times i
would love to hear it but yeah i really don't want to install a keylogger so no
links please pretty cool oh but i will have a link to uh the listed apps that i was going to check
out in the show notes i always find these type of self-control um tips interesting like psychologically
like i just don't go to them. It's funny. Sometimes I'll do
Ctrl-T or whatever to open up a new tab
and my fingers will automatically
just start typing Reddit.
I just went there five minutes ago.
I shut the tab. I was deciding to go
pay my mortgage or something.
Somehow I'm typing Reddit again.
What the heck?
That's funny.
That's why they have the password to your bank account.
That's right. Yeah, i'm with alan though i'm just like just delete the app and don't go
yeah the browser though so i just don't go yeah so uh i thought i guess i misunderstood
at the time or maybe I remember wrong,
but I thought that the,
I said that I thought that the programmer humor subreddit had been, um,
had gone dark there for a while, but maybe what Mike RG meant was just like,
Hey, if you're no longer going to Reddit anymore. So here you go, Jay-Z. Uh,
he had shared out programmer humor.io.
So if you still wanted to get all your programming humor, you could, you know, find a place that wasn't, you know, Reddit in case if they're down or it went private or maybe I'm mistaken.
But aside from that, do you remember we've talked about like building PCs and the resources that are out there for that?
When's the last time you guys built a pc a couple years ago yeah it's been a few and you say a couple as in like think people are going to assume you mean two to three but it's really been longer
than that whenever we think about it favor builds not for me when we did everything yeah Yeah, I had to. I had screwed up and bent a pin on one of my CPUs,
and I had to go buy a new motherboard, new processor.
And at the same time, I was like, sure, I'm going to go ahead and buy some more stuff for it.
So, yeah, it's been about two years ago.
It was during COVID.
So I bring this up because, like, do you remember the days of, well, this is going to sound
like I'm Alan's age.
Do you remember the days of when you would have to, when you would have to like, you
know, look at like magazines or catalogs or whatever, like, you know, the parts and be
like, okay, I want that, but I want to pair it with that.
Something Jay-Z told me about.
Oh, okay. but i want to pair it with that something jay-z told me about oh okay um but you remember what
i'm talking about though like you know like building your own pc from scratch like you put
some effort into it right but we've evolved so much and i don't remember if we've talked about
this before um i can search in the background if we have but uh the the pc builders now are insanely awesome so like where i bring this up
because my son's computer his power supply died and we were already thinking about like well you
know you probably need to rebuild it and you know start shopping around for some stuff the pc
builders that are out there now the sites that are out there now are just crazy so like
what what started this was we were looking at the corsair one which they have one that not only
includes corsair parts but like just generically other parts with prices and the cool thing about
it is like you actually see like pictures of the various
components that you're picking and it doesn't have to be components that are it's not like
current components that are only currently available you can be like well i want to
reuse my case and all that well uh in doing so i'm pretty sure we've talked about pc part picker
before we have i'm fairly certain did we okay it was either you or jay-z that brought it
up i mean it sounds familiar um the pragmatic programmer episode 108 is where we talked about
pc part picker let's see in a minute yeah so so what year was that 108 i mean we're like what 109
now that was that was that was just before the pandemic, June of 2019.
I don't remember what I said then about it,
but Oh my,
it's so cool because they'll,
they'll have like,
here's builds that are already out there.
Like you could start from,
but you could also see like other users submitted builds and like instantly
see like,
well,
what would it cost to build that thing?
Oh, let me change out the, the case. And by the way, it's got a compatibility finder. So if you
picked a CPU that isn't compatible with the motherboard, you're going to know like right
away, like, Oh, Nope, that won't work. work. It is so fantastic that we now have this capability.
Like it's so easy to build.
Like if it almost begs the question, like,
why would you even bother to buy a store-bought desktop PC?
I can get it.
I can understand.
I can understand a laptop, but if you are one of us,
like if you are not like our parents, right?
Like if you were into computing,
I know your mom's building computers. I didn't mean it.
I didn't mean a jab at her, but I'll respect Mrs. Underwood.
But, but you know, like if you're, if you're in this world,
like why wouldn't you, it's so in this world, like, why wouldn't you?
It's so simple to just see, like, what's what the parts are and what what's what fit what's going to work together, you know.
And and by the way, PC part picker will tell you like, hey, here's the of the major sites like an Amazon, U.S.
Best Buy or B&H.
Like, here's where you can get it for the cheapest price.
So great.
Now, the one thing that I do call out that you have to be aware of
is that you might pick a part that is maybe out of stock,
like it's no longer available.
And so it'll be like, well, that's the part you picked,
and here's the lowest price that you can get it at.
But you might not be able to get that part for like three months or something.
So you do have to like, you know,
trust but verify, right?
Okay, so I actually want to answer that question.
So first, I am a huge fan of building neural, right?
Like I would not buy a store bot.
However, there are things that you may not account for
when you're doing this.
So if you want to do this, totally do it.
First piece of advice, go to somewhere like CPU Benchmark and find out which CPU you want first, right?
Like that's where you need to start because everything else basically chains down from that.
But this is where things can fall apart for you.
And we've probably all done it at some point. One, you may not be thinking about the size of your case when you start doing this.
So you might pick a cooler that's the most awesome cooler on the planet, but it's too
big for your case.
Or you might pick a video card that's too long for your case.
There's all kinds of things that you can do wrong that technically work with all the components you've chosen, but won't necessarily work in the build that you're trying to do.
So that's that's one thing on two.
And this is this is where some off the shelf builds work out better for people that don't want to screw with this is they might just be quieter.
Right. Like if you were to just an example, if you were to go buy a CPU that came
boxed with the CPU fan automatically, you think, oh, that's awesome. I'm getting two for one. Well,
what you don't realize is when that CPU is under load, that fan sounds like a screaming engine,
right? Like it's, it's super loud. So there's all sorts of things that you start having to worry
about itself technically to make this build what you want it to be. Whereas if you just go and listen to one in a store and it's silent and you're like,
all right, cool. That's what I want. Um, so there's those things on the flip side. I love
doing it, but also know that you're going to have two to three hours and putting the components
together, getting it booted up, tucking all the wires, making everything look the way that you
want it to and all that kind of stuff, as opposed to just going and buying something in the store, coming home,
taking it out of the box and plugging it up. So for the power user, absolutely. I love this,
but those, those, at least in my head, those are the reasons why I'd be like, yeah, just go buy the
thing. If you don't want to worry about anything and you just want something to be able to run,
go buy it and be done with it
but then you're probably you're probably the type that's just gonna buy a laptop anyways
it depends if you're a gamer probably maybe not because the equivalent laptop that's going to run
those games is going to be two times the price of of a desktop right so i i don't know it's it's all
situational but i'm with you right like if i'm if you're a gamer though like what kind of gamer
isn't building their own pc i'll do tons of man there's lots of companies out there that give you
pre-packaged you know um whatever nvidia graphics cards and everything that you know they go they
pay 1500 they're not good enough you know i would i am totally the kind of person that would pay an
extra i don't know 500 if you would just assemble the thing and let me pick the parts or just have the parts you know the good stuff like so many uh
so many jobs like uh if you go look at like gamer rigs or whatever on a website it's like not great
components but it'll have a good uh hard drive and i'll have a good graphics card like not like i
want good everything like right yeah i want to know the motherboard i want to know the ram i want to know all of it and that's what i'm saying like when you're a power user and you kind of love
this stuff absolutely you're going to do it but again if you want to go down this road i say start
with the cpu because that determines the motherboard the type of ram everything from that
point like you don't want to start with anything other than the CPU. If you're going
that route, it's totally awesome too. Cause like in the, like you mentioned Ram, for example,
like when you're picking your Ram, it'll show you like, Hey, these are the ones compatible
with your motherboard. And you can sort it by like, Oh, I want to focus on, you know,
I need to be price conscious, or I want to, I want to be speed conscious. Like which ones are
going to give me the most speed? Like, you know, Oh, I want to filter it out because I care about aesthetically.
So I want to be able to sort by, you know, I want to be able to, like, only see, like, a specific color or whatever.
So it's, I don't know.
I just think that, like, it's such a great resource that is out there.
I'm so happy that it exists.
Oh, PC Part Picker is amazing. And'm so happy that it exists. Oh, PC part pick part picker is amazing.
And, and here's the thing though, it's an amazing set of rabbit holes. You're going to go down
because you're going to start looking at Ram and you'd be like, well, what's the difference between
this 16 gig stick and this one, then you're going to get into latencies and timings. And then you're
like, well, what's that mean? And so if you like that kind of stuff this is for you can i overclock it yeah
if you don't like this stuff go buy a computer off the shelf and be done with it oh now i see
that somebody put this link out there that my son was also talking about the um who put this one out
here somebody want to talk about it jay-z did the steam oh yeah yeah i just threw it out there
that's what i thought you were going to mention so this is actually uh kind of a game that i've heard a lot about
called uh pc building simulator we can go through and it's actually it's like a 3d view where you
like take the screws off take the case out replace the ram um it's got various different ways you can
do but it uses some real parts like i don't know like they're licensed or whatever yeah they have like parts from amd and yeah if you go look at the bundle uh there's like a bundle version you can get
like the fractal designs the evga auroras you know so there's different uh some of the companies that
are you know supporting that dude this is amazing yeah what's funny it's got different modes so
there's one mode where it's like story mode where you like run your own business and you like like repair
you know pcs and make more and more money but you can also just build your dream pc and kind of pick
the parts that they have and the fans and the colors and like the case that you want and put
it together it's also got like a learning mode where it kind of teaches you a little bit about
like ram slots and power and how much how to tell my how much power you need and stuff like that is this free no uh 20 bucks it's 20 bucks and then the bundle is like 68
that's amazing and people love it it's really popular uh if uh 100 no sorry 40 000 reviews
about and it's very positive see that's what i always look at the reviews yep very positive
all right i love it now i want to go build something thanks outlaw my wife's gonna kill me See, that's what I always look at, the reviews. Yep. Very positive. All right.
I love it.
Now I want to go build something.
Thanks, Outlaw.
My wife's going to kill me.
Yeah.
Well, you're welcome.
I mean, it's awesome, and you can save some money.
I will say, just to wrap that up on the PC part picker, which I think Alan kind of hinted at,
they do have a disclaimer that some physical constraints aren't currently checked. So
they specifically call out like CPU and cooler and RAM clearances. But in Alan's example,
he mentioned like, Hey, your cooler might not fit because of your, uh, your, your GPU,
your choice of GPU in your case. And in fact, when I built my current machine, which is now like,
you know,
ancient,
cause I built that in 19,
I think,
um,
the original case that I had wanted to use said like,
you know,
by the,
by the books,
it was like,
this is supposed to fit.
And even in the documentation,
this is supposed to fit.
But what I didn't take into consideration was the specific liquid cooling,
the,
the radiator with the fans,
it wouldn't fit where I wanted to fit it with the GPU.
And if I want,
and I couldn't put it above the motherboard,
you know,
to,
to vent out the top of the case because of clearance to the ram and so it was like you
know on paper it said it was going to match but yet it really didn't hey and one last thing to
tack on there as well is the um god i just had it in my head the motherboard so so look at the
reviews of the things because you may not even realize it.
If you're going after like a gaming setup, like a lot of these graphics cards now are
two slots or some of them take up three.
Read reviews on the motherboards because they may say that, hey, things are too cramped,
right?
Like your PCI slot is too close to your CPU or whatever.
So, you know, go look at them.
Just because it says everything's going to work, it may not work for what you're planning on doing with it.
So, you know, at least the motherboard, go look at reviews on how things fit together in it.
Yeah, and I included a link for like if you wanted to see like what I was talking about with the case that I had wanted and where i ended up on the build that i
did back in 19 and also by the way you should just get the uh ryzen 7950x it's ridiculous um so
all right cool and now i want to go build something um yeah so i had a couple that that
actually based off the week of fun that Jay-Z was talking
about earlier with the Java and all that kind of garbage. So there are times that you want to,
um, redirect the output of whatever's coming across into a file, right? Because it's too big
and it's going to blow out your buffer, right? Like let's say that you're listing a set of files off a drive somewhere and there's a
thousand files in it.
Well, if you just do LS on it, then, you know, it's going to blow through your buffer in
your terminal, your standard out, right?
And so a lot of times what you'll do is you'll just redirect that to a file so that you can
list all that stuff there and keep it.
Well, it's always bugged me and I've thought about it several times that I just never really went to research it.
Well, what if I still want to see them, you know, on the screen?
Because usually if you redirect, right, like let's say LS and then pipe or not pipe and
then greater than and then the file name, the LS is going to run until it's done.
And you're not going to see anything happen on screen, which drives me crazy sometimes.
Like I just want to know that something's actually happening.
Well, there is actually a command in Linux that I didn't know about until the other day called TEE.
And I have a link here to the Geeks for Geeks articles with it, but it's designed to do exactly what you want.
And they called it TEE as in like a plumber's
T. Um, whenever you want water to go in two different directions, you create a T pipe,
right? Um, and that's why they named it this. And this will allow you to do the output to standard
out like you normally would, but it'll also redirect to a file at the same time. So if you're
like me and you want to see it and you also want it in a file this is amazing so check that out um i feel like a noob for not knowing that i feel like probably
all you other guys knew about it and just didn't tell me well i was curious when you brought i
wasn't gonna bring it up quite like that bad wow like because we use this oh do we yeah that's why i was like shell script somewhere i wonder if he like does he know that we use it. Oh, do we? Yeah. That's why I was like,
I wonder if he,
like,
does he know that we use it
or does he not?
Like,
that's how it came out.
Never seen it.
Never seen it.
No,
in some of our Docker files,
we're using it
for some of our builds
so that,
so frustrating
to do things.
Yeah.
I guess I didn't look
at all the scripts.
So yes,
I learned,
I learned something.
Huh?
A lot of scripts to look at. Yeah, there are a lot of scripts to look at. the scripts. So yes, I learned, I learned something. Huh? I was going to look at,
yeah,
there are a lot of scripts to look at.
All right.
And then this other one,
so this came up,
I told you about the,
the,
the,
you know,
cluster that we were building out,
right?
Like we got a little bit.
Yeah,
we got a little bit.
Um,
all right.
So this other one came because I think as developers, a lot of times we just think in whatever we've done previously or recently. Right. And JQ is one of those things that drives me a little bit insane. things with JSON data on a shell command that otherwise you need a programming language for,
which is awesome if you're trying to write shell scripts to do things like what we're talking about
in some sort of pipeline or whatever. However, it's not the best if you just get a JSON blob
and you want to be able to extract some data from it, like I don't want to jack with JQ.
There's no way to debug it. It's, it's kind of nasty. The syntax is kind of hairy.
And I was thinking learning curve, man, the learning curve is ridiculous. Now that's where
chat GPT can help you out. You could basically say like, Hey, I want to output this thing from
here and it'll probably spit out the script for you. But the other day I had a nasty chunk of JSON that I needed to parse.
And I was like, you know what? Why am I even thinking about JQ? It doesn't make sense.
JavaScript is like perfect for this. You can easily in visual studio code, you can just create
a dot JS file and then it'll give you the ability to run it or debug it directly in Visual Studio Code.
Like, there's no reason to go through the madness that is JQ.
Now, there are two things that that implies, though. plugin for Visual Studio Code called CodeRunner that has 19.99 million downloads with four and a
half stars that will allow you to run all kinds of code fragments. C, C++, Java, JavaScript, PHP,
Python, Perl, blah. There's a huge list of these things. So basically what I'm saying is,
if you know how to do it easily in something like
JavaScript, which is perfect for JSON, because you can basically say, Hey, here's my blob.
Give me the keys in this blob done. Like it's, it's seriously a two minute exercise instead of
a 45 minute bash your head against the desk on, on JQ do it that way. It's super easy. And it gives you a debug prompt that you
can actually put breakpoints in from your simple JavaScript script. So that's my other tip.
Make your life a little bit easier.
Very cool. Um, yeah, so I hadn't even thought about using chat GPT
as my documentation interpreter
oh that's pretty good that should be the tip
of the week right there yeah summarize
it's amazing dude
it really
you can do lots of stuff simple things
or not so simple things just by
asking it yeah
so
subscribe we're on places yeah things just by asking it. Yeah. So, uh, you know,
subscribe.
We're on places.
Um,
yeah.
Would you have something to say there?
No,
no,
I can't do it again.
I got my body temperature goes up like five degrees every time.
I can't,
I can't.
Are you twitching a little bit?
Do you need your medication a little bit do you need your
medication
a little bit
hey hey
this is episode
212 though
so go to
codingblocks.net
slash episode
212
and leave a
congrats
or thank you
or hi
to Jim
and Jamie
okay
I guess I'm gonna go
so um
we got a
twitter
codingblocks.net
we got that website codingblocks.net we got social links at theBox. Also, we got that website, CodingBox.net.
We got social links at the top of the page.
And by the way, if you go to CodingBox.net slash swag,
we got some stickers and some other stuff up there that you can find.
So if you want to get your stuff mammogrammed, you can do that right there.
Mammogram.
Mammogram.
We're coining that.
That's a new Shakespearean type word.